@hexabot-ai/api 3.2.2-alpha.8 → 3.2.2-beta.0

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 (329) hide show
  1. package/dist/actions/actions.service.d.ts +1 -0
  2. package/dist/actions/actions.service.js +19 -1
  3. package/dist/actions/actions.service.js.map +1 -1
  4. package/dist/actions/types.d.ts +3 -1
  5. package/dist/app.controller.d.ts +1 -0
  6. package/dist/app.controller.js +1 -0
  7. package/dist/app.controller.js.map +1 -1
  8. package/dist/app.module.js +13 -1
  9. package/dist/app.module.js.map +1 -1
  10. package/dist/channel/lib/__test__/label.mock.js +0 -24
  11. package/dist/channel/lib/__test__/label.mock.js.map +1 -1
  12. package/dist/chat/dto/label.dto.d.ts +0 -1
  13. package/dist/chat/dto/label.dto.js +0 -6
  14. package/dist/chat/dto/label.dto.js.map +1 -1
  15. package/dist/chat/entities/label-group.entity.d.ts +0 -2
  16. package/dist/chat/entities/label.entity.d.ts +0 -4
  17. package/dist/chat/entities/label.entity.js +0 -5
  18. package/dist/chat/entities/label.entity.js.map +1 -1
  19. package/dist/chat/services/subscriber.service.d.ts +0 -1
  20. package/dist/config/index.js +14 -2
  21. package/dist/config/index.js.map +1 -1
  22. package/dist/config/types.d.ts +9 -0
  23. package/dist/extensions/actions/ai/agent.action.d.ts +1 -1
  24. package/dist/extensions/actions/ai/agent.action.js +6 -3
  25. package/dist/extensions/actions/ai/agent.action.js.map +1 -1
  26. package/dist/extensions/actions/ai/ai-base.action.d.ts +1 -1
  27. package/dist/extensions/actions/ai/ai-base.action.js +18 -5
  28. package/dist/extensions/actions/ai/ai-base.action.js.map +1 -1
  29. package/dist/extensions/actions/ai/generate-object.base.action.d.ts +1 -1
  30. package/dist/extensions/actions/ai/generate-object.base.action.js +3 -2
  31. package/dist/extensions/actions/ai/generate-object.base.action.js.map +1 -1
  32. package/dist/extensions/actions/ai/generate-text.base.action.d.ts +1 -1
  33. package/dist/extensions/actions/ai/generate-text.base.action.js +3 -2
  34. package/dist/extensions/actions/ai/generate-text.base.action.js.map +1 -1
  35. package/dist/extensions/actions/ai/mcp.binding.js +2 -0
  36. package/dist/extensions/actions/ai/mcp.binding.js.map +1 -1
  37. package/dist/extensions/actions/ai/memory.binding.js +2 -0
  38. package/dist/extensions/actions/ai/memory.binding.js.map +1 -1
  39. package/dist/extensions/actions/ai/retrieve-content-rag.action.js +2 -0
  40. package/dist/extensions/actions/ai/retrieve-content-rag.action.js.map +1 -1
  41. package/dist/extensions/actions/messaging/list.action.d.ts +2 -2
  42. package/dist/extensions/actions/messaging/list.action.js +7 -0
  43. package/dist/extensions/actions/messaging/list.action.js.map +1 -1
  44. package/dist/extensions/actions/subscriber/update-labels.action.js +3 -0
  45. package/dist/extensions/actions/subscriber/update-labels.action.js.map +1 -1
  46. package/dist/extensions/actions/web/http-request.action.js +12 -1
  47. package/dist/extensions/actions/web/http-request.action.js.map +1 -1
  48. package/dist/extensions/actions/workflow/call-workflow.action.d.ts +19 -0
  49. package/dist/extensions/actions/workflow/call-workflow.action.js +83 -0
  50. package/dist/extensions/actions/workflow/call-workflow.action.js.map +1 -0
  51. package/dist/extensions/actions/workflow/i18n/en.translations.json +9 -0
  52. package/dist/extensions/actions/workflow/i18n/fr.translations.json +9 -0
  53. package/dist/extensions/index.d.ts +1 -0
  54. package/dist/extensions/index.js +1 -0
  55. package/dist/extensions/index.js.map +1 -1
  56. package/dist/index.d.ts +1 -0
  57. package/dist/index.js +1 -0
  58. package/dist/index.js.map +1 -1
  59. package/dist/mcp/controllers/mcp-token.controller.d.ts +47 -0
  60. package/dist/mcp/controllers/mcp-token.controller.js +70 -0
  61. package/dist/mcp/controllers/mcp-token.controller.js.map +1 -0
  62. package/dist/mcp/decorators/mcp-permission.decorator.d.ts +8 -0
  63. package/dist/mcp/decorators/mcp-permission.decorator.js +11 -0
  64. package/dist/mcp/decorators/mcp-permission.decorator.js.map +1 -0
  65. package/dist/mcp/dto/mcp-token.dto.d.ts +17 -0
  66. package/dist/mcp/dto/mcp-token.dto.js +40 -0
  67. package/dist/mcp/dto/mcp-token.dto.js.map +1 -0
  68. package/dist/mcp/entities/mcp-token.entity.d.ts +111 -0
  69. package/dist/mcp/entities/mcp-token.entity.js +69 -0
  70. package/dist/mcp/entities/mcp-token.entity.js.map +1 -0
  71. package/dist/mcp/guards/hexabot-mcp-token.guard.d.ts +9 -0
  72. package/dist/mcp/guards/hexabot-mcp-token.guard.js +49 -0
  73. package/dist/mcp/guards/hexabot-mcp-token.guard.js.map +1 -0
  74. package/dist/mcp/guards/mcp-permission.guard.d.ts +9 -0
  75. package/dist/mcp/guards/mcp-permission.guard.js +47 -0
  76. package/dist/mcp/guards/mcp-permission.guard.js.map +1 -0
  77. package/dist/mcp/mcp-api.module.d.ts +2 -0
  78. package/dist/mcp/mcp-api.module.js +65 -0
  79. package/dist/mcp/mcp-api.module.js.map +1 -0
  80. package/dist/mcp/repositories/mcp-token.repository.d.ts +8 -0
  81. package/dist/mcp/repositories/mcp-token.repository.js +41 -0
  82. package/dist/mcp/repositories/mcp-token.repository.js.map +1 -0
  83. package/dist/mcp/services/mcp-token.service.d.ts +24 -0
  84. package/dist/mcp/services/mcp-token.service.js +106 -0
  85. package/dist/mcp/services/mcp-token.service.js.map +1 -0
  86. package/dist/mcp/tools/catalog-mcp.tools.d.ts +63 -0
  87. package/dist/mcp/tools/catalog-mcp.tools.js +135 -0
  88. package/dist/mcp/tools/catalog-mcp.tools.js.map +1 -0
  89. package/dist/mcp/tools/cms-mcp.tools.d.ts +128 -0
  90. package/dist/mcp/tools/cms-mcp.tools.js +242 -0
  91. package/dist/mcp/tools/cms-mcp.tools.js.map +1 -0
  92. package/dist/mcp/tools/credential-mcp.tools.d.ts +19 -0
  93. package/dist/mcp/tools/credential-mcp.tools.js +82 -0
  94. package/dist/mcp/tools/credential-mcp.tools.js.map +1 -0
  95. package/dist/mcp/tools/hexabot-mcp-tool.base.d.ts +22 -0
  96. package/dist/mcp/tools/hexabot-mcp-tool.base.js +48 -0
  97. package/dist/mcp/tools/hexabot-mcp-tool.base.js.map +1 -0
  98. package/dist/mcp/tools/hexabot-mcp.schemas.d.ts +41 -0
  99. package/dist/mcp/tools/hexabot-mcp.schemas.js +36 -0
  100. package/dist/mcp/tools/hexabot-mcp.schemas.js.map +1 -0
  101. package/dist/mcp/tools/hexabot-mcp.tools.d.ts +1 -0
  102. package/dist/mcp/tools/hexabot-mcp.tools.js +18 -0
  103. package/dist/mcp/tools/hexabot-mcp.tools.js.map +1 -0
  104. package/dist/mcp/tools/hexabot-mcp.utils.d.ts +2 -0
  105. package/dist/mcp/tools/hexabot-mcp.utils.js +21 -0
  106. package/dist/mcp/tools/hexabot-mcp.utils.js.map +1 -0
  107. package/dist/mcp/tools/index.d.ts +22 -0
  108. package/dist/mcp/tools/index.js +50 -0
  109. package/dist/mcp/tools/index.js.map +1 -0
  110. package/dist/mcp/tools/mcp-server-mcp.tools.d.ts +77 -0
  111. package/dist/mcp/tools/mcp-server-mcp.tools.js +130 -0
  112. package/dist/mcp/tools/mcp-server-mcp.tools.js.map +1 -0
  113. package/dist/mcp/tools/memory-definition-mcp.tools.d.ts +57 -0
  114. package/dist/mcp/tools/memory-definition-mcp.tools.js +128 -0
  115. package/dist/mcp/tools/memory-definition-mcp.tools.js.map +1 -0
  116. package/dist/mcp/tools/workflow-mcp.helper.d.ts +156 -0
  117. package/dist/mcp/tools/workflow-mcp.helper.js +128 -0
  118. package/dist/mcp/tools/workflow-mcp.helper.js.map +1 -0
  119. package/dist/mcp/tools/workflow-mcp.tools.d.ts +790 -0
  120. package/dist/mcp/tools/workflow-mcp.tools.js +227 -0
  121. package/dist/mcp/tools/workflow-mcp.tools.js.map +1 -0
  122. package/dist/mcp/tools/workflow-run-mcp.tools.d.ts +349 -0
  123. package/dist/mcp/tools/workflow-run-mcp.tools.js +242 -0
  124. package/dist/mcp/tools/workflow-run-mcp.tools.js.map +1 -0
  125. package/dist/mcp/tools/workflow-version-mcp.tools.d.ts +238 -0
  126. package/dist/mcp/tools/workflow-version-mcp.tools.js +368 -0
  127. package/dist/mcp/tools/workflow-version-mcp.tools.js.map +1 -0
  128. package/dist/mcp/types.d.ts +7 -0
  129. package/dist/mcp/types.js +3 -0
  130. package/dist/mcp/types.js.map +1 -0
  131. package/dist/static/assets/{browser-ponyfill-IkrOfrbH.js → browser-ponyfill-AQYxeOz6.js} +1 -1
  132. package/dist/static/assets/{cssMode-BVh8Ojbf.js → cssMode-CU7XHFDD.js} +1 -1
  133. package/dist/static/assets/{freemarker2-Cnk90W15.js → freemarker2-DA_oH4Qs.js} +1 -1
  134. package/dist/static/assets/{handlebars-DDmCOyIG.js → handlebars-DXFzBSlw.js} +1 -1
  135. package/dist/static/assets/{html-cDkAkcNZ.js → html-CnQNXujK.js} +1 -1
  136. package/dist/static/assets/{htmlMode-BKekdtGx.js → htmlMode-BpX8KTMR.js} +1 -1
  137. package/dist/static/assets/{index-CnXiX03v.js → index-BIqNbcu4.js} +2379 -2330
  138. package/dist/static/assets/{index-BI1BtkYv.css → index-D-b9KTZd.css} +1 -1
  139. package/dist/static/assets/{javascript-bO_Y-MtP.js → javascript-DeoOxUBN.js} +1 -1
  140. package/dist/static/assets/{jsonMode-p7oe1x6a.js → jsonMode-YGmaNoOG.js} +1 -1
  141. package/dist/static/assets/{liquid-DehK5Toi.js → liquid-K6wF5n3k.js} +1 -1
  142. package/dist/static/assets/{lspLanguageFeatures-C8ni2Y8s.js → lspLanguageFeatures-DFIoRPyQ.js} +1 -1
  143. package/dist/static/assets/{mdx-BqE3GcoU.js → mdx-CWEgpRjI.js} +1 -1
  144. package/dist/static/assets/{python-DYGyqTrT.js → python-22vBz2Ov.js} +1 -1
  145. package/dist/static/assets/{razor-CTOqYwI_.js → razor-CEUwDwv_.js} +1 -1
  146. package/dist/static/assets/{tsMode-n7ps72jb.js → tsMode-kpHfzhoP.js} +1 -1
  147. package/dist/static/assets/{typescript-B0sRB56_.js → typescript-PCkEoDOe.js} +1 -1
  148. package/dist/static/assets/{xml-C4I4RxHC.js → xml-OzOqd-hy.js} +1 -1
  149. package/dist/static/assets/{yaml-V_o23lNz.js → yaml-B3P_vvCy.js} +1 -1
  150. package/dist/static/index.html +2 -2
  151. package/dist/static/locales/en/translation.json +89 -5
  152. package/dist/static/locales/fr/translation.json +90 -6
  153. package/dist/transfer/adapters/content-type-transfer.adapter.d.ts +14 -0
  154. package/dist/transfer/adapters/content-type-transfer.adapter.js +102 -0
  155. package/dist/transfer/adapters/content-type-transfer.adapter.js.map +1 -0
  156. package/dist/transfer/adapters/credential-transfer.adapter.d.ts +13 -0
  157. package/dist/transfer/adapters/credential-transfer.adapter.js +110 -0
  158. package/dist/transfer/adapters/credential-transfer.adapter.js.map +1 -0
  159. package/dist/transfer/adapters/label-transfer.adapter.d.ts +15 -0
  160. package/dist/transfer/adapters/label-transfer.adapter.js +189 -0
  161. package/dist/transfer/adapters/label-transfer.adapter.js.map +1 -0
  162. package/dist/transfer/adapters/mcp-server-transfer.adapter.d.ts +16 -0
  163. package/dist/transfer/adapters/mcp-server-transfer.adapter.js +169 -0
  164. package/dist/transfer/adapters/mcp-server-transfer.adapter.js.map +1 -0
  165. package/dist/transfer/adapters/memory-definition-transfer.adapter.d.ts +14 -0
  166. package/dist/transfer/adapters/memory-definition-transfer.adapter.js +111 -0
  167. package/dist/transfer/adapters/memory-definition-transfer.adapter.js.map +1 -0
  168. package/dist/transfer/index.d.ts +7 -0
  169. package/dist/transfer/index.js +24 -0
  170. package/dist/transfer/index.js.map +1 -0
  171. package/dist/transfer/workflow-transfer-adapter.registry.d.ts +27 -0
  172. package/dist/transfer/workflow-transfer-adapter.registry.js +164 -0
  173. package/dist/transfer/workflow-transfer-adapter.registry.js.map +1 -0
  174. package/dist/transfer/workflow-transfer-definition.service.d.ts +40 -0
  175. package/dist/transfer/workflow-transfer-definition.service.js +353 -0
  176. package/dist/transfer/workflow-transfer-definition.service.js.map +1 -0
  177. package/dist/transfer/workflow-transfer-resource-adapter.d.ts +33 -0
  178. package/dist/transfer/workflow-transfer-resource-adapter.js +81 -0
  179. package/dist/transfer/workflow-transfer-resource-adapter.js.map +1 -0
  180. package/dist/transfer/workflow-transfer.controller.d.ts +9 -0
  181. package/dist/transfer/workflow-transfer.controller.js +63 -0
  182. package/dist/transfer/workflow-transfer.controller.js.map +1 -0
  183. package/dist/transfer/workflow-transfer.module.d.ts +2 -0
  184. package/dist/transfer/workflow-transfer.module.js +47 -0
  185. package/dist/transfer/workflow-transfer.module.js.map +1 -0
  186. package/dist/transfer/workflow-transfer.service.d.ts +51 -0
  187. package/dist/transfer/workflow-transfer.service.js +509 -0
  188. package/dist/transfer/workflow-transfer.service.js.map +1 -0
  189. package/dist/transfer/workflow-transfer.types.d.ts +31 -0
  190. package/dist/transfer/workflow-transfer.types.js +35 -0
  191. package/dist/transfer/workflow-transfer.types.js.map +1 -0
  192. package/dist/tsconfig.build.tsbuildinfo +1 -1
  193. package/dist/types/event-emitter.d.ts +12 -5
  194. package/dist/user/controllers/user.controller.d.ts +0 -2
  195. package/dist/user/dto/user.dto.d.ts +1 -1
  196. package/dist/user/entities/user.entity.d.ts +0 -2
  197. package/dist/user/guards/ability.guard.js +12 -2
  198. package/dist/user/guards/ability.guard.js.map +1 -1
  199. package/dist/utils/test/fixtures/label-group.d.ts +1 -2
  200. package/dist/utils/test/fixtures/label.d.ts +1 -2
  201. package/dist/utils/test/fixtures/label.js +0 -19
  202. package/dist/utils/test/fixtures/label.js.map +1 -1
  203. package/dist/utils/test/fixtures/subscriber.d.ts +1 -1
  204. package/dist/utils/test/fixtures/workflow-run.js +4 -1
  205. package/dist/utils/test/fixtures/workflow-run.js.map +1 -1
  206. package/dist/utils/test/port.d.ts +8 -0
  207. package/dist/utils/test/port.js +34 -0
  208. package/dist/utils/test/port.js.map +1 -0
  209. package/dist/websocket/websocket.gateway.d.ts +2 -1
  210. package/dist/websocket/websocket.gateway.js.map +1 -1
  211. package/dist/workflow/contexts/workflow-runtime.context.d.ts +3 -1
  212. package/dist/workflow/contexts/workflow-runtime.context.js +5 -0
  213. package/dist/workflow/contexts/workflow-runtime.context.js.map +1 -1
  214. package/dist/workflow/controllers/workflow-run.controller.js +2 -0
  215. package/dist/workflow/controllers/workflow-run.controller.js.map +1 -1
  216. package/dist/workflow/dto/workflow-run.dto.d.ts +1 -0
  217. package/dist/workflow/dto/workflow-run.dto.js +11 -0
  218. package/dist/workflow/dto/workflow-run.dto.js.map +1 -1
  219. package/dist/workflow/entities/memory-record.entity.d.ts +2 -0
  220. package/dist/workflow/entities/workflow-run.entity.d.ts +62 -0
  221. package/dist/workflow/entities/workflow-run.entity.js +15 -1
  222. package/dist/workflow/entities/workflow-run.entity.js.map +1 -1
  223. package/dist/workflow/index.d.ts +7 -0
  224. package/dist/workflow/index.js +7 -0
  225. package/dist/workflow/index.js.map +1 -1
  226. package/dist/workflow/repositories/workflow-run.repository.js +7 -1
  227. package/dist/workflow/repositories/workflow-run.repository.js.map +1 -1
  228. package/dist/workflow/resource-refs.d.ts +17 -0
  229. package/dist/workflow/resource-refs.js +15 -0
  230. package/dist/workflow/resource-refs.js.map +1 -0
  231. package/dist/workflow/services/agentic.service.d.ts +9 -2
  232. package/dist/workflow/services/agentic.service.js +142 -19
  233. package/dist/workflow/services/agentic.service.js.map +1 -1
  234. package/dist/workflow/services/workflow-run.service.d.ts +3 -0
  235. package/dist/workflow/services/workflow-run.service.js +75 -3
  236. package/dist/workflow/services/workflow-run.service.js.map +1 -1
  237. package/dist/workflow/services/workflow-version.service.d.ts +2 -0
  238. package/dist/workflow/services/workflow-version.service.js +19 -0
  239. package/dist/workflow/services/workflow-version.service.js.map +1 -1
  240. package/dist/workflow/services/workflow.service.d.ts +13 -9
  241. package/dist/workflow/services/workflow.service.js +64 -35
  242. package/dist/workflow/services/workflow.service.js.map +1 -1
  243. package/dist/workflow/types.d.ts +31 -0
  244. package/dist/workflow/types.js +2 -1
  245. package/dist/workflow/types.js.map +1 -1
  246. package/dist/workflow/workflow.module.js +3 -0
  247. package/dist/workflow/workflow.module.js.map +1 -1
  248. package/package.json +7 -5
  249. package/src/actions/actions.service.ts +34 -4
  250. package/src/actions/types.ts +6 -5
  251. package/src/app.controller.ts +1 -0
  252. package/src/app.module.ts +17 -1
  253. package/src/channel/lib/__test__/label.mock.ts +0 -24
  254. package/src/chat/dto/label.dto.ts +1 -12
  255. package/src/chat/entities/label.entity.ts +0 -4
  256. package/src/config/index.ts +17 -2
  257. package/src/config/types.ts +9 -0
  258. package/src/extensions/actions/ai/agent.action.ts +6 -1
  259. package/src/extensions/actions/ai/ai-base.action.ts +39 -5
  260. package/src/extensions/actions/ai/generate-object.base.action.ts +3 -0
  261. package/src/extensions/actions/ai/generate-text.base.action.ts +3 -0
  262. package/src/extensions/actions/ai/mcp.binding.ts +2 -0
  263. package/src/extensions/actions/ai/memory.binding.ts +2 -0
  264. package/src/extensions/actions/ai/retrieve-content-rag.action.ts +2 -0
  265. package/src/extensions/actions/messaging/list.action.ts +7 -0
  266. package/src/extensions/actions/subscriber/update-labels.action.ts +3 -0
  267. package/src/extensions/actions/web/http-request.action.ts +17 -1
  268. package/src/extensions/actions/workflow/call-workflow.action.ts +112 -0
  269. package/src/extensions/actions/workflow/i18n/en.translations.json +9 -0
  270. package/src/extensions/actions/workflow/i18n/fr.translations.json +9 -0
  271. package/src/extensions/index.ts +2 -0
  272. package/src/index.ts +2 -0
  273. package/src/mcp/README.md +277 -0
  274. package/src/mcp/controllers/mcp-token.controller.ts +64 -0
  275. package/src/mcp/decorators/mcp-permission.decorator.ts +23 -0
  276. package/src/mcp/dto/mcp-token.dto.ts +48 -0
  277. package/src/mcp/entities/mcp-token.entity.ts +60 -0
  278. package/src/mcp/guards/hexabot-mcp-token.guard.ts +55 -0
  279. package/src/mcp/guards/mcp-permission.guard.ts +61 -0
  280. package/src/mcp/mcp-api.module.ts +61 -0
  281. package/src/mcp/repositories/mcp-token.repository.ts +34 -0
  282. package/src/mcp/services/mcp-token.service.ts +138 -0
  283. package/src/mcp/tools/catalog-mcp.tools.ts +122 -0
  284. package/src/mcp/tools/cms-mcp.tools.ts +239 -0
  285. package/src/mcp/tools/credential-mcp.tools.ts +81 -0
  286. package/src/mcp/tools/hexabot-mcp-tool.base.ts +74 -0
  287. package/src/mcp/tools/hexabot-mcp.schemas.ts +55 -0
  288. package/src/mcp/tools/hexabot-mcp.tools.ts +7 -0
  289. package/src/mcp/tools/hexabot-mcp.utils.ts +29 -0
  290. package/src/mcp/tools/index.ts +51 -0
  291. package/src/mcp/tools/mcp-server-mcp.tools.ts +135 -0
  292. package/src/mcp/tools/memory-definition-mcp.tools.ts +125 -0
  293. package/src/mcp/tools/workflow-mcp.helper.ts +219 -0
  294. package/src/mcp/tools/workflow-mcp.tools.ts +271 -0
  295. package/src/mcp/tools/workflow-run-mcp.tools.ts +292 -0
  296. package/src/mcp/tools/workflow-version-mcp.tools.ts +459 -0
  297. package/src/mcp/types.ts +14 -0
  298. package/src/transfer/adapters/content-type-transfer.adapter.ts +154 -0
  299. package/src/transfer/adapters/credential-transfer.adapter.ts +158 -0
  300. package/src/transfer/adapters/label-transfer.adapter.ts +291 -0
  301. package/src/transfer/adapters/mcp-server-transfer.adapter.ts +255 -0
  302. package/src/transfer/adapters/memory-definition-transfer.adapter.ts +167 -0
  303. package/src/transfer/index.ts +19 -0
  304. package/src/transfer/workflow-transfer-adapter.registry.ts +250 -0
  305. package/src/transfer/workflow-transfer-definition.service.ts +587 -0
  306. package/src/transfer/workflow-transfer-resource-adapter.ts +132 -0
  307. package/src/transfer/workflow-transfer.controller.ts +86 -0
  308. package/src/transfer/workflow-transfer.module.ts +46 -0
  309. package/src/transfer/workflow-transfer.service.ts +858 -0
  310. package/src/transfer/workflow-transfer.types.ts +98 -0
  311. package/src/user/guards/ability.guard.ts +15 -3
  312. package/src/utils/test/fixtures/label.ts +0 -19
  313. package/src/utils/test/fixtures/workflow-run.ts +4 -1
  314. package/src/utils/test/port.ts +48 -0
  315. package/src/websocket/websocket.gateway.ts +2 -1
  316. package/src/workflow/contexts/workflow-runtime.context.ts +12 -1
  317. package/src/workflow/controllers/workflow-run.controller.ts +2 -0
  318. package/src/workflow/dto/workflow-run.dto.ts +10 -0
  319. package/src/workflow/entities/workflow-run.entity.ts +22 -1
  320. package/src/workflow/index.ts +14 -0
  321. package/src/workflow/repositories/workflow-run.repository.ts +7 -1
  322. package/src/workflow/resource-refs.ts +44 -0
  323. package/src/workflow/services/agentic.service.ts +271 -30
  324. package/src/workflow/services/workflow-run.service.ts +120 -7
  325. package/src/workflow/services/workflow-version.service.ts +33 -0
  326. package/src/workflow/services/workflow.service.ts +86 -31
  327. package/src/workflow/types.ts +52 -0
  328. package/src/workflow/workflow.module.ts +3 -0
  329. package/types/event-emitter.d.ts +12 -5
@@ -4,7 +4,7 @@
4
4
  * Full terms: see LICENSE.md.
5
5
  */
6
6
 
7
- import { WorkflowEventMap } from '@hexabot-ai/agentic';
7
+ import type { WorkflowEventMap } from '@hexabot-ai/agentic';
8
8
  import { WorkflowFull, Workflow } from '@hexabot-ai/types';
9
9
  import {
10
10
  BadRequestException,
@@ -12,11 +12,12 @@ import {
12
12
  InternalServerErrorException,
13
13
  } from '@nestjs/common';
14
14
  import { HookEventKey, OnEvent } from '@nestjs/event-emitter';
15
- import { FindOneOptions } from 'typeorm';
15
+ import { EntityManager, FindOneOptions } from 'typeorm';
16
16
  import { z, ZodType } from 'zod';
17
17
 
18
18
  import { UpdateOneOptions } from '@/utils/generics/base-orm.repository';
19
19
  import { BaseOrmService } from '@/utils/generics/base-orm.service';
20
+ import { InferCreateDto } from '@/utils/types/dto.types';
20
21
  import {
21
22
  Room,
22
23
  SocketGet,
@@ -68,6 +69,25 @@ export class WorkflowService extends BaseOrmService<WorkflowOrmEntity> {
68
69
  return latest ?? null;
69
70
  }
70
71
 
72
+ /**
73
+ * Persist a workflow using the provided transaction manager.
74
+ *
75
+ * This method intentionally does not emit BaseOrmRepository mutation events;
76
+ * callers that own a larger transaction must emit app-level events after
77
+ * commit.
78
+ */
79
+ async createWithManager(
80
+ manager: EntityManager,
81
+ payload: InferCreateDto<WorkflowOrmEntity>,
82
+ ): Promise<WorkflowOrmEntity> {
83
+ const entity = manager.create(
84
+ WorkflowOrmEntity,
85
+ this.repository.actionDtoToEntity(payload),
86
+ );
87
+
88
+ return await manager.save(WorkflowOrmEntity, entity);
89
+ }
90
+
71
91
  /**
72
92
  * Update a workflow while enforcing immutability of its trigger type.
73
93
  */
@@ -188,57 +208,92 @@ export class WorkflowService extends BaseOrmService<WorkflowOrmEntity> {
188
208
 
189
209
  return;
190
210
  }
191
- const { initiatorId, workflowId, threadId } = workflowRun?.context;
211
+ const { initiatorId, workflowId, threadId } = workflowRun.context;
212
+ if (
213
+ typeof initiatorId !== 'string' ||
214
+ !initiatorId ||
215
+ typeof workflowId !== 'string' ||
216
+ !workflowId
217
+ ) {
218
+ this.logger.error(
219
+ 'workflowRun context requires initiatorId and workflowId',
220
+ );
221
+
222
+ return;
223
+ }
224
+
192
225
  const workflow = await this.findOne(workflowId);
193
- const canBroadcastEvents =
194
- initiatorId &&
195
- workflow?.type &&
196
- [WorkflowType.conversational].includes(workflow.type);
197
-
198
- if (canBroadcastEvents) {
199
- this.gateway.broadcastWorkflowEvent({
200
- ...payload,
201
- t,
202
- workflowId,
203
- initiatorId,
204
- threadId: typeof threadId === 'string' ? threadId : undefined,
205
- workflowEvent: workflowEvent.replace('hook:', ''),
206
- });
226
+ if (!workflow?.type) {
227
+ this.logger.error('workflow is required');
228
+
229
+ return;
207
230
  }
231
+
232
+ this.gateway.broadcastWorkflowEvent({
233
+ ...payload,
234
+ t,
235
+ workflowRun,
236
+ workflowId,
237
+ initiatorId,
238
+ threadId: typeof threadId === 'string' ? threadId : undefined,
239
+ workflowEvent: workflowEvent.replace('hook:', ''),
240
+ });
208
241
  }
209
242
 
210
243
  @OnEvent('hook:workflow:start')
211
- sendWorkflowStart(payload: WorkflowEventMap[keyof WorkflowEventMap]) {
212
- this.sendWorkflowEvent('hook:workflow:start', payload);
244
+ async sendWorkflowStart(payload: WorkflowEventMap[keyof WorkflowEventMap]) {
245
+ await this.sendWorkflowEvent('hook:workflow:start', payload);
213
246
  }
214
247
 
215
248
  @OnEvent('hook:workflow:finish')
216
- sendWorkflowFinish(payload: WorkflowEventMap[keyof WorkflowEventMap]) {
217
- this.sendWorkflowEvent('hook:workflow:finish', payload);
249
+ async sendWorkflowFinish(payload: WorkflowEventMap[keyof WorkflowEventMap]) {
250
+ await this.sendWorkflowEvent('hook:workflow:finish', payload);
251
+ }
252
+
253
+ @OnEvent('hook:workflow:suspended')
254
+ async sendWorkflowSuspended(
255
+ payload: WorkflowEventMap[keyof WorkflowEventMap],
256
+ ) {
257
+ await this.sendWorkflowEvent('hook:workflow:suspended', payload);
218
258
  }
219
259
 
220
260
  @OnEvent('hook:workflow:failure')
221
- sendWorkflowFailure(payload: WorkflowEventMap[keyof WorkflowEventMap]) {
222
- this.sendWorkflowEvent('hook:workflow:failure', payload);
261
+ async sendWorkflowFailure(payload: WorkflowEventMap[keyof WorkflowEventMap]) {
262
+ await this.sendWorkflowEvent('hook:workflow:failure', payload);
223
263
  }
224
264
 
225
265
  @OnEvent('hook:step:start')
226
- sendWorkflowStepStart(payload: WorkflowEventMap[keyof WorkflowEventMap]) {
227
- this.sendWorkflowEvent('hook:step:start', payload);
266
+ async sendWorkflowStepStart(
267
+ payload: WorkflowEventMap[keyof WorkflowEventMap],
268
+ ) {
269
+ await this.sendWorkflowEvent('hook:step:start', payload);
228
270
  }
229
271
 
230
272
  @OnEvent('hook:step:suspended')
231
- sendWorkflowStepSuspended(payload: WorkflowEventMap[keyof WorkflowEventMap]) {
232
- this.sendWorkflowEvent('hook:step:suspended', payload);
273
+ async sendWorkflowStepSuspended(
274
+ payload: WorkflowEventMap[keyof WorkflowEventMap],
275
+ ) {
276
+ await this.sendWorkflowEvent('hook:step:suspended', payload);
233
277
  }
234
278
 
235
279
  @OnEvent('hook:step:success')
236
- sendWorkflowStepSuccess(payload: WorkflowEventMap[keyof WorkflowEventMap]) {
237
- this.sendWorkflowEvent('hook:step:success', payload);
280
+ async sendWorkflowStepSuccess(
281
+ payload: WorkflowEventMap[keyof WorkflowEventMap],
282
+ ) {
283
+ await this.sendWorkflowEvent('hook:step:success', payload);
238
284
  }
239
285
 
240
286
  @OnEvent('hook:step:error')
241
- sendWorkflowStepError(payload: WorkflowEventMap[keyof WorkflowEventMap]) {
242
- this.sendWorkflowEvent('hook:step:error', payload);
287
+ async sendWorkflowStepError(
288
+ payload: WorkflowEventMap[keyof WorkflowEventMap],
289
+ ) {
290
+ await this.sendWorkflowEvent('hook:step:error', payload);
291
+ }
292
+
293
+ @OnEvent('hook:step:cancelled')
294
+ async sendWorkflowStepCancelled(
295
+ payload: WorkflowEventMap[keyof WorkflowEventMap],
296
+ ) {
297
+ await this.sendWorkflowEvent('hook:step:cancelled', payload);
243
298
  }
244
299
  }
@@ -21,6 +21,7 @@ import {
21
21
  WorkflowFull,
22
22
  } from '@hexabot-ai/types';
23
23
 
24
+ import type { WorkflowRuntimeContext } from './contexts/workflow-runtime.context';
24
25
  import { TriggerEventWrapper } from './lib/trigger-event-wrapper';
25
26
  import { SchemaInstance } from './utils/schema-instance';
26
27
 
@@ -36,16 +37,67 @@ export type MemoryValue = Record<string, unknown>;
36
37
 
37
38
  export type WorkflowResult = WorkflowStartResult | WorkflowResumeResult;
38
39
 
40
+ /**
41
+ * Payload passed from a child workflow back to the suspended `call_workflow`
42
+ * action in its parent. Only `finished` is exposed as the action output; the
43
+ * action converts `failed` into a thrown error and treats `suspended` as a
44
+ * durable wait state.
45
+ */
46
+ export type CallWorkflowFinishedResult = {
47
+ status: 'finished';
48
+ workflow_id: string;
49
+ workflow_run_id: string;
50
+ output: Record<string, unknown>;
51
+ };
52
+
53
+ export type CallWorkflowSuspendedResult = {
54
+ status: 'suspended';
55
+ workflow_id: string;
56
+ workflow_run_id: string;
57
+ };
58
+
59
+ export type CallWorkflowFailedResult = {
60
+ status: 'failed';
61
+ workflow_id: string;
62
+ workflow_run_id: string;
63
+ error: string;
64
+ };
65
+
66
+ export type CallWorkflowResult =
67
+ | CallWorkflowFinishedResult
68
+ | CallWorkflowSuspendedResult
69
+ | CallWorkflowFailedResult;
70
+
71
+ export type CallWorkflowOptions = {
72
+ workflowId: string;
73
+ /** Optional child start input. When omitted, the parent event input is reused. */
74
+ input?: Record<string, unknown>;
75
+ /** Runtime context of the parent action that is issuing the workflow call. */
76
+ parentContext: WorkflowRuntimeContext;
77
+ };
78
+
79
+ export interface WorkflowCallService {
80
+ callWorkflow(options: CallWorkflowOptions): Promise<CallWorkflowResult>;
81
+ }
82
+
83
+ export const WORKFLOW_CALL_SERVICE = Symbol('WORKFLOW_CALL_SERVICE');
84
+
39
85
  export type RunWorkflowOptions =
40
86
  | {
41
87
  mode: 'start';
42
88
  workflow: WorkflowFull;
43
89
  event: TriggerEventWrapper;
90
+ /** Present when this run is a child workflow call. */
91
+ parentRun?: WorkflowRunFull;
92
+ /** Start input override for child calls. */
93
+ input?: Record<string, unknown>;
44
94
  }
45
95
  | {
46
96
  mode: 'resume';
47
97
  run: WorkflowRunFull;
48
98
  event: TriggerEventWrapper;
99
+ /** Internal resume payload used to unwind a completed child into its parent. */
100
+ resumeData?: unknown;
49
101
  };
50
102
 
51
103
  export type MarkRunningInput = {
@@ -46,6 +46,7 @@ import { WorkflowRunService } from './services/workflow-run.service';
46
46
  import { WorkflowSchedulerService } from './services/workflow-scheduler.service';
47
47
  import { WorkflowVersionService } from './services/workflow-version.service';
48
48
  import { WorkflowService } from './services/workflow.service';
49
+ import { WORKFLOW_CALL_SERVICE } from './types';
49
50
 
50
51
  @Module({
51
52
  imports: [
@@ -93,6 +94,7 @@ import { WorkflowService } from './services/workflow.service';
93
94
  ScheduledWorkflowContext,
94
95
  WorkflowContextFactory,
95
96
  AgenticService,
97
+ { provide: WORKFLOW_CALL_SERVICE, useExisting: AgenticService },
96
98
  ],
97
99
  exports: [
98
100
  WorkflowRepository,
@@ -111,6 +113,7 @@ import { WorkflowService } from './services/workflow.service';
111
113
  McpClientPoolService,
112
114
  ConversationalWorkflowContext,
113
115
  AgenticService,
116
+ WORKFLOW_CALL_SERVICE,
114
117
  ],
115
118
  })
116
119
  export class WorkflowModule {}
@@ -4,7 +4,7 @@
4
4
  * Full terms: see LICENSE.md.
5
5
  */
6
6
 
7
- import type { StepInfo } from '@hexabot-ai/agentic';
7
+ import type { StepExecutionRecord, StepInfo } from '@hexabot-ai/agentic';
8
8
  import type { HttpException } from '@nestjs/common';
9
9
  import type { OnEventType } from '@nestjs/event-emitter';
10
10
  import type { OnEventOptions } from '@nestjs/event-emitter/dist/interfaces';
@@ -135,6 +135,12 @@ type HookEventPayload<
135
135
 
136
136
  type HookWildcardPayload<Entity> = [OrmLifecycleEvent<Entity>];
137
137
 
138
+ type StepWorkflowEventPayload = {
139
+ runId?: string;
140
+ step: StepInfo;
141
+ stepExecution?: StepExecutionRecord;
142
+ };
143
+
138
144
  declare module '@nestjs/event-emitter' {
139
145
  interface IHookSettingsGroupLabelOperationMap
140
146
  extends DefaultHookSettingsMap {}
@@ -239,11 +245,12 @@ declare module '@nestjs/event-emitter' {
239
245
  'hook:workflow:suspended': [
240
246
  { runId?: string; step: StepInfo; reason?: string; data?: unknown },
241
247
  ];
242
- 'hook:step:start': [{ runId?: string; step: StepInfo }];
243
- 'hook:step:success': [{ runId?: string; step: StepInfo }];
244
- 'hook:step:error': [{ runId?: string; step: StepInfo; error: unknown }];
248
+ 'hook:step:start': [StepWorkflowEventPayload];
249
+ 'hook:step:success': [StepWorkflowEventPayload];
250
+ 'hook:step:error': [StepWorkflowEventPayload & { error: unknown }];
251
+ 'hook:step:cancelled': [StepWorkflowEventPayload & { error: unknown }];
245
252
  'hook:step:suspended': [
246
- { runId?: string; step: StepInfo; reason?: string; data?: unknown },
253
+ StepWorkflowEventPayload & { reason?: string; data?: unknown },
247
254
  ];
248
255
  'hook:step:skipped': [{ runId?: string; step: StepInfo; reason?: string }];
249
256
  }