@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,228 @@
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.listUsers = listUsers;
37
+ exports.getUser = getUser;
38
+ exports.createUser = createUser;
39
+ exports.updateUser = updateUser;
40
+ exports.deleteUser = deleteUser;
41
+ exports.getUserRoles = getUserRoles;
42
+ exports.addUserRole = addUserRole;
43
+ exports.removeUserRole = removeUserRole;
44
+ const userService = __importStar(require("../services/user"));
45
+ /**
46
+ * List users with optional filters for role, role type, status, and pagination.
47
+ *
48
+ * @param input.role — filter by role name
49
+ * @param input.roleType — filter by role type (superadmin, admin, member)
50
+ * @param input.status — filter by user status
51
+ * @param input.limit — maximum number of users to return
52
+ * @param input.offset — number of users to skip for pagination
53
+ * @returns `{ status: 200, data: User[] }` on success
54
+ */
55
+ async function listUsers(input) {
56
+ try {
57
+ const result = await userService.listUsers(input);
58
+ return { status: 200, data: result };
59
+ }
60
+ catch (err) {
61
+ return { status: 500, error: err.message };
62
+ }
63
+ }
64
+ /**
65
+ * Retrieve a single user by ID.
66
+ *
67
+ * @param input.id — the user's unique identifier
68
+ * @returns `{ status: 200, data: User }` on success, or `{ status: 404 }` if not found
69
+ */
70
+ async function getUser(input) {
71
+ try {
72
+ const user = await userService.getUser(input.id);
73
+ if (!user) {
74
+ return { status: 404, error: 'User not found' };
75
+ }
76
+ return { status: 200, data: user };
77
+ }
78
+ catch (err) {
79
+ return { status: 500, error: err.message };
80
+ }
81
+ }
82
+ /**
83
+ * Create a new user. Requires admin privileges.
84
+ *
85
+ * Validates that external_id is present and that any provided roles have valid
86
+ * names and types. Returns 409 if a user with the same external_id already exists.
87
+ *
88
+ * @param input.external_id — external system identifier (required)
89
+ * @param input.email — user's email address
90
+ * @param input.display_name — user's display name
91
+ * @param input.roles — initial role assignments, each with a role name and type (superadmin, admin, member)
92
+ * @param input.metadata — arbitrary key-value metadata to attach to the user
93
+ * @returns `{ status: 201, data: User }` on success, or `{ status: 409 }` on duplicate external_id
94
+ */
95
+ async function createUser(input) {
96
+ try {
97
+ if (!input.external_id) {
98
+ return { status: 400, error: 'external_id is required' };
99
+ }
100
+ if (input.roles) {
101
+ for (const r of input.roles) {
102
+ if (!r.role || !r.type || !userService.isValidRoleType(r.type)) {
103
+ return {
104
+ status: 400,
105
+ error: 'Each role must have a role name and type (superadmin, admin, member)',
106
+ };
107
+ }
108
+ }
109
+ }
110
+ const user = await userService.createUser({
111
+ external_id: input.external_id,
112
+ email: input.email,
113
+ display_name: input.display_name,
114
+ roles: input.roles,
115
+ metadata: input.metadata,
116
+ });
117
+ return { status: 201, data: user };
118
+ }
119
+ catch (err) {
120
+ if (err.code === '23505') {
121
+ return { status: 409, error: 'User with this external_id already exists' };
122
+ }
123
+ return { status: 500, error: err.message };
124
+ }
125
+ }
126
+ /**
127
+ * Update an existing user's profile fields. Requires admin privileges.
128
+ *
129
+ * Only the provided fields are updated; omitted fields remain unchanged.
130
+ *
131
+ * @param input.id — the user's unique identifier (required)
132
+ * @param input.email — new email address
133
+ * @param input.display_name — new display name
134
+ * @param input.status — new user status
135
+ * @param input.metadata — replacement metadata object
136
+ * @returns `{ status: 200, data: User }` on success, or `{ status: 404 }` if not found
137
+ */
138
+ async function updateUser(input) {
139
+ try {
140
+ const { id, ...fields } = input;
141
+ const user = await userService.updateUser(id, fields);
142
+ if (!user) {
143
+ return { status: 404, error: 'User not found' };
144
+ }
145
+ return { status: 200, data: user };
146
+ }
147
+ catch (err) {
148
+ return { status: 500, error: err.message };
149
+ }
150
+ }
151
+ /**
152
+ * Delete a user by ID. Requires admin privileges.
153
+ *
154
+ * @param input.id — the user's unique identifier
155
+ * @returns `{ status: 200, data: { deleted: true } }` on success, or `{ status: 404 }` if not found
156
+ */
157
+ async function deleteUser(input) {
158
+ try {
159
+ const deleted = await userService.deleteUser(input.id);
160
+ if (!deleted) {
161
+ return { status: 404, error: 'User not found' };
162
+ }
163
+ return { status: 200, data: { deleted: true } };
164
+ }
165
+ catch (err) {
166
+ return { status: 500, error: err.message };
167
+ }
168
+ }
169
+ /**
170
+ * Retrieve all roles assigned to a user.
171
+ *
172
+ * @param input.id — the user's unique identifier
173
+ * @returns `{ status: 200, data: { roles: Role[] } }` on success
174
+ */
175
+ async function getUserRoles(input) {
176
+ try {
177
+ const roles = await userService.getUserRoles(input.id);
178
+ return { status: 200, data: { roles } };
179
+ }
180
+ catch (err) {
181
+ return { status: 500, error: err.message };
182
+ }
183
+ }
184
+ /**
185
+ * Assign a role to a user. Requires admin privileges.
186
+ *
187
+ * Validates that both role and type are provided and that the type is one of
188
+ * superadmin, admin, or member.
189
+ *
190
+ * @param input.id — the user's unique identifier
191
+ * @param input.role — the role name to assign
192
+ * @param input.type — the role type (superadmin, admin, or member)
193
+ * @returns `{ status: 201, data: UserRole }` on success
194
+ */
195
+ async function addUserRole(input) {
196
+ try {
197
+ if (!input.role || !input.type) {
198
+ return { status: 400, error: 'role and type are required' };
199
+ }
200
+ if (!userService.isValidRoleType(input.type)) {
201
+ return { status: 400, error: 'type must be superadmin, admin, or member' };
202
+ }
203
+ const result = await userService.addUserRole(input.id, input.role, input.type);
204
+ return { status: 201, data: result };
205
+ }
206
+ catch (err) {
207
+ return { status: 500, error: err.message };
208
+ }
209
+ }
210
+ /**
211
+ * Remove a role from a user. Requires admin privileges.
212
+ *
213
+ * @param input.id — the user's unique identifier
214
+ * @param input.role — the role name to remove
215
+ * @returns `{ status: 200, data: { removed: true } }` on success, or `{ status: 404 }` if role not found
216
+ */
217
+ async function removeUserRole(input) {
218
+ try {
219
+ const removed = await userService.removeUserRole(input.id, input.role);
220
+ if (!removed) {
221
+ return { status: 404, error: 'Role not found' };
222
+ }
223
+ return { status: 200, data: { removed: true } };
224
+ }
225
+ catch (err) {
226
+ return { status: 500, error: err.message };
227
+ }
228
+ }
@@ -0,0 +1,77 @@
1
+ import type { LTApiResult, LTApiAuth } from '../types/sdk';
2
+ /**
3
+ * Create a new workflow set and kick off the LLM-powered planner.
4
+ *
5
+ * Persists the workflow set record, then starts an async planner workflow
6
+ * that generates the plan from the specification. Requires at least one
7
+ * LLM API key (OPENAI_API_KEY or ANTHROPIC_API_KEY) to be configured.
8
+ * Returns 409 if a workflow set with the same name already exists.
9
+ *
10
+ * @param input.name — unique name for the workflow set (required)
11
+ * @param input.description — optional description of the workflow set
12
+ * @param input.specification — free-text specification the planner uses to generate workflows (required)
13
+ * @param auth — authenticated user context; userId is forwarded to the planner
14
+ * @returns `{ status: 201, data: { ...set, source_workflow_id, planner_workflow_id } }` the created set with planner IDs
15
+ */
16
+ export declare function createWorkflowSet(input: {
17
+ name: string;
18
+ description?: string;
19
+ specification: string;
20
+ }, auth?: LTApiAuth): Promise<LTApiResult>;
21
+ /**
22
+ * List workflow sets with optional filtering and pagination.
23
+ *
24
+ * @param input.status — filter by workflow set status
25
+ * @param input.search — free-text search term to match against set names or descriptions
26
+ * @param input.limit — maximum number of results to return
27
+ * @param input.offset — number of results to skip for pagination
28
+ * @returns `{ status: 200, data: WorkflowSet[] }` paginated list of workflow sets
29
+ */
30
+ export declare function listWorkflowSets(input: {
31
+ status?: string;
32
+ search?: string;
33
+ limit?: number;
34
+ offset?: number;
35
+ }): Promise<LTApiResult>;
36
+ /**
37
+ * Retrieve a single workflow set by ID.
38
+ *
39
+ * @param input.id — unique identifier of the workflow set
40
+ * @returns `{ status: 200, data: WorkflowSet }` the workflow set record, or 404 if not found
41
+ */
42
+ export declare function getWorkflowSet(input: {
43
+ id: string;
44
+ }): Promise<LTApiResult>;
45
+ /**
46
+ * Replace the plan and optional namespaces on a workflow set.
47
+ *
48
+ * @param input.id — unique identifier of the workflow set to update
49
+ * @param input.plan — array of plan entries (required, must be an array)
50
+ * @param input.namespaces — optional array of namespace definitions associated with the plan
51
+ * @returns `{ status: 200, data: WorkflowSet }` the updated workflow set, or 404 if not found
52
+ */
53
+ export declare function updateWorkflowSetPlanApi(input: {
54
+ id: string;
55
+ plan: any[];
56
+ namespaces?: any[];
57
+ }): Promise<LTApiResult>;
58
+ /**
59
+ * Transition a workflow set from "planned" to "building" status.
60
+ *
61
+ * Returns 409 if the set is not currently in "planned" status.
62
+ *
63
+ * @param input.id — unique identifier of the workflow set to build
64
+ * @returns `{ status: 200, data: { status: 'building', id } }` confirmation the build has started
65
+ */
66
+ export declare function buildWorkflowSet(input: {
67
+ id: string;
68
+ }): Promise<LTApiResult>;
69
+ /**
70
+ * Transition a workflow set to "deploying" status.
71
+ *
72
+ * @param input.id — unique identifier of the workflow set to deploy
73
+ * @returns `{ status: 200, data: { status: 'deploying', id } }` confirmation the deploy has started
74
+ */
75
+ export declare function deployWorkflowSet(input: {
76
+ id: string;
77
+ }): Promise<LTApiResult>;
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createWorkflowSet = createWorkflowSet;
4
+ exports.listWorkflowSets = listWorkflowSets;
5
+ exports.getWorkflowSet = getWorkflowSet;
6
+ exports.updateWorkflowSetPlanApi = updateWorkflowSetPlanApi;
7
+ exports.buildWorkflowSet = buildWorkflowSet;
8
+ exports.deployWorkflowSet = deployWorkflowSet;
9
+ const workflow_sets_1 = require("../services/workflow-sets");
10
+ const insight_1 = require("../services/insight");
11
+ /**
12
+ * Create a new workflow set and kick off the LLM-powered planner.
13
+ *
14
+ * Persists the workflow set record, then starts an async planner workflow
15
+ * that generates the plan from the specification. Requires at least one
16
+ * LLM API key (OPENAI_API_KEY or ANTHROPIC_API_KEY) to be configured.
17
+ * Returns 409 if a workflow set with the same name already exists.
18
+ *
19
+ * @param input.name — unique name for the workflow set (required)
20
+ * @param input.description — optional description of the workflow set
21
+ * @param input.specification — free-text specification the planner uses to generate workflows (required)
22
+ * @param auth — authenticated user context; userId is forwarded to the planner
23
+ * @returns `{ status: 201, data: { ...set, source_workflow_id, planner_workflow_id } }` the created set with planner IDs
24
+ */
25
+ async function createWorkflowSet(input, auth) {
26
+ try {
27
+ if (!input.specification || typeof input.specification !== 'string') {
28
+ return { status: 400, error: 'specification is required' };
29
+ }
30
+ if (!input.name || typeof input.name !== 'string') {
31
+ return { status: 400, error: 'name is required' };
32
+ }
33
+ if (!process.env.OPENAI_API_KEY && !process.env.ANTHROPIC_API_KEY) {
34
+ return { status: 503, error: 'Workflow planner requires an LLM API key' };
35
+ }
36
+ const set = await (0, workflow_sets_1.createWorkflowSet)({
37
+ name: input.name,
38
+ description: input.description,
39
+ specification: input.specification,
40
+ });
41
+ const plannerResult = await (0, insight_1.startWorkflowPlanner)({
42
+ specification: input.specification,
43
+ setId: set.id,
44
+ wait: false,
45
+ userId: auth?.userId,
46
+ });
47
+ await (0, workflow_sets_1.updateWorkflowSetSourceWorkflow)(set.id, plannerResult.workflow_id);
48
+ return {
49
+ status: 201,
50
+ data: {
51
+ ...set,
52
+ source_workflow_id: plannerResult.workflow_id,
53
+ planner_workflow_id: plannerResult.workflow_id,
54
+ },
55
+ };
56
+ }
57
+ catch (err) {
58
+ if (err.code === '23505') {
59
+ return { status: 409, error: 'A workflow set with this name already exists' };
60
+ }
61
+ return { status: 500, error: err.message };
62
+ }
63
+ }
64
+ /**
65
+ * List workflow sets with optional filtering and pagination.
66
+ *
67
+ * @param input.status — filter by workflow set status
68
+ * @param input.search — free-text search term to match against set names or descriptions
69
+ * @param input.limit — maximum number of results to return
70
+ * @param input.offset — number of results to skip for pagination
71
+ * @returns `{ status: 200, data: WorkflowSet[] }` paginated list of workflow sets
72
+ */
73
+ async function listWorkflowSets(input) {
74
+ try {
75
+ const result = await (0, workflow_sets_1.listWorkflowSets)({
76
+ status: input.status,
77
+ search: input.search,
78
+ limit: input.limit,
79
+ offset: input.offset,
80
+ });
81
+ return { status: 200, data: result };
82
+ }
83
+ catch (err) {
84
+ return { status: 500, error: err.message };
85
+ }
86
+ }
87
+ /**
88
+ * Retrieve a single workflow set by ID.
89
+ *
90
+ * @param input.id — unique identifier of the workflow set
91
+ * @returns `{ status: 200, data: WorkflowSet }` the workflow set record, or 404 if not found
92
+ */
93
+ async function getWorkflowSet(input) {
94
+ try {
95
+ const set = await (0, workflow_sets_1.getWorkflowSet)(input.id);
96
+ if (!set) {
97
+ return { status: 404, error: 'Workflow set not found' };
98
+ }
99
+ return { status: 200, data: set };
100
+ }
101
+ catch (err) {
102
+ return { status: 500, error: err.message };
103
+ }
104
+ }
105
+ /**
106
+ * Replace the plan and optional namespaces on a workflow set.
107
+ *
108
+ * @param input.id — unique identifier of the workflow set to update
109
+ * @param input.plan — array of plan entries (required, must be an array)
110
+ * @param input.namespaces — optional array of namespace definitions associated with the plan
111
+ * @returns `{ status: 200, data: WorkflowSet }` the updated workflow set, or 404 if not found
112
+ */
113
+ async function updateWorkflowSetPlanApi(input) {
114
+ try {
115
+ if (!Array.isArray(input.plan)) {
116
+ return { status: 400, error: 'plan must be an array' };
117
+ }
118
+ const updated = await (0, workflow_sets_1.updateWorkflowSetPlan)(input.id, input.plan, input.namespaces || []);
119
+ if (!updated) {
120
+ return { status: 404, error: 'Workflow set not found' };
121
+ }
122
+ return { status: 200, data: updated };
123
+ }
124
+ catch (err) {
125
+ return { status: 500, error: err.message };
126
+ }
127
+ }
128
+ /**
129
+ * Transition a workflow set from "planned" to "building" status.
130
+ *
131
+ * Returns 409 if the set is not currently in "planned" status.
132
+ *
133
+ * @param input.id — unique identifier of the workflow set to build
134
+ * @returns `{ status: 200, data: { status: 'building', id } }` confirmation the build has started
135
+ */
136
+ async function buildWorkflowSet(input) {
137
+ try {
138
+ const set = await (0, workflow_sets_1.getWorkflowSet)(input.id);
139
+ if (!set) {
140
+ return { status: 404, error: 'Workflow set not found' };
141
+ }
142
+ if (set.status !== 'planned') {
143
+ return { status: 409, error: `Cannot build set in '${set.status}' status` };
144
+ }
145
+ await (0, workflow_sets_1.updateWorkflowSetStatus)(input.id, 'building');
146
+ return { status: 200, data: { status: 'building', id: input.id } };
147
+ }
148
+ catch (err) {
149
+ return { status: 500, error: err.message };
150
+ }
151
+ }
152
+ /**
153
+ * Transition a workflow set to "deploying" status.
154
+ *
155
+ * @param input.id — unique identifier of the workflow set to deploy
156
+ * @returns `{ status: 200, data: { status: 'deploying', id } }` confirmation the deploy has started
157
+ */
158
+ async function deployWorkflowSet(input) {
159
+ try {
160
+ const set = await (0, workflow_sets_1.getWorkflowSet)(input.id);
161
+ if (!set) {
162
+ return { status: 404, error: 'Workflow set not found' };
163
+ }
164
+ await (0, workflow_sets_1.updateWorkflowSetStatus)(input.id, 'deploying');
165
+ return { status: 200, data: { status: 'deploying', id: input.id } };
166
+ }
167
+ catch (err) {
168
+ return { status: 500, error: err.message };
169
+ }
170
+ }
@@ -0,0 +1,158 @@
1
+ import type { LTApiResult, LTApiAuth } from '../types/sdk';
2
+ /**
3
+ * Start a workflow — proxy for `Durable.Client.workflow.start()`.
4
+ *
5
+ * Resolves the task queue, enforces auth/role constraints, builds the
6
+ * LTEnvelope with IAM context, and delegates to the Durable client.
7
+ * Any WorkflowOptions field (workflowId, expire, entity, namespace,
8
+ * search, signalIn, pending, etc.) can be passed via `options` and
9
+ * flows through to the Durable client unchanged.
10
+ *
11
+ * @see https://docs.hotmesh.io/types/types_durable.WorkflowOptions.html
12
+ */
13
+ export declare function invokeWorkflow(input: {
14
+ type: string;
15
+ data?: Record<string, any>;
16
+ metadata?: Record<string, any>;
17
+ execute_as?: string;
18
+ /** Passthrough to Durable WorkflowOptions. */
19
+ options?: Record<string, any>;
20
+ }, auth: LTApiAuth): Promise<LTApiResult>;
21
+ /**
22
+ * Get the execution status of a workflow.
23
+ *
24
+ * Returns the HotMesh status code (0 = completed, 1 = running).
25
+ * Resolves the workflow handle via task record or worker registry.
26
+ *
27
+ * @param input.workflowId — HotMesh workflow ID
28
+ * @returns `{ status: 200, data: { workflowId, status } }` or 404
29
+ */
30
+ export declare function getWorkflowStatus(input: {
31
+ workflowId: string;
32
+ }): Promise<LTApiResult>;
33
+ /**
34
+ * Get the result of a completed workflow.
35
+ *
36
+ * Returns 202 if the workflow is still running, 200 with the result
37
+ * payload when complete. Never blocks — always returns immediately.
38
+ *
39
+ * @param input.workflowId — HotMesh workflow ID
40
+ * @returns `{ status: 200, data: { workflowId, result } }` or 202 if running
41
+ */
42
+ export declare function getWorkflowResult(input: {
43
+ workflowId: string;
44
+ }): Promise<LTApiResult>;
45
+ /**
46
+ * Terminate a running workflow.
47
+ *
48
+ * Interrupts the workflow execution immediately via HotMesh.
49
+ *
50
+ * @param input.workflowId — HotMesh workflow ID
51
+ * @returns `{ status: 200, data: { terminated: true, workflowId } }` or 404
52
+ */
53
+ export declare function terminateWorkflow(input: {
54
+ workflowId: string;
55
+ }): Promise<LTApiResult>;
56
+ /**
57
+ * Export the full state of a workflow.
58
+ *
59
+ * Returns the serialized workflow state including all activity
60
+ * results, signals, and metadata.
61
+ *
62
+ * @param input.workflowId — HotMesh workflow ID
63
+ * @returns `{ status: 200, data: <exported state> }` or 404
64
+ */
65
+ export declare function exportWorkflow(input: {
66
+ workflowId: string;
67
+ }): Promise<LTApiResult>;
68
+ /**
69
+ * List active workflow workers with their registration status.
70
+ *
71
+ * @param input.include_system — include system workflows (default: false)
72
+ * @returns `{ status: 200, data: { workers: [{ name, task_queue, registered, system }] } }`
73
+ */
74
+ export declare function listWorkers(input: {
75
+ include_system?: boolean;
76
+ }): Promise<LTApiResult>;
77
+ /**
78
+ * Discover all known workflow types from workers, history, and config.
79
+ *
80
+ * Merges three sources: active in-memory workers, historical entities
81
+ * from the durable jobs table, and registered workflow configs. Returns
82
+ * a unified list with status flags for each type.
83
+ *
84
+ * @param input.include_system — include system workflows (default: false)
85
+ * @returns `{ status: 200, data: { workflows: [{ workflow_type, task_queue, registered, active, invocable, ... }] } }`
86
+ */
87
+ export declare function listDiscoveredWorkflows(input: {
88
+ include_system?: boolean;
89
+ }): Promise<LTApiResult>;
90
+ /**
91
+ * List all cron-scheduled workflows and their active state.
92
+ *
93
+ * @returns `{ status: 200, data: { schedules: [{ workflow_type, cron_schedule, active, ... }] } }`
94
+ */
95
+ export declare function getCronStatus(): Promise<LTApiResult>;
96
+ /**
97
+ * List all registered workflow configurations.
98
+ *
99
+ * @returns `{ status: 200, data: { workflows: LTWorkflowConfig[] } }`
100
+ */
101
+ export declare function listWorkflowConfigs(): Promise<LTApiResult>;
102
+ /**
103
+ * Get a single workflow configuration by type.
104
+ *
105
+ * @param input.type — workflow type name (e.g. `"reviewContent"`)
106
+ * @returns `{ status: 200, data: <config> }` or 404
107
+ */
108
+ export declare function getWorkflowConfig(input: {
109
+ type: string;
110
+ }): Promise<LTApiResult>;
111
+ /**
112
+ * Create or replace a workflow configuration.
113
+ *
114
+ * Invalidates the config cache and restarts the cron schedule if one
115
+ * is defined. Idempotent — safe to call repeatedly with the same input.
116
+ *
117
+ * @param input.type — workflow type name
118
+ * @param input.invocable — whether the workflow can be started via the API
119
+ * @param input.task_queue — HotMesh task queue
120
+ * @param input.default_role — default escalation role
121
+ * @param input.description — human-readable description
122
+ * @param input.execute_as — service account for proxy invocation
123
+ * @param input.roles — roles that can resolve escalations
124
+ * @param input.invocation_roles — roles that can invoke this workflow
125
+ * @param input.consumes — workflow types whose data this workflow consumes
126
+ * @param input.tool_tags — MCP tool tags for discovery
127
+ * @param input.envelope_schema — JSON Schema for envelope.data validation
128
+ * @param input.resolver_schema — JSON Schema for resolver payload validation
129
+ * @param input.cron_schedule — cron expression for scheduled execution
130
+ * @returns `{ status: 200, data: <saved config> }`
131
+ */
132
+ export declare function upsertWorkflowConfig(input: {
133
+ type: string;
134
+ invocable?: boolean;
135
+ task_queue?: string | null;
136
+ default_role?: string;
137
+ description?: string | null;
138
+ execute_as?: string | null;
139
+ roles?: string[];
140
+ invocation_roles?: string[];
141
+ consumes?: string[];
142
+ tool_tags?: string[];
143
+ envelope_schema?: any;
144
+ resolver_schema?: any;
145
+ cron_schedule?: string | null;
146
+ }): Promise<LTApiResult>;
147
+ /**
148
+ * Delete a workflow configuration.
149
+ *
150
+ * Removes the config record and invalidates the cache. Active workers
151
+ * continue running — this only removes the config/interceptor binding.
152
+ *
153
+ * @param input.type — workflow type name
154
+ * @returns `{ status: 200, data: { deleted: true, workflow_type } }` or 404
155
+ */
156
+ export declare function deleteWorkflowConfig(input: {
157
+ type: string;
158
+ }): Promise<LTApiResult>;