@codemation/core 0.0.5 → 0.0.11

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 (215) hide show
  1. package/dist/{InMemoryLiveWorkflowRepository-DL7LmC9S.d.ts → InMemoryLiveWorkflowRepository-DxoualoC.d.ts} +6 -2
  2. package/dist/{InMemoryLiveWorkflowRepository-D6eiiXxF.d.cts → InMemoryLiveWorkflowRepository-orY1VsWG.d.cts} +6 -2
  3. package/dist/{RunIntentService-NKobsfMQ.d.cts → RunIntentService-ByuUYsAL.d.cts} +8 -3
  4. package/dist/{RunIntentService-BFVbsOcg.js → RunIntentService-CYnn140t.js} +9 -4
  5. package/dist/RunIntentService-CYnn140t.js.map +1 -0
  6. package/dist/{RunIntentService-2ivFmNQh.cjs → RunIntentService-DlQH5eZ2.cjs} +9 -4
  7. package/dist/RunIntentService-DlQH5eZ2.cjs.map +1 -0
  8. package/dist/{WorkflowSnapshotCodec-DTdWkoW_.d.cts → WorkflowSnapshotCodec-DSEzKyt3.d.cts} +2 -2
  9. package/dist/bootstrap/index.cjs +133 -4
  10. package/dist/bootstrap/index.cjs.map +1 -1
  11. package/dist/bootstrap/index.d.cts +4 -3
  12. package/dist/bootstrap/index.d.ts +3 -2
  13. package/dist/bootstrap/index.js +133 -4
  14. package/dist/bootstrap/index.js.map +1 -1
  15. package/dist/{index-9g6Pfe9Z.d.ts → index-CTjfVHJh.d.ts} +8 -3
  16. package/dist/index.cjs +1 -1
  17. package/dist/index.d.cts +3 -3
  18. package/dist/index.d.ts +3 -3
  19. package/dist/index.js +1 -1
  20. package/dist/testing.d.cts +2 -2
  21. package/dist/testing.d.ts +1 -1
  22. package/package.json +6 -1
  23. package/src/bootstrap/runtime/EngineRuntimeRegistrar.ts +10 -2
  24. package/src/contracts/runtimeTypes.ts +5 -0
  25. package/src/execution/NodeActivationRequestComposer.ts +15 -4
  26. package/src/orchestration/Engine.ts +12 -1
  27. package/src/orchestration/NodeExecutionRequestHandlerService.ts +179 -0
  28. package/src/runtime/EngineFactory.ts +13 -0
  29. package/dist/EngineExecutionLimitsPolicy-8MEFIYx1.d.cts +0 -160
  30. package/dist/EngineExecutionLimitsPolicy-BWAXW9D6.d.cts +0 -160
  31. package/dist/EngineExecutionLimitsPolicy-Bp8PS1Ss.d.cts +0 -159
  32. package/dist/EngineExecutionLimitsPolicy-CLxcN-D2.d.ts +0 -159
  33. package/dist/EngineExecutionLimitsPolicy-DZXuix51.d.ts +0 -160
  34. package/dist/EngineExecutionLimitsPolicy-Gfz6ngFd.d.ts +0 -160
  35. package/dist/EngineFactory-CBnntY3J.cjs +0 -3152
  36. package/dist/EngineFactory-CBnntY3J.cjs.map +0 -1
  37. package/dist/EngineFactory-Cwn3R2YA.js +0 -3087
  38. package/dist/EngineFactory-Cwn3R2YA.js.map +0 -1
  39. package/dist/EngineFactory-DWCnNocp.js +0 -3063
  40. package/dist/EngineFactory-DWCnNocp.js.map +0 -1
  41. package/dist/EngineFactory-DhPFou4p.cjs +0 -3188
  42. package/dist/EngineFactory-DhPFou4p.cjs.map +0 -1
  43. package/dist/EngineFactory-l_9xmBtv.cjs +0 -3190
  44. package/dist/EngineFactory-l_9xmBtv.cjs.map +0 -1
  45. package/dist/EngineFactory-w-aOWuqh.js +0 -3089
  46. package/dist/EngineFactory-w-aOWuqh.js.map +0 -1
  47. package/dist/InMemoryLiveWorkflowRepository-1J9MHN_I.js +0 -18
  48. package/dist/InMemoryLiveWorkflowRepository-1J9MHN_I.js.map +0 -1
  49. package/dist/InMemoryLiveWorkflowRepository-CULNqv96.d.ts +0 -1300
  50. package/dist/InMemoryLiveWorkflowRepository-D7l8cjdZ.d.cts +0 -1130
  51. package/dist/InMemoryLiveWorkflowRepository-jnv-OnOP.d.ts +0 -1300
  52. package/dist/InMemoryLiveWorkflowRepository-xny1_Z6i.cjs +0 -24
  53. package/dist/InMemoryLiveWorkflowRepository-xny1_Z6i.cjs.map +0 -1
  54. package/dist/InMemoryLiveWorkflowRepository-xr7b4kvi.d.ts +0 -1338
  55. package/dist/InMemoryWorkflowCatalog-BIdFpwbK.d.ts +0 -1205
  56. package/dist/InMemoryWorkflowCatalog-BW00_3N3.d.cts +0 -12
  57. package/dist/InMemoryWorkflowCatalog-BiYHGoPw.cjs +0 -24
  58. package/dist/InMemoryWorkflowCatalog-BiYHGoPw.cjs.map +0 -1
  59. package/dist/InMemoryWorkflowCatalog-BrG0ApMO.d.cts +0 -1115
  60. package/dist/InMemoryWorkflowCatalog-BzrAr--Y.js +0 -139
  61. package/dist/InMemoryWorkflowCatalog-BzrAr--Y.js.map +0 -1
  62. package/dist/InMemoryWorkflowCatalog-C-EJlJ7y.d.cts +0 -1120
  63. package/dist/InMemoryWorkflowCatalog-C4482bpw.cjs +0 -24
  64. package/dist/InMemoryWorkflowCatalog-C4482bpw.cjs.map +0 -1
  65. package/dist/InMemoryWorkflowCatalog-CZ0kZpOv.d.ts +0 -1289
  66. package/dist/InMemoryWorkflowCatalog-C_ACeLyW.d.cts +0 -1119
  67. package/dist/InMemoryWorkflowCatalog-CiHWIu5E.d.cts +0 -12
  68. package/dist/InMemoryWorkflowCatalog-CkH7gkya.js +0 -18
  69. package/dist/InMemoryWorkflowCatalog-CkH7gkya.js.map +0 -1
  70. package/dist/InMemoryWorkflowCatalog-CnpZVJM9.d.ts +0 -1205
  71. package/dist/InMemoryWorkflowCatalog-Cu68S8YR.js +0 -18
  72. package/dist/InMemoryWorkflowCatalog-Cu68S8YR.js.map +0 -1
  73. package/dist/InMemoryWorkflowCatalog-D2w9nMj2.cjs +0 -151
  74. package/dist/InMemoryWorkflowCatalog-D2w9nMj2.cjs.map +0 -1
  75. package/dist/InMemoryWorkflowCatalog-D5eMxEf7.js +0 -18
  76. package/dist/InMemoryWorkflowCatalog-D5eMxEf7.js.map +0 -1
  77. package/dist/InMemoryWorkflowCatalog-D5nCp2yZ.d.ts +0 -1267
  78. package/dist/InMemoryWorkflowCatalog-DIq0bjqN.d.ts +0 -12
  79. package/dist/InMemoryWorkflowCatalog-DLgaEaw_.d.ts +0 -1288
  80. package/dist/InMemoryWorkflowCatalog-DNBFdK-x.d.cts +0 -1120
  81. package/dist/InMemoryWorkflowCatalog-DQBkCzb7.cjs +0 -24
  82. package/dist/InMemoryWorkflowCatalog-DQBkCzb7.cjs.map +0 -1
  83. package/dist/InMemoryWorkflowCatalog-DS4-eX6i.d.cts +0 -1118
  84. package/dist/InMemoryWorkflowCatalog-DdVfy8MY.d.ts +0 -12
  85. package/dist/InMemoryWorkflowCatalog-DeVZu3g8.d.ts +0 -12
  86. package/dist/InMemoryWorkflowCatalog-GxkQjvt5.d.ts +0 -1200
  87. package/dist/InMemoryWorkflowCatalog-qaVRn1Lc.d.cts +0 -1115
  88. package/dist/InMemoryWorkflowCatalog-z1aIT4TC.d.cts +0 -12
  89. package/dist/InMemoryWorkflowRegistry-BBuOovLL.d.ts +0 -1007
  90. package/dist/InMemoryWorkflowRegistry-BIFnSl3k.d.ts +0 -1201
  91. package/dist/InMemoryWorkflowRegistry-BnGilthz.d.ts +0 -1137
  92. package/dist/InMemoryWorkflowRegistry-CEp5I8No.d.ts +0 -1146
  93. package/dist/InMemoryWorkflowRegistry-CHyMB9jW.d.cts +0 -976
  94. package/dist/InMemoryWorkflowRegistry-CUN7K86m.d.cts +0 -1061
  95. package/dist/InMemoryWorkflowRegistry-CVfHyELh.d.cts +0 -971
  96. package/dist/InMemoryWorkflowRegistry-CXXJrwAr.d.cts +0 -1052
  97. package/dist/InMemoryWorkflowRegistry-DDGfPTJy.d.ts +0 -1013
  98. package/dist/InMemoryWorkflowRegistry-DnYSOoT5.d.ts +0 -1120
  99. package/dist/InMemoryWorkflowRegistry-Dp5GiFF2.d.cts +0 -1035
  100. package/dist/InMemoryWorkflowRegistry-DypDBeOw.d.cts +0 -1116
  101. package/dist/InMemoryWorkflowRegistry-SzwJCAxT.d.ts +0 -1012
  102. package/dist/InMemoryWorkflowRegistry-jupvqyGc.d.cts +0 -977
  103. package/dist/InMemoryWorkflowRegistry-rAdKVWYT.d.ts +0 -1117
  104. package/dist/InProcessRetryRunner-BBNPkXjy.d.cts +0 -292
  105. package/dist/PersistedWorkflowSnapshotFactory-7RkOL3Kg.d.ts +0 -14
  106. package/dist/PersistedWorkflowSnapshotFactory-BmANa46W.cjs +0 -141
  107. package/dist/PersistedWorkflowSnapshotFactory-BmANa46W.cjs.map +0 -1
  108. package/dist/PersistedWorkflowSnapshotFactory-Bwb_etSt.js +0 -118
  109. package/dist/PersistedWorkflowSnapshotFactory-Bwb_etSt.js.map +0 -1
  110. package/dist/PersistedWorkflowSnapshotFactory-CRkKGNV6.js +0 -123
  111. package/dist/PersistedWorkflowSnapshotFactory-CRkKGNV6.js.map +0 -1
  112. package/dist/PersistedWorkflowSnapshotFactory-CZolnGy5.js +0 -101
  113. package/dist/PersistedWorkflowSnapshotFactory-CZolnGy5.js.map +0 -1
  114. package/dist/PersistedWorkflowSnapshotFactory-Ca_oysOv.cjs +0 -131
  115. package/dist/PersistedWorkflowSnapshotFactory-Ca_oysOv.cjs.map +0 -1
  116. package/dist/PersistedWorkflowSnapshotFactory-CqIcShnX.js +0 -103
  117. package/dist/PersistedWorkflowSnapshotFactory-CqIcShnX.js.map +0 -1
  118. package/dist/PersistedWorkflowSnapshotFactory-D-tBk4_G.js +0 -119
  119. package/dist/PersistedWorkflowSnapshotFactory-D-tBk4_G.js.map +0 -1
  120. package/dist/PersistedWorkflowSnapshotFactory-D4cXl2e2.cjs +0 -131
  121. package/dist/PersistedWorkflowSnapshotFactory-D4cXl2e2.cjs.map +0 -1
  122. package/dist/PersistedWorkflowSnapshotFactory-DINoP12r.cjs +0 -131
  123. package/dist/PersistedWorkflowSnapshotFactory-DINoP12r.cjs.map +0 -1
  124. package/dist/PersistedWorkflowSnapshotFactory-DJAwSuHU.js +0 -103
  125. package/dist/PersistedWorkflowSnapshotFactory-DJAwSuHU.js.map +0 -1
  126. package/dist/PersistedWorkflowSnapshotFactory-DSUjVCcf.cjs +0 -131
  127. package/dist/PersistedWorkflowSnapshotFactory-DSUjVCcf.cjs.map +0 -1
  128. package/dist/PersistedWorkflowSnapshotFactory-DdHuhkDb.cjs +0 -107
  129. package/dist/PersistedWorkflowSnapshotFactory-DdHuhkDb.cjs.map +0 -1
  130. package/dist/PersistedWorkflowSnapshotFactory-Dqc6NHis.js +0 -119
  131. package/dist/PersistedWorkflowSnapshotFactory-Dqc6NHis.js.map +0 -1
  132. package/dist/PersistedWorkflowSnapshotFactory-Dxa2dSrw.cjs +0 -130
  133. package/dist/PersistedWorkflowSnapshotFactory-Dxa2dSrw.cjs.map +0 -1
  134. package/dist/PersistedWorkflowSnapshotFactory-Ep79Ah1G.js +0 -123
  135. package/dist/PersistedWorkflowSnapshotFactory-Ep79Ah1G.js.map +0 -1
  136. package/dist/PersistedWorkflowSnapshotFactory-GyLfRuiJ.js +0 -119
  137. package/dist/PersistedWorkflowSnapshotFactory-GyLfRuiJ.js.map +0 -1
  138. package/dist/PersistedWorkflowSnapshotFactory-HTpBsBzn.js +0 -102
  139. package/dist/PersistedWorkflowSnapshotFactory-HTpBsBzn.js.map +0 -1
  140. package/dist/PersistedWorkflowSnapshotFactory-LVmaaf3t.cjs +0 -141
  141. package/dist/PersistedWorkflowSnapshotFactory-LVmaaf3t.cjs.map +0 -1
  142. package/dist/PersistedWorkflowSnapshotFactory-PZCpo2ZS.js +0 -119
  143. package/dist/PersistedWorkflowSnapshotFactory-PZCpo2ZS.js.map +0 -1
  144. package/dist/PersistedWorkflowSnapshotFactory-UjQ1SJev.cjs +0 -109
  145. package/dist/PersistedWorkflowSnapshotFactory-UjQ1SJev.cjs.map +0 -1
  146. package/dist/PersistedWorkflowSnapshotFactory-Y8kCrhcy.cjs +0 -109
  147. package/dist/PersistedWorkflowSnapshotFactory-Y8kCrhcy.cjs.map +0 -1
  148. package/dist/PersistedWorkflowSnapshotFactory-Z_nB-fmB.cjs +0 -108
  149. package/dist/PersistedWorkflowSnapshotFactory-Z_nB-fmB.cjs.map +0 -1
  150. package/dist/RunIntentService-1EE6N8ZL.cjs +0 -963
  151. package/dist/RunIntentService-1EE6N8ZL.cjs.map +0 -1
  152. package/dist/RunIntentService-2ivFmNQh.cjs.map +0 -1
  153. package/dist/RunIntentService-B0sUL5q-.js +0 -761
  154. package/dist/RunIntentService-B0sUL5q-.js.map +0 -1
  155. package/dist/RunIntentService-BFVbsOcg.js.map +0 -1
  156. package/dist/RunIntentService-BsBOwpVN.cjs +0 -1051
  157. package/dist/RunIntentService-BsBOwpVN.cjs.map +0 -1
  158. package/dist/RunIntentService-CSk3ETyn.js +0 -858
  159. package/dist/RunIntentService-CSk3ETyn.js.map +0 -1
  160. package/dist/RunIntentService-Ckn3u3tA.d.cts +0 -326
  161. package/dist/RunIntentService-DEo6GTTo.d.cts +0 -289
  162. package/dist/RunIntentService-DKrGtL0B.js +0 -782
  163. package/dist/RunIntentService-DKrGtL0B.js.map +0 -1
  164. package/dist/RunIntentService-DNOJc1R7.cjs +0 -942
  165. package/dist/RunIntentService-DNOJc1R7.cjs.map +0 -1
  166. package/dist/RunIntentService-Dq3pV53j.d.cts +0 -289
  167. package/dist/WorkflowSnapshotCodec-C3fuuS_R.d.cts +0 -22
  168. package/dist/WorkflowSnapshotCodec-CUudUo6f.js +0 -123
  169. package/dist/WorkflowSnapshotCodec-CUudUo6f.js.map +0 -1
  170. package/dist/WorkflowSnapshotCodec-CuCPQZTc.cjs +0 -129
  171. package/dist/WorkflowSnapshotCodec-CuCPQZTc.cjs.map +0 -1
  172. package/dist/WorkflowSnapshotCodec-DLiXQNvV.d.cts +0 -22
  173. package/dist/WorkflowSnapshotCodec-DNtdrZ7l.d.cts +0 -22
  174. package/dist/credentialTypes-B5h3dI7r.d.cts +0 -1107
  175. package/dist/credentialTypes-B9okPCVo.d.cts +0 -963
  176. package/dist/credentialTypes-BFL70rgZ.d.cts +0 -964
  177. package/dist/credentialTypes-BGkh1O07.d.ts +0 -1010
  178. package/dist/credentialTypes-BNLi4Q7u.d.ts +0 -1030
  179. package/dist/credentialTypes-CeSoZGj3.d.cts +0 -994
  180. package/dist/credentialTypes-CpHc32Ig.d.cts +0 -984
  181. package/dist/credentialTypes-D0m7MQQl.d.cts +0 -1107
  182. package/dist/credentialTypes-D4nL2sUd.d.ts +0 -1000
  183. package/dist/credentialTypes-DBYK2Qbu.d.ts +0 -999
  184. package/dist/credentialTypes-DMJVy0r1.d.ts +0 -1000
  185. package/dist/credentialTypes-DhUAjYQp.d.ts +0 -1020
  186. package/dist/credentialTypes-gGITj5KL.d.cts +0 -964
  187. package/dist/credentialTypes-r3KVBJBE.d.cts +0 -974
  188. package/dist/diTokens-ClO27tjK.cjs +0 -34
  189. package/dist/diTokens-ClO27tjK.cjs.map +0 -1
  190. package/dist/diTokens-CoHBkwG6.js +0 -28
  191. package/dist/diTokens-CoHBkwG6.js.map +0 -1
  192. package/dist/index-6Doxmfnd.d.ts +0 -857
  193. package/dist/index-AZ72Ej-K.d.ts +0 -920
  194. package/dist/index-BEk9V-q-.d.ts +0 -667
  195. package/dist/index-Bjt7_7oS.d.ts +0 -1192
  196. package/dist/index-CFGxsYXy.d.ts +0 -708
  197. package/dist/index-C_u8xFgn.d.ts +0 -690
  198. package/dist/index-CpbfsvOJ.d.ts +0 -1192
  199. package/dist/index-CsReNJN_.d.ts +0 -859
  200. package/dist/index-D5iNnXaW.d.ts +0 -667
  201. package/dist/index-DD_Eft1q.d.ts +0 -708
  202. package/dist/index-DiSYUe0G.d.ts +0 -1192
  203. package/dist/index-gIcH60sp.d.ts +0 -674
  204. package/dist/runtime-BIvd-1JA.cjs +0 -4112
  205. package/dist/runtime-BIvd-1JA.cjs.map +0 -1
  206. package/dist/runtime-D3eWKSQK.cjs +0 -3986
  207. package/dist/runtime-D3eWKSQK.cjs.map +0 -1
  208. package/dist/runtime-Dvp4xAjg.js +0 -3799
  209. package/dist/runtime-Dvp4xAjg.js.map +0 -1
  210. package/dist/runtime-vc76SSAa.js +0 -3685
  211. package/dist/runtime-vc76SSAa.js.map +0 -1
  212. package/dist/runtimeTypes-BK0b8SaG.d.cts +0 -884
  213. package/dist/runtimeTypes-CoYZkYQq.d.cts +0 -851
  214. package/dist/runtimeTypes-D-Pm0Uas.d.cts +0 -849
  215. package/dist/types-Cb5UK7Y6.d.ts +0 -857
@@ -1,761 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- import "reflect-metadata";
3
- import { container, delay, inject, injectAll, injectable, instanceCachingFactory, instancePerContainerCachingFactory, predicateAwareClassFactory, registry, singleton } from "tsyringe";
4
- import { ReadableStream } from "node:stream/web";
5
-
6
- //#region src/workflow/definition/ConnectionNodeIdFactory.ts
7
- /**
8
- * Deterministic ids for workflow connection-owned child nodes (LLM slot, tools, etc.).
9
- * These are stable across loads.
10
- */
11
- var ConnectionNodeIdFactory = class {
12
- static connectionSegment = "__conn__";
13
- static languageModelConnectionNodeId(parentNodeId) {
14
- return `${parentNodeId}${this.connectionSegment}llm`;
15
- }
16
- static toolConnectionNodeId(parentNodeId, toolName) {
17
- const normalized = this.normalizeToolName(toolName);
18
- return `${parentNodeId}${this.connectionSegment}tool${this.connectionSegment}${normalized}`;
19
- }
20
- static isLanguageModelConnectionNodeId(nodeId) {
21
- return nodeId.endsWith(`${this.connectionSegment}llm`);
22
- }
23
- static isToolConnectionNodeId(nodeId) {
24
- return nodeId.includes(`${this.connectionSegment}tool${this.connectionSegment}`);
25
- }
26
- /** True when `nodeId` is a connection-owned child of `parentNodeId` (LLM or tool slot). */
27
- static isConnectionOwnedDescendantOf(parentNodeId, nodeId) {
28
- return nodeId.startsWith(`${parentNodeId}${this.connectionSegment}`);
29
- }
30
- /** Normalizes a tool display name to a stable id segment. */
31
- static normalizeToolName(toolName) {
32
- return toolName.trim().toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "") || "tool";
33
- }
34
- };
35
-
36
- //#endregion
37
- //#region src/workflow/definition/WorkflowExecutableNodeClassifier.ts
38
- /**
39
- * Derives which workflow nodes participate in the main execution graph vs connection-only children.
40
- */
41
- var WorkflowExecutableNodeClassifier = class {
42
- connectionOwnedIds;
43
- constructor(workflow) {
44
- this.connectionOwnedIds = this.collectConnectionOwnedIds(workflow);
45
- }
46
- isConnectionOwnedNodeId(nodeId) {
47
- return this.connectionOwnedIds.has(nodeId);
48
- }
49
- isExecutableNodeId(nodeId) {
50
- return !this.connectionOwnedIds.has(nodeId);
51
- }
52
- filterExecutableNodeDefinitions(nodes) {
53
- return nodes.filter((n) => this.isExecutableNodeId(n.id));
54
- }
55
- collectConnectionOwnedIds(workflow) {
56
- const ids = /* @__PURE__ */ new Set();
57
- for (const connection of workflow.connections ?? []) for (const childId of connection.childNodeIds) ids.add(childId);
58
- return ids;
59
- }
60
- /**
61
- * Resolves the default start node: first trigger, else first executable node with no incoming edges from executable nodes.
62
- */
63
- findDefaultExecutableStartNodeId(workflow) {
64
- const firstTrigger = workflow.nodes.find((n) => n.kind === "trigger" && this.isExecutableNodeId(n.id))?.id;
65
- if (firstTrigger) return firstTrigger;
66
- const incoming = /* @__PURE__ */ new Map();
67
- for (const n of workflow.nodes) if (this.isExecutableNodeId(n.id)) incoming.set(n.id, 0);
68
- for (const e of workflow.edges) {
69
- if (!this.isExecutableNodeId(e.from.nodeId) || !this.isExecutableNodeId(e.to.nodeId)) continue;
70
- incoming.set(e.to.nodeId, (incoming.get(e.to.nodeId) ?? 0) + 1);
71
- }
72
- return workflow.nodes.find((n) => this.isExecutableNodeId(n.id) && (incoming.get(n.id) ?? 0) === 0)?.id ?? workflow.nodes.find((n) => this.isExecutableNodeId(n.id))?.id ?? (() => {
73
- throw new Error(`Workflow ${workflow.id} has no executable nodes`);
74
- })();
75
- }
76
- firstExecutableNodeIdInDefinitionOrder(workflow) {
77
- return workflow.nodes.find((n) => this.isExecutableNodeId(n.id))?.id;
78
- }
79
- lastExecutableNodeIdInDefinitionOrder(workflow) {
80
- for (let i = workflow.nodes.length - 1; i >= 0; i--) {
81
- const n = workflow.nodes[i];
82
- if (this.isExecutableNodeId(n.id)) return n.id;
83
- }
84
- throw new Error(`Workflow ${workflow.id} has no executable nodes`);
85
- }
86
- };
87
-
88
- //#endregion
89
- //#region src/workflow/definition/WorkflowExecutableNodeClassifierFactory.ts
90
- function createWorkflowExecutableNodeClassifier(workflow) {
91
- return new WorkflowExecutableNodeClassifier(workflow);
92
- }
93
-
94
- //#endregion
95
- //#region src/diTokens/index.ts
96
- const CoreTokens = {
97
- PersistedWorkflowTokenRegistry: Symbol.for("codemation.core.PersistedWorkflowTokenRegistry"),
98
- CredentialSessionService: Symbol.for("codemation.core.CredentialSessionService"),
99
- CredentialTypeRegistry: Symbol.for("codemation.core.CredentialTypeRegistry"),
100
- WorkflowRunnerService: Symbol.for("codemation.core.WorkflowRunnerService"),
101
- WorkflowRunnerResolver: Symbol.for("codemation.core.WorkflowRunnerResolver"),
102
- WorkflowCatalog: Symbol.for("codemation.core.WorkflowCatalog"),
103
- WorkflowRepository: Symbol.for("codemation.core.WorkflowRepository"),
104
- ServiceContainer: Symbol.for("codemation.core.ServiceContainer"),
105
- NodeResolver: Symbol.for("codemation.core.NodeResolver"),
106
- RunIdFactory: Symbol.for("codemation.core.RunIdFactory"),
107
- ActivationIdFactory: Symbol.for("codemation.core.ActivationIdFactory"),
108
- RunStateStore: Symbol.for("codemation.core.RunStateStore"),
109
- TriggerSetupStateStore: Symbol.for("codemation.core.TriggerSetupStateStore"),
110
- NodeActivationScheduler: Symbol.for("codemation.core.NodeActivationScheduler"),
111
- RunDataFactory: Symbol.for("codemation.core.RunDataFactory"),
112
- ExecutionContextFactory: Symbol.for("codemation.core.ExecutionContextFactory"),
113
- RunEventBus: Symbol.for("codemation.core.RunEventBus"),
114
- BinaryStorage: Symbol.for("codemation.core.BinaryStorage"),
115
- WebhookBasePath: Symbol.for("codemation.core.WebhookBasePath"),
116
- EngineExecutionLimitsPolicy: Symbol.for("codemation.core.EngineExecutionLimitsPolicy"),
117
- WorkflowActivationPolicy: Symbol.for("codemation.core.WorkflowActivationPolicy")
118
- };
119
-
120
- //#endregion
121
- //#region src/events/NodeEventPublisher.ts
122
- /** Publishes node lifecycle snapshots onto the run {@link RunEventBus}. */
123
- var NodeEventPublisher = class {
124
- constructor(eventBus) {
125
- this.eventBus = eventBus;
126
- }
127
- async publish(kind, snapshot) {
128
- if (!this.eventBus) return;
129
- await this.eventBus.publish({
130
- kind,
131
- runId: snapshot.runId,
132
- workflowId: snapshot.workflowId,
133
- parent: snapshot.parent,
134
- at: snapshot.updatedAt,
135
- snapshot
136
- });
137
- }
138
- };
139
-
140
- //#endregion
141
- //#region src/runtime-types/persistedRuntimeTypeModelRegistry.ts
142
- const persistedRuntimeTypeMetadataKey = Symbol.for("codemation.core.persistedRuntimeTypeMetadata");
143
- var PersistedRuntimeTypeDecoratorDefaults = class {
144
- static appPackageName = "app";
145
- static apply(options) {
146
- return {
147
- ...options,
148
- packageName: options.packageName ?? this.appPackageName
149
- };
150
- }
151
- };
152
-
153
- //#endregion
154
- //#region src/runtime-types/PersistedRuntimeTypeNameResolver.ts
155
- var PersistedRuntimeTypeNameResolver = class {
156
- static resolve(target, override) {
157
- const resolved = override ?? target.name;
158
- if (!resolved) throw new Error("Persisted runtime token metadata requires a named class or an explicit decorator name override.");
159
- return resolved;
160
- }
161
- };
162
-
163
- //#endregion
164
- //#region src/runtime-types/StackTraceCallSitePathResolver.ts
165
- var StackTraceCallSitePathResolver = class {
166
- static resolve(decoratorFileUrl) {
167
- const stack = (/* @__PURE__ */ new Error()).stack ?? "";
168
- for (const line of stack.split("\n")) {
169
- const candidate = this.extractPath(line.trim());
170
- if (!candidate) continue;
171
- if (candidate === decoratorFileUrl || candidate.includes("runtimeTypeDecorators")) continue;
172
- return candidate;
173
- }
174
- }
175
- static extractPath(line) {
176
- const fileUrlMatch = line.match(/file:\/\/[^\s)]+/);
177
- if (fileUrlMatch) return fileUrlMatch[0];
178
- const parenMatch = line.match(/\((\/[^)]+)\)/);
179
- if (parenMatch) return parenMatch[1];
180
- return line.match(/at (\/[^\s]+)/)?.[1];
181
- }
182
- };
183
-
184
- //#endregion
185
- //#region src/runtime-types/PersistedRuntimeTypeMetadataStoreRegistry.ts
186
- var PersistedRuntimeTypeMetadataStore = class {
187
- static define(target, kind, options, decoratorFileUrl) {
188
- const normalizedOptions = PersistedRuntimeTypeDecoratorDefaults.apply(options);
189
- const metadata = {
190
- persistedName: PersistedRuntimeTypeNameResolver.resolve(target, normalizedOptions.name),
191
- kind,
192
- packageName: normalizedOptions.packageName ?? PersistedRuntimeTypeDecoratorDefaults.appPackageName,
193
- sourceHint: normalizedOptions.moduleUrl ?? StackTraceCallSitePathResolver.resolve(decoratorFileUrl)
194
- };
195
- Object.defineProperty(target, persistedRuntimeTypeMetadataKey, {
196
- configurable: false,
197
- enumerable: false,
198
- writable: false,
199
- value: metadata
200
- });
201
- }
202
- static get(target) {
203
- if (!target || typeof target !== "function" && typeof target !== "object") return;
204
- return target[persistedRuntimeTypeMetadataKey];
205
- }
206
- };
207
-
208
- //#endregion
209
- //#region src/runtime-types/InjectableRuntimeDecoratorComposerRegistry.ts
210
- var InjectableRuntimeDecoratorComposer = class {
211
- static compose(kind, options, decoratorFileUrl) {
212
- return (target) => {
213
- injectable()(target);
214
- PersistedRuntimeTypeMetadataStore.define(target, kind, options, decoratorFileUrl);
215
- };
216
- }
217
- };
218
-
219
- //#endregion
220
- //#region src/runtime-types/runtimeTypeDecorators.types.ts
221
- function getPersistedRuntimeTypeMetadata(target) {
222
- return PersistedRuntimeTypeMetadataStore.get(target);
223
- }
224
- function node(options = {}) {
225
- return InjectableRuntimeDecoratorComposer.compose("node", options, import.meta.url);
226
- }
227
- function tool(options = {}) {
228
- return InjectableRuntimeDecoratorComposer.compose("tool", options, import.meta.url);
229
- }
230
- function chatModel(options = {}) {
231
- return InjectableRuntimeDecoratorComposer.compose("chatModel", options, import.meta.url);
232
- }
233
-
234
- //#endregion
235
- //#region src/binaries/DefaultNodeBinaryAttachmentServiceFactory.ts
236
- var DefaultNodeBinaryAttachmentService = class DefaultNodeBinaryAttachmentService {
237
- constructor(storage, workflowId, runId, nodeId, activationId, now) {
238
- this.storage = storage;
239
- this.workflowId = workflowId;
240
- this.runId = runId;
241
- this.nodeId = nodeId;
242
- this.activationId = activationId;
243
- this.now = now;
244
- }
245
- async attach(args) {
246
- const attachmentId = this.createAttachmentId();
247
- const createdAt = this.now().toISOString();
248
- const storageKey = this.createStorageKey(args, attachmentId);
249
- const stored = await this.storage.write({
250
- storageKey,
251
- body: args.body
252
- });
253
- return {
254
- id: attachmentId,
255
- storageKey: stored.storageKey,
256
- mimeType: args.mimeType,
257
- size: stored.size,
258
- storageDriver: this.storage.driverName,
259
- previewKind: args.previewKind ?? this.resolvePreviewKind(args.mimeType),
260
- createdAt,
261
- runId: this.runId,
262
- workflowId: this.workflowId,
263
- nodeId: this.nodeId,
264
- activationId: this.activationId,
265
- filename: args.filename,
266
- sha256: stored.sha256
267
- };
268
- }
269
- withAttachment(item, name, attachment) {
270
- return {
271
- ...item,
272
- binary: {
273
- ...item.binary ?? {},
274
- [name]: attachment
275
- }
276
- };
277
- }
278
- forNode(args) {
279
- return new DefaultNodeBinaryAttachmentService(this.storage, this.workflowId, this.runId, args.nodeId, args.activationId, this.now);
280
- }
281
- async openReadStream(attachment) {
282
- return await this.storage.openReadStream(attachment.storageKey);
283
- }
284
- createAttachmentId() {
285
- return DefaultNodeBinaryAttachmentService.createAttachmentIdValue(`${this.activationId}-${this.now().getTime()}`);
286
- }
287
- static createAttachmentIdValue(fallbackValue) {
288
- const cryptoObject = globalThis.crypto;
289
- if (cryptoObject && typeof cryptoObject.randomUUID === "function") return cryptoObject.randomUUID();
290
- return fallbackValue;
291
- }
292
- createStorageKey(args, attachmentId) {
293
- const safeName = this.sanitizeSegment(args.name);
294
- const safeFilename = this.sanitizeFilename(args.filename);
295
- const filenameSuffix = safeFilename ? `-${safeFilename}` : "";
296
- return `${this.sanitizeSegment(this.workflowId)}/${this.sanitizeSegment(this.runId)}/${this.sanitizeSegment(this.nodeId)}/${this.sanitizeSegment(this.activationId)}/${attachmentId}-${safeName}${filenameSuffix}`;
297
- }
298
- sanitizeSegment(value) {
299
- const normalized = value.trim();
300
- if (!normalized) return "item";
301
- return normalized.replace(/[^a-zA-Z0-9._-]+/g, "_");
302
- }
303
- sanitizeFilename(value) {
304
- if (!value) return;
305
- const normalized = value.trim().split("/").at(-1)?.split("\\").at(-1) ?? value.trim();
306
- if (!normalized) return;
307
- return normalized.replace(/[^a-zA-Z0-9._-]+/g, "_");
308
- }
309
- resolvePreviewKind(mimeType) {
310
- if (mimeType.startsWith("image/")) return "image";
311
- if (mimeType.startsWith("audio/")) return "audio";
312
- if (mimeType.startsWith("video/")) return "video";
313
- return "download";
314
- }
315
- };
316
-
317
- //#endregion
318
- //#region src/binaries/UnavailableBinaryStorage.ts
319
- var UnavailableBinaryStorage = class {
320
- driverName = "unavailable";
321
- async write() {
322
- throw new Error("Binary storage is not configured for this runtime.");
323
- }
324
- async openReadStream() {}
325
- async stat() {
326
- return { exists: false };
327
- }
328
- async delete() {}
329
- };
330
-
331
- //#endregion
332
- //#region src/binaries/DefaultExecutionBinaryServiceFactory.ts
333
- var DefaultExecutionBinaryService = class {
334
- constructor(storage, workflowId, runId, now) {
335
- this.storage = storage;
336
- this.workflowId = workflowId;
337
- this.runId = runId;
338
- this.now = now;
339
- }
340
- forNode(args) {
341
- return new DefaultNodeBinaryAttachmentService(this.storage, this.workflowId, this.runId, args.nodeId, args.activationId, this.now);
342
- }
343
- async openReadStream(attachment) {
344
- return await this.storage.openReadStream(attachment.storageKey);
345
- }
346
- };
347
-
348
- //#endregion
349
- //#region src/execution/DefaultAsyncSleeper.ts
350
- var DefaultAsyncSleeper = class {
351
- sleep(ms) {
352
- return new Promise((resolve) => {
353
- setTimeout(resolve, ms);
354
- });
355
- }
356
- };
357
-
358
- //#endregion
359
- //#region src/execution/InProcessRetryRunner.ts
360
- var InProcessRetryRunner = class InProcessRetryRunner {
361
- constructor(sleeper) {
362
- this.sleeper = sleeper;
363
- }
364
- async run(policy, work) {
365
- const spec = InProcessRetryRunner.normalizePolicy(policy);
366
- let lastError;
367
- for (let attempt = 1; attempt <= spec.maxAttempts; attempt++) try {
368
- return await work();
369
- } catch (error) {
370
- lastError = error;
371
- if (attempt >= spec.maxAttempts) break;
372
- const delayMs = InProcessRetryRunner.delayAfterFailureMs(spec, attempt);
373
- await this.sleeper.sleep(delayMs);
374
- }
375
- throw lastError instanceof Error ? lastError : new Error(String(lastError));
376
- }
377
- static delayAfterFailureMs(spec, failedAttempt) {
378
- if (spec.kind === "none") return 0;
379
- if (spec.kind === "fixed") return spec.delayMs;
380
- const exponent = failedAttempt - 1;
381
- let ms = spec.initialDelayMs * Math.pow(spec.multiplier, exponent);
382
- if (spec.jitter === true) ms *= 1 + Math.random() * .2;
383
- if (spec.maxDelayMs !== void 0 && ms > spec.maxDelayMs) ms = spec.maxDelayMs;
384
- return Math.max(0, Math.floor(ms));
385
- }
386
- static normalizePolicy(policy) {
387
- if (policy === void 0) return {
388
- kind: "none",
389
- maxAttempts: 1
390
- };
391
- if (typeof policy !== "object" || policy === null) return {
392
- kind: "none",
393
- maxAttempts: 1
394
- };
395
- const kind = policy.kind;
396
- if (kind === "none") return {
397
- kind: "none",
398
- maxAttempts: 1
399
- };
400
- if (kind === "fixed") {
401
- const p = policy;
402
- return {
403
- kind: "fixed",
404
- maxAttempts: InProcessRetryRunner.assertPositiveInt(p.maxAttempts, "fixed.maxAttempts"),
405
- delayMs: InProcessRetryRunner.assertNonNegativeFinite(p.delayMs, "fixed.delayMs")
406
- };
407
- }
408
- if (kind === "exponential") {
409
- const p = policy;
410
- return {
411
- kind: "exponential",
412
- maxAttempts: InProcessRetryRunner.assertPositiveInt(p.maxAttempts, "exponential.maxAttempts"),
413
- initialDelayMs: InProcessRetryRunner.assertNonNegativeFinite(p.initialDelayMs, "exponential.initialDelayMs"),
414
- multiplier: InProcessRetryRunner.assertMultiplier(p.multiplier),
415
- maxDelayMs: p.maxDelayMs === void 0 ? void 0 : InProcessRetryRunner.assertNonNegativeFinite(p.maxDelayMs, "exponential.maxDelayMs"),
416
- jitter: p.jitter === true
417
- };
418
- }
419
- return {
420
- kind: "none",
421
- maxAttempts: 1
422
- };
423
- }
424
- static assertPositiveInt(value, label) {
425
- if (typeof value !== "number" || !Number.isFinite(value) || value < 1 || !Number.isInteger(value)) throw new Error(`Retry policy ${label} must be a positive integer`);
426
- return value;
427
- }
428
- static assertNonNegativeFinite(value, label) {
429
- if (typeof value !== "number" || !Number.isFinite(value) || value < 0) throw new Error(`Retry policy ${label} must be a non-negative finite number`);
430
- return value;
431
- }
432
- static assertMultiplier(value) {
433
- if (typeof value !== "number" || !Number.isFinite(value) || value < 1) throw new Error(`Retry policy exponential.multiplier must be >= 1`);
434
- return value;
435
- }
436
- };
437
-
438
- //#endregion
439
- //#region src/executionContext/CredentialResolverFactory.ts
440
- var CredentialResolverFactory = class {
441
- constructor(credentialSessions) {
442
- this.credentialSessions = credentialSessions;
443
- }
444
- create(workflowId, nodeId, config) {
445
- const acceptedTypesBySlot = /* @__PURE__ */ new Map();
446
- for (const requirement of config?.getCredentialRequirements?.() ?? []) acceptedTypesBySlot.set(requirement.slotKey, requirement.acceptedTypes);
447
- return async (slotKey) => {
448
- try {
449
- return await this.credentialSessions.getSession({
450
- workflowId,
451
- nodeId,
452
- slotKey
453
- });
454
- } catch (error) {
455
- const acceptedTypes = acceptedTypesBySlot.get(slotKey) ?? [];
456
- const message = error instanceof Error ? error.message : String(error);
457
- const alreadyListsAcceptedTypes = message.includes("Accepted types:") || message.includes("Accepted credential types:") || message.includes("binding points at an unknown type");
458
- const acceptedTypesSuffix = acceptedTypes.length > 0 && !alreadyListsAcceptedTypes ? ` Accepted types: ${acceptedTypes.join(", ")}.` : "";
459
- throw new Error(`Failed to resolve credential for workflow ${workflowId} node ${nodeId} slot "${slotKey}". ${message}${acceptedTypesSuffix}`, { cause: error });
460
- }
461
- };
462
- }
463
- };
464
-
465
- //#endregion
466
- //#region src/executionContext/DefaultExecutionContextFactory.ts
467
- var DefaultExecutionContextFactory = class {
468
- constructor(binaryStorage = new UnavailableBinaryStorage(), currentDate = () => /* @__PURE__ */ new Date()) {
469
- this.binaryStorage = binaryStorage;
470
- this.currentDate = currentDate;
471
- }
472
- create(args) {
473
- return {
474
- runId: args.runId,
475
- workflowId: args.workflowId,
476
- parent: args.parent,
477
- subworkflowDepth: args.subworkflowDepth,
478
- engineMaxNodeActivations: args.engineMaxNodeActivations,
479
- engineMaxSubworkflowDepth: args.engineMaxSubworkflowDepth,
480
- now: this.currentDate,
481
- data: args.data,
482
- nodeState: args.nodeState,
483
- binary: new DefaultExecutionBinaryService(this.binaryStorage, args.workflowId, args.runId, this.currentDate),
484
- getCredential: args.getCredential
485
- };
486
- }
487
- };
488
-
489
- //#endregion
490
- //#region src/policies/EngineExecutionLimitsPolicy.ts
491
- /** Framework defaults for {@link EngineExecutionLimitsPolicy} (merged with host `runtime.engineExecutionLimits`). */
492
- const ENGINE_EXECUTION_LIMITS_DEFAULTS = {
493
- defaultMaxNodeActivations: 1e5,
494
- hardMaxNodeActivations: 1e5,
495
- defaultMaxSubworkflowDepth: 32,
496
- hardMaxSubworkflowDepth: 32
497
- };
498
- /**
499
- * Resolves per-run execution limits: defaults, hard ceilings, and subworkflow depth for new runs.
500
- */
501
- var EngineExecutionLimitsPolicy = class {
502
- constructor(config = ENGINE_EXECUTION_LIMITS_DEFAULTS) {
503
- this.config = config;
504
- }
505
- /**
506
- * Effective options for a new root run (depth 0): defaults merged with engine ceilings.
507
- * Replaces a separate one-method factory for root-run bootstrap.
508
- */
509
- createRootExecutionOptions() {
510
- return this.mergeExecutionOptionsForNewRun(void 0, void 0);
511
- }
512
- mergeExecutionOptionsForNewRun(parent, user) {
513
- const subworkflowDepth = parent === void 0 ? 0 : (parent.subworkflowDepth ?? 0) + 1;
514
- const inheritedMaxNode = parent?.engineMaxNodeActivations;
515
- const inheritedMaxSub = parent?.engineMaxSubworkflowDepth;
516
- const maxNodeActivations = this.capNumber(user?.maxNodeActivations ?? inheritedMaxNode, this.config.defaultMaxNodeActivations, this.config.hardMaxNodeActivations);
517
- const maxSubworkflowDepth = this.capNumber(user?.maxSubworkflowDepth ?? inheritedMaxSub, this.config.defaultMaxSubworkflowDepth, this.config.hardMaxSubworkflowDepth);
518
- if (subworkflowDepth > maxSubworkflowDepth) throw new Error(`Subworkflow nesting depth ${subworkflowDepth} exceeds maxSubworkflowDepth ${maxSubworkflowDepth} (run would be a child of parent run).`);
519
- return {
520
- ...user,
521
- subworkflowDepth,
522
- maxNodeActivations,
523
- maxSubworkflowDepth
524
- };
525
- }
526
- capNumber(requested, defaultValue, hardCeiling) {
527
- const base = requested === void 0 ? defaultValue : requested;
528
- return Math.min(base, hardCeiling);
529
- }
530
- };
531
-
532
- //#endregion
533
- //#region src/runStorage/BinaryBodyBufferReader.ts
534
- var BinaryBodyBufferReader = class {
535
- async read(body) {
536
- if (body instanceof Uint8Array) return body;
537
- if (body instanceof ArrayBuffer) return new Uint8Array(body);
538
- if (body instanceof ReadableStream) return await this.readReadableStream(body);
539
- return await this.readAsyncIterable(body);
540
- }
541
- async readReadableStream(body) {
542
- const reader = body.getReader();
543
- const chunks = [];
544
- let totalSize = 0;
545
- try {
546
- while (true) {
547
- const result = await reader.read();
548
- if (result.done) break;
549
- chunks.push(result.value);
550
- totalSize += result.value.byteLength;
551
- }
552
- } finally {
553
- reader.releaseLock();
554
- }
555
- return this.joinChunks(chunks, totalSize);
556
- }
557
- async readAsyncIterable(body) {
558
- const chunks = [];
559
- let totalSize = 0;
560
- for await (const chunk of body) {
561
- chunks.push(chunk);
562
- totalSize += chunk.byteLength;
563
- }
564
- return this.joinChunks(chunks, totalSize);
565
- }
566
- joinChunks(chunks, totalSize) {
567
- const bytes = new Uint8Array(totalSize);
568
- let offset = 0;
569
- for (const chunk of chunks) {
570
- bytes.set(chunk, offset);
571
- offset += chunk.byteLength;
572
- }
573
- return bytes;
574
- }
575
- };
576
-
577
- //#endregion
578
- //#region src/runStorage/BinaryBodyReadableStreamFactory.ts
579
- var BinaryBodyReadableStreamFactory = class {
580
- constructor(bytes) {
581
- this.bytes = bytes;
582
- }
583
- create() {
584
- const value = this.bytes;
585
- let consumed = false;
586
- return new ReadableStream({ pull(controller) {
587
- if (consumed) {
588
- controller.close();
589
- return;
590
- }
591
- consumed = true;
592
- controller.enqueue(value);
593
- controller.close();
594
- } });
595
- }
596
- };
597
-
598
- //#endregion
599
- //#region src/runStorage/InMemoryBinaryStorageRegistry.ts
600
- var InMemoryBinaryStorage = class {
601
- driverName = "memory";
602
- values = /* @__PURE__ */ new Map();
603
- async write(args) {
604
- const bytes = await new BinaryBodyBufferReader().read(args.body);
605
- this.values.set(args.storageKey, bytes);
606
- return {
607
- storageKey: args.storageKey,
608
- size: bytes.byteLength,
609
- sha256: createHash("sha256").update(bytes).digest("hex")
610
- };
611
- }
612
- async openReadStream(storageKey) {
613
- const bytes = this.values.get(storageKey);
614
- if (!bytes) return;
615
- return {
616
- body: new BinaryBodyReadableStreamFactory(bytes).create(),
617
- size: bytes.byteLength
618
- };
619
- }
620
- async stat(storageKey) {
621
- const bytes = this.values.get(storageKey);
622
- if (!bytes) return { exists: false };
623
- return {
624
- exists: true,
625
- size: bytes.byteLength
626
- };
627
- }
628
- async delete(storageKey) {
629
- this.values.delete(storageKey);
630
- }
631
- };
632
-
633
- //#endregion
634
- //#region src/runStorage/InMemoryRunData.ts
635
- var InMemoryRunData = class {
636
- byNode = /* @__PURE__ */ new Map();
637
- constructor(initial) {
638
- if (initial) for (const [nodeId, outputs] of Object.entries(initial)) this.byNode.set(nodeId, outputs);
639
- }
640
- setOutputs(nodeId, outputs) {
641
- this.byNode.set(nodeId, outputs);
642
- }
643
- getOutputs(nodeId) {
644
- return this.byNode.get(nodeId);
645
- }
646
- getOutputItems(nodeId, output = "main") {
647
- return this.byNode.get(nodeId)?.[output] ?? [];
648
- }
649
- getOutputItem(nodeId, itemIndex, output = "main") {
650
- return this.getOutputItems(nodeId, output)[itemIndex];
651
- }
652
- dump() {
653
- const out = {};
654
- for (const [nodeId, outputs] of this.byNode.entries()) out[nodeId] = outputs;
655
- return out;
656
- }
657
- };
658
-
659
- //#endregion
660
- //#region src/runStorage/InMemoryRunDataFactory.ts
661
- var InMemoryRunDataFactory = class {
662
- create(initial) {
663
- return new InMemoryRunData(initial);
664
- }
665
- };
666
-
667
- //#endregion
668
- //#region src/contracts/runFinishedAtFactory.ts
669
- /** Derives workflow end time from node snapshots for run listings. */
670
- var RunFinishedAtFactory = class {
671
- static resolveIso(state) {
672
- if (state.status === "running" || state.status === "pending") return;
673
- let max;
674
- for (const snap of Object.values(state.nodeSnapshotsByNodeId)) if (snap?.finishedAt && (!max || snap.finishedAt > max)) max = snap.finishedAt;
675
- return max;
676
- }
677
- };
678
-
679
- //#endregion
680
- //#region src/runtime/RunIntentService.ts
681
- var RunIntentService = class {
682
- constructor(engine, workflowRepository) {
683
- this.engine = engine;
684
- this.workflowRepository = workflowRepository;
685
- }
686
- async startWorkflow(args) {
687
- if (args.startAt && !args.currentState && !args.stopCondition && !args.reset) return await this.engine.runWorkflow(args.workflow, args.startAt, args.items, args.parent, args.executionOptions, {
688
- workflowSnapshot: args.workflowSnapshot,
689
- mutableState: args.mutableState
690
- });
691
- return await this.engine.runWorkflowFromState({
692
- workflow: args.workflow,
693
- items: args.items,
694
- parent: args.parent,
695
- executionOptions: args.executionOptions,
696
- workflowSnapshot: args.workflowSnapshot,
697
- mutableState: args.mutableState,
698
- currentState: args.currentState,
699
- stopCondition: args.stopCondition ?? { kind: "workflowCompleted" },
700
- reset: args.reset
701
- });
702
- }
703
- async rerunFromNode(args) {
704
- if (args.items) return await this.engine.runWorkflow(args.workflow, args.nodeId, args.items, args.parent, args.executionOptions, {
705
- workflowSnapshot: args.workflowSnapshot,
706
- mutableState: args.mutableState
707
- });
708
- return await this.engine.runWorkflowFromState({
709
- workflow: args.workflow,
710
- parent: args.parent,
711
- executionOptions: args.executionOptions,
712
- workflowSnapshot: args.workflowSnapshot,
713
- mutableState: args.mutableState,
714
- currentState: args.currentState,
715
- stopCondition: { kind: "workflowCompleted" },
716
- reset: { clearFromNodeId: args.nodeId }
717
- });
718
- }
719
- resolveWebhookTrigger(args) {
720
- return this.engine.resolveWebhookTrigger(args);
721
- }
722
- async runMatchedWebhook(args) {
723
- const resolution = this.resolveWebhookTrigger(args);
724
- if (resolution.status === "notFound") throw new Error("Unknown webhook endpoint");
725
- if (resolution.status === "methodNotAllowed") throw new Error("Method not allowed");
726
- return await this.runWebhookMatch({
727
- match: resolution.match,
728
- requestItem: args.requestItem
729
- });
730
- }
731
- async runWebhookMatch(args) {
732
- const workflow = this.workflowRepository.get(args.match.workflowId);
733
- if (!workflow) throw new Error(`Unknown workflowId: ${args.match.workflowId}`);
734
- const scheduled = await this.engine.runWorkflow(workflow, args.match.nodeId, [args.requestItem], void 0, {
735
- localOnly: true,
736
- webhook: true
737
- });
738
- if (scheduled.status === "failed") throw new Error(scheduled.error.message);
739
- if (scheduled.status === "completed") return {
740
- runId: scheduled.runId,
741
- workflowId: scheduled.workflowId,
742
- startedAt: scheduled.startedAt,
743
- runStatus: "completed",
744
- response: scheduled.outputs
745
- };
746
- return await Promise.race([this.engine.waitForWebhookResponse(scheduled.runId), this.engine.waitForCompletion(scheduled.runId).then((completed) => {
747
- if (completed.status === "failed") throw new Error(completed.error.message);
748
- return {
749
- runId: completed.runId,
750
- workflowId: completed.workflowId,
751
- startedAt: completed.startedAt,
752
- runStatus: "completed",
753
- response: completed.outputs
754
- };
755
- })]);
756
- }
757
- };
758
-
759
- //#endregion
760
- export { predicateAwareClassFactory as A, container as C, injectable as D, injectAll as E, ConnectionNodeIdFactory as F, singleton as M, createWorkflowExecutableNodeClassifier as N, instanceCachingFactory as O, WorkflowExecutableNodeClassifier as P, CoreTokens as S, inject as T, InjectableRuntimeDecoratorComposer as _, ENGINE_EXECUTION_LIMITS_DEFAULTS as a, PersistedRuntimeTypeNameResolver as b, CredentialResolverFactory as c, DefaultExecutionBinaryService as d, UnavailableBinaryStorage as f, tool as g, node as h, InMemoryBinaryStorage as i, registry as j, instancePerContainerCachingFactory as k, InProcessRetryRunner as l, getPersistedRuntimeTypeMetadata as m, RunFinishedAtFactory as n, EngineExecutionLimitsPolicy as o, chatModel as p, InMemoryRunDataFactory as r, DefaultExecutionContextFactory as s, RunIntentService as t, DefaultAsyncSleeper as u, PersistedRuntimeTypeMetadataStore as v, delay as w, NodeEventPublisher as x, StackTraceCallSitePathResolver as y };
761
- //# sourceMappingURL=RunIntentService-B0sUL5q-.js.map