@hotmeshio/long-tail 0.1.6 → 0.1.8

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 (384) hide show
  1. package/README.md +47 -5
  2. package/build/api/auth.d.ts +16 -0
  3. package/build/api/auth.js +53 -0
  4. package/build/api/bot-accounts.d.ts +137 -0
  5. package/build/api/bot-accounts.js +302 -0
  6. package/build/api/controlplane.d.ts +68 -0
  7. package/build/api/controlplane.js +158 -0
  8. package/build/api/dba.d.ts +42 -0
  9. package/build/api/dba.js +95 -0
  10. package/build/api/escalations.d.ts +271 -0
  11. package/build/api/escalations.js +892 -0
  12. package/build/api/exports.d.ts +90 -0
  13. package/build/api/exports.js +204 -0
  14. package/build/api/index.d.ts +18 -0
  15. package/build/api/index.js +54 -0
  16. package/build/api/insight.d.ts +86 -0
  17. package/build/api/insight.js +147 -0
  18. package/build/api/maintenance.d.ts +22 -0
  19. package/build/api/maintenance.js +43 -0
  20. package/build/api/mcp-runs.d.ts +43 -0
  21. package/build/api/mcp-runs.js +89 -0
  22. package/build/api/mcp.d.ts +160 -0
  23. package/build/api/mcp.js +320 -0
  24. package/build/api/namespaces.d.ts +20 -0
  25. package/build/{routes/escalations/helpers.js → api/namespaces.js} +35 -10
  26. package/build/api/roles.d.ts +88 -0
  27. package/build/api/roles.js +217 -0
  28. package/build/api/settings.d.ts +10 -0
  29. package/build/api/settings.js +43 -0
  30. package/build/api/tasks.d.ts +70 -0
  31. package/build/api/tasks.js +139 -0
  32. package/build/api/users.d.ts +115 -0
  33. package/build/api/users.js +228 -0
  34. package/build/api/workflow-sets.d.ts +77 -0
  35. package/build/api/workflow-sets.js +170 -0
  36. package/build/api/workflows.d.ts +158 -0
  37. package/build/api/workflows.js +407 -0
  38. package/build/api/yaml-workflows.d.ts +282 -0
  39. package/build/api/yaml-workflows.js +751 -0
  40. package/build/examples/types/envelopes.d.ts +27 -0
  41. package/build/examples/types/index.d.ts +1 -1
  42. package/build/examples/workers.js +8 -0
  43. package/build/examples/workflows/assembly-line/activities.d.ts +28 -0
  44. package/build/examples/workflows/assembly-line/activities.js +53 -0
  45. package/build/examples/workflows/assembly-line/index.d.ts +17 -0
  46. package/build/examples/workflows/assembly-line/index.js +60 -0
  47. package/build/examples/workflows/assembly-line/iterator.d.ts +12 -0
  48. package/build/examples/workflows/assembly-line/iterator.js +54 -0
  49. package/build/examples/workflows/assembly-line/reverter.d.ts +18 -0
  50. package/build/examples/workflows/assembly-line/reverter.js +89 -0
  51. package/build/examples/workflows/assembly-line/types.d.ts +25 -0
  52. package/build/examples/workflows/assembly-line/types.js +8 -0
  53. package/build/examples/workflows/assembly-line/worker.d.ts +13 -0
  54. package/build/examples/workflows/assembly-line/worker.js +81 -0
  55. package/build/index.d.ts +4 -0
  56. package/build/index.js +6 -1
  57. package/build/lib/db/schemas/004_workflow_sets.sql +29 -0
  58. package/build/lib/db/schemas/005_unique_graph_topic.sql +7 -0
  59. package/build/lib/db/schemas/011_system_workflow_configs.sql +7 -0
  60. package/build/lib/events/callback.d.ts +41 -0
  61. package/build/lib/events/callback.js +98 -0
  62. package/build/modules/config.js +1 -1
  63. package/build/routes/auth.js +37 -36
  64. package/build/routes/bot-accounts.js +34 -164
  65. package/build/routes/controlplane.js +20 -60
  66. package/build/routes/dba.js +18 -28
  67. package/build/routes/escalations/bulk.js +17 -192
  68. package/build/routes/escalations/list.js +51 -75
  69. package/build/routes/escalations/resolve.js +3 -193
  70. package/build/routes/escalations/single.js +13 -122
  71. package/build/routes/exports.js +44 -95
  72. package/build/routes/index.js +2 -0
  73. package/build/routes/insight.js +46 -88
  74. package/build/routes/maintenance.js +41 -17
  75. package/build/routes/mcp-runs.js +52 -60
  76. package/build/routes/mcp.js +49 -177
  77. package/build/routes/namespaces.js +9 -20
  78. package/build/routes/roles.js +23 -97
  79. package/build/routes/settings.js +37 -25
  80. package/build/routes/tasks.js +28 -64
  81. package/build/routes/users.js +24 -113
  82. package/build/routes/workflow-sets.d.ts +2 -0
  83. package/build/routes/workflow-sets.js +98 -0
  84. package/build/routes/workflows/config.js +23 -57
  85. package/build/routes/workflows/discovery.js +11 -85
  86. package/build/routes/workflows/invocation.js +28 -90
  87. package/build/routes/yaml-workflows/cron.js +12 -61
  88. package/build/routes/yaml-workflows/crud.js +30 -223
  89. package/build/routes/yaml-workflows/deployment.js +15 -115
  90. package/build/routes/yaml-workflows/versions.js +20 -58
  91. package/build/sdk/index.d.ts +338 -0
  92. package/build/sdk/index.js +299 -0
  93. package/build/services/controlplane/index.d.ts +1 -2
  94. package/build/services/controlplane/index.js +3 -3
  95. package/build/services/controlplane/sql.d.ts +2 -2
  96. package/build/services/controlplane/sql.js +4 -5
  97. package/build/services/controlplane/types.d.ts +1 -0
  98. package/build/services/export/index.js +6 -1
  99. package/build/services/hotmesh-utils.js +2 -4
  100. package/build/services/insight/index.d.ts +7 -0
  101. package/build/services/insight/index.js +30 -0
  102. package/build/services/mcp/client/tools.js +13 -1
  103. package/build/services/mcp-runs/sql.js +1 -1
  104. package/build/services/workflow-invocation.d.ts +15 -2
  105. package/build/services/workflow-invocation.js +11 -6
  106. package/build/services/workflow-sets/db.d.ts +16 -0
  107. package/build/services/workflow-sets/db.js +78 -0
  108. package/build/services/workflow-sets/index.d.ts +1 -0
  109. package/build/services/workflow-sets/index.js +11 -0
  110. package/build/services/workflow-sets/sql.d.ts +6 -0
  111. package/build/services/workflow-sets/sql.js +24 -0
  112. package/build/services/yaml-workflow/db-utils.d.ts +1 -0
  113. package/build/services/yaml-workflow/db-utils.js +4 -0
  114. package/build/services/yaml-workflow/db.d.ts +5 -0
  115. package/build/services/yaml-workflow/db.js +17 -0
  116. package/build/services/yaml-workflow/pipeline/build/wiring.js +14 -1
  117. package/build/services/yaml-workflow/pipeline/prompts.d.ts +1 -1
  118. package/build/services/yaml-workflow/pipeline/prompts.js +1 -1
  119. package/build/services/yaml-workflow/sql.d.ts +2 -1
  120. package/build/services/yaml-workflow/sql.js +8 -3
  121. package/build/services/yaml-workflow/types.d.ts +3 -0
  122. package/build/services/yaml-workflow/workers/callbacks.js +7 -1
  123. package/build/services/yaml-workflow/workers/register.js +7 -0
  124. package/build/start/adapters.js +4 -0
  125. package/build/system/index.js +6 -0
  126. package/build/system/mcp-servers/knowledge.js +1 -1
  127. package/build/system/seed/server-definitions.js +2 -1
  128. package/build/system/workflows/mcp-workflow-builder/activities/index.d.ts +1 -1
  129. package/build/system/workflows/mcp-workflow-builder/activities/index.js +2 -1
  130. package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.d.ts +6 -0
  131. package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.js +26 -0
  132. package/build/system/workflows/mcp-workflow-builder/index.js +26 -2
  133. package/build/system/workflows/mcp-workflow-builder/prompts.js +104 -35
  134. package/build/system/workflows/mcp-workflow-planner/activities/analyze.d.ts +11 -0
  135. package/build/system/workflows/mcp-workflow-planner/activities/analyze.js +36 -0
  136. package/build/system/workflows/mcp-workflow-planner/activities/index.d.ts +3 -0
  137. package/build/system/workflows/mcp-workflow-planner/activities/index.js +12 -0
  138. package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +19 -0
  139. package/build/system/workflows/mcp-workflow-planner/activities/persist.js +55 -0
  140. package/build/system/workflows/mcp-workflow-planner/activities/plan.d.ts +10 -0
  141. package/build/system/workflows/mcp-workflow-planner/activities/plan.js +43 -0
  142. package/build/system/workflows/mcp-workflow-planner/index.d.ts +7 -0
  143. package/build/system/workflows/mcp-workflow-planner/index.js +152 -0
  144. package/build/system/workflows/mcp-workflow-planner/prompts.d.ts +7 -0
  145. package/build/system/workflows/mcp-workflow-planner/prompts.js +77 -0
  146. package/build/tsconfig.tsbuildinfo +1 -1
  147. package/build/types/index.d.ts +1 -0
  148. package/build/types/sdk.d.ts +27 -0
  149. package/build/types/sdk.js +2 -0
  150. package/build/types/workflow-set.d.ts +44 -0
  151. package/build/types/workflow-set.js +5 -0
  152. package/dashboard/dist/assets/{AdminDashboard-BXkKGkb5.js → AdminDashboard-B15jSEV2.js} +2 -2
  153. package/dashboard/dist/assets/{AdminDashboard-BXkKGkb5.js.map → AdminDashboard-B15jSEV2.js.map} +1 -1
  154. package/dashboard/dist/assets/{AvailableEscalationsPage-DcH592mc.js → AvailableEscalationsPage-0V2yvKak.js} +2 -2
  155. package/dashboard/dist/assets/{AvailableEscalationsPage-DcH592mc.js.map → AvailableEscalationsPage-0V2yvKak.js.map} +1 -1
  156. package/dashboard/dist/assets/BotPicker-B4UxHcek.js +2 -0
  157. package/dashboard/dist/assets/{BotPicker-A6LtzyuO.js.map → BotPicker-B4UxHcek.js.map} +1 -1
  158. package/dashboard/dist/assets/{CollapsibleSection-C7nL2_mv.js → CollapsibleSection-BBexNWVd.js} +2 -2
  159. package/dashboard/dist/assets/{CollapsibleSection-C7nL2_mv.js.map → CollapsibleSection-BBexNWVd.js.map} +1 -1
  160. package/dashboard/dist/assets/{ConfirmDeleteModal-CWFwJrSl.js → ConfirmDeleteModal-DlPDJSq_.js} +2 -2
  161. package/dashboard/dist/assets/{ConfirmDeleteModal-CWFwJrSl.js.map → ConfirmDeleteModal-DlPDJSq_.js.map} +1 -1
  162. package/dashboard/dist/assets/{CopyableId-DbZ5c3jh.js → CopyableId-BxHW1ahb.js} +2 -2
  163. package/dashboard/dist/assets/{CopyableId-DbZ5c3jh.js.map → CopyableId-BxHW1ahb.js.map} +1 -1
  164. package/dashboard/dist/assets/{CredentialsPage-ClWkmLPu.js → CredentialsPage-Bp_Y1Szk.js} +2 -2
  165. package/dashboard/dist/assets/{CredentialsPage-ClWkmLPu.js.map → CredentialsPage-Bp_Y1Szk.js.map} +1 -1
  166. package/dashboard/dist/assets/{CustomDurationPicker-CtH2hReF.js → CustomDurationPicker-ByBFqXSO.js} +2 -2
  167. package/dashboard/dist/assets/{CustomDurationPicker-CtH2hReF.js.map → CustomDurationPicker-ByBFqXSO.js.map} +1 -1
  168. package/dashboard/dist/assets/{DataTable-CM5ZcpPi.js → DataTable-DyIXg-tQ.js} +2 -2
  169. package/dashboard/dist/assets/{DataTable-CM5ZcpPi.js.map → DataTable-DyIXg-tQ.js.map} +1 -1
  170. package/dashboard/dist/assets/{ElapsedCell-CwqavyeC.js → ElapsedCell-BgnA0qpS.js} +2 -2
  171. package/dashboard/dist/assets/{ElapsedCell-CwqavyeC.js.map → ElapsedCell-BgnA0qpS.js.map} +1 -1
  172. package/dashboard/dist/assets/{EmptyState-BBn78pmm.js → EmptyState-DlMImvgm.js} +2 -2
  173. package/dashboard/dist/assets/{EmptyState-BBn78pmm.js.map → EmptyState-DlMImvgm.js.map} +1 -1
  174. package/dashboard/dist/assets/{EscalationsOverview-BcJ2E3X7.js → EscalationsOverview-D90kdfw1.js} +2 -2
  175. package/dashboard/dist/assets/{EscalationsOverview-BcJ2E3X7.js.map → EscalationsOverview-D90kdfw1.js.map} +1 -1
  176. package/dashboard/dist/assets/{EventTable-C1en_KZ0.js → EventTable-BNxtlgNz.js} +2 -2
  177. package/dashboard/dist/assets/{EventTable-C1en_KZ0.js.map → EventTable-BNxtlgNz.js.map} +1 -1
  178. package/dashboard/dist/assets/{FilterBar-CZTlrLQT.js → FilterBar-BTiaAhCx.js} +2 -2
  179. package/dashboard/dist/assets/{FilterBar-CZTlrLQT.js.map → FilterBar-BTiaAhCx.js.map} +1 -1
  180. package/dashboard/dist/assets/{ListToolbar-Cdbsapig.js → ListToolbar-BUcagSCn.js} +2 -2
  181. package/dashboard/dist/assets/{ListToolbar-Cdbsapig.js.map → ListToolbar-BUcagSCn.js.map} +1 -1
  182. package/dashboard/dist/assets/{McpOverview-CSpEJxKa.js → McpOverview-B-tCvz8C.js} +2 -2
  183. package/dashboard/dist/assets/{McpOverview-CSpEJxKa.js.map → McpOverview-B-tCvz8C.js.map} +1 -1
  184. package/dashboard/dist/assets/McpQueryDetailPage-DPlF1wYb.js +5 -0
  185. package/dashboard/dist/assets/McpQueryDetailPage-DPlF1wYb.js.map +1 -0
  186. package/dashboard/dist/assets/McpQueryPage-Bz7AdcfR.js +2 -0
  187. package/dashboard/dist/assets/McpQueryPage-Bz7AdcfR.js.map +1 -0
  188. package/dashboard/dist/assets/{McpRunDetailPage-9xdxgG4d.js → McpRunDetailPage-Di_qpL2V.js} +2 -2
  189. package/dashboard/dist/assets/{McpRunDetailPage-9xdxgG4d.js.map → McpRunDetailPage-Di_qpL2V.js.map} +1 -1
  190. package/dashboard/dist/assets/{McpRunsPage-wWLqHsd4.js → McpRunsPage-BBgybBEa.js} +2 -2
  191. package/dashboard/dist/assets/{McpRunsPage-wWLqHsd4.js.map → McpRunsPage-BBgybBEa.js.map} +1 -1
  192. package/dashboard/dist/assets/{Modal-kB_P7ZOr.js → Modal-CaJ0gTEa.js} +2 -2
  193. package/dashboard/dist/assets/{Modal-kB_P7ZOr.js.map → Modal-CaJ0gTEa.js.map} +1 -1
  194. package/dashboard/dist/assets/OperatorDashboard-DDfMmrmR.js +2 -0
  195. package/dashboard/dist/assets/{OperatorDashboard-jc0vrgDI.js.map → OperatorDashboard-DDfMmrmR.js.map} +1 -1
  196. package/dashboard/dist/assets/{PageHeader-NkOeBR05.js → PageHeader-C5D-G5rp.js} +2 -2
  197. package/dashboard/dist/assets/{PageHeader-NkOeBR05.js.map → PageHeader-C5D-G5rp.js.map} +1 -1
  198. package/dashboard/dist/assets/{PageHeaderWithStats-ywNhrmFK.js → PageHeaderWithStats-DCa2eZh2.js} +2 -2
  199. package/dashboard/dist/assets/{PageHeaderWithStats-ywNhrmFK.js.map → PageHeaderWithStats-DCa2eZh2.js.map} +1 -1
  200. package/dashboard/dist/assets/{PriorityBadge-B2MQbSxy.js → PriorityBadge-DTHq6OUZ.js} +2 -2
  201. package/dashboard/dist/assets/{PriorityBadge-B2MQbSxy.js.map → PriorityBadge-DTHq6OUZ.js.map} +1 -1
  202. package/dashboard/dist/assets/{ProcessDetailPage-B7z7IdqE.js → ProcessDetailPage-fC4dhrd0.js} +2 -2
  203. package/dashboard/dist/assets/{ProcessDetailPage-B7z7IdqE.js.map → ProcessDetailPage-fC4dhrd0.js.map} +1 -1
  204. package/dashboard/dist/assets/{ProcessesListPage-C-uHadO6.js → ProcessesListPage-CL2MY8uD.js} +2 -2
  205. package/dashboard/dist/assets/{ProcessesListPage-C-uHadO6.js.map → ProcessesListPage-CL2MY8uD.js.map} +1 -1
  206. package/dashboard/dist/assets/{RolePill-C1dgC-fK.js → RolePill-kgKPANly.js} +2 -2
  207. package/dashboard/dist/assets/{RolePill-C1dgC-fK.js.map → RolePill-kgKPANly.js.map} +1 -1
  208. package/dashboard/dist/assets/{RolesPage-BSxrD1vm.js → RolesPage-Be2lXTHD.js} +2 -2
  209. package/dashboard/dist/assets/{RolesPage-BSxrD1vm.js.map → RolesPage-Be2lXTHD.js.map} +1 -1
  210. package/dashboard/dist/assets/{RowActions-lYaHGI-v.js → RowActions-DIzJCwqR.js} +2 -2
  211. package/dashboard/dist/assets/{RowActions-lYaHGI-v.js.map → RowActions-DIzJCwqR.js.map} +1 -1
  212. package/dashboard/dist/assets/{StatCard-v2TiITVr.js → StatCard-CRi2Jy6t.js} +2 -2
  213. package/dashboard/dist/assets/{StatCard-v2TiITVr.js.map → StatCard-CRi2Jy6t.js.map} +1 -1
  214. package/dashboard/dist/assets/{StatusBadge-DWlxevgG.js → StatusBadge-BETI_8Mr.js} +2 -2
  215. package/dashboard/dist/assets/{StatusBadge-DWlxevgG.js.map → StatusBadge-BETI_8Mr.js.map} +1 -1
  216. package/dashboard/dist/assets/{StepIndicator-CRM4ft28.js → StepIndicator-DjpMqCjz.js} +2 -2
  217. package/dashboard/dist/assets/{StepIndicator-CRM4ft28.js.map → StepIndicator-DjpMqCjz.js.map} +1 -1
  218. package/dashboard/dist/assets/{StickyPagination-CF0EToEU.js → StickyPagination-BZbExQ9t.js} +2 -2
  219. package/dashboard/dist/assets/{StickyPagination-CF0EToEU.js.map → StickyPagination-BZbExQ9t.js.map} +1 -1
  220. package/dashboard/dist/assets/{SwimlaneTimeline-CNlj7fgg.js → SwimlaneTimeline-DZthQyhR.js} +2 -2
  221. package/dashboard/dist/assets/{SwimlaneTimeline-CNlj7fgg.js.map → SwimlaneTimeline-DZthQyhR.js.map} +1 -1
  222. package/dashboard/dist/assets/{TagInput-CH8qMGhC.js → TagInput-CukbOfYn.js} +2 -2
  223. package/dashboard/dist/assets/{TagInput-CH8qMGhC.js.map → TagInput-CukbOfYn.js.map} +1 -1
  224. package/dashboard/dist/assets/{TaskDetailPage-CdWo-6mu.js → TaskDetailPage-CIZHIKo9.js} +2 -2
  225. package/dashboard/dist/assets/{TaskDetailPage-CdWo-6mu.js.map → TaskDetailPage-CIZHIKo9.js.map} +1 -1
  226. package/dashboard/dist/assets/{TaskQueuePill-BPj4ogVG.js → TaskQueuePill-Q7DGoysj.js} +2 -2
  227. package/dashboard/dist/assets/{TaskQueuePill-BPj4ogVG.js.map → TaskQueuePill-Q7DGoysj.js.map} +1 -1
  228. package/dashboard/dist/assets/{TasksListPage-CtRkMpKU.js → TasksListPage-CsC9wjb0.js} +2 -2
  229. package/dashboard/dist/assets/{TasksListPage-CtRkMpKU.js.map → TasksListPage-CsC9wjb0.js.map} +1 -1
  230. package/dashboard/dist/assets/{TimeAgo-Di1a3X5P.js → TimeAgo-BcOOnJeH.js} +2 -2
  231. package/dashboard/dist/assets/{TimeAgo-Di1a3X5P.js.map → TimeAgo-BcOOnJeH.js.map} +1 -1
  232. package/dashboard/dist/assets/{TimestampCell-CqrXql-S.js → TimestampCell-CEMapYDQ.js} +2 -2
  233. package/dashboard/dist/assets/{TimestampCell-CqrXql-S.js.map → TimestampCell-CEMapYDQ.js.map} +1 -1
  234. package/dashboard/dist/assets/{UserName-BUFYCnRa.js → UserName-BHoN7iRL.js} +2 -2
  235. package/dashboard/dist/assets/{UserName-BUFYCnRa.js.map → UserName-BHoN7iRL.js.map} +1 -1
  236. package/dashboard/dist/assets/{WorkflowExecutionPage-25iusMml.js → WorkflowExecutionPage-DawKl1LT.js} +2 -2
  237. package/dashboard/dist/assets/{WorkflowExecutionPage-25iusMml.js.map → WorkflowExecutionPage-DawKl1LT.js.map} +1 -1
  238. package/dashboard/dist/assets/WorkflowPill-CP84Vqeg.js +2 -0
  239. package/dashboard/dist/assets/{WorkflowPill-DPKOcbf4.js.map → WorkflowPill-CP84Vqeg.js.map} +1 -1
  240. package/dashboard/dist/assets/{WorkflowsDashboard-BgxslssH.js → WorkflowsDashboard-QrvVFxtQ.js} +2 -2
  241. package/dashboard/dist/assets/{WorkflowsDashboard-BgxslssH.js.map → WorkflowsDashboard-QrvVFxtQ.js.map} +1 -1
  242. package/dashboard/dist/assets/{WorkflowsOverview-Doe5L-Re.js → WorkflowsOverview-DuhAi_OY.js} +2 -2
  243. package/dashboard/dist/assets/{WorkflowsOverview-Doe5L-Re.js.map → WorkflowsOverview-DuhAi_OY.js.map} +1 -1
  244. package/dashboard/dist/assets/YamlWorkflowsPage-Dc9xw82a.js +2 -0
  245. package/dashboard/dist/assets/YamlWorkflowsPage-Dc9xw82a.js.map +1 -0
  246. package/dashboard/dist/assets/{bots-Bi2_O1Ts.js → bots-Dny-rmmI.js} +2 -2
  247. package/dashboard/dist/assets/{bots-Bi2_O1Ts.js.map → bots-Dny-rmmI.js.map} +1 -1
  248. package/dashboard/dist/assets/{escalation-Ck1KlLkT.js → escalation-CV0sKNH5.js} +2 -2
  249. package/dashboard/dist/assets/{escalation-Ck1KlLkT.js.map → escalation-CV0sKNH5.js.map} +1 -1
  250. package/dashboard/dist/assets/{escalation-columns-ohDsj2eJ.js → escalation-columns-30CKyoWI.js} +2 -2
  251. package/dashboard/dist/assets/{escalation-columns-ohDsj2eJ.js.map → escalation-columns-30CKyoWI.js.map} +1 -1
  252. package/dashboard/dist/assets/{helpers-BoD2SgUY.js → helpers-C1-30CzH.js} +2 -2
  253. package/dashboard/dist/assets/{helpers-BoD2SgUY.js.map → helpers-C1-30CzH.js.map} +1 -1
  254. package/dashboard/dist/assets/helpers-C1jaRD-d.js +2 -0
  255. package/dashboard/dist/assets/helpers-C1jaRD-d.js.map +1 -0
  256. package/dashboard/dist/assets/{index-FuohTtaM.js → index-BUVQ6wmy.js} +3 -3
  257. package/dashboard/dist/assets/{index-FuohTtaM.js.map → index-BUVQ6wmy.js.map} +1 -1
  258. package/dashboard/dist/assets/index-CxVB7F4X.js +2 -0
  259. package/dashboard/dist/assets/{index-Dk2Q51o0.js.map → index-CxVB7F4X.js.map} +1 -1
  260. package/dashboard/dist/assets/{index-BEtLIsML.js → index-D-oCWCAS.js} +2 -2
  261. package/dashboard/dist/assets/{index-BEtLIsML.js.map → index-D-oCWCAS.js.map} +1 -1
  262. package/dashboard/dist/assets/index-D0wPM3Ck.js +2 -0
  263. package/dashboard/dist/assets/{index-BpT-6WgJ.js.map → index-D0wPM3Ck.js.map} +1 -1
  264. package/dashboard/dist/assets/{index-Bn2xHDr8.js → index-DHgnkykj.js} +3 -3
  265. package/dashboard/dist/assets/{index-Bn2xHDr8.js.map → index-DHgnkykj.js.map} +1 -1
  266. package/dashboard/dist/assets/{index-D3NyVADW.js → index-D_aJBEAG.js} +2 -2
  267. package/dashboard/dist/assets/index-D_aJBEAG.js.map +1 -0
  268. package/dashboard/dist/assets/{index-PyCTS05D.css → index-DcIKW-cZ.css} +1 -1
  269. package/dashboard/dist/assets/{index-CZrJ09p-.js → index-Dd_U4mLm.js} +2 -2
  270. package/dashboard/dist/assets/{index-CZrJ09p-.js.map → index-Dd_U4mLm.js.map} +1 -1
  271. package/dashboard/dist/assets/{index-DYyLF-Qb.js → index-DnmZbNxk.js} +8 -8
  272. package/dashboard/dist/assets/index-DnmZbNxk.js.map +1 -0
  273. package/dashboard/dist/assets/index-_RBvi7s6.js +2 -0
  274. package/dashboard/dist/assets/{index-D7zYZOnH.js.map → index-_RBvi7s6.js.map} +1 -1
  275. package/dashboard/dist/assets/index-n7td8zgX.js +17 -0
  276. package/dashboard/dist/assets/{index-DOkHXmyf.js.map → index-n7td8zgX.js.map} +1 -1
  277. package/dashboard/dist/assets/{mcp-CJtYjA7A.js → mcp-CRFr4L9W.js} +2 -2
  278. package/dashboard/dist/assets/{mcp-CJtYjA7A.js.map → mcp-CRFr4L9W.js.map} +1 -1
  279. package/dashboard/dist/assets/mcp-query-DHY2mZBQ.js +2 -0
  280. package/dashboard/dist/assets/mcp-query-DHY2mZBQ.js.map +1 -0
  281. package/dashboard/dist/assets/{mcp-runs-DUWm9Z4V.js → mcp-runs-BqPHqwAO.js} +2 -2
  282. package/dashboard/dist/assets/{mcp-runs-DUWm9Z4V.js.map → mcp-runs-BqPHqwAO.js.map} +1 -1
  283. package/dashboard/dist/assets/{namespaces-BM5P2qmL.js → namespaces-TG1aIpo_.js} +2 -2
  284. package/dashboard/dist/assets/{namespaces-BM5P2qmL.js.map → namespaces-TG1aIpo_.js.map} +1 -1
  285. package/dashboard/dist/assets/{roles-lv0shpjJ.js → roles-DhhLTvXg.js} +2 -2
  286. package/dashboard/dist/assets/{roles-lv0shpjJ.js.map → roles-DhhLTvXg.js.map} +1 -1
  287. package/dashboard/dist/assets/{settings-Wlq92mRo.js → settings-D9MBzEeB.js} +2 -2
  288. package/dashboard/dist/assets/{settings-Wlq92mRo.js.map → settings-D9MBzEeB.js.map} +1 -1
  289. package/dashboard/dist/assets/{tasks-BFGm4PuE.js → tasks-BxmcZoev.js} +2 -2
  290. package/dashboard/dist/assets/{tasks-BFGm4PuE.js.map → tasks-BxmcZoev.js.map} +1 -1
  291. package/dashboard/dist/assets/{useEventHooks-DIE6ue4x.js → useEventHooks-BylecvvI.js} +2 -2
  292. package/dashboard/dist/assets/{useEventHooks-DIE6ue4x.js.map → useEventHooks-BylecvvI.js.map} +1 -1
  293. package/dashboard/dist/assets/{useYamlActivityEvents-DCwSO73t.js → useYamlActivityEvents-ocmj11e_.js} +2 -2
  294. package/dashboard/dist/assets/{useYamlActivityEvents-DCwSO73t.js.map → useYamlActivityEvents-ocmj11e_.js.map} +1 -1
  295. package/dashboard/dist/assets/{users-tA5-K0wA.js → users-Ce5r-JAv.js} +2 -2
  296. package/dashboard/dist/assets/{users-tA5-K0wA.js.map → users-Ce5r-JAv.js.map} +1 -1
  297. package/dashboard/dist/assets/{vendor-icons-BiIug1SK.js → vendor-icons-D1DdudfH.js} +93 -73
  298. package/dashboard/dist/assets/vendor-icons-D1DdudfH.js.map +1 -0
  299. package/dashboard/dist/assets/{workflows-CfLc15Wr.js → workflows-ykIeVbRJ.js} +2 -2
  300. package/dashboard/dist/assets/{workflows-CfLc15Wr.js.map → workflows-ykIeVbRJ.js.map} +1 -1
  301. package/dashboard/dist/assets/yaml-workflows-WypmKYht.js +2 -0
  302. package/dashboard/dist/assets/yaml-workflows-WypmKYht.js.map +1 -0
  303. package/dashboard/dist/index.html +3 -3
  304. package/docs/api/sdk/auth.md +27 -0
  305. package/docs/api/sdk/bot-accounts.md +243 -0
  306. package/docs/api/sdk/controlplane.md +103 -0
  307. package/docs/api/sdk/dba.md +52 -0
  308. package/docs/api/sdk/escalations.md +374 -0
  309. package/docs/api/sdk/events.md +68 -0
  310. package/docs/api/sdk/exports.md +124 -0
  311. package/docs/api/sdk/insight.md +112 -0
  312. package/docs/api/sdk/maintenance.md +54 -0
  313. package/docs/api/sdk/mcp-runs.md +71 -0
  314. package/docs/api/sdk/mcp.md +250 -0
  315. package/docs/api/sdk/namespaces.md +43 -0
  316. package/docs/api/sdk/roles.md +183 -0
  317. package/docs/api/sdk/settings.md +24 -0
  318. package/docs/api/sdk/tasks.md +120 -0
  319. package/docs/api/sdk/users.md +196 -0
  320. package/docs/api/sdk/workflow-sets.md +135 -0
  321. package/docs/api/sdk/workflows.md +271 -0
  322. package/docs/api/sdk/yaml-workflows.md +408 -0
  323. package/docs/events.md +28 -0
  324. package/docs/sdk.md +177 -0
  325. package/docs/story.md +157 -0
  326. package/package.json +3 -2
  327. package/build/routes/escalations/helpers.d.ts +0 -5
  328. package/build/routes/resolve.d.ts +0 -9
  329. package/build/routes/resolve.js +0 -19
  330. package/build/routes/yaml-workflows/helpers.d.ts +0 -2
  331. package/build/routes/yaml-workflows/helpers.js +0 -8
  332. package/dashboard/dist/assets/BotPicker-A6LtzyuO.js +0 -2
  333. package/dashboard/dist/assets/McpQueryDetailPage-DhqEI180.js +0 -5
  334. package/dashboard/dist/assets/McpQueryDetailPage-DhqEI180.js.map +0 -1
  335. package/dashboard/dist/assets/McpQueryPage-CIiVMlqo.js +0 -2
  336. package/dashboard/dist/assets/McpQueryPage-CIiVMlqo.js.map +0 -1
  337. package/dashboard/dist/assets/OperatorDashboard-jc0vrgDI.js +0 -2
  338. package/dashboard/dist/assets/RunAsSelector-CJDnyp93.js +0 -2
  339. package/dashboard/dist/assets/RunAsSelector-CJDnyp93.js.map +0 -1
  340. package/dashboard/dist/assets/WorkflowPill-DPKOcbf4.js +0 -2
  341. package/dashboard/dist/assets/YamlWorkflowsPage-BliAckJ6.js +0 -2
  342. package/dashboard/dist/assets/YamlWorkflowsPage-BliAckJ6.js.map +0 -1
  343. package/dashboard/dist/assets/index-BpT-6WgJ.js +0 -2
  344. package/dashboard/dist/assets/index-D3NyVADW.js.map +0 -1
  345. package/dashboard/dist/assets/index-D7zYZOnH.js +0 -2
  346. package/dashboard/dist/assets/index-DOkHXmyf.js +0 -17
  347. package/dashboard/dist/assets/index-DYyLF-Qb.js.map +0 -1
  348. package/dashboard/dist/assets/index-Dk2Q51o0.js +0 -2
  349. package/dashboard/dist/assets/mcp-query-jQJQrs_7.js +0 -2
  350. package/dashboard/dist/assets/mcp-query-jQJQrs_7.js.map +0 -1
  351. package/dashboard/dist/assets/vendor-icons-BiIug1SK.js.map +0 -1
  352. package/dashboard/dist/assets/yaml-workflows-D7JXNqbM.js +0 -2
  353. package/dashboard/dist/assets/yaml-workflows-D7JXNqbM.js.map +0 -1
  354. package/docs/img/01-login.png +0 -0
  355. package/docs/img/02-dashboard-home.png +0 -0
  356. package/docs/img/03-processes-list.png +0 -0
  357. package/docs/img/04-escalations-list.png +0 -0
  358. package/docs/img/05-mcp-servers.png +0 -0
  359. package/docs/img/06-mcp-pipelines.png +0 -0
  360. package/docs/img/07-workflows-list.png +0 -0
  361. package/docs/img/compilation/01-query-submit.png +0 -0
  362. package/docs/img/compilation/02-mcp-servers.png +0 -0
  363. package/docs/img/compilation/03-query-completed.png +0 -0
  364. package/docs/img/compilation/04-wizard-original.png +0 -0
  365. package/docs/img/compilation/05-wizard-timeline.png +0 -0
  366. package/docs/img/compilation/06-wizard-profile.png +0 -0
  367. package/docs/img/compilation/07-wizard-deploy.png +0 -0
  368. package/docs/img/compilation/08-wizard-test-modal.png +0 -0
  369. package/docs/img/compilation/09-wizard-test-compare.png +0 -0
  370. package/docs/img/compilation/10-wizard-verify.png +0 -0
  371. /package/docs/api/{dba.md → http/dba.md} +0 -0
  372. /package/docs/api/{escalations.md → http/escalations.md} +0 -0
  373. /package/docs/api/{exports.md → http/exports.md} +0 -0
  374. /package/docs/api/{maintenance.md → http/maintenance.md} +0 -0
  375. /package/docs/api/{mcp-runs.md → http/mcp-runs.md} +0 -0
  376. /package/docs/api/{mcp-servers.md → http/mcp-servers.md} +0 -0
  377. /package/docs/api/{namespaces.md → http/namespaces.md} +0 -0
  378. /package/docs/api/{roles.md → http/roles.md} +0 -0
  379. /package/docs/api/{service-accounts.md → http/service-accounts.md} +0 -0
  380. /package/docs/api/{settings.md → http/settings.md} +0 -0
  381. /package/docs/api/{tasks.md → http/tasks.md} +0 -0
  382. /package/docs/api/{users.md → http/users.md} +0 -0
  383. /package/docs/api/{workflows.md → http/workflows.md} +0 -0
  384. /package/docs/api/{yaml-workflows.md → http/yaml-workflows.md} +0 -0
@@ -0,0 +1,43 @@
1
+ import type { LTApiResult } from '../types/sdk';
2
+ /**
3
+ * List distinct entity types for an app (HotMesh namespace).
4
+ *
5
+ * @param input.app_id — HotMesh app ID (e.g. `"durable"`)
6
+ * @returns `{ status: 200, data: { entities: string[] } }`
7
+ */
8
+ export declare function listEntities(input: {
9
+ app_id: string;
10
+ }): Promise<LTApiResult>;
11
+ /**
12
+ * List jobs (workflow executions) for an app, with optional filters.
13
+ *
14
+ * @param input.app_id — HotMesh app ID
15
+ * @param input.limit — max results
16
+ * @param input.offset — pagination offset
17
+ * @param input.entity — filter by entity type
18
+ * @param input.search — full-text search
19
+ * @param input.status — filter by job status
20
+ * @returns `{ status: 200, data: { jobs, total } }`
21
+ */
22
+ export declare function listJobs(input: {
23
+ app_id: string;
24
+ limit?: number;
25
+ offset?: number;
26
+ entity?: string;
27
+ search?: string;
28
+ status?: string;
29
+ }): Promise<LTApiResult>;
30
+ /**
31
+ * Get the full execution history for a single job.
32
+ *
33
+ * Reconstructs the execution timeline from the HotMesh stream,
34
+ * including activity calls, signals, and state transitions.
35
+ *
36
+ * @param input.jobId — HotMesh job (workflow) ID
37
+ * @param input.app_id — HotMesh app ID
38
+ * @returns `{ status: 200, data: <execution timeline> }` or 404
39
+ */
40
+ export declare function getJobExecution(input: {
41
+ jobId: string;
42
+ app_id: string;
43
+ }): Promise<LTApiResult>;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listEntities = listEntities;
4
+ exports.listJobs = listJobs;
5
+ exports.getJobExecution = getJobExecution;
6
+ const hotmesh_utils_1 = require("../services/hotmesh-utils");
7
+ const mcp_runs_1 = require("../services/mcp-runs");
8
+ /**
9
+ * List distinct entity types for an app (HotMesh namespace).
10
+ *
11
+ * @param input.app_id — HotMesh app ID (e.g. `"durable"`)
12
+ * @returns `{ status: 200, data: { entities: string[] } }`
13
+ */
14
+ async function listEntities(input) {
15
+ try {
16
+ if (!input.app_id) {
17
+ return { status: 400, error: 'app_id query parameter is required' };
18
+ }
19
+ const entities = await (0, mcp_runs_1.listEntities)(input.app_id);
20
+ return { status: 200, data: { entities } };
21
+ }
22
+ catch (err) {
23
+ if (err.message?.includes('does not exist')) {
24
+ return { status: 200, data: { entities: [] } };
25
+ }
26
+ return { status: 500, error: err.message };
27
+ }
28
+ }
29
+ /**
30
+ * List jobs (workflow executions) for an app, with optional filters.
31
+ *
32
+ * @param input.app_id — HotMesh app ID
33
+ * @param input.limit — max results
34
+ * @param input.offset — pagination offset
35
+ * @param input.entity — filter by entity type
36
+ * @param input.search — full-text search
37
+ * @param input.status — filter by job status
38
+ * @returns `{ status: 200, data: { jobs, total } }`
39
+ */
40
+ async function listJobs(input) {
41
+ try {
42
+ if (!input.app_id) {
43
+ return { status: 400, error: 'app_id query parameter is required' };
44
+ }
45
+ const result = await (0, mcp_runs_1.listJobs)({
46
+ rawAppId: input.app_id,
47
+ limit: input.limit,
48
+ offset: input.offset,
49
+ entity: input.entity,
50
+ search: input.search,
51
+ status: input.status,
52
+ });
53
+ return { status: 200, data: result };
54
+ }
55
+ catch (err) {
56
+ if (err.message?.includes('does not exist')) {
57
+ return { status: 200, data: { jobs: [], total: 0 } };
58
+ }
59
+ return { status: 500, error: err.message };
60
+ }
61
+ }
62
+ /**
63
+ * Get the full execution history for a single job.
64
+ *
65
+ * Reconstructs the execution timeline from the HotMesh stream,
66
+ * including activity calls, signals, and state transitions.
67
+ *
68
+ * @param input.jobId — HotMesh job (workflow) ID
69
+ * @param input.app_id — HotMesh app ID
70
+ * @returns `{ status: 200, data: <execution timeline> }` or 404
71
+ */
72
+ async function getJobExecution(input) {
73
+ try {
74
+ if (!input.app_id) {
75
+ return { status: 400, error: 'app_id query parameter is required' };
76
+ }
77
+ const appId = (0, hotmesh_utils_1.sanitizeAppId)(input.app_id);
78
+ const schema = (0, hotmesh_utils_1.quoteSchema)(appId);
79
+ const execution = await (0, mcp_runs_1.buildExecution)(input.jobId, appId, schema);
80
+ return { status: 200, data: execution };
81
+ }
82
+ catch (err) {
83
+ const msg = err.message ?? '';
84
+ if (err.status === 404 || msg.includes('not found') || msg.includes('does not exist')) {
85
+ return { status: 404, error: msg };
86
+ }
87
+ return { status: 500, error: msg };
88
+ }
89
+ }
@@ -0,0 +1,160 @@
1
+ import type { LTApiResult, LTApiAuth } from '../types/sdk';
2
+ /**
3
+ * List registered MCP servers with optional filtering and pagination.
4
+ *
5
+ * @param input.status — filter by server status (e.g. 'active', 'inactive')
6
+ * @param input.auto_connect — filter by auto-connect setting
7
+ * @param input.search — free-text search across server names and descriptions
8
+ * @param input.tags — filter to servers matching any of these tags
9
+ * @param input.limit — maximum number of results to return
10
+ * @param input.offset — pagination offset
11
+ * @returns `{ status: 200, data: { ... } }` paginated list of MCP server records
12
+ */
13
+ export declare function listMcpServers(input: {
14
+ status?: string;
15
+ auto_connect?: boolean;
16
+ search?: string;
17
+ tags?: string[];
18
+ limit?: number;
19
+ offset?: number;
20
+ }): Promise<LTApiResult>;
21
+ /**
22
+ * Register a new MCP server.
23
+ *
24
+ * Returns 409 if a server with the same name already exists.
25
+ *
26
+ * @param input.name — unique display name for the server (required)
27
+ * @param input.description — optional human-readable description
28
+ * @param input.transport_type — transport protocol, e.g. 'sse', 'stdio' (required)
29
+ * @param input.transport_config — transport-specific connection settings (required)
30
+ * @param input.auto_connect — whether to connect automatically on startup
31
+ * @param input.metadata — arbitrary key-value metadata
32
+ * @param input.tags — tags for categorization and filtering
33
+ * @param input.compile_hints — optional hints used during tool compilation
34
+ * @param input.credential_providers — OAuth/credential provider identifiers required by this server
35
+ * @returns `{ status: 201, data: { ... } }` the created MCP server record
36
+ */
37
+ export declare function createMcpServer(input: {
38
+ name: string;
39
+ description?: string;
40
+ transport_type: string;
41
+ transport_config: Record<string, any>;
42
+ auto_connect?: boolean;
43
+ metadata?: Record<string, any>;
44
+ tags?: string[];
45
+ compile_hints?: any;
46
+ credential_providers?: string[];
47
+ }): Promise<LTApiResult>;
48
+ /**
49
+ * Test connectivity to an MCP server without persisting it.
50
+ *
51
+ * Attempts to establish a connection using the provided transport
52
+ * configuration and returns the result. On failure, returns a
53
+ * successful (200) response with `success: false` and the error message.
54
+ *
55
+ * @param input.transport_type — transport protocol to test (required)
56
+ * @param input.transport_config — transport-specific connection settings (required)
57
+ * @returns `{ status: 200, data: { success, error?, tools } }` connection test result
58
+ */
59
+ export declare function testConnection(input: {
60
+ transport_type: string;
61
+ transport_config: Record<string, any>;
62
+ }): Promise<LTApiResult>;
63
+ /**
64
+ * Retrieve a single MCP server by ID.
65
+ *
66
+ * @param input.id — the MCP server identifier
67
+ * @returns `{ status: 200, data: { ... } }` the MCP server record, or 404 if not found
68
+ */
69
+ export declare function getMcpServer(input: {
70
+ id: string;
71
+ }): Promise<LTApiResult>;
72
+ /**
73
+ * Update fields on an existing MCP server.
74
+ *
75
+ * Accepts any subset of mutable server fields alongside the required ID.
76
+ *
77
+ * @param input.id — the MCP server identifier (required)
78
+ * @param input.[key] — any mutable server field to update (name, description, transport_config, etc.)
79
+ * @returns `{ status: 200, data: { ... } }` the updated server record, or 404 if not found
80
+ */
81
+ export declare function updateMcpServer(input: {
82
+ id: string;
83
+ [key: string]: any;
84
+ }): Promise<LTApiResult>;
85
+ /**
86
+ * Delete an MCP server by ID.
87
+ *
88
+ * @param input.id — the MCP server identifier
89
+ * @returns `{ status: 200, data: { deleted: true } }` on success, or 404 if not found
90
+ */
91
+ export declare function deleteMcpServer(input: {
92
+ id: string;
93
+ }): Promise<LTApiResult>;
94
+ /**
95
+ * Establish a live connection to a registered MCP server.
96
+ *
97
+ * Requires the MCP adapter to be registered in the registry.
98
+ *
99
+ * @param input.id — the MCP server identifier to connect
100
+ * @returns `{ status: 200, data: { connected, serverId } }` confirmation of the connection
101
+ */
102
+ export declare function connectMcpServer(input: {
103
+ id: string;
104
+ }): Promise<LTApiResult>;
105
+ /**
106
+ * Disconnect a live MCP server connection.
107
+ *
108
+ * Requires the MCP adapter to be registered in the registry.
109
+ *
110
+ * @param input.id — the MCP server identifier to disconnect
111
+ * @returns `{ status: 200, data: { disconnected, serverId } }` confirmation of the disconnection
112
+ */
113
+ export declare function disconnectMcpServer(input: {
114
+ id: string;
115
+ }): Promise<LTApiResult>;
116
+ /**
117
+ * Check which credential providers are registered vs missing for an MCP server.
118
+ *
119
+ * Resolves each credential provider required by the server against the
120
+ * authenticated user's stored credentials.
121
+ *
122
+ * @param input.id — the MCP server identifier
123
+ * @param auth — authenticated user context used to resolve credentials
124
+ * @returns `{ status: 200, data: { required, registered, missing } }` credential status arrays
125
+ */
126
+ export declare function getCredentialStatus(input: {
127
+ id: string;
128
+ }, auth?: LTApiAuth): Promise<LTApiResult>;
129
+ /**
130
+ * List all tools exposed by a connected MCP server.
131
+ *
132
+ * Requires the MCP adapter to be registered and the server to be connected.
133
+ *
134
+ * @param input.id — the MCP server identifier
135
+ * @returns `{ status: 200, data: { tools } }` array of tool descriptors
136
+ */
137
+ export declare function listMcpServerTools(input: {
138
+ id: string;
139
+ }): Promise<LTApiResult>;
140
+ /**
141
+ * Invoke a specific tool on a connected MCP server.
142
+ *
143
+ * Passes the tool arguments and an optional auth context (derived from
144
+ * `execute_as` or the authenticated user) to the MCP adapter. Returns
145
+ * 422 with `missing_credential` if the tool requires a credential the
146
+ * user has not registered.
147
+ *
148
+ * @param input.id — the MCP server identifier
149
+ * @param input.toolName — name of the tool to invoke
150
+ * @param input.arguments — key-value arguments to pass to the tool
151
+ * @param input.execute_as — optional user ID to impersonate for the tool call
152
+ * @param auth — authenticated user context
153
+ * @returns `{ status: 200, data: { result } }` the tool execution result
154
+ */
155
+ export declare function callMcpTool(input: {
156
+ id: string;
157
+ toolName: string;
158
+ arguments?: Record<string, any>;
159
+ execute_as?: string;
160
+ }, auth?: LTApiAuth): Promise<LTApiResult>;
@@ -0,0 +1,320 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.listMcpServers = listMcpServers;
37
+ exports.createMcpServer = createMcpServer;
38
+ exports.testConnection = testConnection;
39
+ exports.getMcpServer = getMcpServer;
40
+ exports.updateMcpServer = updateMcpServer;
41
+ exports.deleteMcpServer = deleteMcpServer;
42
+ exports.connectMcpServer = connectMcpServer;
43
+ exports.disconnectMcpServer = disconnectMcpServer;
44
+ exports.getCredentialStatus = getCredentialStatus;
45
+ exports.listMcpServerTools = listMcpServerTools;
46
+ exports.callMcpTool = callMcpTool;
47
+ const mcpDbService = __importStar(require("../services/mcp/db"));
48
+ const mcp_1 = require("../services/mcp");
49
+ /**
50
+ * List registered MCP servers with optional filtering and pagination.
51
+ *
52
+ * @param input.status — filter by server status (e.g. 'active', 'inactive')
53
+ * @param input.auto_connect — filter by auto-connect setting
54
+ * @param input.search — free-text search across server names and descriptions
55
+ * @param input.tags — filter to servers matching any of these tags
56
+ * @param input.limit — maximum number of results to return
57
+ * @param input.offset — pagination offset
58
+ * @returns `{ status: 200, data: { ... } }` paginated list of MCP server records
59
+ */
60
+ async function listMcpServers(input) {
61
+ try {
62
+ const result = await mcpDbService.listMcpServers(input);
63
+ return { status: 200, data: result };
64
+ }
65
+ catch (err) {
66
+ return { status: 500, error: err.message };
67
+ }
68
+ }
69
+ /**
70
+ * Register a new MCP server.
71
+ *
72
+ * Returns 409 if a server with the same name already exists.
73
+ *
74
+ * @param input.name — unique display name for the server (required)
75
+ * @param input.description — optional human-readable description
76
+ * @param input.transport_type — transport protocol, e.g. 'sse', 'stdio' (required)
77
+ * @param input.transport_config — transport-specific connection settings (required)
78
+ * @param input.auto_connect — whether to connect automatically on startup
79
+ * @param input.metadata — arbitrary key-value metadata
80
+ * @param input.tags — tags for categorization and filtering
81
+ * @param input.compile_hints — optional hints used during tool compilation
82
+ * @param input.credential_providers — OAuth/credential provider identifiers required by this server
83
+ * @returns `{ status: 201, data: { ... } }` the created MCP server record
84
+ */
85
+ async function createMcpServer(input) {
86
+ try {
87
+ if (!input.name || !input.transport_type || !input.transport_config) {
88
+ return { status: 400, error: 'name, transport_type, and transport_config are required' };
89
+ }
90
+ const server = await mcpDbService.createMcpServer(input);
91
+ return { status: 201, data: server };
92
+ }
93
+ catch (err) {
94
+ if (err.message?.includes('duplicate key') || err.code === '23505') {
95
+ return { status: 409, error: 'MCP server with that name already exists' };
96
+ }
97
+ return { status: 500, error: err.message };
98
+ }
99
+ }
100
+ /**
101
+ * Test connectivity to an MCP server without persisting it.
102
+ *
103
+ * Attempts to establish a connection using the provided transport
104
+ * configuration and returns the result. On failure, returns a
105
+ * successful (200) response with `success: false` and the error message.
106
+ *
107
+ * @param input.transport_type — transport protocol to test (required)
108
+ * @param input.transport_config — transport-specific connection settings (required)
109
+ * @returns `{ status: 200, data: { success, error?, tools } }` connection test result
110
+ */
111
+ async function testConnection(input) {
112
+ try {
113
+ if (!input.transport_type || !input.transport_config) {
114
+ return { status: 400, error: 'transport_type and transport_config are required' };
115
+ }
116
+ const { testConnection: testConn } = await Promise.resolve().then(() => __importStar(require('../services/mcp/client/connection')));
117
+ const result = await testConn(input.transport_type, input.transport_config);
118
+ return { status: 200, data: result };
119
+ }
120
+ catch (err) {
121
+ return { status: 200, data: { success: false, error: err.message, tools: [] } };
122
+ }
123
+ }
124
+ /**
125
+ * Retrieve a single MCP server by ID.
126
+ *
127
+ * @param input.id — the MCP server identifier
128
+ * @returns `{ status: 200, data: { ... } }` the MCP server record, or 404 if not found
129
+ */
130
+ async function getMcpServer(input) {
131
+ try {
132
+ const server = await mcpDbService.getMcpServer(input.id);
133
+ if (!server) {
134
+ return { status: 404, error: 'MCP server not found' };
135
+ }
136
+ return { status: 200, data: server };
137
+ }
138
+ catch (err) {
139
+ return { status: 500, error: err.message };
140
+ }
141
+ }
142
+ /**
143
+ * Update fields on an existing MCP server.
144
+ *
145
+ * Accepts any subset of mutable server fields alongside the required ID.
146
+ *
147
+ * @param input.id — the MCP server identifier (required)
148
+ * @param input.[key] — any mutable server field to update (name, description, transport_config, etc.)
149
+ * @returns `{ status: 200, data: { ... } }` the updated server record, or 404 if not found
150
+ */
151
+ async function updateMcpServer(input) {
152
+ try {
153
+ const { id, ...fields } = input;
154
+ const server = await mcpDbService.updateMcpServer(id, fields);
155
+ if (!server) {
156
+ return { status: 404, error: 'MCP server not found' };
157
+ }
158
+ return { status: 200, data: server };
159
+ }
160
+ catch (err) {
161
+ return { status: 500, error: err.message };
162
+ }
163
+ }
164
+ /**
165
+ * Delete an MCP server by ID.
166
+ *
167
+ * @param input.id — the MCP server identifier
168
+ * @returns `{ status: 200, data: { deleted: true } }` on success, or 404 if not found
169
+ */
170
+ async function deleteMcpServer(input) {
171
+ try {
172
+ const deleted = await mcpDbService.deleteMcpServer(input.id);
173
+ if (!deleted) {
174
+ return { status: 404, error: 'MCP server not found' };
175
+ }
176
+ return { status: 200, data: { deleted: true } };
177
+ }
178
+ catch (err) {
179
+ return { status: 500, error: err.message };
180
+ }
181
+ }
182
+ /**
183
+ * Establish a live connection to a registered MCP server.
184
+ *
185
+ * Requires the MCP adapter to be registered in the registry.
186
+ *
187
+ * @param input.id — the MCP server identifier to connect
188
+ * @returns `{ status: 200, data: { connected, serverId } }` confirmation of the connection
189
+ */
190
+ async function connectMcpServer(input) {
191
+ try {
192
+ const adapter = mcp_1.mcpRegistry.current;
193
+ if (!adapter) {
194
+ return { status: 400, error: 'MCP adapter not registered' };
195
+ }
196
+ await adapter.connectClient(input.id);
197
+ return { status: 200, data: { connected: true, serverId: input.id } };
198
+ }
199
+ catch (err) {
200
+ return { status: 500, error: err.message };
201
+ }
202
+ }
203
+ /**
204
+ * Disconnect a live MCP server connection.
205
+ *
206
+ * Requires the MCP adapter to be registered in the registry.
207
+ *
208
+ * @param input.id — the MCP server identifier to disconnect
209
+ * @returns `{ status: 200, data: { disconnected, serverId } }` confirmation of the disconnection
210
+ */
211
+ async function disconnectMcpServer(input) {
212
+ try {
213
+ const adapter = mcp_1.mcpRegistry.current;
214
+ if (!adapter) {
215
+ return { status: 400, error: 'MCP adapter not registered' };
216
+ }
217
+ await adapter.disconnectClient(input.id);
218
+ return { status: 200, data: { disconnected: true, serverId: input.id } };
219
+ }
220
+ catch (err) {
221
+ return { status: 500, error: err.message };
222
+ }
223
+ }
224
+ /**
225
+ * Check which credential providers are registered vs missing for an MCP server.
226
+ *
227
+ * Resolves each credential provider required by the server against the
228
+ * authenticated user's stored credentials.
229
+ *
230
+ * @param input.id — the MCP server identifier
231
+ * @param auth — authenticated user context used to resolve credentials
232
+ * @returns `{ status: 200, data: { required, registered, missing } }` credential status arrays
233
+ */
234
+ async function getCredentialStatus(input, auth) {
235
+ try {
236
+ const server = await mcpDbService.getMcpServer(input.id);
237
+ if (!server) {
238
+ return { status: 404, error: 'MCP server not found' };
239
+ }
240
+ const required = server.credential_providers ?? [];
241
+ const registered = [];
242
+ const missing = [];
243
+ if (auth?.userId && required.length > 0) {
244
+ const { resolveCredential } = await Promise.resolve().then(() => __importStar(require('../services/iam/credentials')));
245
+ for (const provider of required) {
246
+ const cred = await resolveCredential({ id: auth.userId, type: 'user', roles: [] }, provider);
247
+ if (cred)
248
+ registered.push(provider);
249
+ else
250
+ missing.push(provider);
251
+ }
252
+ }
253
+ else {
254
+ missing.push(...required);
255
+ }
256
+ return { status: 200, data: { required, registered, missing } };
257
+ }
258
+ catch (err) {
259
+ return { status: 500, error: err.message };
260
+ }
261
+ }
262
+ /**
263
+ * List all tools exposed by a connected MCP server.
264
+ *
265
+ * Requires the MCP adapter to be registered and the server to be connected.
266
+ *
267
+ * @param input.id — the MCP server identifier
268
+ * @returns `{ status: 200, data: { tools } }` array of tool descriptors
269
+ */
270
+ async function listMcpServerTools(input) {
271
+ try {
272
+ const adapter = mcp_1.mcpRegistry.current;
273
+ if (!adapter) {
274
+ return { status: 400, error: 'MCP adapter not registered' };
275
+ }
276
+ const tools = await adapter.listTools(input.id);
277
+ return { status: 200, data: { tools } };
278
+ }
279
+ catch (err) {
280
+ return { status: 500, error: err.message };
281
+ }
282
+ }
283
+ /**
284
+ * Invoke a specific tool on a connected MCP server.
285
+ *
286
+ * Passes the tool arguments and an optional auth context (derived from
287
+ * `execute_as` or the authenticated user) to the MCP adapter. Returns
288
+ * 422 with `missing_credential` if the tool requires a credential the
289
+ * user has not registered.
290
+ *
291
+ * @param input.id — the MCP server identifier
292
+ * @param input.toolName — name of the tool to invoke
293
+ * @param input.arguments — key-value arguments to pass to the tool
294
+ * @param input.execute_as — optional user ID to impersonate for the tool call
295
+ * @param auth — authenticated user context
296
+ * @returns `{ status: 200, data: { result } }` the tool execution result
297
+ */
298
+ async function callMcpTool(input, auth) {
299
+ try {
300
+ const adapter = mcp_1.mcpRegistry.current;
301
+ if (!adapter) {
302
+ return { status: 400, error: 'MCP adapter not registered' };
303
+ }
304
+ const authContext = (input.execute_as || auth?.userId)
305
+ ? { userId: input.execute_as || auth?.userId }
306
+ : undefined;
307
+ const result = await adapter.callTool(input.id, input.toolName, input.arguments || {}, authContext);
308
+ return { status: 200, data: { result } };
309
+ }
310
+ catch (err) {
311
+ if (err.name === 'MissingCredentialError') {
312
+ return {
313
+ status: 422,
314
+ error: 'missing_credential',
315
+ ...{ provider: err.provider, message: err.message },
316
+ };
317
+ }
318
+ return { status: 500, error: err.message };
319
+ }
320
+ }
@@ -0,0 +1,20 @@
1
+ import type { LTApiResult } from '../types/sdk';
2
+ /**
3
+ * List all registered namespaces.
4
+ *
5
+ * @returns `{ status: 200, data: { namespaces: LTNamespace[] } }`
6
+ */
7
+ export declare function listNamespaces(): Promise<LTApiResult>;
8
+ /**
9
+ * Register a new namespace.
10
+ *
11
+ * @param input.name — unique namespace identifier
12
+ * @param input.description — human-readable description
13
+ * @param input.metadata — arbitrary key-value metadata
14
+ * @returns `{ status: 200, data: <namespace record> }`
15
+ */
16
+ export declare function registerNamespace(input: {
17
+ name: string;
18
+ description?: string;
19
+ metadata?: Record<string, unknown>;
20
+ }): Promise<LTApiResult>;
@@ -33,16 +33,41 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.getVisibleRoles = getVisibleRoles;
37
- const userService = __importStar(require("../../services/user"));
36
+ exports.listNamespaces = listNamespaces;
37
+ exports.registerNamespace = registerNamespace;
38
+ const namespaceService = __importStar(require("../services/namespace"));
38
39
  /**
39
- * Return the role names visible to a user, or undefined if superadmin (no filter).
40
- * Returns an empty array when the user holds no roles at all.
40
+ * List all registered namespaces.
41
+ *
42
+ * @returns `{ status: 200, data: { namespaces: LTNamespace[] } }`
41
43
  */
42
- async function getVisibleRoles(userId) {
43
- const isSuperAdminUser = await userService.isSuperAdmin(userId);
44
- if (isSuperAdminUser)
45
- return undefined;
46
- const userRoles = await userService.getUserRoles(userId);
47
- return userRoles.map((r) => r.role);
44
+ async function listNamespaces() {
45
+ try {
46
+ const namespaces = await namespaceService.listNamespaces();
47
+ return { status: 200, data: { namespaces } };
48
+ }
49
+ catch (err) {
50
+ return { status: 500, error: err.message };
51
+ }
52
+ }
53
+ /**
54
+ * Register a new namespace.
55
+ *
56
+ * @param input.name — unique namespace identifier
57
+ * @param input.description — human-readable description
58
+ * @param input.metadata — arbitrary key-value metadata
59
+ * @returns `{ status: 200, data: <namespace record> }`
60
+ */
61
+ async function registerNamespace(input) {
62
+ try {
63
+ const { name, description, metadata } = input;
64
+ if (!name || typeof name !== 'string') {
65
+ return { status: 400, error: 'name is required' };
66
+ }
67
+ const namespace = await namespaceService.registerNamespace(name, description, metadata);
68
+ return { status: 200, data: namespace };
69
+ }
70
+ catch (err) {
71
+ return { status: 500, error: err.message };
72
+ }
48
73
  }