@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,274 @@
1
+ import { B as NodeActivationId, Bt as BinaryStorageWriteResult, Cn as HttpMethod, D as BinaryAttachment, Dn as WebhookTriggerMatcher, En as WebhookInvocationMatch, Fn as CurrentStateExecutionRequest, Ft as BinaryBody, Gt as ExecutionContext, It as BinaryStorage, Kt as ExecutionContextFactory, Lt as BinaryStorageReadResult, On as WebhookTriggerResolution, P as Items, Qn as RunCurrentState, Rt as BinaryStorageStatResult, Sn as WorkflowSnapshotResolver, Vn as NodeInputsByPort, Wt as ExecutionBinaryService, X as NodeOutputs, Xt as NodeActivationContinuation, Yn as PersistedWorkflowTokenRegistryLike, an as NodeExecutionStatePublisher, at as RunDataSnapshot, cr as WebhookRunResult, dr as WorkflowExecutionRepository, er as RunExecutionOptions, ht as WorkflowDefinition, it as RunDataFactory, nn as NodeExecutionContext, or as RunStopCondition, ot as RunId, q as NodeId, qt as LiveWorkflowRepository, rr as RunResult, tn as NodeBinaryAttachmentService, tt as ParentExecutionRef, v as CredentialSessionService, vn as WorkflowRepository, xt as WorkflowId, z as MutableRunData, zr as RetryPolicySpec } from "./InMemoryLiveWorkflowRepository-D6eiiXxF.cjs";
2
+
3
+ //#region src/orchestration/Engine.d.ts
4
+ interface EngineTriggerRuntime {
5
+ startTriggers(): Promise<void>;
6
+ stop(): Promise<void>;
7
+ syncWorkflowTriggersForActivation(workflowId: WorkflowId): Promise<void>;
8
+ createTriggerTestItems(args: {
9
+ workflow: WorkflowDefinition;
10
+ nodeId: NodeId;
11
+ }): Promise<Items | undefined>;
12
+ }
13
+ interface EngineRunStartService {
14
+ runWorkflow(wf: WorkflowDefinition, startAt: NodeId, items: Items, parent?: ParentExecutionRef, executionOptions?: RunExecutionOptions, persistedStateOverrides?: Readonly<{
15
+ workflowSnapshot?: NonNullable<Awaited<ReturnType<WorkflowExecutionRepository["load"]>>>["workflowSnapshot"];
16
+ mutableState?: NonNullable<Awaited<ReturnType<WorkflowExecutionRepository["load"]>>>["mutableState"];
17
+ }>): Promise<RunResult>;
18
+ runWorkflowFromState(request: CurrentStateExecutionRequest): Promise<RunResult>;
19
+ }
20
+ interface EngineRunContinuationService {
21
+ markNodeRunning(args: {
22
+ runId: RunId;
23
+ activationId: NodeActivationId;
24
+ nodeId: NodeId;
25
+ inputsByPort: NodeInputsByPort;
26
+ }): Promise<void>;
27
+ resumeFromNodeResult(args: {
28
+ runId: RunId;
29
+ activationId: NodeActivationId;
30
+ nodeId: NodeId;
31
+ outputs: NodeOutputs;
32
+ }): Promise<RunResult>;
33
+ resumeFromNodeError(args: {
34
+ runId: RunId;
35
+ activationId: NodeActivationId;
36
+ nodeId: NodeId;
37
+ error: Error;
38
+ }): Promise<RunResult>;
39
+ resumeFromStepResult(args: {
40
+ runId: RunId;
41
+ activationId: NodeActivationId;
42
+ nodeId: NodeId;
43
+ outputs: NodeOutputs;
44
+ }): Promise<RunResult>;
45
+ resumeFromStepError(args: {
46
+ runId: RunId;
47
+ activationId: NodeActivationId;
48
+ nodeId: NodeId;
49
+ error: Error;
50
+ }): Promise<RunResult>;
51
+ waitForCompletion(runId: RunId): Promise<Extract<RunResult, {
52
+ status: "completed" | "failed";
53
+ }>>;
54
+ waitForWebhookResponse(runId: RunId): Promise<WebhookRunResult>;
55
+ }
56
+ interface EngineFacadeDeps {
57
+ liveWorkflowRepository: LiveWorkflowRepository;
58
+ tokenRegistry: PersistedWorkflowTokenRegistryLike;
59
+ webhookTriggerMatcher: WebhookTriggerMatcher;
60
+ workflowSnapshotResolver: WorkflowSnapshotResolver;
61
+ triggerRuntime: EngineTriggerRuntime;
62
+ runStartService: EngineRunStartService;
63
+ runContinuationService: EngineRunContinuationService;
64
+ }
65
+ /**
66
+ * Runtime facade for orchestration, continuation, triggers, and webhook routing.
67
+ * Prefer {@link import("../intents/RunIntentService").RunIntentService} for host/HTTP invocation boundaries.
68
+ * The class token is exported from `@codemation/core/bootstrap` (not the main `@codemation/core` barrel).
69
+ */
70
+ declare class Engine implements NodeActivationContinuation {
71
+ private readonly deps;
72
+ constructor(deps: EngineFacadeDeps);
73
+ loadWorkflows(workflows: ReadonlyArray<WorkflowDefinition>): void;
74
+ getTokenRegistry(): EngineFacadeDeps["tokenRegistry"];
75
+ resolveWorkflowSnapshot(args: {
76
+ workflowId: WorkflowId;
77
+ workflowSnapshot?: NonNullable<Awaited<ReturnType<WorkflowExecutionRepository["load"]>>>["workflowSnapshot"];
78
+ }): WorkflowDefinition | undefined;
79
+ startTriggers(): Promise<void>;
80
+ syncWorkflowTriggersForActivation(workflowId: WorkflowId): Promise<void>;
81
+ start(workflows: WorkflowDefinition[]): Promise<void>;
82
+ stop(): Promise<void>;
83
+ resolveWebhookTrigger(args: {
84
+ endpointPath: string;
85
+ method: HttpMethod;
86
+ }): WebhookTriggerResolution;
87
+ createTriggerTestItems(args: {
88
+ workflow: WorkflowDefinition;
89
+ nodeId: NodeId;
90
+ }): Promise<Items | undefined>;
91
+ runWorkflow(wf: WorkflowDefinition, startAt: NodeId, items: Items, parent?: ParentExecutionRef, executionOptions?: RunExecutionOptions, persistedStateOverrides?: Readonly<{
92
+ workflowSnapshot?: NonNullable<Awaited<ReturnType<WorkflowExecutionRepository["load"]>>>["workflowSnapshot"];
93
+ mutableState?: NonNullable<Awaited<ReturnType<WorkflowExecutionRepository["load"]>>>["mutableState"];
94
+ }>): Promise<RunResult>;
95
+ runWorkflowFromState(request: CurrentStateExecutionRequest): Promise<RunResult>;
96
+ markNodeRunning(args: {
97
+ runId: RunId;
98
+ activationId: NodeActivationId;
99
+ nodeId: NodeId;
100
+ inputsByPort: NodeInputsByPort;
101
+ }): Promise<void>;
102
+ resumeFromNodeResult(args: {
103
+ runId: RunId;
104
+ activationId: NodeActivationId;
105
+ nodeId: NodeId;
106
+ outputs: NodeOutputs;
107
+ }): Promise<RunResult>;
108
+ resumeFromNodeError(args: {
109
+ runId: RunId;
110
+ activationId: NodeActivationId;
111
+ nodeId: NodeId;
112
+ error: Error;
113
+ }): Promise<RunResult>;
114
+ resumeFromStepResult(args: {
115
+ runId: RunId;
116
+ activationId: NodeActivationId;
117
+ nodeId: NodeId;
118
+ outputs: NodeOutputs;
119
+ }): Promise<RunResult>;
120
+ resumeFromStepError(args: {
121
+ runId: RunId;
122
+ activationId: NodeActivationId;
123
+ nodeId: NodeId;
124
+ error: Error;
125
+ }): Promise<RunResult>;
126
+ waitForCompletion(runId: RunId): Promise<Extract<RunResult, {
127
+ status: "completed" | "failed";
128
+ }>>;
129
+ waitForWebhookResponse(runId: RunId): Promise<WebhookRunResult>;
130
+ }
131
+ //#endregion
132
+ //#region src/execution/CredentialResolverFactory.d.ts
133
+ declare class CredentialResolverFactory {
134
+ private readonly credentialSessions;
135
+ constructor(credentialSessions: CredentialSessionService);
136
+ create(workflowId: WorkflowId, nodeId: NodeId, config?: NodeExecutionContext["config"]): NodeExecutionContext["getCredential"];
137
+ }
138
+ //#endregion
139
+ //#region src/execution/asyncSleeper.types.d.ts
140
+ interface AsyncSleeper {
141
+ sleep(ms: number): Promise<void>;
142
+ }
143
+ //#endregion
144
+ //#region src/execution/DefaultAsyncSleeper.d.ts
145
+ declare class DefaultAsyncSleeper implements AsyncSleeper {
146
+ sleep(ms: number): Promise<void>;
147
+ }
148
+ //#endregion
149
+ //#region src/execution/DefaultExecutionContextFactory.d.ts
150
+ declare class DefaultExecutionContextFactory implements ExecutionContextFactory {
151
+ private readonly binaryStorage;
152
+ private readonly currentDate;
153
+ constructor(binaryStorage?: BinaryStorage, currentDate?: () => Date);
154
+ create(args: {
155
+ runId: RunId;
156
+ workflowId: WorkflowId;
157
+ parent?: ParentExecutionRef;
158
+ subworkflowDepth: number;
159
+ engineMaxNodeActivations: number;
160
+ engineMaxSubworkflowDepth: number;
161
+ data: RunDataSnapshot;
162
+ nodeState?: NodeExecutionStatePublisher;
163
+ getCredential<TSession = unknown>(slotKey: string): Promise<TSession>;
164
+ }): ExecutionContext;
165
+ }
166
+ //#endregion
167
+ //#region src/execution/InProcessRetryRunner.d.ts
168
+ declare class InProcessRetryRunner {
169
+ private readonly sleeper;
170
+ constructor(sleeper: AsyncSleeper);
171
+ run<T>(policy: RetryPolicySpec | undefined, work: () => Promise<T>): Promise<T>;
172
+ private static delayAfterFailureMs;
173
+ private static normalizePolicy;
174
+ private static assertPositiveInt;
175
+ private static assertNonNegativeFinite;
176
+ private static assertMultiplier;
177
+ }
178
+ //#endregion
179
+ //#region src/binaries/UnavailableBinaryStorage.d.ts
180
+ declare class UnavailableBinaryStorage implements BinaryStorage {
181
+ readonly driverName = "unavailable";
182
+ write(): Promise<never>;
183
+ openReadStream(): Promise<undefined>;
184
+ stat(): Promise<{
185
+ exists: false;
186
+ }>;
187
+ delete(): Promise<void>;
188
+ }
189
+ //#endregion
190
+ //#region src/binaries/DefaultExecutionBinaryServiceFactory.d.ts
191
+ declare class DefaultExecutionBinaryService implements ExecutionBinaryService {
192
+ private readonly storage;
193
+ private readonly workflowId;
194
+ private readonly runId;
195
+ private readonly now;
196
+ constructor(storage: BinaryStorage, workflowId: WorkflowId, runId: RunId, now: () => Date);
197
+ forNode(args: {
198
+ nodeId: NodeId;
199
+ activationId: NodeActivationId;
200
+ }): NodeBinaryAttachmentService;
201
+ openReadStream(attachment: BinaryAttachment): Promise<BinaryStorageReadResult | undefined>;
202
+ }
203
+ //#endregion
204
+ //#region src/runStorage/InMemoryBinaryStorageRegistry.d.ts
205
+ declare class InMemoryBinaryStorage implements BinaryStorage {
206
+ readonly driverName = "memory";
207
+ private readonly values;
208
+ write(args: {
209
+ storageKey: string;
210
+ body: BinaryBody;
211
+ }): Promise<BinaryStorageWriteResult>;
212
+ openReadStream(storageKey: string): Promise<BinaryStorageReadResult | undefined>;
213
+ stat(storageKey: string): Promise<BinaryStorageStatResult>;
214
+ delete(storageKey: string): Promise<void>;
215
+ }
216
+ //#endregion
217
+ //#region src/runStorage/InMemoryRunDataFactory.d.ts
218
+ declare class InMemoryRunDataFactory implements RunDataFactory {
219
+ create(initial?: Record<NodeId, NodeOutputs>): MutableRunData;
220
+ }
221
+ //#endregion
222
+ //#region src/runtime/RunIntentService.d.ts
223
+ type StartWorkflowIntent = {
224
+ workflow: WorkflowDefinition;
225
+ startAt?: string;
226
+ items: Items;
227
+ parent?: CurrentStateExecutionRequest["parent"];
228
+ executionOptions?: RunExecutionOptions;
229
+ workflowSnapshot?: CurrentStateExecutionRequest["workflowSnapshot"];
230
+ mutableState?: CurrentStateExecutionRequest["mutableState"];
231
+ currentState?: RunCurrentState;
232
+ stopCondition?: RunStopCondition;
233
+ reset?: CurrentStateExecutionRequest["reset"];
234
+ };
235
+ type RerunFromNodeIntent = {
236
+ workflow: WorkflowDefinition;
237
+ nodeId: NodeId;
238
+ currentState: RunCurrentState;
239
+ items?: Items;
240
+ parent?: CurrentStateExecutionRequest["parent"];
241
+ executionOptions?: RunExecutionOptions;
242
+ workflowSnapshot?: CurrentStateExecutionRequest["workflowSnapshot"];
243
+ mutableState?: CurrentStateExecutionRequest["mutableState"];
244
+ };
245
+ type MatchedWebhookRunIntent = {
246
+ endpointPath: string;
247
+ method: HttpMethod;
248
+ requestItem: Items[number];
249
+ };
250
+ type WebhookMatchRunIntent = {
251
+ match: WebhookInvocationMatch;
252
+ requestItem: Items[number];
253
+ };
254
+ declare class RunIntentService {
255
+ private readonly engine;
256
+ private readonly workflowRepository;
257
+ constructor(engine: Engine, workflowRepository: WorkflowRepository);
258
+ startWorkflow(args: StartWorkflowIntent): Promise<RunResult>;
259
+ rerunFromNode(args: RerunFromNodeIntent): Promise<RunResult>;
260
+ resolveWebhookTrigger(args: {
261
+ endpointPath: string;
262
+ method: HttpMethod;
263
+ }): WebhookTriggerResolution;
264
+ runMatchedWebhook(args: MatchedWebhookRunIntent): Promise<WebhookRunResult>;
265
+ runWebhookMatch(args: WebhookMatchRunIntent): Promise<WebhookRunResult>;
266
+ /**
267
+ * Webhook-triggered runs always force inline execution first.
268
+ * This is the highest-precedence scheduler override: it wins over node hints and container defaults.
269
+ */
270
+ private createWebhookExecutionOptions;
271
+ }
272
+ //#endregion
273
+ export { UnavailableBinaryStorage as a, DefaultAsyncSleeper as c, Engine as d, DefaultExecutionBinaryService as i, AsyncSleeper as l, InMemoryRunDataFactory as n, InProcessRetryRunner as o, InMemoryBinaryStorage as r, DefaultExecutionContextFactory as s, RunIntentService as t, CredentialResolverFactory as u };
274
+ //# sourceMappingURL=RunIntentService-NKobsfMQ.d.cts.map
@@ -0,0 +1,22 @@
1
+ import { Jn as PersistedWorkflowSnapshotNode, V as NodeConfigBase, Yn as PersistedWorkflowTokenRegistryLike, ht as WorkflowDefinition, qn as PersistedWorkflowSnapshot } from "./InMemoryWorkflowCatalog-C_ACeLyW.cjs";
2
+
3
+ //#region src/workflowSnapshots/WorkflowSnapshotCodec.d.ts
4
+ declare class WorkflowSnapshotCodec {
5
+ private readonly tokenRegistry;
6
+ constructor(tokenRegistry: PersistedWorkflowTokenRegistryLike);
7
+ create(workflow: WorkflowDefinition): PersistedWorkflowSnapshot;
8
+ hydrate(snapshotNode: PersistedWorkflowSnapshotNode, liveConfig: NodeConfigBase): NodeConfigBase;
9
+ private serializeConfig;
10
+ private injectTokenIds;
11
+ private mergeValue;
12
+ private mergeNestedValue;
13
+ private restoreNonSerializableProperties;
14
+ private restoreTypeProperty;
15
+ private resolveTokenId;
16
+ private resolveTokenName;
17
+ private asTypeToken;
18
+ private asRecord;
19
+ }
20
+ //#endregion
21
+ export { WorkflowSnapshotCodec as t };
22
+ //# sourceMappingURL=WorkflowSnapshotCodec-C3fuuS_R.d.cts.map
@@ -0,0 +1,123 @@
1
+ //#region src/workflowSnapshots/WorkflowSnapshotCodec.ts
2
+ var WorkflowSnapshotCodec = class {
3
+ constructor(tokenRegistry) {
4
+ this.tokenRegistry = tokenRegistry;
5
+ }
6
+ create(workflow) {
7
+ return {
8
+ id: workflow.id,
9
+ name: workflow.name,
10
+ workflowErrorHandlerConfigured: workflow.workflowErrorHandler !== void 0,
11
+ ...workflow.connections !== void 0 && workflow.connections.length > 0 ? { connections: workflow.connections } : {},
12
+ nodes: workflow.nodes.map((node) => ({
13
+ id: node.id,
14
+ kind: node.kind,
15
+ name: node.name,
16
+ nodeTokenId: this.resolveTokenId(node.type),
17
+ configTokenId: this.resolveTokenId(node.config.type),
18
+ tokenName: this.resolveTokenName(node.type),
19
+ configTokenName: this.resolveTokenName(node.config.type),
20
+ config: this.serializeConfig(node.config)
21
+ })),
22
+ edges: workflow.edges.map((edge) => ({
23
+ from: {
24
+ nodeId: edge.from.nodeId,
25
+ output: edge.from.output
26
+ },
27
+ to: {
28
+ nodeId: edge.to.nodeId,
29
+ input: edge.to.input
30
+ }
31
+ }))
32
+ };
33
+ }
34
+ hydrate(snapshotNode, liveConfig) {
35
+ const hydrated = this.mergeValue(liveConfig, snapshotNode.config);
36
+ const configToken = this.tokenRegistry.resolve(snapshotNode.configTokenId);
37
+ Object.assign(hydrated, {
38
+ type: configToken ?? liveConfig.type,
39
+ kind: snapshotNode.kind
40
+ });
41
+ if (snapshotNode.name && !("name" in hydrated && hydrated.name)) Object.assign(hydrated, { name: snapshotNode.name });
42
+ return hydrated;
43
+ }
44
+ serializeConfig(config) {
45
+ try {
46
+ const cloned = JSON.parse(JSON.stringify(config));
47
+ this.injectTokenIds(cloned, config);
48
+ return cloned;
49
+ } catch {
50
+ const fallback = {
51
+ kind: config.kind,
52
+ name: config.name,
53
+ id: config.id,
54
+ icon: config.icon,
55
+ execution: config.execution
56
+ };
57
+ this.injectTokenIds(fallback, config);
58
+ return fallback;
59
+ }
60
+ }
61
+ injectTokenIds(target, source) {
62
+ const type = this.asTypeToken(source.type);
63
+ if (type) target.tokenId = this.tokenRegistry.getTokenId(type) ?? this.resolveTokenName(type) ?? "unknown";
64
+ for (const [key, value] of Object.entries(source)) {
65
+ if (key === "type" || value == null) continue;
66
+ if (Array.isArray(value)) {
67
+ const targetArray = target[key];
68
+ if (Array.isArray(targetArray)) value.forEach((item, index) => {
69
+ if (item && typeof item === "object" && targetArray[index] && typeof targetArray[index] === "object") this.injectTokenIds(targetArray[index], item);
70
+ });
71
+ continue;
72
+ }
73
+ if (typeof value === "object") {
74
+ const targetValue = target[key];
75
+ if (targetValue && typeof targetValue === "object") this.injectTokenIds(targetValue, value);
76
+ }
77
+ }
78
+ }
79
+ mergeValue(liveValue, snapshotValue) {
80
+ const liveRecord = this.asRecord(liveValue);
81
+ const snapshotRecord = this.asRecord(snapshotValue);
82
+ const hydrated = Object.create(liveValue && typeof liveValue === "object" ? Object.getPrototypeOf(liveValue) ?? Object.prototype : Object.prototype);
83
+ for (const [key, value] of Object.entries(snapshotRecord)) hydrated[key] = this.mergeNestedValue(liveRecord[key], value);
84
+ this.restoreNonSerializableProperties(liveRecord, hydrated);
85
+ this.restoreTypeProperty(hydrated);
86
+ return hydrated;
87
+ }
88
+ mergeNestedValue(liveValue, snapshotValue) {
89
+ if (Array.isArray(snapshotValue)) {
90
+ const liveArray = Array.isArray(liveValue) ? liveValue : [];
91
+ return snapshotValue.map((entry, index) => this.mergeNestedValue(liveArray[index], entry));
92
+ }
93
+ if (snapshotValue && typeof snapshotValue === "object") return this.mergeValue(liveValue, snapshotValue);
94
+ return snapshotValue;
95
+ }
96
+ restoreNonSerializableProperties(liveRecord, hydrated) {
97
+ for (const [key, value] of Object.entries(liveRecord)) if (typeof value === "function" || typeof value === "symbol") hydrated[key] = value;
98
+ }
99
+ restoreTypeProperty(record) {
100
+ const tokenId = typeof record.tokenId === "string" ? record.tokenId : void 0;
101
+ if (!tokenId) return;
102
+ const type = this.tokenRegistry.resolve(tokenId);
103
+ if (type) record.type = type;
104
+ }
105
+ resolveTokenId(token) {
106
+ return this.tokenRegistry.getTokenId(token) ?? this.resolveTokenName(token) ?? "unknown";
107
+ }
108
+ resolveTokenName(token) {
109
+ if (typeof token === "function" && token.name) return token.name;
110
+ if (typeof token === "string") return token;
111
+ }
112
+ asTypeToken(value) {
113
+ if (typeof value === "function" || typeof value === "string" || typeof value === "symbol") return value;
114
+ }
115
+ asRecord(value) {
116
+ if (!value || typeof value !== "object" || Array.isArray(value)) return {};
117
+ return { ...value };
118
+ }
119
+ };
120
+
121
+ //#endregion
122
+ export { WorkflowSnapshotCodec as t };
123
+ //# sourceMappingURL=WorkflowSnapshotCodec-CUudUo6f.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowSnapshotCodec-CUudUo6f.js","names":["tokenRegistry: PersistedWorkflowTokenRegistryLike","fallback: Record<string, unknown>"],"sources":["../src/workflowSnapshots/WorkflowSnapshotCodec.ts"],"sourcesContent":["import type { TypeToken } from \"../di\";\nimport type {\n NodeConfigBase,\n PersistedTokenId,\n PersistedWorkflowSnapshot,\n PersistedWorkflowSnapshotNode,\n PersistedWorkflowTokenRegistryLike,\n WorkflowDefinition,\n} from \"../types\";\n\nexport class WorkflowSnapshotCodec {\n constructor(private readonly tokenRegistry: PersistedWorkflowTokenRegistryLike) {}\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 id: node.id,\n kind: node.kind,\n name: node.name,\n nodeTokenId: this.resolveTokenId(node.type),\n configTokenId: this.resolveTokenId(node.config.type),\n tokenName: this.resolveTokenName(node.type),\n configTokenName: this.resolveTokenName(node.config.type),\n config: this.serializeConfig(node.config),\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 hydrate(snapshotNode: PersistedWorkflowSnapshotNode, liveConfig: NodeConfigBase): NodeConfigBase {\n const hydrated = this.mergeValue(liveConfig, snapshotNode.config);\n const configToken = this.tokenRegistry.resolve(snapshotNode.configTokenId);\n Object.assign(hydrated, {\n type: configToken ?? liveConfig.type,\n kind: snapshotNode.kind,\n });\n if (snapshotNode.name && !(\"name\" in hydrated && hydrated.name)) {\n Object.assign(hydrated, { name: snapshotNode.name });\n }\n return hydrated as unknown as NodeConfigBase;\n }\n\n private serializeConfig(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 target.tokenId = this.tokenRegistry.getTokenId(type) ?? this.resolveTokenName(type) ?? \"unknown\";\n }\n for (const [key, value] of Object.entries(source)) {\n if (key === \"type\" || value == null) {\n continue;\n }\n if (Array.isArray(value)) {\n const targetArray = target[key];\n if (Array.isArray(targetArray)) {\n value.forEach((item, index) => {\n if (item && typeof item === \"object\" && targetArray[index] && typeof targetArray[index] === \"object\") {\n this.injectTokenIds(targetArray[index] as Record<string, unknown>, item as Record<string, unknown>);\n }\n });\n }\n continue;\n }\n if (typeof value === \"object\") {\n const targetValue = target[key];\n if (targetValue && typeof targetValue === \"object\") {\n this.injectTokenIds(targetValue as Record<string, unknown>, value as Record<string, unknown>);\n }\n }\n }\n }\n\n private mergeValue(liveValue: unknown, snapshotValue: unknown): Record<string, unknown> {\n const liveRecord = this.asRecord(liveValue);\n const snapshotRecord = this.asRecord(snapshotValue);\n const hydrated = Object.create(\n liveValue && typeof liveValue === \"object\"\n ? (Object.getPrototypeOf(liveValue) ?? Object.prototype)\n : Object.prototype,\n ) as Record<string, unknown>;\n\n for (const [key, value] of Object.entries(snapshotRecord)) {\n hydrated[key] = this.mergeNestedValue(liveRecord[key], value);\n }\n\n this.restoreNonSerializableProperties(liveRecord, hydrated);\n this.restoreTypeProperty(hydrated);\n return hydrated;\n }\n\n private mergeNestedValue(liveValue: unknown, snapshotValue: unknown): unknown {\n if (Array.isArray(snapshotValue)) {\n const liveArray = Array.isArray(liveValue) ? liveValue : [];\n return snapshotValue.map((entry, index) => this.mergeNestedValue(liveArray[index], entry));\n }\n if (snapshotValue && typeof snapshotValue === \"object\") {\n return this.mergeValue(liveValue, snapshotValue);\n }\n return snapshotValue;\n }\n\n private restoreNonSerializableProperties(\n liveRecord: Record<string, unknown>,\n hydrated: Record<string, unknown>,\n ): void {\n for (const [key, value] of Object.entries(liveRecord)) {\n if (typeof value === \"function\" || typeof value === \"symbol\") {\n hydrated[key] = value;\n }\n }\n }\n\n private restoreTypeProperty(record: Record<string, unknown>): void {\n const tokenId = typeof record.tokenId === \"string\" ? record.tokenId : undefined;\n if (!tokenId) {\n return;\n }\n const type = this.tokenRegistry.resolve(tokenId as PersistedTokenId);\n if (type) {\n record.type = type;\n }\n }\n\n private resolveTokenId(token: TypeToken<unknown>): PersistedTokenId {\n return (this.tokenRegistry.getTokenId(token) ?? this.resolveTokenName(token) ?? \"unknown\") as PersistedTokenId;\n }\n\n private resolveTokenName(token: TypeToken<unknown>): string | undefined {\n if (typeof token === \"function\" && token.name) {\n return token.name;\n }\n if (typeof token === \"string\") {\n return token;\n }\n return undefined;\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 private asRecord(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n return { ...(value as Record<string, unknown>) };\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+
2
+ //#region src/workflowSnapshots/WorkflowSnapshotCodec.ts
3
+ var WorkflowSnapshotCodec = class {
4
+ constructor(tokenRegistry) {
5
+ this.tokenRegistry = tokenRegistry;
6
+ }
7
+ create(workflow) {
8
+ return {
9
+ id: workflow.id,
10
+ name: workflow.name,
11
+ workflowErrorHandlerConfigured: workflow.workflowErrorHandler !== void 0,
12
+ ...workflow.connections !== void 0 && workflow.connections.length > 0 ? { connections: workflow.connections } : {},
13
+ nodes: workflow.nodes.map((node) => ({
14
+ id: node.id,
15
+ kind: node.kind,
16
+ name: node.name,
17
+ nodeTokenId: this.resolveTokenId(node.type),
18
+ configTokenId: this.resolveTokenId(node.config.type),
19
+ tokenName: this.resolveTokenName(node.type),
20
+ configTokenName: this.resolveTokenName(node.config.type),
21
+ config: this.serializeConfig(node.config)
22
+ })),
23
+ edges: workflow.edges.map((edge) => ({
24
+ from: {
25
+ nodeId: edge.from.nodeId,
26
+ output: edge.from.output
27
+ },
28
+ to: {
29
+ nodeId: edge.to.nodeId,
30
+ input: edge.to.input
31
+ }
32
+ }))
33
+ };
34
+ }
35
+ hydrate(snapshotNode, liveConfig) {
36
+ const hydrated = this.mergeValue(liveConfig, snapshotNode.config);
37
+ const configToken = this.tokenRegistry.resolve(snapshotNode.configTokenId);
38
+ Object.assign(hydrated, {
39
+ type: configToken ?? liveConfig.type,
40
+ kind: snapshotNode.kind
41
+ });
42
+ if (snapshotNode.name && !("name" in hydrated && hydrated.name)) Object.assign(hydrated, { name: snapshotNode.name });
43
+ return hydrated;
44
+ }
45
+ serializeConfig(config) {
46
+ try {
47
+ const cloned = JSON.parse(JSON.stringify(config));
48
+ this.injectTokenIds(cloned, config);
49
+ return cloned;
50
+ } catch {
51
+ const fallback = {
52
+ kind: config.kind,
53
+ name: config.name,
54
+ id: config.id,
55
+ icon: config.icon,
56
+ execution: config.execution
57
+ };
58
+ this.injectTokenIds(fallback, config);
59
+ return fallback;
60
+ }
61
+ }
62
+ injectTokenIds(target, source) {
63
+ const type = this.asTypeToken(source.type);
64
+ if (type) target.tokenId = this.tokenRegistry.getTokenId(type) ?? this.resolveTokenName(type) ?? "unknown";
65
+ for (const [key, value] of Object.entries(source)) {
66
+ if (key === "type" || value == null) continue;
67
+ if (Array.isArray(value)) {
68
+ const targetArray = target[key];
69
+ if (Array.isArray(targetArray)) value.forEach((item, index) => {
70
+ if (item && typeof item === "object" && targetArray[index] && typeof targetArray[index] === "object") this.injectTokenIds(targetArray[index], item);
71
+ });
72
+ continue;
73
+ }
74
+ if (typeof value === "object") {
75
+ const targetValue = target[key];
76
+ if (targetValue && typeof targetValue === "object") this.injectTokenIds(targetValue, value);
77
+ }
78
+ }
79
+ }
80
+ mergeValue(liveValue, snapshotValue) {
81
+ const liveRecord = this.asRecord(liveValue);
82
+ const snapshotRecord = this.asRecord(snapshotValue);
83
+ const hydrated = Object.create(liveValue && typeof liveValue === "object" ? Object.getPrototypeOf(liveValue) ?? Object.prototype : Object.prototype);
84
+ for (const [key, value] of Object.entries(snapshotRecord)) hydrated[key] = this.mergeNestedValue(liveRecord[key], value);
85
+ this.restoreNonSerializableProperties(liveRecord, hydrated);
86
+ this.restoreTypeProperty(hydrated);
87
+ return hydrated;
88
+ }
89
+ mergeNestedValue(liveValue, snapshotValue) {
90
+ if (Array.isArray(snapshotValue)) {
91
+ const liveArray = Array.isArray(liveValue) ? liveValue : [];
92
+ return snapshotValue.map((entry, index) => this.mergeNestedValue(liveArray[index], entry));
93
+ }
94
+ if (snapshotValue && typeof snapshotValue === "object") return this.mergeValue(liveValue, snapshotValue);
95
+ return snapshotValue;
96
+ }
97
+ restoreNonSerializableProperties(liveRecord, hydrated) {
98
+ for (const [key, value] of Object.entries(liveRecord)) if (typeof value === "function" || typeof value === "symbol") hydrated[key] = value;
99
+ }
100
+ restoreTypeProperty(record) {
101
+ const tokenId = typeof record.tokenId === "string" ? record.tokenId : void 0;
102
+ if (!tokenId) return;
103
+ const type = this.tokenRegistry.resolve(tokenId);
104
+ if (type) record.type = type;
105
+ }
106
+ resolveTokenId(token) {
107
+ return this.tokenRegistry.getTokenId(token) ?? this.resolveTokenName(token) ?? "unknown";
108
+ }
109
+ resolveTokenName(token) {
110
+ if (typeof token === "function" && token.name) return token.name;
111
+ if (typeof token === "string") return token;
112
+ }
113
+ asTypeToken(value) {
114
+ if (typeof value === "function" || typeof value === "string" || typeof value === "symbol") return value;
115
+ }
116
+ asRecord(value) {
117
+ if (!value || typeof value !== "object" || Array.isArray(value)) return {};
118
+ return { ...value };
119
+ }
120
+ };
121
+
122
+ //#endregion
123
+ Object.defineProperty(exports, 'WorkflowSnapshotCodec', {
124
+ enumerable: true,
125
+ get: function () {
126
+ return WorkflowSnapshotCodec;
127
+ }
128
+ });
129
+ //# sourceMappingURL=WorkflowSnapshotCodec-CuCPQZTc.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowSnapshotCodec-CuCPQZTc.cjs","names":["tokenRegistry: PersistedWorkflowTokenRegistryLike","fallback: Record<string, unknown>"],"sources":["../src/workflowSnapshots/WorkflowSnapshotCodec.ts"],"sourcesContent":["import type { TypeToken } from \"../di\";\nimport type {\n NodeConfigBase,\n PersistedTokenId,\n PersistedWorkflowSnapshot,\n PersistedWorkflowSnapshotNode,\n PersistedWorkflowTokenRegistryLike,\n WorkflowDefinition,\n} from \"../types\";\n\nexport class WorkflowSnapshotCodec {\n constructor(private readonly tokenRegistry: PersistedWorkflowTokenRegistryLike) {}\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 id: node.id,\n kind: node.kind,\n name: node.name,\n nodeTokenId: this.resolveTokenId(node.type),\n configTokenId: this.resolveTokenId(node.config.type),\n tokenName: this.resolveTokenName(node.type),\n configTokenName: this.resolveTokenName(node.config.type),\n config: this.serializeConfig(node.config),\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 hydrate(snapshotNode: PersistedWorkflowSnapshotNode, liveConfig: NodeConfigBase): NodeConfigBase {\n const hydrated = this.mergeValue(liveConfig, snapshotNode.config);\n const configToken = this.tokenRegistry.resolve(snapshotNode.configTokenId);\n Object.assign(hydrated, {\n type: configToken ?? liveConfig.type,\n kind: snapshotNode.kind,\n });\n if (snapshotNode.name && !(\"name\" in hydrated && hydrated.name)) {\n Object.assign(hydrated, { name: snapshotNode.name });\n }\n return hydrated as unknown as NodeConfigBase;\n }\n\n private serializeConfig(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 target.tokenId = this.tokenRegistry.getTokenId(type) ?? this.resolveTokenName(type) ?? \"unknown\";\n }\n for (const [key, value] of Object.entries(source)) {\n if (key === \"type\" || value == null) {\n continue;\n }\n if (Array.isArray(value)) {\n const targetArray = target[key];\n if (Array.isArray(targetArray)) {\n value.forEach((item, index) => {\n if (item && typeof item === \"object\" && targetArray[index] && typeof targetArray[index] === \"object\") {\n this.injectTokenIds(targetArray[index] as Record<string, unknown>, item as Record<string, unknown>);\n }\n });\n }\n continue;\n }\n if (typeof value === \"object\") {\n const targetValue = target[key];\n if (targetValue && typeof targetValue === \"object\") {\n this.injectTokenIds(targetValue as Record<string, unknown>, value as Record<string, unknown>);\n }\n }\n }\n }\n\n private mergeValue(liveValue: unknown, snapshotValue: unknown): Record<string, unknown> {\n const liveRecord = this.asRecord(liveValue);\n const snapshotRecord = this.asRecord(snapshotValue);\n const hydrated = Object.create(\n liveValue && typeof liveValue === \"object\"\n ? (Object.getPrototypeOf(liveValue) ?? Object.prototype)\n : Object.prototype,\n ) as Record<string, unknown>;\n\n for (const [key, value] of Object.entries(snapshotRecord)) {\n hydrated[key] = this.mergeNestedValue(liveRecord[key], value);\n }\n\n this.restoreNonSerializableProperties(liveRecord, hydrated);\n this.restoreTypeProperty(hydrated);\n return hydrated;\n }\n\n private mergeNestedValue(liveValue: unknown, snapshotValue: unknown): unknown {\n if (Array.isArray(snapshotValue)) {\n const liveArray = Array.isArray(liveValue) ? liveValue : [];\n return snapshotValue.map((entry, index) => this.mergeNestedValue(liveArray[index], entry));\n }\n if (snapshotValue && typeof snapshotValue === \"object\") {\n return this.mergeValue(liveValue, snapshotValue);\n }\n return snapshotValue;\n }\n\n private restoreNonSerializableProperties(\n liveRecord: Record<string, unknown>,\n hydrated: Record<string, unknown>,\n ): void {\n for (const [key, value] of Object.entries(liveRecord)) {\n if (typeof value === \"function\" || typeof value === \"symbol\") {\n hydrated[key] = value;\n }\n }\n }\n\n private restoreTypeProperty(record: Record<string, unknown>): void {\n const tokenId = typeof record.tokenId === \"string\" ? record.tokenId : undefined;\n if (!tokenId) {\n return;\n }\n const type = this.tokenRegistry.resolve(tokenId as PersistedTokenId);\n if (type) {\n record.type = type;\n }\n }\n\n private resolveTokenId(token: TypeToken<unknown>): PersistedTokenId {\n return (this.tokenRegistry.getTokenId(token) ?? this.resolveTokenName(token) ?? \"unknown\") as PersistedTokenId;\n }\n\n private resolveTokenName(token: TypeToken<unknown>): string | undefined {\n if (typeof token === \"function\" && token.name) {\n return token.name;\n }\n if (typeof token === \"string\") {\n return token;\n }\n return undefined;\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 private asRecord(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n return { ...(value as Record<string, unknown>) };\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { V as NodeConfigBase, Xn as PersistedWorkflowSnapshotNode, Yn as PersistedWorkflowSnapshot, Zn as PersistedWorkflowTokenRegistryLike, ht as WorkflowDefinition } from "./InMemoryLiveWorkflowRepository-D7l8cjdZ.cjs";
2
+
3
+ //#region src/workflowSnapshots/WorkflowSnapshotCodec.d.ts
4
+ declare class WorkflowSnapshotCodec {
5
+ private readonly tokenRegistry;
6
+ constructor(tokenRegistry: PersistedWorkflowTokenRegistryLike);
7
+ create(workflow: WorkflowDefinition): PersistedWorkflowSnapshot;
8
+ hydrate(snapshotNode: PersistedWorkflowSnapshotNode, liveConfig: NodeConfigBase): NodeConfigBase;
9
+ private serializeConfig;
10
+ private injectTokenIds;
11
+ private mergeValue;
12
+ private mergeNestedValue;
13
+ private restoreNonSerializableProperties;
14
+ private restoreTypeProperty;
15
+ private resolveTokenId;
16
+ private resolveTokenName;
17
+ private asTypeToken;
18
+ private asRecord;
19
+ }
20
+ //#endregion
21
+ export { WorkflowSnapshotCodec as t };
22
+ //# sourceMappingURL=WorkflowSnapshotCodec-DLiXQNvV.d.cts.map
@@ -0,0 +1,22 @@
1
+ import { Jn as PersistedWorkflowSnapshotNode, V as NodeConfigBase, Yn as PersistedWorkflowTokenRegistryLike, ht as WorkflowDefinition, qn as PersistedWorkflowSnapshot } from "./InMemoryLiveWorkflowRepository-D6eiiXxF.cjs";
2
+
3
+ //#region src/workflowSnapshots/WorkflowSnapshotCodec.d.ts
4
+ declare class WorkflowSnapshotCodec {
5
+ private readonly tokenRegistry;
6
+ constructor(tokenRegistry: PersistedWorkflowTokenRegistryLike);
7
+ create(workflow: WorkflowDefinition): PersistedWorkflowSnapshot;
8
+ hydrate(snapshotNode: PersistedWorkflowSnapshotNode, liveConfig: NodeConfigBase): NodeConfigBase;
9
+ private serializeConfig;
10
+ private injectTokenIds;
11
+ private mergeValue;
12
+ private mergeNestedValue;
13
+ private restoreNonSerializableProperties;
14
+ private restoreTypeProperty;
15
+ private resolveTokenId;
16
+ private resolveTokenName;
17
+ private asTypeToken;
18
+ private asRecord;
19
+ }
20
+ //#endregion
21
+ export { WorkflowSnapshotCodec as t };
22
+ //# sourceMappingURL=WorkflowSnapshotCodec-DNtdrZ7l.d.cts.map
@@ -0,0 +1,22 @@
1
+ import { Jn as PersistedWorkflowSnapshotNode, V as NodeConfigBase, Yn as PersistedWorkflowTokenRegistryLike, ht as WorkflowDefinition, qn as PersistedWorkflowSnapshot } from "./InMemoryWorkflowCatalog-DS4-eX6i.cjs";
2
+
3
+ //#region src/workflowSnapshots/WorkflowSnapshotCodec.d.ts
4
+ declare class WorkflowSnapshotCodec {
5
+ private readonly tokenRegistry;
6
+ constructor(tokenRegistry: PersistedWorkflowTokenRegistryLike);
7
+ create(workflow: WorkflowDefinition): PersistedWorkflowSnapshot;
8
+ hydrate(snapshotNode: PersistedWorkflowSnapshotNode, liveConfig: NodeConfigBase): NodeConfigBase;
9
+ private serializeConfig;
10
+ private injectTokenIds;
11
+ private mergeValue;
12
+ private mergeNestedValue;
13
+ private restoreNonSerializableProperties;
14
+ private restoreTypeProperty;
15
+ private resolveTokenId;
16
+ private resolveTokenName;
17
+ private asTypeToken;
18
+ private asRecord;
19
+ }
20
+ //#endregion
21
+ export { WorkflowSnapshotCodec as t };
22
+ //# sourceMappingURL=WorkflowSnapshotCodec-DTdWkoW_.d.cts.map