@hotmeshio/long-tail 0.7.5 → 0.8.1

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 (364) hide show
  1. package/build/api/workflows/config.d.ts +7 -1
  2. package/build/api/workflows/config.js +7 -1
  3. package/build/api/workflows/discovery.js +1 -4
  4. package/build/lib/db/schemas/020_workflow_certified.sql +34 -0
  5. package/build/modules/ltconfig.d.ts +3 -2
  6. package/build/modules/ltconfig.js +4 -4
  7. package/build/routes/workflows/config.js +1 -0
  8. package/build/services/config/cache.js +1 -0
  9. package/build/services/config/read.js +2 -0
  10. package/build/services/config/sql.d.ts +2 -2
  11. package/build/services/config/sql.js +6 -5
  12. package/build/services/config/write.js +13 -0
  13. package/build/services/escalation/bulk.d.ts +3 -1
  14. package/build/services/escalation/bulk.js +3 -1
  15. package/build/services/escalation/crud.d.ts +4 -3
  16. package/build/services/escalation/crud.js +4 -3
  17. package/build/start/workers.js +1 -0
  18. package/build/system/mcp-servers/admin/schemas.d.ts +3 -0
  19. package/build/system/mcp-servers/admin/schemas.js +3 -1
  20. package/build/system/mcp-servers/admin/workflow-config.js +1 -0
  21. package/build/types/config.d.ts +16 -0
  22. package/build/types/startup.d.ts +11 -1
  23. package/dashboard/dist/assets/AdminDashboard-Ck5-jV9T.js +2 -0
  24. package/dashboard/dist/assets/{AdminDashboard-Bgomc_jH.js.map → AdminDashboard-Ck5-jV9T.js.map} +1 -1
  25. package/dashboard/dist/assets/AgentConfigPage-DFiXRBWs.js +16 -0
  26. package/dashboard/dist/assets/AgentConfigPage-DFiXRBWs.js.map +1 -0
  27. package/dashboard/dist/assets/AgentDetailPage-BBgM_pMe.js +4 -0
  28. package/dashboard/dist/assets/AgentDetailPage-BBgM_pMe.js.map +1 -0
  29. package/dashboard/dist/assets/AgentsPage-DxwFuedf.js +2 -0
  30. package/dashboard/dist/assets/AgentsPage-DxwFuedf.js.map +1 -0
  31. package/dashboard/dist/assets/AvailableEscalationsPage-DNQbeIcn.js +2 -0
  32. package/dashboard/dist/assets/{AvailableEscalationsPage-C9DAtNGp.js.map → AvailableEscalationsPage-DNQbeIcn.js.map} +1 -1
  33. package/dashboard/dist/assets/BotPicker-mqwKVOE3.js +2 -0
  34. package/dashboard/dist/assets/{BotPicker-MnI3OyE7.js.map → BotPicker-mqwKVOE3.js.map} +1 -1
  35. package/dashboard/dist/assets/CapabilitiesPage-Biffm0kW.js +2 -0
  36. package/dashboard/dist/assets/CapabilitiesPage-Biffm0kW.js.map +1 -0
  37. package/dashboard/dist/assets/CollapsibleSection-Bn6Ks79X.js +2 -0
  38. package/dashboard/dist/assets/{CollapsibleSection-Ne-Q3QFM.js.map → CollapsibleSection-Bn6Ks79X.js.map} +1 -1
  39. package/dashboard/dist/assets/ConfirmDeleteModal-no0-c_1G.js +2 -0
  40. package/dashboard/dist/assets/{ConfirmDeleteModal-D9_1b4MW.js.map → ConfirmDeleteModal-no0-c_1G.js.map} +1 -1
  41. package/dashboard/dist/assets/CopyableId-DS6IDMIX.js +2 -0
  42. package/dashboard/dist/assets/{CopyableId-blg-gZvT.js.map → CopyableId-DS6IDMIX.js.map} +1 -1
  43. package/dashboard/dist/assets/CredentialsPage-C3NyncEB.js +2 -0
  44. package/dashboard/dist/assets/CredentialsPage-C3NyncEB.js.map +1 -0
  45. package/dashboard/dist/assets/CronLabel-DQWBx57H.js +2 -0
  46. package/dashboard/dist/assets/CronLabel-DQWBx57H.js.map +1 -0
  47. package/dashboard/dist/assets/CustomDurationPicker-DV42oZ1G.js +2 -0
  48. package/dashboard/dist/assets/{CustomDurationPicker-Cp1fgzPX.js.map → CustomDurationPicker-DV42oZ1G.js.map} +1 -1
  49. package/dashboard/dist/assets/DataTable-Bf4dgxll.js +2 -0
  50. package/dashboard/dist/assets/{DataTable-ZWgVQg7F.js.map → DataTable-Bf4dgxll.js.map} +1 -1
  51. package/dashboard/dist/assets/DropZone-CTSXBb3c.js +2 -0
  52. package/dashboard/dist/assets/{DropZone-CZDmNBn-.js.map → DropZone-CTSXBb3c.js.map} +1 -1
  53. package/dashboard/dist/assets/ElapsedCell-roy4G5SQ.js +2 -0
  54. package/dashboard/dist/assets/{ElapsedCell-Gr5UlUbn.js.map → ElapsedCell-roy4G5SQ.js.map} +1 -1
  55. package/dashboard/dist/assets/EmptyState-CLVm9KmA.js +2 -0
  56. package/dashboard/dist/assets/{EmptyState-BcsfPq9T.js.map → EmptyState-CLVm9KmA.js.map} +1 -1
  57. package/dashboard/dist/assets/EscalationSchemaPage-DulCCxea.js +9 -0
  58. package/dashboard/dist/assets/EscalationSchemaPage-DulCCxea.js.map +1 -0
  59. package/dashboard/dist/assets/EscalationsOverview-DDwxn_mT.js +2 -0
  60. package/dashboard/dist/assets/{EscalationsOverview-BIZVnSBF.js.map → EscalationsOverview-DDwxn_mT.js.map} +1 -1
  61. package/dashboard/dist/assets/EventTable-BaLNvCew.js +2 -0
  62. package/dashboard/dist/assets/EventTable-BaLNvCew.js.map +1 -0
  63. package/dashboard/dist/assets/FilterBar-DEAbNQqp.js +2 -0
  64. package/dashboard/dist/assets/FilterBar-DEAbNQqp.js.map +1 -0
  65. package/dashboard/dist/assets/GraphInvokePage-BmM8r0R3.js +2 -0
  66. package/dashboard/dist/assets/GraphInvokePage-BmM8r0R3.js.map +1 -0
  67. package/dashboard/dist/assets/HomePage-Ds3PzWWr.js +2 -0
  68. package/dashboard/dist/assets/HomePage-Ds3PzWWr.js.map +1 -0
  69. package/dashboard/dist/assets/ListToolbar-Dviaskni.js +2 -0
  70. package/dashboard/dist/assets/{ListToolbar-CdmIvEIF.js.map → ListToolbar-Dviaskni.js.map} +1 -1
  71. package/dashboard/dist/assets/McpOverview-BBm66wbF.js +2 -0
  72. package/dashboard/dist/assets/{McpOverview-C-Ypezuv.js.map → McpOverview-BBm66wbF.js.map} +1 -1
  73. package/dashboard/dist/assets/McpQueryDetailPage-B6GJOMcz.js +5 -0
  74. package/dashboard/dist/assets/McpQueryDetailPage-B6GJOMcz.js.map +1 -0
  75. package/dashboard/dist/assets/McpQueryPage-C-8nIdBL.js +2 -0
  76. package/dashboard/dist/assets/McpQueryPage-C-8nIdBL.js.map +1 -0
  77. package/dashboard/dist/assets/McpRunDetailPage-CSq_0qqi.js +2 -0
  78. package/dashboard/dist/assets/{McpRunDetailPage-B1sCxKLD.js.map → McpRunDetailPage-CSq_0qqi.js.map} +1 -1
  79. package/dashboard/dist/assets/McpRunsPage-BdK8ahX7.js +2 -0
  80. package/dashboard/dist/assets/McpRunsPage-BdK8ahX7.js.map +1 -0
  81. package/dashboard/dist/assets/Modal-C6HI6btY.js +2 -0
  82. package/dashboard/dist/assets/{Modal-CSrxpXeM.js.map → Modal-C6HI6btY.js.map} +1 -1
  83. package/dashboard/dist/assets/NamespacePill-eGsbJBFa.js +2 -0
  84. package/dashboard/dist/assets/{NamespacePill-DlqBTvFR.js.map → NamespacePill-eGsbJBFa.js.map} +1 -1
  85. package/dashboard/dist/assets/OperationsPage-DODPFmf2.js +2 -0
  86. package/dashboard/dist/assets/OperationsPage-DODPFmf2.js.map +1 -0
  87. package/dashboard/dist/assets/OperatorDashboard-BbmgsOmQ.js +2 -0
  88. package/dashboard/dist/assets/{OperatorDashboard-YP6kP-f_.js.map → OperatorDashboard-BbmgsOmQ.js.map} +1 -1
  89. package/dashboard/dist/assets/PageHeader-DcgGV0Y2.js +2 -0
  90. package/dashboard/dist/assets/{PageHeader-CFta2VaS.js.map → PageHeader-DcgGV0Y2.js.map} +1 -1
  91. package/dashboard/dist/assets/PageHeaderWithStats-Cf8TYFRh.js +2 -0
  92. package/dashboard/dist/assets/PageHeaderWithStats-Cf8TYFRh.js.map +1 -0
  93. package/dashboard/dist/assets/PriorityBadge-a7u8C9uY.js +2 -0
  94. package/dashboard/dist/assets/{PriorityBadge-B4ykBH7f.js.map → PriorityBadge-a7u8C9uY.js.map} +1 -1
  95. package/dashboard/dist/assets/ProcessDetailPage-D80w44rV.js +2 -0
  96. package/dashboard/dist/assets/ProcessDetailPage-D80w44rV.js.map +1 -0
  97. package/dashboard/dist/assets/ProcessesListPage-BjW5xUkv.js +2 -0
  98. package/dashboard/dist/assets/{ProcessesListPage-BNhFwTLl.js.map → ProcessesListPage-BjW5xUkv.js.map} +1 -1
  99. package/dashboard/dist/assets/RoleDetailPage-oahg0cdT.js +11 -0
  100. package/dashboard/dist/assets/RoleDetailPage-oahg0cdT.js.map +1 -0
  101. package/dashboard/dist/assets/RolePill-BAeaQUXX.js +2 -0
  102. package/dashboard/dist/assets/RolePill-BAeaQUXX.js.map +1 -0
  103. package/dashboard/dist/assets/RolesPage-BI1Xtqq_.js +2 -0
  104. package/dashboard/dist/assets/RolesPage-BI1Xtqq_.js.map +1 -0
  105. package/dashboard/dist/assets/RowActions--m4F6GW8.js +2 -0
  106. package/dashboard/dist/assets/{RowActions-BA9L9djf.js.map → RowActions--m4F6GW8.js.map} +1 -1
  107. package/dashboard/dist/assets/RunAsSelector-DiGzSfiG.js +2 -0
  108. package/dashboard/dist/assets/{RunAsSelector-CokM3Ifp.js.map → RunAsSelector-DiGzSfiG.js.map} +1 -1
  109. package/dashboard/dist/assets/StatCard-DCPGFzCv.js +2 -0
  110. package/dashboard/dist/assets/StatCard-DCPGFzCv.js.map +1 -0
  111. package/dashboard/dist/assets/StatusBadge-mk-dJwPT.js +2 -0
  112. package/dashboard/dist/assets/{StatusBadge-D9MeQHrh.js.map → StatusBadge-mk-dJwPT.js.map} +1 -1
  113. package/dashboard/dist/assets/StickyPagination-Clm9H840.js +2 -0
  114. package/dashboard/dist/assets/{StickyPagination-_H2j2CAH.js.map → StickyPagination-Clm9H840.js.map} +1 -1
  115. package/dashboard/dist/assets/StreamMessageDetail-Bikvs1Cz.js +2 -0
  116. package/dashboard/dist/assets/StreamMessageDetail-Bikvs1Cz.js.map +1 -0
  117. package/dashboard/dist/assets/SwimlaneTimeline-C9X3IVqI.js +2 -0
  118. package/dashboard/dist/assets/SwimlaneTimeline-C9X3IVqI.js.map +1 -0
  119. package/dashboard/dist/assets/TagInput-DmJLnghg.js +2 -0
  120. package/dashboard/dist/assets/{TagInput-CQg-TrV9.js.map → TagInput-DmJLnghg.js.map} +1 -1
  121. package/dashboard/dist/assets/TaskDetailPage-C0tbiUi7.js +2 -0
  122. package/dashboard/dist/assets/TaskDetailPage-C0tbiUi7.js.map +1 -0
  123. package/dashboard/dist/assets/TaskQueuePill--1OX6egx.js +2 -0
  124. package/dashboard/dist/assets/{TaskQueuePill-DyvtL8X4.js.map → TaskQueuePill--1OX6egx.js.map} +1 -1
  125. package/dashboard/dist/assets/TasksListPage-DcYV-GMA.js +2 -0
  126. package/dashboard/dist/assets/{TasksListPage-B71FxvrY.js.map → TasksListPage-DcYV-GMA.js.map} +1 -1
  127. package/dashboard/dist/assets/TimeAgo-pYn3T9IZ.js +2 -0
  128. package/dashboard/dist/assets/{TimeAgo-JgT0U_sd.js.map → TimeAgo-pYn3T9IZ.js.map} +1 -1
  129. package/dashboard/dist/assets/TimestampCell-BPMCscic.js +2 -0
  130. package/dashboard/dist/assets/{TimestampCell-gEreK8Nn.js.map → TimestampCell-BPMCscic.js.map} +1 -1
  131. package/dashboard/dist/assets/ToolPill-BnF9lCUX.js +2 -0
  132. package/dashboard/dist/assets/{ToolPill-miuRcj1Q.js.map → ToolPill-BnF9lCUX.js.map} +1 -1
  133. package/dashboard/dist/assets/ToolTestPanel-Bw4z_Tya.js +2 -0
  134. package/dashboard/dist/assets/{ToolTestPanel-ChfHw9Aq.js.map → ToolTestPanel-Bw4z_Tya.js.map} +1 -1
  135. package/dashboard/dist/assets/TopicDetailPage-CtFztOnn.js +9 -0
  136. package/dashboard/dist/assets/TopicDetailPage-CtFztOnn.js.map +1 -0
  137. package/dashboard/dist/assets/TopicsPage-BXdc6pAU.js +2 -0
  138. package/dashboard/dist/assets/TopicsPage-BXdc6pAU.js.map +1 -0
  139. package/dashboard/dist/assets/UserName-R96NG6xB.js +2 -0
  140. package/dashboard/dist/assets/{UserName-uncbaKYf.js.map → UserName-R96NG6xB.js.map} +1 -1
  141. package/dashboard/dist/assets/WorkflowExecutionPage-DmRJabMQ.js +2 -0
  142. package/dashboard/dist/assets/{WorkflowExecutionPage-DwzLKTkt.js.map → WorkflowExecutionPage-DmRJabMQ.js.map} +1 -1
  143. package/dashboard/dist/assets/WorkflowPill-Cc2MlYbB.js +2 -0
  144. package/dashboard/dist/assets/WorkflowPill-Cc2MlYbB.js.map +1 -0
  145. package/dashboard/dist/assets/WorkflowsDashboard-uLU5ZToY.js +2 -0
  146. package/dashboard/dist/assets/WorkflowsDashboard-uLU5ZToY.js.map +1 -0
  147. package/dashboard/dist/assets/WorkflowsOverview-BhgE0RS8.js +2 -0
  148. package/dashboard/dist/assets/{WorkflowsOverview-ihhW8DiS.js.map → WorkflowsOverview-BhgE0RS8.js.map} +1 -1
  149. package/dashboard/dist/assets/YamlWorkflowDetailPage-CvIgB5y7.js +33 -0
  150. package/dashboard/dist/assets/{YamlWorkflowDetailPage-C61-8y-E.js.map → YamlWorkflowDetailPage-CvIgB5y7.js.map} +1 -1
  151. package/dashboard/dist/assets/YamlWorkflowsPage-DWnsgl2v.js +2 -0
  152. package/dashboard/dist/assets/{YamlWorkflowsPage-CMpgsLEo.js.map → YamlWorkflowsPage-DWnsgl2v.js.map} +1 -1
  153. package/dashboard/dist/assets/{agents-27sErp5R.js → agents-BpYMwrsB.js} +2 -2
  154. package/dashboard/dist/assets/{agents-27sErp5R.js.map → agents-BpYMwrsB.js.map} +1 -1
  155. package/dashboard/dist/assets/{bots-CPHuAvjW.js → bots-DI6Wqp5X.js} +2 -2
  156. package/dashboard/dist/assets/{bots-CPHuAvjW.js.map → bots-DI6Wqp5X.js.map} +1 -1
  157. package/dashboard/dist/assets/capabilities-BKZZb8eM.js +2 -0
  158. package/dashboard/dist/assets/{capabilities-BBTPqF-V.js.map → capabilities-BKZZb8eM.js.map} +1 -1
  159. package/dashboard/dist/assets/{controlplane-C9j2mwX8.js → controlplane-Djshb7fm.js} +2 -2
  160. package/dashboard/dist/assets/{controlplane-C9j2mwX8.js.map → controlplane-Djshb7fm.js.map} +1 -1
  161. package/dashboard/dist/assets/escalation-D8mrXtjS.js +2 -0
  162. package/dashboard/dist/assets/{escalation-CyJ_wz-f.js.map → escalation-D8mrXtjS.js.map} +1 -1
  163. package/dashboard/dist/assets/escalation-columns-CyLzgPkz.js +2 -0
  164. package/dashboard/dist/assets/escalation-columns-CyLzgPkz.js.map +1 -0
  165. package/dashboard/dist/assets/index-B5MAG4Uv.js +2 -0
  166. package/dashboard/dist/assets/{index-CCHGKErT.js.map → index-B5MAG4Uv.js.map} +1 -1
  167. package/dashboard/dist/assets/index-BfxiRwk2.js +6 -0
  168. package/dashboard/dist/assets/index-BfxiRwk2.js.map +1 -0
  169. package/dashboard/dist/assets/index-C71I-f5G.js +2 -0
  170. package/dashboard/dist/assets/{index-D9pi0fs6.js.map → index-C71I-f5G.js.map} +1 -1
  171. package/dashboard/dist/assets/index-CC4g-6QE.css +1 -0
  172. package/dashboard/dist/assets/index-CJb3dXku.js +2 -0
  173. package/dashboard/dist/assets/index-CJb3dXku.js.map +1 -0
  174. package/dashboard/dist/assets/index-CQtv2rj6.js +2 -0
  175. package/dashboard/dist/assets/index-CQtv2rj6.js.map +1 -0
  176. package/dashboard/dist/assets/index-CphzO7b8.js +2 -0
  177. package/dashboard/dist/assets/{index-CNprOGuS.js.map → index-CphzO7b8.js.map} +1 -1
  178. package/dashboard/dist/assets/index-CwAmiy_j.js +2 -0
  179. package/dashboard/dist/assets/index-CwAmiy_j.js.map +1 -0
  180. package/dashboard/dist/assets/index-DgCS2Frb.js +281 -0
  181. package/dashboard/dist/assets/index-DgCS2Frb.js.map +1 -0
  182. package/dashboard/dist/assets/index-DkbnD-Te.js +2 -0
  183. package/dashboard/dist/assets/{index-Dzqt3g-K.js.map → index-DkbnD-Te.js.map} +1 -1
  184. package/dashboard/dist/assets/index-Y6yj36QR.js +9 -0
  185. package/dashboard/dist/assets/index-Y6yj36QR.js.map +1 -0
  186. package/dashboard/dist/assets/index-eshNd6NY.js +6 -0
  187. package/dashboard/dist/assets/{index-BiLZJ43R.js.map → index-eshNd6NY.js.map} +1 -1
  188. package/dashboard/dist/assets/index-xn9fmkHC.js +2 -0
  189. package/dashboard/dist/assets/index-xn9fmkHC.js.map +1 -0
  190. package/dashboard/dist/assets/index-yxnQew1X.js +2 -0
  191. package/dashboard/dist/assets/index-yxnQew1X.js.map +1 -0
  192. package/dashboard/dist/assets/{knowledge-BErJA3Je.js → knowledge-C_1r0faY.js} +2 -2
  193. package/dashboard/dist/assets/{knowledge-BErJA3Je.js.map → knowledge-C_1r0faY.js.map} +1 -1
  194. package/dashboard/dist/assets/{mcp-Cx9L42EN.js → mcp-BtG54ZAx.js} +2 -2
  195. package/dashboard/dist/assets/{mcp-Cx9L42EN.js.map → mcp-BtG54ZAx.js.map} +1 -1
  196. package/dashboard/dist/assets/{mcp-query-Cf6kcBoW.js → mcp-query-CSdQWxmv.js} +2 -2
  197. package/dashboard/dist/assets/{mcp-query-Cf6kcBoW.js.map → mcp-query-CSdQWxmv.js.map} +1 -1
  198. package/dashboard/dist/assets/{pipelines-CFctrv71.js → pipelines-DVkwxN64.js} +2 -2
  199. package/dashboard/dist/assets/{pipelines-CFctrv71.js.map → pipelines-DVkwxN64.js.map} +1 -1
  200. package/dashboard/dist/assets/{roles-CCXZtqDr.js → roles-CpRcUIMm.js} +2 -2
  201. package/dashboard/dist/assets/{roles-CCXZtqDr.js.map → roles-CpRcUIMm.js.map} +1 -1
  202. package/dashboard/dist/assets/{tasks-BPNj8ZWL.js → tasks-DNdvW5H6.js} +2 -2
  203. package/dashboard/dist/assets/{tasks-BPNj8ZWL.js.map → tasks-DNdvW5H6.js.map} +1 -1
  204. package/dashboard/dist/assets/{topics-CR4UBuSV.js → topics-DNC77Chw.js} +2 -2
  205. package/dashboard/dist/assets/{topics-CR4UBuSV.js.map → topics-DNC77Chw.js.map} +1 -1
  206. package/dashboard/dist/assets/{useCollapsedSections-BU5HULGs.js → useCollapsedSections-CGNA5oKV.js} +2 -2
  207. package/dashboard/dist/assets/{useCollapsedSections-BU5HULGs.js.map → useCollapsedSections-CGNA5oKV.js.map} +1 -1
  208. package/dashboard/dist/assets/{useDebouncedValue-BA5S7V54.js → useDebouncedValue-DmL3uNt_.js} +2 -2
  209. package/dashboard/dist/assets/{useDebouncedValue-BA5S7V54.js.map → useDebouncedValue-DmL3uNt_.js.map} +1 -1
  210. package/dashboard/dist/assets/{useEventHooks-BgdnN8Rj.js → useEventHooks-CUUeBSH1.js} +2 -2
  211. package/dashboard/dist/assets/{useEventHooks-BgdnN8Rj.js.map → useEventHooks-CUUeBSH1.js.map} +1 -1
  212. package/dashboard/dist/assets/{useFilterParams-x-Dg0Vgz.js → useFilterParams-Ch-a71bE.js} +2 -2
  213. package/dashboard/dist/assets/{useFilterParams-x-Dg0Vgz.js.map → useFilterParams-Ch-a71bE.js.map} +1 -1
  214. package/dashboard/dist/assets/{useNamespace-BDsKfT0f.js → useNamespace-D-AjLnPK.js} +2 -2
  215. package/dashboard/dist/assets/{useNamespace-BDsKfT0f.js.map → useNamespace-D-AjLnPK.js.map} +1 -1
  216. package/dashboard/dist/assets/{useYamlActivityEvents-CWZwHIlR.js → useYamlActivityEvents-DRdetOb_.js} +2 -2
  217. package/dashboard/dist/assets/{useYamlActivityEvents-CWZwHIlR.js.map → useYamlActivityEvents-DRdetOb_.js.map} +1 -1
  218. package/dashboard/dist/assets/{users-BqmKVXR1.js → users-BUgdEsec.js} +2 -2
  219. package/dashboard/dist/assets/{users-BqmKVXR1.js.map → users-BUgdEsec.js.map} +1 -1
  220. package/dashboard/dist/assets/{vendor-icons-BaQqUm-e.js → vendor-icons-CNyYGNsk.js} +3 -3
  221. package/dashboard/dist/assets/{vendor-icons-BaQqUm-e.js.map → vendor-icons-CNyYGNsk.js.map} +1 -1
  222. package/dashboard/dist/assets/vendor-query-DLp59M9_.js +35 -0
  223. package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +1 -0
  224. package/dashboard/dist/assets/vendor-react-zA2lQFDs.js +26 -0
  225. package/dashboard/dist/assets/vendor-react-zA2lQFDs.js.map +1 -0
  226. package/dashboard/dist/assets/{workflows-Dps45zjk.js → workflows-BfyR5VJt.js} +2 -2
  227. package/dashboard/dist/assets/workflows-BfyR5VJt.js.map +1 -0
  228. package/dashboard/dist/assets/{yaml-workflows-DhlTkbvY.js → yaml-workflows-Bz7yEnhl.js} +2 -2
  229. package/dashboard/dist/assets/{yaml-workflows-DhlTkbvY.js.map → yaml-workflows-Bz7yEnhl.js.map} +1 -1
  230. package/dashboard/dist/index.html +5 -5
  231. package/docs/api/http/escalations.md +3 -3
  232. package/docs/api/http/workflows.md +2 -1
  233. package/docs/api/mcp/admin.md +13 -7
  234. package/docs/api/sdk/escalations.md +3 -1
  235. package/docs/api/sdk/workflows.md +3 -2
  236. package/docs/architecture.md +2 -2
  237. package/docs/dashboard.md +6 -5
  238. package/docs/iam.md +3 -3
  239. package/docs/workflows.md +7 -5
  240. package/package.json +2 -2
  241. package/dashboard/dist/assets/AdminDashboard-Bgomc_jH.js +0 -2
  242. package/dashboard/dist/assets/AgentConfigPage-C6gDgz21.js +0 -16
  243. package/dashboard/dist/assets/AgentConfigPage-C6gDgz21.js.map +0 -1
  244. package/dashboard/dist/assets/AgentDetailPage-0rrH5FmV.js +0 -4
  245. package/dashboard/dist/assets/AgentDetailPage-0rrH5FmV.js.map +0 -1
  246. package/dashboard/dist/assets/AgentsPage-DkIU2zed.js +0 -2
  247. package/dashboard/dist/assets/AgentsPage-DkIU2zed.js.map +0 -1
  248. package/dashboard/dist/assets/AvailableEscalationsPage-C9DAtNGp.js +0 -2
  249. package/dashboard/dist/assets/BotPicker-MnI3OyE7.js +0 -2
  250. package/dashboard/dist/assets/CapabilitiesPage-Cv_AD_5i.js +0 -2
  251. package/dashboard/dist/assets/CapabilitiesPage-Cv_AD_5i.js.map +0 -1
  252. package/dashboard/dist/assets/CollapsibleSection-Ne-Q3QFM.js +0 -2
  253. package/dashboard/dist/assets/ConfirmDeleteModal-D9_1b4MW.js +0 -2
  254. package/dashboard/dist/assets/CopyableId-blg-gZvT.js +0 -2
  255. package/dashboard/dist/assets/CredentialsPage-B3Mfwl22.js +0 -2
  256. package/dashboard/dist/assets/CredentialsPage-B3Mfwl22.js.map +0 -1
  257. package/dashboard/dist/assets/CronLabel-CtjUBRPo.js +0 -2
  258. package/dashboard/dist/assets/CronLabel-CtjUBRPo.js.map +0 -1
  259. package/dashboard/dist/assets/CustomDurationPicker-Cp1fgzPX.js +0 -2
  260. package/dashboard/dist/assets/DataTable-ZWgVQg7F.js +0 -2
  261. package/dashboard/dist/assets/DropZone-CZDmNBn-.js +0 -2
  262. package/dashboard/dist/assets/ElapsedCell-Gr5UlUbn.js +0 -2
  263. package/dashboard/dist/assets/EmptyState-BcsfPq9T.js +0 -2
  264. package/dashboard/dist/assets/EscalationSchemaPage-C5tuV6SJ.js +0 -9
  265. package/dashboard/dist/assets/EscalationSchemaPage-C5tuV6SJ.js.map +0 -1
  266. package/dashboard/dist/assets/EscalationsOverview-BIZVnSBF.js +0 -2
  267. package/dashboard/dist/assets/EventTable-90aUfsNr.js +0 -2
  268. package/dashboard/dist/assets/EventTable-90aUfsNr.js.map +0 -1
  269. package/dashboard/dist/assets/FilterBar-BQ2JGg8U.js +0 -2
  270. package/dashboard/dist/assets/FilterBar-BQ2JGg8U.js.map +0 -1
  271. package/dashboard/dist/assets/GraphInvokePage-Io5ZucT8.js +0 -2
  272. package/dashboard/dist/assets/GraphInvokePage-Io5ZucT8.js.map +0 -1
  273. package/dashboard/dist/assets/HomePage-Cu0vUzTF.js +0 -2
  274. package/dashboard/dist/assets/HomePage-Cu0vUzTF.js.map +0 -1
  275. package/dashboard/dist/assets/ListToolbar-CdmIvEIF.js +0 -2
  276. package/dashboard/dist/assets/McpOverview-C-Ypezuv.js +0 -2
  277. package/dashboard/dist/assets/McpQueryDetailPage-DdontKcj.js +0 -5
  278. package/dashboard/dist/assets/McpQueryDetailPage-DdontKcj.js.map +0 -1
  279. package/dashboard/dist/assets/McpQueryPage-D-1TaOGG.js +0 -2
  280. package/dashboard/dist/assets/McpQueryPage-D-1TaOGG.js.map +0 -1
  281. package/dashboard/dist/assets/McpRunDetailPage-B1sCxKLD.js +0 -2
  282. package/dashboard/dist/assets/McpRunsPage-eWJ7cDa3.js +0 -2
  283. package/dashboard/dist/assets/McpRunsPage-eWJ7cDa3.js.map +0 -1
  284. package/dashboard/dist/assets/Modal-CSrxpXeM.js +0 -2
  285. package/dashboard/dist/assets/NamespacePill-DlqBTvFR.js +0 -2
  286. package/dashboard/dist/assets/OperationsPage-C5phWL0O.js +0 -2
  287. package/dashboard/dist/assets/OperationsPage-C5phWL0O.js.map +0 -1
  288. package/dashboard/dist/assets/OperatorDashboard-YP6kP-f_.js +0 -2
  289. package/dashboard/dist/assets/PageHeader-CFta2VaS.js +0 -2
  290. package/dashboard/dist/assets/PageHeaderWithStats-CcVAji-7.js +0 -2
  291. package/dashboard/dist/assets/PageHeaderWithStats-CcVAji-7.js.map +0 -1
  292. package/dashboard/dist/assets/PriorityBadge-B4ykBH7f.js +0 -2
  293. package/dashboard/dist/assets/ProcessDetailPage-C_BXQvBs.js +0 -2
  294. package/dashboard/dist/assets/ProcessDetailPage-C_BXQvBs.js.map +0 -1
  295. package/dashboard/dist/assets/ProcessesListPage-BNhFwTLl.js +0 -2
  296. package/dashboard/dist/assets/RoleDetailPage-8GLNjj9I.js +0 -11
  297. package/dashboard/dist/assets/RoleDetailPage-8GLNjj9I.js.map +0 -1
  298. package/dashboard/dist/assets/RolePill-CXEyPMqb.js +0 -2
  299. package/dashboard/dist/assets/RolePill-CXEyPMqb.js.map +0 -1
  300. package/dashboard/dist/assets/RolesPage-B59tE2lZ.js +0 -2
  301. package/dashboard/dist/assets/RolesPage-B59tE2lZ.js.map +0 -1
  302. package/dashboard/dist/assets/RowActions-BA9L9djf.js +0 -2
  303. package/dashboard/dist/assets/RunAsSelector-CokM3Ifp.js +0 -2
  304. package/dashboard/dist/assets/StatCard-DlgF0CJC.js +0 -2
  305. package/dashboard/dist/assets/StatCard-DlgF0CJC.js.map +0 -1
  306. package/dashboard/dist/assets/StatusBadge-D9MeQHrh.js +0 -2
  307. package/dashboard/dist/assets/StickyPagination-_H2j2CAH.js +0 -2
  308. package/dashboard/dist/assets/StreamMessageDetail-sSfHDYIa.js +0 -2
  309. package/dashboard/dist/assets/StreamMessageDetail-sSfHDYIa.js.map +0 -1
  310. package/dashboard/dist/assets/SwimlaneTimeline-LZWtfBK3.js +0 -2
  311. package/dashboard/dist/assets/SwimlaneTimeline-LZWtfBK3.js.map +0 -1
  312. package/dashboard/dist/assets/TagInput-CQg-TrV9.js +0 -2
  313. package/dashboard/dist/assets/TaskDetailPage-CHBV2V6R.js +0 -2
  314. package/dashboard/dist/assets/TaskDetailPage-CHBV2V6R.js.map +0 -1
  315. package/dashboard/dist/assets/TaskQueuePill-DyvtL8X4.js +0 -2
  316. package/dashboard/dist/assets/TasksListPage-B71FxvrY.js +0 -2
  317. package/dashboard/dist/assets/TimeAgo-JgT0U_sd.js +0 -2
  318. package/dashboard/dist/assets/TimestampCell-gEreK8Nn.js +0 -2
  319. package/dashboard/dist/assets/ToolPill-miuRcj1Q.js +0 -2
  320. package/dashboard/dist/assets/ToolTestPanel-ChfHw9Aq.js +0 -2
  321. package/dashboard/dist/assets/TopicDetailPage-DigI0HGt.js +0 -9
  322. package/dashboard/dist/assets/TopicDetailPage-DigI0HGt.js.map +0 -1
  323. package/dashboard/dist/assets/TopicsPage-BHjlFpPN.js +0 -2
  324. package/dashboard/dist/assets/TopicsPage-BHjlFpPN.js.map +0 -1
  325. package/dashboard/dist/assets/UserName-uncbaKYf.js +0 -2
  326. package/dashboard/dist/assets/WorkflowExecutionPage-DwzLKTkt.js +0 -2
  327. package/dashboard/dist/assets/WorkflowPill-BegV-iRF.js +0 -2
  328. package/dashboard/dist/assets/WorkflowPill-BegV-iRF.js.map +0 -1
  329. package/dashboard/dist/assets/WorkflowsDashboard-rpnGhGnl.js +0 -2
  330. package/dashboard/dist/assets/WorkflowsDashboard-rpnGhGnl.js.map +0 -1
  331. package/dashboard/dist/assets/WorkflowsOverview-ihhW8DiS.js +0 -2
  332. package/dashboard/dist/assets/YamlWorkflowDetailPage-C61-8y-E.js +0 -33
  333. package/dashboard/dist/assets/YamlWorkflowsPage-CMpgsLEo.js +0 -2
  334. package/dashboard/dist/assets/capabilities-BBTPqF-V.js +0 -2
  335. package/dashboard/dist/assets/escalation-CyJ_wz-f.js +0 -2
  336. package/dashboard/dist/assets/escalation-columns-DU4Jyxxo.js +0 -2
  337. package/dashboard/dist/assets/escalation-columns-DU4Jyxxo.js.map +0 -1
  338. package/dashboard/dist/assets/index-BBQggGcf.js +0 -2
  339. package/dashboard/dist/assets/index-BBQggGcf.js.map +0 -1
  340. package/dashboard/dist/assets/index-BHS-ubrT.js +0 -6
  341. package/dashboard/dist/assets/index-BHS-ubrT.js.map +0 -1
  342. package/dashboard/dist/assets/index-BVHXREYZ.js +0 -2
  343. package/dashboard/dist/assets/index-BVHXREYZ.js.map +0 -1
  344. package/dashboard/dist/assets/index-BiLZJ43R.js +0 -6
  345. package/dashboard/dist/assets/index-BoZydcaW.js +0 -63
  346. package/dashboard/dist/assets/index-BoZydcaW.js.map +0 -1
  347. package/dashboard/dist/assets/index-CCHGKErT.js +0 -2
  348. package/dashboard/dist/assets/index-CNprOGuS.js +0 -2
  349. package/dashboard/dist/assets/index-CZ6-l8_0.css +0 -1
  350. package/dashboard/dist/assets/index-CgeFUhUr.js +0 -2
  351. package/dashboard/dist/assets/index-CgeFUhUr.js.map +0 -1
  352. package/dashboard/dist/assets/index-ChniBGqD.js +0 -9
  353. package/dashboard/dist/assets/index-ChniBGqD.js.map +0 -1
  354. package/dashboard/dist/assets/index-CjXzZ19T.js +0 -2
  355. package/dashboard/dist/assets/index-CjXzZ19T.js.map +0 -1
  356. package/dashboard/dist/assets/index-D9pi0fs6.js +0 -2
  357. package/dashboard/dist/assets/index-DoivEaUZ.js +0 -2
  358. package/dashboard/dist/assets/index-DoivEaUZ.js.map +0 -1
  359. package/dashboard/dist/assets/index-Dzqt3g-K.js +0 -2
  360. package/dashboard/dist/assets/vendor-query-B2UbickB.js +0 -18
  361. package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +0 -1
  362. package/dashboard/dist/assets/vendor-react-CXumBFUA.js +0 -22
  363. package/dashboard/dist/assets/vendor-react-CXumBFUA.js.map +0 -1
  364. package/dashboard/dist/assets/workflows-Dps45zjk.js.map +0 -1
@@ -0,0 +1,16 @@
1
+ import{j as e,b as ne,u as le}from"./index-DgCS2Frb.js";import{a as x}from"./vendor-query-DLp59M9_.js";import{a as oe,d as ce,b as de}from"./agents-BpYMwrsB.js";import{E as pe,C as me,u as ue,a as be,b as he,c as Ne}from"./CronLabel-DQWBx57H.js";import{P as xe}from"./PageHeader-DcgGV0Y2.js";import{B as R,e as z,t as fe,R as B,l as $,p as X,a6 as U,b as Z,aN as ee,V as ge}from"./vendor-icons-CNyYGNsk.js";import{e as ve}from"./knowledge-C_1r0faY.js";import{R as te}from"./RunAsSelector-DiGzSfiG.js";import{u as Se}from"./workflows-BfyR5VJt.js";import{u as ye}from"./yaml-workflows-Bz7yEnhl.js";import{u as se}from"./capabilities-BKZZb8eM.js";import{u as we}from"./topics-DNC77Chw.js";import{W as H}from"./WorkflowPill-Cc2MlYbB.js";import{e as Ee,c as je,f as De}from"./vendor-react-zA2lQFDs.js";import"./BotPicker-mqwKVOE3.js";import"./bots-DI6Wqp5X.js";const Q={name:"",description:"",goals:"",rules:"",user_id:"",knowledge_domain:"",subscriptions:[],schedules:[]},Ve={topic:"",filter:"",reaction_type:"durable",workflow_type:"",pipeline_id:"",mcp_prompt:"",server_id:"",tool_name:"",input_mapping:"{}",execute_as:"",enabled:!0},_e={cron:"0 * * * *",reaction_type:"durable",workflow_type:"",pipeline_id:"",server_id:"",tool_name:"",envelope:"{}",execute_as:""};function ke(s,a){var o,m,u;const n=(m=(o=s.behaviors)==null?void 0:o.schedules)!=null&&m.length?s.behaviors.schedules.map(i=>({cron:i.cron||"",reaction_type:i.reaction_type||"durable",workflow_type:i.workflow_type||"",pipeline_id:i.pipeline_id||"",server_id:i.server_id||"",tool_name:i.tool_name||"",envelope:i.envelope?JSON.stringify(i.envelope,null,2):"{}",execute_as:i.execute_as||""})):(u=s.behaviors)!=null&&u.cron?[{cron:s.behaviors.cron,reaction_type:"durable",workflow_type:s.workflow_type??"",pipeline_id:"",server_id:"",tool_name:"",envelope:"{}",execute_as:""}]:[];return{name:s.id,description:s.description??"",goals:s.goals??"",rules:s.rules??"",user_id:s.user_id??"",knowledge_domain:s.knowledge_domain??"",subscriptions:a.map(i=>({id:i.id,topic:i.topic,filter:i.filter?JSON.stringify(i.filter,null,2):"",reaction_type:i.reaction_type,workflow_type:i.workflow_type??"",pipeline_id:i.pipeline_id??"",mcp_prompt:i.mcp_prompt??"",server_id:i.server_id??"",tool_name:i.tool_name??"",input_mapping:JSON.stringify(i.input_mapping??{},null,2),execute_as:i.execute_as??"",enabled:i.enabled})),schedules:n}}function Ce(s){var n;const a={};return s.schedules.length>0&&(a.schedules=s.schedules.map(o=>({cron:o.cron,reaction_type:o.reaction_type||"durable",workflow_type:o.reaction_type==="pipeline"?void 0:o.workflow_type,pipeline_id:o.reaction_type==="pipeline"?o.pipeline_id:void 0,envelope:F(o.envelope)??{},execute_as:o.execute_as||void 0})),a.cron=s.schedules[0].cron),{id:s.name,description:s.description||void 0,goals:s.goals||void 0,rules:s.rules||void 0,user_id:s.user_id||void 0,knowledge_domain:s.knowledge_domain||void 0,behaviors:a,workflow_type:((n=s.schedules[0])==null?void 0:n.workflow_type)||void 0,pipeline_id:void 0}}function Re(s){return s.subscriptions.map(a=>({id:a.id,topic:a.topic,filter:a.filter?F(a.filter):void 0,reaction_type:a.reaction_type,workflow_type:a.workflow_type||void 0,pipeline_id:a.pipeline_id||void 0,mcp_prompt:a.mcp_prompt||void 0,server_id:a.server_id||void 0,tool_name:a.tool_name||void 0,input_mapping:F(a.input_mapping)??{},execute_as:a.execute_as||void 0,enabled:a.enabled}))}function F(s){if(s.trim())try{return JSON.parse(s)}catch{return}}function Ae(s,a,n,o){let m;try{m=JSON.parse(s)}catch{m={}}const u=o.includes(a),i=n===""||n===void 0||n===null||Array.isArray(n)&&n.length===0||n==="[]";if(!u&&i){const{[a]:p,...c}=m;return JSON.stringify(c,null,2)}let h=n;if(typeof n=="string")try{const p=JSON.parse(n);Array.isArray(p)&&(h=p)}catch{}return JSON.stringify({...m,[a]:h},null,2)}const V="section-header mt-[3em] first:mt-0",P="label",E="hint",k="input",W="input-json w-full";function Pe({form:s,set:a}){return e.jsxDEV("div",{className:"space-y-8",children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Give your automation a name and describe what it does. The name appears everywhere — in events, logs, and the dashboard."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:14,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:identity"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Identity",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:17,columnNumber:194},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:17,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:13,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:P,children:"Name *"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:21,columnNumber:9},this),e.jsxDEV("input",{type:"text",value:s.name,onChange:n=>a("name",n.target.value),placeholder:"health-monitor",className:k},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:22,columnNumber:9},this),e.jsxDEV("p",{className:E,children:"Lowercase, kebab-case. This appears everywhere."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:23,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:20,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:P,children:"Description"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:27,columnNumber:9},this),e.jsxDEV("input",{type:"text",value:s.description,onChange:n=>a("description",n.target.value),placeholder:"Watches for workflow failures and captures diagnostics",className:k},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:28,columnNumber:9},this),e.jsxDEV("p",{className:E,children:"One sentence that explains what this automation does."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:29,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:26,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/IdentityStep.tsx",lineNumber:12,columnNumber:5},this)}function Ie({form:s,set:a}){return e.jsxDEV("div",{className:"space-y-8",children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Goals define what drives the automation. Rules define what constrains it."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:14,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:motivation"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Motivation",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:17,columnNumber:198},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:17,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:13,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-2 gap-8",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:P,children:"Goals"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:22,columnNumber:11},this),e.jsxDEV("textarea",{value:s.goals,onChange:n=>a("goals",n.target.value),placeholder:"Detect failures early, capture diagnostics, alert before cascading",rows:4,className:`${k} resize-none`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:23,columnNumber:11},this),e.jsxDEV("p",{className:E,children:"Primary motivation. What the automation is trying to achieve."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:24,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:21,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:P,children:"Rules"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:27,columnNumber:11},this),e.jsxDEV("textarea",{value:s.rules,onChange:n=>a("rules",n.target.value),placeholder:"Never auto-restart failed workflows. Always escalate to humans.",rows:4,className:`${k} resize-none`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:28,columnNumber:11},this),e.jsxDEV("p",{className:E,children:"Guardrails. What it must never do, even when goals suggest it should."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:29,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:26,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:20,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/MotivationStep.tsx",lineNumber:12,columnNumber:5},this)}function Me({form:s,set:a}){const{data:n}=ve(),o=(n==null?void 0:n.domains)??[];return e.jsxDEV("div",{className:"space-y-6",children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Assign a knowledge domain — the automation's memory. It stores context here over time."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:19,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:knowledge"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Knowledge",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:22,columnNumber:196},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:22,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:18,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:P,children:"Knowledge Domain"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:26,columnNumber:9},this),e.jsxDEV("input",{type:"text",value:s.knowledge_domain,onChange:m=>a("knowledge_domain",m.target.value),placeholder:"e.g., system-health, content-review, vendor-data",className:k,list:"domain-suggestions"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:27,columnNumber:9},this),e.jsxDEV("datalist",{id:"domain-suggestions",children:o.map(m=>e.jsxDEV("option",{value:m.domain},m.domain,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:36,columnNumber:31},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:35,columnNumber:9},this),e.jsxDEV("p",{className:E,children:"Choose an existing domain to share memory, or type a new name to create one."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:38,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:25,columnNumber:7},this),o.length>0&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:P,children:"Existing Domains"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:43,columnNumber:11},this),e.jsxDEV("div",{className:"space-y-0.5 mt-2",children:o.map(m=>e.jsxDEV("button",{type:"button",onClick:()=>a("knowledge_domain",m.domain),className:`w-full flex items-center gap-3 px-3 py-2 rounded-md text-left transition-colors ${s.knowledge_domain===m.domain?"border-l-2 border-l-accent bg-accent/5":"hover:bg-surface-hover border-l-2 border-l-transparent"}`,children:[e.jsxDEV(z,{className:"w-3.5 h-3.5 text-text-quaternary shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:54,columnNumber:17},this),e.jsxDEV("span",{className:"text-sm text-text-primary flex-1",children:m.domain},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:55,columnNumber:17},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary",children:[m.count," entries"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:56,columnNumber:17},this),e.jsxDEV("span",{className:"text-[9px] text-text-quaternary",children:e.jsxDEV(ne,{date:m.latest},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:57,columnNumber:67},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:57,columnNumber:17},this)]},m.domain,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:46,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:44,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:42,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/KnowledgeStep.tsx",lineNumber:17,columnNumber:5},this)}function qe({serverId:s,toolName:a,onChange:n}){const{data:o}=se(),m=x.useMemo(()=>{var t;return((t=o==null?void 0:o.categories)==null?void 0:t.flatMap(r=>r.tools))??[]},[o]),[u,i]=x.useState(!1),[h,p]=x.useState(""),c=x.useRef(null),N=x.useRef(null);x.useEffect(()=>{if(!u)return;function t(r){N.current&&!N.current.contains(r.target)&&i(!1)}return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[u]);const l=a?`${a}`:"",d=u?h:l,g=x.useMemo(()=>{const t=(u?h:"").toLowerCase();return t?m.filter(r=>r.name.toLowerCase().includes(t)||r.serverName.toLowerCase().includes(t)||(r.description??"").toLowerCase().includes(t)):m},[m,h,u]),b=a?m.find(t=>t.serverId===s&&t.name===a):void 0;return e.jsxDEV("div",{ref:N,className:"relative",children:[e.jsxDEV("input",{ref:c,type:"text",value:d,onFocus:()=>{i(!0),p(l)},onChange:t=>{const r=t.target.value;p(r),r||n("",""),u||i(!0)},placeholder:"Search capabilities...",className:"input font-mono text-sm w-full"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:59,columnNumber:7},this),!u&&(b==null?void 0:b.description)&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-1 italic",children:b.description},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:76,columnNumber:9},this),u&&g.length>0&&e.jsxDEV("div",{className:"absolute z-50 left-0 right-0 mt-1 max-h-64 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg",children:g.map(t=>e.jsxDEV("button",{type:"button",onClick:()=>{n(t.serverId,t.name),p(t.name),i(!1)},className:`w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors flex items-center gap-3 ${s===t.serverId&&a===t.name?"bg-accent/5":""}`,children:[e.jsxDEV("span",{className:"text-[11px] font-mono text-text-primary shrink-0",children:t.name},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:94,columnNumber:15},this),e.jsxDEV("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[9px] font-medium shrink-0 bg-accent/10 text-accent",children:[e.jsxDEV(fe,{className:"w-2 h-2",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:96,columnNumber:17},this),t.serverName]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:95,columnNumber:15},this),t.description&&e.jsxDEV("span",{className:"text-[10px] text-text-quaternary truncate",children:t.description},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:100,columnNumber:17},this)]},`${t.serverId}:${t.name}`,!0,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:82,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:80,columnNumber:9},this),u&&g.length===0&&h&&e.jsxDEV("div",{className:"absolute z-50 left-0 right-0 mt-1 rounded-md border border-surface-border bg-surface shadow-lg px-3 py-4 text-center",children:e.jsxDEV("p",{className:"text-[11px] text-text-quaternary",children:['No capabilities match "',h,'"']},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:109,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:108,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/CapabilityCombobox.tsx",lineNumber:58,columnNumber:5},this)}const Oe={durable:"Workflow",pipeline:"Pipeline",capability:"Capability",mcp_query:"MCP Query"},$e=["durable","pipeline","capability","mcp_query"];function ae({reactionType:s,onReactionTypeChange:a,workflowType:n,onWorkflowTypeChange:o,pipelineId:m,onPipelineIdChange:u,serverId:i,toolName:h,onCapabilityChange:p,mcpPrompt:c,onMcpPromptChange:N,availableTypes:l=[...$e]}){const{data:d}=Se(),g=(d??[]).filter(r=>r.invocable).map(r=>r.workflow_type),{data:b}=ye({status:"active"}),t=((b==null?void 0:b.workflows)??[]).map(r=>({id:r.id,name:r.graph_topic||r.id}));return e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{className:"flex gap-1",children:l.map(r=>{const f=s===r;return e.jsxDEV("button",{type:"button",onClick:()=>a(r),className:`px-3 py-1.5 text-[11px] font-medium rounded-md transition-colors ${f?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:Oe[r]},r,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:55,columnNumber:13},this)})},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:51,columnNumber:7},this),s==="durable"&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"label",children:"Workflow *"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:74,columnNumber:11},this),e.jsxDEV("select",{value:n,onChange:r=>o(r.target.value),className:"input",children:[e.jsxDEV("option",{value:"",children:"Select workflow..."},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:76,columnNumber:13},this),g.map(r=>e.jsxDEV("option",{value:r,children:r},r,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:77,columnNumber:45},this))]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:75,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:73,columnNumber:9},this),s==="pipeline"&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"label",children:"Pipeline *"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:84,columnNumber:11},this),e.jsxDEV("select",{value:m,onChange:r=>u(r.target.value),className:"input",children:[e.jsxDEV("option",{value:"",children:"Select pipeline..."},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:86,columnNumber:13},this),t.map(r=>e.jsxDEV("option",{value:r.id,children:r.name},r.id,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:87,columnNumber:35},this))]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:85,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:83,columnNumber:9},this),s==="capability"&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"label",children:"Capability *"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:94,columnNumber:11},this),e.jsxDEV(qe,{serverId:i,toolName:h,onChange:p},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:95,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:93,columnNumber:9},this),s==="mcp_query"&&N&&e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"label",children:"Prompt *"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:105,columnNumber:11},this),e.jsxDEV("textarea",{value:c??"",onChange:r=>N(r.target.value),placeholder:"Analyze the error and suggest remediation...",rows:3,className:"input resize-none"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:106,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:104,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/ReactionSelector.tsx",lineNumber:49,columnNumber:5},this)}const We={task:"bg-status-active/10 text-status-active",workflow:"bg-accent/15 text-accent",escalation:"bg-status-warning/10 text-status-warning",activity:"bg-status-active/10 text-status-active",knowledge:"bg-accent/10 text-accent",file:"bg-status-draft/10 text-status-draft",agent:"bg-status-success/10 text-status-success",app:"bg-status-error/10 text-status-error",milestone:"bg-accent/10 text-accent"};function Te({form:s,set:a}){const{data:n}=we({limit:200}),{data:o}=se(),m=(n==null?void 0:n.topics)??[],u=x.useMemo(()=>{var t;return((t=o==null?void 0:o.categories)==null?void 0:t.flatMap(r=>r.tools))??[]},[o]),[i,h]=x.useState(0),p=(t,r,f)=>{const v=[...s.subscriptions];v[t]={...v[t],[r]:f},a("subscriptions",v)},c=()=>{a("subscriptions",[...s.subscriptions,{...Ve}]),h(s.subscriptions.length)},N=t=>{a("subscriptions",s.subscriptions.filter((r,f)=>f!==t)),i>=s.subscriptions.length-1&&h(Math.max(0,s.subscriptions.length-2))},l=s.subscriptions,d=l[i],g=t=>t.topic?t.reaction_type==="durable"?!!t.workflow_type:t.reaction_type==="pipeline"?!!t.pipeline_id:t.reaction_type==="mcp_query"?!!t.mcp_prompt:t.reaction_type==="capability"?!!t.server_id&&!!t.tool_name:!1:!1,b=d?m.find(t=>t.topic===d.topic):void 0;return l.length===0?e.jsxDEV("div",{className:"max-w-xl",children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between mb-8",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Optional. When a matching event is published, the automation runs the configured workflow with the event payload."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:68,columnNumber:11},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:subscriptions"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Subscriptions",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:71,columnNumber:206},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:71,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:67,columnNumber:9},this),e.jsxDEV("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsxDEV(B,{className:"w-8 h-8 text-text-quaternary/40 mb-3",strokeWidth:1},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:74,columnNumber:11},this),e.jsxDEV("p",{className:"text-sm text-text-tertiary mb-2",children:"No event subscriptions yet"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:75,columnNumber:11},this),e.jsxDEV("p",{className:"text-[11px] text-text-quaternary max-w-sm mb-6",children:"Each subscription listens for a topic pattern and runs a workflow when it matches."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:76,columnNumber:11},this),e.jsxDEV("button",{onClick:c,className:"flex items-center gap-2 text-xs text-accent hover:text-accent-hover transition-colors",children:[e.jsxDEV($,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:80,columnNumber:13},this)," Add first subscription"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:79,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:73,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:66,columnNumber:7},this):e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between mb-6",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Optional. When a matching event is published, the automation runs the configured workflow with the event payload."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:90,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:subscriptions"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Subscriptions",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:93,columnNumber:204},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:93,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:89,columnNumber:7},this),e.jsxDEV("div",{className:"flex gap-8",children:[e.jsxDEV("div",{className:"w-52 shrink-0 space-y-0.5",children:[l.map((t,r)=>e.jsxDEV("div",{className:`group/sub flex items-center rounded-md transition-colors ${i===r?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxDEV("button",{onClick:()=>h(r),className:"flex-1 text-left px-3 py-2 min-w-0",children:[e.jsxDEV("div",{className:"flex items-center gap-1.5",children:[e.jsxDEV("span",{className:`w-1.5 h-1.5 rounded-full dot-ring shrink-0 ${g(t)?"bg-status-success":"bg-surface-border"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:105,columnNumber:19},this),e.jsxDEV("span",{className:"text-[11px] font-mono truncate",children:t.topic||"new subscription"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:106,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:104,columnNumber:17},this),e.jsxDEV("span",{className:"text-[9px] text-text-quaternary ml-3",children:["→ ",t.workflow_type||t.tool_name||t.reaction_type]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:108,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:103,columnNumber:15},this),e.jsxDEV("button",{onClick:f=>{f.stopPropagation(),confirm(`Remove subscription "${t.topic||"new"}"?
2
+
3
+ This takes effect when you save.`)&&N(r)},className:"opacity-0 group-hover/sub:opacity-100 px-2 text-text-quaternary hover:text-status-error transition-all",title:"Remove",children:e.jsxDEV(X,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:111,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:110,columnNumber:15},this)]},r,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:100,columnNumber:13},this)),e.jsxDEV("button",{onClick:c,className:"w-full flex items-center gap-1.5 px-3 py-2 text-[11px] text-accent hover:text-accent-hover transition-colors",children:[e.jsxDEV($,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:116,columnNumber:13},this)," Add"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:115,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:98,columnNumber:9},this),d&&e.jsxDEV("div",{className:"flex-1 min-w-0 space-y-12",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"When this event fires"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:126,columnNumber:15},this),e.jsxDEV(Je,{value:d.topic,onChange:t=>p(i,"topic",t),topics:m},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:127,columnNumber:15},this),(b==null?void 0:b.payload_schema)&&e.jsxDEV("div",{className:"mt-3 p-3 rounded-md bg-surface-sunken border border-surface-border",children:[e.jsxDEV("p",{className:"text-[10px] text-text-quaternary mb-1 uppercase tracking-wider font-medium",children:"Payload Schema"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:136,columnNumber:19},this),e.jsxDEV("pre",{className:"text-[11px] font-mono text-text-secondary whitespace-pre-wrap overflow-x-auto max-h-40",children:JSON.stringify(b.payload_schema.properties??b.payload_schema,null,2)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:137,columnNumber:19},this),b.description&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-2 italic",children:b.description},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:141,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:135,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:125,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"Run this reaction"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:149,columnNumber:15},this),e.jsxDEV(ae,{reactionType:d.reaction_type,onReactionTypeChange:t=>p(i,"reaction_type",t),workflowType:d.workflow_type,onWorkflowTypeChange:t=>p(i,"workflow_type",t),pipelineId:d.pipeline_id,onPipelineIdChange:t=>p(i,"pipeline_id",t),serverId:d.server_id,toolName:d.tool_name,onCapabilityChange:(t,r)=>{var C;const f=[...s.subscriptions],v={...f[i],server_id:t,tool_name:r},j=u.find(y=>y.serverId===t&&y.name===r),A=(C=j==null?void 0:j.inputSchema)==null?void 0:C.properties;if(A&&r){const y={};for(const I of Object.keys(A))I.startsWith("_")||(y[I]=`{event.data.${I}}`);v.input_mapping=JSON.stringify(y,null,2)}f[i]=v,a("subscriptions",f)},mcpPrompt:d.mcp_prompt,onMcpPromptChange:t=>p(i,"mcp_prompt",t)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:150,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:148,columnNumber:13},this),e.jsxDEV("div",{className:"grid grid-cols-2 gap-6",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"As identity"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:185,columnNumber:17},this),e.jsxDEV(te,{selected:d.execute_as,onChange:t=>p(i,"execute_as",t)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:186,columnNumber:17},this),e.jsxDEV("p",{className:E,children:"Identity used when invoking the workflow."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:187,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:184,columnNumber:15},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"But only if"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:190,columnNumber:17},this),e.jsxDEV("input",{type:"text",value:d.filter,onChange:t=>p(i,"filter",t.target.value),placeholder:'{"extension": "png"}',className:`${k} font-mono text-xs`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:191,columnNumber:17},this),e.jsxDEV("p",{className:E,children:"JSON filter against event.data. Click an operator to insert:"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:192,columnNumber:17},this),e.jsxDEV("div",{className:"flex flex-wrap gap-1.5 mt-1.5",children:[{label:"equals",value:'{"key": "val"}'},{label:"not equal",value:'{"key": {"$ne": "val"}}'},{label:"in list",value:'{"key": {"$in": ["a", "b"]}}'},{label:"exists",value:'{"key": {"$exists": true}}'}].map(t=>e.jsxDEV("button",{type:"button",onClick:()=>p(i,"filter",t.value),className:"px-2 py-0.5 text-[10px] font-mono rounded bg-accent/8 text-accent hover:bg-accent/15 transition-colors",children:t.label},t.label,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:200,columnNumber:21},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:193,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:189,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:183,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"With this data"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:215,columnNumber:15},this),d.reaction_type==="capability"&&d.tool_name?e.jsxDEV(Le,{tool:u.find(t=>t.serverId===d.server_id&&t.name===d.tool_name),value:d.input_mapping,onChange:t=>p(i,"input_mapping",t),eventSchema:b==null?void 0:b.payload_schema},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:217,columnNumber:17},this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV("textarea",{value:d.input_mapping,onChange:t=>p(i,"input_mapping",t.target.value),rows:10,className:W,placeholder:`{
4
+ "data": {
5
+ "orderId": "{event.data.orderId}",
6
+ "error": "{event.data.error}"
7
+ }
8
+ }`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:225,columnNumber:19},this),e.jsxDEV("p",{className:E,children:["Maps event fields to workflow input. ","{event.data.fieldName}"," resolves at runtime."]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:226,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:224,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:214,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:122,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:96,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:88,columnNumber:5},this)}function Le({tool:s,value:a,onChange:n,eventSchema:o}){var g,b;const[m,u]=x.useState(!1),i=((g=s==null?void 0:s.inputSchema)==null?void 0:g.properties)??{},h=((b=s==null?void 0:s.inputSchema)==null?void 0:b.required)??[],p=Object.entries(i).filter(([t])=>!t.startsWith("_")),c=x.useMemo(()=>[...p].sort(([t],[r])=>{const f=h.indexOf(t),v=h.indexOf(r);return f!==-1&&v!==-1?f-v:f!==-1?-1:v!==-1?1:t.localeCompare(r)}),[p,h]),N=x.useMemo(()=>{const t=[{value:"{event.type}",label:"event type"},{value:"{event.source}",label:"event source"},{value:"{event.timestamp}",label:"ISO timestamp"},{value:"{event.workflowId}",label:"workflow ID"},{value:"{event.workflowName}",label:"workflow name"}],r=o==null?void 0:o.properties;if(r)for(const[f,v]of Object.entries(r))t.push({value:`{event.data.${f}}`,label:v.description||f});return t},[o]),l=x.useMemo(()=>{try{return JSON.parse(a)}catch{return{}}},[a]),d=(t,r)=>{n(Ae(a,t,r,h))};return c.length===0||m?e.jsxDEV("div",{children:[c.length>0&&e.jsxDEV("div",{className:"flex justify-end mb-1",children:e.jsxDEV("button",{type:"button",onClick:()=>u(!1),className:"text-[10px] text-accent hover:text-accent-hover transition-colors",children:"Form view"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:297,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:296,columnNumber:11},this),e.jsxDEV("textarea",{value:a,onChange:t=>n(t.target.value),rows:8,className:W,placeholder:`{
9
+ "domain": "{event.data.name}",
10
+ "key": "{event.data.path}"
11
+ }`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:300,columnNumber:9},this),e.jsxDEV("p",{className:E,children:["Maps event fields to capability inputs. ","{event.data.fieldName}"," resolves at runtime."]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:301,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:294,columnNumber:7},this):e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center justify-between mb-3",children:[e.jsxDEV("p",{className:"text-[11px] text-text-tertiary",children:"Map each input to an event field or enter a static value."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:309,columnNumber:9},this),e.jsxDEV("button",{type:"button",onClick:()=>u(!0),className:"text-[10px] text-text-tertiary hover:text-accent transition-colors",children:"Raw JSON"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:312,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:308,columnNumber:7},this),e.jsxDEV("div",{className:"space-y-4",children:c.map(([t,r])=>{const f=h.includes(t),v=r.description,j=r.type,A=typeof l[t]=="string"?l[t]:typeof l[t]=="object"?JSON.stringify(l[t]):l[t]!=null?String(l[t]):"";return e.jsxDEV("div",{className:"bg-surface-sunken/30 rounded-md px-4 py-3",children:[e.jsxDEV("div",{className:"flex items-baseline gap-2 mb-0.5",children:[e.jsxDEV("label",{className:"text-[11px] font-semibold uppercase tracking-wider text-text-secondary",children:[t.replace(/[_-]/g," "),f&&e.jsxDEV("span",{className:"text-status-error ml-0.5",children:"*"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:329,columnNumber:29},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:327,columnNumber:17},this),j&&e.jsxDEV("span",{className:"text-[9px] text-text-quaternary",children:j},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:331,columnNumber:31},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:326,columnNumber:15},this),v&&e.jsxDEV("p",{className:"text-[10px] text-text-quaternary mb-2",children:v},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:333,columnNumber:24},this),e.jsxDEV(Ke,{value:A,onChange:C=>d(t,C),suggestions:N,fieldType:j,placeholder:`{event.data.${t}}`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:334,columnNumber:15},this)]},t,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:325,columnNumber:13},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:315,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:307,columnNumber:5},this)}function Ke({value:s,onChange:a,suggestions:n,fieldType:o,placeholder:m}){const[u,i]=x.useState(!1),[h,p]=x.useState(""),c=x.useRef(null);x.useEffect(()=>{if(!u)return;function l(d){c.current&&!c.current.contains(d.target)&&i(!1)}return document.addEventListener("mousedown",l),()=>document.removeEventListener("mousedown",l)},[u]);const N=n.filter(l=>l.value.toLowerCase().includes(h.toLowerCase())||l.label.toLowerCase().includes(h.toLowerCase()));if(o==="object")return e.jsxDEV("textarea",{value:s,onChange:l=>{try{a(JSON.parse(l.target.value))}catch{a(l.target.value)}},rows:3,className:`${W} text-xs`,placeholder:'{ "source": "{event.source}" }'},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:377,columnNumber:7},this);if(o==="array"){const l=(()=>{try{const d=JSON.parse(s);if(Array.isArray(d))return d.map(String)}catch{}return s?s.split(",").map(d=>d.trim()).filter(Boolean):[]})();return e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex flex-wrap gap-1.5 mb-2 min-h-[28px]",children:l.map((d,g)=>e.jsxDEV("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 text-[11px] font-mono bg-accent/10 text-accent rounded-full",children:[d,e.jsxDEV("button",{type:"button",onClick:()=>{const b=l.filter((t,r)=>r!==g);a(JSON.stringify(b))},className:"text-accent/50 hover:text-accent ml-0.5",children:"×"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:406,columnNumber:15},this)]},g,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:404,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:402,columnNumber:9},this),e.jsxDEV("input",{type:"text",className:"input font-mono text-xs w-full",placeholder:"Type a value and press Enter",onKeyDown:d=>{if(d.key==="Enter"||d.key===","){d.preventDefault();const g=d.target.value.trim();g&&(a(JSON.stringify([...l,g])),d.target.value="")}}},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:416,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:401,columnNumber:7},this)}return e.jsxDEV("div",{ref:c,className:"relative",children:[e.jsxDEV("input",{type:"text",value:s,onFocus:()=>{i(!0),p("")},onChange:l=>{a(l.target.value),p(l.target.value),u||i(!0)},className:"input font-mono text-xs w-full",placeholder:m},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:437,columnNumber:7},this),u&&N.length>0&&e.jsxDEV("div",{className:"absolute z-50 left-0 right-0 mt-1 max-h-48 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg",children:N.map(l=>e.jsxDEV("button",{type:"button",onClick:()=>{a(l.value),i(!1)},className:`w-full text-left px-3 py-1.5 hover:bg-surface-hover transition-colors flex items-center gap-3 ${s===l.value?"bg-accent/5":""}`,children:[e.jsxDEV("span",{className:"text-[11px] font-mono text-accent shrink-0",children:l.value},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:454,columnNumber:15},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary truncate",children:l.label},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:455,columnNumber:15},this)]},l.value,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:448,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:446,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:436,columnNumber:5},this)}function Je({value:s,onChange:a,topics:n}){const[o,m]=x.useState(!1),[u,i]=x.useState(""),h=x.useRef(null),p=x.useRef(null);x.useEffect(()=>{function l(d){p.current&&!p.current.contains(d.target)&&m(!1)}return o&&document.addEventListener("mousedown",l),()=>document.removeEventListener("mousedown",l)},[o]);const c=o?u:s,N=n.filter(l=>l.topic.toLowerCase().includes((o?u:"").toLowerCase())||(l.description??"").toLowerCase().includes((o?u:"").toLowerCase()));return e.jsxDEV("div",{ref:p,className:"relative",children:[e.jsxDEV("input",{ref:h,type:"text",value:c,onFocus:()=>{m(!0),i(s)},onChange:l=>{const d=l.target.value;i(d),a(d),o||m(!0)},placeholder:"workflow.failed or app.>",className:`${k} font-mono`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:495,columnNumber:7},this),o&&N.length>0&&e.jsxDEV("div",{className:"absolute z-50 left-0 right-0 mt-1 max-h-64 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg",children:N.map(l=>{const d=We[l.category]??"bg-surface-sunken text-text-tertiary";return e.jsxDEV("button",{type:"button",onClick:()=>{a(l.topic),i(l.topic),m(!1)},className:`w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors flex items-center gap-3 ${s===l.topic?"bg-accent/5":""}`,children:[e.jsxDEV("span",{className:"text-[11px] font-mono text-text-primary shrink-0",children:l.topic},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:527,columnNumber:17},this),e.jsxDEV("span",{className:`inline-flex items-center px-1.5 py-0.5 rounded text-[9px] font-medium shrink-0 ${d}`,children:l.category},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:528,columnNumber:17},this),l.description&&e.jsxDEV("span",{className:"text-[10px] text-text-quaternary truncate",children:l.description},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:530,columnNumber:19},this)]},l.topic,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:515,columnNumber:15},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:511,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/SubscriptionsStep.tsx",lineNumber:494,columnNumber:5},this)}const Fe=["*/5 * * * *","*/15 * * * *","0 * * * *","0 */4 * * *","0 7 * * *","0 9 * * 1-5"];function J(s){return{"* * * * *":"Every minute","*/5 * * * *":"Every 5 min","*/15 * * * *":"Every 15 min","0 * * * *":"Hourly","0 */4 * * *":"Every 4 hours","0 7 * * *":"Daily 7 AM UTC","0 9 * * 1-5":"Weekdays 9 AM UTC","0 0 * * 1":"Weekly Monday"}[s]||s}function ze({form:s,set:a}){const[n,o]=x.useState(0),m=(c,N,l)=>{const d=[...s.schedules];d[c]={...d[c],[N]:l},a("schedules",d)},u=()=>{a("schedules",[...s.schedules,{..._e}]),o(s.schedules.length)},i=c=>{a("schedules",s.schedules.filter((N,l)=>l!==c)),n>=s.schedules.length-1&&o(Math.max(0,s.schedules.length-2))},h=s.schedules,p=h[n];return h.length===0?e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 mb-8 flex items-start justify-between",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Optional. Each schedule runs a workflow on a cron timer."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:62,columnNumber:11},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:schedule"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Schedule",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:65,columnNumber:196},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:65,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:61,columnNumber:9},this),e.jsxDEV("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsxDEV(U,{className:"w-8 h-8 text-text-quaternary/40 mb-3",strokeWidth:1},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:68,columnNumber:11},this),e.jsxDEV("p",{className:"text-sm text-text-tertiary mb-2",children:"No schedules"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:69,columnNumber:11},this),e.jsxDEV("p",{className:"text-[11px] text-text-quaternary max-w-sm mb-6",children:"Add a schedule to run a workflow on a recurring cron timer."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:70,columnNumber:11},this),e.jsxDEV("button",{onClick:u,className:"flex items-center gap-2 text-xs text-accent hover:text-accent-hover transition-colors",children:[e.jsxDEV($,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:74,columnNumber:13},this)," Add schedule"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:73,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:67,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:60,columnNumber:7},this):e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"border-l-2 border-accent/30 pl-3 py-1 mb-6 flex items-start justify-between",children:[e.jsxDEV("p",{className:"text-[12px] text-text-secondary italic leading-relaxed",children:"Each schedule runs a workflow on a timer. An automation can have multiple schedules targeting different workflows."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:84,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{window.location.hash="#docs:agents.md:schedule"},className:"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3",title:"Docs: Schedule",children:e.jsxDEV(R,{className:"w-3 h-3",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:87,columnNumber:194},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:87,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:83,columnNumber:7},this),e.jsxDEV("div",{className:"flex gap-8",children:[e.jsxDEV("div",{className:"w-48 shrink-0 space-y-0.5",children:[h.map((c,N)=>e.jsxDEV("div",{className:`group/sched flex items-center rounded-md transition-colors ${n===N?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxDEV("button",{onClick:()=>o(N),className:"flex-1 text-left px-3 py-2 min-w-0",children:[e.jsxDEV("span",{className:"text-[11px] font-mono block",children:c.cron||"new schedule"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:98,columnNumber:17},this),e.jsxDEV("span",{className:"text-[9px] text-text-quaternary",children:[(c.reaction_type==="pipeline"?c.pipeline_id:c.workflow_type)||"no target"," · ",J(c.cron)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:99,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:97,columnNumber:15},this),e.jsxDEV("button",{onClick:l=>{l.stopPropagation(),confirm(`Remove schedule "${c.cron||"new"}"?
12
+
13
+ This takes effect when you save.`)&&i(N)},className:"opacity-0 group-hover/sched:opacity-100 px-2 text-text-quaternary hover:text-status-error transition-all",title:"Remove",children:e.jsxDEV(X,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:102,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:101,columnNumber:15},this)]},N,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:94,columnNumber:13},this)),e.jsxDEV("button",{onClick:u,className:"w-full flex items-center gap-1.5 px-3 py-2 text-[11px] text-accent hover:text-accent-hover transition-colors",children:[e.jsxDEV($,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:107,columnNumber:13},this)," Add"]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:106,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:92,columnNumber:9},this),p&&e.jsxDEV("div",{className:"flex-1 min-w-0 space-y-12",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"Run every"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:117,columnNumber:15},this),e.jsxDEV("input",{type:"text",value:p.cron,onChange:c=>m(n,"cron",c.target.value),placeholder:"0 * * * *",className:`${k} font-mono`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:118,columnNumber:15},this),p.cron&&e.jsxDEV("p",{className:"text-[11px] text-accent/80 mt-1",children:J(p.cron)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:119,columnNumber:30},this),e.jsxDEV("div",{className:"flex gap-3 mt-2 overflow-x-auto",children:Fe.map(c=>e.jsxDEV("button",{type:"button",onClick:()=>m(n,"cron",c),className:`text-[10px] font-mono whitespace-nowrap transition-colors ${p.cron===c?"text-accent font-medium":"text-accent/50 hover:text-accent"}`,children:J(c)},c,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:122,columnNumber:19},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:120,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:116,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"Run this reaction"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:131,columnNumber:15},this),e.jsxDEV(ae,{reactionType:p.reaction_type,onReactionTypeChange:c=>m(n,"reaction_type",c),workflowType:p.workflow_type,onWorkflowTypeChange:c=>m(n,"workflow_type",c),pipelineId:p.pipeline_id,onPipelineIdChange:c=>m(n,"pipeline_id",c),serverId:p.server_id,toolName:p.tool_name,onCapabilityChange:(c,N)=>{m(n,"server_id",c),m(n,"tool_name",N)},availableTypes:["durable","pipeline","capability"]},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:132,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:130,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"As identity"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:149,columnNumber:15},this),e.jsxDEV(te,{selected:p.execute_as,onChange:c=>m(n,"execute_as",c)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:150,columnNumber:15},this),e.jsxDEV("p",{className:E,children:"Identity used when invoking."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:151,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:148,columnNumber:13},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:V,children:"With this data"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:156,columnNumber:15},this),e.jsxDEV("textarea",{value:p.envelope,onChange:c=>m(n,"envelope",c.target.value),rows:10,className:W,placeholder:`{
14
+ "data": { "source": "cron" }
15
+ }`},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:157,columnNumber:15},this),e.jsxDEV("p",{className:E,children:"Static payload passed to the workflow on each invocation."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:158,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:155,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:113,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:90,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ScheduleStep.tsx",lineNumber:82,columnNumber:5},this)}function q({icon:s,color:a,title:n,children:o}){return e.jsxDEV("div",{className:"mb-10",children:[e.jsxDEV("div",{className:"flex items-center gap-2 mb-2 pb-1.5 border-b border-surface-border/40",children:[e.jsxDEV(s,{className:`w-3.5 h-3.5 ${a}`,strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:15,columnNumber:9},this),e.jsxDEV("h3",{className:"text-xs font-semibold uppercase tracking-widest text-accent/80",children:n},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:16,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:14,columnNumber:7},this),e.jsxDEV("div",{className:"pl-5.5",children:o},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:18,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:13,columnNumber:5},this)}function O({label:s,children:a}){return e.jsxDEV("div",{className:"flex gap-3 py-0.5",children:[e.jsxDEV("span",{className:"text-[10px] text-text-quaternary w-20 shrink-0",children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:26,columnNumber:7},this),e.jsxDEV("span",{className:"text-xs text-text-primary",children:a},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:27,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:25,columnNumber:5},this)}function Be({form:s}){return e.jsxDEV("div",{children:[e.jsxDEV(q,{icon:Z,color:"text-accent",title:"Identity",children:[e.jsxDEV(O,{label:"Name",children:s.name||"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:36,columnNumber:9},this),s.description&&e.jsxDEV(O,{label:"Description",children:s.description},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:37,columnNumber:30},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:35,columnNumber:7},this),(s.goals||s.rules)&&e.jsxDEV(q,{icon:ee,color:"text-accent",title:"Motivation",children:[s.goals&&e.jsxDEV(O,{label:"Goals",children:s.goals},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:42,columnNumber:26},this),s.rules&&e.jsxDEV(O,{label:"Rules",children:s.rules},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:43,columnNumber:26},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:41,columnNumber:9},this),e.jsxDEV(q,{icon:z,color:"text-accent",title:"Knowledge",children:e.jsxDEV(O,{label:"Domain",children:s.knowledge_domain||"None"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:48,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:47,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-2 gap-x-10",children:[e.jsxDEV(q,{icon:B,color:"text-accent",title:`Subscriptions (${s.subscriptions.length})`,children:s.subscriptions.length===0?e.jsxDEV("span",{className:"text-[11px] text-text-quaternary",children:"None configured"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:55,columnNumber:13},this):e.jsxDEV("div",{className:"divide-y divide-surface-border/30",children:s.subscriptions.map((a,n)=>e.jsxDEV("div",{className:"flex items-center py-1.5",children:[e.jsxDEV("div",{className:"flex-1 min-w-0",children:e.jsxDEV(pe,{topic:a.topic||"unset"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:60,columnNumber:51},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:60,columnNumber:19},this),e.jsxDEV("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsxDEV("span",{className:"text-text-quaternary text-[10px]",children:"→"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:61,columnNumber:71},this),a.workflow_type?e.jsxDEV(H,{type:a.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:61,columnNumber:151},this):e.jsxDEV("span",{className:"text-[11px] text-text-quaternary",children:a.reaction_type},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:61,columnNumber:195},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:61,columnNumber:19},this)]},n,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:59,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:57,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:53,columnNumber:9},this),e.jsxDEV(q,{icon:U,color:"text-accent",title:`Schedules (${s.schedules.length})`,children:s.schedules.length===0?e.jsxDEV("span",{className:"text-[11px] text-text-quaternary",children:"None configured"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:70,columnNumber:13},this):e.jsxDEV("div",{className:"divide-y divide-surface-border/30",children:s.schedules.map((a,n)=>e.jsxDEV("div",{className:"flex items-center py-1.5",children:[e.jsxDEV("div",{className:"flex-1 min-w-0",children:e.jsxDEV(me,{cron:a.cron},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:75,columnNumber:51},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:75,columnNumber:19},this),e.jsxDEV("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsxDEV("span",{className:"text-text-quaternary text-[10px]",children:"→"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:76,columnNumber:71},this),a.workflow_type?e.jsxDEV(H,{type:a.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:76,columnNumber:149},this):e.jsxDEV("span",{className:"text-[11px] text-text-quaternary",children:"no workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:76,columnNumber:191},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:76,columnNumber:19},this)]},n,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:74,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:72,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:68,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:52,columnNumber:7},this),e.jsxDEV("div",{className:"border-l-2 border-status-success/30 pl-3 py-2 mt-6",children:e.jsxDEV("p",{className:"text-[11px] text-text-tertiary leading-relaxed",children:"After saving, subscriptions and schedules activate immediately. You can pause the automation anytime."},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:85,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:84,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/ReviewStep.tsx",lineNumber:34,columnNumber:5},this)}const Ue=[{id:1,label:"Identity",icon:Z},{id:2,label:"Motivation",icon:ee},{id:3,label:"Knowledge",icon:z},{id:4,label:"Subscriptions",icon:B},{id:5,label:"Schedules",icon:U},{id:6,label:"Review",icon:ge}];function dt(){var G;const{id:s}=Ee(),a=!s,n=je(),{data:o}=le(),u=!!((G=o==null?void 0:o.ai)!=null&&G.enabled)?"Agent":"Automation",{data:i,isLoading:h}=oe(a?null:s),{data:p}=ue(a?null:s),c=ce(),N=de(),l=be(),d=he(),g=Ne(),[b,t]=x.useState(Q),[r,f]=x.useState(!1),[v,j]=x.useState(""),[A,C]=De(),y=parseInt(A.get("step")||"1",10),I=x.useCallback(S=>{C(w=>{const _=new URLSearchParams(w);return _.set("step",String(S)),_},{replace:!0})},[C]);x.useEffect(()=>{if(!r){if(a){t(Q),f(!0);return}i&&p&&(t(ke(i,p.subscriptions??[])),f(!0))}},[i,p,a,r]);const M=(S,w)=>t(_=>({..._,[S]:w})),ie=async()=>{j("");try{const S=Ce(b);let w=s;a?w=(await c.mutateAsync(S)).id:await N.mutateAsync({id:s,...S});const _=Re(b),re=(p==null?void 0:p.subscriptions)??[],T=new Set(re.map(D=>D.id));for(const D of _)if(D.id&&T.has(D.id)){const{id:L,...K}=D;await d.mutateAsync({agentId:w,subId:L,...K}),T.delete(L)}else{const{id:L,...K}=D;await l.mutateAsync({agentId:w,...K})}for(const D of T)await g.mutateAsync({agentId:w,subId:D});n(`/agents/${w}`)}catch(S){j(S.message)}};if(!a&&h)return e.jsxDEV("div",{className:"animate-pulse space-y-4",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-48"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:114,columnNumber:53},this),e.jsxDEV("div",{className:"h-60 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:114,columnNumber:107},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:114,columnNumber:12},this);const Y=c.isPending||N.isPending;return e.jsxDEV("div",{children:[e.jsxDEV(xe,{title:a?`New ${u}`:`${u}: ${(i==null?void 0:i.id)??""}`,docsHash:"#docs:agents.md"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:121,columnNumber:7},this),e.jsxDEV("div",{className:"flex gap-10",children:[e.jsxDEV("nav",{className:"w-44 shrink-0 sticky top-0 self-start pt-2",children:[e.jsxDEV("div",{className:"space-y-0.5",children:Ue.map(S=>{const w=S.icon,_=y===S.id;return e.jsxDEV("button",{onClick:()=>I(S.id),className:`w-full flex items-center gap-2.5 px-3 py-2 rounded-md text-left transition-colors ${_?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:[e.jsxDEV(w,{className:"w-3.5 h-3.5 shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:143,columnNumber:19},this),e.jsxDEV("span",{className:"text-xs font-medium",children:S.label},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:144,columnNumber:19},this)]},S.id,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:134,columnNumber:17},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:129,columnNumber:11},this),e.jsxDEV("div",{className:"mt-8 pt-4 border-t border-surface-border space-y-2",children:[e.jsxDEV("button",{onClick:ie,disabled:!b.name.trim()||Y,className:"w-full btn-primary text-xs disabled:opacity-50",children:Y?"Saving...":a?`Create ${u}`:"Save"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:152,columnNumber:13},this),e.jsxDEV("button",{onClick:()=>n(a?"/agents":`/agents/${s}`),className:"w-full btn-ghost text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:159,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:151,columnNumber:11},this),v&&e.jsxDEV("p",{className:"text-xs text-status-error mt-3",children:v},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:167,columnNumber:25},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:128,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1 min-w-0 pt-2",children:[y===1&&e.jsxDEV(Pe,{form:b,set:M},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:172,columnNumber:29},this),y===2&&e.jsxDEV(Ie,{form:b,set:M},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:173,columnNumber:29},this),y===3&&e.jsxDEV(Me,{form:b,set:M},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:174,columnNumber:29},this),y===4&&e.jsxDEV(Te,{form:b,set:M},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:175,columnNumber:29},this),y===5&&e.jsxDEV(ze,{form:b,set:M},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:176,columnNumber:29},this),y===6&&e.jsxDEV(Be,{form:b},void 0,!1,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:177,columnNumber:29},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:171,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:126,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/agents/detail/AgentConfigPage.tsx",lineNumber:120,columnNumber:5},this)}export{dt as AgentConfigPage};
16
+ //# sourceMappingURL=AgentConfigPage-DFiXRBWs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentConfigPage-DFiXRBWs.js","sources":["../../src/pages/agents/detail/agent-form-types.ts","../../src/pages/agents/detail/IdentityStep.tsx","../../src/pages/agents/detail/MotivationStep.tsx","../../src/pages/agents/detail/KnowledgeStep.tsx","../../src/components/common/form/CapabilityCombobox.tsx","../../src/components/common/form/ReactionSelector.tsx","../../src/pages/agents/detail/SubscriptionsStep.tsx","../../src/pages/agents/detail/ScheduleStep.tsx","../../src/pages/agents/detail/ReviewStep.tsx","../../src/pages/agents/detail/AgentConfigPage.tsx"],"sourcesContent":["import type { Agent, AgentBehaviors } from '../../../api/agents';\nimport type { AgentSubscription } from '../../../api/agent-subscriptions';\n\nexport interface SubscriptionFormState {\n id?: string;\n topic: string;\n filter: string;\n reaction_type: 'durable' | 'pipeline' | 'mcp_query' | 'capability';\n workflow_type: string;\n pipeline_id: string;\n mcp_prompt: string;\n server_id: string;\n tool_name: string;\n input_mapping: string;\n execute_as: string;\n enabled: boolean;\n}\n\nexport interface ScheduleFormState {\n cron: string;\n reaction_type: 'durable' | 'pipeline' | 'capability';\n workflow_type: string;\n pipeline_id: string;\n server_id: string;\n tool_name: string;\n envelope: string; // JSON string\n execute_as: string;\n}\n\nexport interface AgentFormState {\n name: string;\n description: string;\n goals: string;\n rules: string;\n user_id: string;\n knowledge_domain: string;\n subscriptions: SubscriptionFormState[];\n schedules: ScheduleFormState[];\n}\n\nexport const EMPTY_FORM: AgentFormState = {\n name: '',\n description: '',\n goals: '',\n rules: '',\n user_id: '',\n knowledge_domain: '',\n subscriptions: [],\n schedules: [],\n};\n\nexport const STEP_LABELS = ['Identity', 'Motivation', 'Knowledge', 'Subscriptions', 'Schedule', 'Review'];\n\nexport const EMPTY_SUBSCRIPTION: SubscriptionFormState = {\n topic: '',\n filter: '',\n reaction_type: 'durable',\n workflow_type: '',\n pipeline_id: '',\n mcp_prompt: '',\n server_id: '',\n tool_name: '',\n input_mapping: '{}',\n execute_as: '',\n enabled: true,\n};\n\nexport const EMPTY_SCHEDULE: ScheduleFormState = {\n cron: '0 * * * *',\n reaction_type: 'durable',\n workflow_type: '',\n pipeline_id: '',\n server_id: '',\n tool_name: '',\n envelope: '{}',\n execute_as: '',\n};\n\nexport function isStepValid(step: number, form: AgentFormState): boolean {\n switch (step) {\n case 1: return form.name.trim().length > 0;\n case 2: return true;\n case 3: return true;\n case 4: {\n return form.subscriptions.every((s) => {\n if (!s.topic.trim()) return false;\n if (s.reaction_type === 'durable' && !s.workflow_type) return false;\n if (s.reaction_type === 'pipeline' && !s.pipeline_id) return false;\n if (s.reaction_type === 'mcp_query' && !s.mcp_prompt) return false;\n if (s.reaction_type === 'capability' && (!s.server_id || !s.tool_name)) return false;\n return true;\n });\n }\n case 5: {\n return form.schedules.every((s) => {\n if (!s.cron) return false;\n if (s.reaction_type === 'pipeline') return !!s.pipeline_id;\n if (s.reaction_type === 'capability') return !!s.server_id && !!s.tool_name;\n return !!s.workflow_type;\n });\n }\n case 6: return true;\n default: return true;\n }\n}\n\nexport function agentToForm(\n agent: Agent,\n subscriptions: AgentSubscription[],\n): AgentFormState {\n // Parse schedules from behaviors.schedules or fall back to legacy single cron\n const schedules: ScheduleFormState[] = agent.behaviors?.schedules?.length\n ? (agent.behaviors.schedules as any[]).map((s: any) => ({\n cron: s.cron || '',\n reaction_type: s.reaction_type || 'durable',\n workflow_type: s.workflow_type || '',\n pipeline_id: s.pipeline_id || '',\n server_id: s.server_id || '',\n tool_name: s.tool_name || '',\n envelope: s.envelope ? JSON.stringify(s.envelope, null, 2) : '{}',\n execute_as: s.execute_as || '',\n }))\n : agent.behaviors?.cron\n ? [{ cron: agent.behaviors.cron, reaction_type: 'durable' as const, workflow_type: agent.workflow_type ?? '', pipeline_id: '', server_id: '', tool_name: '', envelope: '{}', execute_as: '' }]\n : [];\n\n return {\n name: agent.id,\n description: agent.description ?? '',\n goals: agent.goals ?? '',\n rules: agent.rules ?? '',\n user_id: agent.user_id ?? '',\n knowledge_domain: agent.knowledge_domain ?? '',\n subscriptions: subscriptions.map((s) => ({\n id: s.id,\n topic: s.topic,\n filter: s.filter ? JSON.stringify(s.filter, null, 2) : '',\n reaction_type: s.reaction_type,\n workflow_type: s.workflow_type ?? '',\n pipeline_id: s.pipeline_id ?? '',\n mcp_prompt: s.mcp_prompt ?? '',\n server_id: s.server_id ?? '',\n tool_name: s.tool_name ?? '',\n input_mapping: JSON.stringify(s.input_mapping ?? {}, null, 2),\n execute_as: s.execute_as ?? '',\n enabled: s.enabled,\n })),\n schedules,\n };\n}\n\nexport function formToAgentPayload(form: AgentFormState): Record<string, any> {\n const behaviors: AgentBehaviors = {};\n // Store schedules array in behaviors\n if (form.schedules.length > 0) {\n (behaviors as any).schedules = form.schedules.map((s) => ({\n cron: s.cron,\n reaction_type: s.reaction_type || 'durable',\n workflow_type: s.reaction_type === 'pipeline' ? undefined : s.workflow_type,\n pipeline_id: s.reaction_type === 'pipeline' ? s.pipeline_id : undefined,\n envelope: tryParseJson(s.envelope) ?? {},\n execute_as: s.execute_as || undefined,\n }));\n // Legacy compat: also set top-level cron from first schedule\n behaviors.cron = form.schedules[0].cron;\n }\n\n return {\n id: form.name,\n description: form.description || undefined,\n goals: form.goals || undefined,\n rules: form.rules || undefined,\n user_id: form.user_id || undefined,\n knowledge_domain: form.knowledge_domain || undefined,\n behaviors,\n workflow_type: form.schedules[0]?.workflow_type || undefined,\n pipeline_id: undefined,\n };\n}\n\nexport function formToSubscriptionPayloads(form: AgentFormState): Array<{\n id?: string;\n topic: string;\n filter?: Record<string, any>;\n reaction_type: string;\n workflow_type?: string;\n pipeline_id?: string;\n mcp_prompt?: string;\n input_mapping: Record<string, any>;\n execute_as?: string;\n enabled: boolean;\n}> {\n return form.subscriptions.map((s) => ({\n id: s.id,\n topic: s.topic,\n filter: s.filter ? tryParseJson(s.filter) : undefined,\n reaction_type: s.reaction_type,\n workflow_type: s.workflow_type || undefined,\n pipeline_id: s.pipeline_id || undefined,\n mcp_prompt: s.mcp_prompt || undefined,\n server_id: s.server_id || undefined,\n tool_name: s.tool_name || undefined,\n input_mapping: tryParseJson(s.input_mapping) ?? {},\n execute_as: s.execute_as || undefined,\n enabled: s.enabled,\n }));\n}\n\nfunction tryParseJson(s: string): Record<string, any> | undefined {\n if (!s.trim()) return undefined;\n try { return JSON.parse(s); } catch { return undefined; }\n}\n\n/**\n * Update a single field in a mapping JSON object, applying form-friendly defaults:\n *\n * - Optional fields with empty values (empty string, null, undefined, empty array, \"[]\")\n * are **omitted** from the output — not stored as \"\".\n * - Required fields always persist (even if empty) so validation catches them.\n * - JSON array strings (e.g., '[\"a\",\"b\"]') are parsed into real arrays.\n *\n * Returns the updated JSON string.\n */\nexport function updateMappingField(\n currentJson: string,\n key: string,\n fieldValue: any,\n required: string[],\n): string {\n let parsed: Record<string, any>;\n try { parsed = JSON.parse(currentJson); } catch { parsed = {}; }\n\n const isReq = required.includes(key);\n\n // Optional fields with empty/blank values are omitted (undefined, not \"\")\n const isEmpty = fieldValue === '' || fieldValue === undefined || fieldValue === null\n || (Array.isArray(fieldValue) && fieldValue.length === 0)\n || fieldValue === '[]';\n if (!isReq && isEmpty) {\n const { [key]: _, ...rest } = parsed;\n return JSON.stringify(rest, null, 2);\n }\n\n // If the value is a JSON array string, parse it so the output is a real array\n let resolved = fieldValue;\n if (typeof fieldValue === 'string') {\n try {\n const p = JSON.parse(fieldValue);\n if (Array.isArray(p)) resolved = p;\n } catch { /* keep as string */ }\n }\n return JSON.stringify({ ...parsed, [key]: resolved }, null, 2);\n}\n\nexport const sectionCls = 'section-header mt-[3em] first:mt-0';\nexport const labelCls = 'label';\nexport const hintCls = 'hint';\nexport const inputCls = 'input';\nexport const jsonCls = 'input-json w-full';\n","import { BookOpen } from 'lucide-react';\nimport type { AgentFormState } from './agent-form-types';\nimport { labelCls, hintCls, inputCls } from './agent-form-types';\n\ninterface Props {\n form: AgentFormState;\n set: (field: keyof AgentFormState, value: any) => void;\n}\n\nexport function IdentityStep({ form, set }: Props) {\n return (\n <div className=\"space-y-8\">\n <div className=\"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between\">\n <p className=\"text-[12px] text-text-secondary italic leading-relaxed\">\n Give your automation a name and describe what it does. The name appears everywhere — in events, logs, and the dashboard.\n </p>\n <button onClick={() => { window.location.hash = '#docs:agents.md:identity'; }} className=\"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3\" title=\"Docs: Identity\"><BookOpen className=\"w-3 h-3\" strokeWidth={1.5} /></button>\n </div>\n\n <div>\n <label className={labelCls}>Name *</label>\n <input type=\"text\" value={form.name} onChange={(e) => set('name', e.target.value)} placeholder=\"health-monitor\" className={inputCls} />\n <p className={hintCls}>Lowercase, kebab-case. This appears everywhere.</p>\n </div>\n\n <div>\n <label className={labelCls}>Description</label>\n <input type=\"text\" value={form.description} onChange={(e) => set('description', e.target.value)} placeholder=\"Watches for workflow failures and captures diagnostics\" className={inputCls} />\n <p className={hintCls}>One sentence that explains what this automation does.</p>\n </div>\n </div>\n );\n}\n","import { BookOpen } from 'lucide-react';\nimport type { AgentFormState } from './agent-form-types';\nimport { labelCls, hintCls, inputCls } from './agent-form-types';\n\ninterface Props {\n form: AgentFormState;\n set: (field: keyof AgentFormState, value: any) => void;\n}\n\nexport function MotivationStep({ form, set }: Props) {\n return (\n <div className=\"space-y-8\">\n <div className=\"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between\">\n <p className=\"text-[12px] text-text-secondary italic leading-relaxed\">\n Goals define what drives the automation. Rules define what constrains it.\n </p>\n <button onClick={() => { window.location.hash = '#docs:agents.md:motivation'; }} className=\"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3\" title=\"Docs: Motivation\"><BookOpen className=\"w-3 h-3\" strokeWidth={1.5} /></button>\n </div>\n\n <div className=\"grid grid-cols-2 gap-8\">\n <div>\n <label className={labelCls}>Goals</label>\n <textarea value={form.goals} onChange={(e) => set('goals', e.target.value)} placeholder=\"Detect failures early, capture diagnostics, alert before cascading\" rows={4} className={`${inputCls} resize-none`} />\n <p className={hintCls}>Primary motivation. What the automation is trying to achieve.</p>\n </div>\n <div>\n <label className={labelCls}>Rules</label>\n <textarea value={form.rules} onChange={(e) => set('rules', e.target.value)} placeholder=\"Never auto-restart failed workflows. Always escalate to humans.\" rows={4} className={`${inputCls} resize-none`} />\n <p className={hintCls}>Guardrails. What it must never do, even when goals suggest it should.</p>\n </div>\n </div>\n </div>\n );\n}\n","import { Brain, BookOpen } from 'lucide-react';\nimport { useListDomains } from '../../../api/knowledge';\nimport { DateValue } from '../../../components/common/display/DateValue';\nimport type { AgentFormState } from './agent-form-types';\nimport { labelCls, hintCls, inputCls } from './agent-form-types';\n\ninterface Props {\n form: AgentFormState;\n set: (field: keyof AgentFormState, value: any) => void;\n}\n\nexport function KnowledgeStep({ form, set }: Props) {\n const { data: domainData } = useListDomains();\n const domains = domainData?.domains ?? [];\n\n return (\n <div className=\"space-y-6\">\n <div className=\"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between\">\n <p className=\"text-[12px] text-text-secondary italic leading-relaxed\">\n Assign a knowledge domain — the automation's memory. It stores context here over time.\n </p>\n <button onClick={() => { window.location.hash = '#docs:agents.md:knowledge'; }} className=\"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3\" title=\"Docs: Knowledge\"><BookOpen className=\"w-3 h-3\" strokeWidth={1.5} /></button>\n </div>\n\n <div>\n <label className={labelCls}>Knowledge Domain</label>\n <input\n type=\"text\"\n value={form.knowledge_domain}\n onChange={(e) => set('knowledge_domain', e.target.value)}\n placeholder=\"e.g., system-health, content-review, vendor-data\"\n className={inputCls}\n list=\"domain-suggestions\"\n />\n <datalist id=\"domain-suggestions\">\n {domains.map((d) => <option key={d.domain} value={d.domain} />)}\n </datalist>\n <p className={hintCls}>Choose an existing domain to share memory, or type a new name to create one.</p>\n </div>\n\n {domains.length > 0 && (\n <div>\n <label className={labelCls}>Existing Domains</label>\n <div className=\"space-y-0.5 mt-2\">\n {domains.map((d) => (\n <button\n key={d.domain}\n type=\"button\"\n onClick={() => set('knowledge_domain', d.domain)}\n className={`w-full flex items-center gap-3 px-3 py-2 rounded-md text-left transition-colors ${\n form.knowledge_domain === d.domain ? 'border-l-2 border-l-accent bg-accent/5' : 'hover:bg-surface-hover border-l-2 border-l-transparent'\n }`}\n >\n <Brain className=\"w-3.5 h-3.5 text-text-quaternary shrink-0\" strokeWidth={1.5} />\n <span className=\"text-sm text-text-primary flex-1\">{d.domain}</span>\n <span className=\"text-[10px] text-text-quaternary\">{d.count} entries</span>\n <span className=\"text-[9px] text-text-quaternary\"><DateValue date={d.latest} /></span>\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n}\n","import { useState, useRef, useEffect, useMemo } from 'react';\nimport { Server } from 'lucide-react';\nimport { useCapabilities } from '../../../api/capabilities';\n\n/**\n * Searchable combobox for selecting a capability (MCP server tool).\n *\n * Searches across ALL tools from all servers in a single flat list.\n * Selecting a tool sets both serverId and toolName in one action.\n * Styled to match the TopicCombobox used for event topic selection.\n */\nexport function CapabilityCombobox({ serverId, toolName, onChange }: {\n serverId: string;\n toolName: string;\n onChange: (serverId: string, toolName: string) => void;\n}) {\n const { data } = useCapabilities();\n const allTools = useMemo(\n () => data?.categories?.flatMap((c) => c.tools) ?? [],\n [data],\n );\n\n const [open, setOpen] = useState(false);\n const [filter, setFilter] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Close on outside click\n useEffect(() => {\n if (!open) return;\n function handleClick(e: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n }\n document.addEventListener('mousedown', handleClick);\n return () => document.removeEventListener('mousedown', handleClick);\n }, [open]);\n\n const displayValue = toolName ? `${toolName}` : '';\n const filterText = open ? filter : displayValue;\n\n const filtered = useMemo(() => {\n const q = (open ? filter : '').toLowerCase();\n if (!q) return allTools;\n return allTools.filter((t) =>\n t.name.toLowerCase().includes(q) ||\n t.serverName.toLowerCase().includes(q) ||\n (t.description ?? '').toLowerCase().includes(q),\n );\n }, [allTools, filter, open]);\n\n const selectedTool = toolName\n ? allTools.find((t) => t.serverId === serverId && t.name === toolName)\n : undefined;\n\n return (\n <div ref={containerRef} className=\"relative\">\n <input\n ref={inputRef}\n type=\"text\"\n value={filterText}\n onFocus={() => { setOpen(true); setFilter(displayValue); }}\n onChange={(e) => {\n const v = e.target.value;\n setFilter(v);\n if (!v) onChange('', '');\n if (!open) setOpen(true);\n }}\n placeholder=\"Search capabilities...\"\n className=\"input font-mono text-sm w-full\"\n />\n\n {/* Selected tool description */}\n {!open && selectedTool?.description && (\n <p className=\"text-[10px] text-text-tertiary mt-1 italic\">{selectedTool.description}</p>\n )}\n\n {open && filtered.length > 0 && (\n <div className=\"absolute z-50 left-0 right-0 mt-1 max-h-64 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg\">\n {filtered.map((t) => (\n <button\n key={`${t.serverId}:${t.name}`}\n type=\"button\"\n onClick={() => {\n onChange(t.serverId, t.name);\n setFilter(t.name);\n setOpen(false);\n }}\n className={`w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors flex items-center gap-3 ${\n serverId === t.serverId && toolName === t.name ? 'bg-accent/5' : ''\n }`}\n >\n <span className=\"text-[11px] font-mono text-text-primary shrink-0\">{t.name}</span>\n <span className=\"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[9px] font-medium shrink-0 bg-accent/10 text-accent\">\n <Server className=\"w-2 h-2\" strokeWidth={1.5} />\n {t.serverName}\n </span>\n {t.description && (\n <span className=\"text-[10px] text-text-quaternary truncate\">{t.description}</span>\n )}\n </button>\n ))}\n </div>\n )}\n\n {open && filtered.length === 0 && filter && (\n <div className=\"absolute z-50 left-0 right-0 mt-1 rounded-md border border-surface-border bg-surface shadow-lg px-3 py-4 text-center\">\n <p className=\"text-[11px] text-text-quaternary\">No capabilities match \"{filter}\"</p>\n </div>\n )}\n </div>\n );\n}\n","import { useWorkflowConfigs } from '../../../api/workflows';\nimport { useYamlWorkflows } from '../../../api/yaml-workflows';\nimport { CapabilityCombobox } from './CapabilityCombobox';\n\nconst LABELS: Record<string, string> = {\n durable: 'Workflow',\n pipeline: 'Pipeline',\n capability: 'Capability',\n mcp_query: 'MCP Query',\n};\n\nconst ALL_TYPES = ['durable', 'pipeline', 'capability', 'mcp_query'] as const;\n\nexport interface ReactionSelectorProps {\n reactionType: string;\n onReactionTypeChange: (type: string) => void;\n workflowType: string;\n onWorkflowTypeChange: (v: string) => void;\n pipelineId: string;\n onPipelineIdChange: (v: string) => void;\n serverId: string;\n toolName: string;\n onCapabilityChange: (serverId: string, toolName: string) => void;\n mcpPrompt?: string;\n onMcpPromptChange?: (v: string) => void;\n availableTypes?: typeof ALL_TYPES[number][];\n}\n\nexport function ReactionSelector({\n reactionType,\n onReactionTypeChange,\n workflowType,\n onWorkflowTypeChange,\n pipelineId,\n onPipelineIdChange,\n serverId,\n toolName,\n onCapabilityChange,\n mcpPrompt,\n onMcpPromptChange,\n availableTypes = [...ALL_TYPES],\n}: ReactionSelectorProps) {\n const { data: configs } = useWorkflowConfigs();\n const invocableWorkflows = (configs ?? []).filter((c: any) => c.invocable).map((c: any) => c.workflow_type as string);\n const { data: pipelineData } = useYamlWorkflows({ status: 'active' });\n const pipelines = (pipelineData?.workflows ?? []).map((w: any) => ({ id: w.id as string, name: (w.graph_topic || w.id) as string }));\n\n return (\n <div className=\"space-y-4\">\n {/* Type tabs */}\n <div className=\"flex gap-1\">\n {availableTypes.map((rt) => {\n const active = reactionType === rt;\n return (\n <button\n key={rt}\n type=\"button\"\n onClick={() => onReactionTypeChange(rt)}\n className={`px-3 py-1.5 text-[11px] font-medium rounded-md transition-colors ${\n active\n ? 'bg-accent/10 text-accent'\n : 'text-text-tertiary hover:text-text-primary hover:bg-surface-hover'\n }`}\n >\n {LABELS[rt]}\n </button>\n );\n })}\n </div>\n\n {/* Target selector per type */}\n {reactionType === 'durable' && (\n <div>\n <label className=\"label\">Workflow *</label>\n <select value={workflowType} onChange={(e) => onWorkflowTypeChange(e.target.value)} className=\"input\">\n <option value=\"\">Select workflow...</option>\n {invocableWorkflows.map((wt) => <option key={wt} value={wt}>{wt}</option>)}\n </select>\n </div>\n )}\n\n {reactionType === 'pipeline' && (\n <div>\n <label className=\"label\">Pipeline *</label>\n <select value={pipelineId} onChange={(e) => onPipelineIdChange(e.target.value)} className=\"input\">\n <option value=\"\">Select pipeline...</option>\n {pipelines.map((p) => <option key={p.id} value={p.id}>{p.name}</option>)}\n </select>\n </div>\n )}\n\n {reactionType === 'capability' && (\n <div>\n <label className=\"label\">Capability *</label>\n <CapabilityCombobox\n serverId={serverId}\n toolName={toolName}\n onChange={onCapabilityChange}\n />\n </div>\n )}\n\n {reactionType === 'mcp_query' && onMcpPromptChange && (\n <div>\n <label className=\"label\">Prompt *</label>\n <textarea\n value={mcpPrompt ?? ''}\n onChange={(e) => onMcpPromptChange(e.target.value)}\n placeholder=\"Analyze the error and suggest remediation...\"\n rows={3}\n className=\"input resize-none\"\n />\n </div>\n )}\n </div>\n );\n}\n","import { useState, useRef, useEffect, useMemo } from 'react';\nimport { Plus, Trash2, Radio, BookOpen } from 'lucide-react';\nimport { RunAsSelector } from '../../../components/common/form/RunAsSelector';\nimport { ReactionSelector } from '../../../components/common/form/ReactionSelector';\nimport { useTopics, type TopicCatalogEntry } from '../../../api/topics';\nimport { useCapabilities } from '../../../api/capabilities';\nimport type { AgentFormState, SubscriptionFormState } from './agent-form-types';\nimport { EMPTY_SUBSCRIPTION, updateMappingField, sectionCls, hintCls, inputCls, jsonCls } from './agent-form-types';\n\nconst CATEGORY_COLORS: Record<string, string> = {\n task: 'bg-status-active/10 text-status-active',\n workflow: 'bg-accent/15 text-accent',\n escalation: 'bg-status-warning/10 text-status-warning',\n activity: 'bg-status-active/10 text-status-active',\n knowledge: 'bg-accent/10 text-accent',\n file: 'bg-status-draft/10 text-status-draft',\n agent: 'bg-status-success/10 text-status-success',\n app: 'bg-status-error/10 text-status-error',\n milestone: 'bg-accent/10 text-accent',\n};\n\ninterface Props {\n form: AgentFormState;\n set: (field: keyof AgentFormState, value: any) => void;\n}\n\nexport function SubscriptionsStep({ form, set }: Props) {\n const { data: topicsData } = useTopics({ limit: 200 });\n const { data: capData } = useCapabilities();\n const catalogTopics = topicsData?.topics ?? [];\n const allTools = useMemo(() => capData?.categories?.flatMap((c) => c.tools) ?? [], [capData]);\n const [selected, setSelected] = useState(0);\n\n const updateSub = (index: number, field: keyof SubscriptionFormState, value: any) => {\n const next = [...form.subscriptions];\n next[index] = { ...next[index], [field]: value };\n set('subscriptions', next);\n };\n\n const addSub = () => {\n set('subscriptions', [...form.subscriptions, { ...EMPTY_SUBSCRIPTION }]);\n setSelected(form.subscriptions.length);\n };\n\n const removeSub = (index: number) => {\n set('subscriptions', form.subscriptions.filter((_, i) => i !== index));\n if (selected >= form.subscriptions.length - 1) setSelected(Math.max(0, form.subscriptions.length - 2));\n };\n\n const subs = form.subscriptions;\n const sub = subs[selected];\n const isComplete = (s: SubscriptionFormState) => {\n if (!s.topic) return false;\n if (s.reaction_type === 'durable') return !!s.workflow_type;\n if (s.reaction_type === 'pipeline') return !!s.pipeline_id;\n if (s.reaction_type === 'mcp_query') return !!s.mcp_prompt;\n if (s.reaction_type === 'capability') return !!s.server_id && !!s.tool_name;\n return false;\n };\n\n // Find the selected topic's catalog entry for schema preview\n const selectedCatalogEntry = sub ? catalogTopics.find((t) => t.topic === sub.topic) : undefined;\n\n if (subs.length === 0) {\n return (\n <div className=\"max-w-xl\">\n <div className=\"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between mb-8\">\n <p className=\"text-[12px] text-text-secondary italic leading-relaxed\">\n Optional. When a matching event is published, the automation runs the configured workflow with the event payload.\n </p>\n <button onClick={() => { window.location.hash = '#docs:agents.md:subscriptions'; }} className=\"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3\" title=\"Docs: Subscriptions\"><BookOpen className=\"w-3 h-3\" strokeWidth={1.5} /></button>\n </div>\n <div className=\"flex flex-col items-center justify-center py-12 text-center\">\n <Radio className=\"w-8 h-8 text-text-quaternary/40 mb-3\" strokeWidth={1} />\n <p className=\"text-sm text-text-tertiary mb-2\">No event subscriptions yet</p>\n <p className=\"text-[11px] text-text-quaternary max-w-sm mb-6\">\n Each subscription listens for a topic pattern and runs a workflow when it matches.\n </p>\n <button onClick={addSub} className=\"flex items-center gap-2 text-xs text-accent hover:text-accent-hover transition-colors\">\n <Plus className=\"w-3.5 h-3.5\" /> Add first subscription\n </button>\n </div>\n </div>\n );\n }\n\n return (\n <div>\n <div className=\"border-l-2 border-accent/30 pl-3 py-1 flex items-start justify-between mb-6\">\n <p className=\"text-[12px] text-text-secondary italic leading-relaxed\">\n Optional. When a matching event is published, the automation runs the configured workflow with the event payload.\n </p>\n <button onClick={() => { window.location.hash = '#docs:agents.md:subscriptions'; }} className=\"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3\" title=\"Docs: Subscriptions\"><BookOpen className=\"w-3 h-3\" strokeWidth={1.5} /></button>\n </div>\n\n <div className=\"flex gap-8\">\n {/* Sub-index */}\n <div className=\"w-52 shrink-0 space-y-0.5\">\n {subs.map((s, i) => (\n <div key={i} className={`group/sub flex items-center rounded-md transition-colors ${\n selected === i ? 'bg-accent/10 text-accent' : 'text-text-tertiary hover:text-text-primary hover:bg-surface-hover'\n }`}>\n <button onClick={() => setSelected(i)} className=\"flex-1 text-left px-3 py-2 min-w-0\">\n <div className=\"flex items-center gap-1.5\">\n <span className={`w-1.5 h-1.5 rounded-full dot-ring shrink-0 ${isComplete(s) ? 'bg-status-success' : 'bg-surface-border'}`} />\n <span className=\"text-[11px] font-mono truncate\">{s.topic || 'new subscription'}</span>\n </div>\n <span className=\"text-[9px] text-text-quaternary ml-3\">→ {s.workflow_type || s.tool_name || s.reaction_type}</span>\n </button>\n <button onClick={(e) => { e.stopPropagation(); if (confirm(`Remove subscription \"${s.topic || 'new'}\"?\\n\\nThis takes effect when you save.`)) removeSub(i); }} className=\"opacity-0 group-hover/sub:opacity-100 px-2 text-text-quaternary hover:text-status-error transition-all\" title=\"Remove\">\n <Trash2 className=\"w-3 h-3\" />\n </button>\n </div>\n ))}\n <button onClick={addSub} className=\"w-full flex items-center gap-1.5 px-3 py-2 text-[11px] text-accent hover:text-accent-hover transition-colors\">\n <Plus className=\"w-3 h-3\" /> Add\n </button>\n </div>\n\n {/* Detail form */}\n {sub && (\n <div className=\"flex-1 min-w-0 space-y-12\">\n\n {/* When — topic combobox */}\n <div>\n <label className={sectionCls}>When this event fires</label>\n <TopicCombobox\n value={sub.topic}\n onChange={(v) => updateSub(selected, 'topic', v)}\n topics={catalogTopics}\n />\n\n {/* Schema preview when a catalog topic is selected */}\n {selectedCatalogEntry?.payload_schema && (\n <div className=\"mt-3 p-3 rounded-md bg-surface-sunken border border-surface-border\">\n <p className=\"text-[10px] text-text-quaternary mb-1 uppercase tracking-wider font-medium\">Payload Schema</p>\n <pre className=\"text-[11px] font-mono text-text-secondary whitespace-pre-wrap overflow-x-auto max-h-40\">\n {JSON.stringify(selectedCatalogEntry.payload_schema.properties ?? selectedCatalogEntry.payload_schema, null, 2)}\n </pre>\n {selectedCatalogEntry.description && (\n <p className=\"text-[10px] text-text-tertiary mt-2 italic\">{selectedCatalogEntry.description}</p>\n )}\n </div>\n )}\n </div>\n\n {/* Reaction selector — full width */}\n <div>\n <label className={sectionCls}>Run this reaction</label>\n <ReactionSelector\n reactionType={sub.reaction_type}\n onReactionTypeChange={(v) => updateSub(selected, 'reaction_type', v)}\n workflowType={sub.workflow_type}\n onWorkflowTypeChange={(v) => updateSub(selected, 'workflow_type', v)}\n pipelineId={sub.pipeline_id}\n onPipelineIdChange={(v) => updateSub(selected, 'pipeline_id', v)}\n serverId={sub.server_id}\n toolName={sub.tool_name}\n onCapabilityChange={(sid, tn) => {\n const next = [...form.subscriptions];\n const entry = { ...next[selected], server_id: sid, tool_name: tn };\n // Auto-generate mapping template from tool schema\n const tool = allTools.find((t) => t.serverId === sid && t.name === tn);\n const props = tool?.inputSchema?.properties as Record<string, any> | undefined;\n if (props && tn) {\n const template: Record<string, string> = {};\n for (const key of Object.keys(props)) {\n if (key.startsWith('_')) continue;\n template[key] = `{event.data.${key}}`;\n }\n entry.input_mapping = JSON.stringify(template, null, 2);\n }\n next[selected] = entry;\n set('subscriptions', next);\n }}\n mcpPrompt={sub.mcp_prompt}\n onMcpPromptChange={(v) => updateSub(selected, 'mcp_prompt', v)}\n\n />\n </div>\n\n {/* Identity + Filter — 2 col */}\n <div className=\"grid grid-cols-2 gap-6\">\n <div>\n <label className={sectionCls}>As identity</label>\n <RunAsSelector selected={sub.execute_as} onChange={(v) => updateSub(selected, 'execute_as', v)} />\n <p className={hintCls}>Identity used when invoking the workflow.</p>\n </div>\n <div>\n <label className={sectionCls}>But only if</label>\n <input type=\"text\" value={sub.filter} onChange={(e) => updateSub(selected, 'filter', e.target.value)} placeholder='{\"extension\": \"png\"}' className={`${inputCls} font-mono text-xs`} />\n <p className={hintCls}>JSON filter against event.data. Click an operator to insert:</p>\n <div className=\"flex flex-wrap gap-1.5 mt-1.5\">\n {[\n { label: 'equals', value: '{\"key\": \"val\"}' },\n { label: 'not equal', value: '{\"key\": {\"$ne\": \"val\"}}' },\n { label: 'in list', value: '{\"key\": {\"$in\": [\"a\", \"b\"]}}' },\n { label: 'exists', value: '{\"key\": {\"$exists\": true}}' },\n ].map((op) => (\n <button\n key={op.label}\n type=\"button\"\n onClick={() => updateSub(selected, 'filter', op.value)}\n className=\"px-2 py-0.5 text-[10px] font-mono rounded bg-accent/8 text-accent hover:bg-accent/15 transition-colors\"\n >\n {op.label}\n </button>\n ))}\n </div>\n </div>\n </div>\n\n {/* Input Mapping full width */}\n <div>\n <label className={sectionCls}>With this data</label>\n {sub.reaction_type === 'capability' && sub.tool_name ? (\n <CapabilityMappingForm\n tool={allTools.find((t) => t.serverId === sub.server_id && t.name === sub.tool_name)}\n value={sub.input_mapping}\n onChange={(v) => updateSub(selected, 'input_mapping', v)}\n eventSchema={selectedCatalogEntry?.payload_schema}\n />\n ) : (\n <>\n <textarea value={sub.input_mapping} onChange={(e) => updateSub(selected, 'input_mapping', e.target.value)} rows={10} className={jsonCls} placeholder={'{\\n \"data\": {\\n \"orderId\": \"{event.data.orderId}\",\\n \"error\": \"{event.data.error}\"\\n }\\n}'} />\n <p className={hintCls}>Maps event fields to workflow input. {'{event.data.fieldName}'} resolves at runtime.</p>\n </>\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n\n// ── Capability Mapping Form ─────────────────────────────────────────────────\n\nfunction CapabilityMappingForm({ tool, value, onChange, eventSchema }: {\n tool?: { name: string; description?: string; inputSchema: Record<string, any> };\n value: string;\n onChange: (v: string) => void;\n eventSchema?: Record<string, any>;\n}) {\n const [jsonMode, setJsonMode] = useState(false);\n const props = (tool?.inputSchema?.properties ?? {}) as Record<string, any>;\n const required = (tool?.inputSchema?.required as string[]) ?? [];\n const allFields = Object.entries(props).filter(([k]) => !k.startsWith('_'));\n\n // Required fields first (in declared required-array order), then optional alphabetically\n const fields = useMemo(() =>\n [...allFields].sort(([a], [b]) => {\n const ai = required.indexOf(a);\n const bi = required.indexOf(b);\n if (ai !== -1 && bi !== -1) return ai - bi;\n if (ai !== -1) return -1;\n if (bi !== -1) return 1;\n return a.localeCompare(b);\n }),\n [allFields, required]);\n\n // Build event field suggestions from the topic's payload schema\n const eventSuggestions = useMemo(() => {\n const suggestions: Array<{ value: string; label: string }> = [\n { value: '{event.type}', label: 'event type' },\n { value: '{event.source}', label: 'event source' },\n { value: '{event.timestamp}', label: 'ISO timestamp' },\n { value: '{event.workflowId}', label: 'workflow ID' },\n { value: '{event.workflowName}', label: 'workflow name' },\n ];\n const schemaProps = eventSchema?.properties as Record<string, any> | undefined;\n if (schemaProps) {\n for (const [key, def] of Object.entries(schemaProps)) {\n suggestions.push({\n value: `{event.data.${key}}`,\n label: (def as any).description || key,\n });\n }\n }\n return suggestions;\n }, [eventSchema]);\n\n const parsed = useMemo(() => {\n try { return JSON.parse(value) as Record<string, any>; }\n catch { return {} as Record<string, any>; }\n }, [value]);\n\n const updateField = (key: string, fieldValue: any) => {\n onChange(updateMappingField(value, key, fieldValue, required));\n };\n\n if (fields.length === 0 || jsonMode) {\n return (\n <div>\n {fields.length > 0 && (\n <div className=\"flex justify-end mb-1\">\n <button type=\"button\" onClick={() => setJsonMode(false)} className=\"text-[10px] text-accent hover:text-accent-hover transition-colors\">Form view</button>\n </div>\n )}\n <textarea value={value} onChange={(e) => onChange(e.target.value)} rows={8} className={jsonCls} placeholder={'{\\n \"domain\": \"{event.data.name}\",\\n \"key\": \"{event.data.path}\"\\n}'} />\n <p className={hintCls}>Maps event fields to capability inputs. {'{event.data.fieldName}'} resolves at runtime.</p>\n </div>\n );\n }\n\n return (\n <div>\n <div className=\"flex items-center justify-between mb-3\">\n <p className=\"text-[11px] text-text-tertiary\">\n Map each input to an event field or enter a static value.\n </p>\n <button type=\"button\" onClick={() => setJsonMode(true)} className=\"text-[10px] text-text-tertiary hover:text-accent transition-colors\">Raw JSON</button>\n </div>\n\n <div className=\"space-y-4\">\n {fields.map(([key, def]) => {\n const isReq = required.includes(key);\n const desc = (def as any).description;\n const fieldType = (def as any).type;\n const currentVal = typeof parsed[key] === 'string' ? parsed[key]\n : typeof parsed[key] === 'object' ? JSON.stringify(parsed[key])\n : parsed[key] != null ? String(parsed[key]) : '';\n\n return (\n <div key={key} className=\"bg-surface-sunken/30 rounded-md px-4 py-3\">\n <div className=\"flex items-baseline gap-2 mb-0.5\">\n <label className=\"text-[11px] font-semibold uppercase tracking-wider text-text-secondary\">\n {key.replace(/[_-]/g, ' ')}\n {isReq && <span className=\"text-status-error ml-0.5\">*</span>}\n </label>\n {fieldType && <span className=\"text-[9px] text-text-quaternary\">{fieldType}</span>}\n </div>\n {desc && <p className=\"text-[10px] text-text-quaternary mb-2\">{desc}</p>}\n <MappingFieldInput\n value={currentVal}\n onChange={(v) => updateField(key, v)}\n suggestions={eventSuggestions}\n fieldType={fieldType}\n placeholder={`{event.data.${key}}`}\n />\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\n/** Input with dropdown suggestions for event field references */\nfunction MappingFieldInput({ value, onChange, suggestions, fieldType, placeholder }: {\n value: string;\n onChange: (v: string) => void;\n suggestions: Array<{ value: string; label: string }>;\n fieldType?: string;\n placeholder: string;\n}) {\n const [open, setOpen] = useState(false);\n const [filter, setFilter] = useState('');\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!open) return;\n function handleClick(e: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) setOpen(false);\n }\n document.addEventListener('mousedown', handleClick);\n return () => document.removeEventListener('mousedown', handleClick);\n }, [open]);\n\n const filtered = suggestions.filter((s) =>\n s.value.toLowerCase().includes(filter.toLowerCase()) ||\n s.label.toLowerCase().includes(filter.toLowerCase()),\n );\n\n if (fieldType === 'object') {\n return (\n <textarea\n value={value}\n onChange={(e) => {\n try { onChange(JSON.parse(e.target.value)); }\n catch { onChange(e.target.value); }\n }}\n rows={3}\n className={`${jsonCls} text-xs`}\n placeholder={`{ \"source\": \"{event.source}\" }`}\n />\n );\n }\n\n if (fieldType === 'array') {\n // Parse existing value: could be a JSON array string or comma-separated\n const items: string[] = (() => {\n try {\n const parsed = JSON.parse(value);\n if (Array.isArray(parsed)) return parsed.map(String);\n } catch { /* fall through */ }\n return value ? value.split(',').map((s: string) => s.trim()).filter(Boolean) : [];\n })();\n\n return (\n <div>\n <div className=\"flex flex-wrap gap-1.5 mb-2 min-h-[28px]\">\n {items.map((item, i) => (\n <span key={i} className=\"inline-flex items-center gap-1 px-2 py-0.5 text-[11px] font-mono bg-accent/10 text-accent rounded-full\">\n {item}\n <button\n type=\"button\"\n onClick={() => { const next = items.filter((_, j) => j !== i); onChange(JSON.stringify(next)); }}\n className=\"text-accent/50 hover:text-accent ml-0.5\"\n >\n &times;\n </button>\n </span>\n ))}\n </div>\n <input\n type=\"text\"\n className=\"input font-mono text-xs w-full\"\n placeholder=\"Type a value and press Enter\"\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ',') {\n e.preventDefault();\n const v = (e.target as HTMLInputElement).value.trim();\n if (v) {\n onChange(JSON.stringify([...items, v]));\n (e.target as HTMLInputElement).value = '';\n }\n }\n }}\n />\n </div>\n );\n }\n\n return (\n <div ref={containerRef} className=\"relative\">\n <input\n type=\"text\"\n value={value}\n onFocus={() => { setOpen(true); setFilter(''); }}\n onChange={(e) => { onChange(e.target.value); setFilter(e.target.value); if (!open) setOpen(true); }}\n className=\"input font-mono text-xs w-full\"\n placeholder={placeholder}\n />\n {open && filtered.length > 0 && (\n <div className=\"absolute z-50 left-0 right-0 mt-1 max-h-48 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg\">\n {filtered.map((s) => (\n <button\n key={s.value}\n type=\"button\"\n onClick={() => { onChange(s.value); setOpen(false); }}\n className={`w-full text-left px-3 py-1.5 hover:bg-surface-hover transition-colors flex items-center gap-3 ${value === s.value ? 'bg-accent/5' : ''}`}\n >\n <span className=\"text-[11px] font-mono text-accent shrink-0\">{s.value}</span>\n <span className=\"text-[10px] text-text-quaternary truncate\">{s.label}</span>\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n\n// ── Topic Combobox ──────────────────────────────────────────────────────────\n\nfunction TopicCombobox({ value, onChange, topics }: {\n value: string;\n onChange: (v: string) => void;\n topics: TopicCatalogEntry[];\n}) {\n const [open, setOpen] = useState(false);\n const [filter, setFilter] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Close on outside click\n useEffect(() => {\n function handleClick(e: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n }\n if (open) document.addEventListener('mousedown', handleClick);\n return () => document.removeEventListener('mousedown', handleClick);\n }, [open]);\n\n const filterText = open ? filter : value;\n const filtered = topics.filter((t) =>\n t.topic.toLowerCase().includes((open ? filter : '').toLowerCase()) ||\n (t.description ?? '').toLowerCase().includes((open ? filter : '').toLowerCase()),\n );\n\n return (\n <div ref={containerRef} className=\"relative\">\n <input\n ref={inputRef}\n type=\"text\"\n value={filterText}\n onFocus={() => { setOpen(true); setFilter(value); }}\n onChange={(e) => {\n const v = e.target.value;\n setFilter(v);\n onChange(v);\n if (!open) setOpen(true);\n }}\n placeholder=\"workflow.failed or app.>\"\n className={`${inputCls} font-mono`}\n />\n\n {open && filtered.length > 0 && (\n <div className=\"absolute z-50 left-0 right-0 mt-1 max-h-64 overflow-y-auto rounded-md border border-surface-border bg-surface shadow-lg\">\n {filtered.map((t) => {\n const catCls = CATEGORY_COLORS[t.category] ?? 'bg-surface-sunken text-text-tertiary';\n return (\n <button\n key={t.topic}\n type=\"button\"\n onClick={() => {\n onChange(t.topic);\n setFilter(t.topic);\n setOpen(false);\n }}\n className={`w-full text-left px-3 py-2 hover:bg-surface-hover transition-colors flex items-center gap-3 ${\n value === t.topic ? 'bg-accent/5' : ''\n }`}\n >\n <span className=\"text-[11px] font-mono text-text-primary shrink-0\">{t.topic}</span>\n <span className={`inline-flex items-center px-1.5 py-0.5 rounded text-[9px] font-medium shrink-0 ${catCls}`}>{t.category}</span>\n {t.description && (\n <span className=\"text-[10px] text-text-quaternary truncate\">{t.description}</span>\n )}\n </button>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n","import { useState } from 'react';\nimport { Plus, Trash2, Clock, BookOpen } from 'lucide-react';\nimport { RunAsSelector } from '../../../components/common/form/RunAsSelector';\nimport { ReactionSelector } from '../../../components/common/form/ReactionSelector';\nimport type { AgentFormState, ScheduleFormState } from './agent-form-types';\nimport { EMPTY_SCHEDULE, sectionCls, hintCls, inputCls, jsonCls } from './agent-form-types';\n\nconst CRON_PRESETS = [\n '*/5 * * * *',\n '*/15 * * * *',\n '0 * * * *',\n '0 */4 * * *',\n '0 7 * * *',\n '0 9 * * 1-5',\n];\n\nfunction describeCron(expr: string): string {\n const m: Record<string, string> = {\n '* * * * *': 'Every minute',\n '*/5 * * * *': 'Every 5 min',\n '*/15 * * * *': 'Every 15 min',\n '0 * * * *': 'Hourly',\n '0 */4 * * *': 'Every 4 hours',\n '0 7 * * *': 'Daily 7 AM UTC',\n '0 9 * * 1-5': 'Weekdays 9 AM UTC',\n '0 0 * * 1': 'Weekly Monday',\n };\n return m[expr] || expr;\n}\n\ninterface Props {\n form: AgentFormState;\n set: (field: keyof AgentFormState, value: any) => void;\n}\n\nexport function ScheduleStep({ form, set }: Props) {\n const [selected, setSelected] = useState(0);\n\n const updateSched = (index: number, field: keyof ScheduleFormState, value: any) => {\n const next = [...form.schedules];\n next[index] = { ...next[index], [field]: value };\n set('schedules', next);\n };\n\n const addSched = () => {\n set('schedules', [...form.schedules, { ...EMPTY_SCHEDULE }]);\n setSelected(form.schedules.length);\n };\n\n const removeSched = (index: number) => {\n set('schedules', form.schedules.filter((_: any, i: number) => i !== index));\n if (selected >= form.schedules.length - 1) setSelected(Math.max(0, form.schedules.length - 2));\n };\n\n const scheds = form.schedules;\n const sched = scheds[selected];\n\n if (scheds.length === 0) {\n return (\n <div>\n <div className=\"border-l-2 border-accent/30 pl-3 py-1 mb-8 flex items-start justify-between\">\n <p className=\"text-[12px] text-text-secondary italic leading-relaxed\">\n Optional. Each schedule runs a workflow on a cron timer.\n </p>\n <button onClick={() => { window.location.hash = '#docs:agents.md:schedule'; }} className=\"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3\" title=\"Docs: Schedule\"><BookOpen className=\"w-3 h-3\" strokeWidth={1.5} /></button>\n </div>\n <div className=\"flex flex-col items-center justify-center py-12 text-center\">\n <Clock className=\"w-8 h-8 text-text-quaternary/40 mb-3\" strokeWidth={1} />\n <p className=\"text-sm text-text-tertiary mb-2\">No schedules</p>\n <p className=\"text-[11px] text-text-quaternary max-w-sm mb-6\">\n Add a schedule to run a workflow on a recurring cron timer.\n </p>\n <button onClick={addSched} className=\"flex items-center gap-2 text-xs text-accent hover:text-accent-hover transition-colors\">\n <Plus className=\"w-3.5 h-3.5\" /> Add schedule\n </button>\n </div>\n </div>\n );\n }\n\n return (\n <div>\n <div className=\"border-l-2 border-accent/30 pl-3 py-1 mb-6 flex items-start justify-between\">\n <p className=\"text-[12px] text-text-secondary italic leading-relaxed\">\n Each schedule runs a workflow on a timer. An automation can have multiple schedules targeting different workflows.\n </p>\n <button onClick={() => { window.location.hash = '#docs:agents.md:schedule'; }} className=\"text-text-quaternary hover:text-accent transition-colors shrink-0 ml-3\" title=\"Docs: Schedule\"><BookOpen className=\"w-3 h-3\" strokeWidth={1.5} /></button>\n </div>\n\n <div className=\"flex gap-8\">\n {/* Sub-index */}\n <div className=\"w-48 shrink-0 space-y-0.5\">\n {scheds.map((s, i) => (\n <div key={i} className={`group/sched flex items-center rounded-md transition-colors ${\n selected === i ? 'bg-accent/10 text-accent' : 'text-text-tertiary hover:text-text-primary hover:bg-surface-hover'\n }`}>\n <button onClick={() => setSelected(i)} className=\"flex-1 text-left px-3 py-2 min-w-0\">\n <span className=\"text-[11px] font-mono block\">{s.cron || 'new schedule'}</span>\n <span className=\"text-[9px] text-text-quaternary\">{(s.reaction_type === 'pipeline' ? s.pipeline_id : s.workflow_type) || 'no target'} · {describeCron(s.cron)}</span>\n </button>\n <button onClick={(e) => { e.stopPropagation(); if (confirm(`Remove schedule \"${s.cron || 'new'}\"?\\n\\nThis takes effect when you save.`)) removeSched(i); }} className=\"opacity-0 group-hover/sched:opacity-100 px-2 text-text-quaternary hover:text-status-error transition-all\" title=\"Remove\">\n <Trash2 className=\"w-3 h-3\" />\n </button>\n </div>\n ))}\n <button onClick={addSched} className=\"w-full flex items-center gap-1.5 px-3 py-2 text-[11px] text-accent hover:text-accent-hover transition-colors\">\n <Plus className=\"w-3 h-3\" /> Add\n </button>\n </div>\n\n {/* Detail form */}\n {sched && (\n <div className=\"flex-1 min-w-0 space-y-12\">\n\n {/* Every — cron + presets */}\n <div>\n <label className={sectionCls}>Run every</label>\n <input type=\"text\" value={sched.cron} onChange={(e) => updateSched(selected, 'cron', e.target.value)} placeholder=\"0 * * * *\" className={`${inputCls} font-mono`} />\n {sched.cron && <p className=\"text-[11px] text-accent/80 mt-1\">{describeCron(sched.cron)}</p>}\n <div className=\"flex gap-3 mt-2 overflow-x-auto\">\n {CRON_PRESETS.map((p) => (\n <button key={p} type=\"button\" onClick={() => updateSched(selected, 'cron', p)}\n className={`text-[10px] font-mono whitespace-nowrap transition-colors ${sched.cron === p ? 'text-accent font-medium' : 'text-accent/50 hover:text-accent'}`}\n >{describeCron(p)}</button>\n ))}\n </div>\n </div>\n\n {/* Run this reaction */}\n <div>\n <label className={sectionCls}>Run this reaction</label>\n <ReactionSelector\n reactionType={sched.reaction_type}\n onReactionTypeChange={(v) => updateSched(selected, 'reaction_type', v)}\n workflowType={sched.workflow_type}\n onWorkflowTypeChange={(v) => updateSched(selected, 'workflow_type', v)}\n pipelineId={sched.pipeline_id}\n onPipelineIdChange={(v) => updateSched(selected, 'pipeline_id', v)}\n serverId={sched.server_id}\n toolName={sched.tool_name}\n onCapabilityChange={(sid, tn) => { updateSched(selected, 'server_id', sid); updateSched(selected, 'tool_name', tn); }}\n availableTypes={['durable', 'pipeline', 'capability']}\n\n />\n </div>\n\n {/* As identity */}\n <div>\n <label className={sectionCls}>As identity</label>\n <RunAsSelector selected={sched.execute_as} onChange={(v) => updateSched(selected, 'execute_as', v)} />\n <p className={hintCls}>Identity used when invoking.</p>\n </div>\n\n {/* Envelope */}\n <div>\n <label className={sectionCls}>With this data</label>\n <textarea value={sched.envelope} onChange={(e) => updateSched(selected, 'envelope', e.target.value)} rows={10} className={jsonCls} placeholder={'{\\n \"data\": { \"source\": \"cron\" }\\n}'} />\n <p className={hintCls}>Static payload passed to the workflow on each invocation.</p>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import { Bot, Compass, Brain, Radio, Clock } from 'lucide-react';\nimport { EventTopicPill } from '../../../components/common/display/EventTopicPill';\nimport { CronLabel } from '../../../components/common/display/CronLabel';\nimport { WorkflowPill } from '../../../components/common/display/WorkflowPill';\nimport type { AgentFormState } from './agent-form-types';\n\ninterface Props {\n form: AgentFormState;\n}\n\nfunction Section({ icon: Icon, color, title, children }: { icon: React.ElementType; color: string; title: string; children: React.ReactNode }) {\n return (\n <div className=\"mb-10\">\n <div className=\"flex items-center gap-2 mb-2 pb-1.5 border-b border-surface-border/40\">\n <Icon className={`w-3.5 h-3.5 ${color}`} strokeWidth={1.5} />\n <h3 className=\"text-xs font-semibold uppercase tracking-widest text-accent/80\">{title}</h3>\n </div>\n <div className=\"pl-5.5\">{children}</div>\n </div>\n );\n}\n\nfunction Field({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <div className=\"flex gap-3 py-0.5\">\n <span className=\"text-[10px] text-text-quaternary w-20 shrink-0\">{label}</span>\n <span className=\"text-xs text-text-primary\">{children}</span>\n </div>\n );\n}\n\nexport function ReviewStep({ form }: Props) {\n return (\n <div>\n <Section icon={Bot} color=\"text-accent\" title=\"Identity\">\n <Field label=\"Name\">{form.name || '—'}</Field>\n {form.description && <Field label=\"Description\">{form.description}</Field>}\n </Section>\n\n {(form.goals || form.rules) && (\n <Section icon={Compass} color=\"text-accent\" title=\"Motivation\">\n {form.goals && <Field label=\"Goals\">{form.goals}</Field>}\n {form.rules && <Field label=\"Rules\">{form.rules}</Field>}\n </Section>\n )}\n\n <Section icon={Brain} color=\"text-accent\" title=\"Knowledge\">\n <Field label=\"Domain\">{form.knowledge_domain || 'None'}</Field>\n </Section>\n\n {/* Subscriptions + Schedule side by side */}\n <div className=\"grid grid-cols-2 gap-x-10\">\n <Section icon={Radio} color=\"text-accent\" title={`Subscriptions (${form.subscriptions.length})`}>\n {form.subscriptions.length === 0 ? (\n <span className=\"text-[11px] text-text-quaternary\">None configured</span>\n ) : (\n <div className=\"divide-y divide-surface-border/30\">\n {form.subscriptions.map((sub, i) => (\n <div key={i} className=\"flex items-center py-1.5\">\n <div className=\"flex-1 min-w-0\"><EventTopicPill topic={sub.topic || 'unset'} /></div>\n <div className=\"flex items-center gap-1.5 shrink-0\"><span className=\"text-text-quaternary text-[10px]\">→</span>{sub.workflow_type ? <WorkflowPill type={sub.workflow_type} /> : <span className=\"text-[11px] text-text-quaternary\">{sub.reaction_type}</span>}</div>\n </div>\n ))}\n </div>\n )}\n </Section>\n\n <Section icon={Clock} color=\"text-accent\" title={`Schedules (${form.schedules.length})`}>\n {form.schedules.length === 0 ? (\n <span className=\"text-[11px] text-text-quaternary\">None configured</span>\n ) : (\n <div className=\"divide-y divide-surface-border/30\">\n {form.schedules.map((s, i) => (\n <div key={i} className=\"flex items-center py-1.5\">\n <div className=\"flex-1 min-w-0\"><CronLabel cron={s.cron} /></div>\n <div className=\"flex items-center gap-1.5 shrink-0\"><span className=\"text-text-quaternary text-[10px]\">→</span>{s.workflow_type ? <WorkflowPill type={s.workflow_type} /> : <span className=\"text-[11px] text-text-quaternary\">no workflow</span>}</div>\n </div>\n ))}\n </div>\n )}\n </Section>\n </div>\n\n <div className=\"border-l-2 border-status-success/30 pl-3 py-2 mt-6\">\n <p className=\"text-[11px] text-text-tertiary leading-relaxed\">\n After saving, subscriptions and schedules activate immediately. You can pause the automation anytime.\n </p>\n </div>\n </div>\n );\n}\n","import { useState, useEffect, useCallback } from 'react';\nimport { useParams, useNavigate, useSearchParams } from 'react-router-dom';\nimport {\n Bot, Brain, Radio, Clock, Check, Compass,\n} from 'lucide-react';\nimport { useAgent, useCreateAgent, useUpdateAgent } from '../../../api/agents';\nimport { useAgentSubscriptions, useCreateSubscription, useUpdateSubscription, useDeleteSubscription } from '../../../api/agent-subscriptions';\nimport { useSettings } from '../../../api/settings';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport {\n EMPTY_FORM,\n agentToForm,\n formToAgentPayload,\n formToSubscriptionPayloads,\n} from './agent-form-types';\nimport type { AgentFormState } from './agent-form-types';\nimport { IdentityStep } from './IdentityStep';\nimport { MotivationStep } from './MotivationStep';\nimport { KnowledgeStep } from './KnowledgeStep';\nimport { SubscriptionsStep } from './SubscriptionsStep';\nimport { ScheduleStep } from './ScheduleStep';\nimport { ReviewStep } from './ReviewStep';\n\nconst SECTIONS = [\n { id: 1, label: 'Identity', icon: Bot },\n { id: 2, label: 'Motivation', icon: Compass },\n { id: 3, label: 'Knowledge', icon: Brain },\n { id: 4, label: 'Subscriptions', icon: Radio },\n { id: 5, label: 'Schedules', icon: Clock },\n { id: 6, label: 'Review', icon: Check },\n];\n\nexport function AgentConfigPage() {\n const { id } = useParams<{ id: string }>();\n const isNew = !id;\n const navigate = useNavigate();\n const { data: settings } = useSettings();\n const aiEnabled = !!settings?.ai?.enabled;\n const noun = aiEnabled ? 'Agent' : 'Automation';\n const { data: existing, isLoading } = useAgent(isNew ? null : id!);\n const { data: subsData } = useAgentSubscriptions(isNew ? null : id!);\n\n const createAgent = useCreateAgent();\n const updateAgent = useUpdateAgent();\n const createSub = useCreateSubscription();\n const updateSub = useUpdateSubscription();\n const deleteSub = useDeleteSubscription();\n\n const [form, setForm] = useState<AgentFormState>(EMPTY_FORM);\n const [initialized, setInitialized] = useState(false);\n const [saveError, setSaveError] = useState('');\n\n const [searchParams, setSearchParams] = useSearchParams();\n const section = parseInt(searchParams.get('step') || '1', 10);\n const setSection = useCallback((s: number) => {\n setSearchParams((prev) => {\n const next = new URLSearchParams(prev);\n next.set('step', String(s));\n return next;\n }, { replace: true });\n }, [setSearchParams]);\n\n useEffect(() => {\n if (initialized) return;\n if (isNew) { setForm(EMPTY_FORM); setInitialized(true); return; }\n if (existing && subsData) {\n setForm(agentToForm(existing, subsData.subscriptions ?? []));\n setInitialized(true);\n }\n }, [existing, subsData, isNew, initialized]);\n\n const set = (field: keyof AgentFormState, value: any) =>\n setForm((f) => ({ ...f, [field]: value }));\n\n const handleSave = async () => {\n setSaveError('');\n try {\n const payload = formToAgentPayload(form);\n let agentId = id;\n\n if (isNew) {\n const created = await createAgent.mutateAsync(payload as any);\n agentId = created.id;\n } else {\n await updateAgent.mutateAsync({ id: id!, ...payload } as any);\n }\n\n const subPayloads = formToSubscriptionPayloads(form);\n const existingSubs = subsData?.subscriptions ?? [];\n const existingIds = new Set(existingSubs.map((s) => s.id));\n\n for (const sub of subPayloads) {\n if (sub.id && existingIds.has(sub.id)) {\n const { id: subId, ...rest } = sub;\n await updateSub.mutateAsync({ agentId: agentId!, subId: subId!, ...rest } as any);\n existingIds.delete(subId!);\n } else {\n const { id: _ignored, ...rest } = sub;\n await createSub.mutateAsync({ agentId: agentId!, ...rest } as any);\n }\n }\n\n for (const removedId of existingIds) {\n await deleteSub.mutateAsync({ agentId: agentId!, subId: removedId });\n }\n\n navigate(`/agents/${agentId}`);\n } catch (err: any) {\n setSaveError(err.message);\n }\n };\n\n if (!isNew && isLoading) {\n return <div className=\"animate-pulse space-y-4\"><div className=\"h-8 bg-surface-sunken rounded w-48\" /><div className=\"h-60 bg-surface-sunken rounded\" /></div>;\n }\n\n const isPending = createAgent.isPending || updateAgent.isPending;\n\n return (\n <div>\n <PageHeader\n title={isNew ? `New ${noun}` : `${noun}: ${existing?.id ?? ''}`}\n docsHash=\"#docs:agents.md\"\n />\n\n <div className=\"flex gap-10\">\n {/* Section nav — sticky left sidebar */}\n <nav className=\"w-44 shrink-0 sticky top-0 self-start pt-2\">\n <div className=\"space-y-0.5\">\n {SECTIONS.map((s) => {\n const Icon = s.icon;\n const active = section === s.id;\n return (\n <button\n key={s.id}\n onClick={() => setSection(s.id)}\n className={`w-full flex items-center gap-2.5 px-3 py-2 rounded-md text-left transition-colors ${\n active\n ? 'bg-accent/10 text-accent'\n : 'text-text-tertiary hover:text-text-primary hover:bg-surface-hover'\n }`}\n >\n <Icon className=\"w-3.5 h-3.5 shrink-0\" strokeWidth={1.5} />\n <span className=\"text-xs font-medium\">{s.label}</span>\n </button>\n );\n })}\n </div>\n\n {/* Save / Cancel — always visible */}\n <div className=\"mt-8 pt-4 border-t border-surface-border space-y-2\">\n <button\n onClick={handleSave}\n disabled={!form.name.trim() || isPending}\n className=\"w-full btn-primary text-xs disabled:opacity-50\"\n >\n {isPending ? 'Saving...' : isNew ? `Create ${noun}` : 'Save'}\n </button>\n <button\n onClick={() => navigate(isNew ? '/agents' : `/agents/${id}`)}\n className=\"w-full btn-ghost text-xs\"\n >\n Cancel\n </button>\n </div>\n\n {saveError && <p className=\"text-xs text-status-error mt-3\">{saveError}</p>}\n </nav>\n\n {/* Section content */}\n <div className=\"flex-1 min-w-0 pt-2\">\n {section === 1 && <IdentityStep form={form} set={set} />}\n {section === 2 && <MotivationStep form={form} set={set} />}\n {section === 3 && <KnowledgeStep form={form} set={set} />}\n {section === 4 && <SubscriptionsStep form={form} set={set} />}\n {section === 5 && <ScheduleStep form={form} set={set} />}\n {section === 6 && <ReviewStep form={form} />}\n </div>\n </div>\n </div>\n );\n}\n"],"names":["EMPTY_FORM","EMPTY_SUBSCRIPTION","EMPTY_SCHEDULE","agentToForm","agent","subscriptions","schedules","_b","_a","s","_c","formToAgentPayload","form","behaviors","tryParseJson","formToSubscriptionPayloads","updateMappingField","currentJson","key","fieldValue","required","parsed","isReq","isEmpty","_","rest","resolved","sectionCls","labelCls","hintCls","inputCls","jsonCls","IdentityStep","set","jsxDEV","BookOpen","e","MotivationStep","KnowledgeStep","domainData","useListDomains","domains","d","Brain","DateValue","CapabilityCombobox","serverId","toolName","onChange","data","useCapabilities","allTools","useMemo","c","open","setOpen","useState","filter","setFilter","inputRef","useRef","containerRef","useEffect","handleClick","displayValue","filterText","filtered","q","t","selectedTool","v","Server","LABELS","ALL_TYPES","ReactionSelector","reactionType","onReactionTypeChange","workflowType","onWorkflowTypeChange","pipelineId","onPipelineIdChange","onCapabilityChange","mcpPrompt","onMcpPromptChange","availableTypes","configs","useWorkflowConfigs","invocableWorkflows","pipelineData","useYamlWorkflows","pipelines","w","rt","active","wt","p","CATEGORY_COLORS","SubscriptionsStep","topicsData","useTopics","capData","catalogTopics","selected","setSelected","updateSub","index","field","value","next","addSub","removeSub","i","subs","sub","isComplete","selectedCatalogEntry","Radio","Plus","Trash2","TopicCombobox","sid","tn","entry","tool","props","template","RunAsSelector","op","CapabilityMappingForm","Fragment","eventSchema","jsonMode","setJsonMode","allFields","k","fields","a","b","ai","bi","eventSuggestions","suggestions","schemaProps","def","updateField","desc","fieldType","currentVal","MappingFieldInput","placeholder","items","item","j","topics","catCls","CRON_PRESETS","describeCron","expr","ScheduleStep","updateSched","addSched","removeSched","scheds","sched","Clock","Section","Icon","color","title","children","Field","label","ReviewStep","Bot","Compass","EventTopicPill","WorkflowPill","CronLabel","SECTIONS","Check","AgentConfigPage","id","useParams","isNew","navigate","useNavigate","settings","useSettings","noun","existing","isLoading","useAgent","subsData","useAgentSubscriptions","createAgent","useCreateAgent","updateAgent","useUpdateAgent","createSub","useCreateSubscription","useUpdateSubscription","deleteSub","useDeleteSubscription","setForm","initialized","setInitialized","saveError","setSaveError","searchParams","setSearchParams","useSearchParams","section","setSection","useCallback","prev","f","handleSave","payload","agentId","subPayloads","existingSubs","existingIds","subId","_ignored","removedId","err","isPending","PageHeader"],"mappings":"w1BAwCO,MAAMA,EAA6B,CACxC,KAAM,GACN,YAAa,GACb,MAAO,GACP,MAAO,GACP,QAAS,GACT,iBAAkB,GAClB,cAAe,CAAA,EACf,UAAW,CAAA,CACb,EAIaC,GAA4C,CACvD,MAAO,GACP,OAAQ,GACR,cAAe,UACf,cAAe,GACf,YAAa,GACb,WAAY,GACZ,UAAW,GACX,UAAW,GACX,cAAe,KACf,WAAY,GACZ,QAAS,EACX,EAEaC,GAAoC,CAC/C,KAAM,YACN,cAAe,UACf,cAAe,GACf,YAAa,GACb,UAAW,GACX,UAAW,GACX,SAAU,KACV,WAAY,EACd,EA8BO,SAASC,GACdC,EACAC,EACgB,WAEhB,MAAMC,GAAiCC,GAAAC,EAAAJ,EAAM,YAAN,YAAAI,EAAiB,YAAjB,MAAAD,EAA4B,OAC9DH,EAAM,UAAU,UAAoB,IAAKK,IAAY,CACpD,KAAMA,EAAE,MAAQ,GAChB,cAAeA,EAAE,eAAiB,UAClC,cAAeA,EAAE,eAAiB,GAClC,YAAaA,EAAE,aAAe,GAC9B,UAAWA,EAAE,WAAa,GAC1B,UAAWA,EAAE,WAAa,GAC1B,SAAUA,EAAE,SAAW,KAAK,UAAUA,EAAE,SAAU,KAAM,CAAC,EAAI,KAC7D,WAAYA,EAAE,YAAc,EAAA,EAC5B,GACFC,EAAAN,EAAM,YAAN,MAAAM,EAAiB,KACf,CAAC,CAAE,KAAMN,EAAM,UAAU,KAAM,cAAe,UAAoB,cAAeA,EAAM,eAAiB,GAAI,YAAa,GAAI,UAAW,GAAI,UAAW,GAAI,SAAU,KAAM,WAAY,EAAA,CAAI,EAC3L,CAAA,EAEN,MAAO,CACL,KAAMA,EAAM,GACZ,YAAaA,EAAM,aAAe,GAClC,MAAOA,EAAM,OAAS,GACtB,MAAOA,EAAM,OAAS,GACtB,QAASA,EAAM,SAAW,GAC1B,iBAAkBA,EAAM,kBAAoB,GAC5C,cAAeC,EAAc,IAAKI,IAAO,CACvC,GAAIA,EAAE,GACN,MAAOA,EAAE,MACT,OAAQA,EAAE,OAAS,KAAK,UAAUA,EAAE,OAAQ,KAAM,CAAC,EAAI,GACvD,cAAeA,EAAE,cACjB,cAAeA,EAAE,eAAiB,GAClC,YAAaA,EAAE,aAAe,GAC9B,WAAYA,EAAE,YAAc,GAC5B,UAAWA,EAAE,WAAa,GAC1B,UAAWA,EAAE,WAAa,GAC1B,cAAe,KAAK,UAAUA,EAAE,eAAiB,CAAA,EAAI,KAAM,CAAC,EAC5D,WAAYA,EAAE,YAAc,GAC5B,QAASA,EAAE,OAAA,EACX,EACF,UAAAH,CAAA,CAEJ,CAEO,SAASK,GAAmBC,EAA2C,OAC5E,MAAMC,EAA4B,CAAA,EAElC,OAAID,EAAK,UAAU,OAAS,IACzBC,EAAkB,UAAYD,EAAK,UAAU,IAAKH,IAAO,CACxD,KAAMA,EAAE,KACR,cAAeA,EAAE,eAAiB,UAClC,cAAeA,EAAE,gBAAkB,WAAa,OAAYA,EAAE,cAC9D,YAAaA,EAAE,gBAAkB,WAAaA,EAAE,YAAc,OAC9D,SAAUK,EAAaL,EAAE,QAAQ,GAAK,CAAA,EACtC,WAAYA,EAAE,YAAc,MAAA,EAC5B,EAEFI,EAAU,KAAOD,EAAK,UAAU,CAAC,EAAE,MAG9B,CACL,GAAIA,EAAK,KACT,YAAaA,EAAK,aAAe,OACjC,MAAOA,EAAK,OAAS,OACrB,MAAOA,EAAK,OAAS,OACrB,QAASA,EAAK,SAAW,OACzB,iBAAkBA,EAAK,kBAAoB,OAC3C,UAAAC,EACA,gBAAeL,EAAAI,EAAK,UAAU,CAAC,IAAhB,YAAAJ,EAAmB,gBAAiB,OACnD,YAAa,MAAA,CAEjB,CAEO,SAASO,GAA2BH,EAWxC,CACD,OAAOA,EAAK,cAAc,IAAKH,IAAO,CACpC,GAAIA,EAAE,GACN,MAAOA,EAAE,MACT,OAAQA,EAAE,OAASK,EAAaL,EAAE,MAAM,EAAI,OAC5C,cAAeA,EAAE,cACjB,cAAeA,EAAE,eAAiB,OAClC,YAAaA,EAAE,aAAe,OAC9B,WAAYA,EAAE,YAAc,OAC5B,UAAWA,EAAE,WAAa,OAC1B,UAAWA,EAAE,WAAa,OAC1B,cAAeK,EAAaL,EAAE,aAAa,GAAK,CAAA,EAChD,WAAYA,EAAE,YAAc,OAC5B,QAASA,EAAE,OAAA,EACX,CACJ,CAEA,SAASK,EAAa,EAA4C,CAChE,GAAK,EAAE,KAAA,EACP,GAAI,CAAE,OAAO,KAAK,MAAM,CAAC,CAAG,MAAQ,CAAE,MAAkB,CAC1D,CAYO,SAASE,GACdC,EACAC,EACAC,EACAC,EACQ,CACR,IAAIC,EACJ,GAAI,CAAEA,EAAS,KAAK,MAAMJ,CAAW,CAAG,MAAQ,CAAEI,EAAS,CAAA,CAAI,CAE/D,MAAMC,EAAQF,EAAS,SAASF,CAAG,EAG7BK,EAAUJ,IAAe,IAAMA,IAAe,QAAaA,IAAe,MAC1E,MAAM,QAAQA,CAAU,GAAKA,EAAW,SAAW,GACpDA,IAAe,KACpB,GAAI,CAACG,GAASC,EAAS,CACrB,KAAM,CAAE,CAACL,CAAG,EAAGM,EAAG,GAAGC,GAASJ,EAC9B,OAAO,KAAK,UAAUI,EAAM,KAAM,CAAC,CACrC,CAGA,IAAIC,EAAWP,EACf,GAAI,OAAOA,GAAe,SACxB,GAAI,CACF,MAAM,EAAI,KAAK,MAAMA,CAAU,EAC3B,MAAM,QAAQ,CAAC,IAAGO,EAAW,EACnC,MAAQ,CAAuB,CAEjC,OAAO,KAAK,UAAU,CAAE,GAAGL,EAAQ,CAACH,CAAG,EAAGQ,CAAA,EAAY,KAAM,CAAC,CAC/D,CAEO,MAAMC,EAAa,qCACbC,EAAW,QACXC,EAAU,OACVC,EAAW,QACXC,EAAU,oBCzPhB,SAASC,GAAa,CAAE,KAAApB,EAAM,IAAAqB,GAAc,CACjD,OACEC,EAAAA,OAAC,MAAA,CAAI,UAAU,YACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,yEACb,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,yDAAyD,SAAA,0HAAA,EAAtE,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EACAA,SAAC,SAAA,CAAO,QAAS,IAAM,CAAE,OAAO,SAAS,KAAO,0BAA4B,EAAG,UAAU,yEAAyE,MAAM,iBAAiB,kBAACC,EAAA,CAAS,UAAU,UAAU,YAAa,GAAA,EAA3C,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,GAAA,EAAA,IAAgD,CAAA,EAAzO,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA2O,CAAA,CAAA,EAJ7O,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAKA,WAEC,MAAA,CACC,SAAA,CAAAD,SAAC,QAAA,CAAM,UAAWN,EAAU,SAAA,QAAA,EAA5B,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAkC,WACjC,QAAA,CAAM,KAAK,OAAO,MAAOhB,EAAK,KAAM,SAAWwB,GAAMH,EAAI,OAAQG,EAAE,OAAO,KAAK,EAAG,YAAY,iBAAiB,UAAWN,CAAA,EAA3H,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAqI,EACrII,SAAC,IAAA,CAAE,UAAWL,EAAS,SAAA,iDAAA,EAAvB,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAsE,CAAA,CAAA,EAHxE,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAIA,WAEC,MAAA,CACC,SAAA,CAAAK,SAAC,QAAA,CAAM,UAAWN,EAAU,SAAA,aAAA,EAA5B,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAuC,WACtC,QAAA,CAAM,KAAK,OAAO,MAAOhB,EAAK,YAAa,SAAWwB,GAAMH,EAAI,cAAeG,EAAE,OAAO,KAAK,EAAG,YAAY,yDAAyD,UAAWN,CAAA,EAAjL,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA2L,EAC3LI,SAAC,IAAA,CAAE,UAAWL,EAAS,SAAA,uDAAA,EAAvB,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA4E,CAAA,CAAA,EAH9E,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAIA,CAAA,CAAA,EAlBF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAmBA,CAEJ,CCvBO,SAASQ,GAAe,CAAE,KAAAzB,EAAM,IAAAqB,GAAc,CACnD,OACEC,EAAAA,OAAC,MAAA,CAAI,UAAU,YACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,yEACb,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,yDAAyD,SAAA,2EAAA,EAAtE,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EACAA,SAAC,SAAA,CAAO,QAAS,IAAM,CAAE,OAAO,SAAS,KAAO,4BAA8B,EAAG,UAAU,yEAAyE,MAAM,mBAAmB,kBAACC,EAAA,CAAS,UAAU,UAAU,YAAa,GAAA,EAA3C,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,GAAA,EAAA,IAAgD,CAAA,EAA7O,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA+O,CAAA,CAAA,EAJjP,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAKA,EAEAD,EAAAA,OAAC,MAAA,CAAI,UAAU,yBACb,SAAA,CAAAA,SAAC,MAAA,CACC,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAWN,EAAU,SAAA,OAAA,EAA5B,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAiC,EACjCM,EAAAA,OAAC,YAAS,MAAOtB,EAAK,MAAO,SAAWwB,GAAMH,EAAI,QAASG,EAAE,OAAO,KAAK,EAAG,YAAY,qEAAqE,KAAM,EAAG,UAAW,GAAGN,CAAQ,gBAA5L,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA4M,EAC5MI,SAAC,IAAA,CAAE,UAAWL,EAAS,SAAA,+DAAA,EAAvB,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAoF,CAAA,CAAA,EAHtF,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAIA,WACC,MAAA,CACC,SAAA,CAAAK,SAAC,QAAA,CAAM,UAAWN,EAAU,SAAA,OAAA,EAA5B,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAiC,EACjCM,EAAAA,OAAC,YAAS,MAAOtB,EAAK,MAAO,SAAWwB,GAAMH,EAAI,QAASG,EAAE,OAAO,KAAK,EAAG,YAAY,kEAAkE,KAAM,EAAG,UAAW,GAAGN,CAAQ,gBAAzL,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAyM,EACzMI,SAAC,IAAA,CAAE,UAAWL,EAAS,SAAA,uEAAA,EAAvB,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA4F,CAAA,CAAA,EAH9F,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAIA,CAAA,CAAA,EAVF,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAWA,CAAA,CAAA,EAnBF,OAAA,GAAA,CAAA,SAAA,4DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAoBA,CAEJ,CCtBO,SAASS,GAAc,CAAE,KAAA1B,EAAM,IAAAqB,GAAc,CAClD,KAAM,CAAE,KAAMM,CAAA,EAAeC,GAAA,EACvBC,GAAUF,GAAA,YAAAA,EAAY,UAAW,CAAA,EAEvC,OACEL,EAAAA,OAAC,MAAA,CAAI,UAAU,YACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,yEACb,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,yDAAyD,SAAA,wFAAA,EAAtE,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EACAA,SAAC,SAAA,CAAO,QAAS,IAAM,CAAE,OAAO,SAAS,KAAO,2BAA6B,EAAG,UAAU,yEAAyE,MAAM,kBAAkB,kBAACC,EAAA,CAAS,UAAU,UAAU,YAAa,GAAA,EAA3C,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,GAAA,EAAA,IAAgD,CAAA,EAA3O,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA6O,CAAA,CAAA,EAJ/O,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAKA,WAEC,MAAA,CACC,SAAA,CAAAD,SAAC,QAAA,CAAM,UAAWN,EAAU,SAAA,kBAAA,EAA5B,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA4C,EAC5CM,EAAAA,OAAC,QAAA,CACC,KAAK,OACL,MAAOtB,EAAK,iBACZ,SAAWwB,GAAMH,EAAI,mBAAoBG,EAAE,OAAO,KAAK,EACvD,YAAY,mDACZ,UAAWN,EACX,KAAK,oBAAA,EANP,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,EAQAI,EAAAA,OAAC,WAAA,CAAS,GAAG,qBACV,WAAQ,IAAKQ,GAAMR,EAAAA,OAAC,SAAA,CAAsB,MAAOQ,EAAE,MAAA,EAAnBA,EAAE,OAAf,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAwC,CAAE,GADhE,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EACAR,SAAC,IAAA,CAAE,UAAWL,EAAS,SAAA,8EAAA,EAAvB,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAmG,CAAA,CAAA,EAbrG,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAcA,EAECY,EAAQ,OAAS,GAChBP,EAAAA,OAAC,MAAA,CACC,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAWN,EAAU,SAAA,kBAAA,EAA5B,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA4C,WAC3C,MAAA,CAAI,UAAU,mBACZ,SAAAa,EAAQ,IAAKC,GACZR,EAAAA,OAAC,SAAA,CAEC,KAAK,SACL,QAAS,IAAMD,EAAI,mBAAoBS,EAAE,MAAM,EAC/C,UAAW,mFACT9B,EAAK,mBAAqB8B,EAAE,OAAS,yCAA2C,wDAClF,GAEA,SAAA,CAAAR,SAACS,EAAA,CAAM,UAAU,4CAA4C,YAAa,GAAA,EAA1E,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA+E,EAC/ET,SAAC,OAAA,CAAK,UAAU,mCAAoC,WAAE,MAAA,EAAtD,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA6D,EAC7DA,EAAAA,OAAC,OAAA,CAAK,UAAU,mCAAoC,SAAA,CAAAQ,EAAE,MAAM,UAAA,CAAA,EAA5D,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAoE,EACpER,EAAAA,OAAC,QAAK,UAAU,kCAAkC,kBAACU,GAAA,CAAU,KAAMF,EAAE,MAAA,EAAnB,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA2B,CAAA,EAA7E,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA+E,CAAA,CAAA,EAV1EA,EAAE,OADT,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAaD,CAAA,EAfH,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAgBA,CAAA,CAAA,EAlBF,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAmBA,CAAA,CAAA,EA5CJ,OAAA,GAAA,CAAA,SAAA,2DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IA8CA,CAEJ,CCrDO,SAASG,GAAmB,CAAE,SAAAC,EAAU,SAAAC,EAAU,SAAAC,GAItD,CACD,KAAM,CAAE,KAAAC,CAAA,EAASC,GAAA,EACXC,EAAWC,EAAAA,QACf,IAAA,OAAM,QAAA5C,EAAAyC,GAAA,YAAAA,EAAM,aAAN,YAAAzC,EAAkB,QAAS6C,GAAMA,EAAE,SAAU,CAAA,GACnD,CAACJ,CAAI,CAAA,EAGD,CAACK,EAAMC,CAAO,EAAIC,EAAAA,SAAS,EAAK,EAChC,CAACC,EAAQC,CAAS,EAAIF,EAAAA,SAAS,EAAE,EACjCG,EAAWC,EAAAA,OAAyB,IAAI,EACxCC,EAAeD,EAAAA,OAAuB,IAAI,EAGhDE,EAAAA,UAAU,IAAM,CACd,GAAI,CAACR,EAAM,OACX,SAASS,EAAY3B,EAAe,CAC9ByB,EAAa,SAAW,CAACA,EAAa,QAAQ,SAASzB,EAAE,MAAc,GACzEmB,EAAQ,EAAK,CAEjB,CACA,gBAAS,iBAAiB,YAAaQ,CAAW,EAC3C,IAAM,SAAS,oBAAoB,YAAaA,CAAW,CACpE,EAAG,CAACT,CAAI,CAAC,EAET,MAAMU,EAAejB,EAAW,GAAGA,CAAQ,GAAK,GAC1CkB,EAAaX,EAAOG,EAASO,EAE7BE,EAAWd,EAAAA,QAAQ,IAAM,CAC7B,MAAMe,GAAKb,EAAOG,EAAS,IAAI,YAAA,EAC/B,OAAKU,EACEhB,EAAS,OAAQiB,GACtBA,EAAE,KAAK,cAAc,SAASD,CAAC,GAC/BC,EAAE,WAAW,cAAc,SAASD,CAAC,IACpCC,EAAE,aAAe,IAAI,cAAc,SAASD,CAAC,CAAA,EAJjChB,CAMjB,EAAG,CAACA,EAAUM,EAAQH,CAAI,CAAC,EAErBe,EAAetB,EACjBI,EAAS,KAAM,GAAM,EAAE,WAAaL,GAAY,EAAE,OAASC,CAAQ,EACnE,OAEJ,OACEb,EAAAA,OAAC,MAAA,CAAI,IAAK2B,EAAc,UAAU,WAChC,SAAA,CAAA3B,EAAAA,OAAC,QAAA,CACC,IAAKyB,EACL,KAAK,OACL,MAAOM,EACP,QAAS,IAAM,CAAEV,EAAQ,EAAI,EAAGG,EAAUM,CAAY,CAAG,EACzD,SAAW5B,GAAM,CACf,MAAMkC,EAAIlC,EAAE,OAAO,MACnBsB,EAAUY,CAAC,EACNA,GAAGtB,EAAS,GAAI,EAAE,EAClBM,GAAMC,EAAQ,EAAI,CACzB,EACA,YAAY,yBACZ,UAAU,gCAAA,EAZZ,OAAA,GAAA,CAAA,SAAA,mEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,EAgBC,CAACD,IAAQe,GAAA,YAAAA,EAAc,uBACrB,IAAA,CAAE,UAAU,6CAA8C,SAAAA,EAAa,WAAA,EAAxE,OAAA,GAAA,CAAA,SAAA,mEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAoF,EAGrFf,GAAQY,EAAS,OAAS,GACzBhC,EAAAA,OAAC,MAAA,CAAI,UAAU,0HACZ,SAAAgC,EAAS,IAAK,GACbhC,EAAAA,OAAC,SAAA,CAEC,KAAK,SACL,QAAS,IAAM,CACbc,EAAS,EAAE,SAAU,EAAE,IAAI,EAC3BU,EAAU,EAAE,IAAI,EAChBH,EAAQ,EAAK,CACf,EACA,UAAW,+FACTT,IAAa,EAAE,UAAYC,IAAa,EAAE,KAAO,cAAgB,EACnE,GAEA,SAAA,CAAAb,SAAC,OAAA,CAAK,UAAU,mDAAoD,SAAA,EAAE,IAAA,EAAtE,OAAA,GAAA,CAAA,SAAA,mEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA2E,EAC3EA,EAAAA,OAAC,OAAA,CAAK,UAAU,gHACd,SAAA,CAAAA,SAACqC,GAAA,CAAO,UAAU,UAAU,YAAa,GAAA,EAAzC,OAAA,GAAA,CAAA,SAAA,mEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA8C,EAC7C,EAAE,UAAA,CAAA,EAFL,OAAA,GAAA,CAAA,SAAA,mEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAGA,EACC,EAAE,aACDrC,SAAC,QAAK,UAAU,4CAA6C,WAAE,aAA/D,OAAA,GAAA,CAAA,SAAA,mEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA2E,CAAA,CAAA,EAjBxE,GAAG,EAAE,QAAQ,IAAI,EAAE,IAAI,GAD9B,GAAA,CAAA,SAAA,mEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAqBD,CAAA,EAvBH,OAAA,GAAA,CAAA,SAAA,mEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAwBA,EAGDoB,GAAQY,EAAS,SAAW,GAAKT,GAChCvB,EAAAA,OAAC,MAAA,CAAI,UAAU,uHACb,SAAAA,SAAC,IAAA,CAAE,UAAU,mCAAmC,SAAA,CAAA,0BAAwBuB,EAAO,GAAA,CAAA,EAA/E,OAAA,GAAA,CAAA,SAAA,mEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAgF,CAAA,EADlF,OAAA,GAAA,CAAA,SAAA,mEAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAEA,CAAA,CAAA,EApDJ,OAAA,GAAA,CAAA,SAAA,mEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAsDA,CAEJ,CC7GA,MAAMe,GAAiC,CACrC,QAAS,WACT,SAAU,WACV,WAAY,aACZ,UAAW,WACb,EAEMC,GAAY,CAAC,UAAW,WAAY,aAAc,WAAW,EAiB5D,SAASC,GAAiB,CAC/B,aAAAC,EACA,qBAAAC,EACA,aAAAC,EACA,qBAAAC,EACA,WAAAC,EACA,mBAAAC,EACA,SAAAlC,EACA,SAAAC,EACA,mBAAAkC,EACA,UAAAC,EACA,kBAAAC,EACA,eAAAC,EAAiB,CAAC,GAAGX,EAAS,CAChC,EAA0B,CACxB,KAAM,CAAE,KAAMY,CAAA,EAAYC,GAAA,EACpBC,GAAsBF,GAAW,CAAA,GAAI,OAAQhC,GAAWA,EAAE,SAAS,EAAE,IAAKA,GAAWA,EAAE,aAAuB,EAC9G,CAAE,KAAMmC,CAAA,EAAiBC,GAAiB,CAAE,OAAQ,SAAU,EAC9DC,IAAaF,GAAA,YAAAA,EAAc,YAAa,CAAA,GAAI,IAAKG,IAAY,CAAE,GAAIA,EAAE,GAAc,KAAOA,EAAE,aAAeA,EAAE,IAAgB,EAEnI,OACEzD,EAAAA,OAAC,MAAA,CAAI,UAAU,YAEb,SAAA,CAAAA,SAAC,OAAI,UAAU,aACZ,SAAAkD,EAAe,IAAKQ,GAAO,CAC1B,MAAMC,EAASlB,IAAiBiB,EAChC,OACE1D,EAAAA,OAAC,SAAA,CAEC,KAAK,SACL,QAAS,IAAM0C,EAAqBgB,CAAE,EACtC,UAAW,oEACTC,EACI,2BACA,mEACN,GAEC,YAAOD,CAAE,CAAA,EATLA,EADP,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAaJ,CAAC,CAAA,EAjBH,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAkBA,EAGCjB,IAAiB,WAChBzC,EAAAA,OAAC,MAAA,CACC,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAU,QAAQ,SAAA,YAAA,EAAzB,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAmC,EACnCA,EAAAA,OAAC,SAAA,CAAO,MAAO2C,EAAc,SAAWzC,GAAM0C,EAAqB1C,EAAE,OAAO,KAAK,EAAG,UAAU,QAC5F,SAAA,CAAAF,SAAC,SAAA,CAAO,MAAM,GAAG,SAAA,oBAAA,EAAjB,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAmC,EAClCqD,EAAmB,IAAKO,YAAQ,SAAA,CAAgB,MAAOA,EAAK,SAAAA,GAAhBA,EAAb,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAgC,CAAS,CAAA,CAAA,EAF3E,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAGA,CAAA,CAAA,EALF,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAMA,EAGDnB,IAAiB,YAChBzC,EAAAA,OAAC,MAAA,CACC,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAU,QAAQ,SAAA,YAAA,EAAzB,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAmC,EACnCA,EAAAA,OAAC,SAAA,CAAO,MAAO6C,EAAY,SAAW3C,GAAM4C,EAAmB5C,EAAE,OAAO,KAAK,EAAG,UAAU,QACxF,SAAA,CAAAF,SAAC,SAAA,CAAO,MAAM,GAAG,SAAA,oBAAA,EAAjB,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAmC,EAClCwD,EAAU,IAAKK,GAAM7D,EAAAA,OAAC,SAAA,CAAkB,MAAO6D,EAAE,GAAK,SAAAA,EAAE,IAAA,EAAtBA,EAAE,GAAf,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAwC,CAAS,CAAA,CAAA,EAFzE,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAGA,CAAA,CAAA,EALF,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAMA,EAGDpB,IAAiB,cAChBzC,EAAAA,OAAC,MAAA,CACC,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAU,QAAQ,SAAA,cAAA,EAAzB,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAqC,EACrCA,EAAAA,OAACW,GAAA,CACC,SAAAC,EACA,SAAAC,EACA,SAAUkC,CAAA,EAHZ,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAIA,CAAA,EANF,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAOA,EAGDN,IAAiB,aAAeQ,GAC/BjD,EAAAA,OAAC,MAAA,CACC,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAU,QAAQ,SAAA,UAAA,EAAzB,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAiC,EACjCA,EAAAA,OAAC,WAAA,CACC,MAAOgD,GAAa,GACpB,SAAW9C,GAAM+C,EAAkB/C,EAAE,OAAO,KAAK,EACjD,YAAY,+CACZ,KAAM,EACN,UAAU,mBAAA,EALZ,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAMA,CAAA,EARF,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IASA,CAAA,CAAA,EAhEJ,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAkEA,CAEJ,CC3GA,MAAM4D,GAA0C,CAC9C,KAAY,yCACZ,SAAY,2BACZ,WAAY,2CACZ,SAAY,yCACZ,UAAY,2BACZ,KAAY,uCACZ,MAAY,2CACZ,IAAY,uCACZ,UAAY,0BACd,EAOO,SAASC,GAAkB,CAAE,KAAArF,EAAM,IAAAqB,GAAc,CACtD,KAAM,CAAE,KAAMiE,CAAA,EAAeC,GAAU,CAAE,MAAO,IAAK,EAC/C,CAAE,KAAMC,CAAA,EAAYlD,GAAA,EACpBmD,GAAgBH,GAAA,YAAAA,EAAY,SAAU,CAAA,EACtC/C,EAAWC,EAAAA,QAAQ,WAAM,QAAA5C,EAAA4F,GAAA,YAAAA,EAAS,aAAT,YAAA5F,EAAqB,QAAS6C,GAAMA,EAAE,SAAU,CAAA,GAAI,CAAC+C,CAAO,CAAC,EACtF,CAACE,EAAUC,CAAW,EAAI/C,EAAAA,SAAS,CAAC,EAEpCgD,EAAY,CAACC,EAAeC,EAAoCC,IAAe,CACnF,MAAMC,EAAO,CAAC,GAAGhG,EAAK,aAAa,EACnCgG,EAAKH,CAAK,EAAI,CAAE,GAAGG,EAAKH,CAAK,EAAG,CAACC,CAAK,EAAGC,CAAA,EACzC1E,EAAI,gBAAiB2E,CAAI,CAC3B,EAEMC,EAAS,IAAM,CACnB5E,EAAI,gBAAiB,CAAC,GAAGrB,EAAK,cAAe,CAAE,GAAGX,EAAA,CAAoB,CAAC,EACvEsG,EAAY3F,EAAK,cAAc,MAAM,CACvC,EAEMkG,EAAaL,GAAkB,CACnCxE,EAAI,gBAAiBrB,EAAK,cAAc,OAAO,CAACY,EAAGuF,IAAMA,IAAMN,CAAK,CAAC,EACjEH,GAAY1F,EAAK,cAAc,OAAS,GAAG2F,EAAY,KAAK,IAAI,EAAG3F,EAAK,cAAc,OAAS,CAAC,CAAC,CACvG,EAEMoG,EAAOpG,EAAK,cACZqG,EAAMD,EAAKV,CAAQ,EACnBY,EAAczG,GACbA,EAAE,MACHA,EAAE,gBAAkB,UAAkB,CAAC,CAACA,EAAE,cAC1CA,EAAE,gBAAkB,WAAmB,CAAC,CAACA,EAAE,YAC3CA,EAAE,gBAAkB,YAAoB,CAAC,CAACA,EAAE,WAC5CA,EAAE,gBAAkB,aAAqB,CAAC,CAACA,EAAE,WAAa,CAAC,CAACA,EAAE,UAC3D,GALc,GASjB0G,EAAuBF,EAAMZ,EAAc,KAAM,GAAM,EAAE,QAAUY,EAAI,KAAK,EAAI,OAEtF,OAAID,EAAK,SAAW,EAEhB9E,EAAAA,OAAC,MAAA,CAAI,UAAU,WACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,8EACb,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,yDAAyD,SAAA,mHAAA,EAAtE,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,EACAA,SAAC,SAAA,CAAO,QAAS,IAAM,CAAE,OAAO,SAAS,KAAO,+BAAiC,EAAG,UAAU,yEAAyE,MAAM,sBAAsB,kBAACC,EAAA,CAAS,UAAU,UAAU,YAAa,GAAA,EAA3C,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,GAAA,EAAA,IAAgD,CAAA,EAAnP,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAqP,CAAA,CAAA,EAJvP,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAKA,EACAD,EAAAA,OAAC,MAAA,CAAI,UAAU,8DACb,SAAA,CAAAA,SAACkF,EAAA,CAAM,UAAU,uCAAuC,YAAa,CAAA,EAArE,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAwE,EACxElF,SAAC,IAAA,CAAE,UAAU,kCAAkC,SAAA,4BAAA,EAA/C,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAyE,EACzEA,SAAC,IAAA,CAAE,UAAU,iDAAiD,SAAA,oFAAA,EAA9D,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,EACAA,EAAAA,OAAC,SAAA,CAAO,QAAS2E,EAAQ,UAAU,wFACjC,SAAA,CAAA3E,EAAAA,OAACmF,EAAA,CAAK,UAAU,aAAA,EAAhB,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA8B,EAAE,yBAAA,CAAA,EADlC,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EARF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IASA,CAAA,CAAA,EAhBF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAiBA,WAKD,MAAA,CACC,SAAA,CAAAnF,EAAAA,OAAC,MAAA,CAAI,UAAU,8EACb,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,yDAAyD,SAAA,mHAAA,EAAtE,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EACAA,SAAC,SAAA,CAAO,QAAS,IAAM,CAAE,OAAO,SAAS,KAAO,+BAAiC,EAAG,UAAU,yEAAyE,MAAM,sBAAsB,kBAACC,EAAA,CAAS,UAAU,UAAU,YAAa,GAAA,EAA3C,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,GAAA,EAAA,IAAgD,CAAA,EAAnP,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAqP,CAAA,CAAA,EAJvP,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAKA,EAEAD,EAAAA,OAAC,MAAA,CAAI,UAAU,aAEb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,4BACZ,SAAA,CAAA8E,EAAK,IAAI,CAACvG,EAAGsG,IACZ7E,EAAAA,OAAC,MAAA,CAAY,UAAW,4DACtBoE,IAAaS,EAAI,2BAA6B,mEAChD,GACE,SAAA,CAAA7E,SAAC,UAAO,QAAS,IAAMqE,EAAYQ,CAAC,EAAG,UAAU,qCAC/C,SAAA,CAAA7E,EAAAA,OAAC,MAAA,CAAI,UAAU,4BACb,SAAA,CAAAA,EAAAA,OAAC,OAAA,CAAK,UAAW,8CAA8CgF,EAAWzG,CAAC,EAAI,oBAAsB,mBAAmB,EAAA,EAAxH,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA4H,WAC3H,OAAA,CAAK,UAAU,iCAAkC,SAAAA,EAAE,OAAS,oBAA7D,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAgF,CAAA,CAAA,EAFlF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAGA,EACAyB,EAAAA,OAAC,OAAA,CAAK,UAAU,uCAAuC,SAAA,CAAA,KAAGzB,EAAE,eAAiBA,EAAE,WAAaA,EAAE,aAAA,CAAA,EAA9F,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA4G,CAAA,CAAA,EAL9G,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAMA,EACAyB,EAAAA,OAAC,SAAA,CAAO,QAAUE,GAAM,CAAEA,EAAE,gBAAA,EAAuB,QAAQ,wBAAwB3B,EAAE,OAAS,KAAK;AAAA;AAAA,iCAAwC,KAAasG,CAAC,CAAG,EAAG,UAAU,yGAAyG,MAAM,SACtR,SAAA7E,SAACoF,EAAA,CAAO,UAAU,SAAA,EAAlB,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA4B,CAAA,EAD9B,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAZQP,EAAV,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAaA,CACD,EACD7E,EAAAA,OAAC,SAAA,CAAO,QAAS2E,EAAQ,UAAU,+GACjC,SAAA,CAAA3E,EAAAA,OAACmF,EAAA,CAAK,UAAU,SAAA,EAAhB,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA0B,EAAE,MAAA,CAAA,EAD9B,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAnBF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAoBA,EAGCJ,GACC/E,EAAAA,OAAC,MAAA,CAAI,UAAU,4BAGb,SAAA,CAAAA,SAAC,MAAA,CACC,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAWP,EAAY,SAAA,uBAAA,EAA9B,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmD,EACnDO,EAAAA,OAACqF,GAAA,CACC,MAAON,EAAI,MACX,SAAW3C,GAAMkC,EAAUF,EAAU,QAAShC,CAAC,EAC/C,OAAQ+B,CAAA,EAHV,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,GAOCc,GAAA,YAAAA,EAAsB,iBACrBjF,SAAC,MAAA,CAAI,UAAU,qEACb,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,6EAA6E,SAAA,gBAAA,EAA1F,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAwG,EACxGA,EAAAA,OAAC,MAAA,CAAI,UAAU,yFACZ,SAAA,KAAK,UAAUiF,EAAqB,eAAe,YAAcA,EAAqB,eAAgB,KAAM,CAAC,CAAA,EADhH,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACCA,EAAqB,aACpBjF,SAAC,KAAE,UAAU,6CAA8C,WAAqB,aAAhF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA4F,CAAA,CAAA,EANhG,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAQA,CAAA,CAAA,EAlBJ,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAoBA,WAGC,MAAA,CACC,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAWP,EAAY,SAAA,mBAAA,EAA9B,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA+C,EAC/CO,EAAAA,OAACwC,GAAA,CACC,aAAcuC,EAAI,cAClB,qBAAuB3C,GAAMkC,EAAUF,EAAU,gBAAiBhC,CAAC,EACnE,aAAc2C,EAAI,cAClB,qBAAuB3C,GAAMkC,EAAUF,EAAU,gBAAiBhC,CAAC,EACnE,WAAY2C,EAAI,YAChB,mBAAqB3C,GAAMkC,EAAUF,EAAU,cAAehC,CAAC,EAC/D,SAAU2C,EAAI,UACd,SAAUA,EAAI,UACd,mBAAoB,CAACO,EAAKC,IAAO,OAC/B,MAAMb,EAAO,CAAC,GAAGhG,EAAK,aAAa,EAC7B8G,EAAQ,CAAE,GAAGd,EAAKN,CAAQ,EAAG,UAAWkB,EAAK,UAAWC,CAAA,EAExDE,EAAOxE,EAAS,KAAMiB,GAAMA,EAAE,WAAaoD,GAAOpD,EAAE,OAASqD,CAAE,EAC/DG,GAAQpH,EAAAmH,GAAA,YAAAA,EAAM,cAAN,YAAAnH,EAAmB,WACjC,GAAIoH,GAASH,EAAI,CACf,MAAMI,EAAmC,CAAA,EACzC,UAAW3G,KAAO,OAAO,KAAK0G,CAAK,EAC7B1G,EAAI,WAAW,GAAG,IACtB2G,EAAS3G,CAAG,EAAI,eAAeA,CAAG,KAEpCwG,EAAM,cAAgB,KAAK,UAAUG,EAAU,KAAM,CAAC,CACxD,CACAjB,EAAKN,CAAQ,EAAIoB,EACjBzF,EAAI,gBAAiB2E,CAAI,CAC3B,EACA,UAAWK,EAAI,WACf,kBAAoB3C,GAAMkC,EAAUF,EAAU,aAAchC,CAAC,CAAA,EA3B/D,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CA6BA,CAAA,EA/BF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAgCA,EAGApC,EAAAA,OAAC,MAAA,CAAI,UAAU,yBACb,SAAA,CAAAA,SAAC,MAAA,CACC,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAWP,EAAY,SAAA,aAAA,EAA9B,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyC,EACzCO,EAAAA,OAAC4F,GAAA,CAAc,SAAUb,EAAI,WAAY,SAAW3C,GAAMkC,EAAUF,EAAU,aAAchC,CAAC,CAAA,EAA7F,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAgG,EAChGpC,SAAC,IAAA,CAAE,UAAWL,EAAS,SAAA,2CAAA,EAAvB,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAgE,CAAA,CAAA,EAHlE,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAIA,WACC,MAAA,CACC,SAAA,CAAAK,SAAC,QAAA,CAAM,UAAWP,EAAY,SAAA,aAAA,EAA9B,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyC,EACzCO,EAAAA,OAAC,SAAM,KAAK,OAAO,MAAO+E,EAAI,OAAQ,SAAW7E,GAAMoE,EAAUF,EAAU,SAAUlE,EAAE,OAAO,KAAK,EAAG,YAAY,uBAAuB,UAAW,GAAGN,CAAQ,sBAA/J,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAqL,EACrLI,SAAC,IAAA,CAAE,UAAWL,EAAS,SAAA,8DAAA,EAAvB,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmF,EACnFK,EAAAA,OAAC,MAAA,CAAI,UAAU,gCACZ,SAAA,CACC,CAAE,MAAO,SAAU,MAAO,gBAAA,EAC1B,CAAE,MAAO,YAAa,MAAO,yBAAA,EAC7B,CAAE,MAAO,UAAW,MAAO,8BAAA,EAC3B,CAAE,MAAO,SAAU,MAAO,4BAAA,CAA6B,EACvD,IAAK6F,GACL7F,EAAAA,OAAC,SAAA,CAEC,KAAK,SACL,QAAS,IAAMsE,EAAUF,EAAU,SAAUyB,EAAG,KAAK,EACrD,UAAU,yGAET,SAAAA,EAAG,KAAA,EALCA,EAAG,MADV,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAQD,CAAA,EAfH,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAgBA,CAAA,CAAA,EApBF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAqBA,CAAA,CAAA,EA3BF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IA4BA,WAGC,MAAA,CACC,SAAA,CAAA7F,SAAC,QAAA,CAAM,UAAWP,EAAY,SAAA,gBAAA,EAA9B,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA4C,EAC3CsF,EAAI,gBAAkB,cAAgBA,EAAI,UACzC/E,EAAAA,OAAC8F,GAAA,CACC,KAAM7E,EAAS,KAAM,GAAM,EAAE,WAAa8D,EAAI,WAAa,EAAE,OAASA,EAAI,SAAS,EACnF,MAAOA,EAAI,cACX,SAAW3C,GAAMkC,EAAUF,EAAU,gBAAiBhC,CAAC,EACvD,YAAa6C,GAAA,YAAAA,EAAsB,cAAA,EAJrC,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAOAjF,EAAAA,OAAA+F,WAAA,CACE,SAAA,CAAA/F,EAAAA,OAAC,YAAS,MAAO+E,EAAI,cAAe,SAAW7E,GAAMoE,EAAUF,EAAU,gBAAiBlE,EAAE,OAAO,KAAK,EAAG,KAAM,GAAI,UAAWL,EAAS,YAAa;AAAA;AAAA;AAAA;AAAA;AAAA,IAAtJ,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA2P,EAC3PG,EAAAA,OAAC,IAAA,CAAE,UAAWL,EAAS,SAAA,CAAA,wCAAsC,yBAAyB,uBAAA,CAAA,EAAtF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA2G,CAAA,CAAA,EAF7G,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAGA,CAAA,CAAA,EAbJ,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAeA,CAAA,CAAA,EA3GF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IA4GA,CAAA,CAAA,EAtIJ,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAwIA,CAAA,CAAA,EAhJF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAiJA,CAEJ,CAIA,SAASmG,GAAsB,CAAE,KAAAL,EAAM,MAAAhB,EAAO,SAAA3D,EAAU,YAAAkF,GAKrD,SACD,KAAM,CAACC,EAAUC,CAAW,EAAI5E,EAAAA,SAAS,EAAK,EACxCoE,IAASpH,EAAAmH,GAAA,YAAAA,EAAM,cAAN,YAAAnH,EAAmB,aAAc,CAAA,EAC1CY,IAAYb,EAAAoH,GAAA,YAAAA,EAAM,cAAN,YAAApH,EAAmB,WAAyB,CAAA,EACxD8H,EAAY,OAAO,QAAQT,CAAK,EAAE,OAAO,CAAC,CAACU,CAAC,IAAM,CAACA,EAAE,WAAW,GAAG,CAAC,EAGpEC,EAASnF,EAAAA,QAAQ,IACrB,CAAC,GAAGiF,CAAS,EAAE,KAAK,CAAC,CAACG,CAAC,EAAG,CAACC,CAAC,IAAM,CAChC,MAAMC,EAAKtH,EAAS,QAAQoH,CAAC,EACvBG,EAAKvH,EAAS,QAAQqH,CAAC,EAC7B,OAAIC,IAAO,IAAMC,IAAO,GAAWD,EAAKC,EACpCD,IAAO,GAAW,GAClBC,IAAO,GAAW,EACfH,EAAE,cAAcC,CAAC,CAC1B,CAAC,EACH,CAACJ,EAAWjH,CAAQ,CAAA,EAGdwH,EAAmBxF,EAAAA,QAAQ,IAAM,CACrC,MAAMyF,EAAuD,CAC3D,CAAE,MAAO,eAAgB,MAAO,YAAA,EAChC,CAAE,MAAO,iBAAkB,MAAO,cAAA,EAClC,CAAE,MAAO,oBAAqB,MAAO,eAAA,EACrC,CAAE,MAAO,qBAAsB,MAAO,aAAA,EACtC,CAAE,MAAO,uBAAwB,MAAO,eAAA,CAAgB,EAEpDC,EAAcZ,GAAA,YAAAA,EAAa,WACjC,GAAIY,EACF,SAAW,CAAC5H,EAAK6H,CAAG,IAAK,OAAO,QAAQD,CAAW,EACjDD,EAAY,KAAK,CACf,MAAO,eAAe3H,CAAG,IACzB,MAAQ6H,EAAY,aAAe7H,CAAA,CACpC,EAGL,OAAO2H,CACT,EAAG,CAACX,CAAW,CAAC,EAEV7G,EAAS+B,EAAAA,QAAQ,IAAM,CAC3B,GAAI,CAAE,OAAO,KAAK,MAAMuD,CAAK,CAA0B,MACjD,CAAE,MAAO,CAAA,CAA2B,CAC5C,EAAG,CAACA,CAAK,CAAC,EAEJqC,EAAc,CAAC9H,EAAaC,IAAoB,CACpD6B,EAAShC,GAAmB2F,EAAOzF,EAAKC,EAAYC,CAAQ,CAAC,CAC/D,EAEA,OAAImH,EAAO,SAAW,GAAKJ,WAEtB,MAAA,CACE,SAAA,CAAAI,EAAO,OAAS,GACfrG,EAAAA,OAAC,MAAA,CAAI,UAAU,wBACb,SAAAA,EAAAA,OAAC,SAAA,CAAO,KAAK,SAAS,QAAS,IAAMkG,EAAY,EAAK,EAAG,UAAU,oEAAoE,SAAA,aAAvI,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAgJ,CAAA,EADlJ,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,WAED,WAAA,CAAS,MAAAzB,EAAc,SAAWvE,GAAMY,EAASZ,EAAE,OAAO,KAAK,EAAG,KAAM,EAAG,UAAWL,EAAS,YAAa;AAAA;AAAA;AAAA,EAAA,EAA7G,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAqL,EACrLG,EAAAA,OAAC,IAAA,CAAE,UAAWL,EAAS,SAAA,CAAA,2CAAyC,yBAAyB,uBAAA,CAAA,EAAzF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAA8G,CAAA,CAAA,EAPhH,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAQA,WAKD,MAAA,CACC,SAAA,CAAAK,EAAAA,OAAC,MAAA,CAAI,UAAU,yCACb,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,iCAAiC,SAAA,2DAAA,EAA9C,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAEA,EACAA,EAAAA,OAAC,SAAA,CAAO,KAAK,SAAS,QAAS,IAAMkG,EAAY,EAAI,EAAG,UAAU,qEAAqE,SAAA,UAAA,EAAvI,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAA+I,CAAA,CAAA,EAJjJ,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAKA,EAEAlG,EAAAA,OAAC,MAAA,CAAI,UAAU,YACZ,SAAAqG,EAAO,IAAI,CAAC,CAACrH,EAAK6H,CAAG,IAAM,CAC1B,MAAMzH,EAAQF,EAAS,SAASF,CAAG,EAC7B+H,EAAQF,EAAY,YACpBG,EAAaH,EAAY,KACzBI,EAAa,OAAO9H,EAAOH,CAAG,GAAM,SAAWG,EAAOH,CAAG,EAC3D,OAAOG,EAAOH,CAAG,GAAM,SAAW,KAAK,UAAUG,EAAOH,CAAG,CAAC,EAC5DG,EAAOH,CAAG,GAAK,KAAO,OAAOG,EAAOH,CAAG,CAAC,EAAI,GAEhD,OACEgB,EAAAA,OAAC,MAAA,CAAc,UAAU,4CACvB,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,mCACb,SAAA,CAAAA,EAAAA,OAAC,QAAA,CAAM,UAAU,yEACd,SAAA,CAAAhB,EAAI,QAAQ,QAAS,GAAG,EACxBI,GAASY,EAAAA,OAAC,OAAA,CAAK,UAAU,2BAA2B,SAAA,GAAA,EAA3C,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA4C,CAAA,CAAA,EAFxD,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAGA,EACCgH,GAAahH,EAAAA,OAAC,OAAA,CAAK,UAAU,kCAAmC,SAAAgH,CAAA,EAAnD,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA6D,CAAA,CAAA,EAL7E,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAMA,EACCD,GAAQ/G,EAAAA,OAAC,IAAA,CAAE,UAAU,wCAAyC,SAAA+G,CAAA,EAAtD,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA2D,EACpE/G,EAAAA,OAACkH,GAAA,CACC,MAAOD,EACP,SAAW7E,GAAM0E,EAAY9H,EAAKoD,CAAC,EACnC,YAAasE,EACb,UAAAM,EACA,YAAa,eAAehI,CAAG,GAAA,EALjC,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAMA,CAAA,EAfQA,EAAV,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAgBA,CAEJ,CAAC,CAAA,EA5BH,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IA6BA,CAAA,CAAA,EArCF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAsCA,CAEJ,CAGA,SAASkI,GAAkB,CAAE,MAAAzC,EAAO,SAAA3D,EAAU,YAAA6F,EAAa,UAAAK,EAAW,YAAAG,GAMnE,CACD,KAAM,CAAC/F,EAAMC,CAAO,EAAIC,EAAAA,SAAS,EAAK,EAChC,CAACC,EAAQC,CAAS,EAAIF,EAAAA,SAAS,EAAE,EACjCK,EAAeD,EAAAA,OAAuB,IAAI,EAEhDE,EAAAA,UAAU,IAAM,CACd,GAAI,CAACR,EAAM,OACX,SAASS,EAAY3B,EAAe,CAC9ByB,EAAa,SAAW,CAACA,EAAa,QAAQ,SAASzB,EAAE,MAAc,GAAGmB,EAAQ,EAAK,CAC7F,CACA,gBAAS,iBAAiB,YAAaQ,CAAW,EAC3C,IAAM,SAAS,oBAAoB,YAAaA,CAAW,CACpE,EAAG,CAACT,CAAI,CAAC,EAET,MAAMY,EAAW2E,EAAY,OAAQpI,GACnCA,EAAE,MAAM,YAAA,EAAc,SAASgD,EAAO,YAAA,CAAa,GACnDhD,EAAE,MAAM,YAAA,EAAc,SAASgD,EAAO,aAAa,CAAA,EAGrD,GAAIyF,IAAc,SAChB,OACEhH,EAAAA,OAAC,WAAA,CACC,MAAAyE,EACA,SAAWvE,GAAM,CACf,GAAI,CAAEY,EAAS,KAAK,MAAMZ,EAAE,OAAO,KAAK,CAAC,CAAG,MACtC,CAAEY,EAASZ,EAAE,OAAO,KAAK,CAAG,CACpC,EACA,KAAM,EACN,UAAW,GAAGL,CAAO,WACrB,YAAa,gCAAA,EARf,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EAaJ,GAAImH,IAAc,QAAS,CAEzB,MAAMI,GAAmB,IAAM,CAC7B,GAAI,CACF,MAAMjI,EAAS,KAAK,MAAMsF,CAAK,EAC/B,GAAI,MAAM,QAAQtF,CAAM,EAAG,OAAOA,EAAO,IAAI,MAAM,CACrD,MAAQ,CAAqB,CAC7B,OAAOsF,EAAQA,EAAM,MAAM,GAAG,EAAE,IAAKlG,GAAcA,EAAE,MAAM,EAAE,OAAO,OAAO,EAAI,CAAA,CACjF,GAAA,EAEA,gBACG,MAAA,CACC,SAAA,CAAAyB,EAAAA,OAAC,MAAA,CAAI,UAAU,2CACZ,SAAAoH,EAAM,IAAI,CAACC,EAAMxC,IAChB7E,EAAAA,OAAC,OAAA,CAAa,UAAU,yGACrB,SAAA,CAAAqH,EACDrH,EAAAA,OAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAM,CAAE,MAAM0E,EAAO0C,EAAM,OAAO,CAAC9H,EAAGgI,IAAMA,IAAMzC,CAAC,EAAG/D,EAAS,KAAK,UAAU4D,CAAI,CAAC,CAAG,EAC/F,UAAU,0CACX,SAAA,GAAA,EAJD,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAMA,CAAA,EARSG,EAAX,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IASA,CACD,GAZH,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAaA,EACA7E,EAAAA,OAAC,QAAA,CACC,KAAK,OACL,UAAU,iCACV,YAAY,+BACZ,UAAYE,GAAM,CAChB,GAAIA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,IAAK,CACtCA,EAAE,eAAA,EACF,MAAMkC,EAAKlC,EAAE,OAA4B,MAAM,KAAA,EAC3CkC,IACFtB,EAAS,KAAK,UAAU,CAAC,GAAGsG,EAAOhF,CAAC,CAAC,CAAC,EACrClC,EAAE,OAA4B,MAAQ,GAE3C,CACF,CAAA,EAbF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,CAcA,CAAA,EA7BF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IA8BA,CAEJ,CAEA,OACEF,EAAAA,OAAC,MAAA,CAAI,IAAK2B,EAAc,UAAU,WAChC,SAAA,CAAA3B,EAAAA,OAAC,QAAA,CACC,KAAK,OACL,MAAAyE,EACA,QAAS,IAAM,CAAEpD,EAAQ,EAAI,EAAGG,EAAU,EAAE,CAAG,EAC/C,SAAWtB,GAAM,CAAEY,EAASZ,EAAE,OAAO,KAAK,EAAGsB,EAAUtB,EAAE,OAAO,KAAK,EAAQkB,GAAMC,EAAQ,EAAI,CAAG,EAClG,UAAU,iCACV,YAAA8F,CAAA,EANF,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EAQC/F,GAAQY,EAAS,OAAS,GACzBhC,EAAAA,OAAC,MAAA,CAAI,UAAU,0HACZ,SAAAgC,EAAS,IAAKzD,GACbyB,EAAAA,OAAC,SAAA,CAEC,KAAK,SACL,QAAS,IAAM,CAAEc,EAASvC,EAAE,KAAK,EAAG8C,EAAQ,EAAK,CAAG,EACpD,UAAW,iGAAiGoD,IAAUlG,EAAE,MAAQ,cAAgB,EAAE,GAElJ,SAAA,CAAAyB,SAAC,OAAA,CAAK,UAAU,6CAA8C,SAAAzB,EAAE,KAAA,EAAhE,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAsE,EACtEyB,SAAC,OAAA,CAAK,UAAU,4CAA6C,WAAE,KAAA,EAA/D,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAqE,CAAA,CAAA,EANhEzB,EAAE,MADT,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CASD,CAAA,EAXH,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAYA,CAAA,CAAA,EAtBJ,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAwBA,CAEJ,CAIA,SAAS8G,GAAc,CAAE,MAAAZ,EAAO,SAAA3D,EAAU,OAAAyG,GAIvC,CACD,KAAM,CAACnG,EAAMC,CAAO,EAAIC,EAAAA,SAAS,EAAK,EAChC,CAACC,EAAQC,CAAS,EAAIF,EAAAA,SAAS,EAAE,EACjCG,EAAWC,EAAAA,OAAyB,IAAI,EACxCC,EAAeD,EAAAA,OAAuB,IAAI,EAGhDE,EAAAA,UAAU,IAAM,CACd,SAASC,EAAY3B,EAAe,CAC9ByB,EAAa,SAAW,CAACA,EAAa,QAAQ,SAASzB,EAAE,MAAc,GACzEmB,EAAQ,EAAK,CAEjB,CACA,OAAID,GAAM,SAAS,iBAAiB,YAAaS,CAAW,EACrD,IAAM,SAAS,oBAAoB,YAAaA,CAAW,CACpE,EAAG,CAACT,CAAI,CAAC,EAET,MAAMW,EAAaX,EAAOG,EAASkD,EAC7BzC,EAAWuF,EAAO,OAAQrF,GAC9BA,EAAE,MAAM,cAAc,UAAUd,EAAOG,EAAS,IAAI,YAAA,CAAa,IAChEW,EAAE,aAAe,IAAI,YAAA,EAAc,UAAUd,EAAOG,EAAS,IAAI,YAAA,CAAa,CAAA,EAGjF,OACEvB,EAAAA,OAAC,MAAA,CAAI,IAAK2B,EAAc,UAAU,WAChC,SAAA,CAAA3B,EAAAA,OAAC,QAAA,CACC,IAAKyB,EACL,KAAK,OACL,MAAOM,EACP,QAAS,IAAM,CAAEV,EAAQ,EAAI,EAAGG,EAAUiD,CAAK,CAAG,EAClD,SAAWvE,GAAM,CACf,MAAMkC,EAAIlC,EAAE,OAAO,MACnBsB,EAAUY,CAAC,EACXtB,EAASsB,CAAC,EACLhB,GAAMC,EAAQ,EAAI,CACzB,EACA,YAAY,2BACZ,UAAW,GAAGzB,CAAQ,YAAA,EAZxB,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EAeCwB,GAAQY,EAAS,OAAS,GACzBhC,EAAAA,OAAC,MAAA,CAAI,UAAU,0HACZ,SAAAgC,EAAS,IAAKE,GAAM,CACnB,MAAMsF,EAAS1D,GAAgB5B,EAAE,QAAQ,GAAK,uCAC9C,OACElC,EAAAA,OAAC,SAAA,CAEC,KAAK,SACL,QAAS,IAAM,CACbc,EAASoB,EAAE,KAAK,EAChBV,EAAUU,EAAE,KAAK,EACjBb,EAAQ,EAAK,CACf,EACA,UAAW,+FACToD,IAAUvC,EAAE,MAAQ,cAAgB,EACtC,GAEA,SAAA,CAAAlC,SAAC,OAAA,CAAK,UAAU,mDAAoD,SAAAkC,EAAE,KAAA,EAAtE,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA4E,WAC3E,OAAA,CAAK,UAAW,kFAAkFsF,CAAM,GAAK,WAAE,UAAhH,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyH,EACxHtF,EAAE,aACDlC,SAAC,QAAK,UAAU,4CAA6C,WAAE,aAA/D,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA2E,CAAA,CAAA,EAdxEkC,EAAE,MADT,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAmBJ,CAAC,CAAA,EAvBH,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAwBA,CAAA,CAAA,EAzCJ,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IA2CA,CAEJ,CCnhBA,MAAMuF,GAAe,CACnB,cACA,eACA,YACA,cACA,YACA,aACF,EAEA,SAASC,EAAaC,EAAsB,CAW1C,MAVkC,CAChC,YAAa,eACb,cAAe,cACf,eAAgB,eAChB,YAAa,SACb,cAAe,gBACf,YAAa,iBACb,cAAe,oBACf,YAAa,eAAA,EAENA,CAAI,GAAKA,CACpB,CAOO,SAASC,GAAa,CAAE,KAAAlJ,EAAM,IAAAqB,GAAc,CACjD,KAAM,CAACqE,EAAUC,CAAW,EAAI/C,EAAAA,SAAS,CAAC,EAEpCuG,EAAc,CAACtD,EAAeC,EAAgCC,IAAe,CACjF,MAAMC,EAAO,CAAC,GAAGhG,EAAK,SAAS,EAC/BgG,EAAKH,CAAK,EAAI,CAAE,GAAGG,EAAKH,CAAK,EAAG,CAACC,CAAK,EAAGC,CAAA,EACzC1E,EAAI,YAAa2E,CAAI,CACvB,EAEMoD,EAAW,IAAM,CACrB/H,EAAI,YAAa,CAAC,GAAGrB,EAAK,UAAW,CAAE,GAAGV,EAAA,CAAgB,CAAC,EAC3DqG,EAAY3F,EAAK,UAAU,MAAM,CACnC,EAEMqJ,EAAexD,GAAkB,CACrCxE,EAAI,YAAarB,EAAK,UAAU,OAAO,CAACY,EAAQuF,IAAcA,IAAMN,CAAK,CAAC,EACtEH,GAAY1F,EAAK,UAAU,OAAS,GAAG2F,EAAY,KAAK,IAAI,EAAG3F,EAAK,UAAU,OAAS,CAAC,CAAC,CAC/F,EAEMsJ,EAAStJ,EAAK,UACduJ,EAAQD,EAAO5D,CAAQ,EAE7B,OAAI4D,EAAO,SAAW,WAEjB,MAAA,CACC,SAAA,CAAAhI,EAAAA,OAAC,MAAA,CAAI,UAAU,8EACb,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,yDAAyD,SAAA,0DAAA,EAAtE,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,EACAA,SAAC,SAAA,CAAO,QAAS,IAAM,CAAE,OAAO,SAAS,KAAO,0BAA4B,EAAG,UAAU,yEAAyE,MAAM,iBAAiB,kBAACC,EAAA,CAAS,UAAU,UAAU,YAAa,GAAA,EAA3C,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,GAAA,EAAA,IAAgD,CAAA,EAAzO,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA2O,CAAA,CAAA,EAJ7O,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAKA,EACAD,EAAAA,OAAC,MAAA,CAAI,UAAU,8DACb,SAAA,CAAAA,SAACkI,EAAA,CAAM,UAAU,uCAAuC,YAAa,CAAA,EAArE,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAwE,EACxElI,SAAC,IAAA,CAAE,UAAU,kCAAkC,SAAA,cAAA,EAA/C,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA2D,EAC3DA,SAAC,IAAA,CAAE,UAAU,iDAAiD,SAAA,6DAAA,EAA9D,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,EACAA,EAAAA,OAAC,SAAA,CAAO,QAAS8H,EAAU,UAAU,wFACnC,SAAA,CAAA9H,EAAAA,OAACmF,EAAA,CAAK,UAAU,aAAA,EAAhB,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA8B,EAAE,eAAA,CAAA,EADlC,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EARF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IASA,CAAA,CAAA,EAhBF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAiBA,WAKD,MAAA,CACC,SAAA,CAAAnF,EAAAA,OAAC,MAAA,CAAI,UAAU,8EACb,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,yDAAyD,SAAA,oHAAA,EAAtE,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EACAA,SAAC,SAAA,CAAO,QAAS,IAAM,CAAE,OAAO,SAAS,KAAO,0BAA4B,EAAG,UAAU,yEAAyE,MAAM,iBAAiB,kBAACC,EAAA,CAAS,UAAU,UAAU,YAAa,GAAA,EAA3C,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,GAAA,EAAA,IAAgD,CAAA,EAAzO,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA2O,CAAA,CAAA,EAJ7O,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAKA,EAEAD,EAAAA,OAAC,MAAA,CAAI,UAAU,aAEb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,4BACZ,SAAA,CAAAgI,EAAO,IAAI,CAACzJ,EAAGsG,IACd7E,EAAAA,OAAC,MAAA,CAAY,UAAW,8DACtBoE,IAAaS,EAAI,2BAA6B,mEAChD,GACE,SAAA,CAAA7E,SAAC,UAAO,QAAS,IAAMqE,EAAYQ,CAAC,EAAG,UAAU,qCAC/C,SAAA,CAAA7E,EAAAA,OAAC,OAAA,CAAK,UAAU,8BAA+B,SAAAzB,EAAE,MAAQ,gBAAzD,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAwE,EACxEyB,EAAAA,OAAC,OAAA,CAAK,UAAU,kCAAoC,SAAA,EAAAzB,EAAE,gBAAkB,WAAaA,EAAE,YAAcA,EAAE,gBAAkB,YAAY,MAAImJ,EAAanJ,EAAE,IAAI,CAAA,CAAA,EAA5J,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA8J,CAAA,CAAA,EAFhK,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAGA,EACAyB,EAAAA,OAAC,SAAA,CAAO,QAAUE,GAAM,CAAEA,EAAE,gBAAA,EAAuB,QAAQ,oBAAoB3B,EAAE,MAAQ,KAAK;AAAA;AAAA,iCAAwC,KAAesG,CAAC,CAAG,EAAG,UAAU,2GAA2G,MAAM,SACrR,SAAA7E,SAACoF,EAAA,CAAO,UAAU,SAAA,EAAlB,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA4B,CAAA,EAD9B,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EATQP,EAAV,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAUA,CACD,EACD7E,EAAAA,OAAC,SAAA,CAAO,QAAS8H,EAAU,UAAU,+GACnC,SAAA,CAAA9H,EAAAA,OAACmF,EAAA,CAAK,UAAU,SAAA,EAAhB,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA0B,EAAE,MAAA,CAAA,EAD9B,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAhBF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAiBA,EAGC8C,GACCjI,EAAAA,OAAC,MAAA,CAAI,UAAU,4BAGb,SAAA,CAAAA,SAAC,MAAA,CACC,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAWP,EAAY,SAAA,WAAA,EAA9B,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAuC,EACvCO,EAAAA,OAAC,SAAM,KAAK,OAAO,MAAOiI,EAAM,KAAM,SAAW/H,GAAM2H,EAAYzD,EAAU,OAAQlE,EAAE,OAAO,KAAK,EAAG,YAAY,YAAY,UAAW,GAAGN,CAAQ,cAApJ,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAkK,EACjKqI,EAAM,MAAQjI,EAAAA,OAAC,IAAA,CAAE,UAAU,kCAAmC,SAAA0H,EAAaO,EAAM,IAAI,CAAA,EAAvE,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyE,WACvF,MAAA,CAAI,UAAU,kCACZ,SAAAR,GAAa,IAAK5D,GACjB7D,EAAAA,OAAC,SAAA,CAAe,KAAK,SAAS,QAAS,IAAM6H,EAAYzD,EAAU,OAAQP,CAAC,EAC1E,UAAW,6DAA6DoE,EAAM,OAASpE,EAAI,0BAA4B,kCAAkC,GACzJ,WAAaA,CAAC,CAAA,EAFHA,EAAb,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAGD,CAAA,EALH,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAMA,CAAA,CAAA,EAVF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAWA,WAGC,MAAA,CACC,SAAA,CAAA7D,SAAC,QAAA,CAAM,UAAWP,EAAY,SAAA,mBAAA,EAA9B,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA+C,EAC/CO,EAAAA,OAACwC,GAAA,CACC,aAAcyF,EAAM,cACpB,qBAAuB7F,GAAMyF,EAAYzD,EAAU,gBAAiBhC,CAAC,EACrE,aAAc6F,EAAM,cACpB,qBAAuB7F,GAAMyF,EAAYzD,EAAU,gBAAiBhC,CAAC,EACrE,WAAY6F,EAAM,YAClB,mBAAqB7F,GAAMyF,EAAYzD,EAAU,cAAehC,CAAC,EACjE,SAAU6F,EAAM,UAChB,SAAUA,EAAM,UAChB,mBAAoB,CAAC3C,EAAKC,IAAO,CAAEsC,EAAYzD,EAAU,YAAakB,CAAG,EAAGuC,EAAYzD,EAAU,YAAamB,CAAE,CAAG,EACpH,eAAgB,CAAC,UAAW,WAAY,YAAY,CAAA,EAVtD,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAYA,CAAA,EAdF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAeA,WAGC,MAAA,CACC,SAAA,CAAAvF,SAAC,QAAA,CAAM,UAAWP,EAAY,SAAA,aAAA,EAA9B,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyC,EACzCO,EAAAA,OAAC4F,GAAA,CAAc,SAAUqC,EAAM,WAAY,SAAW7F,GAAMyF,EAAYzD,EAAU,aAAchC,CAAC,CAAA,EAAjG,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAoG,EACpGpC,SAAC,IAAA,CAAE,UAAWL,EAAS,SAAA,8BAAA,EAAvB,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmD,CAAA,CAAA,EAHrD,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAIA,WAGC,MAAA,CACC,SAAA,CAAAK,SAAC,QAAA,CAAM,UAAWP,EAAY,SAAA,gBAAA,EAA9B,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA4C,EAC5CO,EAAAA,OAAC,YAAS,MAAOiI,EAAM,SAAU,SAAW/H,GAAM2H,EAAYzD,EAAU,WAAYlE,EAAE,OAAO,KAAK,EAAG,KAAM,GAAI,UAAWL,EAAS,YAAa;AAAA;AAAA,IAAhJ,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAwL,EACxLG,SAAC,IAAA,CAAE,UAAWL,EAAS,SAAA,2DAAA,EAAvB,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAgF,CAAA,CAAA,EAHlF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAIA,CAAA,CAAA,EA9CF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IA+CA,CAAA,CAAA,EAtEJ,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAwEA,CAAA,CAAA,EAhFF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAiFA,CAEJ,CC1JA,SAASwI,EAAQ,CAAE,KAAMC,EAAM,MAAAC,EAAO,MAAAC,EAAO,SAAAC,GAAkG,CAC7I,OACEvI,EAAAA,OAAC,MAAA,CAAI,UAAU,QACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,wEACb,SAAA,CAAAA,EAAAA,OAACoI,GAAK,UAAW,eAAeC,CAAK,GAAI,YAAa,KAAtD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA2D,EAC3DrI,SAAC,KAAA,CAAG,UAAU,iEAAkE,SAAAsI,CAAA,EAAhF,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAsF,CAAA,CAAA,EAFxF,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,EACAtI,EAAAA,OAAC,MAAA,CAAI,UAAU,SAAU,SAAAuI,CAAA,EAAzB,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAkC,CAAA,CAAA,EALpC,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAMA,CAEJ,CAEA,SAASC,EAAM,CAAE,MAAAC,EAAO,SAAAF,GAA0D,CAChF,OACEvI,EAAAA,OAAC,MAAA,CAAI,UAAU,oBACb,SAAA,CAAAA,SAAC,OAAA,CAAK,UAAU,iDAAkD,SAAAyI,CAAA,EAAlE,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAwE,EACxEzI,EAAAA,OAAC,OAAA,CAAK,UAAU,4BAA6B,SAAAuI,CAAA,EAA7C,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAsD,CAAA,CAAA,EAFxD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,CAEJ,CAEO,SAASG,GAAW,CAAE,KAAAhK,GAAe,CAC1C,gBACG,MAAA,CACC,SAAA,CAAAsB,SAACmI,GAAQ,KAAMQ,EAAK,MAAM,cAAc,MAAM,WAC5C,SAAA,CAAA3I,EAAAA,OAACwI,EAAA,CAAM,MAAM,OAAQ,SAAA9J,EAAK,MAAQ,KAAlC,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAsC,EACrCA,EAAK,aAAesB,SAACwI,GAAM,MAAM,cAAe,WAAK,aAAjC,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA6C,CAAA,CAAA,EAFpE,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,GAEE9J,EAAK,OAASA,EAAK,QACnBsB,EAAAA,OAACmI,EAAA,CAAQ,KAAMS,GAAS,MAAM,cAAc,MAAM,aAC/C,SAAA,CAAAlK,EAAK,OAASsB,SAACwI,EAAA,CAAM,MAAM,QAAS,WAAK,OAA3B,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAiC,EAC/C9J,EAAK,OAASsB,SAACwI,GAAM,MAAM,QAAS,WAAK,OAA3B,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAiC,CAAA,CAAA,EAFlD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,EAGFxI,SAACmI,EAAA,CAAQ,KAAM1H,EAAO,MAAM,cAAc,MAAM,YAC9C,SAAAT,EAAAA,OAACwI,EAAA,CAAM,MAAM,SAAU,SAAA9J,EAAK,kBAAoB,MAAA,EAAhD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAuD,CAAA,EADzD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EAGAsB,EAAAA,OAAC,MAAA,CAAI,UAAU,4BACb,SAAA,CAAAA,EAAAA,OAACmI,GAAQ,KAAMjD,EAAO,MAAM,cAAc,MAAO,kBAAkBxG,EAAK,cAAc,MAAM,IACzF,SAAAA,EAAK,cAAc,SAAW,WAC5B,OAAA,CAAK,UAAU,mCAAmC,SAAA,iBAAA,EAAnD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkE,EAElEsB,EAAAA,OAAC,MAAA,CAAI,UAAU,oCACZ,SAAAtB,EAAK,cAAc,IAAI,CAACqG,EAAKF,IAC5B7E,EAAAA,OAAC,MAAA,CAAY,UAAU,2BACrB,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,iBAAiB,SAAAA,EAAAA,OAAC6I,IAAe,MAAO9D,EAAI,OAAS,OAAA,EAApC,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA6C,CAAA,EAA7E,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA+E,EAC/E/E,EAAAA,OAAC,MAAA,CAAI,UAAU,qCAAqC,SAAA,CAAAA,SAAC,OAAA,CAAK,UAAU,mCAAmC,SAAA,GAAA,EAAnD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAoD,EAAQ+E,EAAI,cAAgB/E,EAAAA,OAAC8I,EAAA,CAAa,KAAM/D,EAAI,aAAA,EAAxB,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,GAAA,EAAA,IAAuC,EAAK/E,SAAC,OAAA,CAAK,UAAU,mCAAoC,WAAI,eAAxD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,GAAA,EAAA,IAAsE,CAAA,CAAA,EAAtP,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA8P,CAAA,CAAA,EAFtP6E,EAAV,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAGA,CACD,GANH,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAOA,CAAA,EAXJ,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAaA,EAEA7E,EAAAA,OAACmI,GAAQ,KAAMD,EAAO,MAAM,cAAc,MAAO,cAAcxJ,EAAK,UAAU,MAAM,IACjF,SAAAA,EAAK,UAAU,SAAW,WACxB,OAAA,CAAK,UAAU,mCAAmC,SAAA,iBAAA,EAAnD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkE,EAElEsB,EAAAA,OAAC,MAAA,CAAI,UAAU,oCACZ,SAAAtB,EAAK,UAAU,IAAI,CAACH,EAAGsG,IACtB7E,EAAAA,OAAC,MAAA,CAAY,UAAU,2BACrB,SAAA,CAAAA,EAAAA,OAAC,OAAI,UAAU,iBAAiB,kBAAC+I,GAAA,CAAU,KAAMxK,EAAE,IAAA,EAAnB,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAyB,CAAA,EAAzD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA2D,EAC3DyB,EAAAA,OAAC,MAAA,CAAI,UAAU,qCAAqC,SAAA,CAAAA,SAAC,OAAA,CAAK,UAAU,mCAAmC,SAAA,GAAA,EAAnD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAoD,EAAQzB,EAAE,cAAgByB,EAAAA,OAAC8I,EAAA,CAAa,KAAMvK,EAAE,aAAA,EAAtB,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,GAAA,EAAA,IAAqC,EAAKyB,SAAC,OAAA,CAAK,UAAU,mCAAmC,SAAA,eAAnD,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,GAAA,EAAA,IAA8D,CAAA,CAAA,EAA1O,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkP,CAAA,CAAA,EAF1O6E,EAAV,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAGA,CACD,GANH,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAOA,CAAA,EAXJ,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAaA,CAAA,CAAA,EA7BF,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IA8BA,EAEA7E,EAAAA,OAAC,OAAI,UAAU,qDACb,kBAAC,IAAA,CAAE,UAAU,iDAAiD,SAAA,uGAAA,EAA9D,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,CAAA,EAHF,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAIA,CAAA,CAAA,EAtDF,OAAA,GAAA,CAAA,SAAA,wDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAuDA,CAEJ,CCnEA,MAAMgJ,GAAW,CACf,CAAE,GAAI,EAAG,MAAO,WAAY,KAAML,CAAA,EAClC,CAAE,GAAI,EAAG,MAAO,aAAc,KAAMC,EAAA,EACpC,CAAE,GAAI,EAAG,MAAO,YAAa,KAAMnI,CAAA,EACnC,CAAE,GAAI,EAAG,MAAO,gBAAiB,KAAMyE,CAAA,EACvC,CAAE,GAAI,EAAG,MAAO,YAAa,KAAMgD,CAAA,EACnC,CAAE,GAAI,EAAG,MAAO,SAAU,KAAMe,EAAA,CAClC,EAEO,SAASC,IAAkB,OAChC,KAAM,CAAE,GAAAC,CAAA,EAAOC,GAAA,EACTC,EAAQ,CAACF,EACTG,EAAWC,GAAA,EACX,CAAE,KAAMC,CAAA,EAAaC,GAAA,EAErBC,EADY,CAAC,GAACpL,EAAAkL,GAAA,YAAAA,EAAU,KAAV,MAAAlL,EAAc,SACT,QAAU,aAC7B,CAAE,KAAMqL,EAAU,UAAAC,CAAA,EAAcC,GAASR,EAAQ,KAAOF,CAAG,EAC3D,CAAE,KAAMW,CAAA,EAAaC,GAAsBV,EAAQ,KAAOF,CAAG,EAE7Da,EAAcC,GAAA,EACdC,EAAcC,GAAA,EACdC,EAAYC,GAAA,EACZ/F,EAAYgG,GAAA,EACZC,EAAYC,GAAA,EAEZ,CAAC9L,EAAM+L,CAAO,EAAInJ,EAAAA,SAAyBxD,CAAU,EACrD,CAAC4M,EAAaC,CAAc,EAAIrJ,EAAAA,SAAS,EAAK,EAC9C,CAACsJ,EAAWC,CAAY,EAAIvJ,EAAAA,SAAS,EAAE,EAEvC,CAACwJ,EAAcC,CAAe,EAAIC,GAAA,EAClCC,EAAU,SAASH,EAAa,IAAI,MAAM,GAAK,IAAK,EAAE,EACtDI,EAAaC,cAAa5M,GAAc,CAC5CwM,EAAiBK,GAAS,CACxB,MAAM1G,EAAO,IAAI,gBAAgB0G,CAAI,EACrC,OAAA1G,EAAK,IAAI,OAAQ,OAAOnG,CAAC,CAAC,EACnBmG,CACT,EAAG,CAAE,QAAS,GAAM,CACtB,EAAG,CAACqG,CAAe,CAAC,EAEpBnJ,EAAAA,UAAU,IAAM,CACd,GAAI,CAAA8I,EACJ,IAAIrB,EAAO,CAAEoB,EAAQ3M,CAAU,EAAG6M,EAAe,EAAI,EAAG,MAAQ,CAC5DhB,GAAYG,IACdW,EAAQxM,GAAY0L,EAAUG,EAAS,eAAiB,CAAA,CAAE,CAAC,EAC3Da,EAAe,EAAI,GAEvB,EAAG,CAAChB,EAAUG,EAAUT,EAAOqB,CAAW,CAAC,EAE3C,MAAM3K,EAAM,CAACyE,EAA6BC,IACxCgG,EAASY,IAAO,CAAE,GAAGA,EAAG,CAAC7G,CAAK,EAAGC,GAAQ,EAErC6G,GAAa,SAAY,CAC7BT,EAAa,EAAE,EACf,GAAI,CACF,MAAMU,EAAU9M,GAAmBC,CAAI,EACvC,IAAI8M,EAAUrC,EAEVE,EAEFmC,GADgB,MAAMxB,EAAY,YAAYuB,CAAc,GAC1C,GAElB,MAAMrB,EAAY,YAAY,CAAE,GAAAf,EAAS,GAAGoC,EAAgB,EAG9D,MAAME,EAAc5M,GAA2BH,CAAI,EAC7CgN,IAAe5B,GAAA,YAAAA,EAAU,gBAAiB,CAAA,EAC1C6B,EAAc,IAAI,IAAID,GAAa,IAAKnN,GAAMA,EAAE,EAAE,CAAC,EAEzD,UAAWwG,KAAO0G,EAChB,GAAI1G,EAAI,IAAM4G,EAAY,IAAI5G,EAAI,EAAE,EAAG,CACrC,KAAM,CAAE,GAAI6G,EAAO,GAAGrM,GAASwF,EAC/B,MAAMT,EAAU,YAAY,CAAE,QAAAkH,EAAmB,MAAAI,EAAe,GAAGrM,EAAa,EAChFoM,EAAY,OAAOC,CAAM,CAC3B,KAAO,CACL,KAAM,CAAE,GAAIC,EAAU,GAAGtM,GAASwF,EAClC,MAAMqF,EAAU,YAAY,CAAE,QAAAoB,EAAmB,GAAGjM,EAAa,CACnE,CAGF,UAAWuM,KAAaH,EACtB,MAAMpB,EAAU,YAAY,CAAE,QAAAiB,EAAmB,MAAOM,EAAW,EAGrExC,EAAS,WAAWkC,CAAO,EAAE,CAC/B,OAASO,EAAU,CACjBlB,EAAakB,EAAI,OAAO,CAC1B,CACF,EAEA,GAAI,CAAC1C,GAASO,EACZ,OAAO5J,EAAAA,OAAC,MAAA,CAAI,UAAU,0BAA0B,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,oCAAA,EAAf,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAoD,EAAEA,EAAAA,OAAC,MAAA,CAAI,UAAU,gCAAA,EAAf,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,GAAA,EAAA,IAAgD,CAAA,CAAA,EAA/I,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAiJ,EAG1J,MAAMgM,EAAYhC,EAAY,WAAaE,EAAY,UAEvD,gBACG,MAAA,CACC,SAAA,CAAAlK,EAAAA,OAACiM,GAAA,CACC,MAAO5C,EAAQ,OAAOK,CAAI,GAAK,GAAGA,CAAI,MAAKC,GAAA,YAAAA,EAAU,KAAM,EAAE,GAC7D,SAAS,iBAAA,EAFX,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EAKA3J,EAAAA,OAAC,MAAA,CAAI,UAAU,cAEb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,6CACb,SAAA,CAAAA,SAAC,OAAI,UAAU,cACZ,SAAAgJ,GAAS,IAAKzK,GAAM,CACnB,MAAM6J,EAAO7J,EAAE,KACToF,EAASsH,IAAY1M,EAAE,GAC7B,OACEyB,EAAAA,OAAC,SAAA,CAEC,QAAS,IAAMkL,EAAW3M,EAAE,EAAE,EAC9B,UAAW,qFACToF,EACI,2BACA,mEACN,GAEA,SAAA,CAAA3D,SAACoI,EAAA,CAAK,UAAU,uBAAuB,YAAa,GAAA,EAApD,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyD,EACzDpI,SAAC,OAAA,CAAK,UAAU,sBAAuB,WAAE,KAAA,EAAzC,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA+C,CAAA,CAAA,EAT1CzB,EAAE,GADT,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAaJ,CAAC,CAAA,EAlBH,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAmBA,EAGAyB,EAAAA,OAAC,MAAA,CAAI,UAAU,qDACb,SAAA,CAAAA,EAAAA,OAAC,SAAA,CACC,QAASsL,GACT,SAAU,CAAC5M,EAAK,KAAK,QAAUsN,EAC/B,UAAU,iDAET,SAAAA,EAAY,YAAc3C,EAAQ,UAAUK,CAAI,GAAK,MAAA,EALxD,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAOA1J,EAAAA,OAAC,SAAA,CACC,QAAS,IAAMsJ,EAASD,EAAQ,UAAY,WAAWF,CAAE,EAAE,EAC3D,UAAU,2BACX,SAAA,QAAA,EAHD,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAKA,CAAA,EAbF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAcA,EAECyB,GAAa5K,EAAAA,OAAC,IAAA,CAAE,UAAU,iCAAkC,SAAA4K,CAAA,EAA/C,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyD,CAAA,CAAA,EAvCzE,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAwCA,EAGA5K,EAAAA,OAAC,MAAA,CAAI,UAAU,sBACZ,SAAA,CAAAiL,IAAY,GAAKjL,EAAAA,OAACF,GAAA,CAAa,KAAApB,EAAY,IAAAqB,CAAA,EAA1B,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAoC,EACrDkL,IAAY,GAAKjL,EAAAA,OAACG,GAAA,CAAe,KAAAzB,EAAY,IAAAqB,CAAA,EAA5B,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAsC,EACvDkL,IAAY,GAAKjL,EAAAA,OAACI,GAAA,CAAc,KAAA1B,EAAY,IAAAqB,CAAA,EAA3B,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAqC,EACtDkL,IAAY,GAAKjL,EAAAA,OAAC+D,GAAA,CAAkB,KAAArF,EAAY,IAAAqB,CAAA,EAA/B,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyC,EAC1DkL,IAAY,GAAKjL,EAAAA,OAAC4H,GAAA,CAAa,KAAAlJ,EAAY,IAAAqB,CAAA,EAA1B,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAoC,EACrDkL,IAAY,GAAKjL,SAAC0I,GAAA,CAAW,KAAAhK,CAAA,EAAZ,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAwB,CAAA,CAAA,EAN5C,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAOA,CAAA,CAAA,EApDF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAqDA,CAAA,CAAA,EA3DF,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IA4DA,CAEJ"}