@hotmeshio/long-tail 0.1.5 → 0.1.7

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 (431) hide show
  1. package/README.md +78 -8
  2. package/build/api/auth.d.ts +5 -0
  3. package/build/api/auth.js +42 -0
  4. package/build/api/bot-accounts.d.ts +50 -0
  5. package/build/api/bot-accounts.js +215 -0
  6. package/build/api/controlplane.d.ts +20 -0
  7. package/build/api/controlplane.js +110 -0
  8. package/build/api/dba.d.ts +15 -0
  9. package/build/api/dba.js +68 -0
  10. package/build/api/escalations.d.ts +70 -0
  11. package/build/api/escalations.js +656 -0
  12. package/build/api/exports.d.ts +32 -0
  13. package/build/api/exports.js +146 -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 +29 -0
  17. package/build/api/insight.js +90 -0
  18. package/build/api/maintenance.d.ts +7 -0
  19. package/build/api/maintenance.js +28 -0
  20. package/build/api/mcp-runs.d.ts +16 -0
  21. package/build/api/mcp-runs.js +62 -0
  22. package/build/api/mcp.d.ts +52 -0
  23. package/build/api/mcp.js +212 -0
  24. package/build/api/namespaces.d.ts +7 -0
  25. package/build/{routes/escalations/helpers.js → api/namespaces.js} +24 -12
  26. package/build/api/roles.d.ts +25 -0
  27. package/build/api/roles.js +159 -0
  28. package/build/api/settings.d.ts +2 -0
  29. package/build/api/settings.js +35 -0
  30. package/build/api/tasks.d.ts +27 -0
  31. package/build/api/tasks.js +96 -0
  32. package/build/api/users.d.ts +44 -0
  33. package/build/api/users.js +162 -0
  34. package/build/api/workflow-sets.d.ts +26 -0
  35. package/build/api/workflow-sets.js +119 -0
  36. package/build/api/workflows.d.ts +48 -0
  37. package/build/api/workflows.js +298 -0
  38. package/build/api/yaml-workflows.d.ts +87 -0
  39. package/build/api/yaml-workflows.js +556 -0
  40. package/build/index.d.ts +4 -0
  41. package/build/index.js +6 -1
  42. package/build/lib/db/migrate.js +3 -6
  43. package/{lib → build/lib}/db/schemas/001_schema.sql +3 -0
  44. package/build/lib/db/schemas/004_workflow_sets.sql +29 -0
  45. package/build/lib/db/schemas/005_unique_graph_topic.sql +7 -0
  46. package/{lib → build/lib}/db/schemas/011_system_workflow_configs.sql +14 -0
  47. package/build/lib/db/schemas/016_streamable_http.sql +7 -0
  48. package/build/lib/events/callback.d.ts +41 -0
  49. package/build/lib/events/callback.js +98 -0
  50. package/build/modules/config.js +1 -1
  51. package/build/routes/auth.js +37 -36
  52. package/build/routes/bot-accounts.js +34 -164
  53. package/build/routes/controlplane.js +20 -60
  54. package/build/routes/dba.js +18 -28
  55. package/build/routes/docs.js +25 -7
  56. package/build/routes/escalations/bulk.js +17 -192
  57. package/build/routes/escalations/list.js +29 -75
  58. package/build/routes/escalations/resolve.js +3 -193
  59. package/build/routes/escalations/single.js +13 -122
  60. package/build/routes/exports.js +44 -95
  61. package/build/routes/index.js +2 -0
  62. package/build/routes/insight.js +61 -40
  63. package/build/routes/maintenance.js +41 -17
  64. package/build/routes/mcp-runs.js +52 -60
  65. package/build/routes/mcp.js +55 -161
  66. package/build/routes/namespaces.js +9 -20
  67. package/build/routes/roles.js +23 -97
  68. package/build/routes/settings.js +37 -25
  69. package/build/routes/tasks.js +28 -64
  70. package/build/routes/users.js +24 -113
  71. package/build/routes/workflow-sets.d.ts +2 -0
  72. package/build/routes/workflow-sets.js +98 -0
  73. package/build/routes/workflows/config.js +23 -57
  74. package/build/routes/workflows/discovery.js +11 -85
  75. package/build/routes/workflows/invocation.js +16 -84
  76. package/build/routes/yaml-workflows/cron.d.ts +2 -0
  77. package/build/routes/yaml-workflows/cron.js +68 -0
  78. package/build/routes/yaml-workflows/crud.js +38 -193
  79. package/build/routes/yaml-workflows/deployment.js +15 -140
  80. package/build/routes/yaml-workflows/index.js +4 -1
  81. package/build/routes/yaml-workflows/versions.js +20 -58
  82. package/build/sdk/index.d.ts +327 -0
  83. package/build/sdk/index.js +298 -0
  84. package/build/services/controlplane/index.d.ts +1 -2
  85. package/build/services/controlplane/index.js +3 -3
  86. package/build/services/controlplane/sql.d.ts +2 -2
  87. package/build/services/controlplane/sql.js +4 -5
  88. package/build/services/controlplane/types.d.ts +1 -0
  89. package/build/services/cron/index.d.ts +17 -0
  90. package/build/services/cron/index.js +94 -1
  91. package/build/services/export/index.js +6 -1
  92. package/build/services/hotmesh-utils.js +2 -4
  93. package/build/services/insight/index.d.ts +18 -0
  94. package/build/services/insight/index.js +60 -0
  95. package/build/services/mcp/client/connection.d.ts +9 -0
  96. package/build/services/mcp/client/connection.js +49 -1
  97. package/build/services/mcp/client/tools.js +13 -1
  98. package/build/services/mcp/db-server/schemas.d.ts +2 -2
  99. package/build/services/mcp/db.d.ts +1 -1
  100. package/build/services/mcp/db.js +10 -0
  101. package/build/services/mcp/playwright-server/schemas.d.ts +4 -4
  102. package/build/services/mcp/sql.d.ts +1 -1
  103. package/build/services/mcp/sql.js +2 -2
  104. package/build/services/mcp/types.d.ts +3 -1
  105. package/build/services/mcp-runs/sql.js +1 -1
  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 +8 -0
  115. package/build/services/yaml-workflow/db.js +41 -0
  116. package/build/services/yaml-workflow/invoke.d.ts +19 -0
  117. package/build/services/yaml-workflow/invoke.js +80 -0
  118. package/build/services/yaml-workflow/pipeline/build/dag.js +1 -1
  119. package/build/services/yaml-workflow/pipeline/build/wiring.d.ts +1 -1
  120. package/build/services/yaml-workflow/pipeline/build/wiring.js +102 -2
  121. package/build/services/yaml-workflow/pipeline/prompts.d.ts +1 -1
  122. package/build/services/yaml-workflow/pipeline/prompts.js +44 -1
  123. package/build/services/yaml-workflow/sql.d.ts +5 -1
  124. package/build/services/yaml-workflow/sql.js +23 -3
  125. package/build/services/yaml-workflow/types.d.ts +16 -1
  126. package/build/services/yaml-workflow/workers/callbacks.js +16 -2
  127. package/build/services/yaml-workflow/workers/register.js +36 -1
  128. package/build/start/adapters.js +4 -0
  129. package/build/system/index.js +12 -0
  130. package/build/system/mcp-servers/admin/schemas.d.ts +12 -12
  131. package/build/system/mcp-servers/db-query/schemas.d.ts +2 -2
  132. package/build/system/mcp-servers/knowledge.js +1 -1
  133. package/build/system/mcp-servers/playwright/schemas.d.ts +18 -18
  134. package/build/system/mcp-servers/playwright-cli/schemas.d.ts +34 -34
  135. package/build/system/mcp-servers/playwright-cli/tools-capture.js +5 -1
  136. package/build/system/mcp-servers/vision.js +54 -17
  137. package/build/system/seed/server-definitions.d.ts +7 -0
  138. package/build/system/seed/server-definitions.js +6 -2
  139. package/build/system/seed/tool-manifests-workflows.d.ts +7 -0
  140. package/build/system/seed/tool-manifests-workflows.js +10 -3
  141. package/build/system/workflows/mcp-workflow-builder/activities/caches.d.ts +5 -0
  142. package/build/system/workflows/mcp-workflow-builder/activities/caches.js +8 -0
  143. package/build/system/workflows/mcp-workflow-builder/activities/index.d.ts +2 -0
  144. package/build/system/workflows/mcp-workflow-builder/activities/index.js +8 -0
  145. package/build/system/workflows/mcp-workflow-builder/activities/llm.d.ts +2 -0
  146. package/build/system/workflows/mcp-workflow-builder/activities/llm.js +25 -0
  147. package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.d.ts +11 -0
  148. package/build/system/workflows/mcp-workflow-builder/activities/tool-loader.js +34 -0
  149. package/build/system/workflows/mcp-workflow-builder/index.d.ts +16 -0
  150. package/build/system/workflows/mcp-workflow-builder/index.js +253 -0
  151. package/build/system/workflows/mcp-workflow-builder/prompts.d.ts +8 -0
  152. package/build/system/workflows/mcp-workflow-builder/prompts.js +316 -0
  153. package/build/system/workflows/mcp-workflow-planner/activities/analyze.d.ts +11 -0
  154. package/build/system/workflows/mcp-workflow-planner/activities/analyze.js +36 -0
  155. package/build/system/workflows/mcp-workflow-planner/activities/index.d.ts +3 -0
  156. package/build/system/workflows/mcp-workflow-planner/activities/index.js +12 -0
  157. package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +19 -0
  158. package/build/system/workflows/mcp-workflow-planner/activities/persist.js +55 -0
  159. package/build/system/workflows/mcp-workflow-planner/activities/plan.d.ts +10 -0
  160. package/build/system/workflows/mcp-workflow-planner/activities/plan.js +43 -0
  161. package/build/system/workflows/mcp-workflow-planner/index.d.ts +7 -0
  162. package/build/system/workflows/mcp-workflow-planner/index.js +152 -0
  163. package/build/system/workflows/mcp-workflow-planner/prompts.d.ts +7 -0
  164. package/build/system/workflows/mcp-workflow-planner/prompts.js +77 -0
  165. package/build/system/workflows/shared/tool-loader.js +3 -0
  166. package/build/tsconfig.tsbuildinfo +1 -1
  167. package/build/types/index.d.ts +1 -0
  168. package/build/types/mcp.d.ts +4 -3
  169. package/build/types/sdk.d.ts +27 -0
  170. package/build/types/sdk.js +2 -0
  171. package/build/types/workflow-set.d.ts +44 -0
  172. package/build/types/workflow-set.js +5 -0
  173. package/build/types/yaml-workflow.d.ts +6 -2
  174. package/dashboard/dist/assets/AdminDashboard-DRjkRSjJ.js +2 -0
  175. package/dashboard/dist/assets/{AdminDashboard-CTyAMUJR.js.map → AdminDashboard-DRjkRSjJ.js.map} +1 -1
  176. package/dashboard/dist/assets/AvailableEscalationsPage-CnivX4Tz.js +2 -0
  177. package/dashboard/dist/assets/AvailableEscalationsPage-CnivX4Tz.js.map +1 -0
  178. package/dashboard/dist/assets/BotPicker-DwwaBhTH.js +2 -0
  179. package/dashboard/dist/assets/{BotPicker-C51nKFEu.js.map → BotPicker-DwwaBhTH.js.map} +1 -1
  180. package/dashboard/dist/assets/{CollapsibleSection-BSyfd8uL.js → CollapsibleSection-DQpaVA0M.js} +2 -2
  181. package/dashboard/dist/assets/{CollapsibleSection-BSyfd8uL.js.map → CollapsibleSection-DQpaVA0M.js.map} +1 -1
  182. package/dashboard/dist/assets/{ConfirmDeleteModal-CBdhia5T.js → ConfirmDeleteModal-B7JoDNvt.js} +2 -2
  183. package/dashboard/dist/assets/{ConfirmDeleteModal-CBdhia5T.js.map → ConfirmDeleteModal-B7JoDNvt.js.map} +1 -1
  184. package/dashboard/dist/assets/{CopyableId-dGlewBCS.js → CopyableId-AqoZayBG.js} +2 -2
  185. package/dashboard/dist/assets/{CopyableId-dGlewBCS.js.map → CopyableId-AqoZayBG.js.map} +1 -1
  186. package/dashboard/dist/assets/CredentialsPage-qGw1kQzi.js +2 -0
  187. package/dashboard/dist/assets/CredentialsPage-qGw1kQzi.js.map +1 -0
  188. package/dashboard/dist/assets/{CustomDurationPicker-BataWFj8.js → CustomDurationPicker-D1HUQcd0.js} +2 -2
  189. package/dashboard/dist/assets/{CustomDurationPicker-BataWFj8.js.map → CustomDurationPicker-D1HUQcd0.js.map} +1 -1
  190. package/dashboard/dist/assets/{DataTable-B3uf5CCo.js → DataTable-DKvSKoVG.js} +2 -2
  191. package/dashboard/dist/assets/{DataTable-B3uf5CCo.js.map → DataTable-DKvSKoVG.js.map} +1 -1
  192. package/dashboard/dist/assets/{ElapsedCell-G5oSwTpT.js → ElapsedCell-B0yrReGQ.js} +2 -2
  193. package/dashboard/dist/assets/{ElapsedCell-G5oSwTpT.js.map → ElapsedCell-B0yrReGQ.js.map} +1 -1
  194. package/dashboard/dist/assets/{EmptyState-BChBJNGS.js → EmptyState-X0fIzYID.js} +2 -2
  195. package/dashboard/dist/assets/{EmptyState-BChBJNGS.js.map → EmptyState-X0fIzYID.js.map} +1 -1
  196. package/dashboard/dist/assets/{EscalationsOverview-CxUv8xjG.js → EscalationsOverview-BQAT9W7r.js} +2 -2
  197. package/dashboard/dist/assets/{EscalationsOverview-CxUv8xjG.js.map → EscalationsOverview-BQAT9W7r.js.map} +1 -1
  198. package/dashboard/dist/assets/{EventTable-CVt8B0BZ.js → EventTable-CX1KNLhZ.js} +2 -2
  199. package/dashboard/dist/assets/{EventTable-CVt8B0BZ.js.map → EventTable-CX1KNLhZ.js.map} +1 -1
  200. package/dashboard/dist/assets/{FilterBar-CShf0oe7.js → FilterBar-DMTvuQy-.js} +2 -2
  201. package/dashboard/dist/assets/{FilterBar-CShf0oe7.js.map → FilterBar-DMTvuQy-.js.map} +1 -1
  202. package/dashboard/dist/assets/ListToolbar-DTOSxoEy.js +2 -0
  203. package/dashboard/dist/assets/ListToolbar-DTOSxoEy.js.map +1 -0
  204. package/dashboard/dist/assets/{McpOverview-CbaZRnJl.js → McpOverview-BaKTIWrG.js} +2 -2
  205. package/dashboard/dist/assets/{McpOverview-CbaZRnJl.js.map → McpOverview-BaKTIWrG.js.map} +1 -1
  206. package/dashboard/dist/assets/McpQueryDetailPage-CC08T5k8.js +5 -0
  207. package/dashboard/dist/assets/McpQueryDetailPage-CC08T5k8.js.map +1 -0
  208. package/dashboard/dist/assets/McpQueryPage-CVfF9dYg.js +2 -0
  209. package/dashboard/dist/assets/McpQueryPage-CVfF9dYg.js.map +1 -0
  210. package/dashboard/dist/assets/McpRunDetailPage-CKs1RWeV.js +2 -0
  211. package/dashboard/dist/assets/McpRunDetailPage-CKs1RWeV.js.map +1 -0
  212. package/dashboard/dist/assets/McpRunsPage-CcPD_tY1.js +2 -0
  213. package/dashboard/dist/assets/McpRunsPage-CcPD_tY1.js.map +1 -0
  214. package/dashboard/dist/assets/{Modal-CI5RBPOQ.js → Modal-_2AbWxJT.js} +2 -2
  215. package/dashboard/dist/assets/{Modal-CI5RBPOQ.js.map → Modal-_2AbWxJT.js.map} +1 -1
  216. package/dashboard/dist/assets/OperatorDashboard-BGiRaRDr.js +2 -0
  217. package/dashboard/dist/assets/OperatorDashboard-BGiRaRDr.js.map +1 -0
  218. package/dashboard/dist/assets/{PageHeader-SMD9qtOO.js → PageHeader-DVr5Qyzm.js} +2 -2
  219. package/dashboard/dist/assets/{PageHeader-SMD9qtOO.js.map → PageHeader-DVr5Qyzm.js.map} +1 -1
  220. package/dashboard/dist/assets/{PageHeaderWithStats-TikLQsTp.js → PageHeaderWithStats-D0KRASML.js} +2 -2
  221. package/dashboard/dist/assets/{PageHeaderWithStats-TikLQsTp.js.map → PageHeaderWithStats-D0KRASML.js.map} +1 -1
  222. package/dashboard/dist/assets/{PriorityBadge-CQ0EsLTA.js → PriorityBadge-Bx2559OU.js} +2 -2
  223. package/dashboard/dist/assets/{PriorityBadge-CQ0EsLTA.js.map → PriorityBadge-Bx2559OU.js.map} +1 -1
  224. package/dashboard/dist/assets/ProcessDetailPage-69I--sry.js +2 -0
  225. package/dashboard/dist/assets/ProcessDetailPage-69I--sry.js.map +1 -0
  226. package/dashboard/dist/assets/ProcessesListPage-BDpUbua2.js +2 -0
  227. package/dashboard/dist/assets/ProcessesListPage-BDpUbua2.js.map +1 -0
  228. package/dashboard/dist/assets/{RolePill-Crj4TH5p.js → RolePill-CcAqEaSt.js} +2 -2
  229. package/dashboard/dist/assets/{RolePill-Crj4TH5p.js.map → RolePill-CcAqEaSt.js.map} +1 -1
  230. package/dashboard/dist/assets/{RolesPage-C_RInUwS.js → RolesPage-Cl23Hjet.js} +2 -2
  231. package/dashboard/dist/assets/{RolesPage-C_RInUwS.js.map → RolesPage-Cl23Hjet.js.map} +1 -1
  232. package/dashboard/dist/assets/{RowActions-Cp5HyK_w.js → RowActions-B4mqIt3Z.js} +2 -2
  233. package/dashboard/dist/assets/{RowActions-Cp5HyK_w.js.map → RowActions-B4mqIt3Z.js.map} +1 -1
  234. package/dashboard/dist/assets/{StatCard-BKZLSgNV.js → StatCard-Cz_2OjAZ.js} +2 -2
  235. package/dashboard/dist/assets/{StatCard-BKZLSgNV.js.map → StatCard-Cz_2OjAZ.js.map} +1 -1
  236. package/dashboard/dist/assets/{StatusBadge-BYNGGZK5.js → StatusBadge-Wi2FJZsn.js} +2 -2
  237. package/dashboard/dist/assets/{StatusBadge-BYNGGZK5.js.map → StatusBadge-Wi2FJZsn.js.map} +1 -1
  238. package/dashboard/dist/assets/StepIndicator-PW5NRDMb.js +2 -0
  239. package/dashboard/dist/assets/StepIndicator-PW5NRDMb.js.map +1 -0
  240. package/dashboard/dist/assets/{StickyPagination-CTosgiU2.js → StickyPagination-Bl2Uzz65.js} +2 -2
  241. package/dashboard/dist/assets/{StickyPagination-CTosgiU2.js.map → StickyPagination-Bl2Uzz65.js.map} +1 -1
  242. package/dashboard/dist/assets/{SwimlaneTimeline-ylG5Ps1s.js → SwimlaneTimeline-CUPqMd0z.js} +2 -2
  243. package/dashboard/dist/assets/{SwimlaneTimeline-ylG5Ps1s.js.map → SwimlaneTimeline-CUPqMd0z.js.map} +1 -1
  244. package/dashboard/dist/assets/TagInput-BLtf86Ly.js +2 -0
  245. package/dashboard/dist/assets/TagInput-BLtf86Ly.js.map +1 -0
  246. package/dashboard/dist/assets/{TaskDetailPage-C9pDGdD2.js → TaskDetailPage-BXJFX74D.js} +2 -2
  247. package/dashboard/dist/assets/{TaskDetailPage-C9pDGdD2.js.map → TaskDetailPage-BXJFX74D.js.map} +1 -1
  248. package/dashboard/dist/assets/{TaskQueuePill-BtJbZTT0.js → TaskQueuePill-CWYj3xKe.js} +2 -2
  249. package/dashboard/dist/assets/{TaskQueuePill-BtJbZTT0.js.map → TaskQueuePill-CWYj3xKe.js.map} +1 -1
  250. package/dashboard/dist/assets/{TasksListPage-DtFLUEhg.js → TasksListPage-C3cX94Mw.js} +2 -2
  251. package/dashboard/dist/assets/{TasksListPage-DtFLUEhg.js.map → TasksListPage-C3cX94Mw.js.map} +1 -1
  252. package/dashboard/dist/assets/{TimeAgo-WuM6xImZ.js → TimeAgo-B_5yDDHV.js} +2 -2
  253. package/dashboard/dist/assets/{TimeAgo-WuM6xImZ.js.map → TimeAgo-B_5yDDHV.js.map} +1 -1
  254. package/dashboard/dist/assets/{TimestampCell-IVL_-Upy.js → TimestampCell-DRX724uU.js} +2 -2
  255. package/dashboard/dist/assets/{TimestampCell-IVL_-Upy.js.map → TimestampCell-DRX724uU.js.map} +1 -1
  256. package/dashboard/dist/assets/{UserName-DU9qeg13.js → UserName-Ca8FA469.js} +2 -2
  257. package/dashboard/dist/assets/{UserName-DU9qeg13.js.map → UserName-Ca8FA469.js.map} +1 -1
  258. package/dashboard/dist/assets/WorkflowExecutionPage-BBYWEV2P.js +2 -0
  259. package/dashboard/dist/assets/WorkflowExecutionPage-BBYWEV2P.js.map +1 -0
  260. package/dashboard/dist/assets/WorkflowPill-BXifAuLi.js +2 -0
  261. package/dashboard/dist/assets/{WorkflowPill-Diw8iWBP.js.map → WorkflowPill-BXifAuLi.js.map} +1 -1
  262. package/dashboard/dist/assets/WorkflowsDashboard-Drl3juz9.js +2 -0
  263. package/dashboard/dist/assets/WorkflowsDashboard-Drl3juz9.js.map +1 -0
  264. package/dashboard/dist/assets/{WorkflowsOverview-CPuvA4t3.js → WorkflowsOverview-03IRrDLg.js} +2 -2
  265. package/dashboard/dist/assets/{WorkflowsOverview-CPuvA4t3.js.map → WorkflowsOverview-03IRrDLg.js.map} +1 -1
  266. package/dashboard/dist/assets/YamlWorkflowsPage-DC2cLxVi.js +2 -0
  267. package/dashboard/dist/assets/YamlWorkflowsPage-DC2cLxVi.js.map +1 -0
  268. package/dashboard/dist/assets/{bots-BPiZXf2h.js → bots-DZEXcgiJ.js} +2 -2
  269. package/dashboard/dist/assets/{bots-BPiZXf2h.js.map → bots-DZEXcgiJ.js.map} +1 -1
  270. package/dashboard/dist/assets/{escalation-DTY_OKRh.js → escalation-Cw48lNaF.js} +2 -2
  271. package/dashboard/dist/assets/{escalation-DTY_OKRh.js.map → escalation-Cw48lNaF.js.map} +1 -1
  272. package/dashboard/dist/assets/{escalation-columns-C91fHSkp.js → escalation-columns-NINpo3qf.js} +2 -2
  273. package/dashboard/dist/assets/{escalation-columns-C91fHSkp.js.map → escalation-columns-NINpo3qf.js.map} +1 -1
  274. package/dashboard/dist/assets/helpers-Cuu3xKfr.js +2 -0
  275. package/dashboard/dist/assets/helpers-Cuu3xKfr.js.map +1 -0
  276. package/dashboard/dist/assets/helpers-fk_qr729.js +2 -0
  277. package/dashboard/dist/assets/helpers-fk_qr729.js.map +1 -0
  278. package/dashboard/dist/assets/index-B98ipWxE.js +2 -0
  279. package/dashboard/dist/assets/{index-CDWOfCmi.js.map → index-B98ipWxE.js.map} +1 -1
  280. package/dashboard/dist/assets/{index-D_qEAYrg.js → index-BIG3KooI.js} +2 -2
  281. package/dashboard/dist/assets/{index-D_qEAYrg.js.map → index-BIG3KooI.js.map} +1 -1
  282. package/dashboard/dist/assets/{index-DSzSoku1.js → index-BwN3KP_L.js} +91 -93
  283. package/dashboard/dist/assets/index-BwN3KP_L.js.map +1 -0
  284. package/dashboard/dist/assets/index-Bxe8h1x4.js +17 -0
  285. package/dashboard/dist/assets/index-Bxe8h1x4.js.map +1 -0
  286. package/dashboard/dist/assets/index-CNI7k7oB.js +6 -0
  287. package/dashboard/dist/assets/index-CNI7k7oB.js.map +1 -0
  288. package/dashboard/dist/assets/index-CORHB0WC.js +2 -0
  289. package/dashboard/dist/assets/index-CORHB0WC.js.map +1 -0
  290. package/dashboard/dist/assets/index-DcIKW-cZ.css +1 -0
  291. package/dashboard/dist/assets/index-Dj-z-x8M.js +2 -0
  292. package/dashboard/dist/assets/index-Dj-z-x8M.js.map +1 -0
  293. package/dashboard/dist/assets/index-DwRytW9O.js +5 -0
  294. package/dashboard/dist/assets/index-DwRytW9O.js.map +1 -0
  295. package/dashboard/dist/assets/index-aRvL-dXp.js +2 -0
  296. package/dashboard/dist/assets/index-aRvL-dXp.js.map +1 -0
  297. package/dashboard/dist/assets/index-b03HlbnH.js +2 -0
  298. package/dashboard/dist/assets/{index-BtOwLI0K.js.map → index-b03HlbnH.js.map} +1 -1
  299. package/dashboard/dist/assets/mcp-BZoFryNc.js +2 -0
  300. package/dashboard/dist/assets/mcp-BZoFryNc.js.map +1 -0
  301. package/dashboard/dist/assets/mcp-query-wiw1kwm8.js +2 -0
  302. package/dashboard/dist/assets/mcp-query-wiw1kwm8.js.map +1 -0
  303. package/dashboard/dist/assets/{mcp-runs-DmXYJD19.js → mcp-runs-BaEKnf5v.js} +2 -2
  304. package/dashboard/dist/assets/{mcp-runs-DmXYJD19.js.map → mcp-runs-BaEKnf5v.js.map} +1 -1
  305. package/dashboard/dist/assets/{namespaces-DoGa7jc7.js → namespaces-BwnZI4_A.js} +2 -2
  306. package/dashboard/dist/assets/{namespaces-DoGa7jc7.js.map → namespaces-BwnZI4_A.js.map} +1 -1
  307. package/dashboard/dist/assets/{roles-wCdQ2Z7k.js → roles-Bgn1K8zU.js} +2 -2
  308. package/dashboard/dist/assets/{roles-wCdQ2Z7k.js.map → roles-Bgn1K8zU.js.map} +1 -1
  309. package/dashboard/dist/assets/{settings-DDe_L7JT.js → settings-CizYiutL.js} +2 -2
  310. package/dashboard/dist/assets/{settings-DDe_L7JT.js.map → settings-CizYiutL.js.map} +1 -1
  311. package/dashboard/dist/assets/{tasks-3Hih8Bt7.js → tasks-Bmte_hc4.js} +2 -2
  312. package/dashboard/dist/assets/{tasks-3Hih8Bt7.js.map → tasks-Bmte_hc4.js.map} +1 -1
  313. package/dashboard/dist/assets/useEventHooks-CUCxpiI2.js +2 -0
  314. package/dashboard/dist/assets/useEventHooks-CUCxpiI2.js.map +1 -0
  315. package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js +2 -0
  316. package/dashboard/dist/assets/useExpandedRows-Cg9iq6Vy.js.map +1 -0
  317. package/dashboard/dist/assets/{useYamlActivityEvents-B5dHec6Y.js → useYamlActivityEvents-Cum02Ej9.js} +2 -2
  318. package/dashboard/dist/assets/useYamlActivityEvents-Cum02Ej9.js.map +1 -0
  319. package/dashboard/dist/assets/{users-BTagPmGW.js → users-NSDgTt-z.js} +2 -2
  320. package/dashboard/dist/assets/{users-BTagPmGW.js.map → users-NSDgTt-z.js.map} +1 -1
  321. package/dashboard/dist/assets/{vendor-icons-DCLlGYO9.js → vendor-icons-D1DdudfH.js} +141 -66
  322. package/dashboard/dist/assets/vendor-icons-D1DdudfH.js.map +1 -0
  323. package/dashboard/dist/assets/{workflows-B20dR3NE.js → workflows-k0XRdGXx.js} +2 -2
  324. package/dashboard/dist/assets/{workflows-B20dR3NE.js.map → workflows-k0XRdGXx.js.map} +1 -1
  325. package/dashboard/dist/assets/yaml-workflows-DAre8I78.js +2 -0
  326. package/dashboard/dist/assets/yaml-workflows-DAre8I78.js.map +1 -0
  327. package/dashboard/dist/index.html +3 -3
  328. package/docs/api/mcp-servers.md +60 -2
  329. package/docs/architecture.md +3 -3
  330. package/docs/dashboard.md +1 -1
  331. package/docs/epic-integration.md +224 -0
  332. package/docs/escalation-strategies.md +2 -3
  333. package/docs/events.md +28 -0
  334. package/docs/mcp.md +301 -31
  335. package/docs/sdk.md +177 -0
  336. package/docs/story.md +157 -0
  337. package/docs/workflow-builder.md +371 -0
  338. package/package.json +5 -4
  339. package/build/routes/escalations/helpers.d.ts +0 -5
  340. package/build/routes/resolve.d.ts +0 -9
  341. package/build/routes/resolve.js +0 -19
  342. package/build/routes/yaml-workflows/helpers.d.ts +0 -2
  343. package/build/routes/yaml-workflows/helpers.js +0 -8
  344. package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js +0 -2
  345. package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js +0 -2
  346. package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js.map +0 -1
  347. package/dashboard/dist/assets/BotPicker-C51nKFEu.js +0 -2
  348. package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js +0 -2
  349. package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js.map +0 -1
  350. package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js +0 -5
  351. package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js.map +0 -1
  352. package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js +0 -2
  353. package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js.map +0 -1
  354. package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js +0 -2
  355. package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js.map +0 -1
  356. package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js +0 -2
  357. package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js.map +0 -1
  358. package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js +0 -2
  359. package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js.map +0 -1
  360. package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js +0 -2
  361. package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js.map +0 -1
  362. package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js +0 -2
  363. package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js.map +0 -1
  364. package/dashboard/dist/assets/RefreshButton-BcQDObrv.js +0 -2
  365. package/dashboard/dist/assets/RefreshButton-BcQDObrv.js.map +0 -1
  366. package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js +0 -2
  367. package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js.map +0 -1
  368. package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js +0 -2
  369. package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js.map +0 -1
  370. package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js +0 -2
  371. package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js +0 -2
  372. package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js.map +0 -1
  373. package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js +0 -2
  374. package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js.map +0 -1
  375. package/dashboard/dist/assets/helpers-DBUZ9pnG.js +0 -2
  376. package/dashboard/dist/assets/helpers-DBUZ9pnG.js.map +0 -1
  377. package/dashboard/dist/assets/index-BOeA-gfK.js +0 -17
  378. package/dashboard/dist/assets/index-BOeA-gfK.js.map +0 -1
  379. package/dashboard/dist/assets/index-BZ6K_kmL.js +0 -3
  380. package/dashboard/dist/assets/index-BZ6K_kmL.js.map +0 -1
  381. package/dashboard/dist/assets/index-Bpm0yeoi.js +0 -2
  382. package/dashboard/dist/assets/index-Bpm0yeoi.js.map +0 -1
  383. package/dashboard/dist/assets/index-BtOwLI0K.js +0 -2
  384. package/dashboard/dist/assets/index-CBF3ZvRZ.js +0 -6
  385. package/dashboard/dist/assets/index-CBF3ZvRZ.js.map +0 -1
  386. package/dashboard/dist/assets/index-CDWOfCmi.js +0 -2
  387. package/dashboard/dist/assets/index-Ce6sL__n.js +0 -2
  388. package/dashboard/dist/assets/index-Ce6sL__n.js.map +0 -1
  389. package/dashboard/dist/assets/index-DSzSoku1.js.map +0 -1
  390. package/dashboard/dist/assets/index-gCy9XX3W.css +0 -1
  391. package/dashboard/dist/assets/mcp-BzVpaaKF.js +0 -2
  392. package/dashboard/dist/assets/mcp-BzVpaaKF.js.map +0 -1
  393. package/dashboard/dist/assets/mcp-query-wTuxTTCV.js +0 -2
  394. package/dashboard/dist/assets/mcp-query-wTuxTTCV.js.map +0 -1
  395. package/dashboard/dist/assets/useNatsEvents-DeGKHFTX.js +0 -2
  396. package/dashboard/dist/assets/useNatsEvents-DeGKHFTX.js.map +0 -1
  397. package/dashboard/dist/assets/useYamlActivityEvents-B5dHec6Y.js.map +0 -1
  398. package/dashboard/dist/assets/vendor-icons-DCLlGYO9.js.map +0 -1
  399. package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js +0 -2
  400. package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js.map +0 -1
  401. package/docs/img/01-login.png +0 -0
  402. package/docs/img/02-dashboard-home.png +0 -0
  403. package/docs/img/03-processes-list.png +0 -0
  404. package/docs/img/04-escalations-list.png +0 -0
  405. package/docs/img/05-mcp-servers.png +0 -0
  406. package/docs/img/06-mcp-pipelines.png +0 -0
  407. package/docs/img/07-workflows-list.png +0 -0
  408. package/docs/img/compilation/01-query-submit.png +0 -0
  409. package/docs/img/compilation/02-mcp-servers.png +0 -0
  410. package/docs/img/compilation/03-query-completed.png +0 -0
  411. package/docs/img/compilation/04-wizard-original.png +0 -0
  412. package/docs/img/compilation/05-wizard-timeline.png +0 -0
  413. package/docs/img/compilation/06-wizard-profile.png +0 -0
  414. package/docs/img/compilation/07-wizard-deploy.png +0 -0
  415. package/docs/img/compilation/08-wizard-test-modal.png +0 -0
  416. package/docs/img/compilation/09-wizard-test-compare.png +0 -0
  417. package/docs/img/compilation/10-wizard-verify.png +0 -0
  418. package/lib/db/README.md +0 -8
  419. /package/{lib → build/lib}/db/schemas/002_seed.sql +0 -0
  420. /package/{lib → build/lib}/db/schemas/003_workflow_discovery.sql +0 -0
  421. /package/{lib → build/lib}/db/schemas/004_query_router.sql +0 -0
  422. /package/{lib → build/lib}/db/schemas/005_triage_router.sql +0 -0
  423. /package/{lib → build/lib}/db/schemas/006_oauth.sql +0 -0
  424. /package/{lib → build/lib}/db/schemas/007_security.sql +0 -0
  425. /package/{lib → build/lib}/db/schemas/008_bot_accounts.sql +0 -0
  426. /package/{lib → build/lib}/db/schemas/009_audit_trail.sql +0 -0
  427. /package/{lib → build/lib}/db/schemas/010_credential_providers.sql +0 -0
  428. /package/{lib → build/lib}/db/schemas/012_drop_modality.sql +0 -0
  429. /package/{lib → build/lib}/db/schemas/013_execute_as.sql +0 -0
  430. /package/{lib → build/lib}/db/schemas/014_ephemeral_credentials.sql +0 -0
  431. /package/{lib → build/lib}/db/schemas/015_knowledge.sql +0 -0
@@ -34,35 +34,24 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const express_1 = require("express");
37
- const yamlDb = __importStar(require("../../services/yaml-workflow/db"));
38
- const yamlGenerator = __importStar(require("../../services/yaml-workflow/generator"));
39
- const task_1 = require("../../services/task");
40
- const helpers_1 = require("./helpers");
37
+ const api = __importStar(require("../../api/yaml-workflows"));
41
38
  const router = (0, express_1.Router)();
42
39
  /**
43
40
  * GET /api/yaml-workflows
44
41
  * List YAML workflows with optional status filter.
45
42
  */
46
43
  router.get('/', async (req, res) => {
47
- try {
48
- const result = await yamlDb.listYamlWorkflows({
49
- status: req.query.status,
50
- graph_topic: req.query.graph_topic,
51
- app_id: req.query.app_id,
52
- search: req.query.search,
53
- source_workflow_id: req.query.source_workflow_id,
54
- limit: req.query.limit ? parseInt(req.query.limit, 10) : undefined,
55
- offset: req.query.offset ? parseInt(req.query.offset, 10) : undefined,
56
- });
57
- res.json(result);
58
- }
59
- catch (err) {
60
- if ((0, helpers_1.isNotFoundError)(err)) {
61
- res.status(404).json({ error: 'YAML workflow not found' });
62
- return;
63
- }
64
- res.status(500).json({ error: err.message });
65
- }
44
+ const result = await api.listYamlWorkflows({
45
+ status: req.query.status,
46
+ graph_topic: req.query.graph_topic,
47
+ app_id: req.query.app_id,
48
+ search: req.query.search,
49
+ source_workflow_id: req.query.source_workflow_id,
50
+ set_id: req.query.set_id,
51
+ limit: req.query.limit ? parseInt(req.query.limit, 10) : undefined,
52
+ offset: req.query.offset ? parseInt(req.query.offset, 10) : undefined,
53
+ });
54
+ res.status(result.status).json(result.data ?? { error: result.error });
66
55
  });
67
56
  /**
68
57
  * POST /api/yaml-workflows
@@ -70,82 +59,26 @@ router.get('/', async (req, res) => {
70
59
  * Body: { workflow_id, task_queue, workflow_name, name, description? }
71
60
  */
72
61
  router.post('/', async (req, res) => {
73
- try {
74
- const { workflow_id, task_queue, workflow_name, name, description, app_id, subscribes, tags: userTags, compilation_feedback } = req.body;
75
- if (!workflow_id || !task_queue || !workflow_name || !name) {
76
- res.status(400).json({
77
- error: 'workflow_id, task_queue, workflow_name, and name are required',
78
- });
79
- return;
80
- }
81
- // Reject compilation of executions that exhausted their tool rounds —
82
- // the trace is incomplete and would produce a broken workflow.
83
- const task = await (0, task_1.getTaskByWorkflowId)(workflow_id);
84
- if (task) {
85
- const milestones = task.milestones ?? [];
86
- const roundsExhausted = milestones.some((m) => m.name === 'rounds_exhausted');
87
- if (roundsExhausted) {
88
- res.status(422).json({
89
- error: 'Cannot compile: the source execution exhausted its tool rounds without completing the task. Resolve the escalation and resubmit.',
90
- });
91
- return;
92
- }
93
- }
94
- // Generate YAML from execution
95
- const result = await yamlGenerator.generateYamlFromExecution({
96
- workflowId: workflow_id,
97
- taskQueue: task_queue,
98
- workflowName: workflow_name,
99
- name,
100
- description,
101
- appId: app_id,
102
- subscribes,
103
- compilationFeedback: compilation_feedback,
104
- });
105
- // Merge auto-derived tags with user-provided tags
106
- const mergedTags = [...new Set([...(result.tags || []), ...(Array.isArray(userTags) ? userTags : [])])];
107
- // Store in DB
108
- const record = await yamlDb.createYamlWorkflow({
109
- name,
110
- description,
111
- app_id: result.appId,
112
- yaml_content: result.yaml,
113
- graph_topic: result.graphTopic,
114
- input_schema: result.inputSchema,
115
- output_schema: result.outputSchema,
116
- activity_manifest: result.activityManifest,
117
- tags: mergedTags,
118
- source_workflow_id: workflow_id,
119
- source_workflow_type: workflow_name,
120
- original_prompt: result.originalPrompt || undefined,
121
- category: result.category || undefined,
122
- metadata: {
123
- input_field_meta: result.inputFieldMeta,
124
- ...(result.validationIssues?.length ? { validation_warnings: result.validationIssues } : {}),
125
- },
126
- });
127
- res.status(201).json(record);
128
- }
129
- catch (err) {
130
- if (err.message?.includes('duplicate key') || err.code === '23505') {
131
- res.status(409).json({ error: 'A tool with that name already exists' });
132
- return;
133
- }
134
- res.status(500).json({ error: err.message });
135
- }
62
+ const result = await api.createYamlWorkflow(req.body);
63
+ res.status(result.status).json(result.data ?? { error: result.error });
136
64
  });
137
65
  /**
138
66
  * GET /api/yaml-workflows/app-ids
139
67
  * Return distinct app_id values from non-archived workflows.
140
68
  */
141
69
  router.get('/app-ids', async (_req, res) => {
142
- try {
143
- const appIds = await yamlDb.getDistinctAppIds();
144
- res.json({ app_ids: appIds });
145
- }
146
- catch (err) {
147
- res.status(500).json({ error: err.message });
148
- }
70
+ const result = await api.getAppIds();
71
+ res.status(result.status).json(result.data ?? { error: result.error });
72
+ });
73
+ /**
74
+ * POST /api/yaml-workflows/direct
75
+ * Create a YAML workflow from raw YAML content (workflow builder output).
76
+ * Unlike POST /, this does not require a source execution — the YAML is provided directly.
77
+ * Body: { name, description?, yaml_content, input_schema?, activity_manifest?, tags?, app_id? }
78
+ */
79
+ router.post('/direct', async (req, res) => {
80
+ const result = await api.createYamlWorkflowDirect(req.body);
81
+ res.status(result.status).json(result.data ?? { error: result.error });
149
82
  });
150
83
  // -- Parameterized routes --
151
84
  /**
@@ -153,42 +86,16 @@ router.get('/app-ids', async (_req, res) => {
153
86
  * Get a single YAML workflow.
154
87
  */
155
88
  router.get('/:id', async (req, res) => {
156
- try {
157
- const wf = await yamlDb.getYamlWorkflow(req.params.id);
158
- if (!wf) {
159
- res.status(404).json({ error: 'YAML workflow not found' });
160
- return;
161
- }
162
- res.json(wf);
163
- }
164
- catch (err) {
165
- if ((0, helpers_1.isNotFoundError)(err)) {
166
- res.status(404).json({ error: 'YAML workflow not found' });
167
- return;
168
- }
169
- res.status(500).json({ error: err.message });
170
- }
89
+ const result = await api.getYamlWorkflow({ id: req.params.id });
90
+ res.status(result.status).json(result.data ?? { error: result.error });
171
91
  });
172
92
  /**
173
93
  * PUT /api/yaml-workflows/:id
174
94
  * Update a YAML workflow's metadata.
175
95
  */
176
96
  router.put('/:id', async (req, res) => {
177
- try {
178
- const wf = await yamlDb.updateYamlWorkflow(req.params.id, req.body);
179
- if (!wf) {
180
- res.status(404).json({ error: 'YAML workflow not found' });
181
- return;
182
- }
183
- res.json(wf);
184
- }
185
- catch (err) {
186
- if ((0, helpers_1.isNotFoundError)(err)) {
187
- res.status(404).json({ error: 'YAML workflow not found' });
188
- return;
189
- }
190
- res.status(500).json({ error: err.message });
191
- }
97
+ const result = await api.updateYamlWorkflow({ id: req.params.id, ...req.body });
98
+ res.status(result.status).json(result.data ?? { error: result.error });
192
99
  });
193
100
  /**
194
101
  * POST /api/yaml-workflows/:id/regenerate
@@ -196,81 +103,19 @@ router.put('/:id', async (req, res) => {
196
103
  * Only allowed for non-archived workflows.
197
104
  */
198
105
  router.post('/:id/regenerate', async (req, res) => {
199
- try {
200
- const wf = await yamlDb.getYamlWorkflow(req.params.id);
201
- if (!wf) {
202
- res.status(404).json({ error: 'YAML workflow not found' });
203
- return;
204
- }
205
- if (wf.status === 'archived') {
206
- res.status(400).json({ error: 'Archived workflows cannot be regenerated' });
207
- return;
208
- }
209
- if (!wf.source_workflow_id || !wf.source_workflow_type) {
210
- res.status(400).json({ error: 'Missing source workflow reference — cannot regenerate' });
211
- return;
212
- }
213
- // Look up task queue from the source task record, or use body override
214
- let taskQueue = req.body.task_queue;
215
- if (!taskQueue) {
216
- const sourceTask = await (0, task_1.getTaskByWorkflowId)(wf.source_workflow_id);
217
- taskQueue = sourceTask?.task_queue || 'v1';
218
- }
219
- const feedback = req.body.compilation_feedback;
220
- const result = await yamlGenerator.generateYamlFromExecution({
221
- workflowId: wf.source_workflow_id,
222
- taskQueue,
223
- workflowName: wf.source_workflow_type,
224
- name: wf.name,
225
- description: wf.description || undefined,
226
- appId: wf.app_id,
227
- compilationFeedback: feedback || undefined,
228
- priorFailedYaml: feedback ? wf.yaml_content : undefined,
229
- });
230
- const updated = await yamlDb.updateYamlWorkflow(wf.id, {
231
- app_id: result.appId,
232
- graph_topic: result.graphTopic,
233
- yaml_content: result.yaml,
234
- input_schema: result.inputSchema,
235
- output_schema: result.outputSchema,
236
- activity_manifest: result.activityManifest,
237
- tags: result.tags,
238
- metadata: { input_field_meta: result.inputFieldMeta },
239
- });
240
- res.json(updated);
241
- }
242
- catch (err) {
243
- if ((0, helpers_1.isNotFoundError)(err)) {
244
- res.status(404).json({ error: 'YAML workflow not found' });
245
- return;
246
- }
247
- res.status(500).json({ error: err.message });
248
- }
106
+ const result = await api.regenerateYamlWorkflow({
107
+ id: req.params.id,
108
+ task_queue: req.body.task_queue,
109
+ compilation_feedback: req.body.compilation_feedback,
110
+ });
111
+ res.status(result.status).json(result.data ?? { error: result.error });
249
112
  });
250
113
  /**
251
114
  * DELETE /api/yaml-workflows/:id
252
115
  * Delete a YAML workflow (must be draft or archived).
253
116
  */
254
117
  router.delete('/:id', async (req, res) => {
255
- try {
256
- const wf = await yamlDb.getYamlWorkflow(req.params.id);
257
- if (!wf) {
258
- res.status(404).json({ error: 'YAML workflow not found' });
259
- return;
260
- }
261
- if (wf.status === 'active' || wf.status === 'deployed') {
262
- res.status(400).json({ error: 'Cannot delete an active or deployed workflow. Archive it first.' });
263
- return;
264
- }
265
- await yamlDb.deleteYamlWorkflow(req.params.id);
266
- res.json({ deleted: true });
267
- }
268
- catch (err) {
269
- if ((0, helpers_1.isNotFoundError)(err)) {
270
- res.status(404).json({ error: 'YAML workflow not found' });
271
- return;
272
- }
273
- res.status(500).json({ error: err.message });
274
- }
118
+ const result = await api.deleteYamlWorkflow({ id: req.params.id });
119
+ res.status(result.status).json(result.data ?? { error: result.error });
275
120
  });
276
121
  exports.default = router;
@@ -34,10 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const express_1 = require("express");
37
- const yamlDb = __importStar(require("../../services/yaml-workflow/db"));
38
- const yamlDeployer = __importStar(require("../../services/yaml-workflow/deployer"));
39
- const yamlWorkers = __importStar(require("../../services/yaml-workflow/workers"));
40
- const helpers_1 = require("./helpers");
37
+ const api = __importStar(require("../../api/yaml-workflows"));
41
38
  const router = (0, express_1.Router)();
42
39
  /**
43
40
  * POST /api/yaml-workflows/:id/deploy
@@ -45,77 +42,16 @@ const router = (0, express_1.Router)();
45
42
  * Bumps the version and deploys all graphs together.
46
43
  */
47
44
  router.post('/:id/deploy', async (req, res) => {
48
- try {
49
- const wf = await yamlDb.getYamlWorkflow(req.params.id);
50
- if (!wf) {
51
- res.status(404).json({ error: 'YAML workflow not found' });
52
- return;
53
- }
54
- // Use the version declared in the YAML (like package.json)
55
- const deployVersion = wf.app_version || '1';
56
- // Deploy + activate merged YAML for the full app_id
57
- const siblings = await yamlDb.listYamlWorkflowsByAppId(wf.app_id);
58
- await yamlDeployer.deployAppId(wf.app_id, deployVersion);
59
- // Register workers and mark all non-archived siblings as active
60
- for (const sibling of siblings) {
61
- await yamlDb.updateYamlWorkflowVersion(sibling.id, deployVersion);
62
- await yamlWorkers.registerWorkersForWorkflow(sibling);
63
- if (sibling.status === 'draft' || sibling.status === 'deployed') {
64
- await yamlDb.updateYamlWorkflowStatus(sibling.id, 'active');
65
- }
66
- }
67
- // Mark content as deployed for the entire app_id
68
- await yamlDb.markAppIdContentDeployed(wf.app_id);
69
- const updated = await yamlDb.getYamlWorkflow(req.params.id);
70
- res.json(updated);
71
- }
72
- catch (err) {
73
- if ((0, helpers_1.isNotFoundError)(err)) {
74
- res.status(404).json({ error: 'YAML workflow not found' });
75
- return;
76
- }
77
- res.status(500).json({
78
- error: err.message,
79
- hint: err.message.includes('Duplicate activity id')
80
- ? 'Colliding activity IDs across workflows. A Claude Code repair was attempted — check server logs. You may need to archive conflicting workflows and recompile.'
81
- : undefined,
82
- });
83
- }
45
+ const result = await api.deployYamlWorkflow({ id: req.params.id });
46
+ res.status(result.status).json(result.data ?? { error: result.error });
84
47
  });
85
48
  /**
86
49
  * POST /api/yaml-workflows/:id/activate
87
50
  * Activate the deployed version for this workflow's app_id and register all workers.
88
51
  */
89
52
  router.post('/:id/activate', async (req, res) => {
90
- try {
91
- const wf = await yamlDb.getYamlWorkflow(req.params.id);
92
- if (!wf) {
93
- res.status(404).json({ error: 'YAML workflow not found' });
94
- return;
95
- }
96
- if (wf.status !== 'deployed' && wf.status !== 'active') {
97
- res.status(400).json({ error: 'Workflow must be deployed before activation' });
98
- return;
99
- }
100
- await yamlDeployer.activateYamlWorkflow(wf.app_id, wf.app_version);
101
- // Register workers for ALL workflows sharing this app_id
102
- const siblings = await yamlDb.listYamlWorkflowsByAppId(wf.app_id);
103
- for (const sibling of siblings) {
104
- await yamlWorkers.registerWorkersForWorkflow(sibling);
105
- if (sibling.status === 'deployed') {
106
- await yamlDb.updateYamlWorkflowStatus(sibling.id, 'active');
107
- }
108
- }
109
- const updated = await yamlDb.getYamlWorkflow(req.params.id);
110
- res.json(updated);
111
- }
112
- catch (err) {
113
- if ((0, helpers_1.isNotFoundError)(err)) {
114
- res.status(404).json({ error: 'YAML workflow not found' });
115
- return;
116
- }
117
- res.status(500).json({ error: err.message });
118
- }
53
+ const result = await api.activateYamlWorkflow({ id: req.params.id });
54
+ res.status(result.status).json(result.data ?? { error: result.error });
119
55
  });
120
56
  /**
121
57
  * POST /api/yaml-workflows/:id/invoke
@@ -123,82 +59,21 @@ router.post('/:id/activate', async (req, res) => {
123
59
  * Body: { data, sync?: boolean }
124
60
  */
125
61
  router.post('/:id/invoke', async (req, res) => {
126
- try {
127
- const wf = await yamlDb.getYamlWorkflow(req.params.id);
128
- if (!wf) {
129
- res.status(404).json({ error: 'YAML workflow not found' });
130
- return;
131
- }
132
- if (wf.status !== 'active') {
133
- res.status(400).json({ error: 'Workflow must be active to invoke' });
134
- return;
135
- }
136
- const data = req.body.data || {};
137
- // Inject _scope so compiled workflow activities have identity context
138
- const executeAs = req.body.execute_as;
139
- const userId = req.auth?.userId;
140
- if (!data._scope) {
141
- const { resolvePrincipal } = await Promise.resolve().then(() => __importStar(require('../../services/iam/principal')));
142
- if (executeAs) {
143
- const [botPrincipal, invokerPrincipal] = await Promise.all([
144
- resolvePrincipal(executeAs),
145
- userId ? resolvePrincipal(userId) : Promise.resolve(null),
146
- ]);
147
- if (botPrincipal) {
148
- data._scope = {
149
- principal: botPrincipal,
150
- scopes: ['mcp:tool:call'],
151
- ...(invokerPrincipal ? { initiatedBy: userId, initiatingPrincipal: invokerPrincipal } : {}),
152
- };
153
- }
154
- }
155
- else if (userId) {
156
- const principal = await resolvePrincipal(userId);
157
- if (principal) {
158
- data._scope = { principal, scopes: ['mcp:tool:call'] };
159
- }
160
- }
161
- }
162
- if (req.body.sync) {
163
- const { job_id, result } = await yamlDeployer.invokeYamlWorkflowSync(wf.app_id, wf.graph_topic, data, req.body.timeout, wf.graph_topic);
164
- res.json({ job_id, result });
165
- }
166
- else {
167
- const jobId = await yamlDeployer.invokeYamlWorkflow(wf.app_id, wf.graph_topic, data, wf.graph_topic);
168
- res.json({ job_id: jobId });
169
- }
170
- }
171
- catch (err) {
172
- if ((0, helpers_1.isNotFoundError)(err)) {
173
- res.status(404).json({ error: 'YAML workflow not found' });
174
- return;
175
- }
176
- res.status(500).json({ error: err.message });
177
- }
62
+ const result = await api.invokeYamlWorkflow({
63
+ id: req.params.id,
64
+ data: req.body.data,
65
+ sync: req.body.sync,
66
+ timeout: req.body.timeout,
67
+ execute_as: req.body.execute_as,
68
+ }, req.auth?.userId ? { userId: req.auth.userId } : undefined);
69
+ res.status(result.status).json(result.data ?? { error: result.error });
178
70
  });
179
71
  /**
180
72
  * POST /api/yaml-workflows/:id/archive
181
73
  * Archive a YAML workflow (stops accepting new invocations).
182
74
  */
183
75
  router.post('/:id/archive', async (req, res) => {
184
- try {
185
- const wf = await yamlDb.getYamlWorkflow(req.params.id);
186
- if (!wf) {
187
- res.status(404).json({ error: 'YAML workflow not found' });
188
- return;
189
- }
190
- if (wf.status === 'active') {
191
- await yamlDeployer.stopEngine(wf.app_id);
192
- }
193
- const updated = await yamlDb.updateYamlWorkflowStatus(wf.id, 'archived');
194
- res.json(updated);
195
- }
196
- catch (err) {
197
- if ((0, helpers_1.isNotFoundError)(err)) {
198
- res.status(404).json({ error: 'YAML workflow not found' });
199
- return;
200
- }
201
- res.status(500).json({ error: err.message });
202
- }
76
+ const result = await api.archiveYamlWorkflow({ id: req.params.id });
77
+ res.status(result.status).json(result.data ?? { error: result.error });
203
78
  });
204
79
  exports.default = router;
@@ -4,11 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const express_1 = require("express");
7
+ const cron_1 = __importDefault(require("./cron"));
7
8
  const crud_1 = __importDefault(require("./crud"));
8
9
  const deployment_1 = __importDefault(require("./deployment"));
9
10
  const versions_1 = __importDefault(require("./versions"));
10
11
  const router = (0, express_1.Router)();
11
- // Mount in the same order as the original monolithic file.
12
+ // cron.ts handles: GET /cron/status, PUT /:id/cron, DELETE /:id/cron
13
+ // Mount before crud so /cron/status doesn't match /:id
14
+ router.use(cron_1.default);
12
15
  // crud.ts handles: GET /, POST /, GET /app-ids, GET /:id, PUT /:id,
13
16
  // POST /:id/regenerate, DELETE /:id
14
17
  router.use(crud_1.default);
@@ -34,83 +34,45 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const express_1 = require("express");
37
- const yamlDb = __importStar(require("../../services/yaml-workflow/db"));
38
- const helpers_1 = require("./helpers");
37
+ const api = __importStar(require("../../api/yaml-workflows"));
39
38
  const router = (0, express_1.Router)();
40
39
  /**
41
40
  * GET /api/yaml-workflows/:id/versions
42
41
  * Return version history for a YAML workflow.
43
42
  */
44
43
  router.get('/:id/versions', async (req, res) => {
45
- try {
46
- const limit = req.query.limit ? parseInt(req.query.limit, 10) : 20;
47
- const offset = req.query.offset ? parseInt(req.query.offset, 10) : 0;
48
- const result = await yamlDb.getVersionHistory(req.params.id, limit, offset);
49
- res.json(result);
50
- }
51
- catch (err) {
52
- if ((0, helpers_1.isNotFoundError)(err)) {
53
- res.status(404).json({ error: 'YAML workflow not found' });
54
- return;
55
- }
56
- res.status(500).json({ error: err.message });
57
- }
44
+ const result = await api.getVersionHistory({
45
+ id: req.params.id,
46
+ limit: req.query.limit ? parseInt(req.query.limit, 10) : undefined,
47
+ offset: req.query.offset ? parseInt(req.query.offset, 10) : undefined,
48
+ });
49
+ res.status(result.status).json(result.data ?? { error: result.error });
58
50
  });
59
51
  /**
60
52
  * GET /api/yaml-workflows/:id/versions/:version
61
53
  * Return a single version snapshot with YAML, schemas, and manifest.
62
54
  */
63
55
  router.get('/:id/versions/:version', async (req, res) => {
64
- try {
65
- const version = parseInt(req.params.version, 10);
66
- if (isNaN(version) || version < 1) {
67
- res.status(400).json({ error: 'Invalid version number' });
68
- return;
69
- }
70
- const snapshot = await yamlDb.getVersionSnapshot(req.params.id, version);
71
- if (!snapshot) {
72
- res.status(404).json({ error: `Version ${version} not found` });
73
- return;
74
- }
75
- res.json(snapshot);
76
- }
77
- catch (err) {
78
- if ((0, helpers_1.isNotFoundError)(err)) {
79
- res.status(404).json({ error: 'YAML workflow not found' });
80
- return;
81
- }
82
- res.status(500).json({ error: err.message });
83
- }
56
+ const result = await api.getVersionSnapshot({
57
+ id: req.params.id,
58
+ version: parseInt(req.params.version, 10),
59
+ });
60
+ res.status(result.status).json(result.data ?? { error: result.error });
84
61
  });
85
62
  /**
86
63
  * GET /api/yaml-workflows/:id/yaml
87
64
  * Return raw YAML content. Supports ?version=N query param.
88
65
  */
89
66
  router.get('/:id/yaml', async (req, res) => {
90
- try {
91
- const versionParam = req.query.version ? parseInt(req.query.version, 10) : null;
92
- if (versionParam) {
93
- const snapshot = await yamlDb.getVersionSnapshot(req.params.id, versionParam);
94
- if (!snapshot) {
95
- res.status(404).json({ error: `Version ${versionParam} not found` });
96
- return;
97
- }
98
- res.type('text/yaml').send(snapshot.yaml_content);
99
- return;
100
- }
101
- const wf = await yamlDb.getYamlWorkflow(req.params.id);
102
- if (!wf) {
103
- res.status(404).json({ error: 'YAML workflow not found' });
104
- return;
105
- }
106
- res.type('text/yaml').send(wf.yaml_content);
67
+ const result = await api.getYamlContent({
68
+ id: req.params.id,
69
+ version: req.query.version ? parseInt(req.query.version, 10) : undefined,
70
+ });
71
+ if (result.status === 200) {
72
+ res.type('text/yaml').send(result.data);
107
73
  }
108
- catch (err) {
109
- if ((0, helpers_1.isNotFoundError)(err)) {
110
- res.status(404).json({ error: 'YAML workflow not found' });
111
- return;
112
- }
113
- res.status(500).json({ error: err.message });
74
+ else {
75
+ res.status(result.status).json({ error: result.error });
114
76
  }
115
77
  });
116
78
  exports.default = router;