@mantajs/core 0.1.6 → 0.2.0-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 (564) hide show
  1. package/dist/adapters/auth-mock.d.ts +44 -0
  2. package/dist/adapters/auth-mock.d.ts.map +1 -0
  3. package/dist/adapters/auth-mock.js +160 -0
  4. package/dist/adapters/auth-mock.js.map +1 -0
  5. package/dist/adapters/cache-memory.d.ts +11 -0
  6. package/dist/adapters/cache-memory.d.ts.map +1 -0
  7. package/dist/adapters/cache-memory.js +32 -0
  8. package/dist/adapters/cache-memory.js.map +1 -0
  9. package/dist/adapters/database-memory.d.ts +24 -0
  10. package/dist/adapters/database-memory.d.ts.map +1 -0
  11. package/dist/adapters/database-memory.js +141 -0
  12. package/dist/adapters/database-memory.js.map +1 -0
  13. package/dist/adapters/eventbus-memory.d.ts +37 -0
  14. package/dist/adapters/eventbus-memory.d.ts.map +1 -0
  15. package/dist/adapters/eventbus-memory.js +166 -0
  16. package/dist/adapters/eventbus-memory.js.map +1 -0
  17. package/dist/adapters/file-memory.d.ts +24 -0
  18. package/dist/adapters/file-memory.d.ts.map +1 -0
  19. package/dist/adapters/file-memory.js +77 -0
  20. package/dist/adapters/file-memory.js.map +1 -0
  21. package/dist/adapters/http-memory.d.ts +23 -0
  22. package/dist/adapters/http-memory.d.ts.map +1 -0
  23. package/dist/adapters/http-memory.js +149 -0
  24. package/dist/adapters/http-memory.js.map +1 -0
  25. package/dist/adapters/index.d.ts +14 -0
  26. package/dist/adapters/index.d.ts.map +1 -0
  27. package/dist/adapters/index.js +15 -0
  28. package/dist/adapters/index.js.map +1 -0
  29. package/dist/adapters/job-scheduler-memory.d.ts +20 -0
  30. package/dist/adapters/job-scheduler-memory.d.ts.map +1 -0
  31. package/dist/adapters/job-scheduler-memory.js +103 -0
  32. package/dist/adapters/job-scheduler-memory.js.map +1 -0
  33. package/dist/adapters/locking-memory.d.ts +20 -0
  34. package/dist/adapters/locking-memory.d.ts.map +1 -0
  35. package/dist/adapters/locking-memory.js +85 -0
  36. package/dist/adapters/locking-memory.js.map +1 -0
  37. package/dist/adapters/logger-test.d.ts +30 -0
  38. package/dist/adapters/logger-test.d.ts.map +1 -0
  39. package/dist/adapters/logger-test.js +77 -0
  40. package/dist/adapters/logger-test.js.map +1 -0
  41. package/dist/adapters/notification-memory.d.ts +27 -0
  42. package/dist/adapters/notification-memory.d.ts.map +1 -0
  43. package/dist/adapters/notification-memory.js +69 -0
  44. package/dist/adapters/notification-memory.js.map +1 -0
  45. package/dist/adapters/relational-query-memory.d.ts +47 -0
  46. package/dist/adapters/relational-query-memory.d.ts.map +1 -0
  47. package/dist/adapters/relational-query-memory.js +263 -0
  48. package/dist/adapters/relational-query-memory.js.map +1 -0
  49. package/dist/adapters/repository-factory-memory.d.ts +17 -0
  50. package/dist/adapters/repository-factory-memory.d.ts.map +1 -0
  51. package/dist/adapters/repository-factory-memory.js +32 -0
  52. package/dist/adapters/repository-factory-memory.js.map +1 -0
  53. package/dist/adapters/repository-memory.d.ts +30 -0
  54. package/dist/adapters/repository-memory.d.ts.map +1 -0
  55. package/dist/adapters/repository-memory.js +183 -0
  56. package/dist/adapters/repository-memory.js.map +1 -0
  57. package/dist/ai/index.d.ts +53 -0
  58. package/dist/ai/index.d.ts.map +1 -0
  59. package/dist/ai/index.js +48 -0
  60. package/dist/ai/index.js.map +1 -0
  61. package/dist/app/index.d.ts +97 -0
  62. package/dist/app/index.d.ts.map +1 -0
  63. package/dist/app/index.js +217 -0
  64. package/dist/app/index.js.map +1 -0
  65. package/dist/app/request-context.d.ts +35 -0
  66. package/dist/app/request-context.d.ts.map +1 -0
  67. package/dist/app/request-context.js +32 -0
  68. package/dist/app/request-context.js.map +1 -0
  69. package/dist/auth/auth-module-service.d.ts +62 -0
  70. package/dist/auth/auth-module-service.d.ts.map +1 -0
  71. package/dist/auth/auth-module-service.js +210 -0
  72. package/dist/auth/auth-module-service.js.map +1 -0
  73. package/dist/auth/index.d.ts +7 -0
  74. package/dist/auth/index.d.ts.map +1 -0
  75. package/dist/auth/index.js +5 -0
  76. package/dist/auth/index.js.map +1 -0
  77. package/dist/auth/middleware.d.ts +19 -0
  78. package/dist/auth/middleware.d.ts.map +1 -0
  79. package/dist/auth/middleware.js +61 -0
  80. package/dist/auth/middleware.js.map +1 -0
  81. package/dist/auth/models/auth-identity.d.ts +11 -0
  82. package/dist/auth/models/auth-identity.d.ts.map +1 -0
  83. package/dist/auth/models/auth-identity.js +12 -0
  84. package/dist/auth/models/auth-identity.js.map +1 -0
  85. package/dist/auth/providers/emailpass.d.ts +7 -0
  86. package/dist/auth/providers/emailpass.d.ts.map +1 -0
  87. package/dist/auth/providers/emailpass.js +94 -0
  88. package/dist/auth/providers/emailpass.js.map +1 -0
  89. package/dist/auth/providers/types.d.ts +66 -0
  90. package/dist/auth/providers/types.d.ts.map +1 -0
  91. package/dist/auth/providers/types.js +3 -0
  92. package/dist/auth/providers/types.js.map +1 -0
  93. package/dist/auth/types.d.ts +36 -0
  94. package/dist/auth/types.d.ts.map +1 -0
  95. package/dist/auth/types.js +3 -0
  96. package/dist/auth/types.js.map +1 -0
  97. package/dist/command/define-command-graph.d.ts +63 -0
  98. package/dist/command/define-command-graph.d.ts.map +1 -0
  99. package/dist/command/define-command-graph.js +80 -0
  100. package/dist/command/define-command-graph.js.map +1 -0
  101. package/dist/command/dml-to-zod.d.ts +34 -0
  102. package/dist/command/dml-to-zod.d.ts.map +1 -0
  103. package/dist/command/dml-to-zod.js +140 -0
  104. package/dist/command/dml-to-zod.js.map +1 -0
  105. package/dist/command/generate-entity-commands.d.ts +68 -0
  106. package/dist/command/generate-entity-commands.d.ts.map +1 -0
  107. package/dist/command/generate-entity-commands.js +350 -0
  108. package/dist/command/generate-entity-commands.js.map +1 -0
  109. package/dist/command/index.d.ts +54 -0
  110. package/dist/command/index.d.ts.map +1 -0
  111. package/dist/command/index.js +338 -0
  112. package/dist/command/index.js.map +1 -0
  113. package/dist/command/types.d.ts +131 -0
  114. package/dist/command/types.d.ts.map +1 -0
  115. package/dist/command/types.js +2 -0
  116. package/dist/command/types.js.map +1 -0
  117. package/dist/config/built-in-presets.d.ts +20 -0
  118. package/dist/config/built-in-presets.d.ts.map +1 -0
  119. package/dist/config/built-in-presets.js +70 -0
  120. package/dist/config/built-in-presets.js.map +1 -0
  121. package/dist/config/config-manager.d.ts +117 -0
  122. package/dist/config/config-manager.d.ts.map +1 -0
  123. package/dist/config/config-manager.js +245 -0
  124. package/dist/config/config-manager.js.map +1 -0
  125. package/dist/config/define-config.d.ts +20 -0
  126. package/dist/config/define-config.d.ts.map +1 -0
  127. package/dist/config/define-config.js +64 -0
  128. package/dist/config/define-config.js.map +1 -0
  129. package/dist/config/feature-flags.d.ts +48 -0
  130. package/dist/config/feature-flags.d.ts.map +1 -0
  131. package/dist/config/feature-flags.js +97 -0
  132. package/dist/config/feature-flags.js.map +1 -0
  133. package/dist/config/index.d.ts +9 -0
  134. package/dist/config/index.d.ts.map +1 -0
  135. package/dist/config/index.js +8 -0
  136. package/dist/config/index.js.map +1 -0
  137. package/dist/config/presets.d.ts +38 -0
  138. package/dist/config/presets.d.ts.map +1 -0
  139. package/dist/config/presets.js +29 -0
  140. package/dist/config/presets.js.map +1 -0
  141. package/dist/config/types.d.ts +707 -0
  142. package/dist/config/types.d.ts.map +1 -0
  143. package/dist/config/types.js +112 -0
  144. package/dist/config/types.js.map +1 -0
  145. package/dist/context/index.d.ts +95 -0
  146. package/dist/context/index.d.ts.map +1 -0
  147. package/dist/context/index.js +26 -0
  148. package/dist/context/index.js.map +1 -0
  149. package/dist/context/registry.d.ts +32 -0
  150. package/dist/context/registry.d.ts.map +1 -0
  151. package/dist/context/registry.js +142 -0
  152. package/dist/context/registry.js.map +1 -0
  153. package/dist/db/index.d.ts +2 -0
  154. package/dist/db/index.d.ts.map +1 -0
  155. package/dist/db/index.js +4 -0
  156. package/dist/db/index.js.map +1 -0
  157. package/dist/db/schema.d.ts +839 -0
  158. package/dist/db/schema.d.ts.map +1 -0
  159. package/dist/db/schema.js +106 -0
  160. package/dist/db/schema.js.map +1 -0
  161. package/dist/dml/entity.d.ts +132 -0
  162. package/dist/dml/entity.d.ts.map +1 -0
  163. package/dist/dml/entity.js +110 -0
  164. package/dist/dml/entity.js.map +1 -0
  165. package/dist/dml/from-zod.d.ts +13 -0
  166. package/dist/dml/from-zod.d.ts.map +1 -0
  167. package/dist/dml/from-zod.js +81 -0
  168. package/dist/dml/from-zod.js.map +1 -0
  169. package/dist/dml/generator/index.d.ts +62 -0
  170. package/dist/dml/generator/index.d.ts.map +1 -0
  171. package/dist/dml/generator/index.js +208 -0
  172. package/dist/dml/generator/index.js.map +1 -0
  173. package/dist/dml/index.d.ts +11 -0
  174. package/dist/dml/index.d.ts.map +1 -0
  175. package/dist/dml/index.js +13 -0
  176. package/dist/dml/index.js.map +1 -0
  177. package/dist/dml/infer.d.ts +36 -0
  178. package/dist/dml/infer.d.ts.map +1 -0
  179. package/dist/dml/infer.js +5 -0
  180. package/dist/dml/infer.js.map +1 -0
  181. package/dist/dml/model.d.ts +58 -0
  182. package/dist/dml/model.d.ts.map +1 -0
  183. package/dist/dml/model.js +95 -0
  184. package/dist/dml/model.js.map +1 -0
  185. package/dist/dml/modifiers.d.ts +9 -0
  186. package/dist/dml/modifiers.d.ts.map +1 -0
  187. package/dist/dml/modifiers.js +25 -0
  188. package/dist/dml/modifiers.js.map +1 -0
  189. package/dist/dml/properties/array.d.ts +7 -0
  190. package/dist/dml/properties/array.d.ts.map +1 -0
  191. package/dist/dml/properties/array.js +5 -0
  192. package/dist/dml/properties/array.js.map +1 -0
  193. package/dist/dml/properties/autoincrement.d.ts +7 -0
  194. package/dist/dml/properties/autoincrement.d.ts.map +1 -0
  195. package/dist/dml/properties/autoincrement.js +5 -0
  196. package/dist/dml/properties/autoincrement.js.map +1 -0
  197. package/dist/dml/properties/base.d.ts +124 -0
  198. package/dist/dml/properties/base.d.ts.map +1 -0
  199. package/dist/dml/properties/base.js +76 -0
  200. package/dist/dml/properties/base.js.map +1 -0
  201. package/dist/dml/properties/big-number.d.ts +7 -0
  202. package/dist/dml/properties/big-number.d.ts.map +1 -0
  203. package/dist/dml/properties/big-number.js +5 -0
  204. package/dist/dml/properties/big-number.js.map +1 -0
  205. package/dist/dml/properties/boolean.d.ts +7 -0
  206. package/dist/dml/properties/boolean.d.ts.map +1 -0
  207. package/dist/dml/properties/boolean.js +5 -0
  208. package/dist/dml/properties/boolean.js.map +1 -0
  209. package/dist/dml/properties/computed.d.ts +9 -0
  210. package/dist/dml/properties/computed.d.ts.map +1 -0
  211. package/dist/dml/properties/computed.js +22 -0
  212. package/dist/dml/properties/computed.js.map +1 -0
  213. package/dist/dml/properties/date-time.d.ts +7 -0
  214. package/dist/dml/properties/date-time.d.ts.map +1 -0
  215. package/dist/dml/properties/date-time.js +5 -0
  216. package/dist/dml/properties/date-time.js.map +1 -0
  217. package/dist/dml/properties/enum.d.ts +12 -0
  218. package/dist/dml/properties/enum.d.ts.map +1 -0
  219. package/dist/dml/properties/enum.js +14 -0
  220. package/dist/dml/properties/enum.js.map +1 -0
  221. package/dist/dml/properties/float.d.ts +7 -0
  222. package/dist/dml/properties/float.d.ts.map +1 -0
  223. package/dist/dml/properties/float.js +5 -0
  224. package/dist/dml/properties/float.js.map +1 -0
  225. package/dist/dml/properties/index.d.ts +15 -0
  226. package/dist/dml/properties/index.d.ts.map +1 -0
  227. package/dist/dml/properties/index.js +15 -0
  228. package/dist/dml/properties/index.js.map +1 -0
  229. package/dist/dml/properties/json.d.ts +7 -0
  230. package/dist/dml/properties/json.d.ts.map +1 -0
  231. package/dist/dml/properties/json.js +6 -0
  232. package/dist/dml/properties/json.js.map +1 -0
  233. package/dist/dml/properties/nullable.d.ts +23 -0
  234. package/dist/dml/properties/nullable.d.ts.map +1 -0
  235. package/dist/dml/properties/nullable.js +46 -0
  236. package/dist/dml/properties/nullable.js.map +1 -0
  237. package/dist/dml/properties/number.d.ts +10 -0
  238. package/dist/dml/properties/number.d.ts.map +1 -0
  239. package/dist/dml/properties/number.js +13 -0
  240. package/dist/dml/properties/number.js.map +1 -0
  241. package/dist/dml/properties/primary-key.d.ts +14 -0
  242. package/dist/dml/properties/primary-key.d.ts.map +1 -0
  243. package/dist/dml/properties/primary-key.js +23 -0
  244. package/dist/dml/properties/primary-key.js.map +1 -0
  245. package/dist/dml/properties/text.d.ts +15 -0
  246. package/dist/dml/properties/text.d.ts.map +1 -0
  247. package/dist/dml/properties/text.js +19 -0
  248. package/dist/dml/properties/text.js.map +1 -0
  249. package/dist/dml/relations/belongs-to.d.ts +20 -0
  250. package/dist/dml/relations/belongs-to.d.ts.map +1 -0
  251. package/dist/dml/relations/belongs-to.js +29 -0
  252. package/dist/dml/relations/belongs-to.js.map +1 -0
  253. package/dist/dml/relations/has-many.d.ts +16 -0
  254. package/dist/dml/relations/has-many.d.ts.map +1 -0
  255. package/dist/dml/relations/has-many.js +25 -0
  256. package/dist/dml/relations/has-many.js.map +1 -0
  257. package/dist/dml/relations/has-one.d.ts +26 -0
  258. package/dist/dml/relations/has-one.d.ts.map +1 -0
  259. package/dist/dml/relations/has-one.js +46 -0
  260. package/dist/dml/relations/has-one.js.map +1 -0
  261. package/dist/dml/relations/many-to-many.d.ts +9 -0
  262. package/dist/dml/relations/many-to-many.d.ts.map +1 -0
  263. package/dist/dml/relations/many-to-many.js +11 -0
  264. package/dist/dml/relations/many-to-many.js.map +1 -0
  265. package/dist/errors/manta-error.d.ts +68 -0
  266. package/dist/errors/manta-error.d.ts.map +1 -0
  267. package/dist/errors/manta-error.js +80 -0
  268. package/dist/errors/manta-error.js.map +1 -0
  269. package/dist/events/index.d.ts +3 -0
  270. package/dist/events/index.d.ts.map +1 -0
  271. package/dist/events/index.js +3 -0
  272. package/dist/events/index.js.map +1 -0
  273. package/dist/events/message-aggregator.d.ts +25 -0
  274. package/dist/events/message-aggregator.d.ts.map +1 -0
  275. package/dist/events/message-aggregator.js +35 -0
  276. package/dist/events/message-aggregator.js.map +1 -0
  277. package/dist/events/types.d.ts +42 -0
  278. package/dist/events/types.d.ts.map +1 -0
  279. package/dist/events/types.js +3 -0
  280. package/dist/events/types.js.map +1 -0
  281. package/dist/index.d.ts +55 -0
  282. package/dist/index.d.ts.map +1 -0
  283. package/dist/index.js +53 -0
  284. package/dist/index.js.map +1 -0
  285. package/dist/job/index.d.ts +52 -0
  286. package/dist/job/index.d.ts.map +1 -0
  287. package/dist/job/index.js +31 -0
  288. package/dist/job/index.js.map +1 -0
  289. package/dist/link/index.d.ts +97 -0
  290. package/dist/link/index.d.ts.map +1 -0
  291. package/dist/link/index.js +185 -0
  292. package/dist/link/index.js.map +1 -0
  293. package/dist/middleware/define-middleware.d.ts +54 -0
  294. package/dist/middleware/define-middleware.d.ts.map +1 -0
  295. package/dist/middleware/define-middleware.js +40 -0
  296. package/dist/middleware/define-middleware.js.map +1 -0
  297. package/dist/middleware/index.d.ts +56 -0
  298. package/dist/middleware/index.d.ts.map +1 -0
  299. package/dist/middleware/index.js +50 -0
  300. package/dist/middleware/index.js.map +1 -0
  301. package/dist/module/index.d.ts +56 -0
  302. package/dist/module/index.d.ts.map +1 -0
  303. package/dist/module/index.js +52 -0
  304. package/dist/module/index.js.map +1 -0
  305. package/dist/module/versioning.d.ts +27 -0
  306. package/dist/module/versioning.d.ts.map +1 -0
  307. package/dist/module/versioning.js +64 -0
  308. package/dist/module/versioning.js.map +1 -0
  309. package/dist/naming.d.ts +39 -0
  310. package/dist/naming.d.ts.map +1 -0
  311. package/dist/naming.js +95 -0
  312. package/dist/naming.js.map +1 -0
  313. package/dist/ports/analytics.d.ts +7 -0
  314. package/dist/ports/analytics.d.ts.map +1 -0
  315. package/dist/ports/analytics.js +3 -0
  316. package/dist/ports/analytics.js.map +1 -0
  317. package/dist/ports/auth.d.ts +27 -0
  318. package/dist/ports/auth.d.ts.map +1 -0
  319. package/dist/ports/auth.js +3 -0
  320. package/dist/ports/auth.js.map +1 -0
  321. package/dist/ports/cache.d.ts +35 -0
  322. package/dist/ports/cache.d.ts.map +1 -0
  323. package/dist/ports/cache.js +3 -0
  324. package/dist/ports/cache.js.map +1 -0
  325. package/dist/ports/database.d.ts +40 -0
  326. package/dist/ports/database.d.ts.map +1 -0
  327. package/dist/ports/database.js +3 -0
  328. package/dist/ports/database.js.map +1 -0
  329. package/dist/ports/event-bus.d.ts +85 -0
  330. package/dist/ports/event-bus.d.ts.map +1 -0
  331. package/dist/ports/event-bus.js +3 -0
  332. package/dist/ports/event-bus.js.map +1 -0
  333. package/dist/ports/file.d.ts +62 -0
  334. package/dist/ports/file.d.ts.map +1 -0
  335. package/dist/ports/file.js +3 -0
  336. package/dist/ports/file.js.map +1 -0
  337. package/dist/ports/http.d.ts +20 -0
  338. package/dist/ports/http.d.ts.map +1 -0
  339. package/dist/ports/http.js +3 -0
  340. package/dist/ports/http.js.map +1 -0
  341. package/dist/ports/in-memory-progress-channel.d.ts +9 -0
  342. package/dist/ports/in-memory-progress-channel.d.ts.map +1 -0
  343. package/dist/ports/in-memory-progress-channel.js +19 -0
  344. package/dist/ports/in-memory-progress-channel.js.map +1 -0
  345. package/dist/ports/in-memory-queue.d.ts +24 -0
  346. package/dist/ports/in-memory-queue.d.ts.map +1 -0
  347. package/dist/ports/in-memory-queue.js +63 -0
  348. package/dist/ports/in-memory-queue.js.map +1 -0
  349. package/dist/ports/index.d.ts +27 -0
  350. package/dist/ports/index.d.ts.map +1 -0
  351. package/dist/ports/index.js +6 -0
  352. package/dist/ports/index.js.map +1 -0
  353. package/dist/ports/job-scheduler.d.ts +42 -0
  354. package/dist/ports/job-scheduler.d.ts.map +1 -0
  355. package/dist/ports/job-scheduler.js +3 -0
  356. package/dist/ports/job-scheduler.js.map +1 -0
  357. package/dist/ports/locking.d.ts +43 -0
  358. package/dist/ports/locking.d.ts.map +1 -0
  359. package/dist/ports/locking.js +3 -0
  360. package/dist/ports/locking.js.map +1 -0
  361. package/dist/ports/logger.d.ts +65 -0
  362. package/dist/ports/logger.d.ts.map +1 -0
  363. package/dist/ports/logger.js +3 -0
  364. package/dist/ports/logger.js.map +1 -0
  365. package/dist/ports/notification.d.ts +71 -0
  366. package/dist/ports/notification.d.ts.map +1 -0
  367. package/dist/ports/notification.js +3 -0
  368. package/dist/ports/notification.js.map +1 -0
  369. package/dist/ports/progress-channel.d.ts +46 -0
  370. package/dist/ports/progress-channel.d.ts.map +1 -0
  371. package/dist/ports/progress-channel.js +6 -0
  372. package/dist/ports/progress-channel.js.map +1 -0
  373. package/dist/ports/queue.d.ts +21 -0
  374. package/dist/ports/queue.d.ts.map +1 -0
  375. package/dist/ports/queue.js +15 -0
  376. package/dist/ports/queue.js.map +1 -0
  377. package/dist/ports/relational-query.d.ts +37 -0
  378. package/dist/ports/relational-query.d.ts.map +1 -0
  379. package/dist/ports/relational-query.js +3 -0
  380. package/dist/ports/relational-query.js.map +1 -0
  381. package/dist/ports/repository-factory.d.ts +21 -0
  382. package/dist/ports/repository-factory.d.ts.map +1 -0
  383. package/dist/ports/repository-factory.js +4 -0
  384. package/dist/ports/repository-factory.js.map +1 -0
  385. package/dist/ports/repository.d.ts +73 -0
  386. package/dist/ports/repository.d.ts.map +1 -0
  387. package/dist/ports/repository.js +3 -0
  388. package/dist/ports/repository.js.map +1 -0
  389. package/dist/ports/schema-generator.d.ts +15 -0
  390. package/dist/ports/schema-generator.d.ts.map +1 -0
  391. package/dist/ports/schema-generator.js +4 -0
  392. package/dist/ports/schema-generator.js.map +1 -0
  393. package/dist/ports/search.d.ts +7 -0
  394. package/dist/ports/search.d.ts.map +1 -0
  395. package/dist/ports/search.js +3 -0
  396. package/dist/ports/search.js.map +1 -0
  397. package/dist/ports/types.d.ts +112 -0
  398. package/dist/ports/types.d.ts.map +1 -0
  399. package/dist/ports/types.js +26 -0
  400. package/dist/ports/types.js.map +1 -0
  401. package/dist/ports/workflow-store.d.ts +111 -0
  402. package/dist/ports/workflow-store.d.ts.map +1 -0
  403. package/dist/ports/workflow-store.js +5 -0
  404. package/dist/ports/workflow-store.js.map +1 -0
  405. package/dist/query/define-query-graph.d.ts +55 -0
  406. package/dist/query/define-query-graph.d.ts.map +1 -0
  407. package/dist/query/define-query-graph.js +59 -0
  408. package/dist/query/define-query-graph.js.map +1 -0
  409. package/dist/query/define-query.d.ts +79 -0
  410. package/dist/query/define-query.d.ts.map +1 -0
  411. package/dist/query/define-query.js +77 -0
  412. package/dist/query/define-query.js.map +1 -0
  413. package/dist/query/extend-query-graph.d.ts +36 -0
  414. package/dist/query/extend-query-graph.d.ts.map +1 -0
  415. package/dist/query/extend-query-graph.js +34 -0
  416. package/dist/query/extend-query-graph.js.map +1 -0
  417. package/dist/query/index.d.ts +181 -0
  418. package/dist/query/index.d.ts.map +1 -0
  419. package/dist/query/index.js +288 -0
  420. package/dist/query/index.js.map +1 -0
  421. package/dist/service/define.d.ts +97 -0
  422. package/dist/service/define.d.ts.map +1 -0
  423. package/dist/service/define.js +45 -0
  424. package/dist/service/define.js.map +1 -0
  425. package/dist/service/index.d.ts +52 -0
  426. package/dist/service/index.d.ts.map +1 -0
  427. package/dist/service/index.js +281 -0
  428. package/dist/service/index.js.map +1 -0
  429. package/dist/service/instantiate.d.ts +15 -0
  430. package/dist/service/instantiate.d.ts.map +1 -0
  431. package/dist/service/instantiate.js +143 -0
  432. package/dist/service/instantiate.js.map +1 -0
  433. package/dist/service/snapshot-repository.d.ts +31 -0
  434. package/dist/service/snapshot-repository.d.ts.map +1 -0
  435. package/dist/service/snapshot-repository.js +114 -0
  436. package/dist/service/snapshot-repository.js.map +1 -0
  437. package/dist/service/types.d.ts +39 -0
  438. package/dist/service/types.d.ts.map +1 -0
  439. package/dist/service/types.js +3 -0
  440. package/dist/service/types.js.map +1 -0
  441. package/dist/strict-mode/index.d.ts +42 -0
  442. package/dist/strict-mode/index.d.ts.map +1 -0
  443. package/dist/strict-mode/index.js +84 -0
  444. package/dist/strict-mode/index.js.map +1 -0
  445. package/dist/subscriber/index.d.ts +117 -0
  446. package/dist/subscriber/index.d.ts.map +1 -0
  447. package/dist/subscriber/index.js +76 -0
  448. package/dist/subscriber/index.js.map +1 -0
  449. package/dist/testing/relational-query-suite.d.ts +22 -0
  450. package/dist/testing/relational-query-suite.d.ts.map +1 -0
  451. package/dist/testing/relational-query-suite.js +233 -0
  452. package/dist/testing/relational-query-suite.js.map +1 -0
  453. package/dist/user/auto-routes.d.ts +32 -0
  454. package/dist/user/auto-routes.d.ts.map +1 -0
  455. package/dist/user/auto-routes.js +424 -0
  456. package/dist/user/auto-routes.js.map +1 -0
  457. package/dist/user/define-user.d.ts +54 -0
  458. package/dist/user/define-user.d.ts.map +1 -0
  459. package/dist/user/define-user.js +103 -0
  460. package/dist/user/define-user.js.map +1 -0
  461. package/dist/user/index.d.ts +7 -0
  462. package/dist/user/index.d.ts.map +1 -0
  463. package/dist/user/index.js +5 -0
  464. package/dist/user/index.js.map +1 -0
  465. package/dist/user/models/user.d.ts +15 -0
  466. package/dist/user/models/user.d.ts.map +1 -0
  467. package/dist/user/models/user.js +16 -0
  468. package/dist/user/models/user.js.map +1 -0
  469. package/dist/user/user-module-service.d.ts +55 -0
  470. package/dist/user/user-module-service.d.ts.map +1 -0
  471. package/dist/user/user-module-service.js +100 -0
  472. package/dist/user/user-module-service.js.map +1 -0
  473. package/dist/workflows/ai-step.d.ts +2 -0
  474. package/dist/workflows/ai-step.d.ts.map +1 -0
  475. package/dist/workflows/ai-step.js +54 -0
  476. package/dist/workflows/ai-step.js.map +1 -0
  477. package/dist/workflows/create-step.d.ts +16 -0
  478. package/dist/workflows/create-step.d.ts.map +1 -0
  479. package/dist/workflows/create-step.js +194 -0
  480. package/dist/workflows/create-step.js.map +1 -0
  481. package/dist/workflows/create-workflow.d.ts +16 -0
  482. package/dist/workflows/create-workflow.d.ts.map +1 -0
  483. package/dist/workflows/create-workflow.js +21 -0
  484. package/dist/workflows/create-workflow.js.map +1 -0
  485. package/dist/workflows/define-workflow.d.ts +55 -0
  486. package/dist/workflows/define-workflow.d.ts.map +1 -0
  487. package/dist/workflows/define-workflow.js +72 -0
  488. package/dist/workflows/define-workflow.js.map +1 -0
  489. package/dist/workflows/emit-event-step.d.ts +17 -0
  490. package/dist/workflows/emit-event-step.d.ts.map +1 -0
  491. package/dist/workflows/emit-event-step.js +46 -0
  492. package/dist/workflows/emit-event-step.js.map +1 -0
  493. package/dist/workflows/for-each.d.ts +6 -0
  494. package/dist/workflows/for-each.d.ts.map +1 -0
  495. package/dist/workflows/for-each.js +79 -0
  496. package/dist/workflows/for-each.js.map +1 -0
  497. package/dist/workflows/index.d.ts +15 -0
  498. package/dist/workflows/index.d.ts.map +1 -0
  499. package/dist/workflows/index.js +12 -0
  500. package/dist/workflows/index.js.map +1 -0
  501. package/dist/workflows/manager.d.ts +99 -0
  502. package/dist/workflows/manager.d.ts.map +1 -0
  503. package/dist/workflows/manager.js +450 -0
  504. package/dist/workflows/manager.js.map +1 -0
  505. package/dist/workflows/orphan-reaper.d.ts +50 -0
  506. package/dist/workflows/orphan-reaper.d.ts.map +1 -0
  507. package/dist/workflows/orphan-reaper.js +69 -0
  508. package/dist/workflows/orphan-reaper.js.map +1 -0
  509. package/dist/workflows/progress-helper.d.ts +20 -0
  510. package/dist/workflows/progress-helper.d.ts.map +1 -0
  511. package/dist/workflows/progress-helper.js +48 -0
  512. package/dist/workflows/progress-helper.js.map +1 -0
  513. package/dist/workflows/step.d.ts +103 -0
  514. package/dist/workflows/step.d.ts.map +1 -0
  515. package/dist/workflows/step.js +949 -0
  516. package/dist/workflows/step.js.map +1 -0
  517. package/dist/workflows/types.d.ts +215 -0
  518. package/dist/workflows/types.d.ts.map +1 -0
  519. package/dist/workflows/types.js +9 -0
  520. package/dist/workflows/types.js.map +1 -0
  521. package/dist/workflows/yield.d.ts +12 -0
  522. package/dist/workflows/yield.d.ts.map +1 -0
  523. package/dist/workflows/yield.js +29 -0
  524. package/dist/workflows/yield.js.map +1 -0
  525. package/docs/00-overview.md +254 -0
  526. package/docs/01-getting-started.md +224 -0
  527. package/docs/02-models.md +163 -0
  528. package/docs/03-services.md +208 -0
  529. package/docs/04-users.md +165 -0
  530. package/docs/05-commands.md +501 -0
  531. package/docs/06-queries.md +342 -0
  532. package/docs/07-events.md +248 -0
  533. package/docs/08-links.md +182 -0
  534. package/docs/09-agents.md +142 -0
  535. package/docs/10-spa.md +327 -0
  536. package/docs/11-config.md +481 -0
  537. package/docs/12-constraints.md +183 -0
  538. package/docs/13-testing.md +345 -0
  539. package/docs/14-adapters.md +204 -0
  540. package/docs/15-hosts.md +163 -0
  541. package/docs/16-reference.md +274 -0
  542. package/docs/17-dashboard.md +619 -0
  543. package/docs/AGENT.md +501 -0
  544. package/package.json +49 -52
  545. package/.medusa/server/src/admin/index.js +0 -5358
  546. package/.medusa/server/src/admin/index.mjs +0 -5356
  547. package/.medusa/server/src/api/admin/companies/[id]/route.js +0 -39
  548. package/.medusa/server/src/api/admin/companies/middlewares.js +0 -41
  549. package/.medusa/server/src/api/admin/companies/route.js +0 -37
  550. package/.medusa/server/src/api/admin/companies/validators.js +0 -29
  551. package/.medusa/server/src/api/middlewares.js +0 -8
  552. package/.medusa/server/src/index.js +0 -5
  553. package/.medusa/server/src/modules/company/index.js +0 -13
  554. package/.medusa/server/src/modules/company/migrations/Migration20260126141741.js +0 -26
  555. package/.medusa/server/src/modules/company/models/company.js +0 -24
  556. package/.medusa/server/src/modules/company/models/employee.js +0 -15
  557. package/.medusa/server/src/modules/company/models/index.js +0 -11
  558. package/.medusa/server/src/modules/company/service.js +0 -11
  559. package/.medusa/server/src/workflows/create-company.js +0 -10
  560. package/.medusa/server/src/workflows/delete-company.js +0 -10
  561. package/.medusa/server/src/workflows/steps/create-company.js +0 -16
  562. package/.medusa/server/src/workflows/steps/delete-company.js +0 -30
  563. package/.medusa/server/src/workflows/steps/update-company.js +0 -30
  564. package/.medusa/server/src/workflows/update-company.js +0 -10
@@ -0,0 +1,450 @@
1
+ // WorkflowManager — registers and executes imperative workflows.
2
+ import { AsyncLocalStorage } from 'node:async_hooks';
3
+ import { MantaError } from '../errors/manta-error';
4
+ import { CancelledError } from './progress-helper';
5
+ import { RETRY_POLICY } from './types';
6
+ import { isWorkflowYield } from './yield';
7
+ export const workflowContextStorage = new AsyncLocalStorage();
8
+ class MemoryStorage {
9
+ _store = new Map();
10
+ async save(transactionId, stepId, data) {
11
+ this._store.set(`${transactionId}:${stepId}`, data);
12
+ }
13
+ async list(transactionId) {
14
+ const results = [];
15
+ for (const [key, value] of this._store) {
16
+ if (key.startsWith(`${transactionId}:`)) {
17
+ results.push({ stepId: key.slice(transactionId.length + 1), data: value });
18
+ }
19
+ }
20
+ return results;
21
+ }
22
+ async delete(transactionId) {
23
+ for (const key of this._store.keys()) {
24
+ if (key.startsWith(`${transactionId}:`))
25
+ this._store.delete(key);
26
+ }
27
+ }
28
+ }
29
+ /**
30
+ * WorkflowManager — registers and runs imperative workflows.
31
+ * Steps access the workflow context via AsyncLocalStorage.
32
+ */
33
+ export class WorkflowManager {
34
+ _workflows = new Map();
35
+ _logger = null;
36
+ _eventBus = null;
37
+ _locking = null;
38
+ _storage;
39
+ _store;
40
+ _progressChannel;
41
+ _queue;
42
+ _resumeEndpoint;
43
+ _stepBudgetMs;
44
+ _app;
45
+ /** Per-run AbortControllers. Keyed by transactionId / runId. */
46
+ _controllers = new Map();
47
+ constructor(app, options) {
48
+ this._app = app;
49
+ this._storage = options?.storage ?? new MemoryStorage();
50
+ this._store = options?.store;
51
+ this._progressChannel = options?.progressChannel;
52
+ this._queue = options?.queue;
53
+ this._resumeEndpoint = options?.resumeEndpoint;
54
+ this._stepBudgetMs = options?.stepBudgetMs;
55
+ this._logger = app.infra.logger ?? null;
56
+ this._eventBus = app.infra.eventBus ?? null;
57
+ this._locking = app.infra.locking ?? null;
58
+ }
59
+ // biome-ignore lint/suspicious/noExplicitAny: workflow definitions have varied type params
60
+ register(workflow) {
61
+ this._workflows.set(workflow.name, workflow);
62
+ }
63
+ async run(workflowId, options = {}) {
64
+ const workflow = this._workflows.get(workflowId);
65
+ if (!workflow)
66
+ throw new MantaError('UNKNOWN_MODULES', `Workflow "${workflowId}" not registered`);
67
+ const input = options.input ?? {};
68
+ const transactionId = options.transactionId ?? `tx_${crypto.randomUUID().replace(/-/g, '')}`;
69
+ const cleanup = options.cleanup ?? true;
70
+ if (this._locking) {
71
+ const acquired = await this._locking.acquire(`workflow:${transactionId}`, { expire: 60000 });
72
+ if (!acquired)
73
+ throw new MantaError('CONFLICT', `Workflow "${workflowId}" already running: ${transactionId}`);
74
+ }
75
+ // Set up the per-run AbortController (used by ctx.signal + cancel detection).
76
+ const controller = new AbortController();
77
+ this._controllers.set(transactionId, controller);
78
+ // Wire the eventbus-backed cancel channel (WORKFLOW_PROGRESS.md §10.3).
79
+ // When the framework route DELETE /_workflow/:id publishes `workflow:cancel`,
80
+ // the matching run aborts immediately — without waiting for the next step
81
+ // boundary check. Cleanup happens in the outer finally block below.
82
+ let cancelSubscriberId = null;
83
+ if (this._eventBus) {
84
+ cancelSubscriberId = `workflow-cancel:${transactionId}`;
85
+ this._eventBus.subscribe('workflow:cancel', (msg) => {
86
+ const data = msg.data;
87
+ if (data?.runId === transactionId && !controller.signal.aborted) {
88
+ controller.abort('cancelled');
89
+ }
90
+ }, { subscriberId: cancelSubscriberId });
91
+ }
92
+ // Seed the durable run (best effort — store failures MUST NOT fail the workflow).
93
+ if (this._store) {
94
+ try {
95
+ await this._store.create({
96
+ id: transactionId,
97
+ command_name: workflowId,
98
+ steps: [],
99
+ input,
100
+ });
101
+ }
102
+ catch (err) {
103
+ this._logger?.warn(`[workflow:${workflowId}] store.create failed: ${err?.message ?? err}`);
104
+ }
105
+ }
106
+ try {
107
+ // Durable execution: retry up to RETRY_POLICY.maxAttempts before compensating
108
+ let lastError = null;
109
+ for (let attempt = 1; attempt <= RETRY_POLICY.maxAttempts; attempt++) {
110
+ try {
111
+ const result = await this._execute(workflow, workflowId, input, transactionId, cleanup, attempt, controller);
112
+ // Terminal: succeeded
113
+ if (this._store) {
114
+ try {
115
+ await this._store.updateStatus(transactionId, 'succeeded', {
116
+ output: result.result,
117
+ completed_at: new Date(),
118
+ });
119
+ }
120
+ catch (err) {
121
+ this._logger?.warn(`[workflow:${workflowId}] store.updateStatus(succeeded) failed: ${err?.message ?? err}`);
122
+ }
123
+ }
124
+ if (this._progressChannel) {
125
+ this._progressChannel.clear(transactionId).catch(() => {
126
+ /* clear is observability — swallow */
127
+ });
128
+ }
129
+ return result;
130
+ }
131
+ catch (error) {
132
+ // ctx.yield() is a non-error control flow — NEVER retry, NEVER
133
+ // compensate. The step already persisted its resume_state via
134
+ // createStep / runStep. We transition the run to 'paused' (pre-terminal)
135
+ // and ask the queue port to schedule a continuation. The outer
136
+ // finally releases the lock + cancel subscriber; no explicit
137
+ // cleanup() call needed here.
138
+ if (isWorkflowYield(error)) {
139
+ if (this._store) {
140
+ try {
141
+ await this._store.updateStatus(transactionId, 'paused');
142
+ }
143
+ catch (err) {
144
+ this._logger?.warn(`[workflow:${workflowId}] store.updateStatus(paused) failed: ${err?.message ?? err}`);
145
+ }
146
+ }
147
+ // Ask the queue adapter to schedule a continuation. If no queue
148
+ // is wired, the run stays paused until a manual
149
+ // `manager.resume(runId)` is called (tests / CLI).
150
+ if (this._queue && this._resumeEndpoint) {
151
+ try {
152
+ await this._queue.enqueue({
153
+ url: this._resumeEndpoint(transactionId),
154
+ payload: { runId: transactionId },
155
+ idempotencyKey: `resume:${transactionId}`,
156
+ });
157
+ }
158
+ catch (err) {
159
+ this._logger?.warn(`[workflow:${workflowId}] queue.enqueue(resume) failed: ${err?.message ?? err}`);
160
+ }
161
+ }
162
+ return {
163
+ transaction: { transactionId, state: 'invoking' },
164
+ result: undefined,
165
+ };
166
+ }
167
+ lastError = error;
168
+ // Cancellation short-circuits retries.
169
+ const isCancel = isCancelledError(error);
170
+ if (isCancel)
171
+ break;
172
+ if (attempt < RETRY_POLICY.maxAttempts) {
173
+ // Backoff delay before next attempt
174
+ const delay = Math.min(RETRY_POLICY.initialIntervalMs * RETRY_POLICY.backoffMultiplier ** (attempt - 1), RETRY_POLICY.maxIntervalMs);
175
+ this._logger?.info(`[workflow:${workflowId}] Retrying (${attempt + 1}/${RETRY_POLICY.maxAttempts}) in ${delay}ms`);
176
+ await new Promise((resolve) => setTimeout(resolve, delay));
177
+ }
178
+ }
179
+ }
180
+ // Terminal failure path
181
+ if (this._store && lastError) {
182
+ const cancelled = isCancelledError(lastError);
183
+ const terminalStatus = cancelled ? 'cancelled' : 'failed';
184
+ const fields = { completed_at: new Date() };
185
+ if (!cancelled) {
186
+ fields.error = toWorkflowError(lastError);
187
+ }
188
+ try {
189
+ await this._store.updateStatus(transactionId, terminalStatus, fields);
190
+ }
191
+ catch (err) {
192
+ this._logger?.warn(`[workflow:${workflowId}] store.updateStatus(${terminalStatus}) failed: ${err?.message ?? err}`);
193
+ }
194
+ }
195
+ if (this._progressChannel) {
196
+ this._progressChannel.clear(transactionId).catch(() => {
197
+ /* swallow */
198
+ });
199
+ }
200
+ throw lastError;
201
+ }
202
+ finally {
203
+ this._controllers.delete(transactionId);
204
+ if (cancelSubscriberId && this._eventBus) {
205
+ try {
206
+ this._eventBus.unsubscribe(cancelSubscriberId);
207
+ }
208
+ catch {
209
+ /* eventbus may be disposed — ignore */
210
+ }
211
+ }
212
+ if (this._locking) {
213
+ await this._locking.release(`workflow:${transactionId}`).catch((err) => {
214
+ ;
215
+ (this._logger ?? console).warn(`[WorkflowManager] Lock release failed: ${err?.message ?? err}`);
216
+ });
217
+ }
218
+ }
219
+ }
220
+ /**
221
+ * Resume a paused workflow run. Invoked by the HTTP handler for
222
+ * `POST /api/<ctx>/_workflow/:runId/resume` when the queue adapter
223
+ * delivers a continuation.
224
+ *
225
+ * Loads the run's original `command_name` and `input` from the store, then
226
+ * re-enters `run()` with the same `transactionId`. The normal resume
227
+ * machinery picks up:
228
+ * - completed steps (from workflow_checkpoints) — skipped at zero cost
229
+ * - paused steps (from workflow_runs.steps[].resume_state) — re-invoked
230
+ * with ctx.resumeState populated
231
+ *
232
+ * Idempotent: safe to call multiple times — if the run is already terminal,
233
+ * returns early without re-executing.
234
+ */
235
+ async resume(runId) {
236
+ if (!this._store) {
237
+ throw new MantaError('UNEXPECTED_STATE', 'resume requires an IWorkflowStorePort');
238
+ }
239
+ const run = await this._store.get(runId);
240
+ if (!run) {
241
+ throw new MantaError('NOT_FOUND', `Workflow run "${runId}" not found`);
242
+ }
243
+ if (run.status === 'succeeded' || run.status === 'failed' || run.status === 'cancelled') {
244
+ this._logger?.info(`[workflow:${run.command_name}] resume(${runId}) skipped — already ${run.status}`);
245
+ return { transaction: { transactionId: runId, state: 'done' } };
246
+ }
247
+ // Re-enter the workflow with the same transactionId. checkpoints + resumeStates
248
+ // are loaded from the store inside _execute.
249
+ return this.run(run.command_name, {
250
+ transactionId: runId,
251
+ input: run.input ?? {},
252
+ });
253
+ }
254
+ /**
255
+ * Execute a single attempt. Throws on failure — the retry loop in run() handles retries.
256
+ * On the final attempt, compensates before re-throwing.
257
+ */
258
+ async _execute(workflow, workflowId, input, transactionId, cleanup, attempt, controller) {
259
+ const isFinalAttempt = attempt >= RETRY_POLICY.maxAttempts;
260
+ // Track execution start
261
+ if (this._storage.trackStart) {
262
+ await this._storage.trackStart(transactionId, workflowId, input).catch((err) => {
263
+ ;
264
+ (this._logger ?? console).warn(`[WorkflowManager] trackStart failed: ${err?.message ?? err}`);
265
+ });
266
+ }
267
+ // Load existing checkpoints (durable resume — completed steps skip in 0ms)
268
+ const checkpoints = new Map();
269
+ const existing = await this._storage.list(transactionId);
270
+ for (const cp of existing)
271
+ checkpoints.set(cp.stepId, cp.data);
272
+ if (checkpoints.size > 0) {
273
+ this._logger?.info(`[workflow:${workflowId}] Resuming (attempt ${attempt}): ${checkpoints.size} steps already completed`);
274
+ }
275
+ // Load resume states (for steps that ctx.yield()ed on a previous invocation).
276
+ // Empty on a fresh run; populated when the queue delivers a POST to the
277
+ // `/resume` endpoint and `manager.resume(runId)` re-enters _execute.
278
+ const resumeStates = new Map();
279
+ if (this._store) {
280
+ try {
281
+ const run = await this._store.get(transactionId);
282
+ if (run) {
283
+ for (const step of run.steps ?? []) {
284
+ if (step.status === 'paused' && step.resume_state !== undefined) {
285
+ resumeStates.set(step.name, step.resume_state);
286
+ }
287
+ }
288
+ }
289
+ }
290
+ catch (err) {
291
+ this._logger?.warn(`[workflow:${workflowId}] store.get(resumeStates) failed: ${err?.message ?? err}`);
292
+ }
293
+ }
294
+ // Event buffering
295
+ const eventGroupId = `wf:${transactionId}`;
296
+ // Create workflow context (accessible via AsyncLocalStorage)
297
+ const storage = this._storage;
298
+ const wfCtx = {
299
+ transactionId,
300
+ runId: transactionId,
301
+ checkpoints,
302
+ completedSteps: [],
303
+ stepCounter: new Map(),
304
+ eventGroupId,
305
+ bufferEvent: this._eventBus
306
+ ? (event) => {
307
+ this._eventBus.emit(event, { groupId: eventGroupId }).catch((err) => {
308
+ ;
309
+ (this._logger ?? console).warn(`[WorkflowManager] Event buffer failed: ${err?.message ?? err}`);
310
+ });
311
+ }
312
+ : undefined,
313
+ // Durable execution: persist each checkpoint immediately so retries can resume
314
+ saveCheckpoint: async (stepKey, output) => {
315
+ await storage.save(transactionId, stepKey, output);
316
+ },
317
+ store: this._store,
318
+ progressChannel: this._progressChannel,
319
+ stepName: undefined,
320
+ signal: controller.signal,
321
+ resumeStates: resumeStates.size > 0 ? resumeStates : undefined,
322
+ budgetMs: this._stepBudgetMs,
323
+ };
324
+ wfCtx.__abort = (reason) => {
325
+ if (!controller.signal.aborted)
326
+ controller.abort(reason);
327
+ };
328
+ // Build step context — pass wfCtx explicitly for bundler compatibility.
329
+ // Note: progress/forEach/signal on StepContext are injected by the step
330
+ // wrappers (createStep / runStep) via wfCtx, so we don't duplicate them here.
331
+ const stepCtx = { app: this._app, __wfCtx: wfCtx, signal: controller.signal };
332
+ // Execute within AsyncLocalStorage context
333
+ try {
334
+ const result = await workflowContextStorage.run(wfCtx, () => workflow.fn(input, stepCtx));
335
+ // Release buffered events
336
+ if (this._eventBus) {
337
+ await this._eventBus.releaseGroupedEvents(eventGroupId).catch(() => {
338
+ this._logger?.warn(`[workflow:${workflowId}] Failed to release buffered events`);
339
+ });
340
+ }
341
+ // Track completion
342
+ if (this._storage.trackComplete) {
343
+ await this._storage.trackComplete(transactionId, result).catch((err) => {
344
+ ;
345
+ (this._logger ?? console).warn(`[WorkflowManager] trackComplete failed: ${err?.message ?? err}`);
346
+ });
347
+ }
348
+ if (cleanup) {
349
+ await this._storage.delete(transactionId).catch((err) => {
350
+ ;
351
+ (this._logger ?? console).warn(`[WorkflowManager] Checkpoint cleanup failed: ${err?.message ?? err}`);
352
+ });
353
+ }
354
+ return {
355
+ transaction: { transactionId, state: 'done' },
356
+ result: result,
357
+ };
358
+ }
359
+ catch (error) {
360
+ const cancelled = isCancelledError(error);
361
+ this._logger?.warn(`[workflow:${workflowId}] ${cancelled ? 'Cancelled' : 'Failed'} (attempt ${attempt}/${RETRY_POLICY.maxAttempts}): ${error.message}`);
362
+ // Track failure
363
+ if (this._storage.trackFailed) {
364
+ await this._storage.trackFailed(transactionId, error.message).catch((err) => {
365
+ ;
366
+ (this._logger ?? console).warn(`[WorkflowManager] trackFailed failed: ${err?.message ?? err}`);
367
+ });
368
+ }
369
+ if (this._eventBus) {
370
+ await this._eventBus.clearGroupedEvents(eventGroupId).catch((err) => {
371
+ ;
372
+ (this._logger ?? console).warn(`[WorkflowManager] Clear grouped events failed: ${err?.message ?? err}`);
373
+ });
374
+ }
375
+ if (isFinalAttempt || cancelled) {
376
+ // Terminal: compensate. On cancel we compensate immediately (no more retries).
377
+ await this._compensate(workflowId, wfCtx.completedSteps, stepCtx, transactionId);
378
+ if (cleanup) {
379
+ await this._storage.delete(transactionId).catch((err) => {
380
+ ;
381
+ (this._logger ?? console).warn(`[WorkflowManager] Checkpoint cleanup failed: ${err?.message ?? err}`);
382
+ });
383
+ }
384
+ }
385
+ // Non-final: checkpoints remain in storage for next attempt to resume from
386
+ throw error;
387
+ }
388
+ }
389
+ async _compensate(workflowId, completedSteps, ctx, transactionId) {
390
+ if (completedSteps.length === 0)
391
+ return;
392
+ this._logger?.warn(`[workflow:${workflowId}] Compensating ${completedSteps.length} steps`);
393
+ for (let i = completedSteps.length - 1; i >= 0; i--) {
394
+ const step = completedSteps[i];
395
+ if (!step.compensate)
396
+ continue;
397
+ try {
398
+ await step.compensate(step.output, ctx);
399
+ // Mark the compensated step in the durable store (best effort).
400
+ if (this._store) {
401
+ try {
402
+ await this._store.updateStep(transactionId, step.name, {
403
+ status: 'compensated',
404
+ completed_at: new Date(),
405
+ });
406
+ }
407
+ catch (err) {
408
+ this._logger?.warn(`[workflow:${workflowId}] store.updateStep(compensated, "${step.name}") failed: ${err?.message ?? err}`);
409
+ }
410
+ }
411
+ }
412
+ catch (err) {
413
+ this._logger?.error(`[workflow:${workflowId}] Compensation failed "${step.name}": ${err.message}`);
414
+ }
415
+ }
416
+ }
417
+ _reset() {
418
+ this._workflows.clear();
419
+ }
420
+ }
421
+ // ─── helpers ────────────────────────────────────────────────────────────────
422
+ function isCancelledError(err) {
423
+ if (err instanceof CancelledError)
424
+ return true;
425
+ if (err && typeof err === 'object') {
426
+ const e = err;
427
+ if (e.code === 'WORKFLOW_CANCELLED')
428
+ return true;
429
+ if (e.name === 'CancelledError')
430
+ return true;
431
+ }
432
+ return false;
433
+ }
434
+ function toWorkflowError(err) {
435
+ if (err instanceof MantaError) {
436
+ return {
437
+ message: err.message,
438
+ code: err.type,
439
+ stack: err.stack,
440
+ };
441
+ }
442
+ if (err instanceof Error) {
443
+ return {
444
+ message: err.message,
445
+ stack: err.stack,
446
+ };
447
+ }
448
+ return { message: String(err) };
449
+ }
450
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/workflows/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { ILoggerPort } from '../ports/logger';
2
+ import type { JobResult } from '../ports/types';
3
+ import type { IWorkflowStorePort } from '../ports/workflow-store';
4
+ /** Default threshold — 5 minutes without a heartbeat = orphan. */
5
+ export declare const DEFAULT_ORPHAN_THRESHOLD_MS: number;
6
+ /** Default max orphans reaped per tick. */
7
+ export declare const DEFAULT_ORPHAN_REAP_LIMIT = 50;
8
+ /** Framework-owned job name. Prefixed with `__manta_` so it cannot collide with user jobs. */
9
+ export declare const ORPHAN_REAPER_JOB_NAME = "__manta_workflow_orphan_reaper";
10
+ /** Default schedule — every minute. */
11
+ export declare const ORPHAN_REAPER_SCHEDULE = "*/1 * * * *";
12
+ /** Stable error code written into workflow_runs.error when a run is reaped. */
13
+ export declare const WORKFLOW_ORPHANED_CODE = "WORKFLOW_ORPHANED";
14
+ export interface OrphanReaperOptions {
15
+ /** How long without a heartbeat before a run is considered orphaned. Defaults to 5 minutes. */
16
+ orphanThresholdMs?: number;
17
+ /** Max number of orphans reaped per tick. Defaults to 50. */
18
+ limit?: number;
19
+ }
20
+ export interface OrphanReaperResult extends JobResult {
21
+ status: 'success';
22
+ data: {
23
+ reaped: number;
24
+ total: number;
25
+ };
26
+ duration_ms: number;
27
+ }
28
+ /**
29
+ * Descriptor returned by `createOrphanReaperJob`. The bootstrap phase passes
30
+ * these fields straight into `IJobSchedulerPort.register(name, schedule, handler)`.
31
+ */
32
+ export interface OrphanReaperJobDescriptor {
33
+ name: string;
34
+ schedule: string;
35
+ /** Closure over the store + logger — the scheduler calls this on each tick. */
36
+ handler: () => Promise<OrphanReaperResult>;
37
+ }
38
+ /**
39
+ * Build the orphan reaper job descriptor.
40
+ *
41
+ * The returned handler is a plain closure — it does NOT rely on `ctx.app`
42
+ * (the scheduler's `setApp()` is not wired from bootstrap today, so resolving
43
+ * via the app would be flaky). Instead it closes over the store + logger
44
+ * directly, mirroring the pattern used for user jobs in load-resources.ts.
45
+ */
46
+ export declare function createOrphanReaperJob(deps: {
47
+ store: IWorkflowStorePort;
48
+ logger: ILoggerPort;
49
+ }, options?: OrphanReaperOptions): OrphanReaperJobDescriptor;
50
+ //# sourceMappingURL=orphan-reaper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orphan-reaper.d.ts","sourceRoot":"","sources":["../../src/workflows/orphan-reaper.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAEjE,kEAAkE;AAClE,eAAO,MAAM,2BAA2B,QAAgB,CAAA;AAExD,2CAA2C;AAC3C,eAAO,MAAM,yBAAyB,KAAK,CAAA;AAE3C,8FAA8F;AAC9F,eAAO,MAAM,sBAAsB,mCAAmC,CAAA;AAEtE,uCAAuC;AACvC,eAAO,MAAM,sBAAsB,gBAAgB,CAAA;AAEnD,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB,sBAAsB,CAAA;AAEzD,MAAM,WAAW,mBAAmB;IAClC,+FAA+F;IAC/F,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,MAAM,EAAE,SAAS,CAAA;IACjB,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACvC,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAA;CAC3C;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,EACxD,OAAO,GAAE,mBAAwB,GAChC,yBAAyB,CAuC3B"}
@@ -0,0 +1,69 @@
1
+ // WP-F04 — Orphan reaper job.
2
+ //
3
+ // On serverless hosts (Vercel), a workflow that takes longer than the HTTP
4
+ // invocation it started in has no way to continue running — the function is
5
+ // killed when the handler returns. `workflow_runs.status` stays 'running'
6
+ // forever unless something reaps it.
7
+ //
8
+ // This module produces a framework-owned job that the bootstrap registers
9
+ // against IJobSchedulerPort when both the scheduler AND IWorkflowStorePort
10
+ // are wired. The job scans for runs whose heartbeat_at is older than the
11
+ // configured threshold and marks them failed. V1 does NOT resume the run —
12
+ // it just flags the failure so the UI stops spinning. Resume is a separate,
13
+ // larger feature (would need driver wake-up + re-entry into WorkflowManager).
14
+ /** Default threshold — 5 minutes without a heartbeat = orphan. */
15
+ export const DEFAULT_ORPHAN_THRESHOLD_MS = 5 * 60 * 1000;
16
+ /** Default max orphans reaped per tick. */
17
+ export const DEFAULT_ORPHAN_REAP_LIMIT = 50;
18
+ /** Framework-owned job name. Prefixed with `__manta_` so it cannot collide with user jobs. */
19
+ export const ORPHAN_REAPER_JOB_NAME = '__manta_workflow_orphan_reaper';
20
+ /** Default schedule — every minute. */
21
+ export const ORPHAN_REAPER_SCHEDULE = '*/1 * * * *';
22
+ /** Stable error code written into workflow_runs.error when a run is reaped. */
23
+ export const WORKFLOW_ORPHANED_CODE = 'WORKFLOW_ORPHANED';
24
+ /**
25
+ * Build the orphan reaper job descriptor.
26
+ *
27
+ * The returned handler is a plain closure — it does NOT rely on `ctx.app`
28
+ * (the scheduler's `setApp()` is not wired from bootstrap today, so resolving
29
+ * via the app would be flaky). Instead it closes over the store + logger
30
+ * directly, mirroring the pattern used for user jobs in load-resources.ts.
31
+ */
32
+ export function createOrphanReaperJob(deps, options = {}) {
33
+ const thresholdMs = options.orphanThresholdMs ?? DEFAULT_ORPHAN_THRESHOLD_MS;
34
+ const limit = options.limit ?? DEFAULT_ORPHAN_REAP_LIMIT;
35
+ const { store, logger } = deps;
36
+ return {
37
+ name: ORPHAN_REAPER_JOB_NAME,
38
+ schedule: ORPHAN_REAPER_SCHEDULE,
39
+ handler: async () => {
40
+ const startMs = Date.now();
41
+ const cutoff = new Date(startMs - thresholdMs);
42
+ const orphans = await store.listOrphans({ olderThan: cutoff, limit });
43
+ if (orphans.length === 0) {
44
+ return { status: 'success', data: { reaped: 0, total: 0 }, duration_ms: Date.now() - startMs };
45
+ }
46
+ let reaped = 0;
47
+ for (const orphan of orphans) {
48
+ try {
49
+ await store.markOrphanFailed(orphan.id, {
50
+ message: `Workflow orphaned — no heartbeat for ${Math.round(thresholdMs / 1000)}s`,
51
+ code: WORKFLOW_ORPHANED_CODE,
52
+ });
53
+ reaped++;
54
+ }
55
+ catch (err) {
56
+ // Never throw from the reaper. One bad orphan must not break the job.
57
+ logger.warn(`Failed to mark orphan as failed (runId=${orphan.id})`, err);
58
+ }
59
+ }
60
+ logger.info(`Orphan reaper completed (reaped=${reaped}, total=${orphans.length})`);
61
+ return {
62
+ status: 'success',
63
+ data: { reaped, total: orphans.length },
64
+ duration_ms: Date.now() - startMs,
65
+ };
66
+ },
67
+ };
68
+ }
69
+ //# sourceMappingURL=orphan-reaper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orphan-reaper.js","sourceRoot":"","sources":["../../src/workflows/orphan-reaper.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,0EAA0E;AAC1E,qCAAqC;AACrC,EAAE;AACF,0EAA0E;AAC1E,2EAA2E;AAC3E,yEAAyE;AACzE,2EAA2E;AAC3E,4EAA4E;AAC5E,8EAA8E;AAM9E,kEAAkE;AAClE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAExD,2CAA2C;AAC3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAE3C,8FAA8F;AAC9F,MAAM,CAAC,MAAM,sBAAsB,GAAG,gCAAgC,CAAA;AAEtE,uCAAuC;AACvC,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAA;AAEnD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAA;AA0BzD;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAwD,EACxD,UAA+B,EAAE;IAEjC,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,IAAI,2BAA2B,CAAA;IAC5E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,yBAAyB,CAAA;IACxD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAE9B,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,sBAAsB;QAChC,OAAO,EAAE,KAAK,IAAiC,EAAE;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAC1B,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,CAAA;YAC9C,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;YAErE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA;YAChG,CAAC;YAED,IAAI,MAAM,GAAG,CAAC,CAAA;YACd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,MAAM,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,EAAE;wBACtC,OAAO,EAAE,wCAAwC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG;wBAClF,IAAI,EAAE,sBAAsB;qBAC7B,CAAC,CAAA;oBACF,MAAM,EAAE,CAAA;gBACV,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,sEAAsE;oBACtE,MAAM,CAAC,IAAI,CAAC,0CAA0C,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;gBAC1E,CAAC;YACH,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,mCAAmC,MAAM,WAAW,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;YAClF,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE;gBACvC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;aAClC,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { MantaError } from '../errors/manta-error';
2
+ import type { WorkflowContext } from './types';
3
+ /**
4
+ * CancelledError — thrown by step handlers (and by `ctx.forEach`) when the
5
+ * workflow's AbortSignal has fired. Caught by the engine to trigger the
6
+ * `cancelled` status path + compensation (WORKFLOW_PROGRESS.md §10.1 step 6).
7
+ */
8
+ export declare class CancelledError extends MantaError {
9
+ constructor(message?: string);
10
+ }
11
+ /**
12
+ * Build a `ctx.progress` function bound to a specific workflow run.
13
+ * If no IProgressChannelPort is wired, the returned function is a no-op.
14
+ *
15
+ * The returned function:
16
+ * - Returns `undefined` synchronously (no await on the hot path).
17
+ * - Never throws — channel errors are swallowed (optionally logged).
18
+ */
19
+ export declare function createProgress(wfCtx: WorkflowContext): (current: number, total: number | null, message?: string) => void;
20
+ //# sourceMappingURL=progress-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-helper.d.ts","sourceRoot":"","sources":["../../src/workflows/progress-helper.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,UAAU;gBAChC,OAAO,SAAuB;CAI3C;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,eAAe,GACrB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAgBnE"}