@hotmeshio/long-tail 0.1.14 → 0.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) 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 +9 -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} +77 -378
  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/lib/cli/auth.d.ts +23 -0
  55. package/build/lib/cli/auth.js +167 -0
  56. package/build/lib/cli/client.d.ts +6 -0
  57. package/build/lib/cli/client.js +31 -0
  58. package/build/lib/cli/commands/escalations.d.ts +19 -0
  59. package/build/lib/cli/commands/escalations.js +69 -0
  60. package/build/lib/cli/commands/knowledge.d.ts +18 -0
  61. package/build/lib/cli/commands/knowledge.js +87 -0
  62. package/build/lib/cli/commands/mcp.d.ts +8 -0
  63. package/build/lib/cli/commands/mcp.js +33 -0
  64. package/build/lib/cli/commands/pipelines.d.ts +16 -0
  65. package/build/lib/cli/commands/pipelines.js +67 -0
  66. package/build/lib/cli/commands/status.d.ts +1 -0
  67. package/build/lib/cli/commands/status.js +28 -0
  68. package/build/lib/cli/commands/users.d.ts +7 -0
  69. package/build/lib/cli/commands/users.js +25 -0
  70. package/build/lib/cli/commands/workflows.d.ts +16 -0
  71. package/build/lib/cli/commands/workflows.js +104 -0
  72. package/build/lib/cli/compile.d.ts +2 -0
  73. package/build/lib/cli/compile.js +165 -0
  74. package/build/lib/cli/format.d.ts +23 -0
  75. package/build/lib/cli/format.js +94 -0
  76. package/build/lib/cli/init.d.ts +1 -0
  77. package/build/lib/cli/init.js +61 -0
  78. package/build/lib/cli/output.d.ts +27 -0
  79. package/build/lib/cli/output.js +126 -0
  80. package/build/lib/cli/scanner.d.ts +10 -0
  81. package/build/lib/cli/scanner.js +164 -0
  82. package/build/lib/cli/types.d.ts +16 -0
  83. package/build/lib/cli/types.js +2 -0
  84. package/build/lib/logger/index.d.ts +0 -9
  85. package/build/lib/logger/index.js +9 -4
  86. package/build/lib/storage/index.js +2 -2
  87. package/build/routes/file-browser.js +14 -0
  88. package/build/routes/index.js +2 -0
  89. package/build/routes/knowledge.d.ts +2 -0
  90. package/build/routes/knowledge.js +141 -0
  91. package/build/routes/yaml-workflows/crud.js +9 -0
  92. package/build/sdk/index.d.ts +17 -0
  93. package/build/sdk/index.js +19 -0
  94. package/build/services/mcp/client/connection-dispatch.d.ts +18 -0
  95. package/build/services/mcp/client/connection-dispatch.js +78 -0
  96. package/build/services/mcp/client/connection-lifecycle.d.ts +48 -0
  97. package/build/services/mcp/client/connection-lifecycle.js +296 -0
  98. package/build/services/mcp/client/connection-test.d.ts +10 -0
  99. package/build/services/mcp/client/connection-test.js +49 -0
  100. package/build/services/mcp/client/connection.d.ts +3 -68
  101. package/build/services/mcp/client/connection.js +15 -393
  102. package/build/services/mcp/server-lifecycle.d.ts +27 -0
  103. package/build/services/mcp/server-lifecycle.js +49 -0
  104. package/build/services/mcp/server-tools.d.ts +13 -0
  105. package/build/services/mcp/server-tools.js +287 -0
  106. package/build/services/mcp/server.d.ts +2 -26
  107. package/build/services/mcp/server.js +7 -315
  108. package/build/services/yaml-workflow/builder-regenerate.d.ts +25 -0
  109. package/build/services/yaml-workflow/builder-regenerate.js +111 -0
  110. package/build/services/yaml-workflow/db-versions.d.ts +17 -0
  111. package/build/services/yaml-workflow/db-versions.js +76 -0
  112. package/build/services/yaml-workflow/db.d.ts +3 -13
  113. package/build/services/yaml-workflow/db.js +15 -71
  114. package/build/services/yaml-workflow/deployer-helpers.js +48 -17
  115. package/build/services/yaml-workflow/durable-compiler/index.d.ts +22 -0
  116. package/build/services/yaml-workflow/durable-compiler/index.js +168 -0
  117. package/build/services/yaml-workflow/durable-compiler/parser.d.ts +12 -0
  118. package/build/services/yaml-workflow/durable-compiler/parser.js +110 -0
  119. package/build/services/yaml-workflow/durable-compiler/prompts.d.ts +18 -0
  120. package/build/services/yaml-workflow/durable-compiler/prompts.js +570 -0
  121. package/build/services/yaml-workflow/durable-compiler/types.d.ts +51 -0
  122. package/build/services/yaml-workflow/durable-compiler/types.js +5 -0
  123. package/build/services/yaml-workflow/pipeline/build/dag-assembly.d.ts +17 -0
  124. package/build/services/yaml-workflow/pipeline/build/dag-assembly.js +192 -0
  125. package/build/services/yaml-workflow/pipeline/build/dag.d.ts +4 -13
  126. package/build/services/yaml-workflow/pipeline/build/dag.js +9 -185
  127. package/build/services/yaml-workflow/pipeline/prompt-templates.d.ts +10 -0
  128. package/build/services/yaml-workflow/pipeline/prompt-templates.js +270 -0
  129. package/build/services/yaml-workflow/pipeline/prompts.d.ts +3 -6
  130. package/build/services/yaml-workflow/pipeline/prompts.js +8 -263
  131. package/build/start/workers.js +6 -5
  132. package/build/system/activities/file-storage.d.ts +4 -0
  133. package/build/system/activities/file-storage.js +7 -1
  134. package/build/system/activities/knowledge.d.ts +23 -0
  135. package/build/system/activities/knowledge.js +50 -10
  136. package/build/system/activities/sql.d.ts +3 -0
  137. package/build/system/activities/sql.js +25 -1
  138. package/build/system/mcp-servers/file-storage.js +3 -1
  139. package/build/system/mcp-servers/human-queue-schemas.d.ts +91 -0
  140. package/build/system/mcp-servers/human-queue-schemas.js +42 -0
  141. package/build/system/mcp-servers/human-queue.d.ts +2 -6
  142. package/build/system/mcp-servers/human-queue.js +9 -51
  143. package/build/system/mcp-servers/knowledge.js +43 -9
  144. package/build/system/mcp-servers/workflow-compiler.js +54 -0
  145. package/build/system/workflows/mcp-triage/activities-proxy.d.ts +21 -0
  146. package/build/system/workflows/mcp-triage/activities-proxy.js +70 -0
  147. package/build/system/workflows/mcp-triage/index.js +17 -75
  148. package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +1 -0
  149. package/build/system/workflows/mcp-workflow-planner/activities/persist.js +1 -0
  150. package/build/system/workflows/mcp-workflow-planner/index.js +2 -0
  151. package/build/tsconfig.tsbuildinfo +1 -1
  152. package/dashboard/dist/assets/{AdminDashboard-Cngijp4Q.js → AdminDashboard-NLryl1_B.js} +2 -2
  153. package/dashboard/dist/assets/{AdminDashboard-Cngijp4Q.js.map → AdminDashboard-NLryl1_B.js.map} +1 -1
  154. package/dashboard/dist/assets/AvailableEscalationsPage-6vexlrk3.js +2 -0
  155. package/dashboard/dist/assets/AvailableEscalationsPage-6vexlrk3.js.map +1 -0
  156. package/dashboard/dist/assets/{BotPicker-B8Uvw9Si.js → BotPicker-DWhn0tr1.js} +2 -2
  157. package/dashboard/dist/assets/{BotPicker-B8Uvw9Si.js.map → BotPicker-DWhn0tr1.js.map} +1 -1
  158. package/dashboard/dist/assets/{CollapsibleSection-DiFPuWOY.js → CollapsibleSection-CgYgQiOc.js} +2 -2
  159. package/dashboard/dist/assets/{CollapsibleSection-DiFPuWOY.js.map → CollapsibleSection-CgYgQiOc.js.map} +1 -1
  160. package/dashboard/dist/assets/{ConfirmDeleteModal-CpXG9uyu.js → ConfirmDeleteModal-DCKAPXD3.js} +2 -2
  161. package/dashboard/dist/assets/{ConfirmDeleteModal-CpXG9uyu.js.map → ConfirmDeleteModal-DCKAPXD3.js.map} +1 -1
  162. package/dashboard/dist/assets/{CopyableId-DKsTR9lK.js → CopyableId-DXkaAOYk.js} +2 -2
  163. package/dashboard/dist/assets/{CopyableId-DKsTR9lK.js.map → CopyableId-DXkaAOYk.js.map} +1 -1
  164. package/dashboard/dist/assets/{CredentialsPage-DlS7Kf40.js → CredentialsPage-B361BOfU.js} +2 -2
  165. package/dashboard/dist/assets/{CredentialsPage-DlS7Kf40.js.map → CredentialsPage-B361BOfU.js.map} +1 -1
  166. package/dashboard/dist/assets/{CustomDurationPicker-B-9eW3pm.js → CustomDurationPicker-D2G1ldiF.js} +2 -2
  167. package/dashboard/dist/assets/{CustomDurationPicker-B-9eW3pm.js.map → CustomDurationPicker-D2G1ldiF.js.map} +1 -1
  168. package/dashboard/dist/assets/{DataTable-DkOokbtL.js → DataTable-DXSUbA26.js} +2 -2
  169. package/dashboard/dist/assets/{DataTable-DkOokbtL.js.map → DataTable-DXSUbA26.js.map} +1 -1
  170. package/dashboard/dist/assets/{ElapsedCell-DVtHqM-5.js → ElapsedCell-CQGqkXP_.js} +2 -2
  171. package/dashboard/dist/assets/{ElapsedCell-DVtHqM-5.js.map → ElapsedCell-CQGqkXP_.js.map} +1 -1
  172. package/dashboard/dist/assets/{EmptyState-C7KIMIbE.js → EmptyState-Dep92Wkg.js} +2 -2
  173. package/dashboard/dist/assets/{EmptyState-C7KIMIbE.js.map → EmptyState-Dep92Wkg.js.map} +1 -1
  174. package/dashboard/dist/assets/{EscalationsOverview-BMKBlkPx.js → EscalationsOverview-DVEFVjs7.js} +2 -2
  175. package/dashboard/dist/assets/{EscalationsOverview-BMKBlkPx.js.map → EscalationsOverview-DVEFVjs7.js.map} +1 -1
  176. package/dashboard/dist/assets/{EventTable-BYZ5OVdQ.js → EventTable-BMJAPkMi.js} +2 -2
  177. package/dashboard/dist/assets/{EventTable-BYZ5OVdQ.js.map → EventTable-BMJAPkMi.js.map} +1 -1
  178. package/dashboard/dist/assets/{FilterBar-C5r3n6YO.js → FilterBar-DbVbCzH2.js} +2 -2
  179. package/dashboard/dist/assets/{FilterBar-C5r3n6YO.js.map → FilterBar-DbVbCzH2.js.map} +1 -1
  180. package/dashboard/dist/assets/{ListToolbar-BGUajIsW.js → ListToolbar-0XNuXj0M.js} +2 -2
  181. package/dashboard/dist/assets/{ListToolbar-BGUajIsW.js.map → ListToolbar-0XNuXj0M.js.map} +1 -1
  182. package/dashboard/dist/assets/{McpOverview-B_kJYHea.js → McpOverview-CeYnCzBN.js} +2 -2
  183. package/dashboard/dist/assets/{McpOverview-B_kJYHea.js.map → McpOverview-CeYnCzBN.js.map} +1 -1
  184. package/dashboard/dist/assets/McpQueryDetailPage-t3qW3QNa.js +5 -0
  185. package/dashboard/dist/assets/McpQueryDetailPage-t3qW3QNa.js.map +1 -0
  186. package/dashboard/dist/assets/{McpQueryPage-BgAq_bQg.js → McpQueryPage-CfUcdzaj.js} +2 -2
  187. package/dashboard/dist/assets/{McpQueryPage-BgAq_bQg.js.map → McpQueryPage-CfUcdzaj.js.map} +1 -1
  188. package/dashboard/dist/assets/{McpRunDetailPage-B8c0OszR.js → McpRunDetailPage-CZtodW_Z.js} +2 -2
  189. package/dashboard/dist/assets/{McpRunDetailPage-B8c0OszR.js.map → McpRunDetailPage-CZtodW_Z.js.map} +1 -1
  190. package/dashboard/dist/assets/{McpRunsPage-BY8C6k78.js → McpRunsPage-Dzgq7HGt.js} +2 -2
  191. package/dashboard/dist/assets/{McpRunsPage-BY8C6k78.js.map → McpRunsPage-Dzgq7HGt.js.map} +1 -1
  192. package/dashboard/dist/assets/{Modal-E1yRnCeW.js → Modal-yyhUeKoA.js} +2 -2
  193. package/dashboard/dist/assets/{Modal-E1yRnCeW.js.map → Modal-yyhUeKoA.js.map} +1 -1
  194. package/dashboard/dist/assets/{OperatorDashboard-C8MSTzey.js → OperatorDashboard-Ceh7OQtZ.js} +2 -2
  195. package/dashboard/dist/assets/{OperatorDashboard-C8MSTzey.js.map → OperatorDashboard-Ceh7OQtZ.js.map} +1 -1
  196. package/dashboard/dist/assets/{PageHeader-Cm5HBQF_.js → PageHeader-CZ9a8cpr.js} +2 -2
  197. package/dashboard/dist/assets/{PageHeader-Cm5HBQF_.js.map → PageHeader-CZ9a8cpr.js.map} +1 -1
  198. package/dashboard/dist/assets/{PageHeaderWithStats-CNmWJFSN.js → PageHeaderWithStats-BJuNs5NM.js} +2 -2
  199. package/dashboard/dist/assets/{PageHeaderWithStats-CNmWJFSN.js.map → PageHeaderWithStats-BJuNs5NM.js.map} +1 -1
  200. package/dashboard/dist/assets/{PriorityBadge-HSI4RVhs.js → PriorityBadge-BrPikMFy.js} +2 -2
  201. package/dashboard/dist/assets/{PriorityBadge-HSI4RVhs.js.map → PriorityBadge-BrPikMFy.js.map} +1 -1
  202. package/dashboard/dist/assets/{ProcessDetailPage-Dln8622H.js → ProcessDetailPage-2miaYd8G.js} +2 -2
  203. package/dashboard/dist/assets/{ProcessDetailPage-Dln8622H.js.map → ProcessDetailPage-2miaYd8G.js.map} +1 -1
  204. package/dashboard/dist/assets/{ProcessesListPage-bIsd9N_h.js → ProcessesListPage-DqpRDqjk.js} +2 -2
  205. package/dashboard/dist/assets/{ProcessesListPage-bIsd9N_h.js.map → ProcessesListPage-DqpRDqjk.js.map} +1 -1
  206. package/dashboard/dist/assets/{RolePill-BVUp2bF0.js → RolePill-DxbJMfJu.js} +2 -2
  207. package/dashboard/dist/assets/{RolePill-BVUp2bF0.js.map → RolePill-DxbJMfJu.js.map} +1 -1
  208. package/dashboard/dist/assets/RolesPage-CYHRo21-.js +2 -0
  209. package/dashboard/dist/assets/{RolesPage-kH-Njt25.js.map → RolesPage-CYHRo21-.js.map} +1 -1
  210. package/dashboard/dist/assets/{RowActions-DbUJPfaW.js → RowActions-DurFwIwe.js} +2 -2
  211. package/dashboard/dist/assets/{RowActions-DbUJPfaW.js.map → RowActions-DurFwIwe.js.map} +1 -1
  212. package/dashboard/dist/assets/RunAsSelector-CNKraP6u.js +2 -0
  213. package/dashboard/dist/assets/RunAsSelector-CNKraP6u.js.map +1 -0
  214. package/dashboard/dist/assets/{StatCard-Bs3JbyAz.js → StatCard-CKplpK3w.js} +2 -2
  215. package/dashboard/dist/assets/{StatCard-Bs3JbyAz.js.map → StatCard-CKplpK3w.js.map} +1 -1
  216. package/dashboard/dist/assets/{StatusBadge-CakDdsCw.js → StatusBadge-Dm0V1dNN.js} +2 -2
  217. package/dashboard/dist/assets/{StatusBadge-CakDdsCw.js.map → StatusBadge-Dm0V1dNN.js.map} +1 -1
  218. package/dashboard/dist/assets/{StepIndicator-Cd_SG_yA.js → StepIndicator-Dicx0WTZ.js} +2 -2
  219. package/dashboard/dist/assets/{StepIndicator-Cd_SG_yA.js.map → StepIndicator-Dicx0WTZ.js.map} +1 -1
  220. package/dashboard/dist/assets/{StickyPagination-Bz0C18nC.js → StickyPagination-B2jYvU3-.js} +2 -2
  221. package/dashboard/dist/assets/{StickyPagination-Bz0C18nC.js.map → StickyPagination-B2jYvU3-.js.map} +1 -1
  222. package/dashboard/dist/assets/SwimlaneTimeline-ClwumkT1.js +2 -0
  223. package/dashboard/dist/assets/SwimlaneTimeline-ClwumkT1.js.map +1 -0
  224. package/dashboard/dist/assets/{TagInput-ClFhXG-U.js → TagInput-CypDZ6Kl.js} +2 -2
  225. package/dashboard/dist/assets/{TagInput-ClFhXG-U.js.map → TagInput-CypDZ6Kl.js.map} +1 -1
  226. package/dashboard/dist/assets/{TaskDetailPage-SuMBdARt.js → TaskDetailPage-DooDNJGT.js} +2 -2
  227. package/dashboard/dist/assets/{TaskDetailPage-SuMBdARt.js.map → TaskDetailPage-DooDNJGT.js.map} +1 -1
  228. package/dashboard/dist/assets/{TaskQueuePill-lJR1JW_W.js → TaskQueuePill-C1hZ-j31.js} +2 -2
  229. package/dashboard/dist/assets/{TaskQueuePill-lJR1JW_W.js.map → TaskQueuePill-C1hZ-j31.js.map} +1 -1
  230. package/dashboard/dist/assets/{TasksListPage-Dkq1Vtbt.js → TasksListPage-D7CdkAeg.js} +2 -2
  231. package/dashboard/dist/assets/{TasksListPage-Dkq1Vtbt.js.map → TasksListPage-D7CdkAeg.js.map} +1 -1
  232. package/dashboard/dist/assets/{TimeAgo-DgfDZ1pl.js → TimeAgo-B5LXB2aj.js} +2 -2
  233. package/dashboard/dist/assets/{TimeAgo-DgfDZ1pl.js.map → TimeAgo-B5LXB2aj.js.map} +1 -1
  234. package/dashboard/dist/assets/{TimestampCell-MpHZ1hMD.js → TimestampCell-Crb9b0Gw.js} +2 -2
  235. package/dashboard/dist/assets/{TimestampCell-MpHZ1hMD.js.map → TimestampCell-Crb9b0Gw.js.map} +1 -1
  236. package/dashboard/dist/assets/{UserName-DqsosA4B.js → UserName-OPg-nkRa.js} +2 -2
  237. package/dashboard/dist/assets/{UserName-DqsosA4B.js.map → UserName-OPg-nkRa.js.map} +1 -1
  238. package/dashboard/dist/assets/{WorkflowExecutionPage-CVlg38C3.js → WorkflowExecutionPage-CcLVrs9b.js} +2 -2
  239. package/dashboard/dist/assets/{WorkflowExecutionPage-CVlg38C3.js.map → WorkflowExecutionPage-CcLVrs9b.js.map} +1 -1
  240. package/dashboard/dist/assets/{WorkflowPill-CRpZhjGR.js → WorkflowPill-CCV4MMj7.js} +2 -2
  241. package/dashboard/dist/assets/{WorkflowPill-CRpZhjGR.js.map → WorkflowPill-CCV4MMj7.js.map} +1 -1
  242. package/dashboard/dist/assets/{WorkflowsDashboard-Ugzbs8mV.js → WorkflowsDashboard-DB1SncBi.js} +2 -2
  243. package/dashboard/dist/assets/{WorkflowsDashboard-Ugzbs8mV.js.map → WorkflowsDashboard-DB1SncBi.js.map} +1 -1
  244. package/dashboard/dist/assets/{WorkflowsOverview-CIp_lTNl.js → WorkflowsOverview-DvShiYJV.js} +2 -2
  245. package/dashboard/dist/assets/{WorkflowsOverview-CIp_lTNl.js.map → WorkflowsOverview-DvShiYJV.js.map} +1 -1
  246. package/dashboard/dist/assets/YamlWorkflowsPage-DCBoMeGI.js +2 -0
  247. package/dashboard/dist/assets/YamlWorkflowsPage-DCBoMeGI.js.map +1 -0
  248. package/dashboard/dist/assets/{bots-DPfUpVqI.js → bots-Dqos20NE.js} +2 -2
  249. package/dashboard/dist/assets/{bots-DPfUpVqI.js.map → bots-Dqos20NE.js.map} +1 -1
  250. package/dashboard/dist/assets/{escalation-RrCDbMC3.js → escalation-A0CsbvNV.js} +2 -2
  251. package/dashboard/dist/assets/{escalation-RrCDbMC3.js.map → escalation-A0CsbvNV.js.map} +1 -1
  252. package/dashboard/dist/assets/{escalation-columns-CDGa9wsD.js → escalation-columns-BpBJN6k4.js} +2 -2
  253. package/dashboard/dist/assets/{escalation-columns-CDGa9wsD.js.map → escalation-columns-BpBJN6k4.js.map} +1 -1
  254. package/dashboard/dist/assets/{helpers-ZSKqdkdS.js → helpers-CmznCuAx.js} +2 -2
  255. package/dashboard/dist/assets/{helpers-ZSKqdkdS.js.map → helpers-CmznCuAx.js.map} +1 -1
  256. package/dashboard/dist/assets/index-BIeYV5QK.js +2 -0
  257. package/dashboard/dist/assets/index-BIeYV5QK.js.map +1 -0
  258. package/dashboard/dist/assets/index-BYwD3kHN.js +5 -0
  259. package/dashboard/dist/assets/index-BYwD3kHN.js.map +1 -0
  260. package/dashboard/dist/assets/index-C5TUqJu0.css +1 -0
  261. package/dashboard/dist/assets/{index-DX6zxr6t.js → index-C8-UaN4N.js} +2 -2
  262. package/dashboard/dist/assets/{index-DX6zxr6t.js.map → index-C8-UaN4N.js.map} +1 -1
  263. package/dashboard/dist/assets/index-CAj5LT9H.js +15 -0
  264. package/dashboard/dist/assets/index-CAj5LT9H.js.map +1 -0
  265. package/dashboard/dist/assets/index-CjxHCVxl.js +2 -0
  266. package/dashboard/dist/assets/{index-C90ZPzXk.js.map → index-CjxHCVxl.js.map} +1 -1
  267. package/dashboard/dist/assets/index-Cr0Rqsj7.js +2 -0
  268. package/dashboard/dist/assets/index-Cr0Rqsj7.js.map +1 -0
  269. package/dashboard/dist/assets/index-DZHNte4o.js +2 -0
  270. package/dashboard/dist/assets/{index-K40Qw1tk.js.map → index-DZHNte4o.js.map} +1 -1
  271. package/dashboard/dist/assets/{index-DNytWfSZ.js → index-VnYkWW8r.js} +2 -2
  272. package/dashboard/dist/assets/{index-DNytWfSZ.js.map → index-VnYkWW8r.js.map} +1 -1
  273. package/dashboard/dist/assets/{index-BbI2dzhJ.js → index-XGOmZ117.js} +2 -2
  274. package/dashboard/dist/assets/{index-BbI2dzhJ.js.map → index-XGOmZ117.js.map} +1 -1
  275. package/dashboard/dist/assets/index-ZjOUzWhc.js +2 -0
  276. package/dashboard/dist/assets/index-ZjOUzWhc.js.map +1 -0
  277. package/dashboard/dist/assets/{index-Cmgrk7PQ.js → index-puKKZ5l8.js} +71 -71
  278. package/dashboard/dist/assets/index-puKKZ5l8.js.map +1 -0
  279. package/dashboard/dist/assets/{index-BmVCyB6C.js → index-t5frSddy.js} +2 -2
  280. package/dashboard/dist/assets/{index-BmVCyB6C.js.map → index-t5frSddy.js.map} +1 -1
  281. package/dashboard/dist/assets/{mcp-CNE44TSp.js → mcp-DrWymhSu.js} +2 -2
  282. package/dashboard/dist/assets/{mcp-CNE44TSp.js.map → mcp-DrWymhSu.js.map} +1 -1
  283. package/dashboard/dist/assets/{mcp-query-RQX0uN-5.js → mcp-query-BhUxVEMS.js} +2 -2
  284. package/dashboard/dist/assets/{mcp-query-RQX0uN-5.js.map → mcp-query-BhUxVEMS.js.map} +1 -1
  285. package/dashboard/dist/assets/{mcp-runs-0w40bdz-.js → mcp-runs-DUfz4mLd.js} +2 -2
  286. package/dashboard/dist/assets/{mcp-runs-0w40bdz-.js.map → mcp-runs-DUfz4mLd.js.map} +1 -1
  287. package/dashboard/dist/assets/{namespaces-BbmdXuPp.js → namespaces-Cm6AY5sh.js} +2 -2
  288. package/dashboard/dist/assets/{namespaces-BbmdXuPp.js.map → namespaces-Cm6AY5sh.js.map} +1 -1
  289. package/dashboard/dist/assets/{roles-DoHYlhWH.js → roles-2v1Kc7BJ.js} +2 -2
  290. package/dashboard/dist/assets/{roles-DoHYlhWH.js.map → roles-2v1Kc7BJ.js.map} +1 -1
  291. package/dashboard/dist/assets/{settings-BAiJiCHS.js → settings-DTQNp6tH.js} +2 -2
  292. package/dashboard/dist/assets/{settings-BAiJiCHS.js.map → settings-DTQNp6tH.js.map} +1 -1
  293. package/dashboard/dist/assets/{tasks-CvroqHtm.js → tasks-CS1rgG1s.js} +2 -2
  294. package/dashboard/dist/assets/{tasks-CvroqHtm.js.map → tasks-CS1rgG1s.js.map} +1 -1
  295. package/dashboard/dist/assets/useEventHooks-BjXX8x3a.js +2 -0
  296. package/dashboard/dist/assets/{useEventHooks-BHMbzR_y.js.map → useEventHooks-BjXX8x3a.js.map} +1 -1
  297. package/dashboard/dist/assets/useYamlActivityEvents-BeR-nVWQ.js +2 -0
  298. package/dashboard/dist/assets/{useYamlActivityEvents-D56KV14X.js.map → useYamlActivityEvents-BeR-nVWQ.js.map} +1 -1
  299. package/dashboard/dist/assets/{users-CxIMy_xw.js → users-DYsdQ7Md.js} +2 -2
  300. package/dashboard/dist/assets/{users-CxIMy_xw.js.map → users-DYsdQ7Md.js.map} +1 -1
  301. package/dashboard/dist/assets/{vendor-icons-AFGxSeQS.js → vendor-icons-CWl44VA6.js} +77 -77
  302. package/dashboard/dist/assets/vendor-icons-CWl44VA6.js.map +1 -0
  303. package/dashboard/dist/assets/{workflows-yR9yais7.js → workflows-2QAXh3UD.js} +2 -2
  304. package/dashboard/dist/assets/{workflows-yR9yais7.js.map → workflows-2QAXh3UD.js.map} +1 -1
  305. package/dashboard/dist/assets/{yaml-workflows-QVF2MZ0l.js → yaml-workflows-sx8-UEE3.js} +2 -2
  306. package/dashboard/dist/assets/{yaml-workflows-QVF2MZ0l.js.map → yaml-workflows-sx8-UEE3.js.map} +1 -1
  307. package/dashboard/dist/index.html +3 -3
  308. package/docs/api/http/file-browser.md +101 -0
  309. package/docs/api/http/knowledge.md +203 -0
  310. package/docs/api/http/settings.md +6 -4
  311. package/docs/api/sdk/files.md +68 -0
  312. package/docs/api/sdk/knowledge.md +126 -0
  313. package/docs/api/sdk/settings.md +3 -2
  314. package/docs/cli.md +171 -0
  315. package/docs/compilation.md +16 -0
  316. package/docs/compiler.md +311 -0
  317. package/docs/events.md +19 -0
  318. package/docs/workflows.md +19 -0
  319. package/package.json +13 -2
  320. package/build/api/escalations.d.ts +0 -271
  321. package/build/api/escalations.js +0 -932
  322. package/build/api/workflows.d.ts +0 -158
  323. package/build/api/workflows.js +0 -414
  324. package/dashboard/dist/assets/AvailableEscalationsPage-CpBfGV1h.js +0 -2
  325. package/dashboard/dist/assets/AvailableEscalationsPage-CpBfGV1h.js.map +0 -1
  326. package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js +0 -5
  327. package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js.map +0 -1
  328. package/dashboard/dist/assets/RolesPage-kH-Njt25.js +0 -2
  329. package/dashboard/dist/assets/SwimlaneTimeline-Cfe-xQRX.js +0 -2
  330. package/dashboard/dist/assets/SwimlaneTimeline-Cfe-xQRX.js.map +0 -1
  331. package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js +0 -2
  332. package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js.map +0 -1
  333. package/dashboard/dist/assets/helpers-rMEcLwKs.js +0 -2
  334. package/dashboard/dist/assets/helpers-rMEcLwKs.js.map +0 -1
  335. package/dashboard/dist/assets/index-ABcJHHlN.js +0 -5
  336. package/dashboard/dist/assets/index-ABcJHHlN.js.map +0 -1
  337. package/dashboard/dist/assets/index-B91h_jZ0.js +0 -15
  338. package/dashboard/dist/assets/index-B91h_jZ0.js.map +0 -1
  339. package/dashboard/dist/assets/index-C1E5GTs9.js +0 -2
  340. package/dashboard/dist/assets/index-C1E5GTs9.js.map +0 -1
  341. package/dashboard/dist/assets/index-C90ZPzXk.js +0 -2
  342. package/dashboard/dist/assets/index-Cmgrk7PQ.js.map +0 -1
  343. package/dashboard/dist/assets/index-DeX-ezqf.css +0 -1
  344. package/dashboard/dist/assets/index-K40Qw1tk.js +0 -2
  345. package/dashboard/dist/assets/index-lCyNr5Xk.js +0 -2
  346. package/dashboard/dist/assets/index-lCyNr5Xk.js.map +0 -1
  347. package/dashboard/dist/assets/useEventHooks-BHMbzR_y.js +0 -2
  348. package/dashboard/dist/assets/useYamlActivityEvents-D56KV14X.js +0 -2
  349. package/dashboard/dist/assets/vendor-icons-AFGxSeQS.js.map +0 -1
@@ -1,5 +0,0 @@
1
- import{j as e,J as z,c as X,C as be,i as Ne,s as he,e as fe,g as ve,t as ge}from"./index-Cmgrk7PQ.js";import{a as x}from"./vendor-query-DLp59M9_.js";import{a as Ee}from"./roles-DoHYlhWH.js";import{P as De}from"./PageHeader-Cm5HBQF_.js";import{C as K}from"./CollapsibleSection-DiFPuWOY.js";import{C as se,i as je,a as Ve}from"./escalation-RrCDbMC3.js";import{u as ye}from"./workflows-yR9yais7.js";import{u as Ce}from"./settings-BAiJiCHS.js";import{f as we}from"./useEventHooks-BHMbzR_y.js";import{L as te,e as Re,c as ke}from"./vendor-react-Co3Y8ikm.js";import{U as oe}from"./UserName-DqsosA4B.js";import{u as _e,C as Se}from"./CustomDurationPicker-B-9eW3pm.js";import{S as Ae}from"./StatusBadge-CakDdsCw.js";import{R as Te}from"./RolePill-BVUp2bF0.js";import{C as k}from"./CopyableId-DKsTR9lK.js";import{a0 as Pe,U as Be,a2 as Z}from"./vendor-icons-AFGxSeQS.js";import"./users-CxIMy_xw.js";import"./constants-BHkpVaqx.js";function w(a){return a.replace(/`([^`]+)`/g,'<code class="px-1 py-0.5 bg-surface-sunken rounded text-xs font-mono">$1</code>').replace(/\*\*\*(.+?)\*\*\*/g,"<strong><em>$1</em></strong>").replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>").replace(/\*(.+?)\*/g,"<em>$1</em>").replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2" class="text-accent-primary hover:underline" target="_blank" rel="noopener noreferrer">$1</a>')}function q({content:a,compact:o}){const i=[],s=/^```(\w*)\n([\s\S]*?)^```$/gm;let r=0,t;for(;(t=s.exec(a))!==null;)t.index>r&&i.push({type:"text",text:a.slice(r,t.index)}),i.push({type:"code",lang:t[1],code:t[2].replace(/\n$/,"")}),r=t.index+t[0].length;r<a.length&&i.push({type:"text",text:a.slice(r)});const m=o?{text:"text-xs",heading:"text-xs",list:"text-xs",code:"text-[11px]"}:{text:"text-sm",heading:"text-sm",list:"text-sm",code:"text-xs"},u=[];for(const l of i){if(l.type==="code"){const c=l.code.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");u.push(`<pre class="my-2 p-2.5 bg-surface-sunken rounded-md overflow-x-auto"><code class="${m.code} font-mono text-text-secondary leading-relaxed">${c}</code></pre>`);continue}u.push(...Fe(l.text,m))}return e.jsxDEV("div",{className:"prose-sm",dangerouslySetInnerHTML:{__html:u.join(`
2
- `)}},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/SimpleMarkdown.tsx",lineNumber:54,columnNumber:5},this)}function Fe(a,o){const i=a.split(`
3
- `),s=[];let r=!1,t=!1,m=[];for(const u of i){const l=u.trim();if(l.startsWith("|")&&l.endsWith("|")){const c=l.slice(1,-1).split("|").map(n=>n.trim());if(c.every(n=>/^[-:]+$/.test(n)))continue;t||(t=!0,m=[]),m.push(c);continue}if(t){t=!1;const[c,...n]=m;s.push('<div class="overflow-x-auto my-2"><table class="text-xs w-full"><thead><tr>');for(const h of c)s.push(`<th class="text-left py-1 px-2 border-b border-border text-text-secondary font-medium">${w(h)}</th>`);s.push("</tr></thead><tbody>");for(const h of n){s.push("<tr>");for(const v of h)s.push(`<td class="py-1 px-2 border-b border-border/50">${w(v)}</td>`);s.push("</tr>")}s.push("</tbody></table></div>"),m=[]}if(!l){r&&(s.push("</ul>"),r=!1);continue}if(l.startsWith("### ")){r&&(s.push("</ul>"),r=!1),s.push(`<h4 class="${o.heading} font-semibold text-text-primary mt-3 mb-1">${w(l.slice(4))}</h4>`);continue}if(l.startsWith("## ")){r&&(s.push("</ul>"),r=!1),s.push(`<h3 class="${o.heading} font-semibold text-text-primary mt-3 mb-1">${w(l.slice(3))}</h3>`);continue}if(/^[-*_]{3,}$/.test(l)){r&&(s.push("</ul>"),r=!1),s.push('<hr class="border-border my-3" />');continue}if(/^[-*] /.test(l)){r||(s.push('<ul class="space-y-1 my-1">'),r=!0),s.push(`<li class="${o.list} text-text-secondary flex gap-2"><span class="text-text-tertiary shrink-0">-</span><span>${w(l.slice(2))}</span></li>`);continue}r&&(s.push("</ul>"),r=!1),s.push(`<p class="${o.text} text-text-secondary my-1">${w(l)}</p>`)}if(t&&m.length){const[u,...l]=m;s.push('<div class="overflow-x-auto my-2"><table class="text-xs w-full"><thead><tr>');for(const c of u)s.push(`<th class="text-left py-1 px-2 border-b border-border text-text-secondary font-medium">${w(c)}</th>`);s.push("</tr></thead><tbody>");for(const c of l){s.push("<tr>");for(const n of c)s.push(`<td class="py-1 px-2 border-b border-border/50">${w(n)}</td>`);s.push("</tr>")}s.push("</tbody></table></div>")}return r&&s.push("</ul>"),s}function Y({children:a}){return e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:a},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:17,columnNumber:5},this)}function He({payload:a,isTerminal:o,resolverPayload:i,onRetryTriage:s,isRetrying:r}){const t=a.title,m=a.summary,u=a.diagnosis,l=a.tool_calls_made,c=a.result,n=i==null?void 0:i._lt,h=(n==null?void 0:n.triaged)===!0,v=n==null?void 0:n.triageWorkflowId,b=o&&h,[N,f]=x.useState(!1);return b?e.jsxDEV("div",{className:"rounded-md border border-status-success/30 bg-surface-raised",children:[e.jsxDEV("div",{className:"flex items-center justify-between px-4 py-3 border-b border-surface-border",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("svg",{className:"w-4 h-4 text-status-success shrink-0",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsxDEV("path",{d:"M8 1a7 7 0 110 14A7 7 0 018 1zm3.36 4.65a.5.5 0 00-.72 0L7 9.29 5.36 7.65a.5.5 0 10-.72.7l2 2a.5.5 0 00.72 0l4-4a.5.5 0 000-.7z"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:44,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:43,columnNumber:13},this),e.jsxDEV("span",{className:"text-xs font-medium text-status-success",children:"Resolved by AI Triage"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:46,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:42,columnNumber:11},this),typeof l=="number"&&e.jsxDEV("span",{className:"text-[10px] font-mono px-2 py-0.5 rounded-full bg-status-success/10 text-status-success",children:[l," tool calls used"]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:49,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:41,columnNumber:9},this),e.jsxDEV("div",{className:"px-4 py-4 space-y-4",children:[t&&e.jsxDEV("p",{className:"text-sm font-medium text-text-primary",children:t},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:58,columnNumber:13},this),u&&e.jsxDEV("div",{children:[e.jsxDEV(Y,{children:"Triage diagnosis"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:63,columnNumber:15},this),e.jsxDEV("div",{className:"text-xs text-text-primary leading-relaxed",children:e.jsxDEV(q,{content:u},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:65,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:64,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:62,columnNumber:13},this),e.jsxDEV("div",{className:"flex items-center gap-3",children:v&&e.jsxDEV(te,{to:`/workflows/executions/${v}`,className:"text-[10px] text-accent hover:underline",children:"View triage execution"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:72,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:70,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:56,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:39,columnNumber:7},this):e.jsxDEV("div",{className:"rounded-md border border-status-warning/30 bg-surface-raised",children:[e.jsxDEV("div",{className:"flex items-center justify-between px-4 py-3 border-b border-surface-border",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("svg",{className:"w-4 h-4 text-status-warning shrink-0",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsxDEV("path",{d:"M8 1a7 7 0 110 14A7 7 0 018 1zm0 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 4zm0 7a.75.75 0 100-1.5.75.75 0 000 1.5z"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:92,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:91,columnNumber:11},this),e.jsxDEV("span",{className:"text-xs font-medium text-status-warning",children:"Tool Rounds Exhausted"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:94,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:90,columnNumber:9},this),typeof l=="number"&&e.jsxDEV("span",{className:"text-[10px] font-mono px-2 py-0.5 rounded-full bg-status-warning/10 text-status-warning",children:[l," tool calls used"]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:97,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:89,columnNumber:7},this),e.jsxDEV("div",{className:"px-4 py-4 space-y-4",children:[t&&e.jsxDEV("p",{className:"text-sm font-medium text-text-primary",children:t},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:106,columnNumber:11},this),m&&e.jsxDEV("div",{children:[e.jsxDEV(Y,{children:"What happened"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:111,columnNumber:13},this),e.jsxDEV("div",{className:"text-xs text-text-secondary leading-relaxed",children:e.jsxDEV(q,{content:m},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:113,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:112,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:110,columnNumber:11},this),u&&e.jsxDEV("div",{children:[e.jsxDEV(Y,{children:"What went wrong"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:120,columnNumber:13},this),e.jsxDEV("div",{className:"text-xs text-text-primary leading-relaxed",children:e.jsxDEV(q,{content:u},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:122,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:121,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:119,columnNumber:11},this),c!=null&&e.jsxDEV("div",{children:[e.jsxDEV("button",{onClick:()=>f(!N),className:"flex items-center gap-1 text-[10px] font-semibold uppercase tracking-widest text-text-tertiary hover:text-text-secondary transition-colors",children:[e.jsxDEV("svg",{className:`w-3 h-3 transition-transform ${N?"rotate-90":""}`,viewBox:"0 0 12 12",fill:"currentColor",children:e.jsxDEV("path",{d:"M4.5 2l4 4-4 4"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:134,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:133,columnNumber:15},this),"Partial results"]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:129,columnNumber:13},this),N&&e.jsxDEV("div",{className:"mt-2",children:e.jsxDEV(z,{data:c,defaultMode:"tree"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:140,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:139,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:128,columnNumber:11},this),s&&!o&&e.jsxDEV("div",{className:"pt-2",children:e.jsxDEV("button",{onClick:s,disabled:r,className:"inline-flex items-center gap-2 px-4 py-2 text-xs font-medium bg-accent text-text-inverse rounded-md hover:bg-accent/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:[e.jsxDEV("svg",{className:"w-3.5 h-3.5",viewBox:"0 0 14 14",fill:"currentColor",children:e.jsxDEV("path",{d:"M7 1a6 6 0 100 12A6 6 0 007 1zm2.5 6.5l-3.5 2V5.5l3.5 2z"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:154,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:153,columnNumber:15},this),r?"Sending to triage...":"Retry with AI Triage"]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:148,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:147,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:104,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/RoundsExhaustedContext.tsx",lineNumber:87,columnNumber:5},this)}function $e({triage:a,payload:o}){const i=a.confidence??0,s=i>=.8?"text-status-success":i>=.5?"text-status-pending":"text-status-error",r=Me(a.originalData,o);return e.jsxDEV("div",{className:"space-y-5",children:[a.diagnosis&&e.jsxDEV("p",{className:"text-sm text-text-primary leading-relaxed",children:a.diagnosis},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:37,columnNumber:9},this),e.jsxDEV("div",{className:"flex flex-wrap items-center gap-3 text-xs text-text-tertiary",children:[a.tool_calls_made!=null&&e.jsxDEV("span",{children:[a.tool_calls_made," tool call",a.tool_calls_made!==1?"s":""]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:44,columnNumber:11},this),a.tool_calls_made!=null&&e.jsxDEV("span",{className:"text-text-quaternary",children:"·"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:46,columnNumber:44},this),e.jsxDEV("span",{className:`font-medium ${s}`,children:[Math.round(i*100),"% confidence"]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:47,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:42,columnNumber:7},this),a.actions_taken&&a.actions_taken.length>0&&e.jsxDEV("div",{className:"flex flex-wrap gap-1.5",children:a.actions_taken.map((t,m)=>e.jsxDEV("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 text-[11px]
4
- text-text-secondary`,children:[e.jsxDEV("svg",{className:"w-3 h-3 text-status-success shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:61,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:60,columnNumber:15},this),t]},m,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:55,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:53,columnNumber:9},this),a.recommendation&&e.jsxDEV("p",{className:"text-[11px] text-text-tertiary italic",children:a.recommendation},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:70,columnNumber:9},this),r.length>0&&e.jsxDEV("div",{className:"space-y-4 pt-2",children:r.map(t=>e.jsxDEV(Ie,{diff:t},t.key,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:79,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:77,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:34,columnNumber:5},this)}function Me(a,o){if(!a)return[];const i=[];for(const s of Object.keys(a)){if(s.startsWith("_"))continue;const r=a[s],t=o[s];t!==void 0&&JSON.stringify(r)!==JSON.stringify(t)&&i.push({key:s,label:s.replace(/[_-]/g," "),original:r,corrected:t})}return i}function Ie({diff:a}){const o=ee(a.original),i=ee(a.corrected);return o!==null&&i!==null?e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-x-8 gap-y-3",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[a.label," ",e.jsxDEV("span",{className:"normal-case font-normal",children:"(original)"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:130,columnNumber:26},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:129,columnNumber:11},this),e.jsxDEV("p",{className:"text-sm text-text-tertiary leading-relaxed line-through decoration-text-tertiary/30",children:o},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:132,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:128,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[a.label," ",e.jsxDEV("span",{className:"normal-case font-normal text-status-success",children:"(corrected)"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:138,columnNumber:26},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:137,columnNumber:11},this),e.jsxDEV("p",{className:"text-sm text-text-primary leading-relaxed",children:i},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:140,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:136,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:127,columnNumber:7},this):e.jsxDEV("div",{className:"space-y-3",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[a.label," ",e.jsxDEV("span",{className:"normal-case font-normal",children:"(original)"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:153,columnNumber:24},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:152,columnNumber:9},this),e.jsxDEV("pre",{className:"text-xs text-text-tertiary font-mono whitespace-pre-wrap leading-relaxed",children:typeof a.original=="object"?JSON.stringify(a.original,null,2):String(a.original)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:155,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:151,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[a.label," ",e.jsxDEV("span",{className:"normal-case font-normal text-status-success",children:"(corrected)"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:161,columnNumber:24},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:160,columnNumber:9},this),e.jsxDEV("pre",{className:"text-xs text-text-primary font-mono whitespace-pre-wrap leading-relaxed",children:typeof a.corrected=="object"?JSON.stringify(a.corrected,null,2):String(a.corrected)},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:163,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:159,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/TriageContext.tsx",lineNumber:150,columnNumber:5},this)}function ee(a){return a==null?"null":typeof a=="string"?a:typeof a=="number"||typeof a=="boolean"?String(a):null}function Le(a){const{mode:o,activeView:i,onActiveViewChange:s,onClaim:r,claimPending:t,workflowType:m,json:u,onResolve:l,resolvePending:c,resolveError:n,requestTriage:h,triageNotes:v,currentRole:b,escalationTargets:N,onEscalate:f,escalatePending:E,escalateError:D,onRelease:_,releasePending:S,assignedTo:F,assignedUntil:O}=a,W=_e(),[H,j]=x.useState("30"),[V,A]=x.useState(0),[$,T]=x.useState(""),[P,M]=x.useState(""),g=H==="custom",U=x.useCallback(d=>A(d),[]);if(o==="terminal")return null;const B=()=>{const d=g?V:parseInt(H);!d||d<=0||r(d)},y=()=>{if(T(""),h){const I={_lt:{needsTriage:!0}};v.trim()&&(I.notes=v.trim()),l(I);return}let d;try{d=JSON.parse(u)}catch{T("Invalid JSON");return}l(d)},C=d=>`text-xs transition-colors ${d?"text-accent font-medium":"text-text-tertiary hover:text-accent"}`;return e.jsxDEV("div",{className:"sticky h-[80px] bg-surface/95 backdrop-blur-sm border-t border-surface-border -mx-10 px-10 pt-3 pb-5 z-10",style:{bottom:"calc(var(--feed-height, 0px) - 8px)"},"data-testid":"escalation-action-bar",children:[o==="available"&&e.jsxDEV("div",{"data-testid":"claim-bar",children:[e.jsxDEV("div",{className:"flex items-center gap-4 mb-2",children:[W.map(d=>e.jsxDEV("button",{onClick:()=>{j(d.value),A(0)},className:C(!g&&H===d.value),children:d.label},d.value,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:120,columnNumber:17},this)),e.jsxDEV("button",{onClick:()=>j("custom"),className:C(g),children:"Other"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:128,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:118,columnNumber:13},this),e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:137,columnNumber:15},this),g&&e.jsxDEV(Se,{onChange:U,compact:!0,autoFocus:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:139,columnNumber:17},this),e.jsxDEV("button",{onClick:B,disabled:t||g&&V<=0,className:"btn-primary text-xs",children:t?"Claiming...":"Claim"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:141,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:136,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:116,columnNumber:11},this),o==="claimed_by_other"&&e.jsxDEV("div",{className:"flex items-center gap-4","data-testid":"claimed-other-bar",children:[e.jsxDEV("p",{className:"text-sm text-text-secondary",children:["Claimed by ",e.jsxDEV("span",{className:"font-medium text-text-primary",children:F?e.jsxDEV(oe,{userId:F},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:156,columnNumber:88},this):"unknown"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:156,columnNumber:26},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:155,columnNumber:13},this),O&&e.jsxDEV(se,{until:O},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:158,columnNumber:31},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:154,columnNumber:11},this),o==="claimed_by_me"&&e.jsxDEV("div",{"data-testid":"action-bar",children:[e.jsxDEV("div",{className:"flex items-center gap-4 mb-2",children:[e.jsxDEV("button",{onClick:()=>s("resolve"),className:C(i==="resolve"),children:m?"Resolve":"Acknowledge"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:167,columnNumber:15},this),N.length>0&&e.jsxDEV("button",{onClick:()=>s("escalate"),className:C(i==="escalate"),children:"Escalate"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:174,columnNumber:17},this),e.jsxDEV("button",{onClick:()=>s("release"),className:`text-xs transition-colors ${i==="release"?"text-status-error font-medium":"text-text-tertiary hover:text-status-error"}`,children:"Release"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:181,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:166,columnNumber:13},this),i==="resolve"&&(m?e.jsxDEV("div",{className:"flex items-center gap-4",children:[e.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:193,columnNumber:19},this),$&&e.jsxDEV("span",{className:"text-xs text-status-error",children:$},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:195,columnNumber:34},this),n&&e.jsxDEV("span",{className:"text-xs text-status-error",children:n.message},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:196,columnNumber:36},this),e.jsxDEV("button",{onClick:y,disabled:c,className:"btn-primary text-xs",children:c?"Submitting...":h?"Send to Triage":"Submit"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:198,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:192,columnNumber:17},this):e.jsxDEV("div",{className:"flex items-center",children:[e.jsxDEV("span",{className:"text-xs text-text-secondary",children:"Notification — acknowledge to resolve"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:208,columnNumber:19},this),e.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:209,columnNumber:19},this),n&&e.jsxDEV("span",{className:"text-xs text-status-error mr-3",children:n.message},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:210,columnNumber:36},this),e.jsxDEV("button",{onClick:()=>l({acknowledged:!0}),disabled:c,className:"btn-primary text-xs",children:c?"Acknowledging...":"Acknowledge"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:211,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:207,columnNumber:17},this)),i==="escalate"&&e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV("span",{className:"text-xs text-text-secondary",children:["From ",e.jsxDEV("span",{className:"font-medium text-text-primary",children:b},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:226,columnNumber:24},this)," to"]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:225,columnNumber:17},this),e.jsxDEV("select",{value:P,onChange:d=>M(d.target.value),className:"select text-xs","data-testid":"escalate-select",children:[e.jsxDEV("option",{value:"",children:"Select role..."},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:234,columnNumber:19},this),N.map(d=>e.jsxDEV("option",{value:d,children:d},d,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:236,columnNumber:21},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:228,columnNumber:17},this),e.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:239,columnNumber:17},this),D&&e.jsxDEV("span",{className:"text-xs text-status-error",children:D.message},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:240,columnNumber:35},this),e.jsxDEV("button",{onClick:()=>f(P),disabled:!P||E,className:"btn-primary text-xs",children:E?"Escalating...":"Escalate"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:241,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:224,columnNumber:15},this),i==="release"&&e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV("span",{className:"text-xs text-text-secondary",children:"Release back to pool?"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:254,columnNumber:17},this),e.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:255,columnNumber:17},this),e.jsxDEV("button",{onClick:()=>s("resolve"),className:"btn-secondary text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:256,columnNumber:17},this),e.jsxDEV("button",{onClick:_,disabled:S,className:"btn-primary text-xs bg-status-error hover:bg-status-error/80",children:S?"Releasing...":"Yes, Release"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:259,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:253,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:164,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationActionBar.tsx",lineNumber:112,columnNumber:5},this)}function Oe({esc:a,claimedByMe:o,claimed:i,isTerminal:s,traceUrl:r}){const[t,m]=x.useState(!1),u=je(a);return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"flex items-center gap-3 mb-2",children:[u&&e.jsxDEV(Pe,{className:"w-5 h-5 text-text-tertiary shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:33,columnNumber:19},this),e.jsxDEV("p",{className:"text-[1.5rem] leading-snug font-light text-text-secondary",children:[a.type,a.subtype?` / ${a.subtype}`:""]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:34,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:32,columnNumber:7},this),a.description&&e.jsxDEV("p",{className:"text-sm leading-relaxed text-text-tertiary mb-4",children:a.description},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:41,columnNumber:9},this),e.jsxDEV("div",{className:"flex flex-wrap items-end gap-x-6 gap-y-3 mt-4 mb-2",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Status"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:50,columnNumber:11},this),e.jsxDEV("span",{className:"mb-1 inline-block",children:e.jsxDEV(Ae,{status:a.status},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:51,columnNumber:47},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:51,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:49,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Role"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:56,columnNumber:11},this),e.jsxDEV(Te,{role:a.role,size:"md"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:57,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:55,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Created"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:62,columnNumber:11},this),e.jsxDEV("span",{className:"inline-flex items-center mb-1 text-xs text-text-secondary",children:e.jsxDEV(X,{date:a.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:64,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:63,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:61,columnNumber:9},this),a.assigned_to&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Claimed by"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:71,columnNumber:13},this),e.jsxDEV("span",{className:"inline-flex items-center gap-1.5 text-xs font-medium text-text-primary",children:[e.jsxDEV(Be,{className:"w-3 h-3 shrink-0 text-accent/75"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:73,columnNumber:15},this),e.jsxDEV(oe,{userId:a.assigned_to},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:74,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:72,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:70,columnNumber:11},this),i&&!s&&a.assigned_until&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Time left"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:82,columnNumber:13},this),e.jsxDEV("span",{className:"inline-flex items-center h-5",children:e.jsxDEV(se,{until:a.assigned_until},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:83,columnNumber:60},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:83,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:81,columnNumber:11},this),a.resolved_at&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Resolved"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:90,columnNumber:13},this),e.jsxDEV("span",{className:"inline-flex items-center h-5 text-xs text-text-secondary",children:e.jsxDEV(X,{date:a.resolved_at},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:92,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:91,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:89,columnNumber:11},this),e.jsxDEV("div",{children:e.jsxDEV("button",{onClick:()=>m(!t),className:"inline-flex items-center gap-1 h-5 text-xs text-text-tertiary hover:text-accent transition-colors",children:["Details",e.jsxDEV("svg",{className:`w-3 h-3 transition-transform duration-200 ${t?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:108,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:104,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:99,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:98,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:47,columnNumber:7},this),e.jsxDEV(be,{open:t,children:e.jsxDEV("div",{className:"mt-4 bg-surface-raised border border-surface-border rounded-md p-4 flex flex-wrap gap-x-8 gap-y-4",children:[e.jsxDEV("div",{className:"text-left",children:[e.jsxDEV("span",{className:"text-[11px] font-medium text-text-secondary uppercase tracking-wide",children:"Priority"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:117,columnNumber:13},this),e.jsxDEV("p",{className:"text-[12px] text-text-primary mt-0.5",children:["P",a.priority]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:118,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:116,columnNumber:11},this),e.jsxDEV(k,{label:"Escalation ID",value:a.id},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:120,columnNumber:11},this),a.task_id&&e.jsxDEV(k,{label:"Task",value:a.task_id,href:`/workflows/tasks/detail/${a.task_id}`},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:122,columnNumber:13},this),e.jsxDEV(k,{label:"Workflow",value:a.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:124,columnNumber:11},this),e.jsxDEV(k,{label:"Workflow ID",value:a.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:125,columnNumber:11},this),e.jsxDEV(k,{label:"Task Queue",value:a.task_queue},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:126,columnNumber:11},this),a.origin_id&&a.origin_id!==a.workflow_id&&e.jsxDEV(k,{label:"Origin",value:a.origin_id},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:128,columnNumber:13},this),a.trace_id&&e.jsxDEV(k,{label:"Trace",value:a.trace_id,href:r?r.replace("{traceId}",a.trace_id):void 0,external:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:131,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:115,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:114,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationHero.tsx",lineNumber:30,columnNumber:5},this)}function We({value:a,onChange:o}){const[i,s]=x.useState({}),[r,t]=x.useState({}),[m,u]=x.useState(null),[l,c]=x.useState(!1);x.useEffect(()=>{try{const b=JSON.parse(a);if(typeof b=="object"&&b!==null&&!Array.isArray(b)){const N={},f={};for(const[E,D]of Object.entries(b))E.startsWith("_")?f[E]=D:N[E]=D;s(N),t(f),u(f._form_schema&&typeof f._form_schema=="object"?f._form_schema:null),c(!1)}}catch{c(!0)}},[a]);const n=x.useCallback(b=>{s(b),o(JSON.stringify({...b,...r},null,2))},[r,o]),h=x.useCallback((b,N)=>{n({...i,[b]:N})},[i,n]);if(l)return e.jsxDEV("p",{className:"text-xs text-status-error",children:"Unable to parse resolver data as form. Use the JSON editor below."},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:66,columnNumber:7},this);const v=Object.entries(i);return v.length===0?e.jsxDEV("p",{className:"text-xs text-text-tertiary italic",children:"No resolver fields defined."},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:75,columnNumber:7},this):e.jsxDEV("div",{className:"space-y-4",children:v.map(([b,N])=>e.jsxDEV(re,{fieldKey:b,value:N,onChange:f=>h(b,f),schema:m},b,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:84,columnNumber:9},this))},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:82,columnNumber:5},this)}function re({fieldKey:a,value:o,onChange:i,schema:s}){var m;const r=a.replace(/[_-]/g," "),t=(m=s==null?void 0:s.properties)==null?void 0:m[a];if(typeof o=="boolean")return e.jsxDEV("label",{className:"flex items-center gap-2 cursor-pointer",children:[e.jsxDEV("input",{type:"checkbox",checked:o,onChange:u=>i(u.target.checked),className:"w-3.5 h-3.5 rounded accent-accent"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:113,columnNumber:9},this),e.jsxDEV("span",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:119,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:112,columnNumber:7},this);if(typeof o=="number")return e.jsxDEV("div",{children:[e.jsxDEV(R,{children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:130,columnNumber:9},this),e.jsxDEV("input",{type:"number",value:o,onChange:u=>i(parseFloat(u.target.value)||0),step:"any",className:"input text-sm w-full mt-1"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:131,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:129,columnNumber:7},this);if(typeof o=="string"){const u=(t==null?void 0:t.format)==="password",l=t==null?void 0:t.enum,c=t==null?void 0:t.description;return l!=null&&l.length?e.jsxDEV("div",{children:[e.jsxDEV(R,{children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:151,columnNumber:11},this),c&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:c},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:152,columnNumber:26},this),e.jsxDEV("select",{value:o,onChange:n=>i(n.target.value),className:"input text-sm w-full mt-1",children:l.map(n=>e.jsxDEV("option",{value:n,children:n},n,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:159,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:153,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:150,columnNumber:9},this):u?e.jsxDEV("div",{children:[e.jsxDEV(R,{children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:169,columnNumber:11},this),c&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:c},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:170,columnNumber:26},this),e.jsxDEV("input",{type:"password",value:o,onChange:n=>i(n.target.value),className:"input text-sm w-full mt-1",autoComplete:"off"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:171,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:168,columnNumber:9},this):o.length>80?e.jsxDEV("div",{children:[e.jsxDEV(R,{children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:185,columnNumber:11},this),c&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:c},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:186,columnNumber:26},this),e.jsxDEV("textarea",{value:o,onChange:n=>i(n.target.value),className:"input text-sm w-full mt-1 leading-relaxed",rows:Math.min(6,Math.ceil(o.length/60))},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:187,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:184,columnNumber:9},this):e.jsxDEV("div",{children:[e.jsxDEV(R,{children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:198,columnNumber:9},this),c&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:c},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:199,columnNumber:24},this),e.jsxDEV("input",{type:"text",value:o,onChange:n=>i(n.target.value),className:"input text-sm w-full mt-1"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:200,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:197,columnNumber:7},this)}if(o===null)return e.jsxDEV("div",{children:[e.jsxDEV(R,{children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:214,columnNumber:9},this),e.jsxDEV("p",{className:"text-xs text-text-tertiary italic mt-1",children:"null"},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:215,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:213,columnNumber:7},this);if(Array.isArray(o))return e.jsxDEV("div",{children:[e.jsxDEV(R,{children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:224,columnNumber:9},this),e.jsxDEV("div",{className:"flex flex-wrap gap-1.5 mt-1",children:o.map((u,l)=>e.jsxDEV("span",{className:"px-2 py-0.5 text-[11px] font-mono bg-surface-sunken rounded text-text-secondary",children:String(u)},l,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:227,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:225,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:223,columnNumber:7},this);if(typeof o=="object"){const u=Object.entries(o);return e.jsxDEV("div",{children:[e.jsxDEV(R,{children:r},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:244,columnNumber:9},this),e.jsxDEV("div",{className:"ml-4 mt-2 pl-4 border-l border-accent-faint space-y-3",children:u.map(([l,c])=>e.jsxDEV(re,{fieldKey:l,value:c,onChange:n=>i({...o,[l]:n})},l,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:247,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:245,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:243,columnNumber:7},this)}return null}function R({children:a}){return e.jsxDEV("label",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:a},void 0,!1,{fileName:"/app/dashboard/src/components/escalation/ResolverForm.tsx",lineNumber:264,columnNumber:5},this)}function Je({json:a,onJsonChange:o,requestTriage:i,onRequestTriageChange:s,triageNotes:r,onTriageNotesChange:t}){const[m,u]=x.useState("form");return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"flex items-center justify-between mb-3",children:[i?e.jsxDEV("button",{onClick:()=>s(!1),className:"group flex items-center gap-2 text-left","data-testid":"triage-cancel",children:[e.jsxDEV("span",{className:"flex items-center justify-center w-5 h-5 rounded-full bg-accent/10 text-accent shrink-0",children:e.jsxDEV("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:33,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:32,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:31,columnNumber:13},this),e.jsxDEV("span",{className:"text-xs text-text-secondary group-hover:text-text-primary transition-colors",children:["AI Triage active."," ",e.jsxDEV("span",{className:"text-accent group-hover:underline",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:38,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:36,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:26,columnNumber:11},this):e.jsxDEV("button",{onClick:()=>s(!0),className:"group flex items-center gap-2.5 text-left my-4","data-testid":"triage-callout",children:[e.jsxDEV("span",{className:"flex items-center justify-center w-6 h-6 rounded-full bg-accent/10 text-accent shrink-0 animate-[triage-glow_6s_ease-in-out_infinite]",children:e.jsxDEV("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.674M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:49,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:48,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:47,columnNumber:13},this),e.jsxDEV("span",{className:"text-[13px] text-text-secondary group-hover:text-text-primary transition-colors",children:["This form doesn't capture the issue?"," ",e.jsxDEV("span",{className:"text-accent group-hover:underline",children:"Request AI Triage"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:54,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:52,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:42,columnNumber:11},this),!i&&e.jsxDEV("button",{onClick:()=>u(m==="form"?"json":"form"),className:"text-[10px] text-text-tertiary hover:text-accent transition-colors",children:m==="form"?"Raw JSON":"Form"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:60,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:24,columnNumber:7},this),e.jsxDEV("div",{className:"relative min-h-[200px]",children:[e.jsxDEV("div",{className:i?"pointer-events-none select-none":"",children:m==="form"?e.jsxDEV(We,{value:a,onChange:o},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:73,columnNumber:13},this):e.jsxDEV("textarea",{value:a,onChange:l=>o(l.target.value),className:"input font-mono text-xs w-full",rows:8,spellCheck:!1,"data-testid":"resolve-json"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:75,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:71,columnNumber:9},this),i&&e.jsxDEV("div",{className:"absolute inset-0 z-10 flex flex-col bg-surface/90 backdrop-blur-[2px] rounded-md border border-accent/20 p-5","data-testid":"triage-overlay",children:[e.jsxDEV("p",{className:"text-xs text-text-secondary mb-3 leading-relaxed",children:"The resolution form will not be submitted. Describe the issue so AI triage can diagnose and fix it using available tools. The corrected result will come back as a new escalation for your review."},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:92,columnNumber:13},this),e.jsxDEV("textarea",{value:r,onChange:l=>t(l.target.value),placeholder:"e.g. Content is in Spanish — needs translation to English before review...",className:"input text-xs w-full flex-1 min-h-[80px] resize-none",autoFocus:!0,"data-testid":"triage-notes"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:98,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:88,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:69,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/ResolverSection.tsx",lineNumber:22,columnNumber:5},this)}function ae(a){if(!a)return null;try{return JSON.parse(a)}catch{return a}}function ze(a){if(!a)return!1;try{const o=JSON.parse(a);return!!(o&&typeof o=="object"&&o._triage)}catch{return!1}}function da(){var G,Q;const{id:a}=Re(),{user:o}=Ne(),i=ke(),{data:s,isLoading:r}=he(a);we(a);const t=fe(),m=ve(),u=ge(),{data:l}=Ee((s==null?void 0:s.role)??""),{data:c}=ye(),{data:n}=Ce(),h=c==null?void 0:c.find(p=>p.workflow_type===(s==null?void 0:s.workflow_type)),v=((G=n==null?void 0:n.telemetry)==null?void 0:G.traceUrl)??null,[b,N]=x.useState("resolve"),[f,E]=x.useState("{}"),[D,_]=x.useState({context:!1}),S=p=>_(L=>({...L,[p]:!L[p]})),[F,O]=x.useState(!1),[W,H]=x.useState(""),j=(h==null?void 0:h.resolver_schema)??null,V=((Q=s==null?void 0:s.metadata)==null?void 0:Q.form_schema)??null,A=V??j;x.useEffect(()=>{const p=V??(j!=null&&j.properties?j:null);if(p!=null&&p.properties){const L={_form_schema:p};for(const[ue,pe]of Object.entries(p.properties)){const xe=pe;L[ue]=xe.default??""}E(JSON.stringify(L,null,2))}else E(A?JSON.stringify(A,null,2):"{}")},[A,V,j]);const $=ze(s==null?void 0:s.escalation_payload),T=(s==null?void 0:s.subtype)==="rounds_exhausted",P=(s==null?void 0:s.subtype)==="wait_for_human";if(x.useEffect(()=>{($||T)&&_(p=>({...p,context:!0})),P&&V&&_(p=>({...p,context:!0,resolver:!1}))},[$,T,P,V]),r)return e.jsxDEV("div",{className:"animate-pulse space-y-8",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-64"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:111,columnNumber:9},this),e.jsxDEV("div",{className:"h-32 bg-surface-sunken rounded w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:112,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:110,columnNumber:7},this);if(!s)return e.jsxDEV("p",{className:"text-sm text-text-secondary",children:"Escalation not found."},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:118,columnNumber:12},this);const M=Ve(s),g=M&&s.assigned_to===(o==null?void 0:o.userId),U=M&&!g,B=s.status==="resolved"||s.status==="cancelled",y=ae(s.escalation_payload),C=ae(s.resolver_payload),d=typeof y=="object"&&y!==null&&!Array.isArray(y)?y:null,I=d==null?void 0:d._triage,ie=B?"terminal":g?"claimed_by_me":U?"claimed_by_other":"available",le=p=>{t.mutate({id:s.id,durationMinutes:p}),_({context:!0,triage:!0,resolver:!1})},J=()=>i(-1),ne=async p=>{await m.mutateAsync({id:s.id,resolverPayload:p}),J()},ce=async p=>{p&&(await u.mutateAsync({id:s.id,targetRole:p}),J())},de=async()=>{g||await t.mutateAsync({id:s.id,durationMinutes:30});const p=(d==null?void 0:d.diagnosis)||s.description||"";await m.mutateAsync({id:s.id,resolverPayload:{_lt:{needsTriage:!0},notes:p}}),J()},me=async()=>{await t.mutateAsync({id:s.id,durationMinutes:0}),J()};return e.jsxDEV("div",{className:"min-h-[calc(100vh-9rem)] flex flex-col",children:[e.jsxDEV(De,{title:"Escalation"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:181,columnNumber:7},this),e.jsxDEV(Oe,{esc:s,claimedByMe:g,claimed:M,isTerminal:B,traceUrl:v},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:183,columnNumber:7},this),T&&d&&e.jsxDEV("div",{className:"mt-8",children:e.jsxDEV(He,{payload:d,isTerminal:B,resolverPayload:C,onRetryTriage:de,isRetrying:t.isPending||m.isPending},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:194,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:193,columnNumber:9},this),(d==null?void 0:d.category)==="missing_credential"&&e.jsxDEV("div",{className:"mt-8 bg-status-warning/10 border border-status-warning/30 rounded-md px-5 py-4 flex items-start gap-3",children:[e.jsxDEV(Z,{size:20,className:"text-status-warning mt-0.5 shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:207,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-sm font-medium text-text-primary mb-1",children:"Missing Credential"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:209,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs text-text-secondary mb-3",children:["This workflow requires a ",e.jsxDEV("span",{className:"font-medium capitalize",children:String(d.provider)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:211,columnNumber:40},this)," credential to continue. Register one and then resolve this escalation to retry."]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:210,columnNumber:13},this),e.jsxDEV(te,{to:"/credentials",className:"btn-primary text-xs inline-flex items-center gap-1.5",children:[e.jsxDEV(Z,{size:12},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:218,columnNumber:15},this),"Go to Credentials"]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:214,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:208,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:206,columnNumber:9},this),e.jsxDEV("div",{className:"mt-8 space-y-6",children:[e.jsxDEV(K,{title:"Input / Output",sectionKey:"context",isCollapsed:D.context??!0,onToggle:S,contentClassName:"mt-4 ml-9",children:e.jsxDEV("div",{className:"space-y-6",children:[e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[s.envelope&&e.jsxDEV("div",{children:e.jsxDEV(z,{data:s.envelope,label:"Input Envelope"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:240,columnNumber:19},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:239,columnNumber:17},this),y!=null&&e.jsxDEV("div",{children:e.jsxDEV(z,{data:y,label:"Escalation Context"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:245,columnNumber:19},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:244,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:237,columnNumber:13},this),C!=null&&e.jsxDEV("div",{className:"max-w-xl",children:e.jsxDEV(z,{data:C,label:"Resolver Payload"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:252,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:251,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:236,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:229,columnNumber:9},this),I&&d&&e.jsxDEV(K,{title:"AI Triage",sectionKey:"triage",isCollapsed:!!D.triage,onToggle:S,contentClassName:"mt-4 ml-9",children:e.jsxDEV($e,{triage:I,payload:d},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:267,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:260,columnNumber:11},this),!B&&g&&b==="resolve"&&(s.workflow_type||V)&&e.jsxDEV(K,{title:"Submit Your Resolution",sectionKey:"resolver",isCollapsed:!!D.resolver,onToggle:S,contentClassName:"mt-4 ml-9",children:e.jsxDEV(Je,{json:f,onJsonChange:E,requestTriage:F,onRequestTriageChange:O,triageNotes:W,onTriageNotesChange:H},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:280,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:273,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:226,columnNumber:7},this),e.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:292,columnNumber:7},this),e.jsxDEV(Le,{mode:ie,activeView:b,onActiveViewChange:N,onClaim:le,claimPending:t.isPending,workflowType:s.workflow_type,json:f,onResolve:ne,resolvePending:m.isPending,resolveError:m.error,requestTriage:F,triageNotes:W,currentRole:s.role,escalationTargets:(l==null?void 0:l.targets)??[],onEscalate:ce,escalatePending:u.isPending,escalateError:u.error,onRelease:me,releasePending:t.isPending,assignedTo:s.assigned_to,assignedUntil:s.assigned_until},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:294,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/escalation-detail/EscalationDetailPage.tsx",lineNumber:180,columnNumber:5},this)}export{da as EscalationDetailPage};
5
- //# sourceMappingURL=index-ABcJHHlN.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-ABcJHHlN.js","sources":["../../src/components/common/display/SimpleMarkdown.tsx","../../src/components/escalation/RoundsExhaustedContext.tsx","../../src/components/escalation/TriageContext.tsx","../../src/pages/operator/escalation-detail/EscalationActionBar.tsx","../../src/pages/operator/escalation-detail/EscalationHero.tsx","../../src/components/escalation/ResolverForm.tsx","../../src/pages/operator/escalation-detail/ResolverSection.tsx","../../src/pages/operator/escalation-detail/EscalationDetailPage.tsx"],"sourcesContent":["/**\n * Lightweight markdown-to-HTML renderer for simple patterns.\n * No external dependency — handles bold, italic, code, links, headers, lists.\n */\n\nfunction renderInline(text: string): string {\n return text\n // Code spans\n .replace(/`([^`]+)`/g, '<code class=\"px-1 py-0.5 bg-surface-sunken rounded text-xs font-mono\">$1</code>')\n // Bold + italic\n .replace(/\\*\\*\\*(.+?)\\*\\*\\*/g, '<strong><em>$1</em></strong>')\n // Bold\n .replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>')\n // Italic\n .replace(/\\*(.+?)\\*/g, '<em>$1</em>')\n // Links\n .replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<a href=\"$2\" class=\"text-accent-primary hover:underline\" target=\"_blank\" rel=\"noopener noreferrer\">$1</a>');\n}\n\nexport function SimpleMarkdown({ content, compact }: { content: string; compact?: boolean }) {\n // Extract fenced code blocks before line-by-line processing\n const segments: Array<{ type: 'code'; lang: string; code: string } | { type: 'text'; text: string }> = [];\n const fencePattern = /^```(\\w*)\\n([\\s\\S]*?)^```$/gm;\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n while ((match = fencePattern.exec(content)) !== null) {\n if (match.index > lastIndex) {\n segments.push({ type: 'text', text: content.slice(lastIndex, match.index) });\n }\n segments.push({ type: 'code', lang: match[1], code: match[2].replace(/\\n$/, '') });\n lastIndex = match.index + match[0].length;\n }\n if (lastIndex < content.length) {\n segments.push({ type: 'text', text: content.slice(lastIndex) });\n }\n\n const sizeClasses = compact\n ? { text: 'text-xs', heading: 'text-xs', list: 'text-xs', code: 'text-[11px]' }\n : { text: 'text-sm', heading: 'text-sm', list: 'text-sm', code: 'text-xs' };\n\n const allParts: string[] = [];\n for (const segment of segments) {\n if (segment.type === 'code') {\n const escaped = segment.code.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n allParts.push(\n `<pre class=\"my-2 p-2.5 bg-surface-sunken rounded-md overflow-x-auto\"><code class=\"${sizeClasses.code} font-mono text-text-secondary leading-relaxed\">${escaped}</code></pre>`,\n );\n continue;\n }\n allParts.push(...renderTextBlock(segment.text, sizeClasses));\n }\n\n return (\n <div\n className=\"prose-sm\"\n dangerouslySetInnerHTML={{ __html: allParts.join('\\n') }}\n />\n );\n}\n\nfunction renderTextBlock(\n text: string,\n sz: { text: string; heading: string; list: string; code: string },\n): string[] {\n const lines = text.split('\\n');\n const htmlParts: string[] = [];\n let inList = false;\n let inTable = false;\n let tableRows: string[][] = [];\n\n for (const line of lines) {\n const trimmed = line.trim();\n\n // Table rows\n if (trimmed.startsWith('|') && trimmed.endsWith('|')) {\n const cells = trimmed.slice(1, -1).split('|').map((c) => c.trim());\n // Skip separator rows (|---|---|)\n if (cells.every((c) => /^[-:]+$/.test(c))) continue;\n if (!inTable) {\n inTable = true;\n tableRows = [];\n }\n tableRows.push(cells);\n continue;\n }\n if (inTable) {\n inTable = false;\n const [header, ...body] = tableRows;\n htmlParts.push('<div class=\"overflow-x-auto my-2\"><table class=\"text-xs w-full\"><thead><tr>');\n for (const h of header) {\n htmlParts.push(`<th class=\"text-left py-1 px-2 border-b border-border text-text-secondary font-medium\">${renderInline(h)}</th>`);\n }\n htmlParts.push('</tr></thead><tbody>');\n for (const row of body) {\n htmlParts.push('<tr>');\n for (const cell of row) {\n htmlParts.push(`<td class=\"py-1 px-2 border-b border-border/50\">${renderInline(cell)}</td>`);\n }\n htmlParts.push('</tr>');\n }\n htmlParts.push('</tbody></table></div>');\n tableRows = [];\n }\n\n // Empty line\n if (!trimmed) {\n if (inList) { htmlParts.push('</ul>'); inList = false; }\n continue;\n }\n\n // Headers\n if (trimmed.startsWith('### ')) {\n if (inList) { htmlParts.push('</ul>'); inList = false; }\n htmlParts.push(`<h4 class=\"${sz.heading} font-semibold text-text-primary mt-3 mb-1\">${renderInline(trimmed.slice(4))}</h4>`);\n continue;\n }\n if (trimmed.startsWith('## ')) {\n if (inList) { htmlParts.push('</ul>'); inList = false; }\n htmlParts.push(`<h3 class=\"${sz.heading} font-semibold text-text-primary mt-3 mb-1\">${renderInline(trimmed.slice(3))}</h3>`);\n continue;\n }\n\n // Horizontal rule\n if (/^[-*_]{3,}$/.test(trimmed)) {\n if (inList) { htmlParts.push('</ul>'); inList = false; }\n htmlParts.push('<hr class=\"border-border my-3\" />');\n continue;\n }\n\n // List items\n if (/^[-*] /.test(trimmed)) {\n if (!inList) { htmlParts.push('<ul class=\"space-y-1 my-1\">'); inList = true; }\n htmlParts.push(`<li class=\"${sz.list} text-text-secondary flex gap-2\"><span class=\"text-text-tertiary shrink-0\">-</span><span>${renderInline(trimmed.slice(2))}</span></li>`);\n continue;\n }\n\n // Paragraph\n if (inList) { htmlParts.push('</ul>'); inList = false; }\n htmlParts.push(`<p class=\"${sz.text} text-text-secondary my-1\">${renderInline(trimmed)}</p>`);\n }\n\n // Flush any remaining table\n if (inTable && tableRows.length) {\n const [header, ...body] = tableRows;\n htmlParts.push('<div class=\"overflow-x-auto my-2\"><table class=\"text-xs w-full\"><thead><tr>');\n for (const h of header) {\n htmlParts.push(`<th class=\"text-left py-1 px-2 border-b border-border text-text-secondary font-medium\">${renderInline(h)}</th>`);\n }\n htmlParts.push('</tr></thead><tbody>');\n for (const row of body) {\n htmlParts.push('<tr>');\n for (const cell of row) {\n htmlParts.push(`<td class=\"py-1 px-2 border-b border-border/50\">${renderInline(cell)}</td>`);\n }\n htmlParts.push('</tr>');\n }\n htmlParts.push('</tbody></table></div>');\n }\n\n if (inList) htmlParts.push('</ul>');\n\n return htmlParts;\n}\n","import { useState } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { JsonViewer } from '../common/data/JsonViewer';\nimport { SimpleMarkdown } from '../common/display/SimpleMarkdown';\n\ninterface RoundsExhaustedContextProps {\n payload: Record<string, unknown>;\n isTerminal?: boolean;\n resolverPayload?: Record<string, unknown> | null;\n onRetryTriage?: () => void;\n isRetrying?: boolean;\n}\n\nfunction SectionLabel({ children }: { children: React.ReactNode }) {\n return (\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">{children}</p>\n );\n}\n\nexport function RoundsExhaustedContext({ payload, isTerminal, resolverPayload, onRetryTriage, isRetrying }: RoundsExhaustedContextProps) {\n const title = payload.title as string | undefined;\n const summary = payload.summary as string | undefined;\n const diagnosis = payload.diagnosis as string | undefined;\n const toolCalls = payload.tool_calls_made as number | undefined;\n const result = payload.result as Record<string, unknown> | null | undefined;\n\n // Detect triage resolution\n const ltMeta = resolverPayload?._lt as Record<string, unknown> | undefined;\n const wasTriaged = ltMeta?.triaged === true;\n const triageWorkflowId = ltMeta?.triageWorkflowId as string | undefined;\n const isResolvedByTriage = isTerminal && wasTriaged;\n\n const [showResult, setShowResult] = useState(false);\n\n // Resolved by triage — show success state\n if (isResolvedByTriage) {\n return (\n <div className=\"rounded-md border border-status-success/30 bg-surface-raised\">\n {/* Header */}\n <div className=\"flex items-center justify-between px-4 py-3 border-b border-surface-border\">\n <div className=\"flex items-center gap-2\">\n <svg className=\"w-4 h-4 text-status-success shrink-0\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M8 1a7 7 0 110 14A7 7 0 018 1zm3.36 4.65a.5.5 0 00-.72 0L7 9.29 5.36 7.65a.5.5 0 10-.72.7l2 2a.5.5 0 00.72 0l4-4a.5.5 0 000-.7z\" />\n </svg>\n <span className=\"text-xs font-medium text-status-success\">Resolved by AI Triage</span>\n </div>\n {typeof toolCalls === 'number' && (\n <span className=\"text-[10px] font-mono px-2 py-0.5 rounded-full bg-status-success/10 text-status-success\">\n {toolCalls} tool calls used\n </span>\n )}\n </div>\n\n {/* Body */}\n <div className=\"px-4 py-4 space-y-4\">\n {title && (\n <p className=\"text-sm font-medium text-text-primary\">{title}</p>\n )}\n\n {diagnosis && (\n <div>\n <SectionLabel>Triage diagnosis</SectionLabel>\n <div className=\"text-xs text-text-primary leading-relaxed\">\n <SimpleMarkdown content={diagnosis} />\n </div>\n </div>\n )}\n\n <div className=\"flex items-center gap-3\">\n {triageWorkflowId && (\n <Link\n to={`/workflows/executions/${triageWorkflowId}`}\n className=\"text-[10px] text-accent hover:underline\"\n >\n View triage execution\n </Link>\n )}\n </div>\n </div>\n </div>\n );\n }\n\n // Default: warning state\n return (\n <div className=\"rounded-md border border-status-warning/30 bg-surface-raised\">\n {/* Header */}\n <div className=\"flex items-center justify-between px-4 py-3 border-b border-surface-border\">\n <div className=\"flex items-center gap-2\">\n <svg className=\"w-4 h-4 text-status-warning shrink-0\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M8 1a7 7 0 110 14A7 7 0 018 1zm0 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 4zm0 7a.75.75 0 100-1.5.75.75 0 000 1.5z\" />\n </svg>\n <span className=\"text-xs font-medium text-status-warning\">Tool Rounds Exhausted</span>\n </div>\n {typeof toolCalls === 'number' && (\n <span className=\"text-[10px] font-mono px-2 py-0.5 rounded-full bg-status-warning/10 text-status-warning\">\n {toolCalls} tool calls used\n </span>\n )}\n </div>\n\n {/* Body */}\n <div className=\"px-4 py-4 space-y-4\">\n {title && (\n <p className=\"text-sm font-medium text-text-primary\">{title}</p>\n )}\n\n {summary && (\n <div>\n <SectionLabel>What happened</SectionLabel>\n <div className=\"text-xs text-text-secondary leading-relaxed\">\n <SimpleMarkdown content={summary} />\n </div>\n </div>\n )}\n\n {diagnosis && (\n <div>\n <SectionLabel>What went wrong</SectionLabel>\n <div className=\"text-xs text-text-primary leading-relaxed\">\n <SimpleMarkdown content={diagnosis} />\n </div>\n </div>\n )}\n\n {result != null && (\n <div>\n <button\n onClick={() => setShowResult(!showResult)}\n className=\"flex items-center gap-1 text-[10px] font-semibold uppercase tracking-widest text-text-tertiary hover:text-text-secondary transition-colors\"\n >\n <svg className={`w-3 h-3 transition-transform ${showResult ? 'rotate-90' : ''}`} viewBox=\"0 0 12 12\" fill=\"currentColor\">\n <path d=\"M4.5 2l4 4-4 4\" />\n </svg>\n Partial results\n </button>\n {showResult && (\n <div className=\"mt-2\">\n <JsonViewer data={result} defaultMode=\"tree\" />\n </div>\n )}\n </div>\n )}\n\n {onRetryTriage && !isTerminal && (\n <div className=\"pt-2\">\n <button\n onClick={onRetryTriage}\n disabled={isRetrying}\n className=\"inline-flex items-center gap-2 px-4 py-2 text-xs font-medium bg-accent text-text-inverse rounded-md hover:bg-accent/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n >\n <svg className=\"w-3.5 h-3.5\" viewBox=\"0 0 14 14\" fill=\"currentColor\">\n <path d=\"M7 1a6 6 0 100 12A6 6 0 007 1zm2.5 6.5l-3.5 2V5.5l3.5 2z\" />\n </svg>\n {isRetrying ? 'Sending to triage...' : 'Retry with AI Triage'}\n </button>\n </div>\n )}\n </div>\n </div>\n );\n}\n","interface TriageData {\n diagnosis?: string;\n actions_taken?: string[];\n tool_calls_made?: number;\n confidence?: number;\n recommendation?: string;\n correctedData?: Record<string, unknown>;\n originalData?: Record<string, unknown>;\n}\n\ntype Diff = { key: string; label: string; original: unknown; corrected: unknown };\n\n/**\n * Renders a triage summary when escalation payload contains `_triage`.\n *\n * Fully generic — no knowledge of workflow types or field semantics.\n * Diffs `_triage.originalData` against the payload to detect changes.\n * Follows the unboxed section pattern used throughout the dashboard.\n */\nexport function TriageContext({ triage, payload }: {\n triage: TriageData;\n payload: Record<string, unknown>;\n}) {\n const confidence = triage.confidence ?? 0;\n const confidenceColor =\n confidence >= 0.8 ? 'text-status-success' :\n confidence >= 0.5 ? 'text-status-pending' :\n 'text-status-error';\n\n // Generic diff: compare originalData fields to current payload\n const diffs = computeDiffs(triage.originalData, payload);\n\n return (\n <div className=\"space-y-5\">\n {/* Diagnosis + metadata — unboxed, natural flow */}\n {triage.diagnosis && (\n <p className=\"text-sm text-text-primary leading-relaxed\">\n {triage.diagnosis}\n </p>\n )}\n\n <div className=\"flex flex-wrap items-center gap-3 text-xs text-text-tertiary\">\n {triage.tool_calls_made != null && (\n <span>{triage.tool_calls_made} tool call{triage.tool_calls_made !== 1 ? 's' : ''}</span>\n )}\n {triage.tool_calls_made != null && <span className=\"text-text-quaternary\">&middot;</span>}\n <span className={`font-medium ${confidenceColor}`}>\n {Math.round(confidence * 100)}% confidence\n </span>\n </div>\n\n {triage.actions_taken && triage.actions_taken.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5\">\n {triage.actions_taken.map((action, i) => (\n <span\n key={i}\n className=\"inline-flex items-center gap-1.5 px-2 py-0.5 text-[11px]\n text-text-secondary\"\n >\n <svg className=\"w-3 h-3 text-status-success shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n {action}\n </span>\n ))}\n </div>\n )}\n\n {triage.recommendation && (\n <p className=\"text-[11px] text-text-tertiary italic\">\n {triage.recommendation}\n </p>\n )}\n\n {/* Generic before/after diffs — separated by subtle dividers */}\n {diffs.length > 0 && (\n <div className=\"space-y-4 pt-2\">\n {diffs.map((diff) => (\n <DiffRow key={diff.key} diff={diff} />\n ))}\n </div>\n )}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Generic diff computation\n// ---------------------------------------------------------------------------\n\nfunction computeDiffs(\n original: Record<string, unknown> | undefined,\n current: Record<string, unknown>,\n): Diff[] {\n if (!original) return [];\n\n const diffs: Diff[] = [];\n for (const key of Object.keys(original)) {\n if (key.startsWith('_')) continue;\n const origVal = original[key];\n const currVal = current[key];\n if (currVal === undefined) continue;\n\n if (JSON.stringify(origVal) !== JSON.stringify(currVal)) {\n diffs.push({\n key,\n label: key.replace(/[_-]/g, ' '),\n original: origVal,\n corrected: currVal,\n });\n }\n }\n return diffs;\n}\n\n// ---------------------------------------------------------------------------\n// Diff row — clean, unboxed before/after\n// ---------------------------------------------------------------------------\n\nfunction DiffRow({ diff }: { diff: Diff }) {\n const origStr = renderValue(diff.original);\n const corrStr = renderValue(diff.corrected);\n\n // Both are primitives — side by side with subtle separator\n if (origStr !== null && corrStr !== null) {\n return (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-x-8 gap-y-3\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">\n {diff.label} <span className=\"normal-case font-normal\">(original)</span>\n </p>\n <p className=\"text-sm text-text-tertiary leading-relaxed line-through decoration-text-tertiary/30\">\n {origStr}\n </p>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">\n {diff.label} <span className=\"normal-case font-normal text-status-success\">(corrected)</span>\n </p>\n <p className=\"text-sm text-text-primary leading-relaxed\">\n {corrStr}\n </p>\n </div>\n </div>\n );\n }\n\n // Complex values — stacked\n return (\n <div className=\"space-y-3\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">\n {diff.label} <span className=\"normal-case font-normal\">(original)</span>\n </p>\n <pre className=\"text-xs text-text-tertiary font-mono whitespace-pre-wrap leading-relaxed\">\n {typeof diff.original === 'object' ? JSON.stringify(diff.original, null, 2) : String(diff.original)}\n </pre>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">\n {diff.label} <span className=\"normal-case font-normal text-status-success\">(corrected)</span>\n </p>\n <pre className=\"text-xs text-text-primary font-mono whitespace-pre-wrap leading-relaxed\">\n {typeof diff.corrected === 'object' ? JSON.stringify(diff.corrected, null, 2) : String(diff.corrected)}\n </pre>\n </div>\n </div>\n );\n}\n\n/** Render a value as a string if it's a primitive, null otherwise */\nfunction renderValue(val: unknown): string | null {\n if (val === null || val === undefined) return 'null';\n if (typeof val === 'string') return val;\n if (typeof val === 'number' || typeof val === 'boolean') return String(val);\n return null;\n}\n","import { useState, useCallback } from 'react';\nimport { CountdownTimer } from '../../../components/common/display/CountdownTimer';\nimport { UserName } from '../../../components/common/display/UserName';\nimport { CustomDurationPicker } from '../../../components/common/form/CustomDurationPicker';\nimport { useClaimDurations } from '../../../hooks/useClaimDurations';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type ActionBarMode =\n | 'available' // unclaimed — show claim controls\n | 'claimed_by_me' // I own it — show resolve/escalate/release\n | 'claimed_by_other'// someone else has it\n | 'terminal'; // resolved or cancelled — nothing to do\n\nexport type ActiveView = 'resolve' | 'escalate' | 'release';\n\nexport interface EscalationActionBarProps {\n mode: ActionBarMode;\n // Active view (controlled by parent)\n activeView: ActiveView;\n onActiveViewChange: (view: ActiveView) => void;\n // Claim\n onClaim: (minutes: number) => void;\n claimPending: boolean;\n // Resolve — JSON lives in viewport, bar reads it for submit\n workflowType: string | null;\n json: string;\n onResolve: (payload: Record<string, unknown>) => void;\n resolvePending: boolean;\n resolveError: Error | null;\n // Triage (controlled by parent — callout + overlay render in page body)\n requestTriage: boolean;\n triageNotes: string;\n // Escalate\n currentRole: string;\n escalationTargets: string[];\n onEscalate: (role: string) => void;\n escalatePending: boolean;\n escalateError: Error | null;\n // Release\n onRelease: () => void;\n releasePending: boolean;\n // Other user\n assignedTo?: string | null;\n assignedUntil?: string | null;\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function EscalationActionBar(props: EscalationActionBarProps) {\n const {\n mode, activeView, onActiveViewChange,\n onClaim, claimPending,\n workflowType, json, onResolve, resolvePending, resolveError,\n requestTriage, triageNotes,\n currentRole, escalationTargets, onEscalate, escalatePending, escalateError,\n onRelease, releasePending,\n assignedTo, assignedUntil,\n } = props;\n\n const claimDurations = useClaimDurations();\n const [duration, setDuration] = useState('30');\n const [customMinutes, setCustomMinutes] = useState(0);\n const [parseError, setParseError] = useState('');\n const [escalateTarget, setEscalateTarget] = useState('');\n\n const isCustom = duration === 'custom';\n const onCustomChange = useCallback((m: number) => setCustomMinutes(m), []);\n\n if (mode === 'terminal') return null;\n\n const handleClaim = () => {\n const minutes = isCustom ? customMinutes : parseInt(duration);\n if (!minutes || minutes <= 0) return;\n onClaim(minutes);\n };\n\n const handleSubmitResolve = () => {\n setParseError('');\n\n // When triage is requested, ignore the form payload entirely.\n // Only the triage flag and notes matter — the form data (e.g.\n // approved: true) must NOT leak through, as it would confuse\n // the triage workflow into thinking the issue is already resolved.\n if (requestTriage) {\n const payload: Record<string, unknown> = {\n _lt: { needsTriage: true },\n };\n if (triageNotes.trim()) payload.notes = triageNotes.trim();\n onResolve(payload);\n return;\n }\n\n let payload: Record<string, unknown>;\n try {\n payload = JSON.parse(json);\n } catch {\n setParseError('Invalid JSON');\n return;\n }\n onResolve(payload);\n };\n\n const tabClass = (active: boolean) =>\n `text-xs transition-colors ${active ? 'text-accent font-medium' : 'text-text-tertiary hover:text-accent'}`;\n\n return (\n <div className=\"sticky h-[80px] bg-surface/95 backdrop-blur-sm border-t border-surface-border -mx-10 px-10 pt-3 pb-5 z-10\" style={{ bottom: 'calc(var(--feed-height, 0px) - 8px)' }} data-testid=\"escalation-action-bar\">\n\n {/* ── Available: claim ── */}\n {mode === 'available' && (\n <div data-testid=\"claim-bar\">\n {/* Duration tab row */}\n <div className=\"flex items-center gap-4 mb-2\">\n {claimDurations.map((opt) => (\n <button\n key={opt.value}\n onClick={() => { setDuration(opt.value); setCustomMinutes(0); }}\n className={tabClass(!isCustom && duration === opt.value)}\n >\n {opt.label}\n </button>\n ))}\n <button\n onClick={() => setDuration('custom')}\n className={tabClass(isCustom)}\n >\n Other\n </button>\n </div>\n {/* Action row — right-aligned */}\n <div className=\"flex items-center gap-3\">\n <div className=\"flex-1\" />\n {isCustom && (\n <CustomDurationPicker onChange={onCustomChange} compact autoFocus />\n )}\n <button\n onClick={handleClaim}\n disabled={claimPending || (isCustom && customMinutes <= 0)}\n className=\"btn-primary text-xs\"\n >\n {claimPending ? 'Claiming...' : 'Claim'}\n </button>\n </div>\n </div>\n )}\n\n {/* ── Claimed by other ── */}\n {mode === 'claimed_by_other' && (\n <div className=\"flex items-center gap-4\" data-testid=\"claimed-other-bar\">\n <p className=\"text-sm text-text-secondary\">\n Claimed by <span className=\"font-medium text-text-primary\">{assignedTo ? <UserName userId={assignedTo} /> : 'unknown'}</span>\n </p>\n {assignedUntil && <CountdownTimer until={assignedUntil} />}\n </div>\n )}\n\n {/* ── Claimed by me ── */}\n {mode === 'claimed_by_me' && (\n <div data-testid=\"action-bar\">\n {/* Tab row */}\n <div className=\"flex items-center gap-4 mb-2\">\n <button\n onClick={() => onActiveViewChange('resolve')}\n className={tabClass(activeView === 'resolve')}\n >\n {workflowType ? 'Resolve' : 'Acknowledge'}\n </button>\n {escalationTargets.length > 0 && (\n <button\n onClick={() => onActiveViewChange('escalate')}\n className={tabClass(activeView === 'escalate')}\n >\n Escalate\n </button>\n )}\n <button\n onClick={() => onActiveViewChange('release')}\n className={`text-xs transition-colors ${activeView === 'release' ? 'text-status-error font-medium' : 'text-text-tertiary hover:text-status-error'}`}\n >\n Release\n </button>\n </div>\n\n {/* ── Resolve controls ── */}\n {activeView === 'resolve' && (\n workflowType ? (\n <div className=\"flex items-center gap-4\">\n <div className=\"flex-1\" />\n\n {parseError && <span className=\"text-xs text-status-error\">{parseError}</span>}\n {resolveError && <span className=\"text-xs text-status-error\">{resolveError.message}</span>}\n\n <button\n onClick={handleSubmitResolve}\n disabled={resolvePending}\n className=\"btn-primary text-xs\"\n >\n {resolvePending ? 'Submitting...' : requestTriage ? 'Send to Triage' : 'Submit'}\n </button>\n </div>\n ) : (\n <div className=\"flex items-center\">\n <span className=\"text-xs text-text-secondary\">Notification — acknowledge to resolve</span>\n <div className=\"flex-1\" />\n {resolveError && <span className=\"text-xs text-status-error mr-3\">{resolveError.message}</span>}\n <button\n onClick={() => onResolve({ acknowledged: true })}\n disabled={resolvePending}\n className=\"btn-primary text-xs\"\n >\n {resolvePending ? 'Acknowledging...' : 'Acknowledge'}\n </button>\n </div>\n )\n )}\n\n {/* ── Escalate controls ── */}\n {activeView === 'escalate' && (\n <div className=\"flex items-center gap-3\">\n <span className=\"text-xs text-text-secondary\">\n From <span className=\"font-medium text-text-primary\">{currentRole}</span> to\n </span>\n <select\n value={escalateTarget}\n onChange={(e) => setEscalateTarget(e.target.value)}\n className=\"select text-xs\"\n data-testid=\"escalate-select\"\n >\n <option value=\"\">Select role...</option>\n {escalationTargets.map((role) => (\n <option key={role} value={role}>{role}</option>\n ))}\n </select>\n <div className=\"flex-1\" />\n {escalateError && <span className=\"text-xs text-status-error\">{escalateError.message}</span>}\n <button\n onClick={() => onEscalate(escalateTarget)}\n disabled={!escalateTarget || escalatePending}\n className=\"btn-primary text-xs\"\n >\n {escalatePending ? 'Escalating...' : 'Escalate'}\n </button>\n </div>\n )}\n\n {/* ── Release controls ── */}\n {activeView === 'release' && (\n <div className=\"flex items-center gap-3\">\n <span className=\"text-xs text-text-secondary\">Release back to pool?</span>\n <div className=\"flex-1\" />\n <button onClick={() => onActiveViewChange('resolve')} className=\"btn-secondary text-xs\">\n Cancel\n </button>\n <button\n onClick={onRelease}\n disabled={releasePending}\n className=\"btn-primary text-xs bg-status-error hover:bg-status-error/80\"\n >\n {releasePending ? 'Releasing...' : 'Yes, Release'}\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { useState } from 'react';\nimport { Bell, User } from 'lucide-react';\nimport { StatusBadge } from '../../../components/common/display/StatusBadge';\nimport { RolePill } from '../../../components/common/display/RolePill';\nimport { CountdownTimer } from '../../../components/common/display/CountdownTimer';\nimport { Collapsible } from '../../../components/common/layout/Collapsible';\nimport { DateValue } from '../../../components/common/display/DateValue';\nimport { CopyableId } from '../../../components/common/display/CopyableId';\nimport { UserName } from '../../../components/common/display/UserName';\nimport { isAckEscalation } from '../../../lib/escalation';\nimport type { LTEscalationRecord } from '../../../api/types';\n\nexport function EscalationHero({\n esc,\n claimedByMe: _claimedByMe,\n claimed,\n isTerminal,\n traceUrl,\n}: {\n esc: LTEscalationRecord;\n claimedByMe: boolean;\n claimed: boolean;\n isTerminal: boolean;\n traceUrl: string | null;\n}) {\n const [showDetails, setShowDetails] = useState(false);\n const isAck = isAckEscalation(esc);\n\n return (\n <>\n {/* Title */}\n <div className=\"flex items-center gap-3 mb-2\">\n {isAck && <Bell className=\"w-5 h-5 text-text-tertiary shrink-0\" />}\n <p className=\"text-[1.5rem] leading-snug font-light text-text-secondary\">\n {esc.type}{esc.subtype ? ` / ${esc.subtype}` : ''}\n </p>\n </div>\n\n {/* Description */}\n {esc.description && (\n <p className=\"text-sm leading-relaxed text-text-tertiary mb-4\">\n {esc.description}\n </p>\n )}\n\n {/* Meta bar — labeled sections, baseline-aligned values */}\n <div className=\"flex flex-wrap items-end gap-x-6 gap-y-3 mt-4 mb-2\">\n {/* Status */}\n <div>\n <p className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">Status</p>\n <span className=\"mb-1 inline-block\"><StatusBadge status={esc.status} /></span>\n </div>\n\n {/* Role */}\n <div>\n <p className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">Role</p>\n <RolePill role={esc.role} size=\"md\" />\n </div>\n\n {/* Created */}\n <div>\n <p className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">Created</p>\n <span className=\"inline-flex items-center mb-1 text-xs text-text-secondary\">\n <DateValue date={esc.created_at} />\n </span>\n </div>\n\n {/* Claimed by */}\n {esc.assigned_to && (\n <div>\n <p className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">Claimed by</p>\n <span className=\"inline-flex items-center gap-1.5 text-xs font-medium text-text-primary\">\n <User className=\"w-3 h-3 shrink-0 text-accent/75\" />\n <UserName userId={esc.assigned_to} />\n </span>\n </div>\n )}\n\n {/* Time left */}\n {claimed && !isTerminal && esc.assigned_until && (\n <div>\n <p className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">Time left</p>\n <span className=\"inline-flex items-center h-5\"><CountdownTimer until={esc.assigned_until} /></span>\n </div>\n )}\n\n {/* Resolved */}\n {esc.resolved_at && (\n <div>\n <p className=\"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5\">Resolved</p>\n <span className=\"inline-flex items-center h-5 text-xs text-text-secondary\">\n <DateValue date={esc.resolved_at} />\n </span>\n </div>\n )}\n\n {/* Details toggle */}\n <div>\n <button\n onClick={() => setShowDetails(!showDetails)}\n className=\"inline-flex items-center gap-1 h-5 text-xs text-text-tertiary hover:text-accent transition-colors\"\n >\n Details\n <svg\n className={`w-3 h-3 transition-transform duration-200 ${showDetails ? 'rotate-180' : ''}`}\n fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n </div>\n </div>\n\n <Collapsible open={showDetails}>\n <div className=\"mt-4 bg-surface-raised border border-surface-border rounded-md p-4 flex flex-wrap gap-x-8 gap-y-4\">\n <div className=\"text-left\">\n <span className=\"text-[11px] font-medium text-text-secondary uppercase tracking-wide\">Priority</span>\n <p className=\"text-[12px] text-text-primary mt-0.5\">P{esc.priority}</p>\n </div>\n <CopyableId label=\"Escalation ID\" value={esc.id} />\n {esc.task_id && (\n <CopyableId label=\"Task\" value={esc.task_id} href={`/workflows/tasks/detail/${esc.task_id}`} />\n )}\n <CopyableId label=\"Workflow\" value={esc.workflow_type} />\n <CopyableId label=\"Workflow ID\" value={esc.workflow_id} />\n <CopyableId label=\"Task Queue\" value={esc.task_queue} />\n {esc.origin_id && esc.origin_id !== esc.workflow_id && (\n <CopyableId label=\"Origin\" value={esc.origin_id} />\n )}\n {esc.trace_id && (\n <CopyableId\n label=\"Trace\"\n value={esc.trace_id}\n href={traceUrl ? traceUrl.replace('{traceId}', esc.trace_id) : undefined}\n external\n />\n )}\n </div>\n </Collapsible>\n </>\n );\n}\n","import { useState, useEffect, useCallback } from 'react';\n\ntype JsonValue = string | number | boolean | null | JsonValue[] | { [key: string]: JsonValue };\n\n/**\n * Renders a JSON object as an editable form with typed inputs.\n *\n * - Strings → text input (textarea if > 80 chars)\n * - Booleans → toggle switch\n * - Numbers → number input\n * - Null → disabled placeholder\n * - Objects → nested section\n * - Arrays of strings → tag display\n * - Keys starting with `_` → hidden (preserved in output)\n *\n * Calls `onChange` with the full JSON string on every edit.\n */\nexport function ResolverForm({ value, onChange }: {\n value: string;\n onChange: (json: string) => void;\n}) {\n const [data, setData] = useState<Record<string, JsonValue>>({});\n const [hidden, setHidden] = useState<Record<string, JsonValue>>({});\n const [formSchema, setFormSchema] = useState<Record<string, any> | null>(null);\n const [parseError, setParseError] = useState(false);\n\n // Parse incoming JSON\n useEffect(() => {\n try {\n const parsed = JSON.parse(value);\n if (typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)) {\n const visible: Record<string, JsonValue> = {};\n const internal: Record<string, JsonValue> = {};\n for (const [k, v] of Object.entries(parsed)) {\n if (k.startsWith('_')) {\n internal[k] = v as JsonValue;\n } else {\n visible[k] = v as JsonValue;\n }\n }\n setData(visible);\n setHidden(internal);\n setFormSchema(\n internal._form_schema && typeof internal._form_schema === 'object'\n ? internal._form_schema as Record<string, any>\n : null,\n );\n setParseError(false);\n }\n } catch {\n setParseError(true);\n }\n }, [value]);\n\n const emitChange = useCallback((updated: Record<string, JsonValue>) => {\n setData(updated);\n onChange(JSON.stringify({ ...updated, ...hidden }, null, 2));\n }, [hidden, onChange]);\n\n const updateField = useCallback((key: string, val: JsonValue) => {\n emitChange({ ...data, [key]: val });\n }, [data, emitChange]);\n\n if (parseError) {\n return (\n <p className=\"text-xs text-status-error\">\n Unable to parse resolver data as form. Use the JSON editor below.\n </p>\n );\n }\n\n const entries = Object.entries(data);\n if (entries.length === 0) {\n return (\n <p className=\"text-xs text-text-tertiary italic\">\n No resolver fields defined.\n </p>\n );\n }\n\n return (\n <div className=\"space-y-4\">\n {entries.map(([key, val]) => (\n <FieldRow\n key={key}\n fieldKey={key}\n value={val}\n onChange={(v) => updateField(key, v)}\n schema={formSchema}\n />\n ))}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Field row — renders appropriate input per type\n// ---------------------------------------------------------------------------\n\nfunction FieldRow({ fieldKey, value, onChange, schema }: {\n fieldKey: string;\n value: JsonValue;\n onChange: (v: JsonValue) => void;\n schema?: Record<string, any> | null;\n}) {\n const label = fieldKey.replace(/[_-]/g, ' ');\n const fieldSchema = schema?.properties?.[fieldKey] as Record<string, any> | undefined;\n\n // Boolean → checkbox\n if (typeof value === 'boolean') {\n return (\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={value}\n onChange={(e) => onChange(e.target.checked)}\n className=\"w-3.5 h-3.5 rounded accent-accent\"\n />\n <span className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n {label}\n </span>\n </label>\n );\n }\n\n // Number\n if (typeof value === 'number') {\n return (\n <div>\n <FieldLabel>{label}</FieldLabel>\n <input\n type=\"number\"\n value={value}\n onChange={(e) => onChange(parseFloat(e.target.value) || 0)}\n step=\"any\"\n className=\"input text-sm w-full mt-1\"\n />\n </div>\n );\n }\n\n // String\n if (typeof value === 'string') {\n const isPassword = fieldSchema?.format === 'password';\n const enumValues = fieldSchema?.enum as string[] | undefined;\n const helperText = fieldSchema?.description as string | undefined;\n\n if (enumValues?.length) {\n return (\n <div>\n <FieldLabel>{label}</FieldLabel>\n {helperText && <p className=\"text-[10px] text-text-tertiary mt-0.5\">{helperText}</p>}\n <select\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className=\"input text-sm w-full mt-1\"\n >\n {enumValues.map((opt) => (\n <option key={opt} value={opt}>{opt}</option>\n ))}\n </select>\n </div>\n );\n }\n\n if (isPassword) {\n return (\n <div>\n <FieldLabel>{label}</FieldLabel>\n {helperText && <p className=\"text-[10px] text-text-tertiary mt-0.5\">{helperText}</p>}\n <input\n type=\"password\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className=\"input text-sm w-full mt-1\"\n autoComplete=\"off\"\n />\n </div>\n );\n }\n\n if (value.length > 80) {\n return (\n <div>\n <FieldLabel>{label}</FieldLabel>\n {helperText && <p className=\"text-[10px] text-text-tertiary mt-0.5\">{helperText}</p>}\n <textarea\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className=\"input text-sm w-full mt-1 leading-relaxed\"\n rows={Math.min(6, Math.ceil(value.length / 60))}\n />\n </div>\n );\n }\n return (\n <div>\n <FieldLabel>{label}</FieldLabel>\n {helperText && <p className=\"text-[10px] text-text-tertiary mt-0.5\">{helperText}</p>}\n <input\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className=\"input text-sm w-full mt-1\"\n />\n </div>\n );\n }\n\n // Null\n if (value === null) {\n return (\n <div>\n <FieldLabel>{label}</FieldLabel>\n <p className=\"text-xs text-text-tertiary italic mt-1\">null</p>\n </div>\n );\n }\n\n // Array of primitives\n if (Array.isArray(value)) {\n return (\n <div>\n <FieldLabel>{label}</FieldLabel>\n <div className=\"flex flex-wrap gap-1.5 mt-1\">\n {value.map((item, i) => (\n <span\n key={i}\n className=\"px-2 py-0.5 text-[11px] font-mono bg-surface-sunken rounded text-text-secondary\"\n >\n {String(item)}\n </span>\n ))}\n </div>\n </div>\n );\n }\n\n // Nested object → recursive\n if (typeof value === 'object') {\n const entries = Object.entries(value);\n return (\n <div>\n <FieldLabel>{label}</FieldLabel>\n <div className=\"ml-4 mt-2 pl-4 border-l border-accent-faint space-y-3\">\n {entries.map(([k, v]) => (\n <FieldRow\n key={k}\n fieldKey={k}\n value={v}\n onChange={(updated) => onChange({ ...value, [k]: updated })}\n />\n ))}\n </div>\n </div>\n );\n }\n\n return null;\n}\n\nfunction FieldLabel({ children }: { children: React.ReactNode }) {\n return (\n <label className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n {children}\n </label>\n );\n}\n","import { useState } from 'react';\nimport { ResolverForm } from '../../../components/escalation/ResolverForm';\n\nexport function ResolverSection({\n json,\n onJsonChange,\n requestTriage,\n onRequestTriageChange,\n triageNotes,\n onTriageNotesChange,\n}: {\n json: string;\n onJsonChange: (v: string) => void;\n requestTriage: boolean;\n onRequestTriageChange: (v: boolean) => void;\n triageNotes: string;\n onTriageNotesChange: (v: string) => void;\n}) {\n const [resolverView, setResolverView] = useState<'form' | 'json'>('form');\n\n return (\n <>\n {/* Toolbar row: form/JSON toggle + triage callout */}\n <div className=\"flex items-center justify-between mb-3\">\n {requestTriage ? (\n <button\n onClick={() => onRequestTriageChange(false)}\n className=\"group flex items-center gap-2 text-left\"\n data-testid=\"triage-cancel\"\n >\n <span className=\"flex items-center justify-center w-5 h-5 rounded-full bg-accent/10 text-accent shrink-0\">\n <svg className=\"w-3 h-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </span>\n <span className=\"text-xs text-text-secondary group-hover:text-text-primary transition-colors\">\n AI Triage active.{' '}\n <span className=\"text-accent group-hover:underline\">Cancel</span>\n </span>\n </button>\n ) : (\n <button\n onClick={() => onRequestTriageChange(true)}\n className=\"group flex items-center gap-2.5 text-left my-4\"\n data-testid=\"triage-callout\"\n >\n <span className=\"flex items-center justify-center w-6 h-6 rounded-full bg-accent/10 text-accent shrink-0 animate-[triage-glow_6s_ease-in-out_infinite]\">\n <svg className=\"w-3.5 h-3.5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9.663 17h4.674M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\" />\n </svg>\n </span>\n <span className=\"text-[13px] text-text-secondary group-hover:text-text-primary transition-colors\">\n This form doesn&apos;t capture the issue?{' '}\n <span className=\"text-accent group-hover:underline\">Request AI Triage</span>\n </span>\n </button>\n )}\n\n {!requestTriage && (\n <button\n onClick={() => setResolverView(resolverView === 'form' ? 'json' : 'form')}\n className=\"text-[10px] text-text-tertiary hover:text-accent transition-colors\"\n >\n {resolverView === 'form' ? 'Raw JSON' : 'Form'}\n </button>\n )}\n </div>\n\n <div className=\"relative min-h-[200px]\">\n {/* Form controls */}\n <div className={requestTriage ? 'pointer-events-none select-none' : ''}>\n {resolverView === 'form' ? (\n <ResolverForm value={json} onChange={onJsonChange} />\n ) : (\n <textarea\n value={json}\n onChange={(e) => onJsonChange(e.target.value)}\n className=\"input font-mono text-xs w-full\"\n rows={8}\n spellCheck={false}\n data-testid=\"resolve-json\"\n />\n )}\n </div>\n\n {/* Triage overlay — occludes the form when AI Triage is checked */}\n {requestTriage && (\n <div\n className=\"absolute inset-0 z-10 flex flex-col bg-surface/90 backdrop-blur-[2px] rounded-md border border-accent/20 p-5\"\n data-testid=\"triage-overlay\"\n >\n <p className=\"text-xs text-text-secondary mb-3 leading-relaxed\">\n The resolution form will not be submitted. Describe the issue\n so AI triage can diagnose and fix it using available tools.\n The corrected result will come back as a new escalation for\n your review.\n </p>\n <textarea\n value={triageNotes}\n onChange={(e) => onTriageNotesChange(e.target.value)}\n placeholder=\"e.g. Content is in Spanish — needs translation to English before review...\"\n className=\"input text-xs w-full flex-1 min-h-[80px] resize-none\"\n autoFocus\n data-testid=\"triage-notes\"\n />\n </div>\n )}\n </div>\n </>\n );\n}\n","import { useState, useEffect } from 'react';\nimport { useParams, useNavigate, Link } from 'react-router-dom';\nimport { KeyRound } from 'lucide-react';\nimport { useAuth } from '../../../hooks/useAuth';\nimport {\n useEscalation,\n useClaimEscalation,\n useResolveEscalation,\n useEscalateToRole,\n} from '../../../api/escalations';\nimport { useEscalationTargets } from '../../../api/roles';\nimport { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { CollapsibleSection } from '../../../components/common/layout/CollapsibleSection';\nimport { isEffectivelyClaimed } from '../../../lib/escalation';\nimport { useWorkflowConfigs } from '../../../api/workflows';\nimport { useSettings } from '../../../api/settings';\nimport { useEscalationDetailEvents } from '../../../hooks/useEventHooks';\nimport { RoundsExhaustedContext } from '../../../components/escalation/RoundsExhaustedContext';\nimport { TriageContext } from '../../../components/escalation/TriageContext';\nimport { EscalationActionBar } from './EscalationActionBar';\nimport { EscalationHero } from './EscalationHero';\nimport { ResolverSection } from './ResolverSection';\nimport type { ActionBarMode, ActiveView } from './EscalationActionBar';\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction safeParse(value: string | null | undefined): unknown {\n if (!value) return null;\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\nfunction hasTriageData(payload: string | null | undefined): boolean {\n if (!payload) return false;\n try {\n const p = JSON.parse(payload);\n return !!(p && typeof p === 'object' && p._triage);\n } catch { return false; }\n}\n\n// ---------------------------------------------------------------------------\n// Main page\n// ---------------------------------------------------------------------------\n\nexport function EscalationDetailPage() {\n const { id } = useParams<{ id: string }>();\n const { user } = useAuth();\n const navigate = useNavigate();\n const { data: esc, isLoading } = useEscalation(id!);\n useEscalationDetailEvents(id);\n const claim = useClaimEscalation();\n const resolve = useResolveEscalation();\n const escalate = useEscalateToRole();\n const { data: escalationTargets } = useEscalationTargets(esc?.role ?? '');\n const { data: workflowConfigs } = useWorkflowConfigs();\n const { data: settings } = useSettings();\n\n const wfConfig = workflowConfigs?.find((c) => c.workflow_type === esc?.workflow_type);\n const traceUrl = settings?.telemetry?.traceUrl ?? null;\n const [activeView, setActiveView] = useState<ActiveView>('resolve');\n const [json, setJson] = useState('{}');\n\n // Section collapse state\n const [collapsed, setCollapsed] = useState<Record<string, boolean>>({ context: false });\n const toggleSection = (key: string) =>\n setCollapsed((prev) => ({ ...prev, [key]: !prev[key] }));\n\n const [requestTriage, setRequestTriage] = useState(false);\n const [triageNotes, setTriageNotes] = useState('');\n const resolverSchema = wfConfig?.resolver_schema ?? null;\n const metadataFormSchema = (esc?.metadata as any)?.form_schema ?? null;\n const effectiveSchema = metadataFormSchema ?? resolverSchema;\n useEffect(() => {\n // Build typed form from schema with `properties` (escalation or workflow config)\n const formSchema = metadataFormSchema ?? (resolverSchema?.properties ? resolverSchema : null);\n if (formSchema?.properties) {\n const initial: Record<string, any> = { _form_schema: formSchema };\n for (const [key, def] of Object.entries(formSchema.properties)) {\n const fieldDef = def as Record<string, any>;\n initial[key] = fieldDef.default ?? '';\n }\n setJson(JSON.stringify(initial, null, 2));\n } else {\n setJson(effectiveSchema ? JSON.stringify(effectiveSchema, null, 2) : '{}');\n }\n }, [effectiveSchema, metadataFormSchema, resolverSchema]);\n\n // When triage or rounds-exhausted data is present, collapse Input/Output so structured context is central\n const hasTriage = hasTriageData(esc?.escalation_payload);\n const isRoundsExhausted = esc?.subtype === 'rounds_exhausted';\n const isWaitForHuman = esc?.subtype === 'wait_for_human';\n useEffect(() => {\n if (hasTriage || isRoundsExhausted) {\n setCollapsed((prev) => ({ ...prev, context: true }));\n }\n // waitFor escalations: auto-expand resolver, collapse context\n if (isWaitForHuman && metadataFormSchema) {\n setCollapsed((prev) => ({ ...prev, context: true, resolver: false }));\n }\n }, [hasTriage, isRoundsExhausted, isWaitForHuman, metadataFormSchema]);\n\n if (isLoading) {\n return (\n <div className=\"animate-pulse space-y-8\">\n <div className=\"h-8 bg-surface-sunken rounded w-64\" />\n <div className=\"h-32 bg-surface-sunken rounded w-full\" />\n </div>\n );\n }\n\n if (!esc) {\n return <p className=\"text-sm text-text-secondary\">Escalation not found.</p>;\n }\n\n const claimed = isEffectivelyClaimed(esc);\n const claimedByMe = claimed && esc.assigned_to === user?.userId;\n const claimedByOther = claimed && !claimedByMe;\n const isTerminal = esc.status === 'resolved' || esc.status === 'cancelled';\n\n const escalationPayload = safeParse(esc.escalation_payload);\n const resolverPayload = safeParse(esc.resolver_payload);\n\n // Detect triage context in escalation payload\n const payloadObj = (typeof escalationPayload === 'object' && escalationPayload !== null && !Array.isArray(escalationPayload))\n ? escalationPayload as Record<string, unknown>\n : null;\n const triageData = payloadObj?._triage as Record<string, unknown> | undefined;\n\n // Derive action bar mode\n const actionBarMode: ActionBarMode = isTerminal\n ? 'terminal'\n : claimedByMe\n ? 'claimed_by_me'\n : claimedByOther\n ? 'claimed_by_other'\n : 'available';\n\n const handleClaim = (durationMinutes: number) => {\n claim.mutate({ id: esc.id, durationMinutes });\n setCollapsed({ context: true, triage: true, resolver: false });\n };\n\n const goBack = () => navigate(-1);\n\n const handleResolve = async (payload: Record<string, unknown>) => {\n await resolve.mutateAsync({ id: esc.id, resolverPayload: payload });\n goBack();\n };\n\n const handleEscalate = async (targetRole: string) => {\n if (!targetRole) return;\n await escalate.mutateAsync({ id: esc.id, targetRole });\n goBack();\n };\n\n const handleRetryTriage = async () => {\n if (!claimedByMe) {\n await claim.mutateAsync({ id: esc.id, durationMinutes: 30 });\n }\n const diagnosis = (payloadObj?.diagnosis as string) || esc.description || '';\n await resolve.mutateAsync({\n id: esc.id,\n resolverPayload: { _lt: { needsTriage: true }, notes: diagnosis },\n });\n goBack();\n };\n\n const handleRelease = async () => {\n await claim.mutateAsync({ id: esc.id, durationMinutes: 0 });\n goBack();\n };\n\n return (\n <div className=\"min-h-[calc(100vh-9rem)] flex flex-col\">\n <PageHeader title=\"Escalation\" />\n\n <EscalationHero\n esc={esc}\n claimedByMe={claimedByMe}\n claimed={claimed}\n isTerminal={isTerminal}\n traceUrl={traceUrl}\n />\n\n {/* Rounds-exhausted structured context */}\n {isRoundsExhausted && payloadObj && (\n <div className=\"mt-8\">\n <RoundsExhaustedContext\n payload={payloadObj}\n isTerminal={isTerminal}\n resolverPayload={resolverPayload as Record<string, unknown> | null}\n onRetryTriage={handleRetryTriage}\n isRetrying={claim.isPending || resolve.isPending}\n />\n </div>\n )}\n\n {/* Missing credential context */}\n {payloadObj?.category === 'missing_credential' && (\n <div className=\"mt-8 bg-status-warning/10 border border-status-warning/30 rounded-md px-5 py-4 flex items-start gap-3\">\n <KeyRound size={20} className=\"text-status-warning mt-0.5 shrink-0\" />\n <div>\n <p className=\"text-sm font-medium text-text-primary mb-1\">Missing Credential</p>\n <p className=\"text-xs text-text-secondary mb-3\">\n This workflow requires a <span className=\"font-medium capitalize\">{String(payloadObj.provider)}</span> credential\n to continue. Register one and then resolve this escalation to retry.\n </p>\n <Link\n to=\"/credentials\"\n className=\"btn-primary text-xs inline-flex items-center gap-1.5\"\n >\n <KeyRound size={12} />\n Go to Credentials\n </Link>\n </div>\n </div>\n )}\n\n {/* Collapsible sections */}\n <div className=\"mt-8 space-y-6\">\n\n {/* Input/Output */}\n <CollapsibleSection\n title=\"Input / Output\"\n sectionKey=\"context\"\n isCollapsed={collapsed.context ?? true}\n onToggle={toggleSection}\n contentClassName=\"mt-4 ml-9\"\n >\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {esc.envelope && (\n <div>\n <JsonViewer data={esc.envelope} label=\"Input Envelope\" />\n </div>\n )}\n {escalationPayload != null && (\n <div>\n <JsonViewer data={escalationPayload} label=\"Escalation Context\" />\n </div>\n )}\n </div>\n\n {resolverPayload != null && (\n <div className=\"max-w-xl\">\n <JsonViewer data={resolverPayload} label=\"Resolver Payload\" />\n </div>\n )}\n </div>\n </CollapsibleSection>\n\n {/* Triage context — only when present */}\n {triageData && payloadObj && (\n <CollapsibleSection\n title=\"AI Triage\"\n sectionKey=\"triage\"\n isCollapsed={!!collapsed.triage}\n onToggle={toggleSection}\n contentClassName=\"mt-4 ml-9\"\n >\n <TriageContext triage={triageData} payload={payloadObj} />\n </CollapsibleSection>\n )}\n\n {/* Resolver form — when claimed and resolving */}\n {!isTerminal && claimedByMe && activeView === 'resolve' && (esc.workflow_type || metadataFormSchema) && (\n <CollapsibleSection\n title=\"Submit Your Resolution\"\n sectionKey=\"resolver\"\n isCollapsed={!!collapsed.resolver}\n onToggle={toggleSection}\n contentClassName=\"mt-4 ml-9\"\n >\n <ResolverSection\n json={json}\n onJsonChange={setJson}\n requestTriage={requestTriage}\n onRequestTriageChange={setRequestTriage}\n triageNotes={triageNotes}\n onTriageNotesChange={setTriageNotes}\n />\n </CollapsibleSection>\n )}\n </div>\n\n <div className=\"flex-1\" />\n\n <EscalationActionBar\n mode={actionBarMode}\n activeView={activeView}\n onActiveViewChange={setActiveView}\n onClaim={handleClaim}\n claimPending={claim.isPending}\n workflowType={esc.workflow_type}\n json={json}\n onResolve={handleResolve}\n resolvePending={resolve.isPending}\n resolveError={resolve.error as Error | null}\n requestTriage={requestTriage}\n triageNotes={triageNotes}\n currentRole={esc.role}\n escalationTargets={escalationTargets?.targets ?? []}\n onEscalate={handleEscalate}\n escalatePending={escalate.isPending}\n escalateError={escalate.error as Error | null}\n onRelease={handleRelease}\n releasePending={claim.isPending}\n assignedTo={esc.assigned_to}\n assignedUntil={esc.assigned_until}\n />\n </div>\n );\n}\n"],"names":["renderInline","text","SimpleMarkdown","content","compact","segments","fencePattern","lastIndex","match","sizeClasses","allParts","segment","escaped","renderTextBlock","jsxDEV","sz","lines","htmlParts","inList","inTable","tableRows","line","trimmed","cells","c","header","body","row","cell","h","SectionLabel","children","RoundsExhaustedContext","payload","isTerminal","resolverPayload","onRetryTriage","isRetrying","title","summary","diagnosis","toolCalls","result","ltMeta","wasTriaged","triageWorkflowId","isResolvedByTriage","showResult","setShowResult","useState","Link","JsonViewer","TriageContext","triage","confidence","confidenceColor","diffs","computeDiffs","action","i","diff","DiffRow","original","current","key","origVal","currVal","origStr","renderValue","corrStr","val","EscalationActionBar","props","mode","activeView","onActiveViewChange","onClaim","claimPending","workflowType","json","onResolve","resolvePending","resolveError","requestTriage","triageNotes","currentRole","escalationTargets","onEscalate","escalatePending","escalateError","onRelease","releasePending","assignedTo","assignedUntil","claimDurations","useClaimDurations","duration","setDuration","customMinutes","setCustomMinutes","parseError","setParseError","escalateTarget","setEscalateTarget","isCustom","onCustomChange","useCallback","m","handleClaim","minutes","handleSubmitResolve","tabClass","active","opt","CustomDurationPicker","UserName","CountdownTimer","e","role","EscalationHero","esc","_claimedByMe","claimed","traceUrl","showDetails","setShowDetails","isAck","isAckEscalation","Fragment","Bell","StatusBadge","RolePill","DateValue","User","Collapsible","CopyableId","ResolverForm","value","onChange","data","setData","hidden","setHidden","formSchema","setFormSchema","useEffect","parsed","visible","internal","k","v","emitChange","updated","updateField","entries","FieldRow","fieldKey","schema","label","fieldSchema","_a","FieldLabel","isPassword","enumValues","helperText","item","ResolverSection","onJsonChange","onRequestTriageChange","onTriageNotesChange","resolverView","setResolverView","safeParse","hasTriageData","p","EscalationDetailPage","id","useParams","user","useAuth","navigate","useNavigate","isLoading","useEscalation","useEscalationDetailEvents","claim","useClaimEscalation","resolve","useResolveEscalation","escalate","useEscalateToRole","useEscalationTargets","workflowConfigs","useWorkflowConfigs","settings","useSettings","wfConfig","setActiveView","setJson","collapsed","setCollapsed","toggleSection","prev","setRequestTriage","setTriageNotes","resolverSchema","metadataFormSchema","_b","effectiveSchema","initial","def","fieldDef","hasTriage","isRoundsExhausted","isWaitForHuman","isEffectivelyClaimed","claimedByMe","claimedByOther","escalationPayload","payloadObj","triageData","actionBarMode","durationMinutes","goBack","handleResolve","handleEscalate","targetRole","handleRetryTriage","handleRelease","PageHeader","KeyRound","CollapsibleSection"],"mappings":"05BAKA,SAASA,EAAaC,EAAsB,CAC1C,OAAOA,EAEJ,QAAQ,aAAc,iFAAiF,EAEvG,QAAQ,qBAAsB,8BAA8B,EAE5D,QAAQ,iBAAkB,qBAAqB,EAE/C,QAAQ,aAAc,aAAa,EAEnC,QAAQ,2BAA4B,2GAA2G,CACpJ,CAEO,SAASC,EAAe,CAAE,QAAAC,EAAS,QAAAC,GAAmD,CAE3F,MAAMC,EAAiG,CAAA,EACjGC,EAAe,+BACrB,IAAIC,EAAY,EACZC,EACJ,MAAQA,EAAQF,EAAa,KAAKH,CAAO,KAAO,MAC1CK,EAAM,MAAQD,GAChBF,EAAS,KAAK,CAAE,KAAM,OAAQ,KAAMF,EAAQ,MAAMI,EAAWC,EAAM,KAAK,CAAA,CAAG,EAE7EH,EAAS,KAAK,CAAE,KAAM,OAAQ,KAAMG,EAAM,CAAC,EAAG,KAAMA,EAAM,CAAC,EAAE,QAAQ,MAAO,EAAE,EAAG,EACjFD,EAAYC,EAAM,MAAQA,EAAM,CAAC,EAAE,OAEjCD,EAAYJ,EAAQ,QACtBE,EAAS,KAAK,CAAE,KAAM,OAAQ,KAAMF,EAAQ,MAAMI,CAAS,EAAG,EAGhE,MAAME,EAAcL,EAChB,CAAE,KAAM,UAAW,QAAS,UAAW,KAAM,UAAW,KAAM,eAC9D,CAAE,KAAM,UAAW,QAAS,UAAW,KAAM,UAAW,KAAM,SAAA,EAE5DM,EAAqB,CAAA,EAC3B,UAAWC,KAAWN,EAAU,CAC9B,GAAIM,EAAQ,OAAS,OAAQ,CAC3B,MAAMC,EAAUD,EAAQ,KAAK,QAAQ,KAAM,OAAO,EAAE,QAAQ,KAAM,MAAM,EAAE,QAAQ,KAAM,MAAM,EAC9FD,EAAS,KACP,qFAAqFD,EAAY,IAAI,mDAAmDG,CAAO,eAAA,EAEjK,QACF,CACAF,EAAS,KAAK,GAAGG,GAAgBF,EAAQ,KAAMF,CAAW,CAAC,CAC7D,CAEA,OACEK,EAAAA,OAAC,MAAA,CACC,UAAU,WACV,wBAAyB,CAAE,OAAQJ,EAAS,KAAK;AAAA,CAAI,CAAA,CAAE,EAFzD,OAAA,GAAA,CAAA,SAAA,kEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,CAKJ,CAEA,SAASG,GACPZ,EACAc,EACU,CACV,MAAMC,EAAQf,EAAK,MAAM;AAAA,CAAI,EACvBgB,EAAsB,CAAA,EAC5B,IAAIC,EAAS,GACTC,EAAU,GACVC,EAAwB,CAAA,EAE5B,UAAWC,KAAQL,EAAO,CACxB,MAAMM,EAAUD,EAAK,KAAA,EAGrB,GAAIC,EAAQ,WAAW,GAAG,GAAKA,EAAQ,SAAS,GAAG,EAAG,CACpD,MAAMC,EAAQD,EAAQ,MAAM,EAAG,EAAE,EAAE,MAAM,GAAG,EAAE,IAAKE,GAAMA,EAAE,MAAM,EAEjE,GAAID,EAAM,MAAOC,GAAM,UAAU,KAAKA,CAAC,CAAC,EAAG,SACtCL,IACHA,EAAU,GACVC,EAAY,CAAA,GAEdA,EAAU,KAAKG,CAAK,EACpB,QACF,CACA,GAAIJ,EAAS,CACXA,EAAU,GACV,KAAM,CAACM,EAAQ,GAAGC,CAAI,EAAIN,EAC1BH,EAAU,KAAK,6EAA6E,EAC5F,UAAW,KAAKQ,EACdR,EAAU,KAAK,0FAA0FjB,EAAa,CAAC,CAAC,OAAO,EAEjIiB,EAAU,KAAK,sBAAsB,EACrC,UAAWU,KAAOD,EAAM,CACtBT,EAAU,KAAK,MAAM,EACrB,UAAWW,KAAQD,EACjBV,EAAU,KAAK,mDAAmDjB,EAAa4B,CAAI,CAAC,OAAO,EAE7FX,EAAU,KAAK,OAAO,CACxB,CACAA,EAAU,KAAK,wBAAwB,EACvCG,EAAY,CAAA,CACd,CAGA,GAAI,CAACE,EAAS,CACRJ,IAAUD,EAAU,KAAK,OAAO,EAAGC,EAAS,IAChD,QACF,CAGA,GAAII,EAAQ,WAAW,MAAM,EAAG,CAC1BJ,IAAUD,EAAU,KAAK,OAAO,EAAGC,EAAS,IAChDD,EAAU,KAAK,cAAcF,EAAG,OAAO,+CAA+Cf,EAAasB,EAAQ,MAAM,CAAC,CAAC,CAAC,OAAO,EAC3H,QACF,CACA,GAAIA,EAAQ,WAAW,KAAK,EAAG,CACzBJ,IAAUD,EAAU,KAAK,OAAO,EAAGC,EAAS,IAChDD,EAAU,KAAK,cAAcF,EAAG,OAAO,+CAA+Cf,EAAasB,EAAQ,MAAM,CAAC,CAAC,CAAC,OAAO,EAC3H,QACF,CAGA,GAAI,cAAc,KAAKA,CAAO,EAAG,CAC3BJ,IAAUD,EAAU,KAAK,OAAO,EAAGC,EAAS,IAChDD,EAAU,KAAK,mCAAmC,EAClD,QACF,CAGA,GAAI,SAAS,KAAKK,CAAO,EAAG,CACrBJ,IAAUD,EAAU,KAAK,6BAA6B,EAAGC,EAAS,IACvED,EAAU,KAAK,cAAcF,EAAG,IAAI,4FAA4Ff,EAAasB,EAAQ,MAAM,CAAC,CAAC,CAAC,cAAc,EAC5K,QACF,CAGIJ,IAAUD,EAAU,KAAK,OAAO,EAAGC,EAAS,IAChDD,EAAU,KAAK,aAAaF,EAAG,IAAI,8BAA8Bf,EAAasB,CAAO,CAAC,MAAM,CAC9F,CAGA,GAAIH,GAAWC,EAAU,OAAQ,CAC/B,KAAM,CAACK,EAAQ,GAAGC,CAAI,EAAIN,EAC1BH,EAAU,KAAK,6EAA6E,EAC5F,UAAWY,KAAKJ,EACdR,EAAU,KAAK,0FAA0FjB,EAAa6B,CAAC,CAAC,OAAO,EAEjIZ,EAAU,KAAK,sBAAsB,EACrC,UAAWU,KAAOD,EAAM,CACtBT,EAAU,KAAK,MAAM,EACrB,UAAWW,KAAQD,EACjBV,EAAU,KAAK,mDAAmDjB,EAAa4B,CAAI,CAAC,OAAO,EAE7FX,EAAU,KAAK,OAAO,CACxB,CACAA,EAAU,KAAK,wBAAwB,CACzC,CAEA,OAAIC,GAAQD,EAAU,KAAK,OAAO,EAE3BA,CACT,CCpJA,SAASa,EAAa,CAAE,SAAAC,GAA2C,CACjE,OACEjB,EAAAA,OAAC,IAAA,CAAE,UAAU,gFAAiF,SAAAiB,CAAA,EAA9F,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAuG,CAE3G,CAEO,SAASC,GAAuB,CAAE,QAAAC,EAAS,WAAAC,EAAY,gBAAAC,EAAiB,cAAAC,EAAe,WAAAC,GAA2C,CACvI,MAAMC,EAAQL,EAAQ,MAChBM,EAAUN,EAAQ,QAClBO,EAAYP,EAAQ,UACpBQ,EAAYR,EAAQ,gBACpBS,EAAST,EAAQ,OAGjBU,EAASR,GAAA,YAAAA,EAAiB,IAC1BS,GAAaD,GAAA,YAAAA,EAAQ,WAAY,GACjCE,EAAmBF,GAAA,YAAAA,EAAQ,iBAC3BG,EAAqBZ,GAAcU,EAEnC,CAACG,EAAYC,CAAa,EAAIC,EAAAA,SAAS,EAAK,EAGlD,OAAIH,EAEAhC,EAAAA,OAAC,MAAA,CAAI,UAAU,+DAEb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,6EACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,uCAAuC,QAAQ,YAAY,KAAK,eAC7E,SAAAA,EAAAA,OAAC,OAAA,CAAK,EAAE,iIAAA,EAAR,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA0I,CAAA,EAD5I,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,EACAA,SAAC,OAAA,CAAK,UAAU,0CAA0C,SAAA,uBAAA,EAA1D,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA+E,CAAA,CAAA,EAJjF,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAKA,EACC,OAAO2B,GAAc,UACpB3B,EAAAA,OAAC,OAAA,CAAK,UAAU,0FACb,SAAA,CAAA2B,EAAU,kBAAA,CAAA,EADb,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAVJ,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAYA,EAGA3B,EAAAA,OAAC,MAAA,CAAI,UAAU,sBACZ,SAAA,CAAAwB,GACCxB,EAAAA,OAAC,IAAA,CAAE,UAAU,wCAAyC,SAAAwB,CAAA,EAAtD,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA4D,EAG7DE,YACE,MAAA,CACC,SAAA,CAAA1B,EAAAA,OAACgB,GAAa,SAAA,kBAAA,EAAd,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA8B,WAC7B,MAAA,CAAI,UAAU,4CACb,SAAAhB,EAAAA,OAACZ,EAAA,CAAe,QAASsC,GAAzB,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAoC,CAAA,EADtC,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAJF,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAKA,EAGF1B,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACZ,SAAA+B,GACC/B,EAAAA,OAACoC,GAAA,CACC,GAAI,yBAAyBL,CAAgB,GAC7C,UAAU,0CACX,SAAA,uBAAA,EAHD,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAKA,EAPJ,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IASA,CAAA,CAAA,EAvBF,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAwBA,CAAA,CAAA,EAzCF,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IA0CA,EAMF/B,EAAAA,OAAC,MAAA,CAAI,UAAU,+DAEb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,6EACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,uCAAuC,QAAQ,YAAY,KAAK,eAC7E,SAAAA,EAAAA,OAAC,OAAA,CAAK,EAAE,uIAAA,EAAR,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAgJ,CAAA,EADlJ,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,EACAA,SAAC,OAAA,CAAK,UAAU,0CAA0C,SAAA,uBAAA,EAA1D,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA+E,CAAA,CAAA,EAJjF,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAKA,EACC,OAAO2B,GAAc,UACpB3B,EAAAA,OAAC,OAAA,CAAK,UAAU,0FACb,SAAA,CAAA2B,EAAU,kBAAA,CAAA,EADb,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAVJ,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAYA,EAGA3B,EAAAA,OAAC,MAAA,CAAI,UAAU,sBACZ,SAAA,CAAAwB,GACCxB,EAAAA,OAAC,IAAA,CAAE,UAAU,wCAAyC,SAAAwB,CAAA,EAAtD,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA4D,EAG7DC,YACE,MAAA,CACC,SAAA,CAAAzB,EAAAA,OAACgB,GAAa,SAAA,eAAA,EAAd,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA2B,WAC1B,MAAA,CAAI,UAAU,8CACb,SAAAhB,EAAAA,OAACZ,EAAA,CAAe,QAASqC,GAAzB,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAkC,CAAA,EADpC,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAJF,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAKA,EAGDC,YACE,MAAA,CACC,SAAA,CAAA1B,EAAAA,OAACgB,GAAa,SAAA,iBAAA,EAAd,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA6B,WAC5B,MAAA,CAAI,UAAU,4CACb,SAAAhB,EAAAA,OAACZ,EAAA,CAAe,QAASsC,GAAzB,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAoC,CAAA,EADtC,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAJF,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAKA,EAGDE,GAAU,MACT5B,EAAAA,OAAC,MAAA,CACC,SAAA,CAAAA,EAAAA,OAAC,SAAA,CACC,QAAS,IAAMkC,EAAc,CAACD,CAAU,EACxC,UAAU,6IAEV,SAAA,CAAAjC,SAAC,MAAA,CAAI,UAAW,gCAAgCiC,EAAa,YAAc,EAAE,GAAI,QAAQ,YAAY,KAAK,eACxG,SAAAjC,SAAC,OAAA,CAAK,EAAE,gBAAA,EAAR,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyB,CAAA,EAD3B,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EAAM,iBAAA,CAAA,EANR,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EASCiC,GACCjC,EAAAA,OAAC,MAAA,CAAI,UAAU,OACb,kBAACqC,EAAA,CAAW,KAAMT,EAAQ,YAAY,MAAA,EAAtC,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA6C,CAAA,EAD/C,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAbJ,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAeA,EAGDN,GAAiB,CAACF,GACjBpB,SAAC,MAAA,CAAI,UAAU,OACb,SAAAA,EAAAA,OAAC,SAAA,CACC,QAASsB,EACT,SAAUC,EACV,UAAU,2LAEV,SAAA,CAAAvB,EAAAA,OAAC,MAAA,CAAI,UAAU,cAAc,QAAQ,YAAY,KAAK,eACpD,SAAAA,EAAAA,OAAC,OAAA,CAAK,EAAE,0DAAA,EAAR,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmE,CAAA,EADrE,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACCuB,EAAa,uBAAyB,sBAAA,CAAA,EARzC,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CASA,EAVF,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAWA,CAAA,CAAA,EAtDJ,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAwDA,CAAA,CAAA,EAzEF,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IA0EA,CAEJ,CC/IO,SAASe,GAAc,CAAE,OAAAC,EAAQ,QAAApB,GAGrC,CACD,MAAMqB,EAAaD,EAAO,YAAc,EAClCE,EACJD,GAAc,GAAM,sBACpBA,GAAc,GAAM,sBACpB,oBAGIE,EAAQC,GAAaJ,EAAO,aAAcpB,CAAO,EAEvD,OACEnB,EAAAA,OAAC,MAAA,CAAI,UAAU,YAEZ,SAAA,CAAAuC,EAAO,WACNvC,SAAC,IAAA,CAAE,UAAU,4CACV,WAAO,WADV,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EAGFA,EAAAA,OAAC,MAAA,CAAI,UAAU,+DACZ,SAAA,CAAAuC,EAAO,iBAAmB,MACzBvC,EAAAA,OAAC,OAAA,CAAM,SAAA,CAAAuC,EAAO,gBAAgB,aAAWA,EAAO,kBAAoB,EAAI,IAAM,EAAA,CAAA,EAA9E,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAiF,EAElFA,EAAO,iBAAmB,eAAS,OAAA,CAAK,UAAU,uBAAuB,SAAA,KAAvC,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA+C,EAClFvC,EAAAA,OAAC,OAAA,CAAK,UAAW,eAAeyC,CAAe,GAC5C,SAAA,CAAA,KAAK,MAAMD,EAAa,GAAG,EAAE,cAAA,CAAA,EADhC,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,CAAA,CAAA,EAPF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAQA,EAECD,EAAO,eAAiBA,EAAO,cAAc,OAAS,GACrDvC,EAAAA,OAAC,MAAA,CAAI,UAAU,yBACZ,SAAAuC,EAAO,cAAc,IAAI,CAACK,EAAQC,IACjC7C,EAAAA,OAAC,OAAA,CAEC,UAAU;AAAA,8CAGV,SAAA,CAAAA,EAAAA,OAAC,OAAI,UAAU,uCAAuC,KAAK,OAAO,QAAQ,YAAY,OAAO,eAAe,YAAa,IACvH,kBAAC,OAAA,CAAK,cAAc,QAAQ,eAAe,QAAQ,EAAE,kBAArD,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAsE,CAAA,EADxE,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,EACC4C,CAAA,CAAA,EAPIC,EADP,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAUD,CAAA,EAZH,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAaA,EAGDN,EAAO,gBACNvC,SAAC,KAAE,UAAU,wCACV,WAAO,gBADV,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EAID0C,EAAM,OAAS,GACd1C,EAAAA,OAAC,OAAI,UAAU,iBACZ,SAAA0C,EAAM,IAAKI,GACV9C,EAAAA,OAAC+C,GAAA,CAAuB,KAAAD,GAAVA,EAAK,IAAnB,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAoC,CACrC,GAHH,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAIA,CAAA,CAAA,EA/CJ,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAiDA,CAEJ,CAMA,SAASH,GACPK,EACAC,EACQ,CACR,GAAI,CAACD,EAAU,MAAO,CAAA,EAEtB,MAAMN,EAAgB,CAAA,EACtB,UAAWQ,KAAO,OAAO,KAAKF,CAAQ,EAAG,CACvC,GAAIE,EAAI,WAAW,GAAG,EAAG,SACzB,MAAMC,EAAUH,EAASE,CAAG,EACtBE,EAAUH,EAAQC,CAAG,EACvBE,IAAY,QAEZ,KAAK,UAAUD,CAAO,IAAM,KAAK,UAAUC,CAAO,GACpDV,EAAM,KAAK,CACT,IAAAQ,EACA,MAAOA,EAAI,QAAQ,QAAS,GAAG,EAC/B,SAAUC,EACV,UAAWC,CAAA,CACZ,CAEL,CACA,OAAOV,CACT,CAMA,SAASK,GAAQ,CAAE,KAAAD,GAAwB,CACzC,MAAMO,EAAUC,GAAYR,EAAK,QAAQ,EACnCS,EAAUD,GAAYR,EAAK,SAAS,EAG1C,OAAIO,IAAY,MAAQE,IAAY,KAEhCvD,EAAAA,OAAC,MAAA,CAAI,UAAU,kDACb,SAAA,CAAAA,SAAC,MAAA,CACC,SAAA,CAAAA,EAAAA,OAAC,IAAA,CAAE,UAAU,8EACV,SAAA,CAAA8C,EAAK,MAAM,IAAC9C,SAAC,OAAA,CAAK,UAAU,0BAA0B,SAAA,YAAA,EAA1C,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAoD,CAAA,CAAA,EADnE,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACAA,SAAC,IAAA,CAAE,UAAU,sFACV,SAAAqD,CAAA,EADH,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EANF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAOA,WACC,MAAA,CACC,SAAA,CAAArD,EAAAA,OAAC,IAAA,CAAE,UAAU,8EACV,SAAA,CAAA8C,EAAK,MAAM,IAAC9C,SAAC,OAAA,CAAK,UAAU,8CAA8C,SAAA,aAAA,EAA9D,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyE,CAAA,CAAA,EADxF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACAA,SAAC,IAAA,CAAE,UAAU,4CACV,SAAAuD,CAAA,EADH,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EANF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAOA,CAAA,CAAA,EAhBF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAiBA,EAMFvD,EAAAA,OAAC,MAAA,CAAI,UAAU,YACb,SAAA,CAAAA,SAAC,MAAA,CACC,SAAA,CAAAA,EAAAA,OAAC,IAAA,CAAE,UAAU,8EACV,SAAA,CAAA8C,EAAK,MAAM,IAAC9C,SAAC,OAAA,CAAK,UAAU,0BAA0B,SAAA,YAAA,EAA1C,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAoD,CAAA,CAAA,EADnE,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAEA,WACC,MAAA,CAAI,UAAU,2EACZ,SAAA,OAAO8C,EAAK,UAAa,SAAW,KAAK,UAAUA,EAAK,SAAU,KAAM,CAAC,EAAI,OAAOA,EAAK,QAAQ,CAAA,EADpG,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAEA,CAAA,CAAA,EANF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAOA,WACC,MAAA,CACC,SAAA,CAAA9C,EAAAA,OAAC,IAAA,CAAE,UAAU,8EACV,SAAA,CAAA8C,EAAK,MAAM,IAAC9C,SAAC,OAAA,CAAK,UAAU,8CAA8C,SAAA,aAAA,EAA9D,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyE,CAAA,CAAA,EADxF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAEA,WACC,MAAA,CAAI,UAAU,0EACZ,SAAA,OAAO8C,EAAK,WAAc,SAAW,KAAK,UAAUA,EAAK,UAAW,KAAM,CAAC,EAAI,OAAOA,EAAK,SAAS,CAAA,EADvG,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAEA,CAAA,CAAA,EANF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAOA,CAAA,CAAA,EAhBF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAiBA,CAEJ,CAGA,SAASQ,GAAYE,EAA6B,CAChD,OAAIA,GAAQ,KAAkC,OAC1C,OAAOA,GAAQ,SAAiBA,EAChC,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,UAAkB,OAAOA,CAAG,EACnE,IACT,CC3HO,SAASC,GAAoBC,EAAiC,CACnE,KAAM,CACJ,KAAAC,EAAM,WAAAC,EAAY,mBAAAC,EAClB,QAAAC,EAAS,aAAAC,EACT,aAAAC,EAAc,KAAAC,EAAM,UAAAC,EAAW,eAAAC,EAAgB,aAAAC,EAC/C,cAAAC,EAAe,YAAAC,EACf,YAAAC,EAAa,kBAAAC,EAAmB,WAAAC,EAAY,gBAAAC,EAAiB,cAAAC,EAC7D,UAAAC,EAAW,eAAAC,EACX,WAAAC,EAAY,cAAAC,CAAA,EACVrB,EAEEsB,EAAiBC,GAAA,EACjB,CAACC,EAAUC,CAAW,EAAIhD,EAAAA,SAAS,IAAI,EACvC,CAACiD,EAAeC,CAAgB,EAAIlD,EAAAA,SAAS,CAAC,EAC9C,CAACmD,EAAYC,CAAa,EAAIpD,EAAAA,SAAS,EAAE,EACzC,CAACqD,EAAgBC,CAAiB,EAAItD,EAAAA,SAAS,EAAE,EAEjDuD,EAAWR,IAAa,SACxBS,EAAiBC,EAAAA,YAAaC,GAAcR,EAAiBQ,CAAC,EAAG,EAAE,EAEzE,GAAIlC,IAAS,WAAY,OAAO,KAEhC,MAAMmC,EAAc,IAAM,CACxB,MAAMC,EAAUL,EAAWN,EAAgB,SAASF,CAAQ,EACxD,CAACa,GAAWA,GAAW,GAC3BjC,EAAQiC,CAAO,CACjB,EAEMC,EAAsB,IAAM,CAOhC,GANAT,EAAc,EAAE,EAMZlB,EAAe,CACjB,MAAMlD,EAAmC,CACvC,IAAK,CAAE,YAAa,EAAA,CAAK,EAEvBmD,EAAY,KAAA,IAAQnD,EAAQ,MAAQmD,EAAY,KAAA,GACpDJ,EAAU/C,CAAO,EACjB,MACF,CAEA,IAAIA,EACJ,GAAI,CACFA,EAAU,KAAK,MAAM8C,CAAI,CAC3B,MAAQ,CACNsB,EAAc,cAAc,EAC5B,MACF,CACArB,EAAU/C,CAAO,CACnB,EAEM8E,EAAYC,GAChB,6BAA6BA,EAAS,0BAA4B,sCAAsC,GAE1G,OACElG,SAAC,MAAA,CAAI,UAAU,4GAA4G,MAAO,CAAE,OAAQ,qCAAA,EAAyC,cAAY,wBAG5L,SAAA,CAAA2D,IAAS,aACR3D,SAAC,MAAA,CAAI,cAAY,YAEf,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,+BACZ,SAAA,CAAAgF,EAAe,IAAKmB,GACnBnG,EAAAA,OAAC,SAAA,CAEC,QAAS,IAAM,CAAEmF,EAAYgB,EAAI,KAAK,EAAGd,EAAiB,CAAC,CAAG,EAC9D,UAAWY,EAAS,CAACP,GAAYR,IAAaiB,EAAI,KAAK,EAEtD,SAAAA,EAAI,KAAA,EAJAA,EAAI,MADX,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAOD,EACDnG,EAAAA,OAAC,SAAA,CACC,QAAS,IAAMmF,EAAY,QAAQ,EACnC,UAAWc,EAASP,CAAQ,EAC7B,SAAA,OAAA,EAHD,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAKA,CAAA,EAfF,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAgBA,EAEA1F,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,QAAA,EAAf,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAwB,EACvB0F,YACEU,GAAA,CAAqB,SAAUT,EAAgB,QAAO,GAAC,UAAS,IAAjE,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAkE,EAEpE3F,EAAAA,OAAC,SAAA,CACC,QAAS8F,EACT,SAAU/B,GAAiB2B,GAAYN,GAAiB,EACxD,UAAU,sBAET,WAAe,cAAgB,OAAA,EALlC,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAMA,CAAA,EAXF,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAYA,CAAA,CAAA,EAhCF,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAiCA,EAIDzB,IAAS,oBACR3D,EAAAA,OAAC,OAAI,UAAU,0BAA0B,cAAY,oBACnD,SAAA,CAAAA,EAAAA,OAAC,IAAA,CAAE,UAAU,8BAA8B,SAAA,CAAA,cAC9BA,EAAAA,OAAC,QAAK,UAAU,gCAAiC,WAAaA,SAACqG,GAAA,CAAS,OAAQvB,CAAA,EAAlB,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA8B,EAAK,WAAjG,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA2G,CAAA,CAAA,EADxH,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACCC,GAAiB/E,EAAAA,OAACsG,GAAA,CAAe,MAAOvB,CAAA,EAAvB,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAsC,CAAA,CAAA,EAJ1D,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAKA,EAIDpB,IAAS,iBACR3D,SAAC,MAAA,CAAI,cAAY,aAEf,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,+BACb,SAAA,CAAAA,EAAAA,OAAC,SAAA,CACC,QAAS,IAAM6D,EAAmB,SAAS,EAC3C,UAAWoC,EAASrC,IAAe,SAAS,EAE3C,WAAe,UAAY,aAAA,EAJ9B,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAMCY,EAAkB,OAAS,GAC1BxE,EAAAA,OAAC,SAAA,CACC,QAAS,IAAM6D,EAAmB,UAAU,EAC5C,UAAWoC,EAASrC,IAAe,UAAU,EAC9C,SAAA,UAAA,EAHD,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAOF5D,EAAAA,OAAC,SAAA,CACC,QAAS,IAAM6D,EAAmB,SAAS,EAC3C,UAAW,6BAA6BD,IAAe,UAAY,gCAAkC,4CAA4C,GAClJ,SAAA,SAAA,EAHD,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAKA,CAAA,EApBF,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAqBA,EAGCA,IAAe,YACdI,EACEhE,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,QAAA,EAAf,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAwB,EAEvBsF,GAActF,EAAAA,OAAC,OAAA,CAAK,UAAU,4BAA6B,SAAAsF,CAAA,EAA7C,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAwD,EACtElB,GAAgBpE,EAAAA,OAAC,OAAA,CAAK,UAAU,4BAA6B,WAAa,SAA1D,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAkE,EAEnFA,EAAAA,OAAC,SAAA,CACC,QAASgG,EACT,SAAU7B,EACV,UAAU,sBAET,SAAAA,EAAiB,gBAAkBE,EAAgB,iBAAmB,QAAA,EALzE,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAMA,CAAA,EAZF,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAaA,EAEArE,SAAC,MAAA,CAAI,UAAU,oBACb,SAAA,CAAAA,SAAC,OAAA,CAAK,UAAU,8BAA8B,SAAA,uCAAA,EAA9C,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmF,EACnFA,EAAAA,OAAC,MAAA,CAAI,UAAU,QAAA,EAAf,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAwB,EACvBoE,GAAgBpE,EAAAA,OAAC,OAAA,CAAK,UAAU,iCAAkC,WAAa,SAA/D,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAuE,EACxFA,EAAAA,OAAC,SAAA,CACC,QAAS,IAAMkE,EAAU,CAAE,aAAc,GAAM,EAC/C,SAAUC,EACV,UAAU,sBAET,WAAiB,mBAAqB,aAAA,EALzC,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAMA,CAAA,EAVF,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAWA,GAKHP,IAAe,YACd5D,SAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,EAAAA,OAAC,OAAA,CAAK,UAAU,8BAA8B,SAAA,CAAA,QACvCA,SAAC,OAAA,CAAK,UAAU,gCAAiC,SAAAuE,CAAA,EAAjD,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA6D,EAAO,KAAA,CAAA,EAD3E,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACAvE,EAAAA,OAAC,SAAA,CACC,MAAOwF,EACP,SAAWe,GAAMd,EAAkBc,EAAE,OAAO,KAAK,EACjD,UAAU,iBACV,cAAY,kBAEZ,SAAA,CAAAvG,SAAC,SAAA,CAAO,MAAM,GAAG,SAAA,gBAAA,EAAjB,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA+B,EAC9BwE,EAAkB,IAAKgC,YACrB,SAAA,CAAkB,MAAOA,EAAO,SAAAA,GAApBA,EAAb,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAsC,CACvC,CAAA,CAAA,EATH,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAWAxG,EAAAA,OAAC,MAAA,CAAI,UAAU,QAAA,EAAf,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAwB,EACvB2E,GAAiB3E,EAAAA,OAAC,OAAA,CAAK,UAAU,4BAA6B,WAAc,SAA3D,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmE,EACrFA,EAAAA,OAAC,SAAA,CACC,QAAS,IAAMyE,EAAWe,CAAc,EACxC,SAAU,CAACA,GAAkBd,EAC7B,UAAU,sBAET,WAAkB,gBAAkB,UAAA,EALvC,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAMA,CAAA,EAvBF,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAwBA,EAIDd,IAAe,WACd5D,SAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,SAAC,OAAA,CAAK,UAAU,8BAA8B,SAAA,uBAAA,EAA9C,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmE,EACnEA,EAAAA,OAAC,MAAA,CAAI,UAAU,QAAA,EAAf,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAwB,EACxBA,EAAAA,OAAC,UAAO,QAAS,IAAM6D,EAAmB,SAAS,EAAG,UAAU,wBAAwB,SAAA,QAAA,EAAxF,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACA7D,EAAAA,OAAC,SAAA,CACC,QAAS4E,EACT,SAAUC,EACV,UAAU,+DAET,WAAiB,eAAiB,cAAA,EALrC,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAMA,CAAA,EAZF,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAaA,CAAA,CAAA,EAtGJ,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAwGA,CAAA,CAAA,EA5JN,OAAA,GAAA,CAAA,SAAA,8EAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IA8JA,CAEJ,CCnQO,SAAS4B,GAAe,CAC7B,IAAAC,EACA,YAAaC,EACb,QAAAC,EACA,WAAAxF,EACA,SAAAyF,CACF,EAMG,CACD,KAAM,CAACC,EAAaC,CAAc,EAAI5E,EAAAA,SAAS,EAAK,EAC9C6E,EAAQC,GAAgBP,CAAG,EAEjC,OACE1G,EAAAA,OAAAkH,WAAA,CAEE,SAAA,CAAAlH,EAAAA,OAAC,MAAA,CAAI,UAAU,+BACZ,SAAA,CAAAgH,GAAShH,EAAAA,OAACmH,GAAA,CAAK,UAAU,qCAAA,EAAhB,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAsD,EAChEnH,EAAAA,OAAC,IAAA,CAAE,UAAU,4DACV,SAAA,CAAA0G,EAAI,KAAMA,EAAI,QAAU,MAAMA,EAAI,OAAO,GAAK,EAAA,CAAA,EADjD,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,CAAA,CAAA,EAJF,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAKA,EAGCA,EAAI,aACH1G,SAAC,KAAE,UAAU,kDACV,WAAI,aADP,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EAIFA,EAAAA,OAAC,MAAA,CAAI,UAAU,qDAEb,SAAA,CAAAA,SAAC,MAAA,CACC,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,+EAA+E,SAAA,QAAA,EAA5F,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkG,EAClGA,EAAAA,OAAC,QAAK,UAAU,oBAAoB,kBAACoH,GAAA,CAAY,OAAQV,EAAI,MAAA,EAAzB,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAiC,CAAA,EAArE,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAuE,CAAA,CAAA,EAFzE,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,WAGC,MAAA,CACC,SAAA,CAAA1G,SAAC,IAAA,CAAE,UAAU,+EAA+E,SAAA,MAAA,EAA5F,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAgG,WAC/FqH,GAAA,CAAS,KAAMX,EAAI,KAAM,KAAK,IAAA,EAA/B,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAoC,CAAA,CAAA,EAFtC,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,WAGC,MAAA,CACC,SAAA,CAAA1G,SAAC,IAAA,CAAE,UAAU,+EAA+E,SAAA,SAAA,EAA5F,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAmG,EACnGA,EAAAA,OAAC,QAAK,UAAU,4DACd,kBAACsH,EAAA,CAAU,KAAMZ,EAAI,UAAA,EAArB,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAiC,CAAA,EADnC,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAJF,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAKA,EAGCA,EAAI,aACH1G,EAAAA,OAAC,MAAA,CACC,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,+EAA+E,SAAA,YAAA,EAA5F,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAsG,EACtGA,EAAAA,OAAC,OAAA,CAAK,UAAU,yEACd,SAAA,CAAAA,EAAAA,OAACuH,GAAA,CAAK,UAAU,iCAAA,EAAhB,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkD,EAClDvH,EAAAA,OAACqG,GAAA,CAAS,OAAQK,EAAI,WAAA,EAAtB,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAmC,CAAA,CAAA,EAFrC,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAGA,CAAA,CAAA,EALF,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAMA,EAIDE,GAAW,CAACxF,GAAcsF,EAAI,yBAC5B,MAAA,CACC,SAAA,CAAA1G,SAAC,IAAA,CAAE,UAAU,+EAA+E,SAAA,WAAA,EAA5F,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAqG,EACrGA,EAAAA,OAAC,QAAK,UAAU,+BAA+B,kBAACsG,GAAA,CAAe,MAAOI,EAAI,cAAA,EAA3B,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA2C,CAAA,EAA1F,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA4F,CAAA,CAAA,EAF9F,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAGA,EAIDA,EAAI,aACH1G,EAAAA,OAAC,MAAA,CACC,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,+EAA+E,SAAA,UAAA,EAA5F,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAoG,EACpGA,EAAAA,OAAC,QAAK,UAAU,2DACd,kBAACsH,EAAA,CAAU,KAAMZ,EAAI,WAAA,EAArB,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkC,CAAA,EADpC,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAJF,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAKA,WAID,MAAA,CACC,SAAA1G,EAAAA,OAAC,SAAA,CACC,QAAS,IAAM+G,EAAe,CAACD,CAAW,EAC1C,UAAU,oGACX,SAAA,CAAA,UAEC9G,EAAAA,OAAC,MAAA,CACC,UAAW,6CAA6C8G,EAAc,aAAe,EAAE,GACvF,KAAK,OAAO,QAAQ,YAAY,OAAO,eAAe,YAAa,EAEnE,kBAAC,OAAA,CAAK,cAAc,QAAQ,eAAe,QAAQ,EAAE,kBAArD,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAsE,CAAA,EAJxE,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAKA,CAAA,EAVF,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAWA,EAZF,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAaA,CAAA,CAAA,EAhEF,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAiEA,WAECU,GAAA,CAAY,KAAMV,EACjB,SAAA9G,EAAAA,OAAC,MAAA,CAAI,UAAU,oGACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,YACb,SAAA,CAAAA,SAAC,OAAA,CAAK,UAAU,sEAAsE,SAAA,UAAA,EAAtF,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA8F,EAC9FA,EAAAA,OAAC,IAAA,CAAE,UAAU,uCAAuC,SAAA,CAAA,IAAE0G,EAAI,QAAA,CAAA,EAA1D,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmE,CAAA,CAAA,EAFrE,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAGA,WACCe,EAAA,CAAW,MAAM,gBAAgB,MAAOf,EAAI,EAAA,EAA7C,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAiD,EAChDA,EAAI,SACH1G,SAACyH,EAAA,CAAW,MAAM,OAAO,MAAOf,EAAI,QAAS,KAAM,2BAA2BA,EAAI,OAAO,EAAA,EAAzF,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA6F,WAE9Fe,EAAA,CAAW,MAAM,WAAW,MAAOf,EAAI,aAAA,EAAxC,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAuD,WACtDe,EAAA,CAAW,MAAM,cAAc,MAAOf,EAAI,WAAA,EAA3C,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAwD,WACvDe,EAAA,CAAW,MAAM,aAAa,MAAOf,EAAI,UAAA,EAA1C,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAsD,EACrDA,EAAI,WAAaA,EAAI,YAAcA,EAAI,aACtC1G,SAACyH,EAAA,CAAW,MAAM,SAAS,MAAOf,EAAI,SAAA,EAAtC,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAiD,EAElDA,EAAI,UACH1G,EAAAA,OAACyH,EAAA,CACC,MAAM,QACN,MAAOf,EAAI,SACX,KAAMG,EAAWA,EAAS,QAAQ,YAAaH,EAAI,QAAQ,EAAI,OAC/D,SAAQ,EAAA,EAJV,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAKA,CAAA,EArBJ,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAuBA,CAAA,EAxBF,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAyBA,CAAA,CAAA,EA7GF,OAAA,GAAA,CAAA,SAAA,yEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IA8GA,CAEJ,CC5HO,SAASgB,GAAa,CAAE,MAAAC,EAAO,SAAAC,GAGnC,CACD,KAAM,CAACC,EAAMC,CAAO,EAAI3F,EAAAA,SAAoC,CAAA,CAAE,EACxD,CAAC4F,EAAQC,CAAS,EAAI7F,EAAAA,SAAoC,CAAA,CAAE,EAC5D,CAAC8F,EAAYC,CAAa,EAAI/F,EAAAA,SAAqC,IAAI,EACvE,CAACmD,EAAYC,CAAa,EAAIpD,EAAAA,SAAS,EAAK,EAGlDgG,EAAAA,UAAU,IAAM,CACd,GAAI,CACF,MAAMC,EAAS,KAAK,MAAMT,CAAK,EAC/B,GAAI,OAAOS,GAAW,UAAYA,IAAW,MAAQ,CAAC,MAAM,QAAQA,CAAM,EAAG,CAC3E,MAAMC,EAAqC,CAAA,EACrCC,EAAsC,CAAA,EAC5C,SAAW,CAACC,EAAGC,CAAC,IAAK,OAAO,QAAQJ,CAAM,EACpCG,EAAE,WAAW,GAAG,EAClBD,EAASC,CAAC,EAAIC,EAEdH,EAAQE,CAAC,EAAIC,EAGjBV,EAAQO,CAAO,EACfL,EAAUM,CAAQ,EAClBJ,EACEI,EAAS,cAAgB,OAAOA,EAAS,cAAiB,SACtDA,EAAS,aACT,IAAA,EAEN/C,EAAc,EAAK,CACrB,CACF,MAAQ,CACNA,EAAc,EAAI,CACpB,CACF,EAAG,CAACoC,CAAK,CAAC,EAEV,MAAMc,EAAa7C,cAAa8C,GAAuC,CACrEZ,EAAQY,CAAO,EACfd,EAAS,KAAK,UAAU,CAAE,GAAGc,EAAS,GAAGX,CAAA,EAAU,KAAM,CAAC,CAAC,CAC7D,EAAG,CAACA,EAAQH,CAAQ,CAAC,EAEfe,EAAc/C,EAAAA,YAAY,CAAC1C,EAAaM,IAAmB,CAC/DiF,EAAW,CAAE,GAAGZ,EAAM,CAAC3E,CAAG,EAAGM,EAAK,CACpC,EAAG,CAACqE,EAAMY,CAAU,CAAC,EAErB,GAAInD,EACF,OACEtF,EAAAA,OAAC,IAAA,CAAE,UAAU,4BAA4B,SAAA,mEAAA,EAAzC,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EAIJ,MAAM4I,EAAU,OAAO,QAAQf,CAAI,EACnC,OAAIe,EAAQ,SAAW,EAEnB5I,EAAAA,OAAC,IAAA,CAAE,UAAU,oCAAoC,SAAA,6BAAA,EAAjD,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EAKFA,SAAC,MAAA,CAAI,UAAU,YACZ,SAAA4I,EAAQ,IAAI,CAAC,CAAC1F,EAAKM,CAAG,IACrBxD,EAAAA,OAAC6I,GAAA,CAEC,SAAU3F,EACV,MAAOM,EACP,SAAWgF,GAAMG,EAAYzF,EAAKsF,CAAC,EACnC,OAAQP,CAAA,EAJH/E,EADP,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,CAOD,CAAA,EATH,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAUA,CAEJ,CAMA,SAAS2F,GAAS,CAAE,SAAAC,EAAU,MAAAnB,EAAO,SAAAC,EAAU,OAAAmB,GAK5C,OACD,MAAMC,EAAQF,EAAS,QAAQ,QAAS,GAAG,EACrCG,GAAcC,EAAAH,GAAA,YAAAA,EAAQ,aAAR,YAAAG,EAAqBJ,GAGzC,GAAI,OAAOnB,GAAU,UACnB,OACE3H,EAAAA,OAAC,QAAA,CAAM,UAAU,yCACf,SAAA,CAAAA,EAAAA,OAAC,QAAA,CACC,KAAK,WACL,QAAS2H,EACT,SAAWpB,GAAMqB,EAASrB,EAAE,OAAO,OAAO,EAC1C,UAAU,mCAAA,EAJZ,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EAMAvG,SAAC,OAAA,CAAK,UAAU,yEACb,SAAAgJ,CAAA,EADH,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAEA,CAAA,CAAA,EATF,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAUA,EAKJ,GAAI,OAAOrB,GAAU,SACnB,gBACG,MAAA,CACC,SAAA,CAAA3H,EAAAA,OAACmJ,GAAY,SAAAH,CAAA,EAAb,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAmB,EACnBhJ,EAAAA,OAAC,QAAA,CACC,KAAK,SACL,MAAA2H,EACA,SAAWpB,GAAMqB,EAAS,WAAWrB,EAAE,OAAO,KAAK,GAAK,CAAC,EACzD,KAAK,MACL,UAAU,2BAAA,EALZ,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,CAMA,CAAA,EARF,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IASA,EAKJ,GAAI,OAAOoB,GAAU,SAAU,CAC7B,MAAMyB,GAAaH,GAAA,YAAAA,EAAa,UAAW,WACrCI,EAAaJ,GAAA,YAAAA,EAAa,KAC1BK,EAAaL,GAAA,YAAAA,EAAa,YAEhC,OAAII,GAAA,MAAAA,EAAY,gBAEX,MAAA,CACC,SAAA,CAAArJ,EAAAA,OAACmJ,GAAY,SAAAH,CAAA,EAAb,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmB,EAClBM,GAActJ,EAAAA,OAAC,IAAA,CAAE,UAAU,wCAAyC,SAAAsJ,CAAA,EAAtD,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAiE,EAChFtJ,EAAAA,OAAC,SAAA,CACC,MAAA2H,EACA,SAAWpB,GAAMqB,EAASrB,EAAE,OAAO,KAAK,EACxC,UAAU,4BAET,SAAA8C,EAAW,IAAKlD,YACd,SAAA,CAAiB,MAAOA,EAAM,SAAAA,CAAA,EAAlBA,EAAb,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmC,CACpC,CAAA,EAPH,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAQA,CAAA,EAXF,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAYA,EAIAiD,WAEC,MAAA,CACC,SAAA,CAAApJ,EAAAA,OAACmJ,GAAY,SAAAH,CAAA,EAAb,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmB,EAClBM,GAActJ,EAAAA,OAAC,IAAA,CAAE,UAAU,wCAAyC,SAAAsJ,CAAA,EAAtD,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAiE,EAChFtJ,EAAAA,OAAC,QAAA,CACC,KAAK,WACL,MAAA2H,EACA,SAAWpB,GAAMqB,EAASrB,EAAE,OAAO,KAAK,EACxC,UAAU,4BACV,aAAa,KAAA,EALf,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAMA,CAAA,EATF,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAUA,EAIAoB,EAAM,OAAS,YAEd,MAAA,CACC,SAAA,CAAA3H,EAAAA,OAACmJ,GAAY,SAAAH,CAAA,EAAb,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmB,EAClBM,GAActJ,EAAAA,OAAC,IAAA,CAAE,UAAU,wCAAyC,SAAAsJ,CAAA,EAAtD,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAiE,EAChFtJ,EAAAA,OAAC,WAAA,CACC,MAAA2H,EACA,SAAWpB,GAAMqB,EAASrB,EAAE,OAAO,KAAK,EACxC,UAAU,4CACV,KAAM,KAAK,IAAI,EAAG,KAAK,KAAKoB,EAAM,OAAS,EAAE,CAAC,CAAA,EAJhD,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAKA,CAAA,EARF,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IASA,WAID,MAAA,CACC,SAAA,CAAA3H,EAAAA,OAACmJ,GAAY,SAAAH,CAAA,EAAb,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAmB,EAClBM,GAActJ,EAAAA,OAAC,IAAA,CAAE,UAAU,wCAAyC,SAAAsJ,CAAA,EAAtD,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAiE,EAChFtJ,EAAAA,OAAC,QAAA,CACC,KAAK,OACL,MAAA2H,EACA,SAAWpB,GAAMqB,EAASrB,EAAE,OAAO,KAAK,EACxC,UAAU,2BAAA,EAJZ,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,CAKA,CAAA,EARF,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IASA,CAEJ,CAGA,GAAIoB,IAAU,KACZ,gBACG,MAAA,CACC,SAAA,CAAA3H,EAAAA,OAACmJ,GAAY,SAAAH,CAAA,EAAb,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAmB,EACnBhJ,SAAC,IAAA,CAAE,UAAU,yCAAyC,SAAA,MAAA,EAAtD,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAA0D,CAAA,CAAA,EAF5D,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAGA,EAKJ,GAAI,MAAM,QAAQ2H,CAAK,EACrB,gBACG,MAAA,CACC,SAAA,CAAA3H,EAAAA,OAACmJ,GAAY,SAAAH,CAAA,EAAb,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAmB,EACnBhJ,EAAAA,OAAC,OAAI,UAAU,8BACZ,WAAM,IAAI,CAACuJ,EAAM1G,IAChB7C,EAAAA,OAAC,OAAA,CAEC,UAAU,kFAET,gBAAOuJ,CAAI,CAAA,EAHP1G,EADP,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAMD,CAAA,EARH,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IASA,CAAA,CAAA,EAXF,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAYA,EAKJ,GAAI,OAAO8E,GAAU,SAAU,CAC7B,MAAMiB,EAAU,OAAO,QAAQjB,CAAK,EACpC,gBACG,MAAA,CACC,SAAA,CAAA3H,EAAAA,OAACmJ,GAAY,SAAAH,CAAA,EAAb,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAmB,EACnBhJ,EAAAA,OAAC,MAAA,CAAI,UAAU,wDACZ,SAAA4I,EAAQ,IAAI,CAAC,CAACL,EAAGC,CAAC,IACjBxI,EAAAA,OAAC6I,GAAA,CAEC,SAAUN,EACV,MAAOC,EACP,SAAWE,GAAYd,EAAS,CAAE,GAAGD,EAAO,CAACY,CAAC,EAAGG,CAAA,CAAS,CAAA,EAHrDH,EADP,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAMD,CAAA,EARH,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IASA,CAAA,CAAA,EAXF,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAYA,CAEJ,CAEA,OAAO,IACT,CAEA,SAASY,EAAW,CAAE,SAAAlI,GAA2C,CAC/D,OACEjB,EAAAA,OAAC,QAAA,CAAM,UAAU,yEACd,SAAAiB,CAAA,EADH,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAEA,CAEJ,CCxQO,SAASuI,GAAgB,CAC9B,KAAAvF,EACA,aAAAwF,EACA,cAAApF,EACA,sBAAAqF,EACA,YAAApF,EACA,oBAAAqF,CACF,EAOG,CACD,KAAM,CAACC,EAAcC,CAAe,EAAI1H,EAAAA,SAA0B,MAAM,EAExE,OACEnC,EAAAA,OAAAkH,WAAA,CAEE,SAAA,CAAAlH,EAAAA,OAAC,MAAA,CAAI,UAAU,yCACZ,SAAA,CAAAqE,EACCrE,EAAAA,OAAC,SAAA,CACC,QAAS,IAAM0J,EAAsB,EAAK,EAC1C,UAAU,0CACV,cAAY,gBAEZ,SAAA,CAAA1J,EAAAA,OAAC,OAAA,CAAK,UAAU,0FACd,SAAAA,EAAAA,OAAC,OAAI,UAAU,UAAU,KAAK,OAAO,QAAQ,YAAY,OAAO,eAAe,YAAa,EAC1F,SAAAA,EAAAA,OAAC,OAAA,CAAK,cAAc,QAAQ,eAAe,QAAQ,EAAE,sBAAA,EAArD,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA4E,CAAA,EAD9E,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CAAA,EAHF,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAIA,EACAA,EAAAA,OAAC,OAAA,CAAK,UAAU,8EAA8E,SAAA,CAAA,oBAC1E,IAClBA,SAAC,OAAA,CAAK,UAAU,oCAAoC,SAAA,QAAA,EAApD,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA0D,CAAA,CAAA,EAF5D,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAGA,CAAA,CAAA,EAbF,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,EAgBAA,EAAAA,OAAC,SAAA,CACC,QAAS,IAAM0J,EAAsB,EAAI,EACzC,UAAU,iDACV,cAAY,iBAEZ,SAAA,CAAA1J,EAAAA,OAAC,OAAA,CAAK,UAAU,wIACd,SAAAA,EAAAA,OAAC,OAAI,UAAU,cAAc,KAAK,OAAO,QAAQ,YAAY,OAAO,eAAe,YAAa,EAC9F,SAAAA,EAAAA,OAAC,OAAA,CAAK,cAAc,QAAQ,eAAe,QAAQ,EAAE,kNAAA,EAArD,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAwQ,CAAA,EAD1Q,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CAAA,EAHF,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAIA,EACAA,EAAAA,OAAC,OAAA,CAAK,UAAU,kFAAkF,SAAA,CAAA,uCACtD,IAC1CA,SAAC,OAAA,CAAK,UAAU,oCAAoC,SAAA,mBAAA,EAApD,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAqE,CAAA,CAAA,EAFvE,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAGA,CAAA,CAAA,EAbF,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,EAiBD,CAACqE,GACArE,EAAAA,OAAC,SAAA,CACC,QAAS,IAAM6J,EAAgBD,IAAiB,OAAS,OAAS,MAAM,EACxE,UAAU,qEAET,SAAAA,IAAiB,OAAS,WAAa,MAAA,EAJ1C,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAKA,CAAA,EAzCJ,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IA2CA,EAEA5J,EAAAA,OAAC,MAAA,CAAI,UAAU,yBAEb,SAAA,CAAAA,SAAC,MAAA,CAAI,UAAWqE,EAAgB,kCAAoC,GACjE,SAAAuF,IAAiB,OAChB5J,EAAAA,OAAC0H,GAAA,CAAa,MAAOzD,EAAM,SAAUwF,CAAA,EAArC,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAmD,EAEnDzJ,EAAAA,OAAC,WAAA,CACC,MAAOiE,EACP,SAAWsC,GAAMkD,EAAalD,EAAE,OAAO,KAAK,EAC5C,UAAU,iCACV,KAAM,EACN,WAAY,GACZ,cAAY,cAAA,EANd,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAOA,EAXJ,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAaA,EAGClC,GACCrE,EAAAA,OAAC,MAAA,CACC,UAAU,+GACV,cAAY,iBAEZ,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,mDAAmD,SAAA,oMAAA,EAAhE,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAKA,EACAA,EAAAA,OAAC,WAAA,CACC,MAAOsE,EACP,SAAWiC,GAAMoD,EAAoBpD,EAAE,OAAO,KAAK,EACnD,YAAY,6EACZ,UAAU,uDACV,UAAS,GACT,cAAY,cAAA,EANd,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAOA,CAAA,EAjBF,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAkBA,CAAA,EArCJ,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAuCA,CAAA,CAAA,EAtFF,OAAA,GAAA,CAAA,SAAA,0EAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAuFA,CAEJ,CCjFA,SAASuD,GAAUnC,EAA2C,CAC5D,GAAI,CAACA,EAAO,OAAO,KACnB,GAAI,CACF,OAAO,KAAK,MAAMA,CAAK,CACzB,MAAQ,CACN,OAAOA,CACT,CACF,CAEA,SAASoC,GAAc5I,EAA6C,CAClE,GAAI,CAACA,EAAS,MAAO,GACrB,GAAI,CACF,MAAM6I,EAAI,KAAK,MAAM7I,CAAO,EAC5B,MAAO,CAAC,EAAE6I,GAAK,OAAOA,GAAM,UAAYA,EAAE,QAC5C,MAAQ,CAAE,MAAO,EAAO,CAC1B,CAMO,SAASC,IAAuB,SACrC,KAAM,CAAE,GAAAC,CAAA,EAAOC,GAAA,EACT,CAAE,KAAAC,CAAA,EAASC,GAAA,EACXC,EAAWC,GAAA,EACX,CAAE,KAAM7D,EAAK,UAAA8D,CAAA,EAAcC,GAAcP,CAAG,EAClDQ,GAA0BR,CAAE,EAC5B,MAAMS,EAAQC,GAAA,EACRC,EAAUC,GAAA,EACVC,EAAWC,GAAA,EACX,CAAE,KAAMxG,CAAA,EAAsByG,IAAqBvE,GAAA,YAAAA,EAAK,OAAQ,EAAE,EAClE,CAAE,KAAMwE,CAAA,EAAoBC,GAAA,EAC5B,CAAE,KAAMC,CAAA,EAAaC,GAAA,EAErBC,EAAWJ,GAAA,YAAAA,EAAiB,KAAMxK,GAAMA,EAAE,iBAAkBgG,GAAA,YAAAA,EAAK,gBACjEG,IAAWqC,EAAAkC,GAAA,YAAAA,EAAU,YAAV,YAAAlC,EAAqB,WAAY,KAC5C,CAACtF,EAAY2H,CAAa,EAAIpJ,EAAAA,SAAqB,SAAS,EAC5D,CAAC8B,EAAMuH,CAAO,EAAIrJ,EAAAA,SAAS,IAAI,EAG/B,CAACsJ,EAAWC,CAAY,EAAIvJ,EAAAA,SAAkC,CAAE,QAAS,GAAO,EAChFwJ,EAAiBzI,GACrBwI,EAAcE,IAAU,CAAE,GAAGA,EAAM,CAAC1I,CAAG,EAAG,CAAC0I,EAAK1I,CAAG,GAAI,EAEnD,CAACmB,EAAewH,CAAgB,EAAI1J,EAAAA,SAAS,EAAK,EAClD,CAACmC,EAAawH,CAAc,EAAI3J,EAAAA,SAAS,EAAE,EAC3C4J,GAAiBT,GAAA,YAAAA,EAAU,kBAAmB,KAC9CU,IAAsBC,EAAAvF,GAAA,YAAAA,EAAK,WAAL,YAAAuF,EAAuB,cAAe,KAC5DC,EAAkBF,GAAsBD,EAC9C5D,EAAAA,UAAU,IAAM,CAEd,MAAMF,EAAa+D,IAAuBD,GAAA,MAAAA,EAAgB,WAAaA,EAAiB,MACxF,GAAI9D,GAAA,MAAAA,EAAY,WAAY,CAC1B,MAAMkE,EAA+B,CAAE,aAAclE,CAAA,EACrD,SAAW,CAAC/E,GAAKkJ,EAAG,IAAK,OAAO,QAAQnE,EAAW,UAAU,EAAG,CAC9D,MAAMoE,GAAWD,GACjBD,EAAQjJ,EAAG,EAAImJ,GAAS,SAAW,EACrC,CACAb,EAAQ,KAAK,UAAUW,EAAS,KAAM,CAAC,CAAC,CAC1C,MACEX,EAAQU,EAAkB,KAAK,UAAUA,EAAiB,KAAM,CAAC,EAAI,IAAI,CAE7E,EAAG,CAACA,EAAiBF,EAAoBD,CAAc,CAAC,EAGxD,MAAMO,EAAYvC,GAAcrD,GAAA,YAAAA,EAAK,kBAAkB,EACjD6F,GAAoB7F,GAAA,YAAAA,EAAK,WAAY,mBACrC8F,GAAiB9F,GAAA,YAAAA,EAAK,WAAY,iBAWxC,GAVAyB,EAAAA,UAAU,IAAM,EACVmE,GAAaC,IACfb,EAAcE,IAAU,CAAE,GAAGA,EAAM,QAAS,IAAO,EAGjDY,GAAkBR,GACpBN,EAAcE,IAAU,CAAE,GAAGA,EAAM,QAAS,GAAM,SAAU,EAAA,EAAQ,CAExE,EAAG,CAACU,EAAWC,EAAmBC,EAAgBR,CAAkB,CAAC,EAEjExB,EACF,OACExK,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,oCAAA,EAAf,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAoD,EACpDA,EAAAA,OAAC,MAAA,CAAI,UAAU,uCAAA,EAAf,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAuD,CAAA,CAAA,EAFzD,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAGA,EAIJ,GAAI,CAAC0G,EACH,OAAO1G,EAAAA,OAAC,IAAA,CAAE,UAAU,8BAA8B,SAAA,uBAAA,EAA3C,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAgE,EAGzE,MAAM4G,EAAU6F,GAAqB/F,CAAG,EAClCgG,EAAc9F,GAAWF,EAAI,eAAgB0D,GAAA,YAAAA,EAAM,QACnDuC,EAAiB/F,GAAW,CAAC8F,EAC7BtL,EAAasF,EAAI,SAAW,YAAcA,EAAI,SAAW,YAEzDkG,EAAoB9C,GAAUpD,EAAI,kBAAkB,EACpDrF,EAAkByI,GAAUpD,EAAI,gBAAgB,EAGhDmG,EAAc,OAAOD,GAAsB,UAAYA,IAAsB,MAAQ,CAAC,MAAM,QAAQA,CAAiB,EACvHA,EACA,KACEE,EAAaD,GAAA,YAAAA,EAAY,QAGzBE,GAA+B3L,EACjC,WACAsL,EACE,gBACAC,EACE,mBACA,YAEF7G,GAAekH,GAA4B,CAC/CrC,EAAM,OAAO,CAAE,GAAIjE,EAAI,GAAI,gBAAAsG,EAAiB,EAC5CtB,EAAa,CAAE,QAAS,GAAM,OAAQ,GAAM,SAAU,GAAO,CAC/D,EAEMuB,EAAS,IAAM3C,EAAS,EAAE,EAE1B4C,GAAgB,MAAO/L,GAAqC,CAChE,MAAM0J,EAAQ,YAAY,CAAE,GAAInE,EAAI,GAAI,gBAAiBvF,EAAS,EAClE8L,EAAA,CACF,EAEME,GAAiB,MAAOC,GAAuB,CAC9CA,IACL,MAAMrC,EAAS,YAAY,CAAE,GAAIrE,EAAI,GAAI,WAAA0G,EAAY,EACrDH,EAAA,EACF,EAEMI,GAAoB,SAAY,CAC/BX,GACH,MAAM/B,EAAM,YAAY,CAAE,GAAIjE,EAAI,GAAI,gBAAiB,GAAI,EAE7D,MAAMhF,GAAamL,GAAA,YAAAA,EAAY,YAAwBnG,EAAI,aAAe,GAC1E,MAAMmE,EAAQ,YAAY,CACxB,GAAInE,EAAI,GACR,gBAAiB,CAAE,IAAK,CAAE,YAAa,EAAA,EAAQ,MAAOhF,CAAA,CAAU,CACjE,EACDuL,EAAA,CACF,EAEMK,GAAgB,SAAY,CAChC,MAAM3C,EAAM,YAAY,CAAE,GAAIjE,EAAI,GAAI,gBAAiB,EAAG,EAC1DuG,EAAA,CACF,EAEA,OACEjN,EAAAA,OAAC,MAAA,CAAI,UAAU,yCACb,SAAA,CAAAA,EAAAA,OAACuN,GAAA,CAAW,MAAM,YAAA,EAAlB,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAA+B,EAE/BvN,EAAAA,OAACyG,GAAA,CACC,IAAAC,EACA,YAAAgG,EACA,QAAA9F,EACA,WAAAxF,EACA,SAAAyF,CAAA,EALF,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EASC0F,GAAqBM,GACpB7M,SAAC,MAAA,CAAI,UAAU,OACb,SAAAA,EAAAA,OAACkB,GAAA,CACC,QAAS2L,EACT,WAAAzL,EACA,gBAAAC,EACA,cAAegM,GACf,WAAY1C,EAAM,WAAaE,EAAQ,SAAA,EALzC,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAMA,EAPF,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAQA,GAIDgC,GAAA,YAAAA,EAAY,YAAa,sBACxB7M,EAAAA,OAAC,MAAA,CAAI,UAAU,wGACb,SAAA,CAAAA,SAACwN,EAAA,CAAS,KAAM,GAAI,UAAU,qCAAA,EAA9B,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAoE,WACnE,MAAA,CACC,SAAA,CAAAxN,SAAC,IAAA,CAAE,UAAU,6CAA6C,SAAA,oBAAA,EAA1D,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA4E,EAC5EA,EAAAA,OAAC,IAAA,CAAE,UAAU,mCAAmC,SAAA,CAAA,qCACpB,OAAA,CAAK,UAAU,yBAA0B,SAAA,OAAO6M,EAAW,QAAQ,GAApE,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAsE,EAAO,kFAAA,CAAA,EADxG,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAGA,EACA7M,EAAAA,OAACoC,GAAA,CACC,GAAG,eACH,UAAU,uDAEV,SAAA,CAAApC,EAAAA,OAACwN,EAAA,CAAS,KAAM,EAAA,EAAhB,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAoB,EAAE,mBAAA,CAAA,EAJxB,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAMA,CAAA,EAZF,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAaA,CAAA,CAAA,EAfF,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAgBA,EAIFxN,EAAAA,OAAC,MAAA,CAAI,UAAU,iBAGb,SAAA,CAAAA,EAAAA,OAACyN,EAAA,CACC,MAAM,iBACN,WAAW,UACX,YAAahC,EAAU,SAAW,GAClC,SAAUE,EACV,iBAAiB,YAEjB,SAAA3L,EAAAA,OAAC,MAAA,CAAI,UAAU,YACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,wCACZ,SAAA,CAAA0G,EAAI,mBACF,MAAA,CACC,SAAA1G,EAAAA,OAACqC,GAAW,KAAMqE,EAAI,SAAU,MAAM,gBAAA,EAAtC,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAuD,CAAA,EADzD,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EAEDkG,GAAqB,MACpB5M,EAAAA,OAAC,MAAA,CACC,kBAACqC,EAAA,CAAW,KAAMuK,EAAmB,MAAM,oBAAA,EAA3C,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAgE,CAAA,EADlE,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EATJ,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAWA,EAECvL,GAAmB,MAClBrB,SAAC,MAAA,CAAI,UAAU,WACb,SAAAA,EAAAA,OAACqC,EAAA,CAAW,KAAMhB,EAAiB,MAAM,kBAAA,EAAzC,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA4D,CAAA,EAD9D,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAjBJ,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAmBA,CAAA,EA1BF,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EA8BCyL,GAAcD,GACb7M,EAAAA,OAACyN,EAAA,CACC,MAAM,YACN,WAAW,SACX,YAAa,CAAC,CAAChC,EAAU,OACzB,SAAUE,EACV,iBAAiB,YAEjB,SAAA3L,EAAAA,OAACsC,GAAA,CAAc,OAAQwK,EAAY,QAASD,CAAA,EAA5C,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAwD,CAAA,EAP1D,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAYD,CAACzL,GAAcsL,GAAe9I,IAAe,YAAc8C,EAAI,eAAiBsF,IAC/EhM,EAAAA,OAACyN,EAAA,CACC,MAAM,yBACN,WAAW,WACX,YAAa,CAAC,CAAChC,EAAU,SACzB,SAAUE,EACV,iBAAiB,YAEjB,SAAA3L,EAAAA,OAACwJ,GAAA,CACC,KAAAvF,EACA,aAAcuH,EACd,cAAAnH,EACA,sBAAuBwH,EACvB,YAAAvH,EACA,oBAAqBwH,CAAA,EANvB,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAOA,EAdF,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAeA,CAAA,EA9DJ,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAgEA,EAEA9L,EAAAA,OAAC,MAAA,CAAI,UAAU,QAAA,EAAf,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAwB,EAExBA,EAAAA,OAACyD,GAAA,CACC,KAAMsJ,GACN,WAAAnJ,EACA,mBAAoB2H,EACpB,QAASzF,GACT,aAAc6E,EAAM,UACpB,aAAcjE,EAAI,cAClB,KAAAzC,EACA,UAAWiJ,GACX,eAAgBrC,EAAQ,UACxB,aAAcA,EAAQ,MACtB,cAAAxG,EACA,YAAAC,EACA,YAAaoC,EAAI,KACjB,mBAAmBlC,GAAA,YAAAA,EAAmB,UAAW,CAAA,EACjD,WAAY2I,GACZ,gBAAiBpC,EAAS,UAC1B,cAAeA,EAAS,MACxB,UAAWuC,GACX,eAAgB3C,EAAM,UACtB,WAAYjE,EAAI,YAChB,cAAeA,EAAI,cAAA,EArBrB,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,CAsBA,CAAA,EAxIF,OAAA,GAAA,CAAA,SAAA,+EAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAyIA,CAEJ"}