@codemation/core 0.0.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 (348) hide show
  1. package/README.md +30 -0
  2. package/dist/EngineExecutionLimitsPolicy-8MEFIYx1.d.cts +160 -0
  3. package/dist/EngineExecutionLimitsPolicy-BWAXW9D6.d.cts +160 -0
  4. package/dist/EngineExecutionLimitsPolicy-Bp8PS1Ss.d.cts +159 -0
  5. package/dist/EngineExecutionLimitsPolicy-CLxcN-D2.d.ts +159 -0
  6. package/dist/EngineExecutionLimitsPolicy-DZXuix51.d.ts +160 -0
  7. package/dist/EngineExecutionLimitsPolicy-Gfz6ngFd.d.ts +160 -0
  8. package/dist/EngineFactory-CBnntY3J.cjs +3152 -0
  9. package/dist/EngineFactory-CBnntY3J.cjs.map +1 -0
  10. package/dist/EngineFactory-Cwn3R2YA.js +3087 -0
  11. package/dist/EngineFactory-Cwn3R2YA.js.map +1 -0
  12. package/dist/EngineFactory-DWCnNocp.js +3063 -0
  13. package/dist/EngineFactory-DWCnNocp.js.map +1 -0
  14. package/dist/EngineFactory-DhPFou4p.cjs +3188 -0
  15. package/dist/EngineFactory-DhPFou4p.cjs.map +1 -0
  16. package/dist/EngineFactory-l_9xmBtv.cjs +3190 -0
  17. package/dist/EngineFactory-l_9xmBtv.cjs.map +1 -0
  18. package/dist/EngineFactory-w-aOWuqh.js +3089 -0
  19. package/dist/EngineFactory-w-aOWuqh.js.map +1 -0
  20. package/dist/InMemoryLiveWorkflowRepository-1J9MHN_I.js +18 -0
  21. package/dist/InMemoryLiveWorkflowRepository-1J9MHN_I.js.map +1 -0
  22. package/dist/InMemoryLiveWorkflowRepository-BTzHpQ6e.cjs +151 -0
  23. package/dist/InMemoryLiveWorkflowRepository-BTzHpQ6e.cjs.map +1 -0
  24. package/dist/InMemoryLiveWorkflowRepository-BoLNnVLg.js +139 -0
  25. package/dist/InMemoryLiveWorkflowRepository-BoLNnVLg.js.map +1 -0
  26. package/dist/InMemoryLiveWorkflowRepository-CULNqv96.d.ts +1300 -0
  27. package/dist/InMemoryLiveWorkflowRepository-D6eiiXxF.d.cts +1168 -0
  28. package/dist/InMemoryLiveWorkflowRepository-D7l8cjdZ.d.cts +1130 -0
  29. package/dist/InMemoryLiveWorkflowRepository-DL7LmC9S.d.ts +1340 -0
  30. package/dist/InMemoryLiveWorkflowRepository-jnv-OnOP.d.ts +1300 -0
  31. package/dist/InMemoryLiveWorkflowRepository-xny1_Z6i.cjs +24 -0
  32. package/dist/InMemoryLiveWorkflowRepository-xny1_Z6i.cjs.map +1 -0
  33. package/dist/InMemoryLiveWorkflowRepository-xr7b4kvi.d.ts +1338 -0
  34. package/dist/InMemoryWorkflowCatalog-BIdFpwbK.d.ts +1205 -0
  35. package/dist/InMemoryWorkflowCatalog-BW00_3N3.d.cts +12 -0
  36. package/dist/InMemoryWorkflowCatalog-BiYHGoPw.cjs +24 -0
  37. package/dist/InMemoryWorkflowCatalog-BiYHGoPw.cjs.map +1 -0
  38. package/dist/InMemoryWorkflowCatalog-BrG0ApMO.d.cts +1115 -0
  39. package/dist/InMemoryWorkflowCatalog-BzrAr--Y.js +139 -0
  40. package/dist/InMemoryWorkflowCatalog-BzrAr--Y.js.map +1 -0
  41. package/dist/InMemoryWorkflowCatalog-C-EJlJ7y.d.cts +1120 -0
  42. package/dist/InMemoryWorkflowCatalog-C4482bpw.cjs +24 -0
  43. package/dist/InMemoryWorkflowCatalog-C4482bpw.cjs.map +1 -0
  44. package/dist/InMemoryWorkflowCatalog-CZ0kZpOv.d.ts +1289 -0
  45. package/dist/InMemoryWorkflowCatalog-C_ACeLyW.d.cts +1119 -0
  46. package/dist/InMemoryWorkflowCatalog-CiHWIu5E.d.cts +12 -0
  47. package/dist/InMemoryWorkflowCatalog-CkH7gkya.js +18 -0
  48. package/dist/InMemoryWorkflowCatalog-CkH7gkya.js.map +1 -0
  49. package/dist/InMemoryWorkflowCatalog-CnpZVJM9.d.ts +1205 -0
  50. package/dist/InMemoryWorkflowCatalog-Cu68S8YR.js +18 -0
  51. package/dist/InMemoryWorkflowCatalog-Cu68S8YR.js.map +1 -0
  52. package/dist/InMemoryWorkflowCatalog-D2w9nMj2.cjs +151 -0
  53. package/dist/InMemoryWorkflowCatalog-D2w9nMj2.cjs.map +1 -0
  54. package/dist/InMemoryWorkflowCatalog-D5eMxEf7.js +18 -0
  55. package/dist/InMemoryWorkflowCatalog-D5eMxEf7.js.map +1 -0
  56. package/dist/InMemoryWorkflowCatalog-D5nCp2yZ.d.ts +1267 -0
  57. package/dist/InMemoryWorkflowCatalog-DIq0bjqN.d.ts +12 -0
  58. package/dist/InMemoryWorkflowCatalog-DLgaEaw_.d.ts +1288 -0
  59. package/dist/InMemoryWorkflowCatalog-DNBFdK-x.d.cts +1120 -0
  60. package/dist/InMemoryWorkflowCatalog-DQBkCzb7.cjs +24 -0
  61. package/dist/InMemoryWorkflowCatalog-DQBkCzb7.cjs.map +1 -0
  62. package/dist/InMemoryWorkflowCatalog-DS4-eX6i.d.cts +1118 -0
  63. package/dist/InMemoryWorkflowCatalog-DdVfy8MY.d.ts +12 -0
  64. package/dist/InMemoryWorkflowCatalog-DeVZu3g8.d.ts +12 -0
  65. package/dist/InMemoryWorkflowCatalog-GxkQjvt5.d.ts +1200 -0
  66. package/dist/InMemoryWorkflowCatalog-qaVRn1Lc.d.cts +1115 -0
  67. package/dist/InMemoryWorkflowCatalog-z1aIT4TC.d.cts +12 -0
  68. package/dist/InMemoryWorkflowRegistry-BBuOovLL.d.ts +1007 -0
  69. package/dist/InMemoryWorkflowRegistry-BIFnSl3k.d.ts +1201 -0
  70. package/dist/InMemoryWorkflowRegistry-BnGilthz.d.ts +1137 -0
  71. package/dist/InMemoryWorkflowRegistry-CEp5I8No.d.ts +1146 -0
  72. package/dist/InMemoryWorkflowRegistry-CHyMB9jW.d.cts +976 -0
  73. package/dist/InMemoryWorkflowRegistry-CUN7K86m.d.cts +1061 -0
  74. package/dist/InMemoryWorkflowRegistry-CVfHyELh.d.cts +971 -0
  75. package/dist/InMemoryWorkflowRegistry-CXXJrwAr.d.cts +1052 -0
  76. package/dist/InMemoryWorkflowRegistry-DDGfPTJy.d.ts +1013 -0
  77. package/dist/InMemoryWorkflowRegistry-DnYSOoT5.d.ts +1120 -0
  78. package/dist/InMemoryWorkflowRegistry-Dp5GiFF2.d.cts +1035 -0
  79. package/dist/InMemoryWorkflowRegistry-DypDBeOw.d.cts +1116 -0
  80. package/dist/InMemoryWorkflowRegistry-SzwJCAxT.d.ts +1012 -0
  81. package/dist/InMemoryWorkflowRegistry-jupvqyGc.d.cts +977 -0
  82. package/dist/InMemoryWorkflowRegistry-rAdKVWYT.d.ts +1117 -0
  83. package/dist/InProcessRetryRunner-BBNPkXjy.d.cts +292 -0
  84. package/dist/PersistedWorkflowSnapshotFactory-7RkOL3Kg.d.ts +14 -0
  85. package/dist/PersistedWorkflowSnapshotFactory-BmANa46W.cjs +141 -0
  86. package/dist/PersistedWorkflowSnapshotFactory-BmANa46W.cjs.map +1 -0
  87. package/dist/PersistedWorkflowSnapshotFactory-Bwb_etSt.js +118 -0
  88. package/dist/PersistedWorkflowSnapshotFactory-Bwb_etSt.js.map +1 -0
  89. package/dist/PersistedWorkflowSnapshotFactory-CRkKGNV6.js +123 -0
  90. package/dist/PersistedWorkflowSnapshotFactory-CRkKGNV6.js.map +1 -0
  91. package/dist/PersistedWorkflowSnapshotFactory-CZolnGy5.js +101 -0
  92. package/dist/PersistedWorkflowSnapshotFactory-CZolnGy5.js.map +1 -0
  93. package/dist/PersistedWorkflowSnapshotFactory-Ca_oysOv.cjs +131 -0
  94. package/dist/PersistedWorkflowSnapshotFactory-Ca_oysOv.cjs.map +1 -0
  95. package/dist/PersistedWorkflowSnapshotFactory-CqIcShnX.js +103 -0
  96. package/dist/PersistedWorkflowSnapshotFactory-CqIcShnX.js.map +1 -0
  97. package/dist/PersistedWorkflowSnapshotFactory-D-tBk4_G.js +119 -0
  98. package/dist/PersistedWorkflowSnapshotFactory-D-tBk4_G.js.map +1 -0
  99. package/dist/PersistedWorkflowSnapshotFactory-D4cXl2e2.cjs +131 -0
  100. package/dist/PersistedWorkflowSnapshotFactory-D4cXl2e2.cjs.map +1 -0
  101. package/dist/PersistedWorkflowSnapshotFactory-DINoP12r.cjs +131 -0
  102. package/dist/PersistedWorkflowSnapshotFactory-DINoP12r.cjs.map +1 -0
  103. package/dist/PersistedWorkflowSnapshotFactory-DJAwSuHU.js +103 -0
  104. package/dist/PersistedWorkflowSnapshotFactory-DJAwSuHU.js.map +1 -0
  105. package/dist/PersistedWorkflowSnapshotFactory-DSUjVCcf.cjs +131 -0
  106. package/dist/PersistedWorkflowSnapshotFactory-DSUjVCcf.cjs.map +1 -0
  107. package/dist/PersistedWorkflowSnapshotFactory-DdHuhkDb.cjs +107 -0
  108. package/dist/PersistedWorkflowSnapshotFactory-DdHuhkDb.cjs.map +1 -0
  109. package/dist/PersistedWorkflowSnapshotFactory-Dqc6NHis.js +119 -0
  110. package/dist/PersistedWorkflowSnapshotFactory-Dqc6NHis.js.map +1 -0
  111. package/dist/PersistedWorkflowSnapshotFactory-Dxa2dSrw.cjs +130 -0
  112. package/dist/PersistedWorkflowSnapshotFactory-Dxa2dSrw.cjs.map +1 -0
  113. package/dist/PersistedWorkflowSnapshotFactory-Ep79Ah1G.js +123 -0
  114. package/dist/PersistedWorkflowSnapshotFactory-Ep79Ah1G.js.map +1 -0
  115. package/dist/PersistedWorkflowSnapshotFactory-GyLfRuiJ.js +119 -0
  116. package/dist/PersistedWorkflowSnapshotFactory-GyLfRuiJ.js.map +1 -0
  117. package/dist/PersistedWorkflowSnapshotFactory-HTpBsBzn.js +102 -0
  118. package/dist/PersistedWorkflowSnapshotFactory-HTpBsBzn.js.map +1 -0
  119. package/dist/PersistedWorkflowSnapshotFactory-LVmaaf3t.cjs +141 -0
  120. package/dist/PersistedWorkflowSnapshotFactory-LVmaaf3t.cjs.map +1 -0
  121. package/dist/PersistedWorkflowSnapshotFactory-PZCpo2ZS.js +119 -0
  122. package/dist/PersistedWorkflowSnapshotFactory-PZCpo2ZS.js.map +1 -0
  123. package/dist/PersistedWorkflowSnapshotFactory-UjQ1SJev.cjs +109 -0
  124. package/dist/PersistedWorkflowSnapshotFactory-UjQ1SJev.cjs.map +1 -0
  125. package/dist/PersistedWorkflowSnapshotFactory-Y8kCrhcy.cjs +109 -0
  126. package/dist/PersistedWorkflowSnapshotFactory-Y8kCrhcy.cjs.map +1 -0
  127. package/dist/PersistedWorkflowSnapshotFactory-Z_nB-fmB.cjs +108 -0
  128. package/dist/PersistedWorkflowSnapshotFactory-Z_nB-fmB.cjs.map +1 -0
  129. package/dist/RunIntentService-1EE6N8ZL.cjs +963 -0
  130. package/dist/RunIntentService-1EE6N8ZL.cjs.map +1 -0
  131. package/dist/RunIntentService-2ivFmNQh.cjs +3462 -0
  132. package/dist/RunIntentService-2ivFmNQh.cjs.map +1 -0
  133. package/dist/RunIntentService-B0sUL5q-.js +761 -0
  134. package/dist/RunIntentService-B0sUL5q-.js.map +1 -0
  135. package/dist/RunIntentService-BFVbsOcg.js +3131 -0
  136. package/dist/RunIntentService-BFVbsOcg.js.map +1 -0
  137. package/dist/RunIntentService-BsBOwpVN.cjs +1051 -0
  138. package/dist/RunIntentService-BsBOwpVN.cjs.map +1 -0
  139. package/dist/RunIntentService-CSk3ETyn.js +858 -0
  140. package/dist/RunIntentService-CSk3ETyn.js.map +1 -0
  141. package/dist/RunIntentService-Ckn3u3tA.d.cts +326 -0
  142. package/dist/RunIntentService-DEo6GTTo.d.cts +289 -0
  143. package/dist/RunIntentService-DKrGtL0B.js +782 -0
  144. package/dist/RunIntentService-DKrGtL0B.js.map +1 -0
  145. package/dist/RunIntentService-DNOJc1R7.cjs +942 -0
  146. package/dist/RunIntentService-DNOJc1R7.cjs.map +1 -0
  147. package/dist/RunIntentService-Dq3pV53j.d.cts +289 -0
  148. package/dist/RunIntentService-NKobsfMQ.d.cts +274 -0
  149. package/dist/WorkflowSnapshotCodec-C3fuuS_R.d.cts +22 -0
  150. package/dist/WorkflowSnapshotCodec-CUudUo6f.js +123 -0
  151. package/dist/WorkflowSnapshotCodec-CUudUo6f.js.map +1 -0
  152. package/dist/WorkflowSnapshotCodec-CuCPQZTc.cjs +129 -0
  153. package/dist/WorkflowSnapshotCodec-CuCPQZTc.cjs.map +1 -0
  154. package/dist/WorkflowSnapshotCodec-DLiXQNvV.d.cts +22 -0
  155. package/dist/WorkflowSnapshotCodec-DNtdrZ7l.d.cts +22 -0
  156. package/dist/WorkflowSnapshotCodec-DTdWkoW_.d.cts +22 -0
  157. package/dist/bootstrap/index.cjs +1028 -0
  158. package/dist/bootstrap/index.cjs.map +1 -0
  159. package/dist/bootstrap/index.d.cts +311 -0
  160. package/dist/bootstrap/index.d.ts +83 -0
  161. package/dist/bootstrap/index.js +994 -0
  162. package/dist/bootstrap/index.js.map +1 -0
  163. package/dist/credentialTypes-B5h3dI7r.d.cts +1107 -0
  164. package/dist/credentialTypes-B9okPCVo.d.cts +963 -0
  165. package/dist/credentialTypes-BFL70rgZ.d.cts +964 -0
  166. package/dist/credentialTypes-BGkh1O07.d.ts +1010 -0
  167. package/dist/credentialTypes-BNLi4Q7u.d.ts +1030 -0
  168. package/dist/credentialTypes-CeSoZGj3.d.cts +994 -0
  169. package/dist/credentialTypes-CpHc32Ig.d.cts +984 -0
  170. package/dist/credentialTypes-D0m7MQQl.d.cts +1107 -0
  171. package/dist/credentialTypes-D4nL2sUd.d.ts +1000 -0
  172. package/dist/credentialTypes-DBYK2Qbu.d.ts +999 -0
  173. package/dist/credentialTypes-DMJVy0r1.d.ts +1000 -0
  174. package/dist/credentialTypes-DhUAjYQp.d.ts +1020 -0
  175. package/dist/credentialTypes-gGITj5KL.d.cts +964 -0
  176. package/dist/credentialTypes-r3KVBJBE.d.cts +974 -0
  177. package/dist/diTokens-ClO27tjK.cjs +34 -0
  178. package/dist/diTokens-ClO27tjK.cjs.map +1 -0
  179. package/dist/diTokens-CoHBkwG6.js +28 -0
  180. package/dist/diTokens-CoHBkwG6.js.map +1 -0
  181. package/dist/index-6Doxmfnd.d.ts +857 -0
  182. package/dist/index-9g6Pfe9Z.d.ts +689 -0
  183. package/dist/index-AZ72Ej-K.d.ts +920 -0
  184. package/dist/index-BEk9V-q-.d.ts +667 -0
  185. package/dist/index-Bjt7_7oS.d.ts +1192 -0
  186. package/dist/index-CFGxsYXy.d.ts +708 -0
  187. package/dist/index-C_u8xFgn.d.ts +690 -0
  188. package/dist/index-CpbfsvOJ.d.ts +1192 -0
  189. package/dist/index-CsReNJN_.d.ts +859 -0
  190. package/dist/index-D5iNnXaW.d.ts +667 -0
  191. package/dist/index-DD_Eft1q.d.ts +708 -0
  192. package/dist/index-DiSYUe0G.d.ts +1192 -0
  193. package/dist/index-gIcH60sp.d.ts +674 -0
  194. package/dist/index.cjs +520 -0
  195. package/dist/index.cjs.map +1 -0
  196. package/dist/index.d.cts +345 -0
  197. package/dist/index.d.ts +3 -0
  198. package/dist/index.js +412 -0
  199. package/dist/index.js.map +1 -0
  200. package/dist/runtime-BIvd-1JA.cjs +4112 -0
  201. package/dist/runtime-BIvd-1JA.cjs.map +1 -0
  202. package/dist/runtime-D3eWKSQK.cjs +3986 -0
  203. package/dist/runtime-D3eWKSQK.cjs.map +1 -0
  204. package/dist/runtime-Dvp4xAjg.js +3799 -0
  205. package/dist/runtime-Dvp4xAjg.js.map +1 -0
  206. package/dist/runtime-vc76SSAa.js +3685 -0
  207. package/dist/runtime-vc76SSAa.js.map +1 -0
  208. package/dist/runtimeTypes-BK0b8SaG.d.cts +884 -0
  209. package/dist/runtimeTypes-CoYZkYQq.d.cts +851 -0
  210. package/dist/runtimeTypes-D-Pm0Uas.d.cts +849 -0
  211. package/dist/testing.cjs +18 -0
  212. package/dist/testing.cjs.map +1 -0
  213. package/dist/testing.d.cts +19 -0
  214. package/dist/testing.d.ts +18 -0
  215. package/dist/testing.js +16 -0
  216. package/dist/testing.js.map +1 -0
  217. package/dist/types-Cb5UK7Y6.d.ts +857 -0
  218. package/package.json +66 -0
  219. package/src/ai/AiHost.ts +115 -0
  220. package/src/binaries/DefaultExecutionBinaryServiceFactory.ts +37 -0
  221. package/src/binaries/DefaultNodeBinaryAttachmentServiceFactory.ts +120 -0
  222. package/src/binaries/UnavailableBinaryStorage.ts +19 -0
  223. package/src/binaries/index.ts +2 -0
  224. package/src/bootstrap/index.ts +46 -0
  225. package/src/bootstrap/runtime/EngineRuntimeRegistrar.ts +180 -0
  226. package/src/bootstrap/runtime/EngineRuntimeRegistration.types.ts +43 -0
  227. package/src/bootstrap/runtime/index.ts +6 -0
  228. package/src/browser.ts +8 -0
  229. package/src/contracts/Clock.ts +10 -0
  230. package/src/contracts/ExpRetryPolicy.ts +23 -0
  231. package/src/contracts/NoRetryPolicy.ts +5 -0
  232. package/src/contracts/RetryPolicy.ts +23 -0
  233. package/src/contracts/credentialTypes.ts +194 -0
  234. package/src/contracts/index.ts +6 -0
  235. package/src/contracts/retryPolicySpec.types.ts +30 -0
  236. package/src/contracts/runFinishedAtFactory.ts +19 -0
  237. package/src/contracts/runTypes.ts +314 -0
  238. package/src/contracts/runtimeTypes.ts +373 -0
  239. package/src/contracts/webhookTypes.ts +49 -0
  240. package/src/contracts/workflowActivationPolicy.ts +16 -0
  241. package/src/contracts/workflowTypes.ts +280 -0
  242. package/src/di/CoreTokens.ts +60 -0
  243. package/src/di/index.ts +24 -0
  244. package/src/events/EventPublishingWorkflowExecutionRepository.ts +67 -0
  245. package/src/events/InMemoryRunEventBusRegistry.ts +37 -0
  246. package/src/events/InMemoryRunEventSubscription.ts +9 -0
  247. package/src/events/NodeEventPublisher.ts +22 -0
  248. package/src/events/index.ts +4 -0
  249. package/src/events/runEvents.ts +54 -0
  250. package/src/execution/ActivationEnqueueService.ts +125 -0
  251. package/src/execution/CredentialResolverFactory.ts +39 -0
  252. package/src/execution/DefaultAsyncSleeper.ts +9 -0
  253. package/src/execution/DefaultExecutionContextFactory.ts +48 -0
  254. package/src/execution/InProcessRetryRunner.ts +115 -0
  255. package/src/execution/InProcessRetryRunnerFactory.ts +8 -0
  256. package/src/execution/NodeActivationRequestComposer.ts +113 -0
  257. package/src/execution/NodeExecutionSnapshotFactory.ts +152 -0
  258. package/src/execution/NodeExecutor.ts +43 -0
  259. package/src/execution/NodeExecutorFactory.ts +10 -0
  260. package/src/execution/NodeInputsByPortFactory.ts +14 -0
  261. package/src/execution/NodeInstanceFactory.ts +32 -0
  262. package/src/execution/NodeInstanceFactoryFactory.ts +9 -0
  263. package/src/execution/NodeRunStateWriter.ts +185 -0
  264. package/src/execution/NodeRunStateWriterFactory.ts +29 -0
  265. package/src/execution/PersistedRunStateTerminalBuilder.ts +25 -0
  266. package/src/execution/RunStateSemantics.ts +158 -0
  267. package/src/execution/WorkflowRunExecutionContextFactory.ts +45 -0
  268. package/src/execution/asyncSleeper.types.ts +3 -0
  269. package/src/execution/index.ts +26 -0
  270. package/src/index.ts +18 -0
  271. package/src/orchestration/Engine.ts +229 -0
  272. package/src/orchestration/EngineWaiters.ts +37 -0
  273. package/src/orchestration/RunContinuationService.ts +810 -0
  274. package/src/orchestration/RunStartService.ts +449 -0
  275. package/src/orchestration/TriggerRuntimeService.ts +260 -0
  276. package/src/orchestration/index.ts +5 -0
  277. package/src/planning/CurrentStateFrontierPlanner.ts +400 -0
  278. package/src/planning/EngineWorkflowPlanningFactory.ts +63 -0
  279. package/src/planning/RunQueuePlanner.ts +302 -0
  280. package/src/planning/WorkflowTopologyPlanner.ts +77 -0
  281. package/src/planning/index.ts +4 -0
  282. package/src/policies/WorkflowPolicyErrorServices.ts +38 -0
  283. package/src/policies/executionLimits/EngineExecutionLimitsPolicy.ts +66 -0
  284. package/src/policies/executionLimits/EngineExecutionLimitsPolicyFactory.ts +14 -0
  285. package/src/policies/index.ts +10 -0
  286. package/src/policies/storage/RunPolicySnapshotFactory.ts +23 -0
  287. package/src/policies/storage/RunTerminalPersistenceCoordinator.ts +29 -0
  288. package/src/policies/storage/WorkflowStoragePolicyEvaluator.ts +39 -0
  289. package/src/runStorage/BinaryBodyBufferReader.ts +57 -0
  290. package/src/runStorage/BinaryBodyReadableStreamFactory.ts +21 -0
  291. package/src/runStorage/InMemoryBinaryStorageRegistry.ts +53 -0
  292. package/src/runStorage/InMemoryRunData.ts +33 -0
  293. package/src/runStorage/InMemoryRunDataFactory.ts +8 -0
  294. package/src/runStorage/InMemoryWorkflowExecutionRepository.ts +95 -0
  295. package/src/runStorage/RunSummaryMapper.ts +17 -0
  296. package/src/runStorage/index.ts +7 -0
  297. package/src/runtime/EngineFactory.ts +151 -0
  298. package/src/runtime/EngineWorkflowRunnerService.ts +39 -0
  299. package/src/runtime/EngineWorkflowRunnerServiceFactory.ts +11 -0
  300. package/src/runtime/InMemoryLiveWorkflowRepository.ts +20 -0
  301. package/src/runtime/RunIntentService.ts +175 -0
  302. package/src/runtime/RunIntentServiceFactory.ts +11 -0
  303. package/src/runtime/WorkflowRepositoryWebhookTriggerMatcher.ts +144 -0
  304. package/src/runtime/WorkflowRepositoryWebhookTriggerMatcherFactory.ts +13 -0
  305. package/src/runtime/index.ts +9 -0
  306. package/src/runtime-types/InjectableRuntimeDecoratorComposerRegistry.ts +25 -0
  307. package/src/runtime-types/PersistedRuntimeTypeMetadataStoreRegistry.ts +46 -0
  308. package/src/runtime-types/PersistedRuntimeTypeNameResolver.ts +14 -0
  309. package/src/runtime-types/StackTraceCallSitePathResolver.ts +25 -0
  310. package/src/runtime-types/persistedRuntimeTypeModelRegistry.ts +33 -0
  311. package/src/runtime-types/runtimeTypeDecorators.types.ts +46 -0
  312. package/src/scheduler/ConfigDrivenOffloadPolicy.ts +28 -0
  313. package/src/scheduler/DefaultDrivingScheduler.ts +100 -0
  314. package/src/scheduler/HintOnlyOffloadPolicy.ts +9 -0
  315. package/src/scheduler/InlineDrivingScheduler.ts +145 -0
  316. package/src/scheduler/InlineDrivingSchedulerFactory.ts +9 -0
  317. package/src/scheduler/LocalOnlyScheduler.ts +7 -0
  318. package/src/serialization/ItemsInputNormalizer.ts +36 -0
  319. package/src/testing/RejectingCredentialSessionService.ts +15 -0
  320. package/src/testing.ts +6 -0
  321. package/src/types/index.ts +12 -0
  322. package/src/workflow/definition/ConnectionInvocationIdFactory.ts +17 -0
  323. package/src/workflow/definition/ConnectionNodeIdFactory.ts +42 -0
  324. package/src/workflow/definition/WorkflowExecutableNodeClassifier.ts +71 -0
  325. package/src/workflow/definition/WorkflowExecutableNodeClassifierFactory.ts +9 -0
  326. package/src/workflow/dsl/ChainCursorResolver.ts +103 -0
  327. package/src/workflow/dsl/WhenBuilder.ts +57 -0
  328. package/src/workflow/dsl/WorkflowBuilder.ts +55 -0
  329. package/src/workflow/dsl/workflowBuilderTypes.ts +63 -0
  330. package/src/workflow/graph/DefaultWorkflowGraphFactory.ts +8 -0
  331. package/src/workflow/graph/ExecutableGraph.ts +24 -0
  332. package/src/workflow/index.ts +11 -0
  333. package/src/workflowSnapshots/MissingRuntimeExecutionMarker.ts +5 -0
  334. package/src/workflowSnapshots/MissingRuntimeFallbacksFactory.ts +27 -0
  335. package/src/workflowSnapshots/MissingRuntimeNode.ts +12 -0
  336. package/src/workflowSnapshots/MissingRuntimeNodeConfig.ts +14 -0
  337. package/src/workflowSnapshots/MissingRuntimeNodeToken.ts +1 -0
  338. package/src/workflowSnapshots/MissingRuntimeTrigger.ts +16 -0
  339. package/src/workflowSnapshots/MissingRuntimeTriggerConfig.ts +14 -0
  340. package/src/workflowSnapshots/MissingRuntimeTriggerToken.ts +1 -0
  341. package/src/workflowSnapshots/PersistedRuntimeTypeIdFactory.ts +19 -0
  342. package/src/workflowSnapshots/PersistedWorkflowTokenRegistry.ts +89 -0
  343. package/src/workflowSnapshots/PersistedWorkflowTokenRegistryFactory.ts +2 -0
  344. package/src/workflowSnapshots/WorkflowSnapshotCodec.ts +177 -0
  345. package/src/workflowSnapshots/WorkflowSnapshotResolver.ts +102 -0
  346. package/src/workflowSnapshots/index.ts +12 -0
  347. package/tsconfig.json +9 -0
  348. package/tsdown.config.ts +10 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersistedWorkflowSnapshotFactory-D-tBk4_G.js","names":["tokenRegistry: PersistedWorkflowTokenRegistryLike","fallback: Record<string, unknown>","tokenRegistry: PersistedWorkflowTokenRegistryLike"],"sources":["../src/engine/adapters/registry/InMemoryWorkflowRegistry.ts","../src/engine/adapters/persisted-workflow/PersistedWorkflowConfigSerializer.ts","../src/engine/adapters/persisted-workflow/PersistedWorkflowSnapshotFactory.ts"],"sourcesContent":["import type { WorkflowCatalog, WorkflowDefinition, WorkflowId } from \"../../../types\";\n\nexport class InMemoryWorkflowRegistry implements WorkflowCatalog {\n private readonly workflowsById = new Map<WorkflowId, WorkflowDefinition>();\n\n setWorkflows(workflows: ReadonlyArray<WorkflowDefinition>): void {\n this.workflowsById.clear();\n for (const workflow of workflows) {\n this.workflowsById.set(workflow.id, workflow);\n }\n }\n\n list(): ReadonlyArray<WorkflowDefinition> {\n return [...this.workflowsById.values()];\n }\n\n get(workflowId: WorkflowId): WorkflowDefinition | undefined {\n return this.workflowsById.get(workflowId);\n }\n}\n","import type { TypeToken } from \"../../../di\";\nimport type { NodeConfigBase, PersistedTokenId, PersistedWorkflowTokenRegistryLike } from \"../../../types\";\n\nexport class PersistedWorkflowConfigSerializer {\n constructor(private readonly tokenRegistry: PersistedWorkflowTokenRegistryLike) {}\n\n create(config: NodeConfigBase): unknown {\n try {\n const cloned = JSON.parse(JSON.stringify(config)) as Record<string, unknown>;\n this.injectTokenIds(cloned, config as unknown as Record<string, unknown>);\n return cloned;\n } catch {\n const fallback: Record<string, unknown> = {\n kind: config.kind,\n name: config.name,\n id: config.id,\n icon: config.icon,\n execution: config.execution,\n };\n this.injectTokenIds(fallback, config as unknown as Record<string, unknown>);\n return fallback;\n }\n }\n\n private injectTokenIds(target: Record<string, unknown>, source: Record<string, unknown>): void {\n const type = this.asTypeToken(source.type);\n if (type) {\n const tokenId = this.tokenRegistry.getTokenId(type) ?? this.tokenName(type);\n target.tokenId = tokenId;\n }\n for (const [key, value] of Object.entries(source)) {\n if (key === \"type\" || value == null) continue;\n if (Array.isArray(value)) {\n const arr = target[key];\n if (Array.isArray(arr)) {\n value.forEach((item, i) => {\n if (item && typeof item === \"object\" && arr[i] && typeof arr[i] === \"object\") {\n this.injectTokenIds(arr[i] as Record<string, unknown>, item as Record<string, unknown>);\n }\n });\n }\n continue;\n }\n if (typeof value === \"object\") {\n const t = target[key];\n if (t && typeof t === \"object\") {\n this.injectTokenIds(t as Record<string, unknown>, value as Record<string, unknown>);\n }\n }\n }\n }\n\n private tokenName(token: TypeToken<unknown>): PersistedTokenId {\n if (typeof token === \"function\" && token.name) return token.name as PersistedTokenId;\n if (typeof token === \"string\") return token as PersistedTokenId;\n return \"unknown\" as PersistedTokenId;\n }\n\n private asTypeToken(value: unknown): TypeToken<unknown> | undefined {\n if (typeof value === \"function\" || typeof value === \"string\" || typeof value === \"symbol\") {\n return value as TypeToken<unknown>;\n }\n return undefined;\n }\n}\n","import type { TypeToken } from \"../../../di\";\nimport type {\n PersistedTokenId,\n PersistedWorkflowSnapshot,\n PersistedWorkflowTokenRegistryLike,\n WorkflowDefinition,\n} from \"../../../types\";\n\nimport { PersistedWorkflowConfigSerializer } from \"./PersistedWorkflowConfigSerializer\";\n\nexport class PersistedWorkflowSnapshotFactory {\n private readonly configSerializer: PersistedWorkflowConfigSerializer;\n\n constructor(private readonly tokenRegistry: PersistedWorkflowTokenRegistryLike) {\n this.configSerializer = new PersistedWorkflowConfigSerializer(tokenRegistry);\n }\n\n create(workflow: WorkflowDefinition): PersistedWorkflowSnapshot {\n return {\n id: workflow.id,\n name: workflow.name,\n workflowErrorHandlerConfigured: workflow.workflowErrorHandler !== undefined,\n ...(workflow.connections !== undefined && workflow.connections.length > 0\n ? { connections: workflow.connections }\n : {}),\n nodes: workflow.nodes.map((node) => {\n const nodeTokenId = this.resolveTokenId(node.type);\n const configTokenId = this.resolveTokenId(node.config.type);\n return {\n id: node.id,\n kind: node.kind,\n name: node.name,\n nodeTokenId,\n configTokenId,\n tokenName: this.resolveTokenName(node.type),\n configTokenName: this.resolveTokenName(node.config?.type),\n config: this.configSerializer.create(node.config),\n };\n }),\n edges: workflow.edges.map((edge) => ({\n from: { nodeId: edge.from.nodeId, output: edge.from.output },\n to: { nodeId: edge.to.nodeId, input: edge.to.input },\n })),\n };\n }\n\n private resolveTokenId(token: TypeToken<unknown>): PersistedTokenId {\n const id = this.tokenRegistry.getTokenId(token);\n if (id) return id;\n const name = typeof token === \"function\" && token.name ? token.name : typeof token === \"string\" ? token : \"unknown\";\n return name as PersistedTokenId;\n }\n\n private resolveTokenName(token: TypeToken<unknown>): string | undefined {\n return typeof token === \"function\" && token.name ? token.name : typeof token === \"string\" ? token : undefined;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+
2
+ //#region src/engine/adapters/catalog/InMemoryWorkflowCatalog.ts
3
+ var InMemoryWorkflowCatalog = class {
4
+ workflowsById = /* @__PURE__ */ new Map();
5
+ setWorkflows(workflows) {
6
+ this.workflowsById.clear();
7
+ for (const workflow of workflows) this.workflowsById.set(workflow.id, workflow);
8
+ }
9
+ list() {
10
+ return [...this.workflowsById.values()];
11
+ }
12
+ get(workflowId) {
13
+ return this.workflowsById.get(workflowId);
14
+ }
15
+ };
16
+
17
+ //#endregion
18
+ //#region src/engine/materialization/PersistedWorkflowConfigSerializer.ts
19
+ var PersistedWorkflowConfigSerializer = class {
20
+ constructor(tokenRegistry) {
21
+ this.tokenRegistry = tokenRegistry;
22
+ }
23
+ create(config) {
24
+ try {
25
+ const cloned = JSON.parse(JSON.stringify(config));
26
+ this.injectTokenIds(cloned, config);
27
+ return cloned;
28
+ } catch {
29
+ const fallback = {
30
+ kind: config.kind,
31
+ name: config.name,
32
+ id: config.id,
33
+ icon: config.icon,
34
+ execution: config.execution
35
+ };
36
+ this.injectTokenIds(fallback, config);
37
+ return fallback;
38
+ }
39
+ }
40
+ injectTokenIds(target, source) {
41
+ const type = this.asTypeToken(source.type);
42
+ if (type) target.tokenId = this.tokenRegistry.getTokenId(type) ?? this.tokenName(type);
43
+ for (const [key, value] of Object.entries(source)) {
44
+ if (key === "type" || value == null) continue;
45
+ if (Array.isArray(value)) {
46
+ const arr = target[key];
47
+ if (Array.isArray(arr)) value.forEach((item, i) => {
48
+ if (item && typeof item === "object" && arr[i] && typeof arr[i] === "object") this.injectTokenIds(arr[i], item);
49
+ });
50
+ continue;
51
+ }
52
+ if (typeof value === "object") {
53
+ const t = target[key];
54
+ if (t && typeof t === "object") this.injectTokenIds(t, value);
55
+ }
56
+ }
57
+ }
58
+ tokenName(token) {
59
+ if (typeof token === "function" && token.name) return token.name;
60
+ if (typeof token === "string") return token;
61
+ return "unknown";
62
+ }
63
+ asTypeToken(value) {
64
+ if (typeof value === "function" || typeof value === "string" || typeof value === "symbol") return value;
65
+ }
66
+ };
67
+
68
+ //#endregion
69
+ //#region src/engine/materialization/PersistedWorkflowSnapshotFactory.ts
70
+ var PersistedWorkflowSnapshotFactory = class {
71
+ configSerializer;
72
+ constructor(tokenRegistry) {
73
+ this.tokenRegistry = tokenRegistry;
74
+ this.configSerializer = new PersistedWorkflowConfigSerializer(tokenRegistry);
75
+ }
76
+ create(workflow) {
77
+ return {
78
+ id: workflow.id,
79
+ name: workflow.name,
80
+ workflowErrorHandlerConfigured: workflow.workflowErrorHandler !== void 0,
81
+ ...workflow.connections !== void 0 && workflow.connections.length > 0 ? { connections: workflow.connections } : {},
82
+ nodes: workflow.nodes.map((node) => {
83
+ const nodeTokenId = this.resolveTokenId(node.type);
84
+ const configTokenId = this.resolveTokenId(node.config.type);
85
+ return {
86
+ id: node.id,
87
+ kind: node.kind,
88
+ name: node.name,
89
+ nodeTokenId,
90
+ configTokenId,
91
+ tokenName: this.resolveTokenName(node.type),
92
+ configTokenName: this.resolveTokenName(node.config?.type),
93
+ config: this.configSerializer.create(node.config)
94
+ };
95
+ }),
96
+ edges: workflow.edges.map((edge) => ({
97
+ from: {
98
+ nodeId: edge.from.nodeId,
99
+ output: edge.from.output
100
+ },
101
+ to: {
102
+ nodeId: edge.to.nodeId,
103
+ input: edge.to.input
104
+ }
105
+ }))
106
+ };
107
+ }
108
+ resolveTokenId(token) {
109
+ const id = this.tokenRegistry.getTokenId(token);
110
+ if (id) return id;
111
+ return typeof token === "function" && token.name ? token.name : typeof token === "string" ? token : "unknown";
112
+ }
113
+ resolveTokenName(token) {
114
+ return typeof token === "function" && token.name ? token.name : typeof token === "string" ? token : void 0;
115
+ }
116
+ };
117
+
118
+ //#endregion
119
+ Object.defineProperty(exports, 'InMemoryWorkflowCatalog', {
120
+ enumerable: true,
121
+ get: function () {
122
+ return InMemoryWorkflowCatalog;
123
+ }
124
+ });
125
+ Object.defineProperty(exports, 'PersistedWorkflowSnapshotFactory', {
126
+ enumerable: true,
127
+ get: function () {
128
+ return PersistedWorkflowSnapshotFactory;
129
+ }
130
+ });
131
+ //# sourceMappingURL=PersistedWorkflowSnapshotFactory-D4cXl2e2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersistedWorkflowSnapshotFactory-D4cXl2e2.cjs","names":["tokenRegistry: PersistedWorkflowTokenRegistryLike","fallback: Record<string, unknown>","tokenRegistry: PersistedWorkflowTokenRegistryLike"],"sources":["../src/engine/adapters/catalog/InMemoryWorkflowCatalog.ts","../src/engine/materialization/PersistedWorkflowConfigSerializer.ts","../src/engine/materialization/PersistedWorkflowSnapshotFactory.ts"],"sourcesContent":["import type { WorkflowCatalog, WorkflowDefinition, WorkflowId } from \"../../../types\";\n\nexport class InMemoryWorkflowCatalog implements WorkflowCatalog {\n private readonly workflowsById = new Map<WorkflowId, WorkflowDefinition>();\n\n setWorkflows(workflows: ReadonlyArray<WorkflowDefinition>): void {\n this.workflowsById.clear();\n for (const workflow of workflows) {\n this.workflowsById.set(workflow.id, workflow);\n }\n }\n\n list(): ReadonlyArray<WorkflowDefinition> {\n return [...this.workflowsById.values()];\n }\n\n get(workflowId: WorkflowId): WorkflowDefinition | undefined {\n return this.workflowsById.get(workflowId);\n }\n}\n","import type { TypeToken } from \"../../di\";\nimport type { NodeConfigBase, PersistedTokenId, PersistedWorkflowTokenRegistryLike } from \"../../types\";\n\nexport class PersistedWorkflowConfigSerializer {\n constructor(private readonly tokenRegistry: PersistedWorkflowTokenRegistryLike) {}\n\n create(config: NodeConfigBase): unknown {\n try {\n const cloned = JSON.parse(JSON.stringify(config)) as Record<string, unknown>;\n this.injectTokenIds(cloned, config as unknown as Record<string, unknown>);\n return cloned;\n } catch {\n const fallback: Record<string, unknown> = {\n kind: config.kind,\n name: config.name,\n id: config.id,\n icon: config.icon,\n execution: config.execution,\n };\n this.injectTokenIds(fallback, config as unknown as Record<string, unknown>);\n return fallback;\n }\n }\n\n private injectTokenIds(target: Record<string, unknown>, source: Record<string, unknown>): void {\n const type = this.asTypeToken(source.type);\n if (type) {\n const tokenId = this.tokenRegistry.getTokenId(type) ?? this.tokenName(type);\n target.tokenId = tokenId;\n }\n for (const [key, value] of Object.entries(source)) {\n if (key === \"type\" || value == null) continue;\n if (Array.isArray(value)) {\n const arr = target[key];\n if (Array.isArray(arr)) {\n value.forEach((item, i) => {\n if (item && typeof item === \"object\" && arr[i] && typeof arr[i] === \"object\") {\n this.injectTokenIds(arr[i] as Record<string, unknown>, item as Record<string, unknown>);\n }\n });\n }\n continue;\n }\n if (typeof value === \"object\") {\n const t = target[key];\n if (t && typeof t === \"object\") {\n this.injectTokenIds(t as Record<string, unknown>, value as Record<string, unknown>);\n }\n }\n }\n }\n\n private tokenName(token: TypeToken<unknown>): PersistedTokenId {\n if (typeof token === \"function\" && token.name) return token.name as PersistedTokenId;\n if (typeof token === \"string\") return token as PersistedTokenId;\n return \"unknown\" as PersistedTokenId;\n }\n\n private asTypeToken(value: unknown): TypeToken<unknown> | undefined {\n if (typeof value === \"function\" || typeof value === \"string\" || typeof value === \"symbol\") {\n return value as TypeToken<unknown>;\n }\n return undefined;\n }\n}\n","import type { TypeToken } from \"../../di\";\nimport type {\n PersistedTokenId,\n PersistedWorkflowSnapshot,\n PersistedWorkflowTokenRegistryLike,\n WorkflowDefinition,\n} from \"../../types\";\n\nimport { PersistedWorkflowConfigSerializer } from \"./PersistedWorkflowConfigSerializer\";\n\nexport class PersistedWorkflowSnapshotFactory {\n private readonly configSerializer: PersistedWorkflowConfigSerializer;\n\n constructor(private readonly tokenRegistry: PersistedWorkflowTokenRegistryLike) {\n this.configSerializer = new PersistedWorkflowConfigSerializer(tokenRegistry);\n }\n\n create(workflow: WorkflowDefinition): PersistedWorkflowSnapshot {\n return {\n id: workflow.id,\n name: workflow.name,\n workflowErrorHandlerConfigured: workflow.workflowErrorHandler !== undefined,\n ...(workflow.connections !== undefined && workflow.connections.length > 0\n ? { connections: workflow.connections }\n : {}),\n nodes: workflow.nodes.map((node) => {\n const nodeTokenId = this.resolveTokenId(node.type);\n const configTokenId = this.resolveTokenId(node.config.type);\n return {\n id: node.id,\n kind: node.kind,\n name: node.name,\n nodeTokenId,\n configTokenId,\n tokenName: this.resolveTokenName(node.type),\n configTokenName: this.resolveTokenName(node.config?.type),\n config: this.configSerializer.create(node.config),\n };\n }),\n edges: workflow.edges.map((edge) => ({\n from: { nodeId: edge.from.nodeId, output: edge.from.output },\n to: { nodeId: edge.to.nodeId, input: edge.to.input },\n })),\n };\n }\n\n private resolveTokenId(token: TypeToken<unknown>): PersistedTokenId {\n const id = this.tokenRegistry.getTokenId(token);\n if (id) return id;\n const name = typeof token === \"function\" && token.name ? token.name : typeof token === \"string\" ? token : \"unknown\";\n return name as PersistedTokenId;\n }\n\n private resolveTokenName(token: TypeToken<unknown>): string | undefined {\n return typeof token === \"function\" && token.name ? token.name : typeof token === \"string\" ? token : undefined;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+
2
+ //#region src/engine/adapters/registry/InMemoryWorkflowRegistry.ts
3
+ var InMemoryWorkflowRegistry = class {
4
+ workflowsById = /* @__PURE__ */ new Map();
5
+ setWorkflows(workflows) {
6
+ this.workflowsById.clear();
7
+ for (const workflow of workflows) this.workflowsById.set(workflow.id, workflow);
8
+ }
9
+ list() {
10
+ return [...this.workflowsById.values()];
11
+ }
12
+ get(workflowId) {
13
+ return this.workflowsById.get(workflowId);
14
+ }
15
+ };
16
+
17
+ //#endregion
18
+ //#region src/engine/adapters/persisted-workflow/PersistedWorkflowConfigSerializer.ts
19
+ var PersistedWorkflowConfigSerializer = class {
20
+ constructor(tokenRegistry) {
21
+ this.tokenRegistry = tokenRegistry;
22
+ }
23
+ create(config) {
24
+ try {
25
+ const cloned = JSON.parse(JSON.stringify(config));
26
+ this.injectTokenIds(cloned, config);
27
+ return cloned;
28
+ } catch {
29
+ const fallback = {
30
+ kind: config.kind,
31
+ name: config.name,
32
+ id: config.id,
33
+ icon: config.icon,
34
+ execution: config.execution
35
+ };
36
+ this.injectTokenIds(fallback, config);
37
+ return fallback;
38
+ }
39
+ }
40
+ injectTokenIds(target, source) {
41
+ const type = this.asTypeToken(source.type);
42
+ if (type) target.tokenId = this.tokenRegistry.getTokenId(type) ?? this.tokenName(type);
43
+ for (const [key, value] of Object.entries(source)) {
44
+ if (key === "type" || value == null) continue;
45
+ if (Array.isArray(value)) {
46
+ const arr = target[key];
47
+ if (Array.isArray(arr)) value.forEach((item, i) => {
48
+ if (item && typeof item === "object" && arr[i] && typeof arr[i] === "object") this.injectTokenIds(arr[i], item);
49
+ });
50
+ continue;
51
+ }
52
+ if (typeof value === "object") {
53
+ const t = target[key];
54
+ if (t && typeof t === "object") this.injectTokenIds(t, value);
55
+ }
56
+ }
57
+ }
58
+ tokenName(token) {
59
+ if (typeof token === "function" && token.name) return token.name;
60
+ if (typeof token === "string") return token;
61
+ return "unknown";
62
+ }
63
+ asTypeToken(value) {
64
+ if (typeof value === "function" || typeof value === "string" || typeof value === "symbol") return value;
65
+ }
66
+ };
67
+
68
+ //#endregion
69
+ //#region src/engine/adapters/persisted-workflow/PersistedWorkflowSnapshotFactory.ts
70
+ var PersistedWorkflowSnapshotFactory = class {
71
+ configSerializer;
72
+ constructor(tokenRegistry) {
73
+ this.tokenRegistry = tokenRegistry;
74
+ this.configSerializer = new PersistedWorkflowConfigSerializer(tokenRegistry);
75
+ }
76
+ create(workflow) {
77
+ return {
78
+ id: workflow.id,
79
+ name: workflow.name,
80
+ workflowErrorHandlerConfigured: workflow.workflowErrorHandler !== void 0,
81
+ ...workflow.connections !== void 0 && workflow.connections.length > 0 ? { connections: workflow.connections } : {},
82
+ nodes: workflow.nodes.map((node) => {
83
+ const nodeTokenId = this.resolveTokenId(node.type);
84
+ const configTokenId = this.resolveTokenId(node.config.type);
85
+ return {
86
+ id: node.id,
87
+ kind: node.kind,
88
+ name: node.name,
89
+ nodeTokenId,
90
+ configTokenId,
91
+ tokenName: this.resolveTokenName(node.type),
92
+ configTokenName: this.resolveTokenName(node.config?.type),
93
+ config: this.configSerializer.create(node.config)
94
+ };
95
+ }),
96
+ edges: workflow.edges.map((edge) => ({
97
+ from: {
98
+ nodeId: edge.from.nodeId,
99
+ output: edge.from.output
100
+ },
101
+ to: {
102
+ nodeId: edge.to.nodeId,
103
+ input: edge.to.input
104
+ }
105
+ }))
106
+ };
107
+ }
108
+ resolveTokenId(token) {
109
+ const id = this.tokenRegistry.getTokenId(token);
110
+ if (id) return id;
111
+ return typeof token === "function" && token.name ? token.name : typeof token === "string" ? token : "unknown";
112
+ }
113
+ resolveTokenName(token) {
114
+ return typeof token === "function" && token.name ? token.name : typeof token === "string" ? token : void 0;
115
+ }
116
+ };
117
+
118
+ //#endregion
119
+ Object.defineProperty(exports, 'InMemoryWorkflowRegistry', {
120
+ enumerable: true,
121
+ get: function () {
122
+ return InMemoryWorkflowRegistry;
123
+ }
124
+ });
125
+ Object.defineProperty(exports, 'PersistedWorkflowSnapshotFactory', {
126
+ enumerable: true,
127
+ get: function () {
128
+ return PersistedWorkflowSnapshotFactory;
129
+ }
130
+ });
131
+ //# sourceMappingURL=PersistedWorkflowSnapshotFactory-DINoP12r.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersistedWorkflowSnapshotFactory-DINoP12r.cjs","names":["tokenRegistry: PersistedWorkflowTokenRegistryLike","fallback: Record<string, unknown>","tokenRegistry: PersistedWorkflowTokenRegistryLike"],"sources":["../src/engine/adapters/registry/InMemoryWorkflowRegistry.ts","../src/engine/adapters/persisted-workflow/PersistedWorkflowConfigSerializer.ts","../src/engine/adapters/persisted-workflow/PersistedWorkflowSnapshotFactory.ts"],"sourcesContent":["import type { WorkflowCatalog, WorkflowDefinition, WorkflowId } from \"../../../types\";\n\nexport class InMemoryWorkflowRegistry implements WorkflowCatalog {\n private readonly workflowsById = new Map<WorkflowId, WorkflowDefinition>();\n\n setWorkflows(workflows: ReadonlyArray<WorkflowDefinition>): void {\n this.workflowsById.clear();\n for (const workflow of workflows) {\n this.workflowsById.set(workflow.id, workflow);\n }\n }\n\n list(): ReadonlyArray<WorkflowDefinition> {\n return [...this.workflowsById.values()];\n }\n\n get(workflowId: WorkflowId): WorkflowDefinition | undefined {\n return this.workflowsById.get(workflowId);\n }\n}\n","import type { TypeToken } from \"../../../di\";\nimport type { NodeConfigBase, PersistedTokenId, PersistedWorkflowTokenRegistryLike } from \"../../../types\";\n\nexport class PersistedWorkflowConfigSerializer {\n constructor(private readonly tokenRegistry: PersistedWorkflowTokenRegistryLike) {}\n\n create(config: NodeConfigBase): unknown {\n try {\n const cloned = JSON.parse(JSON.stringify(config)) as Record<string, unknown>;\n this.injectTokenIds(cloned, config as unknown as Record<string, unknown>);\n return cloned;\n } catch {\n const fallback: Record<string, unknown> = {\n kind: config.kind,\n name: config.name,\n id: config.id,\n icon: config.icon,\n execution: config.execution,\n };\n this.injectTokenIds(fallback, config as unknown as Record<string, unknown>);\n return fallback;\n }\n }\n\n private injectTokenIds(target: Record<string, unknown>, source: Record<string, unknown>): void {\n const type = this.asTypeToken(source.type);\n if (type) {\n const tokenId = this.tokenRegistry.getTokenId(type) ?? this.tokenName(type);\n target.tokenId = tokenId;\n }\n for (const [key, value] of Object.entries(source)) {\n if (key === \"type\" || value == null) continue;\n if (Array.isArray(value)) {\n const arr = target[key];\n if (Array.isArray(arr)) {\n value.forEach((item, i) => {\n if (item && typeof item === \"object\" && arr[i] && typeof arr[i] === \"object\") {\n this.injectTokenIds(arr[i] as Record<string, unknown>, item as Record<string, unknown>);\n }\n });\n }\n continue;\n }\n if (typeof value === \"object\") {\n const t = target[key];\n if (t && typeof t === \"object\") {\n this.injectTokenIds(t as Record<string, unknown>, value as Record<string, unknown>);\n }\n }\n }\n }\n\n private tokenName(token: TypeToken<unknown>): PersistedTokenId {\n if (typeof token === \"function\" && token.name) return token.name as PersistedTokenId;\n if (typeof token === \"string\") return token as PersistedTokenId;\n return \"unknown\" as PersistedTokenId;\n }\n\n private asTypeToken(value: unknown): TypeToken<unknown> | undefined {\n if (typeof value === \"function\" || typeof value === \"string\" || typeof value === \"symbol\") {\n return value as TypeToken<unknown>;\n }\n return undefined;\n }\n}\n","import type { TypeToken } from \"../../../di\";\nimport type {\n PersistedTokenId,\n PersistedWorkflowSnapshot,\n PersistedWorkflowTokenRegistryLike,\n WorkflowDefinition,\n} from \"../../../types\";\n\nimport { PersistedWorkflowConfigSerializer } from \"./PersistedWorkflowConfigSerializer\";\n\nexport class PersistedWorkflowSnapshotFactory {\n private readonly configSerializer: PersistedWorkflowConfigSerializer;\n\n constructor(private readonly tokenRegistry: PersistedWorkflowTokenRegistryLike) {\n this.configSerializer = new PersistedWorkflowConfigSerializer(tokenRegistry);\n }\n\n create(workflow: WorkflowDefinition): PersistedWorkflowSnapshot {\n return {\n id: workflow.id,\n name: workflow.name,\n workflowErrorHandlerConfigured: workflow.workflowErrorHandler !== undefined,\n ...(workflow.connections !== undefined && workflow.connections.length > 0\n ? { connections: workflow.connections }\n : {}),\n nodes: workflow.nodes.map((node) => {\n const nodeTokenId = this.resolveTokenId(node.type);\n const configTokenId = this.resolveTokenId(node.config.type);\n return {\n id: node.id,\n kind: node.kind,\n name: node.name,\n nodeTokenId,\n configTokenId,\n tokenName: this.resolveTokenName(node.type),\n configTokenName: this.resolveTokenName(node.config?.type),\n config: this.configSerializer.create(node.config),\n };\n }),\n edges: workflow.edges.map((edge) => ({\n from: { nodeId: edge.from.nodeId, output: edge.from.output },\n to: { nodeId: edge.to.nodeId, input: edge.to.input },\n })),\n };\n }\n\n private resolveTokenId(token: TypeToken<unknown>): PersistedTokenId {\n const id = this.tokenRegistry.getTokenId(token);\n if (id) return id;\n const name = typeof token === \"function\" && token.name ? token.name : typeof token === \"string\" ? token : \"unknown\";\n return name as PersistedTokenId;\n }\n\n private resolveTokenName(token: TypeToken<unknown>): string | undefined {\n return typeof token === \"function\" && token.name ? token.name : typeof token === \"string\" ? token : undefined;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ //#region src/persistedWorkflow/PersistedWorkflowConfigSerializer.ts
2
+ var PersistedWorkflowConfigSerializer = class {
3
+ constructor(tokenRegistry) {
4
+ this.tokenRegistry = tokenRegistry;
5
+ }
6
+ create(config) {
7
+ try {
8
+ const cloned = JSON.parse(JSON.stringify(config));
9
+ this.injectTokenIds(cloned, config);
10
+ return cloned;
11
+ } catch {
12
+ const fallback = {
13
+ kind: config.kind,
14
+ name: config.name,
15
+ id: config.id,
16
+ icon: config.icon,
17
+ execution: config.execution
18
+ };
19
+ this.injectTokenIds(fallback, config);
20
+ return fallback;
21
+ }
22
+ }
23
+ injectTokenIds(target, source) {
24
+ const type = this.asTypeToken(source.type);
25
+ if (type) target.tokenId = this.tokenRegistry.getTokenId(type) ?? this.tokenName(type);
26
+ for (const [key, value] of Object.entries(source)) {
27
+ if (key === "type" || value == null) continue;
28
+ if (Array.isArray(value)) {
29
+ const arr = target[key];
30
+ if (Array.isArray(arr)) value.forEach((item, i) => {
31
+ if (item && typeof item === "object" && arr[i] && typeof arr[i] === "object") this.injectTokenIds(arr[i], item);
32
+ });
33
+ continue;
34
+ }
35
+ if (typeof value === "object") {
36
+ const t = target[key];
37
+ if (t && typeof t === "object") this.injectTokenIds(t, value);
38
+ }
39
+ }
40
+ }
41
+ tokenName(token) {
42
+ if (typeof token === "function" && token.name) return token.name;
43
+ if (typeof token === "string") return token;
44
+ return "unknown";
45
+ }
46
+ asTypeToken(value) {
47
+ if (typeof value === "function" || typeof value === "string" || typeof value === "symbol") return value;
48
+ }
49
+ };
50
+
51
+ //#endregion
52
+ //#region src/persistedWorkflow/PersistedWorkflowSnapshotFactory.ts
53
+ var PersistedWorkflowSnapshotFactory = class {
54
+ configSerializer;
55
+ constructor(tokenRegistry) {
56
+ this.tokenRegistry = tokenRegistry;
57
+ this.configSerializer = new PersistedWorkflowConfigSerializer(tokenRegistry);
58
+ }
59
+ create(workflow) {
60
+ return {
61
+ id: workflow.id,
62
+ name: workflow.name,
63
+ workflowErrorHandlerConfigured: workflow.workflowErrorHandler !== void 0,
64
+ ...workflow.connections !== void 0 && workflow.connections.length > 0 ? { connections: workflow.connections } : {},
65
+ nodes: workflow.nodes.map((node) => {
66
+ const nodeTokenId = this.resolveTokenId(node.type);
67
+ const configTokenId = this.resolveTokenId(node.config.type);
68
+ return {
69
+ id: node.id,
70
+ kind: node.kind,
71
+ name: node.name,
72
+ nodeTokenId,
73
+ configTokenId,
74
+ tokenName: this.resolveTokenName(node.type),
75
+ configTokenName: this.resolveTokenName(node.config?.type),
76
+ config: this.configSerializer.create(node.config)
77
+ };
78
+ }),
79
+ edges: workflow.edges.map((edge) => ({
80
+ from: {
81
+ nodeId: edge.from.nodeId,
82
+ output: edge.from.output
83
+ },
84
+ to: {
85
+ nodeId: edge.to.nodeId,
86
+ input: edge.to.input
87
+ }
88
+ }))
89
+ };
90
+ }
91
+ resolveTokenId(token) {
92
+ const id = this.tokenRegistry.getTokenId(token);
93
+ if (id) return id;
94
+ return typeof token === "function" && token.name ? token.name : typeof token === "string" ? token : "unknown";
95
+ }
96
+ resolveTokenName(token) {
97
+ return typeof token === "function" && token.name ? token.name : typeof token === "string" ? token : void 0;
98
+ }
99
+ };
100
+
101
+ //#endregion
102
+ export { PersistedWorkflowSnapshotFactory as t };
103
+ //# sourceMappingURL=PersistedWorkflowSnapshotFactory-DJAwSuHU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersistedWorkflowSnapshotFactory-DJAwSuHU.js","names":["tokenRegistry: PersistedWorkflowTokenRegistryLike","fallback: Record<string, unknown>","tokenRegistry: PersistedWorkflowTokenRegistryLike"],"sources":["../src/persistedWorkflow/PersistedWorkflowConfigSerializer.ts","../src/persistedWorkflow/PersistedWorkflowSnapshotFactory.ts"],"sourcesContent":["import type { TypeToken } from \"../di\";\nimport type { NodeConfigBase, PersistedTokenId, PersistedWorkflowTokenRegistryLike } from \"../types\";\n\nexport class PersistedWorkflowConfigSerializer {\n constructor(private readonly tokenRegistry: PersistedWorkflowTokenRegistryLike) {}\n\n create(config: NodeConfigBase): unknown {\n try {\n const cloned = JSON.parse(JSON.stringify(config)) as Record<string, unknown>;\n this.injectTokenIds(cloned, config as unknown as Record<string, unknown>);\n return cloned;\n } catch {\n const fallback: Record<string, unknown> = {\n kind: config.kind,\n name: config.name,\n id: config.id,\n icon: config.icon,\n execution: config.execution,\n };\n this.injectTokenIds(fallback, config as unknown as Record<string, unknown>);\n return fallback;\n }\n }\n\n private injectTokenIds(target: Record<string, unknown>, source: Record<string, unknown>): void {\n const type = this.asTypeToken(source.type);\n if (type) {\n const tokenId = this.tokenRegistry.getTokenId(type) ?? this.tokenName(type);\n target.tokenId = tokenId;\n }\n for (const [key, value] of Object.entries(source)) {\n if (key === \"type\" || value == null) continue;\n if (Array.isArray(value)) {\n const arr = target[key];\n if (Array.isArray(arr)) {\n value.forEach((item, i) => {\n if (item && typeof item === \"object\" && arr[i] && typeof arr[i] === \"object\") {\n this.injectTokenIds(arr[i] as Record<string, unknown>, item as Record<string, unknown>);\n }\n });\n }\n continue;\n }\n if (typeof value === \"object\") {\n const t = target[key];\n if (t && typeof t === \"object\") {\n this.injectTokenIds(t as Record<string, unknown>, value as Record<string, unknown>);\n }\n }\n }\n }\n\n private tokenName(token: TypeToken<unknown>): PersistedTokenId {\n if (typeof token === \"function\" && token.name) return token.name as PersistedTokenId;\n if (typeof token === \"string\") return token as PersistedTokenId;\n return \"unknown\" as PersistedTokenId;\n }\n\n private asTypeToken(value: unknown): TypeToken<unknown> | undefined {\n if (typeof value === \"function\" || typeof value === \"string\" || typeof value === \"symbol\") {\n return value as TypeToken<unknown>;\n }\n return undefined;\n }\n}\n","import type { TypeToken } from \"../di\";\nimport type {\n PersistedTokenId,\n PersistedWorkflowSnapshot,\n PersistedWorkflowTokenRegistryLike,\n WorkflowDefinition,\n} from \"../types\";\n\nimport { PersistedWorkflowConfigSerializer } from \"./PersistedWorkflowConfigSerializer\";\n\nexport class PersistedWorkflowSnapshotFactory {\n private readonly configSerializer: PersistedWorkflowConfigSerializer;\n\n constructor(private readonly tokenRegistry: PersistedWorkflowTokenRegistryLike) {\n this.configSerializer = new PersistedWorkflowConfigSerializer(tokenRegistry);\n }\n\n create(workflow: WorkflowDefinition): PersistedWorkflowSnapshot {\n return {\n id: workflow.id,\n name: workflow.name,\n workflowErrorHandlerConfigured: workflow.workflowErrorHandler !== undefined,\n ...(workflow.connections !== undefined && workflow.connections.length > 0\n ? { connections: workflow.connections }\n : {}),\n nodes: workflow.nodes.map((node) => {\n const nodeTokenId = this.resolveTokenId(node.type);\n const configTokenId = this.resolveTokenId(node.config.type);\n return {\n id: node.id,\n kind: node.kind,\n name: node.name,\n nodeTokenId,\n configTokenId,\n tokenName: this.resolveTokenName(node.type),\n configTokenName: this.resolveTokenName(node.config?.type),\n config: this.configSerializer.create(node.config),\n };\n }),\n edges: workflow.edges.map((edge) => ({\n from: { nodeId: edge.from.nodeId, output: edge.from.output },\n to: { nodeId: edge.to.nodeId, input: edge.to.input },\n })),\n };\n }\n\n private resolveTokenId(token: TypeToken<unknown>): PersistedTokenId {\n const id = this.tokenRegistry.getTokenId(token);\n if (id) return id;\n const name = typeof token === \"function\" && token.name ? token.name : typeof token === \"string\" ? token : \"unknown\";\n return name as PersistedTokenId;\n }\n\n private resolveTokenName(token: TypeToken<unknown>): string | undefined {\n return typeof token === \"function\" && token.name ? token.name : typeof token === \"string\" ? token : undefined;\n }\n}\n"],"mappings":";AAGA,IAAa,oCAAb,MAA+C;CAC7C,YAAY,AAAiBA,eAAmD;EAAnD;;CAE7B,OAAO,QAAiC;AACtC,MAAI;GACF,MAAM,SAAS,KAAK,MAAM,KAAK,UAAU,OAAO,CAAC;AACjD,QAAK,eAAe,QAAQ,OAA6C;AACzE,UAAO;UACD;GACN,MAAMC,WAAoC;IACxC,MAAM,OAAO;IACb,MAAM,OAAO;IACb,IAAI,OAAO;IACX,MAAM,OAAO;IACb,WAAW,OAAO;IACnB;AACD,QAAK,eAAe,UAAU,OAA6C;AAC3E,UAAO;;;CAIX,AAAQ,eAAe,QAAiC,QAAuC;EAC7F,MAAM,OAAO,KAAK,YAAY,OAAO,KAAK;AAC1C,MAAI,KAEF,QAAO,UADS,KAAK,cAAc,WAAW,KAAK,IAAI,KAAK,UAAU,KAAK;AAG7E,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,EAAE;AACjD,OAAI,QAAQ,UAAU,SAAS,KAAM;AACrC,OAAI,MAAM,QAAQ,MAAM,EAAE;IACxB,MAAM,MAAM,OAAO;AACnB,QAAI,MAAM,QAAQ,IAAI,CACpB,OAAM,SAAS,MAAM,MAAM;AACzB,SAAI,QAAQ,OAAO,SAAS,YAAY,IAAI,MAAM,OAAO,IAAI,OAAO,SAClE,MAAK,eAAe,IAAI,IAA+B,KAAgC;MAEzF;AAEJ;;AAEF,OAAI,OAAO,UAAU,UAAU;IAC7B,MAAM,IAAI,OAAO;AACjB,QAAI,KAAK,OAAO,MAAM,SACpB,MAAK,eAAe,GAA8B,MAAiC;;;;CAM3F,AAAQ,UAAU,OAA6C;AAC7D,MAAI,OAAO,UAAU,cAAc,MAAM,KAAM,QAAO,MAAM;AAC5D,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,SAAO;;CAGT,AAAQ,YAAY,OAAgD;AAClE,MAAI,OAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,UAAU,SAC/E,QAAO;;;;;;AClDb,IAAa,mCAAb,MAA8C;CAC5C,AAAiB;CAEjB,YAAY,AAAiBC,eAAmD;EAAnD;AAC3B,OAAK,mBAAmB,IAAI,kCAAkC,cAAc;;CAG9E,OAAO,UAAyD;AAC9D,SAAO;GACL,IAAI,SAAS;GACb,MAAM,SAAS;GACf,gCAAgC,SAAS,yBAAyB;GAClE,GAAI,SAAS,gBAAgB,UAAa,SAAS,YAAY,SAAS,IACpE,EAAE,aAAa,SAAS,aAAa,GACrC,EAAE;GACN,OAAO,SAAS,MAAM,KAAK,SAAS;IAClC,MAAM,cAAc,KAAK,eAAe,KAAK,KAAK;IAClD,MAAM,gBAAgB,KAAK,eAAe,KAAK,OAAO,KAAK;AAC3D,WAAO;KACL,IAAI,KAAK;KACT,MAAM,KAAK;KACX,MAAM,KAAK;KACX;KACA;KACA,WAAW,KAAK,iBAAiB,KAAK,KAAK;KAC3C,iBAAiB,KAAK,iBAAiB,KAAK,QAAQ,KAAK;KACzD,QAAQ,KAAK,iBAAiB,OAAO,KAAK,OAAO;KAClD;KACD;GACF,OAAO,SAAS,MAAM,KAAK,UAAU;IACnC,MAAM;KAAE,QAAQ,KAAK,KAAK;KAAQ,QAAQ,KAAK,KAAK;KAAQ;IAC5D,IAAI;KAAE,QAAQ,KAAK,GAAG;KAAQ,OAAO,KAAK,GAAG;KAAO;IACrD,EAAE;GACJ;;CAGH,AAAQ,eAAe,OAA6C;EAClE,MAAM,KAAK,KAAK,cAAc,WAAW,MAAM;AAC/C,MAAI,GAAI,QAAO;AAEf,SADa,OAAO,UAAU,cAAc,MAAM,OAAO,MAAM,OAAO,OAAO,UAAU,WAAW,QAAQ;;CAI5G,AAAQ,iBAAiB,OAA+C;AACtE,SAAO,OAAO,UAAU,cAAc,MAAM,OAAO,MAAM,OAAO,OAAO,UAAU,WAAW,QAAQ"}
@@ -0,0 +1,131 @@
1
+
2
+ //#region src/engine/adapters/catalog/InMemoryWorkflowCatalog.ts
3
+ var InMemoryWorkflowCatalog = class {
4
+ workflowsById = /* @__PURE__ */ new Map();
5
+ setWorkflows(workflows) {
6
+ this.workflowsById.clear();
7
+ for (const workflow of workflows) this.workflowsById.set(workflow.id, workflow);
8
+ }
9
+ list() {
10
+ return [...this.workflowsById.values()];
11
+ }
12
+ get(workflowId) {
13
+ return this.workflowsById.get(workflowId);
14
+ }
15
+ };
16
+
17
+ //#endregion
18
+ //#region src/engine/materialization/PersistedWorkflowConfigSerializer.ts
19
+ var PersistedWorkflowConfigSerializer = class {
20
+ constructor(tokenRegistry) {
21
+ this.tokenRegistry = tokenRegistry;
22
+ }
23
+ create(config) {
24
+ try {
25
+ const cloned = JSON.parse(JSON.stringify(config));
26
+ this.injectTokenIds(cloned, config);
27
+ return cloned;
28
+ } catch {
29
+ const fallback = {
30
+ kind: config.kind,
31
+ name: config.name,
32
+ id: config.id,
33
+ icon: config.icon,
34
+ execution: config.execution
35
+ };
36
+ this.injectTokenIds(fallback, config);
37
+ return fallback;
38
+ }
39
+ }
40
+ injectTokenIds(target, source) {
41
+ const type = this.asTypeToken(source.type);
42
+ if (type) target.tokenId = this.tokenRegistry.getTokenId(type) ?? this.tokenName(type);
43
+ for (const [key, value] of Object.entries(source)) {
44
+ if (key === "type" || value == null) continue;
45
+ if (Array.isArray(value)) {
46
+ const arr = target[key];
47
+ if (Array.isArray(arr)) value.forEach((item, i) => {
48
+ if (item && typeof item === "object" && arr[i] && typeof arr[i] === "object") this.injectTokenIds(arr[i], item);
49
+ });
50
+ continue;
51
+ }
52
+ if (typeof value === "object") {
53
+ const t = target[key];
54
+ if (t && typeof t === "object") this.injectTokenIds(t, value);
55
+ }
56
+ }
57
+ }
58
+ tokenName(token) {
59
+ if (typeof token === "function" && token.name) return token.name;
60
+ if (typeof token === "string") return token;
61
+ return "unknown";
62
+ }
63
+ asTypeToken(value) {
64
+ if (typeof value === "function" || typeof value === "string" || typeof value === "symbol") return value;
65
+ }
66
+ };
67
+
68
+ //#endregion
69
+ //#region src/engine/materialization/PersistedWorkflowSnapshotFactory.ts
70
+ var PersistedWorkflowSnapshotFactory = class {
71
+ configSerializer;
72
+ constructor(tokenRegistry) {
73
+ this.tokenRegistry = tokenRegistry;
74
+ this.configSerializer = new PersistedWorkflowConfigSerializer(tokenRegistry);
75
+ }
76
+ create(workflow) {
77
+ return {
78
+ id: workflow.id,
79
+ name: workflow.name,
80
+ workflowErrorHandlerConfigured: workflow.workflowErrorHandler !== void 0,
81
+ ...workflow.connections !== void 0 && workflow.connections.length > 0 ? { connections: workflow.connections } : {},
82
+ nodes: workflow.nodes.map((node) => {
83
+ const nodeTokenId = this.resolveTokenId(node.type);
84
+ const configTokenId = this.resolveTokenId(node.config.type);
85
+ return {
86
+ id: node.id,
87
+ kind: node.kind,
88
+ name: node.name,
89
+ nodeTokenId,
90
+ configTokenId,
91
+ tokenName: this.resolveTokenName(node.type),
92
+ configTokenName: this.resolveTokenName(node.config?.type),
93
+ config: this.configSerializer.create(node.config)
94
+ };
95
+ }),
96
+ edges: workflow.edges.map((edge) => ({
97
+ from: {
98
+ nodeId: edge.from.nodeId,
99
+ output: edge.from.output
100
+ },
101
+ to: {
102
+ nodeId: edge.to.nodeId,
103
+ input: edge.to.input
104
+ }
105
+ }))
106
+ };
107
+ }
108
+ resolveTokenId(token) {
109
+ const id = this.tokenRegistry.getTokenId(token);
110
+ if (id) return id;
111
+ return typeof token === "function" && token.name ? token.name : typeof token === "string" ? token : "unknown";
112
+ }
113
+ resolveTokenName(token) {
114
+ return typeof token === "function" && token.name ? token.name : typeof token === "string" ? token : void 0;
115
+ }
116
+ };
117
+
118
+ //#endregion
119
+ Object.defineProperty(exports, 'InMemoryWorkflowCatalog', {
120
+ enumerable: true,
121
+ get: function () {
122
+ return InMemoryWorkflowCatalog;
123
+ }
124
+ });
125
+ Object.defineProperty(exports, 'PersistedWorkflowSnapshotFactory', {
126
+ enumerable: true,
127
+ get: function () {
128
+ return PersistedWorkflowSnapshotFactory;
129
+ }
130
+ });
131
+ //# sourceMappingURL=PersistedWorkflowSnapshotFactory-DSUjVCcf.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersistedWorkflowSnapshotFactory-DSUjVCcf.cjs","names":["tokenRegistry: PersistedWorkflowTokenRegistryLike","fallback: Record<string, unknown>","tokenRegistry: PersistedWorkflowTokenRegistryLike"],"sources":["../src/engine/adapters/catalog/InMemoryWorkflowCatalog.ts","../src/engine/materialization/PersistedWorkflowConfigSerializer.ts","../src/engine/materialization/PersistedWorkflowSnapshotFactory.ts"],"sourcesContent":["import type { WorkflowCatalog, WorkflowDefinition, WorkflowId } from \"../../../types\";\n\nexport class InMemoryWorkflowCatalog implements WorkflowCatalog {\n private readonly workflowsById = new Map<WorkflowId, WorkflowDefinition>();\n\n setWorkflows(workflows: ReadonlyArray<WorkflowDefinition>): void {\n this.workflowsById.clear();\n for (const workflow of workflows) {\n this.workflowsById.set(workflow.id, workflow);\n }\n }\n\n list(): ReadonlyArray<WorkflowDefinition> {\n return [...this.workflowsById.values()];\n }\n\n get(workflowId: WorkflowId): WorkflowDefinition | undefined {\n return this.workflowsById.get(workflowId);\n }\n}\n","import type { TypeToken } from \"../../di\";\nimport type { NodeConfigBase, PersistedTokenId, PersistedWorkflowTokenRegistryLike } from \"../../types\";\n\nexport class PersistedWorkflowConfigSerializer {\n constructor(private readonly tokenRegistry: PersistedWorkflowTokenRegistryLike) {}\n\n create(config: NodeConfigBase): unknown {\n try {\n const cloned = JSON.parse(JSON.stringify(config)) as Record<string, unknown>;\n this.injectTokenIds(cloned, config as unknown as Record<string, unknown>);\n return cloned;\n } catch {\n const fallback: Record<string, unknown> = {\n kind: config.kind,\n name: config.name,\n id: config.id,\n icon: config.icon,\n execution: config.execution,\n };\n this.injectTokenIds(fallback, config as unknown as Record<string, unknown>);\n return fallback;\n }\n }\n\n private injectTokenIds(target: Record<string, unknown>, source: Record<string, unknown>): void {\n const type = this.asTypeToken(source.type);\n if (type) {\n const tokenId = this.tokenRegistry.getTokenId(type) ?? this.tokenName(type);\n target.tokenId = tokenId;\n }\n for (const [key, value] of Object.entries(source)) {\n if (key === \"type\" || value == null) continue;\n if (Array.isArray(value)) {\n const arr = target[key];\n if (Array.isArray(arr)) {\n value.forEach((item, i) => {\n if (item && typeof item === \"object\" && arr[i] && typeof arr[i] === \"object\") {\n this.injectTokenIds(arr[i] as Record<string, unknown>, item as Record<string, unknown>);\n }\n });\n }\n continue;\n }\n if (typeof value === \"object\") {\n const t = target[key];\n if (t && typeof t === \"object\") {\n this.injectTokenIds(t as Record<string, unknown>, value as Record<string, unknown>);\n }\n }\n }\n }\n\n private tokenName(token: TypeToken<unknown>): PersistedTokenId {\n if (typeof token === \"function\" && token.name) return token.name as PersistedTokenId;\n if (typeof token === \"string\") return token as PersistedTokenId;\n return \"unknown\" as PersistedTokenId;\n }\n\n private asTypeToken(value: unknown): TypeToken<unknown> | undefined {\n if (typeof value === \"function\" || typeof value === \"string\" || typeof value === \"symbol\") {\n return value as TypeToken<unknown>;\n }\n return undefined;\n }\n}\n","import type { TypeToken } from \"../../di\";\nimport type {\n PersistedTokenId,\n PersistedWorkflowSnapshot,\n PersistedWorkflowTokenRegistryLike,\n WorkflowDefinition,\n} from \"../../types\";\n\nimport { PersistedWorkflowConfigSerializer } from \"./PersistedWorkflowConfigSerializer\";\n\nexport class PersistedWorkflowSnapshotFactory {\n private readonly configSerializer: PersistedWorkflowConfigSerializer;\n\n constructor(private readonly tokenRegistry: PersistedWorkflowTokenRegistryLike) {\n this.configSerializer = new PersistedWorkflowConfigSerializer(tokenRegistry);\n }\n\n create(workflow: WorkflowDefinition): PersistedWorkflowSnapshot {\n return {\n id: workflow.id,\n name: workflow.name,\n workflowErrorHandlerConfigured: workflow.workflowErrorHandler !== undefined,\n ...(workflow.connections !== undefined && workflow.connections.length > 0\n ? { connections: workflow.connections }\n : {}),\n nodes: workflow.nodes.map((node) => {\n const nodeTokenId = this.resolveTokenId(node.type);\n const configTokenId = this.resolveTokenId(node.config.type);\n return {\n id: node.id,\n kind: node.kind,\n name: node.name,\n nodeTokenId,\n configTokenId,\n tokenName: this.resolveTokenName(node.type),\n configTokenName: this.resolveTokenName(node.config?.type),\n config: this.configSerializer.create(node.config),\n };\n }),\n edges: workflow.edges.map((edge) => ({\n from: { nodeId: edge.from.nodeId, output: edge.from.output },\n to: { nodeId: edge.to.nodeId, input: edge.to.input },\n })),\n };\n }\n\n private resolveTokenId(token: TypeToken<unknown>): PersistedTokenId {\n const id = this.tokenRegistry.getTokenId(token);\n if (id) return id;\n const name = typeof token === \"function\" && token.name ? token.name : typeof token === \"string\" ? token : \"unknown\";\n return name as PersistedTokenId;\n }\n\n private resolveTokenName(token: TypeToken<unknown>): string | undefined {\n return typeof token === \"function\" && token.name ? token.name : typeof token === \"string\" ? token : undefined;\n }\n}\n"],"mappings":"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"}