@hotmeshio/long-tail 0.4.2 → 0.4.4

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 (252) hide show
  1. package/build/api/settings.js +4 -0
  2. package/build/lib/db/index.d.ts +1 -7
  3. package/build/lib/db/schemas/008_capability_reaction.sql +12 -0
  4. package/build/lib/db/schemas/009_file_topic_category.sql +10 -0
  5. package/build/lib/events/index.d.ts +9 -0
  6. package/build/lib/events/index.js +15 -0
  7. package/build/lib/events/nats.d.ts +15 -1
  8. package/build/lib/events/nats.js +44 -2
  9. package/build/lib/events/publish.d.ts +10 -0
  10. package/build/lib/events/publish.js +28 -0
  11. package/build/modules/config.d.ts +1 -7
  12. package/build/services/agent/subscription-sql.d.ts +3 -3
  13. package/build/services/agent/subscription-sql.js +7 -5
  14. package/build/services/agent/subscriptions.d.ts +3 -1
  15. package/build/services/agent/subscriptions.js +6 -0
  16. package/build/services/agent/trigger-registry.js +18 -0
  17. package/build/services/export/index.js +36 -2
  18. package/build/services/topics/system-topics.js +29 -0
  19. package/build/services/yaml-workflow/deployer.d.ts +1 -1
  20. package/build/services/yaml-workflow/deployer.js +2 -2
  21. package/build/services/yaml-workflow/invoke.d.ts +2 -0
  22. package/build/services/yaml-workflow/invoke.js +5 -1
  23. package/build/start/adapters.js +11 -9
  24. package/build/start/config.js +4 -0
  25. package/build/start/workers.js +12 -3
  26. package/build/system/index.js +16 -0
  27. package/build/system/mcp-servers/file-storage.js +18 -0
  28. package/build/system/workflows/capability-invoke/activities.d.ts +12 -0
  29. package/build/system/workflows/capability-invoke/activities.js +14 -0
  30. package/build/system/workflows/capability-invoke/index.d.ts +14 -0
  31. package/build/system/workflows/capability-invoke/index.js +74 -0
  32. package/build/tsconfig.tsbuildinfo +1 -1
  33. package/build/types/events.d.ts +13 -1
  34. package/build/types/startup.d.ts +7 -0
  35. package/dashboard/dist/assets/{AdminDashboard-C0_qN2h3.js → AdminDashboard-DISq0Tz8.js} +2 -2
  36. package/dashboard/dist/assets/{AdminDashboard-C0_qN2h3.js.map → AdminDashboard-DISq0Tz8.js.map} +1 -1
  37. package/dashboard/dist/assets/AgentConfigPage-DqaJpB3K.js +16 -0
  38. package/dashboard/dist/assets/AgentConfigPage-DqaJpB3K.js.map +1 -0
  39. package/dashboard/dist/assets/AgentDetailPage-BPzPk2GC.js +4 -0
  40. package/dashboard/dist/assets/AgentDetailPage-BPzPk2GC.js.map +1 -0
  41. package/dashboard/dist/assets/AgentsPage-CLcxJWjC.js +2 -0
  42. package/dashboard/dist/assets/AgentsPage-CLcxJWjC.js.map +1 -0
  43. package/dashboard/dist/assets/AvailableEscalationsPage-hOcjAAIj.js +2 -0
  44. package/dashboard/dist/assets/{AvailableEscalationsPage-DrarbHov.js.map → AvailableEscalationsPage-hOcjAAIj.js.map} +1 -1
  45. package/dashboard/dist/assets/{BotPicker-CvXQwE5Z.js → BotPicker-DuAZgHbJ.js} +2 -2
  46. package/dashboard/dist/assets/{BotPicker-CvXQwE5Z.js.map → BotPicker-DuAZgHbJ.js.map} +1 -1
  47. package/dashboard/dist/assets/CapabilitiesPage-PRel6TXd.js +2 -0
  48. package/dashboard/dist/assets/CapabilitiesPage-PRel6TXd.js.map +1 -0
  49. package/dashboard/dist/assets/{CollapsibleSection-D9F01Tny.js → CollapsibleSection-DnoUFQVf.js} +2 -2
  50. package/dashboard/dist/assets/{CollapsibleSection-D9F01Tny.js.map → CollapsibleSection-DnoUFQVf.js.map} +1 -1
  51. package/dashboard/dist/assets/CopyableId-D0SQ39nR.js +2 -0
  52. package/dashboard/dist/assets/CopyableId-D0SQ39nR.js.map +1 -0
  53. package/dashboard/dist/assets/{CredentialsPage-C-rjAIK3.js → CredentialsPage-CqedUU7b.js} +2 -2
  54. package/dashboard/dist/assets/{CredentialsPage-C-rjAIK3.js.map → CredentialsPage-CqedUU7b.js.map} +1 -1
  55. package/dashboard/dist/assets/{CronLabel-DnZF8_vw.js → CronLabel-CPEjE-mH.js} +2 -2
  56. package/dashboard/dist/assets/CronLabel-CPEjE-mH.js.map +1 -0
  57. package/dashboard/dist/assets/CustomDurationPicker-BIQWzbv0.js +2 -0
  58. package/dashboard/dist/assets/{CustomDurationPicker-BYDrcsYT.js.map → CustomDurationPicker-BIQWzbv0.js.map} +1 -1
  59. package/dashboard/dist/assets/{DropZone-BEW3jBzf.js → DropZone-e5EOL5gC.js} +2 -2
  60. package/dashboard/dist/assets/{DropZone-BEW3jBzf.js.map → DropZone-e5EOL5gC.js.map} +1 -1
  61. package/dashboard/dist/assets/ElapsedCell-CzVjr74Y.js +2 -0
  62. package/dashboard/dist/assets/{ElapsedCell-BkiVdGaJ.js.map → ElapsedCell-CzVjr74Y.js.map} +1 -1
  63. package/dashboard/dist/assets/{EscalationsOverview-Cg2SN0WK.js → EscalationsOverview-Bcrb44xJ.js} +2 -2
  64. package/dashboard/dist/assets/{EscalationsOverview-Cg2SN0WK.js.map → EscalationsOverview-Bcrb44xJ.js.map} +1 -1
  65. package/dashboard/dist/assets/EventTable-CGfJU7e1.js +2 -0
  66. package/dashboard/dist/assets/EventTable-CGfJU7e1.js.map +1 -0
  67. package/dashboard/dist/assets/{EventTopicPill-By-6sXDp.js → EventTopicPill-xJJnxvlP.js} +2 -2
  68. package/dashboard/dist/assets/{EventTopicPill-By-6sXDp.js.map → EventTopicPill-xJJnxvlP.js.map} +1 -1
  69. package/dashboard/dist/assets/{HomePage-74mCQ5nB.js → HomePage-BIzUcGW9.js} +2 -2
  70. package/dashboard/dist/assets/{HomePage-74mCQ5nB.js.map → HomePage-BIzUcGW9.js.map} +1 -1
  71. package/dashboard/dist/assets/{ListToolbar-DL1wEuvL.js → ListToolbar-DNAGFe14.js} +2 -2
  72. package/dashboard/dist/assets/{ListToolbar-DL1wEuvL.js.map → ListToolbar-DNAGFe14.js.map} +1 -1
  73. package/dashboard/dist/assets/{McpOverview-D34bLMuP.js → McpOverview-BpYk21es.js} +2 -2
  74. package/dashboard/dist/assets/{McpOverview-D34bLMuP.js.map → McpOverview-BpYk21es.js.map} +1 -1
  75. package/dashboard/dist/assets/{McpQueryDetailPage-gLGTGX6g.js → McpQueryDetailPage-DlrZiSuL.js} +2 -2
  76. package/dashboard/dist/assets/{McpQueryDetailPage-gLGTGX6g.js.map → McpQueryDetailPage-DlrZiSuL.js.map} +1 -1
  77. package/dashboard/dist/assets/{McpQueryPage-wPHJkhEp.js → McpQueryPage-COfPssO7.js} +2 -2
  78. package/dashboard/dist/assets/{McpQueryPage-wPHJkhEp.js.map → McpQueryPage-COfPssO7.js.map} +1 -1
  79. package/dashboard/dist/assets/McpRunDetailPage-Cra0nQSw.js +2 -0
  80. package/dashboard/dist/assets/McpRunDetailPage-Cra0nQSw.js.map +1 -0
  81. package/dashboard/dist/assets/{McpRunsPage-BUSxdydO.js → McpRunsPage-BlgcGN3k.js} +2 -2
  82. package/dashboard/dist/assets/{McpRunsPage-BUSxdydO.js.map → McpRunsPage-BlgcGN3k.js.map} +1 -1
  83. package/dashboard/dist/assets/{OperatorDashboard-CYCl2our.js → OperatorDashboard-BbO6cWzb.js} +2 -2
  84. package/dashboard/dist/assets/{OperatorDashboard-CYCl2our.js.map → OperatorDashboard-BbO6cWzb.js.map} +1 -1
  85. package/dashboard/dist/assets/{PageHeader-Bo0SpcCK.js → PageHeader-B_gV_jKk.js} +2 -2
  86. package/dashboard/dist/assets/{PageHeader-Bo0SpcCK.js.map → PageHeader-B_gV_jKk.js.map} +1 -1
  87. package/dashboard/dist/assets/{PageHeaderWithStats-7K5BdhOj.js → PageHeaderWithStats-D0I0nrnx.js} +2 -2
  88. package/dashboard/dist/assets/{PageHeaderWithStats-7K5BdhOj.js.map → PageHeaderWithStats-D0I0nrnx.js.map} +1 -1
  89. package/dashboard/dist/assets/ProcessDetailPage-s_iV8ICg.js +2 -0
  90. package/dashboard/dist/assets/{ProcessDetailPage-DzGacZpO.js.map → ProcessDetailPage-s_iV8ICg.js.map} +1 -1
  91. package/dashboard/dist/assets/{ProcessesListPage-Bmn33g_l.js → ProcessesListPage-MnLMnxAa.js} +2 -2
  92. package/dashboard/dist/assets/{ProcessesListPage-Bmn33g_l.js.map → ProcessesListPage-MnLMnxAa.js.map} +1 -1
  93. package/dashboard/dist/assets/{RolePill-BDzPFQUv.js → RolePill-BOBytzrP.js} +2 -2
  94. package/dashboard/dist/assets/{RolePill-BDzPFQUv.js.map → RolePill-BOBytzrP.js.map} +1 -1
  95. package/dashboard/dist/assets/{RolesPage-BTtaabkS.js → RolesPage-BH7KASM7.js} +2 -2
  96. package/dashboard/dist/assets/{RolesPage-BTtaabkS.js.map → RolesPage-BH7KASM7.js.map} +1 -1
  97. package/dashboard/dist/assets/{RunAsSelector-B1R8nJvE.js → RunAsSelector-_QbJKhlo.js} +2 -2
  98. package/dashboard/dist/assets/{RunAsSelector-B1R8nJvE.js.map → RunAsSelector-_QbJKhlo.js.map} +1 -1
  99. package/dashboard/dist/assets/{ServerName-CEOFF7UG.js → ServerName-uqa4eBqm.js} +2 -2
  100. package/dashboard/dist/assets/{ServerName-CEOFF7UG.js.map → ServerName-uqa4eBqm.js.map} +1 -1
  101. package/dashboard/dist/assets/SwimlaneTimeline-og79Llvs.js +2 -0
  102. package/dashboard/dist/assets/SwimlaneTimeline-og79Llvs.js.map +1 -0
  103. package/dashboard/dist/assets/{TagInput-VBY0xIwb.js → TagInput-D3f11sbM.js} +2 -2
  104. package/dashboard/dist/assets/{TagInput-VBY0xIwb.js.map → TagInput-D3f11sbM.js.map} +1 -1
  105. package/dashboard/dist/assets/{TaskDetailPage-CZw_F8y4.js → TaskDetailPage-DPV4ySd9.js} +2 -2
  106. package/dashboard/dist/assets/{TaskDetailPage-CZw_F8y4.js.map → TaskDetailPage-DPV4ySd9.js.map} +1 -1
  107. package/dashboard/dist/assets/{TaskQueuePill-DZykFijh.js → TaskQueuePill-Bc45J7X1.js} +2 -2
  108. package/dashboard/dist/assets/{TaskQueuePill-DZykFijh.js.map → TaskQueuePill-Bc45J7X1.js.map} +1 -1
  109. package/dashboard/dist/assets/{TasksListPage-D-vHndyV.js → TasksListPage-BYj3OqUi.js} +2 -2
  110. package/dashboard/dist/assets/{TasksListPage-D-vHndyV.js.map → TasksListPage-BYj3OqUi.js.map} +1 -1
  111. package/dashboard/dist/assets/TimeAgo-W7TdJpV-.js +2 -0
  112. package/dashboard/dist/assets/{TimeAgo-B6Gz4RAU.js.map → TimeAgo-W7TdJpV-.js.map} +1 -1
  113. package/dashboard/dist/assets/{TimestampCell-DZu9PtN2.js → TimestampCell-Bi2nc9Q_.js} +2 -2
  114. package/dashboard/dist/assets/{TimestampCell-DZu9PtN2.js.map → TimestampCell-Bi2nc9Q_.js.map} +1 -1
  115. package/dashboard/dist/assets/{ToolPill-RP2Tvlrx.js → ToolPill-CuoXcmhv.js} +2 -2
  116. package/dashboard/dist/assets/{ToolPill-RP2Tvlrx.js.map → ToolPill-CuoXcmhv.js.map} +1 -1
  117. package/dashboard/dist/assets/ToolTestPanel-Dl3C53zb.js +2 -0
  118. package/dashboard/dist/assets/ToolTestPanel-Dl3C53zb.js.map +1 -0
  119. package/dashboard/dist/assets/{TopicDetailPage-C5ZUZpU5.js → TopicDetailPage-CjaZn4WP.js} +2 -2
  120. package/dashboard/dist/assets/{TopicDetailPage-C5ZUZpU5.js.map → TopicDetailPage-CjaZn4WP.js.map} +1 -1
  121. package/dashboard/dist/assets/{TopicsPage-Cbc0nVj9.js → TopicsPage-BfsJEC1p.js} +2 -2
  122. package/dashboard/dist/assets/{TopicsPage-Cbc0nVj9.js.map → TopicsPage-BfsJEC1p.js.map} +1 -1
  123. package/dashboard/dist/assets/{UserName-YUoNrFAq.js → UserName-b4baWHM_.js} +2 -2
  124. package/dashboard/dist/assets/{UserName-YUoNrFAq.js.map → UserName-b4baWHM_.js.map} +1 -1
  125. package/dashboard/dist/assets/WorkflowExecutionPage-BGmJnXnk.js +2 -0
  126. package/dashboard/dist/assets/WorkflowExecutionPage-BGmJnXnk.js.map +1 -0
  127. package/dashboard/dist/assets/WorkflowPill-Bg2-0Hkg.js +2 -0
  128. package/dashboard/dist/assets/WorkflowPill-Bg2-0Hkg.js.map +1 -0
  129. package/dashboard/dist/assets/{WorkflowsDashboard-BFzCyvgv.js → WorkflowsDashboard-BzH7jMRu.js} +2 -2
  130. package/dashboard/dist/assets/{WorkflowsDashboard-BFzCyvgv.js.map → WorkflowsDashboard-BzH7jMRu.js.map} +1 -1
  131. package/dashboard/dist/assets/{WorkflowsOverview-C_y7JCg2.js → WorkflowsOverview-BcUgBvjD.js} +2 -2
  132. package/dashboard/dist/assets/{WorkflowsOverview-C_y7JCg2.js.map → WorkflowsOverview-BcUgBvjD.js.map} +1 -1
  133. package/dashboard/dist/assets/{YamlWorkflowsPage-CYQjp3JI.js → YamlWorkflowsPage-OhpCQJ0l.js} +2 -2
  134. package/dashboard/dist/assets/{YamlWorkflowsPage-CYQjp3JI.js.map → YamlWorkflowsPage-OhpCQJ0l.js.map} +1 -1
  135. package/dashboard/dist/assets/{agents-2pDPv2Ww.js → agents-Ce3HmPz4.js} +2 -2
  136. package/dashboard/dist/assets/{agents-2pDPv2Ww.js.map → agents-Ce3HmPz4.js.map} +1 -1
  137. package/dashboard/dist/assets/{bots-2uGZ2l7A.js → bots-B0BomNnf.js} +2 -2
  138. package/dashboard/dist/assets/{bots-2uGZ2l7A.js.map → bots-B0BomNnf.js.map} +1 -1
  139. package/dashboard/dist/assets/capabilities-t-w5N9K9.js +2 -0
  140. package/dashboard/dist/assets/capabilities-t-w5N9K9.js.map +1 -0
  141. package/dashboard/dist/assets/{controlplane-CQ29M7lK.js → controlplane-BrtAZnJM.js} +2 -2
  142. package/dashboard/dist/assets/{controlplane-CQ29M7lK.js.map → controlplane-BrtAZnJM.js.map} +1 -1
  143. package/dashboard/dist/assets/{escalation-DWOUjrgL.js → escalation-DilnDxw2.js} +2 -2
  144. package/dashboard/dist/assets/{escalation-DWOUjrgL.js.map → escalation-DilnDxw2.js.map} +1 -1
  145. package/dashboard/dist/assets/{escalation-columns-WrgLIl-W.js → escalation-columns-C0slywOY.js} +2 -2
  146. package/dashboard/dist/assets/{escalation-columns-WrgLIl-W.js.map → escalation-columns-C0slywOY.js.map} +1 -1
  147. package/dashboard/dist/assets/{helpers-LN5b1KBx.js → helpers-BMvPqQr8.js} +2 -2
  148. package/dashboard/dist/assets/{helpers-LN5b1KBx.js.map → helpers-BMvPqQr8.js.map} +1 -1
  149. package/dashboard/dist/assets/{index-ugekH3E2.js → index-30-pN97P.js} +2 -2
  150. package/dashboard/dist/assets/{index-ugekH3E2.js.map → index-30-pN97P.js.map} +1 -1
  151. package/dashboard/dist/assets/index-BPxglOYm.css +1 -0
  152. package/dashboard/dist/assets/{index-CFJc47B8.js → index-Bl9wzQ8Q.js} +2 -2
  153. package/dashboard/dist/assets/{index-CFJc47B8.js.map → index-Bl9wzQ8Q.js.map} +1 -1
  154. package/dashboard/dist/assets/{index-C_A76Dl1.js → index-BxOuF0hm.js} +2 -2
  155. package/dashboard/dist/assets/{index-C_A76Dl1.js.map → index-BxOuF0hm.js.map} +1 -1
  156. package/dashboard/dist/assets/{index-DqFfgd-7.js → index-Ck2QdJXT.js} +2 -2
  157. package/dashboard/dist/assets/{index-DqFfgd-7.js.map → index-Ck2QdJXT.js.map} +1 -1
  158. package/dashboard/dist/assets/{index-CvzfRxnj.js → index-DNmlrCAp.js} +2 -2
  159. package/dashboard/dist/assets/{index-CvzfRxnj.js.map → index-DNmlrCAp.js.map} +1 -1
  160. package/dashboard/dist/assets/index-DPW_i3fH.js +6 -0
  161. package/dashboard/dist/assets/index-DPW_i3fH.js.map +1 -0
  162. package/dashboard/dist/assets/{index-CBS8FBcp.js → index-DZX-E_3q.js} +24 -24
  163. package/dashboard/dist/assets/index-DZX-E_3q.js.map +1 -0
  164. package/dashboard/dist/assets/{index-CovZsMow.js → index-D_wqdvG_.js} +2 -2
  165. package/dashboard/dist/assets/{index-CovZsMow.js.map → index-D_wqdvG_.js.map} +1 -1
  166. package/dashboard/dist/assets/{index-CdNXBj7w.js → index-DnsVYMMg.js} +2 -2
  167. package/dashboard/dist/assets/{index-CdNXBj7w.js.map → index-DnsVYMMg.js.map} +1 -1
  168. package/dashboard/dist/assets/{index-BMo7wCw8.js → index-H5TlloTk.js} +2 -2
  169. package/dashboard/dist/assets/{index-BMo7wCw8.js.map → index-H5TlloTk.js.map} +1 -1
  170. package/dashboard/dist/assets/{index-dzxsXeMO.js → index-f-0Duls3.js} +2 -2
  171. package/dashboard/dist/assets/{index-dzxsXeMO.js.map → index-f-0Duls3.js.map} +1 -1
  172. package/dashboard/dist/assets/index-pIMl0mYp.js +2 -0
  173. package/dashboard/dist/assets/{index-CryoNbg0.js.map → index-pIMl0mYp.js.map} +1 -1
  174. package/dashboard/dist/assets/{index-J0dMfAmE.js → index-qNuxC8kX.js} +2 -2
  175. package/dashboard/dist/assets/{index-J0dMfAmE.js.map → index-qNuxC8kX.js.map} +1 -1
  176. package/dashboard/dist/assets/{knowledge-BhZk3Wy9.js → knowledge-D01NdF5h.js} +2 -2
  177. package/dashboard/dist/assets/{knowledge-BhZk3Wy9.js.map → knowledge-D01NdF5h.js.map} +1 -1
  178. package/dashboard/dist/assets/{mcp-FOHNY7Zj.js → mcp-CjXjDZI0.js} +2 -2
  179. package/dashboard/dist/assets/{mcp-FOHNY7Zj.js.map → mcp-CjXjDZI0.js.map} +1 -1
  180. package/dashboard/dist/assets/{mcp-query-BoNH5uCn.js → mcp-query-LlKQcWLJ.js} +2 -2
  181. package/dashboard/dist/assets/{mcp-query-BoNH5uCn.js.map → mcp-query-LlKQcWLJ.js.map} +1 -1
  182. package/dashboard/dist/assets/{mcp-runs-BhkGaw2y.js → mcp-runs-C0C54hU6.js} +2 -2
  183. package/dashboard/dist/assets/{mcp-runs-BhkGaw2y.js.map → mcp-runs-C0C54hU6.js.map} +1 -1
  184. package/dashboard/dist/assets/{namespaces-duQCQRHq.js → namespaces-6qWDXXJV.js} +2 -2
  185. package/dashboard/dist/assets/{namespaces-duQCQRHq.js.map → namespaces-6qWDXXJV.js.map} +1 -1
  186. package/dashboard/dist/assets/{roles-DW6lI_g5.js → roles-Dtj0uabn.js} +2 -2
  187. package/dashboard/dist/assets/{roles-DW6lI_g5.js.map → roles-Dtj0uabn.js.map} +1 -1
  188. package/dashboard/dist/assets/{tasks-C-QX245z.js → tasks-BevFBjZq.js} +2 -2
  189. package/dashboard/dist/assets/{tasks-C-QX245z.js.map → tasks-BevFBjZq.js.map} +1 -1
  190. package/dashboard/dist/assets/{topics-CAnsyo3w.js → topics-BMG5tx2g.js} +2 -2
  191. package/dashboard/dist/assets/{topics-CAnsyo3w.js.map → topics-BMG5tx2g.js.map} +1 -1
  192. package/dashboard/dist/assets/useCollapsedSections-BU5HULGs.js +2 -0
  193. package/dashboard/dist/assets/useCollapsedSections-BU5HULGs.js.map +1 -0
  194. package/dashboard/dist/assets/useEventHooks-CPyvFlVR.js +2 -0
  195. package/dashboard/dist/assets/useEventHooks-CPyvFlVR.js.map +1 -0
  196. package/dashboard/dist/assets/{useYamlActivityEvents-BTHFGIsD.js → useYamlActivityEvents-Bll8NPNQ.js} +2 -2
  197. package/dashboard/dist/assets/{useYamlActivityEvents-BTHFGIsD.js.map → useYamlActivityEvents-Bll8NPNQ.js.map} +1 -1
  198. package/dashboard/dist/assets/{users--D3LoFOD.js → users-XZ349b0r.js} +2 -2
  199. package/dashboard/dist/assets/{users--D3LoFOD.js.map → users-XZ349b0r.js.map} +1 -1
  200. package/dashboard/dist/assets/{vendor-icons-BNtvBbnj.js → vendor-icons-B_Yla7iD.js} +2 -2
  201. package/dashboard/dist/assets/{vendor-icons-BNtvBbnj.js.map → vendor-icons-B_Yla7iD.js.map} +1 -1
  202. package/dashboard/dist/assets/{workflows-MpNdzreD.js → workflows-Do-Eiv8f.js} +2 -2
  203. package/dashboard/dist/assets/{workflows-MpNdzreD.js.map → workflows-Do-Eiv8f.js.map} +1 -1
  204. package/dashboard/dist/assets/{yaml-workflows-CFhnJzQy.js → yaml-workflows-DolGRQ5f.js} +2 -2
  205. package/dashboard/dist/assets/{yaml-workflows-CFhnJzQy.js.map → yaml-workflows-DolGRQ5f.js.map} +1 -1
  206. package/dashboard/dist/index.html +3 -3
  207. package/docs/agents.md +38 -10
  208. package/docs/api/http/agents.md +12 -10
  209. package/docs/api/http/settings.md +4 -0
  210. package/docs/api/sdk/agents.md +4 -2
  211. package/docs/api/sdk/settings.md +2 -1
  212. package/docs/dashboard.md +1 -1
  213. package/docs/events.md +7 -0
  214. package/docs/hitl-guide.md +560 -0
  215. package/package.json +2 -2
  216. package/dashboard/dist/assets/AgentConfigPage-DG1zOIiz.js +0 -13
  217. package/dashboard/dist/assets/AgentConfigPage-DG1zOIiz.js.map +0 -1
  218. package/dashboard/dist/assets/AgentDetailPage-B5kaAJDM.js +0 -4
  219. package/dashboard/dist/assets/AgentDetailPage-B5kaAJDM.js.map +0 -1
  220. package/dashboard/dist/assets/AgentsPage-DJWSuoJA.js +0 -2
  221. package/dashboard/dist/assets/AgentsPage-DJWSuoJA.js.map +0 -1
  222. package/dashboard/dist/assets/AvailableEscalationsPage-DrarbHov.js +0 -2
  223. package/dashboard/dist/assets/CapabilitiesPage-BiL9QUxI.js +0 -2
  224. package/dashboard/dist/assets/CapabilitiesPage-BiL9QUxI.js.map +0 -1
  225. package/dashboard/dist/assets/CopyableId-DmLF-RqZ.js +0 -2
  226. package/dashboard/dist/assets/CopyableId-DmLF-RqZ.js.map +0 -1
  227. package/dashboard/dist/assets/CronLabel-DnZF8_vw.js.map +0 -1
  228. package/dashboard/dist/assets/CustomDurationPicker-BYDrcsYT.js +0 -2
  229. package/dashboard/dist/assets/ElapsedCell-BkiVdGaJ.js +0 -2
  230. package/dashboard/dist/assets/EventTable-B9wYf13g.js +0 -2
  231. package/dashboard/dist/assets/EventTable-B9wYf13g.js.map +0 -1
  232. package/dashboard/dist/assets/McpRunDetailPage-SoXudCbq.js +0 -2
  233. package/dashboard/dist/assets/McpRunDetailPage-SoXudCbq.js.map +0 -1
  234. package/dashboard/dist/assets/ProcessDetailPage-DzGacZpO.js +0 -2
  235. package/dashboard/dist/assets/SwimlaneTimeline-CU2ZD9cC.js +0 -2
  236. package/dashboard/dist/assets/SwimlaneTimeline-CU2ZD9cC.js.map +0 -1
  237. package/dashboard/dist/assets/TimeAgo-B6Gz4RAU.js +0 -2
  238. package/dashboard/dist/assets/ToolTestPanel-D4cgYW2p.js +0 -2
  239. package/dashboard/dist/assets/ToolTestPanel-D4cgYW2p.js.map +0 -1
  240. package/dashboard/dist/assets/WorkflowExecutionPage-CVGztAdK.js +0 -2
  241. package/dashboard/dist/assets/WorkflowExecutionPage-CVGztAdK.js.map +0 -1
  242. package/dashboard/dist/assets/WorkflowPill-pPuGH8v9.js +0 -2
  243. package/dashboard/dist/assets/WorkflowPill-pPuGH8v9.js.map +0 -1
  244. package/dashboard/dist/assets/index-CBS8FBcp.js.map +0 -1
  245. package/dashboard/dist/assets/index-ChGBlYKj.css +0 -1
  246. package/dashboard/dist/assets/index-CryoNbg0.js +0 -2
  247. package/dashboard/dist/assets/index-DDxZOINn.js +0 -5
  248. package/dashboard/dist/assets/index-DDxZOINn.js.map +0 -1
  249. package/dashboard/dist/assets/settings-wTRbazzw.js +0 -2
  250. package/dashboard/dist/assets/settings-wTRbazzw.js.map +0 -1
  251. package/dashboard/dist/assets/useEventHooks-C689a4F7.js +0 -2
  252. package/dashboard/dist/assets/useEventHooks-C689a4F7.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import{a as i,j as e}from"./vendor-query-B2UbickB.js";import{P as Ne}from"./PageHeaderWithStats-D0I0nrnx.js";import{F as ve,b as Ce}from"./FilterBar-Ck4K4rzu.js";import{u as Se}from"./useFilterParams-DZCAaBC7.js";import{u as te,a as se,b as $e,c as _e,d as Te}from"./controlplane-BrtAZnJM.js";import{M as Ee}from"./Modal-DEODGeqx.js";import{H as Z,an as H,P as Re,ao as Y,ap as J,m as ne,I as Me,A as Pe,a4 as Ae,R as Le,S as We,aq as Qe,E as Fe,Z as Oe,ar as Ie}from"./vendor-icons-B_Yla7iD.js";import{C as z}from"./CollapsibleSection-DnoUFQVf.js";import{T as Be}from"./TaskQueuePill-Bc45J7X1.js";import{D as ze}from"./DataTable-D9yuBv0w.js";import{C as W,c as Je,J as De}from"./index-DZX-E_3q.js";import{R as He,a as X}from"./RowActions-Dg-Fsm5O.js";import{f as Ue}from"./vendor-react-CX88sFS5.js";import"./EmptyState-BcsfPq9T.js";const Ve=[{label:"15m",value:"15m"},{label:"30m",value:"30m"},{label:"1h",value:"1h"},{label:"1d",value:"1d"},{label:"7d",value:"7d"}],re={pong:"text-status-success",ping:"text-accent",throttle:"text-status-warning",job:"text-purple-400",work:"text-text-secondary",activate:"text-status-error",cron:"text-text-tertiary",user:"text-text-secondary"},qe={pong:"roll call",ping:"ping",throttle:"throttle",job:"job",work:"work",activate:"activate",cron:"cron",user:"user"},Ge=250;function A(t){return!!t.worker_topic}function L(t){return typeof t.throttle=="number"&&t.throttle!==0}function U(t){return t===void 0||t===0?"Normal":t===-1?"Paused":t>=864e5?`${(t/864e5).toFixed(0)}d`:t>=36e5?`${(t/36e5).toFixed(1)}h`:t>=6e4?`${(t/6e4).toFixed(1)}m`:t>=1e3?`${(t/1e3).toFixed(1)}s`:`${t}ms`}function Ke(t){if(!t)return null;const s=t.match(/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\.(\d+)$/);if(s){const[,r,n,a,d,l,g,c]=s;return new Date(`${r}-${n}-${a}T${d}:${l}:${g}.${c}Z`)}const o=new Date(t);return isNaN(o.getTime())?null:o}function Ze(t){const s=Ke(t);if(!s)return"--";const o=Date.now()-s.getTime();if(o<0||isNaN(o))return"--";const r=Math.floor(o/1e3);if(r<60)return`${r}s`;const n=Math.floor(r/60);if(n<60)return`${n}m`;const a=Math.floor(n/60);return a<24?`${a}h ${n%60}m`:`${Math.floor(a/24)}d ${a%24}h`}function ae(t){return t.replace(/^hmsh:[^:]+:x:/,"")||"(engine)"}function F(t){const s=t.match(/^([^:]+)::(.+?)-[A-Za-z0-9_]{10,}$/);return s?s[2]:t.length>20?t.slice(0,20)+"...":t}function Ye(t){const s=t.match(/^([^:]+)::/);return(s==null?void 0:s[1])||""}const oe=[{key:"pong",label:"Roll Call",description:"Node health check responses"},{key:"ping",label:"Ping",description:"Health check broadcasts"},{key:"throttle",label:"Throttle",description:"Throttle commands"},{key:"job",label:"Job",description:"Job lifecycle events"},{key:"work",label:"Work",description:"Worker dispatch events"},{key:"activate",label:"Activate",description:"Worker activation"},{key:"cron",label:"Cron",description:"Cron schedule triggers"},{key:"user",label:"User",description:"User-defined messages"}];function O(t){return`${t.engine_id}-${t.worker_topic||"engine"}`}function Xe(t){const s=new Map;for(const o of t){if(!o.worker_topic)continue;const r=o.worker_topic;s.has(r)||s.set(r,[]),s.get(r).push(o)}return s}function R(t){let s=0,o=0,r=0;for(const n of t)if(n.counts)for(const[a,d]of Object.entries(n.counts))s+=d,a==="200"?o+=d:a==="500"&&(r+=d);return{total:s,success:o,errors:r}}function et(t){let s=0;for(const o of t)typeof o.stream_depth=="number"&&(s+=o.stream_depth);return s}function tt(t){if(t.length===0)return"healthy";if(t.every(r=>r.throttle===-1))return"paused";const{errors:o}=R(t);return o>0||t.some(L)?"degraded":"healthy"}function st({activeAppId:t,allProfiles:s,profiles:o}){const r=te(),[n,a]=i.useState(new Set),[d,l]=i.useState(!1),[g,c]=i.useState([]);i.useEffect(()=>{a(new Set)},[t]);const w=i.useCallback(p=>{a(S=>{const b=new Set(S),$=O(p);return b.has($)?b.delete($):b.add($),b})},[]),f=i.useCallback(()=>{n.size===o.length?a(new Set):a(new Set(o.map(O)))},[o,n.size]),y=i.useMemo(()=>{const p=o.filter(N=>n.has(O(N)));if(p.length===0)return[];if(p.length===s.length)return[{label:"Entire Mesh"}];const S=p.filter(N=>!A(N)),b=p.filter(A),$=[];for(const N of S)$.push({label:`Engine ${N.engine_id}`,guid:N.engine_id,scope:"engines"});const M=new Map;for(const N of b){const T=N.worker_topic;M.has(T)||M.set(T,[]),M.get(T).push(N)}for(const[N,T]of M){const I=s.filter(P=>P.worker_topic===N);if(T.length===I.length)$.push({label:N,topic:N});else for(const P of T)$.push({label:`${N} ${P.engine_id}`,guid:P.engine_id})}return $},[o,s,n]);return{selectedIds:n,setSelectedIds:a,toggleCheckbox:w,toggleAll:f,throttleModalOpen:d,throttleTargets:g,selectedThrottleTargets:y,throttleMutation:r,handleBulkThrottle:p=>{const S=g.length>0?g:y;for(const b of S)r.mutate({appId:t,throttle:p,...b.topic?{topic:b.topic}:{},...b.guid?{guid:b.guid}:{},...b.scope?{scope:b.scope}:{}});l(!1),c([])},handleRowClick:(p,S)=>{const b=A(p)?`${p.worker_topic} ${p.engine_id}`:`Engine ${p.engine_id}`;c([{label:b,guid:p.engine_id,scope:S||(A(p)?"workers":"engines")}]),l(!0)},handleBulkThrottleOpen:()=>{c(y),l(!0)},handleResumeThrottle:(p,S)=>{const b=S||(A(p)?"workers":"engines");r.mutate({appId:t,throttle:0,guid:p.engine_id,scope:b})},handleResumeQueue:p=>{r.mutate({appId:t,throttle:0,topic:p})},handleQueueThrottle:p=>{c([{label:p,topic:p}]),l(!0)},closeThrottleModal:()=>{l(!1),c([])}}}const nt=[{label:"Resume",ms:0},{label:"0.5s",ms:500},{label:"1s",ms:1e3},{label:"5s",ms:5e3},{label:"30s",ms:3e4},{label:"Pause",ms:-1}];function rt({target:t}){const s=t.label==="Entire Mesh",o=t.label==="All Engines"||t.label.startsWith("Engine "),r=s?"bg-status-error/10 text-status-error":o?"bg-blue-500/10 text-blue-500":"bg-accent/[0.06] text-text-secondary",n=t.scope==="engines"?"engine only":t.scope==="workers"?"worker only":t.guid?"guid":t.topic?"topic":"mesh";return e.jsxs("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 text-[10px] font-medium rounded-lg ${r}`,children:[t.label,e.jsx("span",{className:"text-[8px] opacity-50",children:n})]})}function at({open:t,onClose:s,targets:o,onApply:r,isPending:n}){const[a,d]=i.useState("");return e.jsx(Ee,{open:t,onClose:s,title:"Adjust Throttle",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Targets"}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:o.map((l,g)=>e.jsx(rt,{target:l},l.guid||l.topic||g))})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Presets"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:nt.map(l=>e.jsx("button",{onClick:()=>r(l.ms),disabled:n,className:`px-3 py-1.5 text-xs rounded transition-colors ${l.ms===-1?"bg-status-error/10 text-status-error hover:bg-status-error/20":l.ms===0?"bg-status-success/10 text-status-success hover:bg-status-success/20":"bg-surface-sunken text-text-secondary hover:bg-surface-hover"} disabled:opacity-50`,children:l.label},l.label))})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Custom delay (seconds)"}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("input",{type:"number",step:"0.1",min:"0",value:a,onChange:l=>d(l.target.value),placeholder:"e.g. 2.5",className:"input text-xs py-1.5 px-3 w-28"}),e.jsx("button",{onClick:()=>{const l=parseFloat(a);isNaN(l)||l<0||r(Math.round(l*1e3))},disabled:n,className:"btn-primary text-xs py-1.5 px-4 disabled:opacity-50",children:"Apply"})]})]})]})})}function ot(){const{data:t}=se(),s=te(),[o,r]=i.useState(null),[n,a]=i.useState(!1),d=(t==null?void 0:t.apps)??[],l=i.useCallback(async(c,w="all")=>{if(d.length===0)return;a(!0);const f=await Promise.allSettled(d.map(k=>s.mutateAsync({appId:k.appId,throttle:c,...w!=="all"?{scope:w}:{}}))),y=f.filter(k=>k.status==="rejected").length;y>0&&console.error(`Emergency throttle: ${y}/${f.length} apps failed`),a(!1),r(null)},[d,s]),g=c=>c==="engines"?"engines":c==="workers"?"workers":"everything";return o?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"text-xs text-status-error",children:["Pause ",g(o.scope),"?"]}),e.jsx("button",{onClick:()=>l(o.ms,o.scope),disabled:n,className:"px-2.5 py-1 text-xs rounded-md bg-status-error text-white hover:bg-status-error/90 transition-colors disabled:opacity-50",children:n?e.jsx(Z,{className:"w-3.5 h-3.5 animate-spin"}):"Confirm"}),e.jsx("button",{onClick:()=>r(null),disabled:n,className:"px-2.5 py-1 text-xs text-text-tertiary hover:text-text-primary transition-colors disabled:opacity-50",children:"Cancel"})]}):e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:()=>r({ms:-1,scope:"all"}),disabled:n,className:"flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-md text-status-error/80 hover:text-status-error hover:bg-status-error/10 transition-colors disabled:opacity-50",title:"Pause all engines and workers",children:[e.jsx(H,{className:"w-3.5 h-3.5"}),"Pause All"]}),e.jsxs("button",{onClick:()=>l(0),disabled:n,className:"flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-md text-status-success/80 hover:text-status-success hover:bg-status-success/10 transition-colors disabled:opacity-50",title:"Resume all engines and workers",children:[n?e.jsx(Z,{className:"w-3.5 h-3.5 animate-spin"}):e.jsx(Re,{className:"w-3.5 h-3.5"}),"Resume All"]})]})}function lt({byStream:t,onNodeFilter:s}){const[o,r]=i.useState(!1);if(i.useEffect(()=>{r(!1);const c=requestAnimationFrame(()=>r(!0));return()=>cancelAnimationFrame(c)},[t]),t.length===0)return e.jsx("p",{className:"text-xs text-text-tertiary py-4 text-center",children:"No activity in this period"});const n=t.filter(c=>c.stream_type==="engine"),a=t.filter(c=>c.stream_type==="worker"),d=Math.max(...t.map(c=>c.count)),l=c=>{const w=d>0?c.count/d*100:0,f=c.stream_type==="engine",y=f?"(all engines)":ae(c.stream_name),k=f?"bg-blue-500/70":"bg-accent/60",C=f?"text-blue-500":"text-text-tertiary";return e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:`text-[9px] font-mono ${C} w-36 truncate text-right shrink-0`,title:c.stream_name,children:y}),e.jsx("div",{className:"flex-1 h-4 bg-surface-sunken rounded overflow-hidden",children:e.jsx("div",{className:`h-full ${k} rounded transition-all duration-500 ease-out`,style:{width:o?`${w}%`:"0%"}})}),e.jsx("span",{className:"text-[10px] font-mono tabular-nums text-text-secondary w-12 text-right shrink-0",children:c.count.toLocaleString()})]},`${c.stream_type}-${c.stream_name}`)},g="text-[9px] uppercase tracking-widest font-semibold mb-1 cursor-pointer hover:underline";return e.jsxs("div",{className:"space-y-1.5",children:[n.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:`${g} text-blue-500/70 hover:text-blue-500`,onClick:()=>s==null?void 0:s("engines"),children:"Engine Stream"}),n.map(l),a.length>0&&e.jsx("div",{className:"h-2"})]}),a.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:`${g} text-accent/70 hover:text-accent`,onClick:()=>s==null?void 0:s("workers"),children:"Worker Streams"}),a.map(l)]})]})}function it({queue:t,workers:s,expanded:o,onToggle:r,onWorkerClick:n,onResumeThrottle:a,onQueueThrottle:d,onResumeQueue:l,byStream:g,activeDuration:c}){const w=i.useMemo(()=>{const u=g.find(m=>m.stream_type==="worker"&&ae(m.stream_name)===t);return(u==null?void 0:u.count)??0},[g,t]),f=i.useMemo(()=>tt(s),[s]),y=i.useMemo(()=>et(s),[s]),{errors:k}=i.useMemo(()=>R(s),[s]),C=f==="paused"?"bg-status-error":f==="degraded"?"bg-status-warning":"bg-status-success",x=i.useMemo(()=>[...s].sort((u,m)=>R([m]).total-R([u]).total),[s]),j=i.useMemo(()=>[{key:"engine_id",label:"Router",render:u=>{var p;const m=u.engine_id.replace(/^[^:]+::/,"").replace(/-[A-Za-z0-9_]{10,}$/,"")||u.engine_id,_=((p=u.engine_id.match(/^([^:]+)::/))==null?void 0:p[1])||"";return e.jsxs("div",{className:"flex items-center gap-2",title:u.engine_id,children:[e.jsx("span",{className:"text-xs text-text-secondary truncate max-w-[180px]",children:m}),_&&e.jsx("span",{className:"text-[9px] text-text-tertiary/50",children:_})]})}},{key:"processed",label:"Processed",render:u=>{const m=R([u]);return e.jsx("span",{className:"text-xs font-mono tabular-nums text-text-tertiary",children:m.total>0?m.total.toLocaleString():"--"})},className:"w-24"},{key:"throttle",label:"Throttle",render:u=>{const m=u.throttle;return m===-1?e.jsx("span",{className:"text-xs text-status-error font-medium",children:"Paused"}):m&&m>0?e.jsx("span",{className:"text-xs text-status-warning font-medium",children:U(m)}):e.jsx("span",{className:"text-xs text-text-tertiary",children:"0"})},className:"w-24"},{key:"actions",label:"",render:u=>e.jsxs(He,{children:[L(u)&&e.jsx(X,{icon:Y,title:"Resume (remove throttle)",onClick:()=>a(u),colorClass:"text-text-tertiary hover:text-status-success"}),e.jsx(X,{icon:J,title:"Adjust throttle",onClick:()=>n(u)})]}),className:"w-16"}],[n,a]);return e.jsxs("div",{children:[e.jsxs("button",{onClick:()=>r(t),className:"group/row relative flex items-center gap-3 w-full py-2 hover:bg-surface-hover transition-colors text-left rounded",children:[e.jsx("span",{className:`w-2 h-2 rounded-full shrink-0 ${C}`,title:f}),e.jsx(ne,{className:`w-3.5 h-3.5 text-text-tertiary/50 transition-transform duration-200 ${o?"rotate-90":""}`,strokeWidth:2}),e.jsx(Be,{queue:t,size:"sm"}),e.jsx("span",{className:"flex-1"}),k>0&&e.jsxs("span",{className:"text-[10px] text-status-error font-medium mr-2",children:[k," errors"]}),y>0&&e.jsxs("span",{className:"flex items-center gap-1 text-[10px] text-status-warning w-20",children:[e.jsx(Me,{className:"w-3 h-3 shrink-0",strokeWidth:1.5}),e.jsx("span",{className:"font-mono tabular-nums",children:y.toLocaleString()})]}),e.jsxs("span",{className:`flex items-center gap-1 text-xs w-24 ${s.some(L)?"text-status-warning":"text-text-tertiary"}`,children:[e.jsx(Pe,{className:"w-3 h-3 shrink-0",strokeWidth:1.5}),e.jsx("span",{className:"font-mono tabular-nums",children:s.length}),e.jsx("span",{children:"workers"})]}),e.jsx("span",{className:"flex items-center gap-1 text-xs font-mono text-text-tertiary w-28 justify-end mr-16",children:w>0?e.jsxs(e.Fragment,{children:[e.jsx(Ae,{className:"w-3 h-3 shrink-0",strokeWidth:1.5}),w.toLocaleString()," in ",c]}):e.jsx("span",{className:"text-text-tertiary/40",children:"—"})}),e.jsxs("span",{className:"absolute right-3 top-1/2 -translate-y-1/2 opacity-0 group-hover/row:opacity-100 transition-opacity flex items-center gap-2",children:[s.some(L)&&e.jsx(Y,{className:"w-4 h-4 text-text-tertiary hover:text-status-success",strokeWidth:1.5,onClick:u=>{u.stopPropagation(),l(t)}}),e.jsx(J,{className:"w-4 h-4 text-text-tertiary hover:text-accent",strokeWidth:1.5,onClick:u=>{u.stopPropagation(),d(t)}})]})]}),e.jsx(W,{open:o,children:e.jsx("div",{className:"ml-6",children:e.jsx(ze,{columns:j,data:x,keyFn:O,onRowClick:n,emptyMessage:"No workers",inline:!0})})})]})}let ct=0;function dt(t){const s=t.data||{},o=s.topic?String(s.topic):"",r=s.guid?String(s.guid).slice(0,8):"";switch(t.type){case"pong":return o?`Worker ${r}... on "${o}" responded`:`Engine ${r}... responded`;case"ping":return"Roll call broadcast";case"throttle":{const n=s.throttle,a=o?`queue "${o}"`:r?`node ${r}...`:"all nodes";return`${U(n)} applied to ${a}`}case"job":return`Job ${r?r+"...":""} ${s.status||"updated"}`;case"work":return`Dispatched to "${o||"worker"}" ${r?"("+r+"...)":""}`;case"activate":return`Worker "${o||"unknown"}" activated`;case"cron":return`Cron triggered ${o?'"'+o+'"':""}`;default:return o||r||t.type}}function ut(t){const s=[];let o=0;for(;o<t.length;){const r=t[o];if(r.type==="pong"){let n=o+1;for(;n<t.length&&t[n].type==="pong";)n++;const a=t.slice(o,n);if(a.length>=3)s.push({kind:"group",type:"pong",count:a.length,firstTimestamp:a[a.length-1].timestamp,lastTimestamp:a[0].timestamp,events:a});else for(const d of a)s.push({kind:"single",event:d});o=n}else s.push({kind:"single",event:r}),o++}return s}function le({event:t}){const[s,o]=i.useState(!1);return e.jsxs("div",{className:"border-b border-surface-border/50 last:border-b-0",children:[e.jsxs("button",{onClick:()=>o(!s),className:"flex items-center gap-2 py-1.5 w-full text-left hover:bg-surface-hover/50 transition-colors",children:[e.jsx("span",{className:"text-[9px] font-mono text-text-tertiary whitespace-nowrap tabular-nums shrink-0",children:new Date(t.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}),e.jsx("span",{className:`text-[9px] font-medium px-1 py-0.5 rounded ${re[t.type]||"text-text-tertiary"} bg-surface-sunken whitespace-nowrap shrink-0`,children:qe[t.type]||t.type}),e.jsx("span",{className:"text-[9px] text-text-secondary flex-1 min-w-0 truncate",children:dt(t)}),e.jsx("svg",{className:`w-2.5 h-2.5 text-text-tertiary shrink-0 transition-transform duration-150 ${s?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]}),e.jsx(W,{open:s,children:e.jsx("div",{className:"pb-2",children:e.jsx(De,{data:t.data})})})]})}function xt({group:t}){const[s,o]=i.useState(!1),r=t.events.filter(a=>{var d;return!((d=a.data)!=null&&d.topic)}).length,n=t.count-r;return e.jsxs("div",{className:"border-b border-surface-border/50 last:border-b-0",children:[e.jsxs("button",{onClick:()=>o(!s),className:"flex items-center gap-2 py-1.5 w-full text-left hover:bg-surface-hover/50 transition-colors",children:[e.jsx("span",{className:"text-[9px] font-mono text-text-tertiary whitespace-nowrap tabular-nums shrink-0",children:new Date(t.lastTimestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}),e.jsx("span",{className:`text-[9px] font-medium px-1 py-0.5 rounded ${re.pong} bg-surface-sunken whitespace-nowrap shrink-0`,children:"roll call"}),e.jsxs("span",{className:"text-[9px] text-text-secondary flex-1 min-w-0 truncate",children:[t.count," nodes responded",r>0&&n>0?` (${r} engine${r!==1?"s":""}, ${n} worker${n!==1?"s":""})`:r>0?` (${r} engine${r!==1?"s":""})`:` (${n} worker${n!==1?"s":""})`]}),e.jsx("svg",{className:`w-2.5 h-2.5 text-text-tertiary shrink-0 transition-transform duration-150 ${s?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]}),e.jsx(W,{open:s,children:e.jsx("div",{className:"ml-4",children:t.events.map(a=>e.jsx(le,{event:a},a.id))})})]})}function pt({channels:t,onToggle:s,customFilter:o,onCustomFilterChange:r}){return e.jsxs("div",{className:"space-y-3 pb-3 border-b border-surface-border mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Channels"}),e.jsx("p",{className:"text-[9px] text-text-tertiary",children:"Unchecked channels are dropped before buffering"})]}),e.jsx("div",{className:"grid grid-cols-2 gap-1",children:oe.map(n=>e.jsxs("label",{className:"flex items-center gap-2 cursor-pointer py-0.5",children:[e.jsx("input",{type:"checkbox",checked:t.has(n.key),onChange:()=>s(n.key),className:"w-3 h-3 rounded border-border accent-accent"}),e.jsx("span",{className:"text-[10px] text-text-secondary",title:n.description,children:n.label})]},n.key))}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Text Filter"}),e.jsx("input",{type:"text",value:o,onChange:n=>r(n.target.value),placeholder:"pong",className:"input text-[10px] font-mono py-1 px-2 w-full"}),e.jsxs("p",{className:"text-[9px] text-text-tertiary mt-1",children:["Filter by event type, e.g. ",e.jsx("span",{className:"font-mono",children:"pong"}),", ",e.jsx("span",{className:"font-mono",children:"throttle"}),", or any text in the event data."]})]})]})}function ht({bridgeActive:t}){const[s,o]=i.useState(!1),[r,n]=i.useState(!1),[a,d]=i.useState([]),[l,g]=i.useState(()=>new Set(oe.map(x=>x.key))),[c,w]=i.useState(""),f=i.useRef(l);i.useEffect(()=>{f.current=l},[l]);const y=i.useRef(c);i.useEffect(()=>{y.current=c},[c]);const k=x=>{g(j=>{const u=new Set(j);return u.has(x)?u.delete(x):u.add(x),u})};Je("lt.events.mesh.>",i.useCallback(x=>{var m;const j=((m=x.type)==null?void 0:m.replace("mesh.",""))||"unknown";if(!f.current.has(j))return;const u=y.current;u&&!`${j} ${JSON.stringify(x.data||x)}`.toLowerCase().includes(u.toLowerCase())||d(_=>[{id:++ct,type:j,timestamp:x.timestamp||new Date().toISOString(),data:x.data||x},..._].slice(0,Ge))},[]));const C=()=>d([]);return e.jsxs("div",{className:"border-l border-surface-border pl-6 pt-4 min-h-[300px] sticky top-14 self-start max-h-[calc(100vh-8rem)] flex flex-col",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Event Stream"}),e.jsx(Le,{className:`w-3 h-3 ${t?"text-status-success animate-pulse":"text-text-tertiary"}`}),e.jsx("span",{className:"text-[9px] text-text-tertiary",children:t?"Live":"..."}),e.jsxs("span",{className:"ml-auto flex items-center gap-1",children:[e.jsx("button",{onClick:()=>{o(x=>!x),n(!1)},className:`p-1 rounded transition-colors ${s?"text-accent bg-accent/10":"text-text-tertiary hover:text-text-primary"}`,title:"Configure channels",children:e.jsx(We,{className:"w-3.5 h-3.5"})}),e.jsx("button",{onClick:()=>{n(x=>!x),o(!1)},className:`p-1 rounded transition-colors ${r?"text-accent bg-accent/10":"text-text-tertiary hover:text-text-primary"}`,title:"View raw JSON",children:e.jsx(Qe,{className:"w-3.5 h-3.5"})}),a.length>0&&e.jsx("button",{onClick:C,className:"p-1 rounded text-text-tertiary hover:text-text-primary transition-colors",title:"Clear events",children:e.jsx(Fe,{className:"w-3.5 h-3.5"})})]})]}),e.jsx(W,{open:s,children:e.jsx(pt,{channels:l,onToggle:k,customFilter:c,onCustomFilterChange:w})}),e.jsx(W,{open:r,children:e.jsx("div",{className:"pb-3 border-b border-surface-border mb-3",children:e.jsx("pre",{className:"text-[9px] font-mono text-text-tertiary bg-surface-sunken rounded-lg p-3 max-h-[50vh] overflow-auto whitespace-pre-wrap",children:JSON.stringify(a.slice(0,50),null,2)})})}),a.length>0&&e.jsxs("p",{className:"text-[9px] text-text-tertiary mb-2",children:[a.length," events"]}),e.jsx("div",{className:"flex-1 overflow-y-auto",children:a.length===0?e.jsx("p",{className:"text-xs text-text-tertiary py-6 text-center",children:t?"Waiting for events...":"Subscribing..."}):ut(a).map((x,j)=>x.kind==="group"?e.jsx(xt,{group:x},`grp-${j}`):e.jsx(le,{event:x.event},x.event.id))})]})}function mt(t){const s=[],o=[],r=[];for(const n of t)L(n)?r.push(n):n.is_scout||R([n]).total>0?s.push(n):o.push(n);return s.sort((n,a)=>n.is_scout&&!a.is_scout?-1:!n.is_scout&&a.is_scout?1:R([a]).total-R([n]).total),o.sort((n,a)=>F(n.engine_id).localeCompare(F(a.engine_id))),r.sort((n,a)=>F(n.engine_id).localeCompare(F(a.engine_id))),{active:s,idle:o,paused:r}}function D({engine:t,isFirst:s,onThrottle:o}){const r=F(t.engine_id),n=Ye(t.engine_id),a=R([t]),d=t.stream_depth??0,l=L(t);return e.jsxs("div",{className:"group/row flex items-center gap-3 py-2 hover:bg-surface-hover/50 transition-colors rounded px-1",children:[l?e.jsx(H,{className:"w-3.5 h-3.5 text-status-warning shrink-0",strokeWidth:1.5}):e.jsx(Oe,{className:`w-3.5 h-3.5 shrink-0 ${a.total>0||t.is_scout?"text-status-success":"text-text-tertiary/30"}`,strokeWidth:1.5}),e.jsx("span",{className:`${s?"text-base font-medium":"text-xs"} text-text-primary truncate max-w-[180px]`,title:t.engine_id,children:r}),n&&e.jsx("span",{className:"text-[10px] text-text-tertiary/50",children:n}),t.is_scout&&e.jsx("span",{className:"text-[9px] text-amber-500 uppercase tracking-widest",children:"scout"}),e.jsx("span",{className:"flex-1"}),l&&e.jsx("span",{className:"text-[10px] text-status-warning",children:t.throttle===-1?"Paused":U(t.throttle)}),a.total>0&&e.jsx("span",{className:"text-[10px] font-mono tabular-nums text-text-tertiary w-16 text-right",children:a.total.toLocaleString()}),d>0&&e.jsxs("span",{className:`text-[10px] font-mono tabular-nums w-14 text-right ${d>100?"text-status-warning":"text-text-tertiary/50"}`,children:[d.toLocaleString()," q"]}),e.jsx("span",{className:"text-[10px] font-mono text-text-tertiary/40 w-12 text-right",children:Ze(t.inited)}),e.jsx("span",{className:"opacity-0 group-hover/row:opacity-100 transition-opacity",children:e.jsx("button",{onClick:g=>{g.stopPropagation(),o(t)},className:"text-text-tertiary hover:text-accent transition-colors",title:l?"Resume / adjust throttle":"Pause / throttle",children:e.jsx(J,{className:"w-3.5 h-3.5",strokeWidth:1.5})})})]})}function ee({label:t,engines:s,onThrottle:o}){const[r,n]=i.useState(!1);return s.length===0?null:e.jsxs("div",{className:"mt-1",children:[e.jsxs("button",{onClick:()=>n(!r),className:"flex items-center gap-1.5 text-[10px] text-text-tertiary hover:text-text-secondary transition-colors py-1",children:[e.jsx(ne,{className:`w-3 h-3 transition-transform duration-200 ${r?"rotate-90":""}`,strokeWidth:2}),s.length," ",t]}),e.jsx(W,{open:r,children:e.jsx("div",{className:"ml-1",children:s.map(a=>e.jsx(D,{engine:a,onThrottle:o},a.engine_id))})})]})}function gt({engines:t,onThrottle:s,isLoading:o}){const{active:r,idle:n,paused:a}=i.useMemo(()=>mt(t),[t]);return o?e.jsx("p",{className:"text-xs text-text-tertiary",children:"Discovering engines..."}):t.length===0?e.jsx("p",{className:"text-xs text-text-tertiary",children:"No engines found."}):r.length===0&&n.length===0?e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-3 py-2",children:[e.jsx(H,{className:"w-4 h-4 text-status-error shrink-0",strokeWidth:1.5}),e.jsxs("span",{className:"text-base text-status-error font-medium",children:["All ",t.length," engines paused"]})]}),e.jsx("p",{className:"text-[10px] text-text-tertiary ml-7",children:"Messages are accumulating. Resume at least one engine to restore processing."}),e.jsx("div",{className:"ml-1 mt-2",children:a.map(d=>e.jsx(D,{engine:d,onThrottle:s},d.engine_id))})]}):e.jsxs("div",{children:[r.map((d,l)=>e.jsx(D,{engine:d,isFirst:l===0,onThrottle:s},d.engine_id)),e.jsx(ee,{label:"idle",engines:n,onThrottle:s}),e.jsx(ee,{label:"paused",engines:a,onThrottle:s})]})}function ft({collapsed:t,toggleSection:s,activeDuration:o,streamStats:r,isLoading:n,queueMap:a,expandedQueues:d,toggleQueue:l,allQueuesExpanded:g,toggleAllQueues:c,handleRowClick:w,handleResumeThrottle:f,handleQueueThrottle:y,handleResumeQueue:k,engines:C,bridgeActive:x}){return e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_340px] gap-6",children:[e.jsxs("div",{className:"flex flex-col gap-12 mt-10",children:[e.jsx(z,{title:`Message Volume (${o})`,sectionKey:"volume",isCollapsed:!!t.volume,onToggle:s,contentClassName:"mt-4 ml-7",children:e.jsx(lt,{byStream:(r==null?void 0:r.byStream)??[],onNodeFilter:()=>{},onQueueFilter:()=>{}})}),e.jsx(z,{title:`Engine Routers (${C.length})`,sectionKey:"engines",isCollapsed:!!t.engines,onToggle:s,contentClassName:"mt-4 ml-7",children:e.jsx(gt,{engines:C,onThrottle:w,isLoading:n})}),e.jsx(z,{title:"Worker Routers",sectionKey:"queues",isCollapsed:!!t.queues,onToggle:s,contentClassName:"mt-4 ml-7 flex flex-col gap-0",children:n?e.jsx("p",{className:"text-xs text-text-tertiary",children:"Discovering mesh nodes..."}):a.size===0?e.jsx("p",{className:"text-xs text-text-tertiary",children:'No worker routers found. Click "Roll Call" to discover.'}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex justify-end mb-2",children:e.jsx("button",{onClick:c,className:"text-[10px] text-accent hover:underline",children:g?"Collapse all":"Expand all"})}),[...a.entries()].sort(([j],[u])=>j.localeCompare(u)).map(([j,u])=>e.jsx(it,{queue:j,workers:u,expanded:d.has(j),onToggle:l,onWorkerClick:w,onResumeThrottle:f,onQueueThrottle:y,onResumeQueue:k,byStream:(r==null?void 0:r.byStream)??[],activeDuration:o},j))]})})]}),e.jsx(ht,{bridgeActive:x})]})}function Mt(){var G;const{data:t}=se(),s=(t==null?void 0:t.apps)??[],{filters:o,setFilter:r}=Se({filters:{app_id:"",duration:"1h"}}),n=((G=s[0])==null?void 0:G.appId)??"durable",a=o.app_id||n,d=o.duration||"1h",l=$e(),g=6e4,{data:c,isLoading:w,error:f,refetch:y,isFetching:k}=_e(a,g),{data:C}=Te(a,d,void 0,g),x=i.useMemo(()=>[...(c==null?void 0:c.profiles)??[]].sort((v,E)=>{const B=v.worker_topic||v.stream||"",Q=E.worker_topic||E.stream||"";return!v.worker_topic&&E.worker_topic?-1:v.worker_topic&&!E.worker_topic?1:B.localeCompare(Q)}),[c==null?void 0:c.profiles]),j=i.useMemo(()=>x.filter(h=>!A(h)),[x]),u=i.useMemo(()=>x.filter(A),[x]),m=i.useMemo(()=>Xe(x),[x]),_=x.filter(L).length,p=i.useMemo(()=>{const h=new Set(s.map(v=>v.appId));return a&&h.add(a),[...h].sort().map(v=>({value:v,label:v}))},[s,a]),[S]=Ue(),b=S.get("queue"),[$,M]=i.useState(()=>b?new Set([b]):new Set),N=i.useCallback(h=>{M(v=>{const E=v.has(h),B=E?new Set:new Set([h]),Q=new URLSearchParams(window.location.search);E?Q.delete("queue"):Q.set("queue",h);const K=Q.toString();return window.history.pushState(null,"",K?`?${K}`:window.location.pathname),B})},[]),T=m.size>0&&[...m.keys()].every(h=>$.has(h)),I=i.useCallback(()=>{M(T?new Set:new Set(m.keys()))},[T,m]),P="lt:controlplane:collapsed",[ie,ce]=i.useState(()=>{try{const h=JSON.parse(localStorage.getItem(P)||"{}");return b&&(h.queues=!1),h}catch{return{}}}),de=i.useCallback(h=>{ce(v=>{const E={...v,[h]:!v[h]};return localStorage.setItem(P,JSON.stringify(E)),E})},[]),{throttleModalOpen:ue,throttleTargets:V,selectedThrottleTargets:xe,throttleMutation:pe,handleBulkThrottle:he,handleRowClick:me,handleResumeThrottle:ge,handleResumeQueue:fe,handleQueueThrottle:be,closeThrottleModal:je}=st({activeAppId:a,allProfiles:x,profiles:x}),ye=i.useMemo(()=>{const h=[{label:"Engines",value:j.length,dotClass:"bg-blue-500"},{label:"Workers",value:u.length,dotClass:"bg-text-secondary"},{label:"Topics",value:m.size}];return _>0&&h.push({label:"Throttled",value:_,dotClass:"bg-status-warning"}),h},[j.length,u.length,m.size,_]),[q,we]=i.useState(!1),ke=i.useCallback(()=>{l.mutate({appId:a},{onSuccess:()=>we(!0)})},[a,l]);return i.useEffect(()=>{!q&&a&&ke()},[a]),e.jsxs("div",{children:[e.jsx(Ne,{title:"Routers",docsHash:"#docs:dashboard.md:task-queues",stats:ye,actions:e.jsx(ot,{})}),e.jsxs(ve,{actions:e.jsx("div",{className:"flex items-center gap-1",children:Ve.map(h=>e.jsx("button",{onClick:()=>r("duration",h.value),className:`px-3 py-1 text-xs rounded-full transition-colors ${d===h.value?"bg-accent text-text-inverse":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:h.label},h.value))}),children:[e.jsx(Ce,{label:"Application",value:o.app_id,onChange:h=>r("app_id",h),options:p}),e.jsxs("button",{onClick:()=>y(),disabled:k,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs text-text-tertiary hover:text-text-primary transition-colors disabled:opacity-50",children:[e.jsx(Ie,{className:`w-3.5 h-3.5 ${k?"animate-spin":""}`}),"Roll Call"]})]}),f&&e.jsx("div",{className:"mb-6 px-4 py-3 rounded bg-status-error/10 border border-status-error/20",children:e.jsx("p",{className:"text-xs text-status-error font-medium",children:f.message==="Session expired"?"Session expired — please log in again.":`Failed to load mesh data: ${f.message}`})}),e.jsx(ft,{collapsed:ie,toggleSection:de,activeDuration:d,streamStats:C,isLoading:w,queueMap:m,expandedQueues:$,toggleQueue:N,allQueuesExpanded:T,toggleAllQueues:I,handleRowClick:me,handleResumeThrottle:ge,handleQueueThrottle:be,handleResumeQueue:fe,engines:j,bridgeActive:q}),e.jsx(at,{open:ue,onClose:je,targets:V.length>0?V:xe,onApply:he,isPending:pe.isPending})]})}export{Mt as ControlPlanePage};
2
+ //# sourceMappingURL=index-pIMl0mYp.js.map