@ajna-inc/workflow 0.5.37 → 0.6.1

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 (336) hide show
  1. package/.npmvc/attestations.jsonld +32 -0
  2. package/LICENSE +202 -0
  3. package/build/WorkflowEvents.d.mts +40 -0
  4. package/build/WorkflowEvents.d.mts.map +1 -0
  5. package/build/WorkflowEvents.mjs +11 -0
  6. package/build/WorkflowEvents.mjs.map +1 -0
  7. package/build/WorkflowModule.d.mts +17 -0
  8. package/build/WorkflowModule.d.mts.map +1 -0
  9. package/build/WorkflowModule.mjs +446 -0
  10. package/build/WorkflowModule.mjs.map +1 -0
  11. package/build/WorkflowModuleConfig.d.mts +39 -0
  12. package/build/WorkflowModuleConfig.d.mts.map +1 -0
  13. package/build/WorkflowModuleConfig.mjs +19 -0
  14. package/build/WorkflowModuleConfig.mjs.map +1 -0
  15. package/build/_virtual/_@oxc-project_runtime@0.99.0/helpers/decorate.mjs +14 -0
  16. package/build/_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateMetadata.mjs +11 -0
  17. package/build/_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateParam.mjs +9 -0
  18. package/build/_virtual/rolldown_runtime.mjs +41 -0
  19. package/build/actions/ActionRegistry.d.mts +64 -0
  20. package/build/actions/ActionRegistry.d.mts.map +1 -0
  21. package/build/actions/ActionRegistry.mjs +304 -0
  22. package/build/actions/ActionRegistry.mjs.map +1 -0
  23. package/build/api/WorkflowApi.d.mts +99 -0
  24. package/build/api/WorkflowApi.d.mts.map +1 -0
  25. package/build/api/WorkflowApi.mjs +228 -0
  26. package/build/api/WorkflowApi.mjs.map +1 -0
  27. package/build/engine/AttributePlanner.d.mts +12 -0
  28. package/build/engine/AttributePlanner.d.mts.map +1 -0
  29. package/build/engine/AttributePlanner.mjs +58 -0
  30. package/build/engine/AttributePlanner.mjs.map +1 -0
  31. package/build/engine/GuardEvaluator.d.mts +16 -0
  32. package/build/engine/GuardEvaluator.d.mts.map +1 -0
  33. package/build/engine/GuardEvaluator.mjs +38 -0
  34. package/build/engine/GuardEvaluator.mjs.map +1 -0
  35. package/build/index.d.mts +46 -0
  36. package/build/index.mjs +53 -0
  37. package/build/index.mjs.map +1 -0
  38. package/build/model/TemplateValidation.d.mts +8 -0
  39. package/build/model/TemplateValidation.d.mts.map +1 -0
  40. package/build/model/TemplateValidation.mjs +278 -0
  41. package/build/model/TemplateValidation.mjs.map +1 -0
  42. package/build/model/types.d.mts +120 -0
  43. package/build/model/types.d.mts.map +1 -0
  44. package/build/model/types.mjs +11 -0
  45. package/build/model/types.mjs.map +1 -0
  46. package/build/protocol/WorkflowMessageTypes.d.mts +19 -0
  47. package/build/protocol/WorkflowMessageTypes.d.mts.map +1 -0
  48. package/build/protocol/WorkflowMessageTypes.mjs +20 -0
  49. package/build/protocol/WorkflowMessageTypes.mjs.map +1 -0
  50. package/build/protocol/handlers/AdvanceHandler.d.mts +16 -0
  51. package/build/protocol/handlers/AdvanceHandler.d.mts.map +1 -0
  52. package/build/protocol/handlers/AdvanceHandler.mjs +148 -0
  53. package/build/protocol/handlers/AdvanceHandler.mjs.map +1 -0
  54. package/build/protocol/handlers/CancelHandler.d.mts +16 -0
  55. package/build/protocol/handlers/CancelHandler.d.mts.map +1 -0
  56. package/build/protocol/handlers/CancelHandler.mjs +103 -0
  57. package/build/protocol/handlers/CancelHandler.mjs.map +1 -0
  58. package/build/protocol/handlers/CompleteHandler.d.mts +16 -0
  59. package/build/protocol/handlers/CompleteHandler.d.mts.map +1 -0
  60. package/build/protocol/handlers/CompleteHandler.mjs +103 -0
  61. package/build/protocol/handlers/CompleteHandler.mjs.map +1 -0
  62. package/build/protocol/handlers/DiscoverHandler.d.mts +15 -0
  63. package/build/protocol/handlers/DiscoverHandler.d.mts.map +1 -0
  64. package/build/protocol/handlers/DiscoverHandler.mjs +73 -0
  65. package/build/protocol/handlers/DiscoverHandler.mjs.map +1 -0
  66. package/build/protocol/handlers/FetchTemplateHandler.d.mts +16 -0
  67. package/build/protocol/handlers/FetchTemplateHandler.d.mts.map +1 -0
  68. package/build/protocol/handlers/FetchTemplateHandler.mjs +64 -0
  69. package/build/protocol/handlers/FetchTemplateHandler.mjs.map +1 -0
  70. package/build/protocol/handlers/PauseHandler.d.mts +16 -0
  71. package/build/protocol/handlers/PauseHandler.d.mts.map +1 -0
  72. package/build/protocol/handlers/PauseHandler.mjs +103 -0
  73. package/build/protocol/handlers/PauseHandler.mjs.map +1 -0
  74. package/build/protocol/handlers/ProblemReportHandler.d.mts +11 -0
  75. package/build/protocol/handlers/ProblemReportHandler.d.mts.map +1 -0
  76. package/build/protocol/handlers/ProblemReportHandler.mjs +26 -0
  77. package/build/protocol/handlers/ProblemReportHandler.mjs.map +1 -0
  78. package/build/protocol/handlers/PublishTemplateHandler.d.mts +15 -0
  79. package/build/protocol/handlers/PublishTemplateHandler.d.mts.map +1 -0
  80. package/build/protocol/handlers/PublishTemplateHandler.mjs +47 -0
  81. package/build/protocol/handlers/PublishTemplateHandler.mjs.map +1 -0
  82. package/build/protocol/handlers/ResumeHandler.d.mts +16 -0
  83. package/build/protocol/handlers/ResumeHandler.d.mts.map +1 -0
  84. package/build/protocol/handlers/ResumeHandler.mjs +103 -0
  85. package/build/protocol/handlers/ResumeHandler.mjs.map +1 -0
  86. package/build/protocol/handlers/StartHandler.d.mts +16 -0
  87. package/build/protocol/handlers/StartHandler.d.mts.map +1 -0
  88. package/build/protocol/handlers/StartHandler.mjs +238 -0
  89. package/build/protocol/handlers/StartHandler.mjs.map +1 -0
  90. package/build/protocol/handlers/StatusHandler.d.mts +16 -0
  91. package/build/protocol/handlers/StatusHandler.d.mts.map +1 -0
  92. package/build/protocol/handlers/StatusHandler.mjs +169 -0
  93. package/build/protocol/handlers/StatusHandler.mjs.map +1 -0
  94. package/build/protocol/handlers/TemplateHandler.d.mts +14 -0
  95. package/build/protocol/handlers/TemplateHandler.d.mts.map +1 -0
  96. package/build/protocol/handlers/TemplateHandler.mjs +66 -0
  97. package/build/protocol/handlers/TemplateHandler.mjs.map +1 -0
  98. package/build/protocol/messages/AdvanceMessage.d.mts +22 -0
  99. package/build/protocol/messages/AdvanceMessage.d.mts.map +1 -0
  100. package/build/protocol/messages/AdvanceMessage.mjs +25 -0
  101. package/build/protocol/messages/AdvanceMessage.mjs.map +1 -0
  102. package/build/protocol/messages/CancelMessage.d.mts +20 -0
  103. package/build/protocol/messages/CancelMessage.d.mts.map +1 -0
  104. package/build/protocol/messages/CancelMessage.mjs +25 -0
  105. package/build/protocol/messages/CancelMessage.mjs.map +1 -0
  106. package/build/protocol/messages/CompleteMessage.d.mts +20 -0
  107. package/build/protocol/messages/CompleteMessage.d.mts.map +1 -0
  108. package/build/protocol/messages/CompleteMessage.mjs +25 -0
  109. package/build/protocol/messages/CompleteMessage.mjs.map +1 -0
  110. package/build/protocol/messages/DiscoverMessage.d.mts +29 -0
  111. package/build/protocol/messages/DiscoverMessage.d.mts.map +1 -0
  112. package/build/protocol/messages/DiscoverMessage.mjs +25 -0
  113. package/build/protocol/messages/DiscoverMessage.mjs.map +1 -0
  114. package/build/protocol/messages/FetchTemplateMessage.d.mts +21 -0
  115. package/build/protocol/messages/FetchTemplateMessage.d.mts.map +1 -0
  116. package/build/protocol/messages/FetchTemplateMessage.mjs +31 -0
  117. package/build/protocol/messages/FetchTemplateMessage.mjs.map +1 -0
  118. package/build/protocol/messages/PauseMessage.d.mts +20 -0
  119. package/build/protocol/messages/PauseMessage.d.mts.map +1 -0
  120. package/build/protocol/messages/PauseMessage.mjs +25 -0
  121. package/build/protocol/messages/PauseMessage.mjs.map +1 -0
  122. package/build/protocol/messages/ProblemReportMessage.d.mts +21 -0
  123. package/build/protocol/messages/ProblemReportMessage.d.mts.map +1 -0
  124. package/build/protocol/messages/ProblemReportMessage.mjs +25 -0
  125. package/build/protocol/messages/ProblemReportMessage.mjs.map +1 -0
  126. package/build/protocol/messages/PublishTemplateMessage.d.mts +23 -0
  127. package/build/protocol/messages/PublishTemplateMessage.d.mts.map +1 -0
  128. package/build/protocol/messages/PublishTemplateMessage.mjs +24 -0
  129. package/build/protocol/messages/PublishTemplateMessage.mjs.map +1 -0
  130. package/build/protocol/messages/ResumeMessage.d.mts +20 -0
  131. package/build/protocol/messages/ResumeMessage.d.mts.map +1 -0
  132. package/build/protocol/messages/ResumeMessage.mjs +25 -0
  133. package/build/protocol/messages/ResumeMessage.mjs.map +1 -0
  134. package/build/protocol/messages/StartMessage.d.mts +27 -0
  135. package/build/protocol/messages/StartMessage.d.mts.map +1 -0
  136. package/build/protocol/messages/StartMessage.mjs +25 -0
  137. package/build/protocol/messages/StartMessage.mjs.map +1 -0
  138. package/build/protocol/messages/StatusMessage.d.mts +35 -0
  139. package/build/protocol/messages/StatusMessage.d.mts.map +1 -0
  140. package/build/protocol/messages/StatusMessage.mjs +25 -0
  141. package/build/protocol/messages/StatusMessage.mjs.map +1 -0
  142. package/build/protocol/messages/StatusRequestMessage.d.mts +29 -0
  143. package/build/protocol/messages/StatusRequestMessage.d.mts.map +1 -0
  144. package/build/protocol/messages/StatusRequestMessage.mjs +25 -0
  145. package/build/protocol/messages/StatusRequestMessage.mjs.map +1 -0
  146. package/build/protocol/messages/TemplateMessage.d.mts +20 -0
  147. package/build/protocol/messages/TemplateMessage.d.mts.map +1 -0
  148. package/build/protocol/messages/TemplateMessage.mjs +25 -0
  149. package/build/protocol/messages/TemplateMessage.mjs.map +1 -0
  150. package/build/protocol/messages/WorkflowsMessage.d.mts +28 -0
  151. package/build/protocol/messages/WorkflowsMessage.d.mts.map +1 -0
  152. package/build/protocol/messages/WorkflowsMessage.mjs +25 -0
  153. package/build/protocol/messages/WorkflowsMessage.mjs.map +1 -0
  154. package/build/queue/CommandQueue.d.mts +22 -0
  155. package/build/queue/CommandQueue.d.mts.map +1 -0
  156. package/build/queue/CommandQueue.mjs +6 -0
  157. package/build/queue/CommandQueue.mjs.map +1 -0
  158. package/build/queue/PersistentCommandQueue.d.mts +56 -0
  159. package/build/queue/PersistentCommandQueue.d.mts.map +1 -0
  160. package/build/queue/PersistentCommandQueue.mjs +273 -0
  161. package/build/queue/PersistentCommandQueue.mjs.map +1 -0
  162. package/build/repository/WorkflowCommandRecord.d.mts +50 -0
  163. package/build/repository/WorkflowCommandRecord.d.mts.map +1 -0
  164. package/build/repository/WorkflowCommandRecord.mjs +48 -0
  165. package/build/repository/WorkflowCommandRecord.mjs.map +1 -0
  166. package/build/repository/WorkflowCommandRepository.d.mts +59 -0
  167. package/build/repository/WorkflowCommandRepository.d.mts.map +1 -0
  168. package/build/repository/WorkflowCommandRepository.mjs +136 -0
  169. package/build/repository/WorkflowCommandRepository.mjs.map +1 -0
  170. package/build/repository/WorkflowInstanceRecord.d.mts +65 -0
  171. package/build/repository/WorkflowInstanceRecord.d.mts.map +1 -0
  172. package/build/repository/WorkflowInstanceRecord.mjs +44 -0
  173. package/build/repository/WorkflowInstanceRecord.mjs.map +1 -0
  174. package/build/repository/WorkflowInstanceRepository.d.mts +15 -0
  175. package/build/repository/WorkflowInstanceRepository.d.mts.map +1 -0
  176. package/build/repository/WorkflowInstanceRepository.mjs +48 -0
  177. package/build/repository/WorkflowInstanceRepository.mjs.map +1 -0
  178. package/build/repository/WorkflowTemplateRecord.d.mts +27 -0
  179. package/build/repository/WorkflowTemplateRecord.d.mts.map +1 -0
  180. package/build/repository/WorkflowTemplateRecord.mjs +29 -0
  181. package/build/repository/WorkflowTemplateRecord.mjs.map +1 -0
  182. package/build/repository/WorkflowTemplateRepository.d.mts +11 -0
  183. package/build/repository/WorkflowTemplateRepository.d.mts.map +1 -0
  184. package/build/repository/WorkflowTemplateRepository.mjs +43 -0
  185. package/build/repository/WorkflowTemplateRepository.mjs.map +1 -0
  186. package/build/services/WorkflowService.d.mts +107 -0
  187. package/build/services/WorkflowService.d.mts.map +1 -0
  188. package/build/services/WorkflowService.mjs +582 -0
  189. package/build/services/WorkflowService.mjs.map +1 -0
  190. package/build/ui/UiFilter.mjs +85 -0
  191. package/build/ui/UiFilter.mjs.map +1 -0
  192. package/package.json +27 -33
  193. package/build/WorkflowEvents.d.ts +0 -35
  194. package/build/WorkflowEvents.js +0 -10
  195. package/build/WorkflowEvents.js.map +0 -1
  196. package/build/WorkflowModule.d.ts +0 -13
  197. package/build/WorkflowModule.js +0 -647
  198. package/build/WorkflowModule.js.map +0 -1
  199. package/build/WorkflowModuleConfig.d.ts +0 -35
  200. package/build/WorkflowModuleConfig.js +0 -19
  201. package/build/WorkflowModuleConfig.js.map +0 -1
  202. package/build/actions/ActionRegistry.d.ts +0 -59
  203. package/build/actions/ActionRegistry.js +0 -367
  204. package/build/actions/ActionRegistry.js.map +0 -1
  205. package/build/api/WorkflowApi.d.ts +0 -94
  206. package/build/api/WorkflowApi.js +0 -241
  207. package/build/api/WorkflowApi.js.map +0 -1
  208. package/build/engine/AttributePlanner.d.ts +0 -7
  209. package/build/engine/AttributePlanner.js +0 -81
  210. package/build/engine/AttributePlanner.js.map +0 -1
  211. package/build/engine/GuardEvaluator.d.ts +0 -11
  212. package/build/engine/GuardEvaluator.js +0 -40
  213. package/build/engine/GuardEvaluator.js.map +0 -1
  214. package/build/index.d.ts +0 -45
  215. package/build/index.js +0 -69
  216. package/build/index.js.map +0 -1
  217. package/build/model/TemplateValidation.d.ts +0 -3
  218. package/build/model/TemplateValidation.js +0 -231
  219. package/build/model/TemplateValidation.js.map +0 -1
  220. package/build/model/types.d.ts +0 -116
  221. package/build/model/types.js +0 -15
  222. package/build/model/types.js.map +0 -1
  223. package/build/protocol/WorkflowMessageTypes.d.ts +0 -15
  224. package/build/protocol/WorkflowMessageTypes.js +0 -22
  225. package/build/protocol/WorkflowMessageTypes.js.map +0 -1
  226. package/build/protocol/handlers/AdvanceHandler.d.ts +0 -12
  227. package/build/protocol/handlers/AdvanceHandler.js +0 -149
  228. package/build/protocol/handlers/AdvanceHandler.js.map +0 -1
  229. package/build/protocol/handlers/CancelHandler.d.ts +0 -12
  230. package/build/protocol/handlers/CancelHandler.js +0 -124
  231. package/build/protocol/handlers/CancelHandler.js.map +0 -1
  232. package/build/protocol/handlers/CompleteHandler.d.ts +0 -12
  233. package/build/protocol/handlers/CompleteHandler.js +0 -125
  234. package/build/protocol/handlers/CompleteHandler.js.map +0 -1
  235. package/build/protocol/handlers/DiscoverHandler.d.ts +0 -11
  236. package/build/protocol/handlers/DiscoverHandler.js +0 -71
  237. package/build/protocol/handlers/DiscoverHandler.js.map +0 -1
  238. package/build/protocol/handlers/FetchTemplateHandler.d.ts +0 -12
  239. package/build/protocol/handlers/FetchTemplateHandler.js +0 -71
  240. package/build/protocol/handlers/FetchTemplateHandler.js.map +0 -1
  241. package/build/protocol/handlers/PauseHandler.d.ts +0 -12
  242. package/build/protocol/handlers/PauseHandler.js +0 -124
  243. package/build/protocol/handlers/PauseHandler.js.map +0 -1
  244. package/build/protocol/handlers/ProblemReportHandler.d.ts +0 -6
  245. package/build/protocol/handlers/ProblemReportHandler.js +0 -28
  246. package/build/protocol/handlers/ProblemReportHandler.js.map +0 -1
  247. package/build/protocol/handlers/PublishTemplateHandler.d.ts +0 -11
  248. package/build/protocol/handlers/PublishTemplateHandler.js +0 -53
  249. package/build/protocol/handlers/PublishTemplateHandler.js.map +0 -1
  250. package/build/protocol/handlers/ResumeHandler.d.ts +0 -12
  251. package/build/protocol/handlers/ResumeHandler.js +0 -124
  252. package/build/protocol/handlers/ResumeHandler.js.map +0 -1
  253. package/build/protocol/handlers/StartHandler.d.ts +0 -12
  254. package/build/protocol/handlers/StartHandler.js +0 -274
  255. package/build/protocol/handlers/StartHandler.js.map +0 -1
  256. package/build/protocol/handlers/StatusHandler.d.ts +0 -12
  257. package/build/protocol/handlers/StatusHandler.js +0 -202
  258. package/build/protocol/handlers/StatusHandler.js.map +0 -1
  259. package/build/protocol/handlers/TemplateHandler.d.ts +0 -9
  260. package/build/protocol/handlers/TemplateHandler.js +0 -83
  261. package/build/protocol/handlers/TemplateHandler.js.map +0 -1
  262. package/build/protocol/messages/AdvanceMessage.d.ts +0 -16
  263. package/build/protocol/messages/AdvanceMessage.js +0 -33
  264. package/build/protocol/messages/AdvanceMessage.js.map +0 -1
  265. package/build/protocol/messages/CancelMessage.d.ts +0 -14
  266. package/build/protocol/messages/CancelMessage.js +0 -33
  267. package/build/protocol/messages/CancelMessage.js.map +0 -1
  268. package/build/protocol/messages/CompleteMessage.d.ts +0 -14
  269. package/build/protocol/messages/CompleteMessage.js +0 -33
  270. package/build/protocol/messages/CompleteMessage.js.map +0 -1
  271. package/build/protocol/messages/DiscoverMessage.d.ts +0 -23
  272. package/build/protocol/messages/DiscoverMessage.js +0 -33
  273. package/build/protocol/messages/DiscoverMessage.js.map +0 -1
  274. package/build/protocol/messages/FetchTemplateMessage.d.ts +0 -15
  275. package/build/protocol/messages/FetchTemplateMessage.js +0 -33
  276. package/build/protocol/messages/FetchTemplateMessage.js.map +0 -1
  277. package/build/protocol/messages/PauseMessage.d.ts +0 -14
  278. package/build/protocol/messages/PauseMessage.js +0 -33
  279. package/build/protocol/messages/PauseMessage.js.map +0 -1
  280. package/build/protocol/messages/ProblemReportMessage.d.ts +0 -15
  281. package/build/protocol/messages/ProblemReportMessage.js +0 -33
  282. package/build/protocol/messages/ProblemReportMessage.js.map +0 -1
  283. package/build/protocol/messages/PublishTemplateMessage.d.ts +0 -17
  284. package/build/protocol/messages/PublishTemplateMessage.js +0 -31
  285. package/build/protocol/messages/PublishTemplateMessage.js.map +0 -1
  286. package/build/protocol/messages/ResumeMessage.d.ts +0 -14
  287. package/build/protocol/messages/ResumeMessage.js +0 -33
  288. package/build/protocol/messages/ResumeMessage.js.map +0 -1
  289. package/build/protocol/messages/StartMessage.d.ts +0 -21
  290. package/build/protocol/messages/StartMessage.js +0 -33
  291. package/build/protocol/messages/StartMessage.js.map +0 -1
  292. package/build/protocol/messages/StatusMessage.d.ts +0 -29
  293. package/build/protocol/messages/StatusMessage.js +0 -33
  294. package/build/protocol/messages/StatusMessage.js.map +0 -1
  295. package/build/protocol/messages/StatusRequestMessage.d.ts +0 -23
  296. package/build/protocol/messages/StatusRequestMessage.js +0 -33
  297. package/build/protocol/messages/StatusRequestMessage.js.map +0 -1
  298. package/build/protocol/messages/TemplateMessage.d.ts +0 -14
  299. package/build/protocol/messages/TemplateMessage.js +0 -33
  300. package/build/protocol/messages/TemplateMessage.js.map +0 -1
  301. package/build/protocol/messages/WorkflowsMessage.d.ts +0 -22
  302. package/build/protocol/messages/WorkflowsMessage.js +0 -33
  303. package/build/protocol/messages/WorkflowsMessage.js.map +0 -1
  304. package/build/queue/CommandQueue.d.ts +0 -18
  305. package/build/queue/CommandQueue.js +0 -8
  306. package/build/queue/CommandQueue.js.map +0 -1
  307. package/build/queue/PersistentCommandQueue.d.ts +0 -51
  308. package/build/queue/PersistentCommandQueue.js +0 -348
  309. package/build/queue/PersistentCommandQueue.js.map +0 -1
  310. package/build/repository/WorkflowCommandRecord.d.ts +0 -46
  311. package/build/repository/WorkflowCommandRecord.js +0 -52
  312. package/build/repository/WorkflowCommandRecord.js.map +0 -1
  313. package/build/repository/WorkflowCommandRepository.d.ts +0 -55
  314. package/build/repository/WorkflowCommandRepository.js +0 -149
  315. package/build/repository/WorkflowCommandRepository.js.map +0 -1
  316. package/build/repository/WorkflowInstanceRecord.d.ts +0 -61
  317. package/build/repository/WorkflowInstanceRecord.js +0 -43
  318. package/build/repository/WorkflowInstanceRecord.js.map +0 -1
  319. package/build/repository/WorkflowInstanceRepository.d.ts +0 -10
  320. package/build/repository/WorkflowInstanceRepository.js +0 -52
  321. package/build/repository/WorkflowInstanceRepository.js.map +0 -1
  322. package/build/repository/WorkflowTemplateRecord.d.ts +0 -23
  323. package/build/repository/WorkflowTemplateRecord.js +0 -28
  324. package/build/repository/WorkflowTemplateRecord.js.map +0 -1
  325. package/build/repository/WorkflowTemplateRepository.d.ts +0 -6
  326. package/build/repository/WorkflowTemplateRepository.js +0 -56
  327. package/build/repository/WorkflowTemplateRepository.js.map +0 -1
  328. package/build/services/WorkflowService.d.ts +0 -102
  329. package/build/services/WorkflowService.js +0 -704
  330. package/build/services/WorkflowService.js.map +0 -1
  331. package/build/ui/UiFilter.d.ts +0 -5
  332. package/build/ui/UiFilter.js +0 -104
  333. package/build/ui/UiFilter.js.map +0 -1
  334. package/build/ui/UiTypes.d.ts +0 -28
  335. package/build/ui/UiTypes.js +0 -3
  336. package/build/ui/UiTypes.js.map +0 -1
@@ -1,704 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.WorkflowService = void 0;
13
- const core_1 = require("@credo-ts/core");
14
- const WorkflowEvents_1 = require("../WorkflowEvents");
15
- const WorkflowModuleConfig_1 = require("../WorkflowModuleConfig");
16
- const ActionRegistry_1 = require("../actions/ActionRegistry");
17
- const GuardEvaluator_1 = require("../engine/GuardEvaluator");
18
- const TemplateValidation_1 = require("../model/TemplateValidation");
19
- const types_1 = require("../model/types");
20
- const CompleteMessage_1 = require("../protocol/messages/CompleteMessage");
21
- const WorkflowInstanceRecord_1 = require("../repository/WorkflowInstanceRecord");
22
- const WorkflowInstanceRepository_1 = require("../repository/WorkflowInstanceRepository");
23
- const WorkflowTemplateRecord_1 = require("../repository/WorkflowTemplateRecord");
24
- const WorkflowTemplateRepository_1 = require("../repository/WorkflowTemplateRepository");
25
- const stableStringify = (obj) => {
26
- const allKeys = [];
27
- JSON.stringify(obj, (k, v) => {
28
- allKeys.push(k);
29
- return v;
30
- });
31
- allKeys.sort();
32
- return JSON.stringify(obj, allKeys);
33
- };
34
- const sha256 = (input) => {
35
- const hash = core_1.Hasher.hash(core_1.TypedArrayEncoder.fromString(input), 'sha-256');
36
- return core_1.TypedArrayEncoder.toHex(hash);
37
- };
38
- let WorkflowService = class WorkflowService {
39
- constructor(templateRepo, instanceRepo, config, agentConfig, eventEmitter) {
40
- this.templateRepo = templateRepo;
41
- this.instanceRepo = instanceRepo;
42
- this.config = config;
43
- this.agentConfig = agentConfig;
44
- this.eventEmitter = eventEmitter;
45
- this.actions = new ActionRegistry_1.ActionRegistry();
46
- this.actions.register(new ActionRegistry_1.LocalStateSetAction());
47
- // Register DIDComm action handlers used by workflows
48
- // Credential issuance flow handlers
49
- this.actions.register(new ActionRegistry_1.ProposeCredentialV2Action()); // Holder proposes credential
50
- this.actions.register(new ActionRegistry_1.IssueCredentialV2Action()); // Issuer sends offer
51
- this.actions.register(new ActionRegistry_1.RequestCredentialV2Action()); // Holder accepts offer
52
- this.actions.register(new ActionRegistry_1.IssueCredentialMessageV2Action()); // Issuer issues credential
53
- // Proof presentation handler
54
- this.actions.register(new ActionRegistry_1.PresentProofV2Action());
55
- }
56
- // Allow external modules (e.g., payments) to register additional action handlers
57
- registerActions(actions) {
58
- for (const a of actions) {
59
- // ActionRegistry expects objects with shape { typeUri, execute }
60
- // We don't import the exact type here to avoid cross-package coupling
61
- this.actions.register(a);
62
- }
63
- }
64
- async publishTemplate(agentContext, template) {
65
- // JSON schema validation + structural checks
66
- (0, TemplateValidation_1.validateTemplateJson)(template);
67
- (0, TemplateValidation_1.validateTemplateRefs)(template);
68
- const hash = sha256(stableStringify(template));
69
- const existing = await this.templateRepo.findByTemplateIdAndVersion(agentContext, template.template_id, template.version);
70
- if (existing) {
71
- existing.template = template;
72
- existing.hash = hash;
73
- await this.templateRepo.update(agentContext, existing);
74
- return existing;
75
- }
76
- const record = new WorkflowTemplateRecord_1.WorkflowTemplateRecord({ template, hash });
77
- await this.templateRepo.save(agentContext, record);
78
- return record;
79
- }
80
- async start(agentContext, opts) {
81
- // Idempotency by instance_id: if an instance with the same instance_id already exists, return it
82
- if (opts.instance_id) {
83
- try {
84
- const existingByInstance = await this.instanceRepo.getByInstanceId(agentContext, opts.instance_id);
85
- if (existingByInstance)
86
- return existingByInstance;
87
- }
88
- catch {
89
- /* not found */
90
- }
91
- }
92
- const tplRec = await this.templateRepo.findByTemplateIdAndVersion(agentContext, opts.template_id, opts.template_version);
93
- if (!tplRec)
94
- throw this.problem('invalid_template', `template not found: ${opts.template_id}@${opts.template_version || 'latest'}`);
95
- const tpl = tplRec.template;
96
- const startState = tpl.states.find((s) => s.type === 'start')?.name || tpl.states[0]?.name;
97
- if (!startState)
98
- throw this.problem('invalid_template', 'no start state');
99
- const policy = tpl.instance_policy;
100
- const connectionId = opts.connection_id;
101
- if (policy.mode === 'singleton_per_connection') {
102
- const existing = (0, types_1.ensureArray)(await this.instanceRepo.findByTemplateAndConnection(agentContext, tpl.template_id, connectionId)).shift();
103
- if (existing) {
104
- if (this.config.autoReturnExistingOnSingleton)
105
- return existing;
106
- throw this.problem('already_exists', 'instance already exists for template/connection');
107
- }
108
- }
109
- let multiplicityKeyValue;
110
- if (policy.mode === 'multi_per_connection' && policy.multiplicity_key) {
111
- multiplicityKeyValue = this.evalMultiplicity(policy.multiplicity_key, opts.context || {});
112
- const dup = (0, types_1.ensureArray)(await this.instanceRepo.findByTemplateConnAndMultiplicity(agentContext, tpl.template_id, connectionId, multiplicityKeyValue)).shift();
113
- if (dup)
114
- return dup;
115
- }
116
- // Derive participants from connection when not provided
117
- let participants = opts.participants || {};
118
- try {
119
- if (connectionId) {
120
- const connSvc = agentContext.dependencyManager.resolve(core_1.ConnectionService);
121
- const conn = await connSvc.getById(agentContext, connectionId);
122
- const theirDid = conn?.theirDid;
123
- const myDid = conn?.did || conn?.myDid;
124
- if (theirDid) {
125
- const holder = participants.holder || {};
126
- if (!holder.did)
127
- holder.did = theirDid;
128
- participants.holder = holder;
129
- }
130
- if (myDid) {
131
- const issuer = participants.issuer || {};
132
- if (!issuer.did)
133
- issuer.did = myDid;
134
- participants.issuer = issuer;
135
- }
136
- }
137
- }
138
- catch {
139
- // best effort only
140
- }
141
- const instanceId = opts.instance_id || this.uuid();
142
- const section = (0, types_1.findSectionForState)(tpl, startState);
143
- const rec = new WorkflowInstanceRecord_1.WorkflowInstanceRecord({
144
- instanceId,
145
- templateId: tpl.template_id,
146
- templateVersion: tpl.version,
147
- connectionId,
148
- participants,
149
- state: startState,
150
- section,
151
- context: { ...(opts.context || {}) },
152
- artifacts: {},
153
- status: 'active',
154
- history: [],
155
- multiplicityKeyValue,
156
- idempotencyKeys: [],
157
- });
158
- await this.instanceRepo.save(agentContext, rec);
159
- // Emit state changed event for initial creation
160
- try {
161
- this.eventEmitter?.emit(agentContext, {
162
- type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceStateChanged,
163
- payload: {
164
- instanceRecord: rec,
165
- previousState: null,
166
- newState: rec.state,
167
- event: 'start',
168
- actionKey: undefined,
169
- msgId: undefined,
170
- },
171
- });
172
- }
173
- catch (_e) {
174
- void 0;
175
- }
176
- return rec;
177
- }
178
- async advance(agentContext, opts, instanceRecord) {
179
- let inst;
180
- if (instanceRecord) {
181
- inst = instanceRecord;
182
- }
183
- else {
184
- try {
185
- inst = await this.instanceRepo.getById(agentContext, opts.instance_id);
186
- }
187
- catch {
188
- const found = await this.instanceRepo.getByInstanceId(agentContext, opts.instance_id);
189
- if (!found)
190
- throw this.problem('invalid_event', 'instance not found');
191
- inst = found;
192
- }
193
- }
194
- const tplRec = await this.templateRepo.findByTemplateIdAndVersion(agentContext, inst.templateId, inst.templateVersion);
195
- if (!tplRec)
196
- throw this.problem('invalid_template', 'template not found for instance');
197
- const tpl = tplRec.template;
198
- // lifecycle status gating
199
- if (inst.status === 'paused')
200
- throw this.problem('forbidden', 'instance is paused');
201
- if (inst.status === 'canceled')
202
- throw this.problem('forbidden', 'instance is canceled');
203
- if (inst.status === 'completed')
204
- throw this.problem('invalid_event', 'instance already completed');
205
- // idempotency
206
- if (opts.idempotency_key && inst.idempotencyKeys?.includes(opts.idempotency_key)) {
207
- const prior = inst.idempotency?.find?.((i) => i.key === opts.idempotency_key);
208
- if (prior && prior.event !== opts.event)
209
- throw this.problem('idempotency_conflict', 'same key, different event');
210
- return inst;
211
- }
212
- const candidates = (0, types_1.transitionsFromState)(tpl, inst.state).filter((t) => t.on === opts.event);
213
- if (!candidates.length)
214
- throw this.problem('invalid_event', `no transition for event ${opts.event} from ${inst.state}`);
215
- const env = GuardEvaluator_1.GuardEvaluator.envFromInstance(this.toInstanceData(inst));
216
- const enabled = candidates.filter((t) => GuardEvaluator_1.GuardEvaluator.evalGuard(t.guard, env));
217
- if (!enabled.length)
218
- throw this.problem('guard_failed', 'guard evaluated false');
219
- const t = enabled[0];
220
- let artifactsDelta = {};
221
- let messageId;
222
- if (t.action) {
223
- const def = tpl.actions.find((a) => a.key === t.action);
224
- if (!def)
225
- throw this.problem('invalid_template', `action not defined: ${t.action}`);
226
- const handler = this.actions.get(def.typeURI);
227
- if (!handler)
228
- throw this.problem('action_error', `no handler for type ${def.typeURI}`);
229
- const exec = async () => handler.execute({
230
- agentContext,
231
- template: tpl,
232
- instance: this.toInstanceData(inst),
233
- action: def,
234
- input: opts.input,
235
- });
236
- const timeoutMs = this.config.actionTimeoutMs ?? 15000;
237
- const race = Promise.race([
238
- exec(),
239
- new Promise((_, rej) => setTimeout(() => rej(new Error('action timeout')), timeoutMs)),
240
- ]);
241
- let result;
242
- try {
243
- result = (await race);
244
- }
245
- catch (e) {
246
- throw Object.assign(new Error(e.message || 'action timeout'), { code: 'action_error' });
247
- }
248
- artifactsDelta = result?.artifacts || {};
249
- // local state:set may be applied directly by handler, but ensure we persist
250
- if (result?.contextMerge)
251
- inst.context = result.contextMerge;
252
- if (result?.messageId)
253
- messageId = result.messageId;
254
- }
255
- // Concurrency check: re-read and ensure state didn't change
256
- const fromState = inst.state;
257
- try {
258
- const fresh = await this.instanceRepo.getById(agentContext, inst.id);
259
- if (fresh.state !== fromState)
260
- throw this.problem('state_conflict', 'state changed concurrently');
261
- }
262
- catch (_e) {
263
- // ignore if repository throws
264
- void 0;
265
- }
266
- // persist atomically (optimistic)
267
- const prevState = inst.state;
268
- inst.history.push({
269
- ts: new Date().toISOString(),
270
- event: opts.event,
271
- from: inst.state,
272
- to: t.to,
273
- actionKey: t.action,
274
- msg_id: messageId,
275
- });
276
- inst.state = t.to;
277
- inst.section = (0, types_1.findSectionForState)(tpl, t.to);
278
- inst.artifacts = { ...inst.artifacts, ...artifactsDelta };
279
- if (opts.idempotency_key) {
280
- inst.idempotencyKeys = [...(inst.idempotencyKeys || []), opts.idempotency_key];
281
- inst.idempotency = [
282
- ...(inst.idempotency || []),
283
- { key: opts.idempotency_key, event: opts.event, to: t.to, actionKey: t.action },
284
- ];
285
- // Trim idempotency history to configured limit
286
- const limit = Math.max(1, this.config.idempotencyHistoryLimit ?? 100);
287
- if ((inst.idempotencyKeys?.length || 0) > limit) {
288
- inst.idempotencyKeys = inst.idempotencyKeys.slice(-limit);
289
- }
290
- if ((inst.idempotency?.length || 0) > limit) {
291
- inst.idempotency = inst.idempotency.slice(-limit);
292
- }
293
- }
294
- let reachedFinal = false;
295
- try {
296
- const toDef = tpl.states.find((s) => s.name === t.to);
297
- if (toDef?.type === 'final') {
298
- inst.status = 'completed';
299
- reachedFinal = true;
300
- }
301
- }
302
- catch (_e) {
303
- void 0;
304
- }
305
- await this.instanceRepo.update(agentContext, inst);
306
- // Emit state-changed event
307
- try {
308
- this.eventEmitter?.emit(agentContext, {
309
- type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceStateChanged,
310
- payload: {
311
- instanceRecord: inst,
312
- previousState: prevState,
313
- newState: inst.state,
314
- event: opts.event,
315
- actionKey: t.action,
316
- msgId: messageId,
317
- },
318
- });
319
- }
320
- catch (_e) {
321
- void 0;
322
- }
323
- // Emit status-changed & completed, and send Complete message if final
324
- if (reachedFinal) {
325
- try {
326
- this.eventEmitter?.emit(agentContext, {
327
- type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceStatusChanged,
328
- payload: { instanceRecord: inst, previousStatus: 'active', newStatus: 'completed' },
329
- });
330
- }
331
- catch (_e) {
332
- void 0;
333
- }
334
- try {
335
- this.eventEmitter?.emit(agentContext, {
336
- type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceCompleted,
337
- payload: { instanceRecord: inst, state: inst.state, section: inst.section },
338
- });
339
- }
340
- catch (_e) {
341
- void 0;
342
- }
343
- await this.sendCompleteMessage(agentContext, inst);
344
- }
345
- return inst;
346
- }
347
- async status(agentContext, opts, instanceRecord) {
348
- let inst;
349
- if (instanceRecord) {
350
- inst = instanceRecord;
351
- }
352
- else {
353
- try {
354
- inst = await this.instanceRepo.getById(agentContext, opts.instance_id);
355
- }
356
- catch {
357
- const found = await this.instanceRepo.getByInstanceId(agentContext, opts.instance_id);
358
- if (!found)
359
- throw this.problem('invalid_event', 'instance not found');
360
- inst = found;
361
- }
362
- }
363
- const tplRec = await this.templateRepo.findByTemplateIdAndVersion(agentContext, inst.templateId, inst.templateVersion);
364
- if (!tplRec)
365
- throw this.problem('invalid_template', 'template not found for instance');
366
- const tpl = tplRec.template;
367
- const instData = this.toInstanceData(inst);
368
- const env = GuardEvaluator_1.GuardEvaluator.envFromInstance(instData);
369
- const allowed = (0, types_1.transitionsFromState)(tpl, inst.state)
370
- .filter((t) => GuardEvaluator_1.GuardEvaluator.evalGuard(t.guard, env))
371
- .map((t) => t.on);
372
- const includeActions = opts.include_actions ?? true;
373
- const includeUi = opts.include_ui ?? true;
374
- // Build full env with viewer info for UI filtering
375
- const uiEnv = {
376
- context: instData.context || {},
377
- participants: instData.participants || {},
378
- artifacts: instData.artifacts || {},
379
- viewer: opts.viewer,
380
- };
381
- // Select + filter UI items
382
- // Defer import to avoid cycle risk
383
- // eslint-disable-next-line @typescript-eslint/no-var-requires
384
- const Ui = require('../ui/UiFilter');
385
- // Derive viewer profile from instance participants per spec
386
- let derivedProfile = opts.ui_profile;
387
- try {
388
- // 1) If viewer role/participantKey provided, honor it
389
- const viewerRole = opts.viewer?.role;
390
- const viewerKey = opts.viewer?.participantKey;
391
- const viewerDid = opts.viewer?.did;
392
- const mapKeyToProfile = (k) => {
393
- if (!k)
394
- return undefined;
395
- const key = k.toLowerCase();
396
- if (key === 'sender' || key === 'issuer')
397
- return 'sender';
398
- if (key === 'receiver' || key === 'holder')
399
- return 'receiver';
400
- return undefined;
401
- };
402
- if (!derivedProfile)
403
- derivedProfile = mapKeyToProfile(viewerRole) || mapKeyToProfile(viewerKey);
404
- // 1b) If viewer DID provided, map to participant key by DID equality
405
- if (!derivedProfile && viewerDid && instData?.participants && typeof instData.participants === 'object') {
406
- for (const [pKey, pVal] of Object.entries(instData.participants)) {
407
- const did = pVal?.did;
408
- if (did && did === viewerDid) {
409
- derivedProfile = mapKeyToProfile(pKey);
410
- if (derivedProfile)
411
- break;
412
- }
413
- }
414
- }
415
- // 2) If still not set, try to match current tenant's DID against instance participants
416
- if (!derivedProfile) {
417
- // Obtain my DID for the instance's connection, if available
418
- let myDid;
419
- if (instData?.connection_id) {
420
- try {
421
- const connSvc = agentContext.dependencyManager.resolve(core_1.ConnectionService);
422
- const conn = await connSvc.getById(agentContext, instData.connection_id);
423
- myDid = conn?.did || conn?.myDid;
424
- }
425
- catch { }
426
- }
427
- if (myDid && instData?.participants && typeof instData.participants === 'object') {
428
- for (const [pKey, pVal] of Object.entries(instData.participants)) {
429
- const did = pVal?.did;
430
- if (did && did === myDid) {
431
- derivedProfile = mapKeyToProfile(pKey);
432
- if (derivedProfile)
433
- break;
434
- }
435
- }
436
- }
437
- }
438
- }
439
- catch { }
440
- const selected = Ui.selectUi(tpl?.display_hints, inst.state, derivedProfile);
441
- const filtered = Ui.filterAndBindUi(selected, uiEnv, opts.viewer, derivedProfile);
442
- const menu = includeActions
443
- ? filtered
444
- .filter((i) => i?.type === 'button' || i?.type === 'submit-button')
445
- .map((i) => ({ label: i?.label, event: i?.event }))
446
- : [];
447
- const assets = Ui.collectAssets(filtered, tpl?.display_hints?.assets);
448
- const ui = includeUi ? filtered : undefined;
449
- let connection;
450
- if (inst.connectionId) {
451
- try {
452
- const connSvc = agentContext.dependencyManager.resolve(core_1.ConnectionService);
453
- const conn = await connSvc.getById(agentContext, inst.connectionId);
454
- connection = {
455
- id: conn?.id,
456
- myDid: conn?.did || conn?.myDid,
457
- theirDid: conn?.theirDid,
458
- };
459
- }
460
- catch {
461
- // ignore if not found
462
- }
463
- }
464
- return {
465
- instance_id: inst.instanceId,
466
- template_id: inst.templateId,
467
- template_version: inst.templateVersion,
468
- connection_id: inst.connectionId,
469
- connection,
470
- participants: inst.participants,
471
- context: inst.context,
472
- status: inst.status,
473
- createdAt: inst.createdAt,
474
- updatedAt: inst?.updatedAt,
475
- state: inst.state,
476
- section: inst.section,
477
- allowed_events: allowed,
478
- action_menu: menu,
479
- artifacts: inst.artifacts,
480
- ...(includeUi ? { ui } : {}),
481
- ...(derivedProfile ? { ui_profile: derivedProfile } : {}),
482
- ...(assets ? { assets } : {}),
483
- };
484
- }
485
- async pause(agentContext, opts, instanceRecord) {
486
- const inst = instanceRecord || (await this.getInstanceByIdOrTag(agentContext, opts.instance_id));
487
- const prev = inst.status;
488
- inst.status = 'paused';
489
- await this.instanceRepo.update(agentContext, inst);
490
- try {
491
- this.eventEmitter?.emit(agentContext, {
492
- type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceStatusChanged,
493
- payload: { instanceRecord: inst, previousStatus: prev, newStatus: inst.status, reason: opts.reason },
494
- });
495
- }
496
- catch (_e) {
497
- void 0;
498
- }
499
- return inst;
500
- }
501
- async resume(agentContext, opts, instanceRecord) {
502
- const inst = instanceRecord || (await this.getInstanceByIdOrTag(agentContext, opts.instance_id));
503
- const prev = inst.status;
504
- inst.status = 'active';
505
- await this.instanceRepo.update(agentContext, inst);
506
- try {
507
- this.eventEmitter?.emit(agentContext, {
508
- type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceStatusChanged,
509
- payload: { instanceRecord: inst, previousStatus: prev, newStatus: inst.status, reason: opts.reason },
510
- });
511
- }
512
- catch (_e) {
513
- void 0;
514
- }
515
- return inst;
516
- }
517
- async cancel(agentContext, opts, instanceRecord) {
518
- const inst = instanceRecord || (await this.getInstanceByIdOrTag(agentContext, opts.instance_id));
519
- const prev = inst.status;
520
- inst.status = 'canceled';
521
- await this.instanceRepo.update(agentContext, inst);
522
- try {
523
- this.eventEmitter?.emit(agentContext, {
524
- type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceStatusChanged,
525
- payload: { instanceRecord: inst, previousStatus: prev, newStatus: inst.status, reason: opts.reason },
526
- });
527
- }
528
- catch (_e) {
529
- void 0;
530
- }
531
- return inst;
532
- }
533
- async complete(agentContext, opts, instanceRecord) {
534
- const inst = instanceRecord || (await this.getInstanceByIdOrTag(agentContext, opts.instance_id));
535
- // Only allow completion when FSM is in a final state
536
- const tplRec = await this.templateRepo.findByTemplateIdAndVersion(agentContext, inst.templateId, inst.templateVersion);
537
- if (!tplRec)
538
- throw this.problem('invalid_template', 'template not found for instance');
539
- const toDef = tplRec.template.states.find((s) => s.name === inst.state);
540
- if (toDef?.type !== 'final')
541
- throw this.problem('forbidden', 'cannot complete: state is not final');
542
- const prev = inst.status;
543
- inst.status = 'completed';
544
- await this.instanceRepo.update(agentContext, inst);
545
- try {
546
- this.eventEmitter?.emit(agentContext, {
547
- type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceStatusChanged,
548
- payload: { instanceRecord: inst, previousStatus: prev, newStatus: inst.status, reason: opts.reason },
549
- });
550
- this.eventEmitter?.emit(agentContext, {
551
- type: WorkflowEvents_1.WorkflowEventTypes.WorkflowInstanceCompleted,
552
- payload: { instanceRecord: inst, state: inst.state, section: inst.section },
553
- });
554
- }
555
- catch (_e) {
556
- void 0;
557
- }
558
- return inst;
559
- }
560
- async autoAdvanceByConnection(agentContext, connectionId, event) {
561
- const inst = await this.instanceRepo.findLatestByConnection(agentContext, connectionId);
562
- if (!inst)
563
- return;
564
- try {
565
- await this.advance(agentContext, {
566
- instance_id: inst.instanceId,
567
- event,
568
- idempotency_key: `auto:${event}:${inst.instanceId}`,
569
- });
570
- }
571
- catch (e) {
572
- // swallow, log at debug
573
- this.agentConfig.logger.debug(`Workflow autoAdvance error: ${e.message}`);
574
- }
575
- }
576
- evalMultiplicity(expr, context) {
577
- try {
578
- const env = { context, participants: {}, artifacts: {} };
579
- const val = GuardEvaluator_1.GuardEvaluator.evalValue(expr, env);
580
- return val != null ? String(val) : '';
581
- }
582
- catch {
583
- return '';
584
- }
585
- }
586
- toInstanceData(rec) {
587
- return {
588
- instance_id: rec.instanceId,
589
- template_id: rec.templateId,
590
- template_version: rec.templateVersion,
591
- connection_id: rec.connectionId,
592
- participants: rec.participants,
593
- state: rec.state,
594
- section: rec.section,
595
- context: rec.context,
596
- artifacts: rec.artifacts,
597
- status: rec.status,
598
- history: rec.history,
599
- multiplicityKeyValue: rec.multiplicityKeyValue,
600
- idempotencyKeys: rec.idempotencyKeys,
601
- };
602
- }
603
- problem(code, comment) {
604
- const err = new Error(comment);
605
- err.code = code;
606
- return err;
607
- }
608
- async getInstanceByIdOrTag(agentContext, instanceId) {
609
- try {
610
- return await this.instanceRepo.getById(agentContext, instanceId);
611
- }
612
- catch {
613
- const found = await this.instanceRepo.getByInstanceId(agentContext, instanceId);
614
- if (!found)
615
- throw this.problem('invalid_event', 'instance not found');
616
- return found;
617
- }
618
- }
619
- uuid() {
620
- // light uuid
621
- return `wf_${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`;
622
- }
623
- validateTemplate(t) {
624
- const fail = (msg) => {
625
- throw this.problem('invalid_template', msg);
626
- };
627
- if (!t.template_id || !t.version || !t.title)
628
- fail('missing required fields');
629
- if (!Array.isArray(t.states) || !t.states.length)
630
- fail('states required');
631
- if (!Array.isArray(t.transitions))
632
- fail('transitions required');
633
- if (!Array.isArray(t.actions))
634
- fail('actions required');
635
- const stateNames = new Set(t.states.map((s) => s.name));
636
- if (![...t.states].some((s) => s.type === 'start'))
637
- fail('start state required');
638
- for (const s of t.states) {
639
- if (s.section && !t.sections?.some((sec) => sec.name === s.section))
640
- fail(`state.section not found: ${s.section}`);
641
- }
642
- for (const tr of t.transitions) {
643
- if (!stateNames.has(tr.from))
644
- fail(`transition.from unknown: ${tr.from}`);
645
- if (!stateNames.has(tr.to))
646
- fail(`transition.to unknown: ${tr.to}`);
647
- if (tr.action && !t.actions.some((a) => a.key === tr.action))
648
- fail(`transition.action unknown: ${tr.action}`);
649
- }
650
- // profile_ref resolution
651
- for (const a of t.actions) {
652
- if ('profile_ref' in a && a.profile_ref) {
653
- const pr = a.profile_ref;
654
- if (pr.startsWith('cp.')) {
655
- const key = pr.slice(3);
656
- if (!t.catalog?.credential_profiles || !t.catalog.credential_profiles[key])
657
- fail(`catalog.cp missing: ${key}`);
658
- }
659
- else if (pr.startsWith('pp.')) {
660
- const key = pr.slice(3);
661
- if (!t.catalog?.proof_profiles || !t.catalog.proof_profiles[key])
662
- fail(`catalog.pp missing: ${key}`);
663
- }
664
- else
665
- fail(`invalid profile_ref: ${pr}`);
666
- }
667
- }
668
- }
669
- async sendCompleteMessage(agentContext, inst) {
670
- try {
671
- if (!inst.connectionId)
672
- return;
673
- const connectionSvc = agentContext.dependencyManager.resolve(core_1.ConnectionService);
674
- const messageSender = agentContext.dependencyManager.resolve(core_1.MessageSender);
675
- const connection = await connectionSvc.getById(agentContext, inst.connectionId);
676
- const msg = new CompleteMessage_1.CompleteMessage({
677
- thid: inst.instanceId,
678
- body: { instance_id: inst.instanceId, reason: 'state_final' },
679
- });
680
- try {
681
- // Request return-route so HTTP outbound doesn't throw on 15s timeout
682
- msg.setReturnRouting(core_1.ReturnRouteTypes.thread, inst.instanceId);
683
- }
684
- catch (_e) {
685
- void 0;
686
- }
687
- const outbound = new core_1.OutboundMessageContext(msg, { agentContext, connection });
688
- await messageSender.sendMessage(outbound);
689
- }
690
- catch (e) {
691
- this.agentConfig.logger.debug(`Workflow complete notify error: ${e.message}`);
692
- }
693
- }
694
- };
695
- exports.WorkflowService = WorkflowService;
696
- exports.WorkflowService = WorkflowService = __decorate([
697
- (0, core_1.injectable)(),
698
- __metadata("design:paramtypes", [WorkflowTemplateRepository_1.WorkflowTemplateRepository,
699
- WorkflowInstanceRepository_1.WorkflowInstanceRepository,
700
- WorkflowModuleConfig_1.WorkflowModuleConfig,
701
- core_1.AgentConfig,
702
- core_1.EventEmitter])
703
- ], WorkflowService);
704
- //# sourceMappingURL=WorkflowService.js.map