@hotmeshio/long-tail 0.3.2 → 0.3.3

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 (257) hide show
  1. package/build/api/agents.d.ts +1 -1
  2. package/build/api/agents.js +1 -1
  3. package/build/api/controlplane.d.ts +33 -0
  4. package/build/api/controlplane.js +46 -0
  5. package/build/bin/ltc.js +16 -0
  6. package/build/lib/cli/commands/streams.d.ts +20 -0
  7. package/build/lib/cli/commands/streams.js +134 -0
  8. package/build/lib/db/schemas/003_agents.sql +1 -2
  9. package/build/lib/db/schemas/004_agent_subscriptions.sql +1 -1
  10. package/build/routes/agents.js +3 -3
  11. package/build/routes/controlplane.js +28 -0
  12. package/build/sdk/index.d.ts +1 -0
  13. package/build/sdk/index.js +1 -0
  14. package/build/services/agent/index.d.ts +2 -3
  15. package/build/services/agent/index.js +5 -12
  16. package/build/services/agent/sql.d.ts +3 -4
  17. package/build/services/agent/sql.js +16 -20
  18. package/build/services/agent/subscription-sql.d.ts +1 -1
  19. package/build/services/agent/subscription-sql.js +1 -1
  20. package/build/services/agent/trigger-registry.js +1 -1
  21. package/build/services/controlplane/index.d.ts +9 -1
  22. package/build/services/controlplane/index.js +39 -0
  23. package/build/services/controlplane/stream-messages-sql.d.ts +21 -0
  24. package/build/services/controlplane/stream-messages-sql.js +109 -0
  25. package/build/services/controlplane/types.d.ts +44 -0
  26. package/build/services/cron/index.js +5 -5
  27. package/build/services/export/post-process.js +14 -6
  28. package/build/services/mcp-runs/execution-builder.js +9 -4
  29. package/build/services/topics/index.js +1 -4
  30. package/build/services/topics/sql.d.ts +2 -2
  31. package/build/services/topics/sql.js +9 -2
  32. package/build/services/topics/system-topics.js +2 -3
  33. package/build/start/workers.js +11 -14
  34. package/build/tsconfig.tsbuildinfo +1 -1
  35. package/build/types/agent.d.ts +1 -1
  36. package/dashboard/dist/assets/{AdminDashboard-CbeSejVX.js → AdminDashboard-BBWJAsjl.js} +2 -2
  37. package/dashboard/dist/assets/{AdminDashboard-CbeSejVX.js.map → AdminDashboard-BBWJAsjl.js.map} +1 -1
  38. package/dashboard/dist/assets/{AgentConfigPage-CFJNOrlg.js → AgentConfigPage-Br2O6NDa.js} +3 -3
  39. package/dashboard/dist/assets/AgentConfigPage-Br2O6NDa.js.map +1 -0
  40. package/dashboard/dist/assets/AgentDetailPage-DjgOR62z.js +4 -0
  41. package/dashboard/dist/assets/AgentDetailPage-DjgOR62z.js.map +1 -0
  42. package/dashboard/dist/assets/AgentsPage-CASVGEvY.js +2 -0
  43. package/dashboard/dist/assets/AgentsPage-CASVGEvY.js.map +1 -0
  44. package/dashboard/dist/assets/AvailableEscalationsPage-Dl9ZmjKA.js +2 -0
  45. package/dashboard/dist/assets/{AvailableEscalationsPage-DdrzePy4.js.map → AvailableEscalationsPage-Dl9ZmjKA.js.map} +1 -1
  46. package/dashboard/dist/assets/{BotPicker-kKBifD1w.js → BotPicker-wEoqL3HR.js} +2 -2
  47. package/dashboard/dist/assets/{BotPicker-kKBifD1w.js.map → BotPicker-wEoqL3HR.js.map} +1 -1
  48. package/dashboard/dist/assets/CapabilitiesPage-DYkx5aa4.js +2 -0
  49. package/dashboard/dist/assets/{CapabilitiesPage-Ch5qY0I7.js.map → CapabilitiesPage-DYkx5aa4.js.map} +1 -1
  50. package/dashboard/dist/assets/{CollapsibleSection-kYTBL7dT.js → CollapsibleSection-DN1aF5HO.js} +2 -2
  51. package/dashboard/dist/assets/{CollapsibleSection-kYTBL7dT.js.map → CollapsibleSection-DN1aF5HO.js.map} +1 -1
  52. package/dashboard/dist/assets/{ConfirmDeleteModal-CcaAapMl.js → ConfirmDeleteModal-v8ufrnX5.js} +2 -2
  53. package/dashboard/dist/assets/{ConfirmDeleteModal-CcaAapMl.js.map → ConfirmDeleteModal-v8ufrnX5.js.map} +1 -1
  54. package/dashboard/dist/assets/{CopyableId-B4CL12pv.js → CopyableId-D94R2n6C.js} +2 -2
  55. package/dashboard/dist/assets/{CopyableId-B4CL12pv.js.map → CopyableId-D94R2n6C.js.map} +1 -1
  56. package/dashboard/dist/assets/{CredentialsPage-D1VAlwid.js → CredentialsPage-CSSjAEx6.js} +2 -2
  57. package/dashboard/dist/assets/{CredentialsPage-D1VAlwid.js.map → CredentialsPage-CSSjAEx6.js.map} +1 -1
  58. package/dashboard/dist/assets/{CronLabel-DRmO5rH0.js → CronLabel-fYpkTnEd.js} +2 -2
  59. package/dashboard/dist/assets/{CronLabel-DRmO5rH0.js.map → CronLabel-fYpkTnEd.js.map} +1 -1
  60. package/dashboard/dist/assets/{CustomDurationPicker-C06QDDir.js → CustomDurationPicker-CSarfbO1.js} +2 -2
  61. package/dashboard/dist/assets/{CustomDurationPicker-C06QDDir.js.map → CustomDurationPicker-CSarfbO1.js.map} +1 -1
  62. package/dashboard/dist/assets/{DataTable-J5R6mepB.js → DataTable-VKt4pvC-.js} +2 -2
  63. package/dashboard/dist/assets/{DataTable-J5R6mepB.js.map → DataTable-VKt4pvC-.js.map} +1 -1
  64. package/dashboard/dist/assets/{DropZone-DwNj3GiG.js → DropZone-Bl4j-AID.js} +2 -2
  65. package/dashboard/dist/assets/{DropZone-DwNj3GiG.js.map → DropZone-Bl4j-AID.js.map} +1 -1
  66. package/dashboard/dist/assets/{ElapsedCell-ChyMzl9n.js → ElapsedCell-Y4UmrII0.js} +2 -2
  67. package/dashboard/dist/assets/{ElapsedCell-ChyMzl9n.js.map → ElapsedCell-Y4UmrII0.js.map} +1 -1
  68. package/dashboard/dist/assets/{EmptyState-BXGvOADa.js → EmptyState-Di6_NfbP.js} +2 -2
  69. package/dashboard/dist/assets/{EmptyState-BXGvOADa.js.map → EmptyState-Di6_NfbP.js.map} +1 -1
  70. package/dashboard/dist/assets/{EscalationsOverview-DM6zmE4g.js → EscalationsOverview-D0Ry84FE.js} +2 -2
  71. package/dashboard/dist/assets/{EscalationsOverview-DM6zmE4g.js.map → EscalationsOverview-D0Ry84FE.js.map} +1 -1
  72. package/dashboard/dist/assets/{EventTable-CvJ98E8s.js → EventTable-BzPleN3Y.js} +2 -2
  73. package/dashboard/dist/assets/{EventTable-CvJ98E8s.js.map → EventTable-BzPleN3Y.js.map} +1 -1
  74. package/dashboard/dist/assets/{EventTopicPill-CB_rIGlL.js → EventTopicPill-DCqcr7N7.js} +2 -2
  75. package/dashboard/dist/assets/{EventTopicPill-CB_rIGlL.js.map → EventTopicPill-DCqcr7N7.js.map} +1 -1
  76. package/dashboard/dist/assets/{FilterBar-Bdssa-Xn.js → FilterBar-BoRQss2J.js} +2 -2
  77. package/dashboard/dist/assets/{FilterBar-Bdssa-Xn.js.map → FilterBar-BoRQss2J.js.map} +1 -1
  78. package/dashboard/dist/assets/HomePage-CGH_dYSo.js +2 -0
  79. package/dashboard/dist/assets/HomePage-CGH_dYSo.js.map +1 -0
  80. package/dashboard/dist/assets/{ListToolbar-jy8NL6ll.js → ListToolbar-BMWttsi2.js} +2 -2
  81. package/dashboard/dist/assets/{ListToolbar-jy8NL6ll.js.map → ListToolbar-BMWttsi2.js.map} +1 -1
  82. package/dashboard/dist/assets/{McpOverview-xkaKuHbX.js → McpOverview-DpC-BbBV.js} +2 -2
  83. package/dashboard/dist/assets/{McpOverview-xkaKuHbX.js.map → McpOverview-DpC-BbBV.js.map} +1 -1
  84. package/dashboard/dist/assets/{McpQueryDetailPage-D5ICn6cR.js → McpQueryDetailPage-CZSzX-cI.js} +2 -2
  85. package/dashboard/dist/assets/{McpQueryDetailPage-D5ICn6cR.js.map → McpQueryDetailPage-CZSzX-cI.js.map} +1 -1
  86. package/dashboard/dist/assets/{McpQueryPage-C46fzfm5.js → McpQueryPage-B4KsvBGo.js} +2 -2
  87. package/dashboard/dist/assets/{McpQueryPage-C46fzfm5.js.map → McpQueryPage-B4KsvBGo.js.map} +1 -1
  88. package/dashboard/dist/assets/{McpRunDetailPage-Znsl4Yc-.js → McpRunDetailPage-_owlNUzp.js} +2 -2
  89. package/dashboard/dist/assets/{McpRunDetailPage-Znsl4Yc-.js.map → McpRunDetailPage-_owlNUzp.js.map} +1 -1
  90. package/dashboard/dist/assets/McpRunsPage-C3A1fU3h.js +2 -0
  91. package/dashboard/dist/assets/McpRunsPage-C3A1fU3h.js.map +1 -0
  92. package/dashboard/dist/assets/{Modal-C6k6_5KB.js → Modal-IsEbA4rW.js} +2 -2
  93. package/dashboard/dist/assets/{Modal-C6k6_5KB.js.map → Modal-IsEbA4rW.js.map} +1 -1
  94. package/dashboard/dist/assets/OperatorDashboard-B8MOtt_p.js +2 -0
  95. package/dashboard/dist/assets/{OperatorDashboard-e5N3_dVl.js.map → OperatorDashboard-B8MOtt_p.js.map} +1 -1
  96. package/dashboard/dist/assets/{PageHeader-COcgWWf-.js → PageHeader-C4DNgZKA.js} +2 -2
  97. package/dashboard/dist/assets/{PageHeader-COcgWWf-.js.map → PageHeader-C4DNgZKA.js.map} +1 -1
  98. package/dashboard/dist/assets/{PageHeaderWithStats-C0PCY3aJ.js → PageHeaderWithStats-Fy6tGBaa.js} +2 -2
  99. package/dashboard/dist/assets/{PageHeaderWithStats-C0PCY3aJ.js.map → PageHeaderWithStats-Fy6tGBaa.js.map} +1 -1
  100. package/dashboard/dist/assets/{PriorityBadge-BQCsYMpM.js → PriorityBadge-kSpsF-Zm.js} +2 -2
  101. package/dashboard/dist/assets/{PriorityBadge-BQCsYMpM.js.map → PriorityBadge-kSpsF-Zm.js.map} +1 -1
  102. package/dashboard/dist/assets/{ProcessDetailPage-C03LOgI0.js → ProcessDetailPage-CZjjs4jE.js} +2 -2
  103. package/dashboard/dist/assets/{ProcessDetailPage-C03LOgI0.js.map → ProcessDetailPage-CZjjs4jE.js.map} +1 -1
  104. package/dashboard/dist/assets/{ProcessesListPage-iyPsmlhm.js → ProcessesListPage-Ds7y71o8.js} +2 -2
  105. package/dashboard/dist/assets/{ProcessesListPage-iyPsmlhm.js.map → ProcessesListPage-Ds7y71o8.js.map} +1 -1
  106. package/dashboard/dist/assets/{RolePill-CHwys1f9.js → RolePill-DmdF9L9Q.js} +2 -2
  107. package/dashboard/dist/assets/{RolePill-CHwys1f9.js.map → RolePill-DmdF9L9Q.js.map} +1 -1
  108. package/dashboard/dist/assets/{RolesPage-Bmc3XaUk.js → RolesPage-CCmK38yn.js} +2 -2
  109. package/dashboard/dist/assets/{RolesPage-Bmc3XaUk.js.map → RolesPage-CCmK38yn.js.map} +1 -1
  110. package/dashboard/dist/assets/{RowActions-Bs4PF-Gd.js → RowActions-uGuPBEWb.js} +2 -2
  111. package/dashboard/dist/assets/{RowActions-Bs4PF-Gd.js.map → RowActions-uGuPBEWb.js.map} +1 -1
  112. package/dashboard/dist/assets/{RunAsSelector-DXzAr2WW.js → RunAsSelector-BsO-uSh9.js} +2 -2
  113. package/dashboard/dist/assets/{RunAsSelector-DXzAr2WW.js.map → RunAsSelector-BsO-uSh9.js.map} +1 -1
  114. package/dashboard/dist/assets/{ServerName-BIdLC1Ay.js → ServerName-BHl8nLOV.js} +2 -2
  115. package/dashboard/dist/assets/{ServerName-BIdLC1Ay.js.map → ServerName-BHl8nLOV.js.map} +1 -1
  116. package/dashboard/dist/assets/{StatCard-OKzRSSx4.js → StatCard-DI4ZQ-Zi.js} +2 -2
  117. package/dashboard/dist/assets/{StatCard-OKzRSSx4.js.map → StatCard-DI4ZQ-Zi.js.map} +1 -1
  118. package/dashboard/dist/assets/{StatusBadge-CQlF46RR.js → StatusBadge-TV20Ulgl.js} +2 -2
  119. package/dashboard/dist/assets/{StatusBadge-CQlF46RR.js.map → StatusBadge-TV20Ulgl.js.map} +1 -1
  120. package/dashboard/dist/assets/{StepIndicator-CP7eycjI.js → StepIndicator-ziIED3Pz.js} +2 -2
  121. package/dashboard/dist/assets/{StepIndicator-CP7eycjI.js.map → StepIndicator-ziIED3Pz.js.map} +1 -1
  122. package/dashboard/dist/assets/{StickyPagination-CGk8VAKt.js → StickyPagination-CXBDS1ka.js} +2 -2
  123. package/dashboard/dist/assets/{StickyPagination-CGk8VAKt.js.map → StickyPagination-CXBDS1ka.js.map} +1 -1
  124. package/dashboard/dist/assets/{SwimlaneTimeline-MEUPc3yJ.js → SwimlaneTimeline-Dc_a4-D5.js} +2 -2
  125. package/dashboard/dist/assets/{SwimlaneTimeline-MEUPc3yJ.js.map → SwimlaneTimeline-Dc_a4-D5.js.map} +1 -1
  126. package/dashboard/dist/assets/{TagInput-BGxXKiWD.js → TagInput-BYEjEPsa.js} +2 -2
  127. package/dashboard/dist/assets/{TagInput-BGxXKiWD.js.map → TagInput-BYEjEPsa.js.map} +1 -1
  128. package/dashboard/dist/assets/{TaskDetailPage-pN5BXzYA.js → TaskDetailPage-Cu0XLEA4.js} +2 -2
  129. package/dashboard/dist/assets/{TaskDetailPage-pN5BXzYA.js.map → TaskDetailPage-Cu0XLEA4.js.map} +1 -1
  130. package/dashboard/dist/assets/{TaskQueuePill-bw8ieKsf.js → TaskQueuePill-yBqQ-piu.js} +2 -2
  131. package/dashboard/dist/assets/{TaskQueuePill-bw8ieKsf.js.map → TaskQueuePill-yBqQ-piu.js.map} +1 -1
  132. package/dashboard/dist/assets/{TasksListPage-D1INzcrA.js → TasksListPage-Dl0quVgM.js} +2 -2
  133. package/dashboard/dist/assets/{TasksListPage-D1INzcrA.js.map → TasksListPage-Dl0quVgM.js.map} +1 -1
  134. package/dashboard/dist/assets/{TimeAgo-CywLVIBA.js → TimeAgo-BAs-HL55.js} +2 -2
  135. package/dashboard/dist/assets/{TimeAgo-CywLVIBA.js.map → TimeAgo-BAs-HL55.js.map} +1 -1
  136. package/dashboard/dist/assets/{TimestampCell-B4Pc6f3A.js → TimestampCell-zFm6ze1U.js} +2 -2
  137. package/dashboard/dist/assets/{TimestampCell-B4Pc6f3A.js.map → TimestampCell-zFm6ze1U.js.map} +1 -1
  138. package/dashboard/dist/assets/ToolPill-DiM3hgAB.js +2 -0
  139. package/dashboard/dist/assets/{ToolPill-DdLN3JOT.js.map → ToolPill-DiM3hgAB.js.map} +1 -1
  140. package/dashboard/dist/assets/{ToolTestPanel-DusbUka5.js → ToolTestPanel-C3vWUW2p.js} +2 -2
  141. package/dashboard/dist/assets/{ToolTestPanel-DusbUka5.js.map → ToolTestPanel-C3vWUW2p.js.map} +1 -1
  142. package/dashboard/dist/assets/TopicDetailPage-wjwRE5eI.js +9 -0
  143. package/dashboard/dist/assets/TopicDetailPage-wjwRE5eI.js.map +1 -0
  144. package/dashboard/dist/assets/{TopicsPage-DbtrnQON.js → TopicsPage-D3AONwHP.js} +2 -2
  145. package/dashboard/dist/assets/{TopicsPage-DbtrnQON.js.map → TopicsPage-D3AONwHP.js.map} +1 -1
  146. package/dashboard/dist/assets/{UserName-CLbusknU.js → UserName-0vrAWvND.js} +2 -2
  147. package/dashboard/dist/assets/{UserName-CLbusknU.js.map → UserName-0vrAWvND.js.map} +1 -1
  148. package/dashboard/dist/assets/{WorkflowExecutionPage-C61R-3Gg.js → WorkflowExecutionPage-CBbWToVN.js} +2 -2
  149. package/dashboard/dist/assets/{WorkflowExecutionPage-C61R-3Gg.js.map → WorkflowExecutionPage-CBbWToVN.js.map} +1 -1
  150. package/dashboard/dist/assets/{WorkflowPill-7vt2F6wR.js → WorkflowPill-C7jE0e1g.js} +2 -2
  151. package/dashboard/dist/assets/{WorkflowPill-7vt2F6wR.js.map → WorkflowPill-C7jE0e1g.js.map} +1 -1
  152. package/dashboard/dist/assets/WorkflowsDashboard-1GVHYLlw.js +2 -0
  153. package/dashboard/dist/assets/{WorkflowsDashboard-BWiUNvyl.js.map → WorkflowsDashboard-1GVHYLlw.js.map} +1 -1
  154. package/dashboard/dist/assets/{WorkflowsOverview-DA2ZOs7D.js → WorkflowsOverview-2POOJzat.js} +2 -2
  155. package/dashboard/dist/assets/{WorkflowsOverview-DA2ZOs7D.js.map → WorkflowsOverview-2POOJzat.js.map} +1 -1
  156. package/dashboard/dist/assets/YamlWorkflowsPage-BcRKxz3P.js +2 -0
  157. package/dashboard/dist/assets/{YamlWorkflowsPage-CLebf2eL.js.map → YamlWorkflowsPage-BcRKxz3P.js.map} +1 -1
  158. package/dashboard/dist/assets/{agents-Dga6NU7U.js → agents-Bd6SNUID.js} +2 -2
  159. package/dashboard/dist/assets/agents-Bd6SNUID.js.map +1 -0
  160. package/dashboard/dist/assets/{bots-CtU4i4OQ.js → bots-DEsg-T8t.js} +2 -2
  161. package/dashboard/dist/assets/{bots-CtU4i4OQ.js.map → bots-DEsg-T8t.js.map} +1 -1
  162. package/dashboard/dist/assets/{controlplane-BVoALhbL.js → controlplane-B3m1kIWb.js} +2 -2
  163. package/dashboard/dist/assets/{controlplane-BVoALhbL.js.map → controlplane-B3m1kIWb.js.map} +1 -1
  164. package/dashboard/dist/assets/{escalation-_N5GfuIi.js → escalation-CJQPC0gm.js} +2 -2
  165. package/dashboard/dist/assets/{escalation-_N5GfuIi.js.map → escalation-CJQPC0gm.js.map} +1 -1
  166. package/dashboard/dist/assets/{escalation-columns-CoTmTpHp.js → escalation-columns-DEE62U3_.js} +2 -2
  167. package/dashboard/dist/assets/{escalation-columns-CoTmTpHp.js.map → escalation-columns-DEE62U3_.js.map} +1 -1
  168. package/dashboard/dist/assets/{helpers-Dz2U3Ctb.js → helpers-BveI_035.js} +2 -2
  169. package/dashboard/dist/assets/{helpers-Dz2U3Ctb.js.map → helpers-BveI_035.js.map} +1 -1
  170. package/dashboard/dist/assets/index-B7zv_NKJ.js +2 -0
  171. package/dashboard/dist/assets/index-B7zv_NKJ.js.map +1 -0
  172. package/dashboard/dist/assets/index-BVVdr9s0.js +2 -0
  173. package/dashboard/dist/assets/{index-6Kd78p_v.js.map → index-BVVdr9s0.js.map} +1 -1
  174. package/dashboard/dist/assets/{index-D_H_Prht.js → index-BXIwxi_u.js} +2 -2
  175. package/dashboard/dist/assets/{index-D_H_Prht.js.map → index-BXIwxi_u.js.map} +1 -1
  176. package/dashboard/dist/assets/{index-B9ealjkt.js → index-CEPo8tn_.js} +2 -2
  177. package/dashboard/dist/assets/{index-B9ealjkt.js.map → index-CEPo8tn_.js.map} +1 -1
  178. package/dashboard/dist/assets/{index-BYwPVJv0.js → index-CTKfvoGj.js} +2 -2
  179. package/dashboard/dist/assets/{index-BYwPVJv0.js.map → index-CTKfvoGj.js.map} +1 -1
  180. package/dashboard/dist/assets/{index-Dpjguclc.js → index-CZVprWC6.js} +2 -2
  181. package/dashboard/dist/assets/{index-Dpjguclc.js.map → index-CZVprWC6.js.map} +1 -1
  182. package/dashboard/dist/assets/{index-CtbG3UN-.js → index-ChNwlMdo.js} +2 -2
  183. package/dashboard/dist/assets/{index-CtbG3UN-.js.map → index-ChNwlMdo.js.map} +1 -1
  184. package/dashboard/dist/assets/{index-QicYdUsl.js → index-Cpq83bZq.js} +2 -2
  185. package/dashboard/dist/assets/{index-QicYdUsl.js.map → index-Cpq83bZq.js.map} +1 -1
  186. package/dashboard/dist/assets/{index-CS61sh5q.js → index-Csts1D-x.js} +2 -2
  187. package/dashboard/dist/assets/{index-CS61sh5q.js.map → index-Csts1D-x.js.map} +1 -1
  188. package/dashboard/dist/assets/{index-dM-OgCY3.js → index-D4v-EUTe.js} +2 -2
  189. package/dashboard/dist/assets/{index-dM-OgCY3.js.map → index-D4v-EUTe.js.map} +1 -1
  190. package/dashboard/dist/assets/{index-DWUunWxh.js → index-DI36hw6W.js} +2 -2
  191. package/dashboard/dist/assets/{index-DWUunWxh.js.map → index-DI36hw6W.js.map} +1 -1
  192. package/dashboard/dist/assets/{index-CCOSf1PY.js → index-MnRuwfHN.js} +59 -59
  193. package/dashboard/dist/assets/index-MnRuwfHN.js.map +1 -0
  194. package/dashboard/dist/assets/index-dp_Q2Hha.css +1 -0
  195. package/dashboard/dist/assets/{index-BWHDW_CF.js → index-wQaJXZYX.js} +2 -2
  196. package/dashboard/dist/assets/{index-BWHDW_CF.js.map → index-wQaJXZYX.js.map} +1 -1
  197. package/dashboard/dist/assets/{knowledge-DJlebU82.js → knowledge-krdvn5bg.js} +2 -2
  198. package/dashboard/dist/assets/{knowledge-DJlebU82.js.map → knowledge-krdvn5bg.js.map} +1 -1
  199. package/dashboard/dist/assets/{mcp-CsLJ5SRm.js → mcp-BTZ2ex4x.js} +2 -2
  200. package/dashboard/dist/assets/{mcp-CsLJ5SRm.js.map → mcp-BTZ2ex4x.js.map} +1 -1
  201. package/dashboard/dist/assets/{mcp-query-WNK1ItRV.js → mcp-query-BzqJu709.js} +2 -2
  202. package/dashboard/dist/assets/{mcp-query-WNK1ItRV.js.map → mcp-query-BzqJu709.js.map} +1 -1
  203. package/dashboard/dist/assets/{mcp-runs-DtTTsuPH.js → mcp-runs-BBUaY28a.js} +2 -2
  204. package/dashboard/dist/assets/{mcp-runs-DtTTsuPH.js.map → mcp-runs-BBUaY28a.js.map} +1 -1
  205. package/dashboard/dist/assets/{namespaces-iRejH3_A.js → namespaces-DJVfgGst.js} +2 -2
  206. package/dashboard/dist/assets/{namespaces-iRejH3_A.js.map → namespaces-DJVfgGst.js.map} +1 -1
  207. package/dashboard/dist/assets/{roles-3Jm5KtKc.js → roles-DogkRzK2.js} +2 -2
  208. package/dashboard/dist/assets/{roles-3Jm5KtKc.js.map → roles-DogkRzK2.js.map} +1 -1
  209. package/dashboard/dist/assets/{settings-DmN2I-c6.js → settings-D2sLRpie.js} +2 -2
  210. package/dashboard/dist/assets/{settings-DmN2I-c6.js.map → settings-D2sLRpie.js.map} +1 -1
  211. package/dashboard/dist/assets/{tasks-Cc-QoITQ.js → tasks-CIuWkHLG.js} +2 -2
  212. package/dashboard/dist/assets/{tasks-Cc-QoITQ.js.map → tasks-CIuWkHLG.js.map} +1 -1
  213. package/dashboard/dist/assets/{topics-p8anbgi0.js → topics-DxMDwZFs.js} +2 -2
  214. package/dashboard/dist/assets/topics-DxMDwZFs.js.map +1 -0
  215. package/dashboard/dist/assets/{useEventHooks-VaJ52jMm.js → useEventHooks-xXspN8_9.js} +2 -2
  216. package/dashboard/dist/assets/{useEventHooks-VaJ52jMm.js.map → useEventHooks-xXspN8_9.js.map} +1 -1
  217. package/dashboard/dist/assets/{useYamlActivityEvents-BU4Uhksl.js → useYamlActivityEvents-2hdnnML7.js} +2 -2
  218. package/dashboard/dist/assets/{useYamlActivityEvents-BU4Uhksl.js.map → useYamlActivityEvents-2hdnnML7.js.map} +1 -1
  219. package/dashboard/dist/assets/{users-oXOlnold.js → users-DWQ-ojf9.js} +2 -2
  220. package/dashboard/dist/assets/{users-oXOlnold.js.map → users-DWQ-ojf9.js.map} +1 -1
  221. package/dashboard/dist/assets/{vendor-icons-CBOM6Es0.js → vendor-icons-YdqUbzg6.js} +110 -100
  222. package/dashboard/dist/assets/vendor-icons-YdqUbzg6.js.map +1 -0
  223. package/dashboard/dist/assets/{workflows-Yq7cK-vR.js → workflows-BvGU8_fj.js} +2 -2
  224. package/dashboard/dist/assets/{workflows-Yq7cK-vR.js.map → workflows-BvGU8_fj.js.map} +1 -1
  225. package/dashboard/dist/assets/{yaml-workflows-Ch53yD43.js → yaml-workflows-DNgb7krQ.js} +2 -2
  226. package/dashboard/dist/assets/{yaml-workflows-Ch53yD43.js.map → yaml-workflows-DNgb7krQ.js.map} +1 -1
  227. package/dashboard/dist/index.html +3 -3
  228. package/docs/agents.md +1 -1
  229. package/docs/api/http/agents.md +5 -7
  230. package/docs/api/http/controlplane.md +193 -0
  231. package/docs/api/sdk/agents.md +5 -5
  232. package/docs/api/sdk/controlplane.md +36 -0
  233. package/docs/dashboard.md +13 -0
  234. package/package.json +2 -2
  235. package/dashboard/dist/assets/AgentConfigPage-CFJNOrlg.js.map +0 -1
  236. package/dashboard/dist/assets/AgentDetailPage-Dbx2t-Uk.js +0 -4
  237. package/dashboard/dist/assets/AgentDetailPage-Dbx2t-Uk.js.map +0 -1
  238. package/dashboard/dist/assets/AgentsPage-Bz61Nl-x.js +0 -2
  239. package/dashboard/dist/assets/AgentsPage-Bz61Nl-x.js.map +0 -1
  240. package/dashboard/dist/assets/AvailableEscalationsPage-DdrzePy4.js +0 -2
  241. package/dashboard/dist/assets/CapabilitiesPage-Ch5qY0I7.js +0 -2
  242. package/dashboard/dist/assets/HomePage-BuZkdXZt.js +0 -2
  243. package/dashboard/dist/assets/HomePage-BuZkdXZt.js.map +0 -1
  244. package/dashboard/dist/assets/McpRunsPage-DT-armx5.js +0 -2
  245. package/dashboard/dist/assets/McpRunsPage-DT-armx5.js.map +0 -1
  246. package/dashboard/dist/assets/OperatorDashboard-e5N3_dVl.js +0 -2
  247. package/dashboard/dist/assets/ToolPill-DdLN3JOT.js +0 -2
  248. package/dashboard/dist/assets/TopicDetailPage-DadwM52Y.js +0 -9
  249. package/dashboard/dist/assets/TopicDetailPage-DadwM52Y.js.map +0 -1
  250. package/dashboard/dist/assets/WorkflowsDashboard-BWiUNvyl.js +0 -2
  251. package/dashboard/dist/assets/YamlWorkflowsPage-CLebf2eL.js +0 -2
  252. package/dashboard/dist/assets/agents-Dga6NU7U.js.map +0 -1
  253. package/dashboard/dist/assets/index-6Kd78p_v.js +0 -2
  254. package/dashboard/dist/assets/index-BIUHY2Jz.css +0 -1
  255. package/dashboard/dist/assets/index-CCOSf1PY.js.map +0 -1
  256. package/dashboard/dist/assets/topics-p8anbgi0.js.map +0 -1
  257. package/dashboard/dist/assets/vendor-icons-CBOM6Es0.js.map +0 -1
@@ -5,11 +5,13 @@ exports.listApps = listApps;
5
5
  exports.rollCall = rollCall;
6
6
  exports.applyThrottle = applyThrottle;
7
7
  exports.getStreamStats = getStreamStats;
8
+ exports.getStreamMessages = getStreamMessages;
8
9
  exports.subscribeMesh = subscribeMesh;
9
10
  exports.isBridgeActive = isBridgeActive;
10
11
  const hotmesh_1 = require("@hotmeshio/hotmesh");
11
12
  const db_1 = require("../../lib/db");
12
13
  const sql_1 = require("./sql");
14
+ const stream_messages_sql_1 = require("./stream-messages-sql");
13
15
  const quorum_bridge_1 = require("./quorum-bridge");
14
16
  // ─── Engine cache ───────────────────────────────────────────────────────────
15
17
  /** Cached read-only HotMesh engines keyed by appId */
@@ -100,6 +102,43 @@ async function getStreamStats(schema, duration = '1h', streamName) {
100
102
  byStream: byStreamRes.rows,
101
103
  };
102
104
  }
105
+ // ─── Stream message browsing ────────────────────────────────────────────
106
+ /**
107
+ * Browse stream messages across engine_streams and worker_streams tables
108
+ * with pagination, filtering, and sorting.
109
+ *
110
+ * @param schema — the Postgres schema (namespace, e.g. "durable")
111
+ * @param params — pagination, filter, and sort options
112
+ */
113
+ async function getStreamMessages(schema, params) {
114
+ const limit = Math.min(Math.max(params.limit ?? 25, 1), 100);
115
+ const offset = Math.max(params.offset ?? 0, 0);
116
+ const sortColumn = stream_messages_sql_1.VALID_SORT_COLUMNS[params.sort_by ?? 'created_at'];
117
+ if (!sortColumn)
118
+ throw new Error(`Invalid sort_by: ${params.sort_by}`);
119
+ const sortOrder = (params.order ?? 'desc').toLowerCase();
120
+ if (!stream_messages_sql_1.VALID_SORT_ORDERS.has(sortOrder))
121
+ throw new Error(`Invalid order: ${params.order}`);
122
+ const { source } = params;
123
+ const streamName = params.stream_name ? `%${params.stream_name}%` : null;
124
+ const status = params.status ?? null;
125
+ const msgType = params.msg_type ?? null;
126
+ const topic = params.topic ?? null;
127
+ const workflowName = params.workflow_name ?? null;
128
+ const jid = params.jid ?? null;
129
+ const aid = params.aid ?? null;
130
+ const pool = (0, db_1.getPool)();
131
+ const queryParams = [streamName, status, msgType, topic, workflowName, jid, aid, limit, offset];
132
+ const countParams = [streamName, status, msgType, topic, workflowName, jid, aid];
133
+ const [messagesRes, countRes] = await Promise.all([
134
+ pool.query((0, stream_messages_sql_1.LIST_STREAM_MESSAGES)(schema, sortColumn, sortOrder, source), queryParams),
135
+ pool.query((0, stream_messages_sql_1.COUNT_STREAM_MESSAGES)(schema, source), countParams),
136
+ ]);
137
+ return {
138
+ messages: messagesRes.rows,
139
+ total: countRes.rows[0]?.count ?? 0,
140
+ };
141
+ }
103
142
  // ─── Quorum bridge ──────────────────────────────────────────────────────────
104
143
  /** Track which appIds have active quorum bridges */
105
144
  const activeBridges = new Set();
@@ -0,0 +1,21 @@
1
+ /** Allowed sort columns — whitelist prevents injection. */
2
+ export declare const VALID_SORT_COLUMNS: Record<string, string>;
3
+ /** Allowed sort directions. */
4
+ export declare const VALID_SORT_ORDERS: Set<string>;
5
+ /**
6
+ * List stream messages with pagination, filtering, and sorting.
7
+ *
8
+ * Source is required — engine and worker streams are separate tables
9
+ * with different schemas and must never be commingled in a single query.
10
+ *
11
+ * Parameters: $1 = stream_name, $2 = status, $3 = msg_type,
12
+ * $4 = topic, $5 = workflow_name, $6 = jid, $7 = aid,
13
+ * $8 = limit, $9 = offset
14
+ */
15
+ export declare function LIST_STREAM_MESSAGES(schema: string, sortColumn: string, sortOrder: string, source: 'engine' | 'worker'): string;
16
+ /**
17
+ * Count stream messages matching the filter criteria.
18
+ *
19
+ * Parameters: $1 = stream_name, $2 = status, $3 = msg_type
20
+ */
21
+ export declare function COUNT_STREAM_MESSAGES(schema: string, source: 'engine' | 'worker'): string;
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ // ─── Stream message browsing ───────────────────────────────────────────────
3
+ //
4
+ // Paginated queries across engine_streams and worker_streams tables.
5
+ // Both tables are HASH-partitioned on stream_name (8 partitions each).
6
+ // Status is derived from timestamp columns:
7
+ // dead_lettered_at IS NOT NULL → 'dead_lettered'
8
+ // expired_at IS NOT NULL → 'processed'
9
+ // reserved_at IS NOT NULL → 'claimed'
10
+ // else → 'pending'
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.VALID_SORT_ORDERS = exports.VALID_SORT_COLUMNS = void 0;
13
+ exports.LIST_STREAM_MESSAGES = LIST_STREAM_MESSAGES;
14
+ exports.COUNT_STREAM_MESSAGES = COUNT_STREAM_MESSAGES;
15
+ /** Allowed sort columns — whitelist prevents injection. */
16
+ exports.VALID_SORT_COLUMNS = {
17
+ created_at: 'created_at',
18
+ stream_name: 'stream_name',
19
+ priority: 'priority',
20
+ id: 'id',
21
+ };
22
+ /** Allowed sort directions. */
23
+ exports.VALID_SORT_ORDERS = new Set(['asc', 'desc']);
24
+ /**
25
+ * Status derivation CASE expression, reused by both list and count queries.
26
+ */
27
+ const STATUS_CASE = `
28
+ CASE
29
+ WHEN dead_lettered_at IS NOT NULL THEN 'dead_lettered'
30
+ WHEN expired_at IS NOT NULL THEN 'processed'
31
+ WHEN reserved_at IS NOT NULL THEN 'claimed'
32
+ ELSE 'pending'
33
+ END`;
34
+ /**
35
+ * Shared WHERE clause for stream message filtering.
36
+ *
37
+ * Parameters:
38
+ * $1 = stream_name filter (NULL = all, otherwise ILIKE pattern)
39
+ * $2 = status filter (NULL = all, otherwise exact match)
40
+ * $3 = msg_type filter (NULL = all, worker-only)
41
+ * $4 = topic filter (NULL = all, worker-only)
42
+ * $5 = workflow_name filter (NULL = all, worker-only)
43
+ * $6 = jid filter (NULL = all, worker-only)
44
+ * $7 = aid filter (NULL = all, worker-only)
45
+ */
46
+ const WHERE_CLAUSE = `
47
+ WHERE ($1::text IS NULL OR stream_name ILIKE $1)
48
+ AND ($2::text IS NULL OR ${STATUS_CASE} = $2)`;
49
+ const WORKER_WHERE_CLAUSE = `
50
+ WHERE ($1::text IS NULL OR stream_name ILIKE $1)
51
+ AND ($2::text IS NULL OR ${STATUS_CASE} = $2)
52
+ AND ($3::text IS NULL OR msg_type = $3)
53
+ AND ($4::text IS NULL OR topic = $4)
54
+ AND ($5::text IS NULL OR workflow_name = $5)
55
+ AND ($6::text IS NULL OR jid = $6)
56
+ AND ($7::text IS NULL OR aid = $7)`;
57
+ /**
58
+ * List stream messages with pagination, filtering, and sorting.
59
+ *
60
+ * Source is required — engine and worker streams are separate tables
61
+ * with different schemas and must never be commingled in a single query.
62
+ *
63
+ * Parameters: $1 = stream_name, $2 = status, $3 = msg_type,
64
+ * $4 = topic, $5 = workflow_name, $6 = jid, $7 = aid,
65
+ * $8 = limit, $9 = offset
66
+ */
67
+ function LIST_STREAM_MESSAGES(schema, sortColumn, sortOrder, source) {
68
+ const select = source === 'engine'
69
+ ? `SELECT
70
+ id, 'engine' AS source, stream_name,
71
+ message, ${STATUS_CASE} AS status,
72
+ created_at, reserved_at, reserved_by, expired_at,
73
+ dead_lettered_at, priority, visible_at,
74
+ retry_attempt, max_retry_attempts,
75
+ NULL AS workflow_name, NULL AS jid, NULL AS aid,
76
+ NULL AS dad, NULL AS msg_type, NULL AS topic
77
+ FROM "${schema}".engine_streams
78
+ ${WHERE_CLAUSE}
79
+ AND ($3::text IS NULL)
80
+ AND ($4::text IS NULL)
81
+ AND ($5::text IS NULL)
82
+ AND ($6::text IS NULL)
83
+ AND ($7::text IS NULL)`
84
+ : `SELECT
85
+ id, 'worker' AS source, stream_name,
86
+ message, ${STATUS_CASE} AS status,
87
+ created_at, reserved_at, reserved_by, expired_at,
88
+ dead_lettered_at, priority, visible_at,
89
+ retry_attempt, max_retry_attempts,
90
+ workflow_name, jid, aid, dad, msg_type, topic
91
+ FROM "${schema}".worker_streams
92
+ ${WORKER_WHERE_CLAUSE}`;
93
+ return `
94
+ SELECT * FROM (${select}) AS q
95
+ ORDER BY ${sortColumn} ${sortOrder}, id DESC
96
+ LIMIT $8::int OFFSET $9::int`;
97
+ }
98
+ /**
99
+ * Count stream messages matching the filter criteria.
100
+ *
101
+ * Parameters: $1 = stream_name, $2 = status, $3 = msg_type
102
+ */
103
+ function COUNT_STREAM_MESSAGES(schema, source) {
104
+ const table = source === 'engine' ? 'engine_streams' : 'worker_streams';
105
+ const where = source === 'engine'
106
+ ? `${WHERE_CLAUSE} AND ($3::text IS NULL) AND ($4::text IS NULL) AND ($5::text IS NULL) AND ($6::text IS NULL) AND ($7::text IS NULL)`
107
+ : WORKER_WHERE_CLAUSE;
108
+ return `SELECT COUNT(*)::int AS count FROM "${schema}".${table} ${where}`;
109
+ }
@@ -12,3 +12,47 @@ export interface StreamStats {
12
12
  count: number;
13
13
  }>;
14
14
  }
15
+ export type StreamMessageStatus = 'pending' | 'claimed' | 'processed' | 'dead_lettered';
16
+ export type StreamMessageSource = 'engine' | 'worker';
17
+ export interface StreamMessage {
18
+ id: string;
19
+ source: StreamMessageSource;
20
+ stream_name: string;
21
+ message: string;
22
+ status: StreamMessageStatus;
23
+ created_at: string;
24
+ reserved_at: string | null;
25
+ reserved_by: string | null;
26
+ expired_at: string | null;
27
+ dead_lettered_at: string | null;
28
+ priority: number;
29
+ visible_at: string | null;
30
+ retry_attempt: number;
31
+ max_retry_attempts: number;
32
+ /** Worker-only fields (null for engine messages) */
33
+ workflow_name: string | null;
34
+ jid: string | null;
35
+ aid: string | null;
36
+ dad: string | null;
37
+ msg_type: string | null;
38
+ topic: string | null;
39
+ }
40
+ export interface StreamMessagesParams {
41
+ source: StreamMessageSource;
42
+ limit?: number;
43
+ offset?: number;
44
+ sort_by?: string;
45
+ order?: 'asc' | 'desc';
46
+ stream_name?: string | null;
47
+ status?: StreamMessageStatus | null;
48
+ msg_type?: string | null;
49
+ /** Worker-only filters */
50
+ topic?: string | null;
51
+ workflow_name?: string | null;
52
+ jid?: string | null;
53
+ aid?: string | null;
54
+ }
55
+ export interface StreamMessagesResult {
56
+ messages: StreamMessage[];
57
+ total: number;
58
+ }
@@ -327,10 +327,10 @@ class LTCronRegistry {
327
327
  if (!principal) {
328
328
  principal = this.systemPrincipal ?? undefined;
329
329
  }
330
- logger_1.loggerRegistry.info(`[lt-cron] agent ${agent.name} principal: ${principal?.id ?? 'NONE'} (executeAs=${executeAs ?? 'unset'})`);
330
+ logger_1.loggerRegistry.info(`[lt-cron] agent ${agent.id} principal: ${principal?.id ?? 'NONE'} (executeAs=${executeAs ?? 'unset'})`);
331
331
  const envelope = {
332
332
  data: schedule.envelope ?? {},
333
- metadata: { source: 'agent-cron', agentId: agent.id, agentName: agent.name, certified: true },
333
+ metadata: { source: 'agent-cron', agentId: agent.id, agentName: agent.id, certified: true },
334
334
  lt: {
335
335
  userId: principal?.id ?? 'lt-system',
336
336
  principal,
@@ -371,7 +371,7 @@ class LTCronRegistry {
371
371
  // Expected — deterministic ID dedup when cron fires multiple consumers
372
372
  }
373
373
  else {
374
- logger_1.loggerRegistry.error(`[lt-cron] agent ${agent.name}/${targetLabel} failed: ${msg}`);
374
+ logger_1.loggerRegistry.error(`[lt-cron] agent ${agent.id}/${targetLabel} failed: ${msg}`);
375
375
  }
376
376
  }
377
377
  },
@@ -379,7 +379,7 @@ class LTCronRegistry {
379
379
  options: { id: cronId, interval: schedule.cron },
380
380
  });
381
381
  this.activeCrons.set(key, cronId);
382
- logger_1.loggerRegistry.info(`[lt-cron] agent schedule started: ${agent.name}/${targetLabel} (${schedule.cron})`);
382
+ logger_1.loggerRegistry.info(`[lt-cron] agent schedule started: ${agent.id}/${targetLabel} (${schedule.cron})`);
383
383
  }
384
384
  /**
385
385
  * Stop all cron schedules for an agent.
@@ -436,7 +436,7 @@ class LTCronRegistry {
436
436
  armed++;
437
437
  }
438
438
  catch (err) {
439
- logger_1.loggerRegistry.warn(`[lt-cron] agent schedule failed: ${agent.name}/${sched.cron}: ${err.message}`);
439
+ logger_1.loggerRegistry.warn(`[lt-cron] agent schedule failed: ${agent.id}/${sched.cron}: ${err.message}`);
440
440
  }
441
441
  }
442
442
  }
@@ -108,14 +108,22 @@ function postProcessExecution(execution) {
108
108
  }
109
109
  }
110
110
  }
111
- if (toAdd.length === 0 && !enriched)
112
- return execution;
113
- if (toAdd.length === 0) {
114
- return { ...execution, events };
111
+ if (toAdd.length > 0) {
112
+ events.push(...toAdd);
115
113
  }
116
- events.push(...toAdd);
117
- // Re-sort chronologically and re-number
114
+ // Sort by execution_index first — it reflects the true workflow sequence.
115
+ // Timestamps are unreliable for ordering (e.g. signal_wait_started gets
116
+ // the workflow start time). Fall back to timestamp only when index is absent.
118
117
  events.sort((a, b) => {
118
+ const idxA = a.attributes.execution_index ?? -1;
119
+ const idxB = b.attributes.execution_index ?? -1;
120
+ if (idxA !== -1 && idxB !== -1 && idxA !== idxB)
121
+ return idxA - idxB;
122
+ if (idxA !== -1 && idxB === -1)
123
+ return 1; // indexed after non-indexed (workflow_started)
124
+ if (idxA === -1 && idxB !== -1)
125
+ return -1;
126
+ // Same index (scheduled/completed pairs) — sort by timestamp
119
127
  const cmp = a.event_time.localeCompare(b.event_time);
120
128
  return cmp !== 0 ? cmp : a.event_id - b.event_id;
121
129
  });
@@ -72,9 +72,14 @@ function assembleExport(ctx, events, activities) {
72
72
  const workerCount = ctx.activities.filter((a) => a.type !== 'trigger').length;
73
73
  const completed = events.filter((e) => e.event_type === 'activity_task_completed').length;
74
74
  const failed = events.filter((e) => e.event_type === 'activity_task_failed').length;
75
+ // Derive close_time from the last event when available — meta.ju (job updated)
76
+ // often equals meta.jc (job created), producing 0ms duration.
77
+ const lastEventTime = events.length > 0 ? events[events.length - 1].event_time : null;
78
+ const closeTime = lastEventTime || ctx.closeTime || null;
79
+ const startTime = ctx.startTime || null;
75
80
  let durationMs = null;
76
- if (ctx.startTime && ctx.closeTime) {
77
- const diff = new Date(ctx.closeTime).getTime() - new Date(ctx.startTime).getTime();
81
+ if (startTime && closeTime) {
82
+ const diff = new Date(closeTime).getTime() - new Date(startTime).getTime();
78
83
  if (diff >= 0)
79
84
  durationMs = diff;
80
85
  }
@@ -84,8 +89,8 @@ function assembleExport(ctx, events, activities) {
84
89
  workflow_name: ctx.workflowName,
85
90
  task_queue: ctx.appId,
86
91
  status: ctx.job.status > 0 ? 'running' : ctx.job.status === 0 ? 'completed' : 'failed',
87
- start_time: ctx.startTime || null,
88
- close_time: ctx.closeTime || null,
92
+ start_time: startTime,
93
+ close_time: closeTime,
89
94
  duration_ms: durationMs,
90
95
  trace_id: ctx.traceId,
91
96
  result: ctx.workflowResult,
@@ -9,7 +9,6 @@ exports.upsertTopicOnPublish = upsertTopicOnPublish;
9
9
  exports.seedTopic = seedTopic;
10
10
  exports.resetTopic = resetTopic;
11
11
  const db_1 = require("../../lib/db");
12
- const matching_1 = require("../../lib/events/matching");
13
12
  const sql_1 = require("./sql");
14
13
  async function listTopics(filters = {}) {
15
14
  const pool = (0, db_1.getPool)();
@@ -31,9 +30,7 @@ async function getTopic(topic) {
31
30
  const { rows } = await pool.query(sql_1.GET_TOPIC, [topic]);
32
31
  if (!rows[0])
33
32
  return null;
34
- // Find all active subscriptions whose pattern matches this topic
35
- const { rows: allSubs } = await pool.query(sql_1.LIST_SUBSCRIBERS);
36
- const subscribers = allSubs.filter((sub) => (0, matching_1.subjectMatchesPattern)(topic, sub.topic));
33
+ const { rows: subscribers } = await pool.query(sql_1.LIST_SUBSCRIBERS, [topic]);
37
34
  return { ...rows[0], subscribers };
38
35
  }
39
36
  async function createTopic(data) {
@@ -1,4 +1,4 @@
1
- export declare const LIST_TOPICS = "\n SELECT t.*,\n COALESCE(s.sub_count, 0)::int AS subscriber_count\n FROM lt_topic_catalog t\n LEFT JOIN LATERAL (\n SELECT COUNT(*)::int AS sub_count\n FROM lt_agent_subscriptions\n WHERE enabled = true\n AND (topic = t.topic OR topic LIKE '%>%' OR topic LIKE '%*%')\n ) s ON true\n WHERE ($1::text IS NULL OR t.category = $1)\n AND ($2::text IS NULL OR t.topic ILIKE '%' || $2 || '%' OR t.description ILIKE '%' || $2 || '%')\n ORDER BY t.category, t.topic\n LIMIT $3 OFFSET $4\n";
1
+ export declare const LIST_TOPICS = "\n SELECT t.*,\n COALESCE(s.sub_count, 0)::int AS subscriber_count\n FROM lt_topic_catalog t\n LEFT JOIN LATERAL (\n SELECT COUNT(*)::int AS sub_count\n FROM lt_agent_subscriptions\n WHERE enabled = true\n AND (\n topic = t.topic\n OR t.topic LIKE REPLACE(REPLACE(topic, '*', '%'), '>', '%')\n )\n ) s ON true\n WHERE ($1::text IS NULL OR t.category = $1)\n AND ($2::text IS NULL OR t.topic ILIKE '%' || $2 || '%' OR t.description ILIKE '%' || $2 || '%')\n ORDER BY t.category, t.topic\n LIMIT $3 OFFSET $4\n";
2
2
  export declare const COUNT_TOPICS = "\n SELECT COUNT(*)::int AS total FROM lt_topic_catalog\n WHERE ($1::text IS NULL OR category = $1)\n AND ($2::text IS NULL OR topic ILIKE '%' || $2 || '%' OR description ILIKE '%' || $2 || '%')\n";
3
3
  export declare const GET_TOPIC = "\n SELECT * FROM lt_topic_catalog WHERE topic = $1\n";
4
4
  export declare const INSERT_TOPIC = "\n INSERT INTO lt_topic_catalog\n (topic, description, category, payload_schema, example_payload, source, tags)\n VALUES ($1, $2, $3, $4, $5, $6, $7)\n RETURNING *\n";
@@ -7,4 +7,4 @@ export declare const DELETE_TOPIC = "\n DELETE FROM lt_topic_catalog WHERE topi
7
7
  export declare const UPSERT_ON_PUBLISH = "\n INSERT INTO lt_topic_catalog\n (topic, category, source, example_payload, last_seen_at)\n VALUES ($1, $2, $3, $4, NOW())\n ON CONFLICT (topic) DO UPDATE SET\n last_seen_at = NOW(),\n example_payload = COALESCE(EXCLUDED.example_payload, lt_topic_catalog.example_payload)\n";
8
8
  export declare const SEED_TOPIC = "\n INSERT INTO lt_topic_catalog\n (topic, description, category, payload_schema, example_payload, source, tags)\n VALUES ($1, $2, $3, $4, $5, $6, $7)\n ON CONFLICT (topic) DO NOTHING\n";
9
9
  export declare const RESET_TOPIC = "\n INSERT INTO lt_topic_catalog\n (topic, description, category, payload_schema, example_payload, source, tags, managed)\n VALUES ($1, $2, $3, $4, $5, $6, $7, true)\n ON CONFLICT (topic) DO UPDATE SET\n description = EXCLUDED.description,\n category = EXCLUDED.category,\n payload_schema = EXCLUDED.payload_schema,\n example_payload = EXCLUDED.example_payload,\n source = EXCLUDED.source,\n tags = EXCLUDED.tags,\n managed = true\n";
10
- export declare const LIST_SUBSCRIBERS = "\n SELECT s.id, s.agent_id, s.topic, s.reaction_type,\n a.name AS agent_name\n FROM lt_agent_subscriptions s\n JOIN lt_agents a ON s.agent_id = a.id\n WHERE s.enabled = true AND a.status = 'active'\n ORDER BY s.created_at\n";
10
+ export declare const LIST_SUBSCRIBERS = "\n SELECT s.id, s.agent_id, s.topic, s.reaction_type,\n a.id AS agent_name\n FROM lt_agent_subscriptions s\n JOIN lt_agents a ON s.agent_id = a.id\n WHERE s.enabled = true AND a.status = 'active'\n AND (\n s.topic = $1\n OR $1 LIKE REPLACE(REPLACE(s.topic, '*', '%'), '>', '%')\n )\n ORDER BY s.created_at\n";
@@ -9,7 +9,10 @@ exports.LIST_TOPICS = `
9
9
  SELECT COUNT(*)::int AS sub_count
10
10
  FROM lt_agent_subscriptions
11
11
  WHERE enabled = true
12
- AND (topic = t.topic OR topic LIKE '%>%' OR topic LIKE '%*%')
12
+ AND (
13
+ topic = t.topic
14
+ OR t.topic LIKE REPLACE(REPLACE(topic, '*', '%'), '>', '%')
15
+ )
13
16
  ) s ON true
14
17
  WHERE ($1::text IS NULL OR t.category = $1)
15
18
  AND ($2::text IS NULL OR t.topic ILIKE '%' || $2 || '%' OR t.description ILIKE '%' || $2 || '%')
@@ -72,9 +75,13 @@ exports.RESET_TOPIC = `
72
75
  `;
73
76
  exports.LIST_SUBSCRIBERS = `
74
77
  SELECT s.id, s.agent_id, s.topic, s.reaction_type,
75
- a.name AS agent_name
78
+ a.id AS agent_name
76
79
  FROM lt_agent_subscriptions s
77
80
  JOIN lt_agents a ON s.agent_id = a.id
78
81
  WHERE s.enabled = true AND a.status = 'active'
82
+ AND (
83
+ s.topic = $1
84
+ OR $1 LIKE REPLACE(REPLACE(s.topic, '*', '%'), '>', '%')
85
+ )
79
86
  ORDER BY s.created_at
80
87
  `;
@@ -220,7 +220,7 @@ function inferCategory(topic) {
220
220
  async function seedSystemTopics() {
221
221
  for (const def of SYSTEM_TOPICS) {
222
222
  try {
223
- const inserted = await (0, index_1.seedTopic)({
223
+ await (0, index_1.resetTopic)({
224
224
  topic: def.topic,
225
225
  description: def.description ?? '',
226
226
  category: def.category ?? inferCategory(def.topic),
@@ -229,8 +229,7 @@ async function seedSystemTopics() {
229
229
  source: 'system',
230
230
  tags: def.tags ?? [],
231
231
  });
232
- if (inserted)
233
- logger_1.loggerRegistry.info(`[long-tail] topic seeded: ${def.topic}`);
232
+ logger_1.loggerRegistry.info(`[long-tail] topic seeded: ${def.topic}`);
234
233
  }
235
234
  catch (err) {
236
235
  logger_1.loggerRegistry.warn(`[long-tail] topic seed failed for ${def.topic}: ${err.message}`);
@@ -237,7 +237,7 @@ async function startWorkers(startConfig, workers, builtinMcpServerFactories) {
237
237
  : [];
238
238
  const allAgentConfigs = [...(startConfig.agents ?? []), ...systemAgents];
239
239
  if (allAgentConfigs.length > 0) {
240
- const { seedAgent, getAgentByName } = await Promise.resolve().then(() => __importStar(require('../services/agent')));
240
+ const { seedAgent } = await Promise.resolve().then(() => __importStar(require('../services/agent')));
241
241
  const { seedSubscription } = await Promise.resolve().then(() => __importStar(require('../services/agent/subscriptions')));
242
242
  for (const agentConfig of allAgentConfigs) {
243
243
  try {
@@ -248,7 +248,7 @@ async function startWorkers(startConfig, workers, builtinMcpServerFactories) {
248
248
  behaviors.cron = agentConfig.schedules[0].cron;
249
249
  }
250
250
  const inserted = await seedAgent({
251
- name: agentConfig.name,
251
+ id: agentConfig.name,
252
252
  description: agentConfig.description,
253
253
  goals: agentConfig.goals,
254
254
  rules: agentConfig.rules,
@@ -259,19 +259,16 @@ async function startWorkers(startConfig, workers, builtinMcpServerFactories) {
259
259
  });
260
260
  if (inserted)
261
261
  logger_1.loggerRegistry.info(`[long-tail] agent seeded: ${agentConfig.name}`);
262
- // Seed subscriptions for this agent
262
+ // Seed subscriptions for this agent — id IS the name
263
263
  if (agentConfig.subscriptions?.length) {
264
- const agent = await getAgentByName(agentConfig.name);
265
- if (agent) {
266
- for (const sub of agentConfig.subscriptions) {
267
- try {
268
- const subInserted = await seedSubscription(agent.id, sub);
269
- if (subInserted)
270
- logger_1.loggerRegistry.info(`[long-tail] subscription seeded: ${agentConfig.name}/${sub.topic}`);
271
- }
272
- catch (subErr) {
273
- logger_1.loggerRegistry.warn(`[long-tail] subscription seed failed: ${agentConfig.name}/${sub.topic}: ${subErr.message}`);
274
- }
264
+ for (const sub of agentConfig.subscriptions) {
265
+ try {
266
+ const subInserted = await seedSubscription(agentConfig.name, sub);
267
+ if (subInserted)
268
+ logger_1.loggerRegistry.info(`[long-tail] subscription seeded: ${agentConfig.name}/${sub.topic}`);
269
+ }
270
+ catch (subErr) {
271
+ logger_1.loggerRegistry.warn(`[long-tail] subscription seed failed: ${agentConfig.name}/${sub.topic}: ${subErr.message}`);
275
272
  }
276
273
  }
277
274
  }
@@ -1 +1 @@
1
- {"root":["../index.ts","../vitest.config.ts","../vitest.integration.config.ts","../api/agent-subscriptions.ts","../api/agents.ts","../api/auth.ts","../api/bot-accounts.ts","../api/capabilities.ts","../api/controlplane.ts","../api/dba.ts","../api/exports.ts","../api/files.ts","../api/index.ts","../api/insight.ts","../api/knowledge.ts","../api/maintenance.ts","../api/mcp-runs.ts","../api/namespaces.ts","../api/roles.ts","../api/settings.ts","../api/tasks.ts","../api/topics.ts","../api/users.ts","../api/workflow-sets.ts","../api/escalations/bulk.ts","../api/escalations/claim.ts","../api/escalations/create.ts","../api/escalations/helpers.ts","../api/escalations/index.ts","../api/escalations/list.ts","../api/escalations/resolve.ts","../api/escalations/single.ts","../api/mcp/index.ts","../api/mcp/servers.ts","../api/mcp/tools.ts","../api/workflows/config.ts","../api/workflows/discovery.ts","../api/workflows/index.ts","../api/workflows/invocation.ts","../api/yaml-workflows/cron.ts","../api/yaml-workflows/crud.ts","../api/yaml-workflows/deploy.ts","../api/yaml-workflows/helpers.ts","../api/yaml-workflows/index.ts","../api/yaml-workflows/versions.ts","../bin/ltc.ts","../lib/cli/auth.ts","../lib/cli/client.ts","../lib/cli/compile.ts","../lib/cli/format.ts","../lib/cli/init.ts","../lib/cli/output.ts","../lib/cli/scanner.ts","../lib/cli/types.ts","../lib/cli/commands/escalations.ts","../lib/cli/commands/knowledge.ts","../lib/cli/commands/mcp.ts","../lib/cli/commands/pipelines.ts","../lib/cli/commands/status.ts","../lib/cli/commands/users.ts","../lib/cli/commands/workflows.ts","../lib/db/index.ts","../lib/db/migrate.ts","../lib/events/callback.ts","../lib/events/index.ts","../lib/events/matching.ts","../lib/events/memory.ts","../lib/events/nats.ts","../lib/events/publish.ts","../lib/events/socketio.ts","../lib/logger/index.ts","../lib/logger/pino.ts","../lib/storage/index.ts","../lib/storage/local.ts","../lib/storage/mime.ts","../lib/storage/s3.ts","../lib/storage/types.ts","../lib/telemetry/honeycomb.ts","../lib/telemetry/index.ts","../modules/auth.ts","../modules/config.ts","../modules/defaults.ts","../modules/ltconfig.ts","../modules/maintenance.ts","../modules/utils.ts","../routes/agents.ts","../routes/auth.ts","../routes/bot-accounts.ts","../routes/capabilities.ts","../routes/controlplane.ts","../routes/dba.ts","../routes/delegation.ts","../routes/docs.ts","../routes/exports.ts","../routes/file-browser.ts","../routes/files.ts","../routes/index.ts","../routes/insight.ts","../routes/knowledge.ts","../routes/maintenance.ts","../routes/mcp-runs.ts","../routes/mcp.ts","../routes/namespaces.ts","../routes/nats-credentials.ts","../routes/oauth.ts","../routes/roles.ts","../routes/settings.ts","../routes/tasks.ts","../routes/topics.ts","../routes/users.ts","../routes/workflow-sets.ts","../routes/escalations/bulk.ts","../routes/escalations/index.ts","../routes/escalations/list.ts","../routes/escalations/resolve.ts","../routes/escalations/single.ts","../routes/workflows/config.ts","../routes/workflows/discovery.ts","../routes/workflows/index.ts","../routes/workflows/invocation.ts","../routes/yaml-workflows/cron.ts","../routes/yaml-workflows/crud.ts","../routes/yaml-workflows/deployment.ts","../routes/yaml-workflows/index.ts","../routes/yaml-workflows/versions.ts","../scripts/process-helpers.ts","../scripts/process.ts","../scripts/token.ts","../sdk/index.ts","../services/dba.ts","../services/hotmesh-utils.ts","../services/workflow-invocation.ts","../services/agent/index.ts","../services/agent/input-mapper.ts","../services/agent/sql.ts","../services/agent/subscription-sql.ts","../services/agent/subscriptions.ts","../services/agent/trigger-registry.ts","../services/auth/bot-api-key.ts","../services/auth/delegation.ts","../services/auth/index.ts","../services/auth/service-token.ts","../services/config/cache.ts","../services/config/index.ts","../services/config/provider.ts","../services/config/read.ts","../services/config/sql.ts","../services/config/write.ts","../services/controlplane/index.ts","../services/controlplane/quorum-bridge.ts","../services/controlplane/sql.ts","../services/controlplane/types.ts","../services/cron/index.ts","../services/escalation/bulk.ts","../services/escalation/crud.ts","../services/escalation/index.ts","../services/escalation/queries.ts","../services/escalation/sql.ts","../services/escalation/types.ts","../services/escalation-strategy/default.ts","../services/escalation-strategy/index.ts","../services/escalation-strategy/mcp.ts","../services/export/client.ts","../services/export/index.ts","../services/export/post-process.ts","../services/export/types.ts","../services/iam/activity.ts","../services/iam/bots.ts","../services/iam/context.ts","../services/iam/credentials.ts","../services/iam/envelope.ts","../services/iam/ephemeral.ts","../services/iam/index.ts","../services/iam/principal.ts","../services/iam/resolve.ts","../services/iam/sql.ts","../services/insight/index.ts","../services/insight/prompts.ts","../services/interceptor/activity-interceptor.ts","../services/interceptor/completion.ts","../services/interceptor/context.ts","../services/interceptor/escalation.ts","../services/interceptor/index.ts","../services/interceptor/lifecycle.ts","../services/interceptor/state.ts","../services/interceptor/types.ts","../services/interceptor/activities/config.ts","../services/interceptor/activities/escalation.ts","../services/interceptor/activities/index.ts","../services/interceptor/activities/task.ts","../services/interceptor/activities/workflow.ts","../services/llm/detect.ts","../services/llm/index.ts","../services/llm/translate.ts","../services/llm/types.ts","../services/llm/providers/anthropic.ts","../services/llm/providers/openai.ts","../services/maintenance/index.ts","../services/mcp/adapter.ts","../services/mcp/db.ts","../services/mcp/index.ts","../services/mcp/register-tool.ts","../services/mcp/server-lifecycle.ts","../services/mcp/server-tools.ts","../services/mcp/server.ts","../services/mcp/sql.ts","../services/mcp/types.ts","../services/mcp/workflow-compiler-server.ts","../services/mcp/workflow-server.ts","../services/mcp/client/connection-dispatch.ts","../services/mcp/client/connection-lifecycle.ts","../services/mcp/client/connection-test.ts","../services/mcp/client/connection.ts","../services/mcp/client/index.ts","../services/mcp/client/tools.ts","../services/mcp/db-server/index.ts","../services/mcp/db-server/schemas.ts","../services/mcp/db-server/tools.ts","../services/mcp/playwright-server/index.ts","../services/mcp/playwright-server/lifecycle.ts","../services/mcp/playwright-server/schemas.ts","../services/mcp/playwright-server/tools.ts","../services/mcp-runs/enrichment.ts","../services/mcp-runs/events.ts","../services/mcp-runs/execution-builder.ts","../services/mcp-runs/index.ts","../services/mcp-runs/queries.ts","../services/mcp-runs/sql.ts","../services/mcp-runs/types.ts","../services/namespace/index.ts","../services/namespace/sql.ts","../services/namespace/types.ts","../services/oauth/crypto.ts","../services/oauth/db.ts","../services/oauth/index.ts","../services/oauth/sql.ts","../services/oauth/state.ts","../services/oauth/providers/anthropic.ts","../services/oauth/providers/github.ts","../services/oauth/providers/google.ts","../services/oauth/providers/index.ts","../services/oauth/providers/microsoft.ts","../services/oauth/providers/mock.ts","../services/oauth/providers/registry.ts","../services/oauth/providers/types.ts","../services/orchestrator/condition.ts","../services/orchestrator/index.ts","../services/orchestrator/types.ts","../services/role/index.ts","../services/role/sql.ts","../services/role/types.ts","../services/task/crud.ts","../services/task/index.ts","../services/task/process.ts","../services/task/resolve.ts","../services/task/sql.ts","../services/task/types.ts","../services/topics/index.ts","../services/topics/sql.ts","../services/topics/system-topics.ts","../services/user/auth.ts","../services/user/crud.ts","../services/user/index.ts","../services/user/rbac.ts","../services/user/roles.ts","../services/user/sql.ts","../services/user/types.ts","../services/workers/registry.ts","../services/workflow-sets/db.ts","../services/workflow-sets/index.ts","../services/workflow-sets/sql.ts","../services/yaml-workflow/builder-regenerate.ts","../services/yaml-workflow/db-utils.ts","../services/yaml-workflow/db-versions.ts","../services/yaml-workflow/db.ts","../services/yaml-workflow/deployer-helpers.ts","../services/yaml-workflow/deployer.ts","../services/yaml-workflow/generator.ts","../services/yaml-workflow/index.ts","../services/yaml-workflow/input-analyzer-helpers.ts","../services/yaml-workflow/input-analyzer.ts","../services/yaml-workflow/invoke.ts","../services/yaml-workflow/sql.ts","../services/yaml-workflow/types.ts","../services/yaml-workflow/durable-compiler/index.ts","../services/yaml-workflow/durable-compiler/parser.ts","../services/yaml-workflow/durable-compiler/prompts.ts","../services/yaml-workflow/durable-compiler/types.ts","../services/yaml-workflow/pattern-detector/array-source.ts","../services/yaml-workflow/pattern-detector/collapse.ts","../services/yaml-workflow/pattern-detector/index.ts","../services/yaml-workflow/pattern-detector/run-detection.ts","../services/yaml-workflow/pattern-detector/types.ts","../services/yaml-workflow/pipeline/analyze.ts","../services/yaml-workflow/pipeline/extract-helpers.ts","../services/yaml-workflow/pipeline/extract.ts","../services/yaml-workflow/pipeline/index.ts","../services/yaml-workflow/pipeline/prompt-templates.ts","../services/yaml-workflow/pipeline/prompts.ts","../services/yaml-workflow/pipeline/validate.ts","../services/yaml-workflow/pipeline/build/dag-assembly.ts","../services/yaml-workflow/pipeline/build/dag.ts","../services/yaml-workflow/pipeline/build/index.ts","../services/yaml-workflow/pipeline/build/iteration.ts","../services/yaml-workflow/pipeline/build/metadata.ts","../services/yaml-workflow/pipeline/build/transform.ts","../services/yaml-workflow/pipeline/build/utils.ts","../services/yaml-workflow/pipeline/build/wiring.ts","../services/yaml-workflow/pipeline/compile/index.ts","../services/yaml-workflow/pipeline/compile/llm-call.ts","../services/yaml-workflow/pipeline/compile/parse-plan.ts","../services/yaml-workflow/pipeline/compile/summarize.ts","../services/yaml-workflow/workers/callbacks.ts","../services/yaml-workflow/workers/events.ts","../services/yaml-workflow/workers/index.ts","../services/yaml-workflow/workers/register.ts","../services/yaml-workflow/workers/scope.ts","../start/adapters.ts","../start/config.ts","../start/index.ts","../start/server.ts","../start/socket-auth.ts","../start/workers.ts","../system/index.ts","../system/activities/claude-code.ts","../system/activities/file-storage.ts","../system/activities/http.ts","../system/activities/knowledge.ts","../system/activities/oauth.ts","../system/activities/schema-exchange.ts","../system/activities/sql.ts","../system/activities/triage/cache.ts","../system/activities/triage/context.ts","../system/activities/triage/discovery.ts","../system/activities/triage/index.ts","../system/activities/triage/llm.ts","../system/activities/triage/tools.ts","../system/mcp-servers/claude-code.ts","../system/mcp-servers/docs.ts","../system/mcp-servers/events.ts","../system/mcp-servers/file-storage.ts","../system/mcp-servers/http-fetch.ts","../system/mcp-servers/human-queue-schemas.ts","../system/mcp-servers/human-queue.ts","../system/mcp-servers/knowledge.ts","../system/mcp-servers/oauth.ts","../system/mcp-servers/schema-exchange.ts","../system/mcp-servers/translation.ts","../system/mcp-servers/vision-prompts.ts","../system/mcp-servers/vision.ts","../system/mcp-servers/workflow-compiler.ts","../system/mcp-servers/workflow.ts","../system/mcp-servers/admin/escalations.ts","../system/mcp-servers/admin/index.ts","../system/mcp-servers/admin/maintenance.ts","../system/mcp-servers/admin/mcp-servers.ts","../system/mcp-servers/admin/schemas.ts","../system/mcp-servers/admin/tasks.ts","../system/mcp-servers/admin/users.ts","../system/mcp-servers/admin/workflow-config.ts","../system/mcp-servers/admin/workflows.ts","../system/mcp-servers/admin/yaml-workflows.ts","../system/mcp-servers/db-query/index.ts","../system/mcp-servers/db-query/schemas.ts","../system/mcp-servers/db-query/tools.ts","../system/mcp-servers/playwright/browser-lifecycle.ts","../system/mcp-servers/playwright/index.ts","../system/mcp-servers/playwright/schemas.ts","../system/mcp-servers/playwright/tools-atomic.ts","../system/mcp-servers/playwright/tools-navigation.ts","../system/mcp-servers/playwright/tools-page-interaction.ts","../system/mcp-servers/playwright/tools-run-script.ts","../system/mcp-servers/playwright/types.ts","../system/mcp-servers/playwright/vision-helper.ts","../system/mcp-servers/playwright-cli/helpers.ts","../system/mcp-servers/playwright-cli/index.ts","../system/mcp-servers/playwright-cli/schemas.ts","../system/mcp-servers/playwright-cli/tools-auth.ts","../system/mcp-servers/playwright-cli/tools-capture.ts","../system/seed/index.ts","../system/seed/tool-manifests-admin.ts","../system/seed/tool-manifests-browser.ts","../system/seed/tool-manifests-data.ts","../system/seed/tool-manifests-escalation.ts","../system/seed/tool-manifests-events.ts","../system/seed/tool-manifests-knowledge.ts","../system/seed/tool-manifests-workflows.ts","../system/workflows/tool-result-guard.ts","../system/workflows/mcp-deterministic/activities.ts","../system/workflows/mcp-deterministic/index.ts","../system/workflows/mcp-query/index.ts","../system/workflows/mcp-query/prompts.ts","../system/workflows/mcp-query/strategy-advisors.ts","../system/workflows/mcp-query/types.ts","../system/workflows/mcp-query/activities/caches.ts","../system/workflows/mcp-query/activities/discovery.ts","../system/workflows/mcp-query/activities/index.ts","../system/workflows/mcp-query/activities/llm.ts","../system/workflows/mcp-query/activities/tool-executor.ts","../system/workflows/mcp-query/activities/tool-loader.ts","../system/workflows/mcp-query-router/activities.ts","../system/workflows/mcp-query-router/index.ts","../system/workflows/mcp-query-router/prompts.ts","../system/workflows/mcp-triage/activities-proxy.ts","../system/workflows/mcp-triage/index.ts","../system/workflows/mcp-triage/prompts.ts","../system/workflows/mcp-triage/response-builders.ts","../system/workflows/mcp-triage/response.ts","../system/workflows/mcp-triage/types.ts","../system/workflows/mcp-triage-deterministic/activities.ts","../system/workflows/mcp-triage-deterministic/index.ts","../system/workflows/mcp-triage-router/activities.ts","../system/workflows/mcp-triage-router/index.ts","../system/workflows/mcp-workflow-builder/index.ts","../system/workflows/mcp-workflow-builder/prompts.ts","../system/workflows/mcp-workflow-builder/activities/caches.ts","../system/workflows/mcp-workflow-builder/activities/index.ts","../system/workflows/mcp-workflow-builder/activities/llm.ts","../system/workflows/mcp-workflow-builder/activities/tool-loader.ts","../system/workflows/mcp-workflow-planner/index.ts","../system/workflows/mcp-workflow-planner/prompts.ts","../system/workflows/mcp-workflow-planner/activities/analyze.ts","../system/workflows/mcp-workflow-planner/activities/index.ts","../system/workflows/mcp-workflow-planner/activities/persist.ts","../system/workflows/mcp-workflow-planner/activities/plan.ts","../system/workflows/shared/discovery.ts","../system/workflows/shared/index.ts","../system/workflows/shared/llm-caller.ts","../system/workflows/shared/prompts.ts","../system/workflows/shared/strategy-advisors.ts","../system/workflows/shared/tool-executor.ts","../system/workflows/shared/tool-loader.ts","../system/workflows/shared/types.ts","../types/agent.ts","../types/auth.ts","../types/config.ts","../types/delegation.ts","../types/discovery.ts","../types/envelope.ts","../types/escalation-strategy.ts","../types/escalation.ts","../types/events.ts","../types/export.ts","../types/express.d.ts","../types/index.ts","../types/logger.ts","../types/maintenance.ts","../types/mcp.ts","../types/oauth.ts","../types/sdk.ts","../types/startup.ts","../types/task.ts","../types/telemetry.ts","../types/tool-context.ts","../types/user.ts","../types/workflow-set.ts","../types/workflow.ts","../types/yaml-workflow.ts","../workers/index.ts"],"version":"5.9.3"}
1
+ {"root":["../index.ts","../vitest.config.ts","../vitest.integration.config.ts","../api/agent-subscriptions.ts","../api/agents.ts","../api/auth.ts","../api/bot-accounts.ts","../api/capabilities.ts","../api/controlplane.ts","../api/dba.ts","../api/exports.ts","../api/files.ts","../api/index.ts","../api/insight.ts","../api/knowledge.ts","../api/maintenance.ts","../api/mcp-runs.ts","../api/namespaces.ts","../api/roles.ts","../api/settings.ts","../api/tasks.ts","../api/topics.ts","../api/users.ts","../api/workflow-sets.ts","../api/escalations/bulk.ts","../api/escalations/claim.ts","../api/escalations/create.ts","../api/escalations/helpers.ts","../api/escalations/index.ts","../api/escalations/list.ts","../api/escalations/resolve.ts","../api/escalations/single.ts","../api/mcp/index.ts","../api/mcp/servers.ts","../api/mcp/tools.ts","../api/workflows/config.ts","../api/workflows/discovery.ts","../api/workflows/index.ts","../api/workflows/invocation.ts","../api/yaml-workflows/cron.ts","../api/yaml-workflows/crud.ts","../api/yaml-workflows/deploy.ts","../api/yaml-workflows/helpers.ts","../api/yaml-workflows/index.ts","../api/yaml-workflows/versions.ts","../bin/ltc.ts","../lib/cli/auth.ts","../lib/cli/client.ts","../lib/cli/compile.ts","../lib/cli/format.ts","../lib/cli/init.ts","../lib/cli/output.ts","../lib/cli/scanner.ts","../lib/cli/types.ts","../lib/cli/commands/escalations.ts","../lib/cli/commands/knowledge.ts","../lib/cli/commands/mcp.ts","../lib/cli/commands/pipelines.ts","../lib/cli/commands/status.ts","../lib/cli/commands/streams.ts","../lib/cli/commands/users.ts","../lib/cli/commands/workflows.ts","../lib/db/index.ts","../lib/db/migrate.ts","../lib/events/callback.ts","../lib/events/index.ts","../lib/events/matching.ts","../lib/events/memory.ts","../lib/events/nats.ts","../lib/events/publish.ts","../lib/events/socketio.ts","../lib/logger/index.ts","../lib/logger/pino.ts","../lib/storage/index.ts","../lib/storage/local.ts","../lib/storage/mime.ts","../lib/storage/s3.ts","../lib/storage/types.ts","../lib/telemetry/honeycomb.ts","../lib/telemetry/index.ts","../modules/auth.ts","../modules/config.ts","../modules/defaults.ts","../modules/ltconfig.ts","../modules/maintenance.ts","../modules/utils.ts","../routes/agents.ts","../routes/auth.ts","../routes/bot-accounts.ts","../routes/capabilities.ts","../routes/controlplane.ts","../routes/dba.ts","../routes/delegation.ts","../routes/docs.ts","../routes/exports.ts","../routes/file-browser.ts","../routes/files.ts","../routes/index.ts","../routes/insight.ts","../routes/knowledge.ts","../routes/maintenance.ts","../routes/mcp-runs.ts","../routes/mcp.ts","../routes/namespaces.ts","../routes/nats-credentials.ts","../routes/oauth.ts","../routes/roles.ts","../routes/settings.ts","../routes/tasks.ts","../routes/topics.ts","../routes/users.ts","../routes/workflow-sets.ts","../routes/escalations/bulk.ts","../routes/escalations/index.ts","../routes/escalations/list.ts","../routes/escalations/resolve.ts","../routes/escalations/single.ts","../routes/workflows/config.ts","../routes/workflows/discovery.ts","../routes/workflows/index.ts","../routes/workflows/invocation.ts","../routes/yaml-workflows/cron.ts","../routes/yaml-workflows/crud.ts","../routes/yaml-workflows/deployment.ts","../routes/yaml-workflows/index.ts","../routes/yaml-workflows/versions.ts","../scripts/process-helpers.ts","../scripts/process.ts","../scripts/token.ts","../sdk/index.ts","../services/dba.ts","../services/hotmesh-utils.ts","../services/workflow-invocation.ts","../services/agent/index.ts","../services/agent/input-mapper.ts","../services/agent/sql.ts","../services/agent/subscription-sql.ts","../services/agent/subscriptions.ts","../services/agent/trigger-registry.ts","../services/auth/bot-api-key.ts","../services/auth/delegation.ts","../services/auth/index.ts","../services/auth/service-token.ts","../services/config/cache.ts","../services/config/index.ts","../services/config/provider.ts","../services/config/read.ts","../services/config/sql.ts","../services/config/write.ts","../services/controlplane/index.ts","../services/controlplane/quorum-bridge.ts","../services/controlplane/sql.ts","../services/controlplane/stream-messages-sql.ts","../services/controlplane/types.ts","../services/cron/index.ts","../services/escalation/bulk.ts","../services/escalation/crud.ts","../services/escalation/index.ts","../services/escalation/queries.ts","../services/escalation/sql.ts","../services/escalation/types.ts","../services/escalation-strategy/default.ts","../services/escalation-strategy/index.ts","../services/escalation-strategy/mcp.ts","../services/export/client.ts","../services/export/index.ts","../services/export/post-process.ts","../services/export/types.ts","../services/iam/activity.ts","../services/iam/bots.ts","../services/iam/context.ts","../services/iam/credentials.ts","../services/iam/envelope.ts","../services/iam/ephemeral.ts","../services/iam/index.ts","../services/iam/principal.ts","../services/iam/resolve.ts","../services/iam/sql.ts","../services/insight/index.ts","../services/insight/prompts.ts","../services/interceptor/activity-interceptor.ts","../services/interceptor/completion.ts","../services/interceptor/context.ts","../services/interceptor/escalation.ts","../services/interceptor/index.ts","../services/interceptor/lifecycle.ts","../services/interceptor/state.ts","../services/interceptor/types.ts","../services/interceptor/activities/config.ts","../services/interceptor/activities/escalation.ts","../services/interceptor/activities/index.ts","../services/interceptor/activities/task.ts","../services/interceptor/activities/workflow.ts","../services/llm/detect.ts","../services/llm/index.ts","../services/llm/translate.ts","../services/llm/types.ts","../services/llm/providers/anthropic.ts","../services/llm/providers/openai.ts","../services/maintenance/index.ts","../services/mcp/adapter.ts","../services/mcp/db.ts","../services/mcp/index.ts","../services/mcp/register-tool.ts","../services/mcp/server-lifecycle.ts","../services/mcp/server-tools.ts","../services/mcp/server.ts","../services/mcp/sql.ts","../services/mcp/types.ts","../services/mcp/workflow-compiler-server.ts","../services/mcp/workflow-server.ts","../services/mcp/client/connection-dispatch.ts","../services/mcp/client/connection-lifecycle.ts","../services/mcp/client/connection-test.ts","../services/mcp/client/connection.ts","../services/mcp/client/index.ts","../services/mcp/client/tools.ts","../services/mcp/db-server/index.ts","../services/mcp/db-server/schemas.ts","../services/mcp/db-server/tools.ts","../services/mcp/playwright-server/index.ts","../services/mcp/playwright-server/lifecycle.ts","../services/mcp/playwright-server/schemas.ts","../services/mcp/playwright-server/tools.ts","../services/mcp-runs/enrichment.ts","../services/mcp-runs/events.ts","../services/mcp-runs/execution-builder.ts","../services/mcp-runs/index.ts","../services/mcp-runs/queries.ts","../services/mcp-runs/sql.ts","../services/mcp-runs/types.ts","../services/namespace/index.ts","../services/namespace/sql.ts","../services/namespace/types.ts","../services/oauth/crypto.ts","../services/oauth/db.ts","../services/oauth/index.ts","../services/oauth/sql.ts","../services/oauth/state.ts","../services/oauth/providers/anthropic.ts","../services/oauth/providers/github.ts","../services/oauth/providers/google.ts","../services/oauth/providers/index.ts","../services/oauth/providers/microsoft.ts","../services/oauth/providers/mock.ts","../services/oauth/providers/registry.ts","../services/oauth/providers/types.ts","../services/orchestrator/condition.ts","../services/orchestrator/index.ts","../services/orchestrator/types.ts","../services/role/index.ts","../services/role/sql.ts","../services/role/types.ts","../services/task/crud.ts","../services/task/index.ts","../services/task/process.ts","../services/task/resolve.ts","../services/task/sql.ts","../services/task/types.ts","../services/topics/index.ts","../services/topics/sql.ts","../services/topics/system-topics.ts","../services/user/auth.ts","../services/user/crud.ts","../services/user/index.ts","../services/user/rbac.ts","../services/user/roles.ts","../services/user/sql.ts","../services/user/types.ts","../services/workers/registry.ts","../services/workflow-sets/db.ts","../services/workflow-sets/index.ts","../services/workflow-sets/sql.ts","../services/yaml-workflow/builder-regenerate.ts","../services/yaml-workflow/db-utils.ts","../services/yaml-workflow/db-versions.ts","../services/yaml-workflow/db.ts","../services/yaml-workflow/deployer-helpers.ts","../services/yaml-workflow/deployer.ts","../services/yaml-workflow/generator.ts","../services/yaml-workflow/index.ts","../services/yaml-workflow/input-analyzer-helpers.ts","../services/yaml-workflow/input-analyzer.ts","../services/yaml-workflow/invoke.ts","../services/yaml-workflow/sql.ts","../services/yaml-workflow/types.ts","../services/yaml-workflow/durable-compiler/index.ts","../services/yaml-workflow/durable-compiler/parser.ts","../services/yaml-workflow/durable-compiler/prompts.ts","../services/yaml-workflow/durable-compiler/types.ts","../services/yaml-workflow/pattern-detector/array-source.ts","../services/yaml-workflow/pattern-detector/collapse.ts","../services/yaml-workflow/pattern-detector/index.ts","../services/yaml-workflow/pattern-detector/run-detection.ts","../services/yaml-workflow/pattern-detector/types.ts","../services/yaml-workflow/pipeline/analyze.ts","../services/yaml-workflow/pipeline/extract-helpers.ts","../services/yaml-workflow/pipeline/extract.ts","../services/yaml-workflow/pipeline/index.ts","../services/yaml-workflow/pipeline/prompt-templates.ts","../services/yaml-workflow/pipeline/prompts.ts","../services/yaml-workflow/pipeline/validate.ts","../services/yaml-workflow/pipeline/build/dag-assembly.ts","../services/yaml-workflow/pipeline/build/dag.ts","../services/yaml-workflow/pipeline/build/index.ts","../services/yaml-workflow/pipeline/build/iteration.ts","../services/yaml-workflow/pipeline/build/metadata.ts","../services/yaml-workflow/pipeline/build/transform.ts","../services/yaml-workflow/pipeline/build/utils.ts","../services/yaml-workflow/pipeline/build/wiring.ts","../services/yaml-workflow/pipeline/compile/index.ts","../services/yaml-workflow/pipeline/compile/llm-call.ts","../services/yaml-workflow/pipeline/compile/parse-plan.ts","../services/yaml-workflow/pipeline/compile/summarize.ts","../services/yaml-workflow/workers/callbacks.ts","../services/yaml-workflow/workers/events.ts","../services/yaml-workflow/workers/index.ts","../services/yaml-workflow/workers/register.ts","../services/yaml-workflow/workers/scope.ts","../start/adapters.ts","../start/config.ts","../start/index.ts","../start/server.ts","../start/socket-auth.ts","../start/workers.ts","../system/index.ts","../system/activities/claude-code.ts","../system/activities/file-storage.ts","../system/activities/http.ts","../system/activities/knowledge.ts","../system/activities/oauth.ts","../system/activities/schema-exchange.ts","../system/activities/sql.ts","../system/activities/triage/cache.ts","../system/activities/triage/context.ts","../system/activities/triage/discovery.ts","../system/activities/triage/index.ts","../system/activities/triage/llm.ts","../system/activities/triage/tools.ts","../system/mcp-servers/claude-code.ts","../system/mcp-servers/docs.ts","../system/mcp-servers/events.ts","../system/mcp-servers/file-storage.ts","../system/mcp-servers/http-fetch.ts","../system/mcp-servers/human-queue-schemas.ts","../system/mcp-servers/human-queue.ts","../system/mcp-servers/knowledge.ts","../system/mcp-servers/oauth.ts","../system/mcp-servers/schema-exchange.ts","../system/mcp-servers/translation.ts","../system/mcp-servers/vision-prompts.ts","../system/mcp-servers/vision.ts","../system/mcp-servers/workflow-compiler.ts","../system/mcp-servers/workflow.ts","../system/mcp-servers/admin/escalations.ts","../system/mcp-servers/admin/index.ts","../system/mcp-servers/admin/maintenance.ts","../system/mcp-servers/admin/mcp-servers.ts","../system/mcp-servers/admin/schemas.ts","../system/mcp-servers/admin/tasks.ts","../system/mcp-servers/admin/users.ts","../system/mcp-servers/admin/workflow-config.ts","../system/mcp-servers/admin/workflows.ts","../system/mcp-servers/admin/yaml-workflows.ts","../system/mcp-servers/db-query/index.ts","../system/mcp-servers/db-query/schemas.ts","../system/mcp-servers/db-query/tools.ts","../system/mcp-servers/playwright/browser-lifecycle.ts","../system/mcp-servers/playwright/index.ts","../system/mcp-servers/playwright/schemas.ts","../system/mcp-servers/playwright/tools-atomic.ts","../system/mcp-servers/playwright/tools-navigation.ts","../system/mcp-servers/playwright/tools-page-interaction.ts","../system/mcp-servers/playwright/tools-run-script.ts","../system/mcp-servers/playwright/types.ts","../system/mcp-servers/playwright/vision-helper.ts","../system/mcp-servers/playwright-cli/helpers.ts","../system/mcp-servers/playwright-cli/index.ts","../system/mcp-servers/playwright-cli/schemas.ts","../system/mcp-servers/playwright-cli/tools-auth.ts","../system/mcp-servers/playwright-cli/tools-capture.ts","../system/seed/index.ts","../system/seed/tool-manifests-admin.ts","../system/seed/tool-manifests-browser.ts","../system/seed/tool-manifests-data.ts","../system/seed/tool-manifests-escalation.ts","../system/seed/tool-manifests-events.ts","../system/seed/tool-manifests-knowledge.ts","../system/seed/tool-manifests-workflows.ts","../system/workflows/tool-result-guard.ts","../system/workflows/mcp-deterministic/activities.ts","../system/workflows/mcp-deterministic/index.ts","../system/workflows/mcp-query/index.ts","../system/workflows/mcp-query/prompts.ts","../system/workflows/mcp-query/strategy-advisors.ts","../system/workflows/mcp-query/types.ts","../system/workflows/mcp-query/activities/caches.ts","../system/workflows/mcp-query/activities/discovery.ts","../system/workflows/mcp-query/activities/index.ts","../system/workflows/mcp-query/activities/llm.ts","../system/workflows/mcp-query/activities/tool-executor.ts","../system/workflows/mcp-query/activities/tool-loader.ts","../system/workflows/mcp-query-router/activities.ts","../system/workflows/mcp-query-router/index.ts","../system/workflows/mcp-query-router/prompts.ts","../system/workflows/mcp-triage/activities-proxy.ts","../system/workflows/mcp-triage/index.ts","../system/workflows/mcp-triage/prompts.ts","../system/workflows/mcp-triage/response-builders.ts","../system/workflows/mcp-triage/response.ts","../system/workflows/mcp-triage/types.ts","../system/workflows/mcp-triage-deterministic/activities.ts","../system/workflows/mcp-triage-deterministic/index.ts","../system/workflows/mcp-triage-router/activities.ts","../system/workflows/mcp-triage-router/index.ts","../system/workflows/mcp-workflow-builder/index.ts","../system/workflows/mcp-workflow-builder/prompts.ts","../system/workflows/mcp-workflow-builder/activities/caches.ts","../system/workflows/mcp-workflow-builder/activities/index.ts","../system/workflows/mcp-workflow-builder/activities/llm.ts","../system/workflows/mcp-workflow-builder/activities/tool-loader.ts","../system/workflows/mcp-workflow-planner/index.ts","../system/workflows/mcp-workflow-planner/prompts.ts","../system/workflows/mcp-workflow-planner/activities/analyze.ts","../system/workflows/mcp-workflow-planner/activities/index.ts","../system/workflows/mcp-workflow-planner/activities/persist.ts","../system/workflows/mcp-workflow-planner/activities/plan.ts","../system/workflows/shared/discovery.ts","../system/workflows/shared/index.ts","../system/workflows/shared/llm-caller.ts","../system/workflows/shared/prompts.ts","../system/workflows/shared/strategy-advisors.ts","../system/workflows/shared/tool-executor.ts","../system/workflows/shared/tool-loader.ts","../system/workflows/shared/types.ts","../types/agent.ts","../types/auth.ts","../types/config.ts","../types/delegation.ts","../types/discovery.ts","../types/envelope.ts","../types/escalation-strategy.ts","../types/escalation.ts","../types/events.ts","../types/export.ts","../types/express.d.ts","../types/index.ts","../types/logger.ts","../types/maintenance.ts","../types/mcp.ts","../types/oauth.ts","../types/sdk.ts","../types/startup.ts","../types/task.ts","../types/telemetry.ts","../types/tool-context.ts","../types/user.ts","../types/workflow-set.ts","../types/workflow.ts","../types/yaml-workflow.ts","../workers/index.ts"],"version":"5.9.3"}
@@ -40,8 +40,8 @@ export interface AgentBehaviors {
40
40
  escalationRules?: Record<string, any>;
41
41
  }
42
42
  export interface LTAgent {
43
+ /** Agent identifier — a human-readable kebab-case name (e.g. 'content-triage') */
43
44
  id: string;
44
- name: string;
45
45
  description?: string;
46
46
  status: LTAgentStatus;
47
47
  /** Service account (bot user) this agent runs as */
@@ -1,2 +1,2 @@
1
- import{r as n,j as o}from"./index-CCOSf1PY.js";import{c as m}from"./tasks-Cc-QoITQ.js";import{f as d}from"./useEventHooks-VaJ52jMm.js";import{u}from"./mcp-CsLJ5SRm.js";import{P as c}from"./PageHeaderWithStats-C0PCY3aJ.js";import"./vendor-query-DLp59M9_.js";import"./vendor-react-Co3Y8ikm.js";import"./vendor-icons-CBOM6Es0.js";function N(){var e;d();const{data:a}=m({limit:1}),{data:t}=n({status:"pending",limit:1}),{data:s}=u(),r=((e=s==null?void 0:s.servers)==null?void 0:e.filter(l=>l.status==="connected").length)??0,i=s?`${r}/${s.total}`:"—";return o.jsxDEV("div",{children:o.jsxDEV(c,{title:"Admin",stats:[{label:"Tasks",value:(a==null?void 0:a.total)??"—"},{label:"Pending Escalations",value:(t==null?void 0:t.total)??"—",dotClass:"bg-status-pending"},{label:"MCP Servers",value:i},{label:"System",value:"Healthy",dotClass:"bg-status-success"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/AdminDashboard.tsx",lineNumber:19,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/AdminDashboard.tsx",lineNumber:18,columnNumber:5},this)}export{N as AdminDashboard};
2
- //# sourceMappingURL=AdminDashboard-CbeSejVX.js.map
1
+ import{r as n,j as o}from"./index-MnRuwfHN.js";import{c as m}from"./tasks-CIuWkHLG.js";import{f as d}from"./useEventHooks-xXspN8_9.js";import{u}from"./mcp-BTZ2ex4x.js";import{P as c}from"./PageHeaderWithStats-Fy6tGBaa.js";import"./vendor-query-DLp59M9_.js";import"./vendor-react-Co3Y8ikm.js";import"./vendor-icons-YdqUbzg6.js";function N(){var e;d();const{data:a}=m({limit:1}),{data:t}=n({status:"pending",limit:1}),{data:s}=u(),r=((e=s==null?void 0:s.servers)==null?void 0:e.filter(l=>l.status==="connected").length)??0,i=s?`${r}/${s.total}`:"—";return o.jsxDEV("div",{children:o.jsxDEV(c,{title:"Admin",stats:[{label:"Tasks",value:(a==null?void 0:a.total)??"—"},{label:"Pending Escalations",value:(t==null?void 0:t.total)??"—",dotClass:"bg-status-pending"},{label:"MCP Servers",value:i},{label:"System",value:"Healthy",dotClass:"bg-status-success"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/AdminDashboard.tsx",lineNumber:19,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/AdminDashboard.tsx",lineNumber:18,columnNumber:5},this)}export{N as AdminDashboard};
2
+ //# sourceMappingURL=AdminDashboard-BBWJAsjl.js.map