ai-workflows 2.1.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +17 -1
  3. package/README.md +305 -184
  4. package/dist/barrier.d.ts +159 -0
  5. package/dist/barrier.d.ts.map +1 -0
  6. package/dist/barrier.js +377 -0
  7. package/dist/barrier.js.map +1 -0
  8. package/dist/cascade-context.d.ts +149 -0
  9. package/dist/cascade-context.d.ts.map +1 -0
  10. package/dist/cascade-context.js +324 -0
  11. package/dist/cascade-context.js.map +1 -0
  12. package/dist/cascade-executor.d.ts +196 -0
  13. package/dist/cascade-executor.d.ts.map +1 -0
  14. package/dist/cascade-executor.js +384 -0
  15. package/dist/cascade-executor.js.map +1 -0
  16. package/dist/context.d.ts.map +1 -1
  17. package/dist/context.js +27 -8
  18. package/dist/context.js.map +1 -1
  19. package/dist/cron-parser.d.ts +65 -0
  20. package/dist/cron-parser.d.ts.map +1 -0
  21. package/dist/cron-parser.js +294 -0
  22. package/dist/cron-parser.js.map +1 -0
  23. package/dist/cron-scheduler.d.ts +117 -0
  24. package/dist/cron-scheduler.d.ts.map +1 -0
  25. package/dist/cron-scheduler.js +176 -0
  26. package/dist/cron-scheduler.js.map +1 -0
  27. package/dist/database-context.d.ts +184 -0
  28. package/dist/database-context.d.ts.map +1 -0
  29. package/dist/database-context.js +428 -0
  30. package/dist/database-context.js.map +1 -0
  31. package/dist/dependency-graph.d.ts +157 -0
  32. package/dist/dependency-graph.d.ts.map +1 -0
  33. package/dist/dependency-graph.js +382 -0
  34. package/dist/dependency-graph.js.map +1 -0
  35. package/dist/digital-objects-adapter.d.ts +159 -0
  36. package/dist/digital-objects-adapter.d.ts.map +1 -0
  37. package/dist/digital-objects-adapter.js +229 -0
  38. package/dist/digital-objects-adapter.js.map +1 -0
  39. package/dist/durable-execution-cloudflare.d.ts +427 -0
  40. package/dist/durable-execution-cloudflare.d.ts.map +1 -0
  41. package/dist/durable-execution-cloudflare.js +510 -0
  42. package/dist/durable-execution-cloudflare.js.map +1 -0
  43. package/dist/durable-execution.d.ts +482 -0
  44. package/dist/durable-execution.d.ts.map +1 -0
  45. package/dist/durable-execution.js +594 -0
  46. package/dist/durable-execution.js.map +1 -0
  47. package/dist/durable-workflow.d.ts +176 -0
  48. package/dist/durable-workflow.d.ts.map +1 -0
  49. package/dist/durable-workflow.js +552 -0
  50. package/dist/durable-workflow.js.map +1 -0
  51. package/dist/every.d.ts +31 -2
  52. package/dist/every.d.ts.map +1 -1
  53. package/dist/every.js +63 -32
  54. package/dist/every.js.map +1 -1
  55. package/dist/graph/index.d.ts +8 -0
  56. package/dist/graph/index.d.ts.map +1 -0
  57. package/dist/graph/index.js +8 -0
  58. package/dist/graph/index.js.map +1 -0
  59. package/dist/graph/topological-sort.d.ts +121 -0
  60. package/dist/graph/topological-sort.d.ts.map +1 -0
  61. package/dist/graph/topological-sort.js +292 -0
  62. package/dist/graph/topological-sort.js.map +1 -0
  63. package/dist/index.d.ts +10 -1
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +25 -0
  66. package/dist/index.js.map +1 -1
  67. package/dist/logger.d.ts +101 -0
  68. package/dist/logger.d.ts.map +1 -0
  69. package/dist/logger.js +115 -0
  70. package/dist/logger.js.map +1 -0
  71. package/dist/on.d.ts +35 -10
  72. package/dist/on.d.ts.map +1 -1
  73. package/dist/on.js +53 -19
  74. package/dist/on.js.map +1 -1
  75. package/dist/runtime.d.ts +169 -0
  76. package/dist/runtime.d.ts.map +1 -0
  77. package/dist/runtime.js +275 -0
  78. package/dist/runtime.js.map +1 -0
  79. package/dist/send.d.ts.map +1 -1
  80. package/dist/send.js +4 -3
  81. package/dist/send.js.map +1 -1
  82. package/dist/telemetry.d.ts +150 -0
  83. package/dist/telemetry.d.ts.map +1 -0
  84. package/dist/telemetry.js +388 -0
  85. package/dist/telemetry.js.map +1 -0
  86. package/dist/timer-registry.d.ts +77 -0
  87. package/dist/timer-registry.d.ts.map +1 -0
  88. package/dist/timer-registry.js +154 -0
  89. package/dist/timer-registry.js.map +1 -0
  90. package/dist/types.d.ts +105 -6
  91. package/dist/types.d.ts.map +1 -1
  92. package/dist/types.js +17 -1
  93. package/dist/types.js.map +1 -1
  94. package/dist/worker/durable-step.d.ts +481 -0
  95. package/dist/worker/durable-step.d.ts.map +1 -0
  96. package/dist/worker/durable-step.js +606 -0
  97. package/dist/worker/durable-step.js.map +1 -0
  98. package/dist/worker/index.d.ts +106 -0
  99. package/dist/worker/index.d.ts.map +1 -0
  100. package/dist/worker/index.js +124 -0
  101. package/dist/worker/index.js.map +1 -0
  102. package/dist/worker/state-adapter.d.ts +230 -0
  103. package/dist/worker/state-adapter.d.ts.map +1 -0
  104. package/dist/worker/state-adapter.js +409 -0
  105. package/dist/worker/state-adapter.js.map +1 -0
  106. package/dist/worker/topological-executor.d.ts +282 -0
  107. package/dist/worker/topological-executor.d.ts.map +1 -0
  108. package/dist/worker/topological-executor.js +396 -0
  109. package/dist/worker/topological-executor.js.map +1 -0
  110. package/dist/worker/workflow-builder.d.ts +286 -0
  111. package/dist/worker/workflow-builder.d.ts.map +1 -0
  112. package/dist/worker/workflow-builder.js +565 -0
  113. package/dist/worker/workflow-builder.js.map +1 -0
  114. package/dist/worker.d.ts +800 -0
  115. package/dist/worker.d.ts.map +1 -0
  116. package/dist/worker.js +2428 -0
  117. package/dist/worker.js.map +1 -0
  118. package/dist/workflow-builder.d.ts +287 -0
  119. package/dist/workflow-builder.d.ts.map +1 -0
  120. package/dist/workflow-builder.js +762 -0
  121. package/dist/workflow-builder.js.map +1 -0
  122. package/dist/workflow.d.ts +14 -30
  123. package/dist/workflow.d.ts.map +1 -1
  124. package/dist/workflow.js +136 -292
  125. package/dist/workflow.js.map +1 -1
  126. package/examples/01-ecommerce-order-pipeline.ts +358 -0
  127. package/examples/02-content-moderation-cascade.ts +454 -0
  128. package/examples/03-scheduled-reporting-dependencies.ts +479 -0
  129. package/examples/04-database-persistence.ts +518 -0
  130. package/examples/README.md +173 -0
  131. package/package.json +21 -4
  132. package/src/__tests__/digital-objects-adapter.test.ts +274 -0
  133. package/src/__tests__/durable-workflow.test.ts +297 -0
  134. package/src/barrier.ts +507 -0
  135. package/src/cascade-context.ts +495 -0
  136. package/src/cascade-executor.ts +588 -0
  137. package/src/context.ts +51 -17
  138. package/src/cron-parser.ts +347 -0
  139. package/src/cron-scheduler.ts +239 -0
  140. package/src/database-context.ts +658 -0
  141. package/src/dependency-graph.ts +518 -0
  142. package/src/digital-objects-adapter.ts +351 -0
  143. package/src/durable-execution-cloudflare.ts +855 -0
  144. package/src/durable-execution.ts +1042 -0
  145. package/src/durable-workflow.ts +717 -0
  146. package/src/every.ts +104 -35
  147. package/src/graph/index.ts +19 -0
  148. package/src/graph/topological-sort.ts +412 -0
  149. package/src/index.ts +147 -0
  150. package/src/logger.ts +148 -0
  151. package/src/on.ts +81 -26
  152. package/src/runtime.ts +436 -0
  153. package/src/send.ts +4 -5
  154. package/src/telemetry.ts +577 -0
  155. package/src/timer-registry.ts +179 -0
  156. package/src/types.ts +146 -10
  157. package/src/worker/durable-step.ts +976 -0
  158. package/src/worker/index.ts +216 -0
  159. package/src/worker/state-adapter.ts +589 -0
  160. package/src/worker/topological-executor.ts +625 -0
  161. package/src/worker/workflow-builder.ts +871 -0
  162. package/src/worker.ts +2906 -0
  163. package/src/workflow-builder.ts +1068 -0
  164. package/src/workflow.ts +199 -355
  165. package/test/barrier-join.test.ts +442 -0
  166. package/test/barrier-unhandled-rejections.test.ts +359 -0
  167. package/test/cascade-context.test.ts +390 -0
  168. package/test/cascade-executor.test.ts +852 -0
  169. package/test/cron-parser.test.ts +314 -0
  170. package/test/cron-scheduler.test.ts +291 -0
  171. package/test/database-context.test.ts +770 -0
  172. package/test/db-provider-adapter.test.ts +862 -0
  173. package/test/dependency-graph.test.ts +512 -0
  174. package/test/durable-execution-cloudflare.test.ts +606 -0
  175. package/test/durable-execution-in-process.test.ts +286 -0
  176. package/test/durable-execution.test.ts +247 -0
  177. package/test/e2e/workflow-scenarios.e2e.test.ts +1039 -0
  178. package/test/graph/topological-sort.test.ts +586 -0
  179. package/test/integration.test.ts +442 -0
  180. package/test/rpc-surface.test.ts +946 -0
  181. package/test/runtime.test.ts +262 -0
  182. package/test/schedule-timer-cleanup.test.ts +353 -0
  183. package/test/send-race-conditions.test.ts +400 -0
  184. package/test/type-safety-every.test.ts +303 -0
  185. package/test/worker/durable-cascade.test.ts +1117 -0
  186. package/test/worker/durable-step.test.ts +723 -0
  187. package/test/worker/topological-executor.test.ts +1240 -0
  188. package/test/worker/workflow-builder.test.ts +1067 -0
  189. package/test/worker.test.ts +608 -0
  190. package/test/workflow-builder.test.ts +1670 -0
  191. package/test/workflow-cron.test.ts +256 -0
  192. package/test/workflow-state-adapter.test.ts +923 -0
  193. package/test/workflow.test.ts +25 -22
  194. package/tsconfig.json +3 -1
  195. package/vitest.config.ts +38 -1
  196. package/vitest.workers.config.ts +44 -0
  197. package/wrangler.jsonc +22 -0
  198. package/.turbo/turbo-test.log +0 -7
  199. package/src/context.js +0 -83
  200. package/src/every.js +0 -267
  201. package/src/index.js +0 -71
  202. package/src/on.js +0 -79
  203. package/src/send.js +0 -111
  204. package/src/types.js +0 -4
  205. package/src/workflow.js +0 -455
  206. package/test/context.test.js +0 -116
  207. package/test/every.test.js +0 -282
  208. package/test/on.test.js +0 -80
  209. package/test/send.test.js +0 -89
  210. package/test/workflow.test.js +0 -224
  211. package/vitest.config.js +0 -7
package/dist/every.js CHANGED
@@ -8,6 +8,7 @@
8
8
  * every('hour during business hours', $ => { ... })
9
9
  * every('first Monday of the month at 9am', $ => { ... })
10
10
  */
11
+ import { PLURAL_UNITS, isPluralUnitKey } from './types.js';
11
12
  /**
12
13
  * Registry of schedule handlers
13
14
  */
@@ -128,46 +129,64 @@ export async function toCron(description) {
128
129
  `Set up AI conversion with setCronConverter() for natural language schedules.`);
129
130
  }
130
131
  /**
131
- * Create the `every` proxy
132
+ * Create a typed EveryProxy with proper TypeScript generics
133
+ *
134
+ * This factory function creates a callable proxy that supports:
135
+ * - Direct calls: every('natural language', handler)
136
+ * - Simple patterns: every.hour(handler)
137
+ * - Day + time: every.Monday.at9am(handler)
138
+ * - Intervals: every.minutes(30)(handler)
139
+ *
140
+ * @param registerCallback - Function called when a handler is registered
141
+ * @returns A properly typed EveryProxy
142
+ *
143
+ * @example
144
+ * ```ts
145
+ * // Create proxy with custom registration
146
+ * const myEvery = createTypedEveryProxy((interval, handler) => {
147
+ * myRegistry.push({ interval, handler })
148
+ * })
149
+ *
150
+ * myEvery.hour(handler) // Properly typed!
151
+ * myEvery.Monday.at9am(handler) // Chained access typed!
152
+ * ```
132
153
  */
133
- function createEveryProxy() {
134
- const handler = {
135
- get(_target, prop) {
154
+ export function createTypedEveryProxy(registerCallback) {
155
+ // Create typed handler for day schedule patterns with time modifiers
156
+ const createDayScheduleHandler = (pattern, prop) => ({
157
+ get(_target, timeKey, _receiver) {
158
+ const time = TIME_PATTERNS[timeKey];
159
+ if (time) {
160
+ const cron = combineWithTime(pattern, time);
161
+ return (handlerFn) => {
162
+ registerCallback({ type: 'cron', expression: cron, natural: `${prop}.${timeKey}` }, handlerFn);
163
+ };
164
+ }
165
+ return undefined;
166
+ },
167
+ apply(_target, _thisArg, args) {
168
+ registerCallback({ type: 'cron', expression: pattern, natural: prop }, args[0]);
169
+ }
170
+ });
171
+ // Create the main EveryProxy handler
172
+ const everyHandler = {
173
+ get(_target, prop, _receiver) {
136
174
  // Check if it's a known pattern
137
175
  const pattern = KNOWN_PATTERNS[prop];
138
176
  if (pattern) {
139
177
  // Return an object that can either be called directly or have time accessors
140
178
  const result = (handlerFn) => {
141
- registerScheduleHandler({ type: 'cron', expression: pattern, natural: prop }, handlerFn);
179
+ registerCallback({ type: 'cron', expression: pattern, natural: prop }, handlerFn);
142
180
  };
143
- // Add time accessors
144
- return new Proxy(result, {
145
- get(_t, timeKey) {
146
- const time = TIME_PATTERNS[timeKey];
147
- if (time) {
148
- const cron = combineWithTime(pattern, time);
149
- return (handlerFn) => {
150
- registerScheduleHandler({ type: 'cron', expression: cron, natural: `${prop}.${timeKey}` }, handlerFn);
151
- };
152
- }
153
- return undefined;
154
- },
155
- apply(_t, _thisArg, args) {
156
- registerScheduleHandler({ type: 'cron', expression: pattern, natural: prop }, args[0]);
157
- }
158
- });
181
+ // Add time accessors with typed handler
182
+ return new Proxy(result, createDayScheduleHandler(pattern, prop));
159
183
  }
160
184
  // Check for plural time units (e.g., seconds(5), minutes(30))
161
- const pluralUnits = {
162
- seconds: 'second',
163
- minutes: 'minute',
164
- hours: 'hour',
165
- days: 'day',
166
- weeks: 'week',
167
- };
168
- if (pluralUnits[prop]) {
185
+ // Using type guard and typed constant for type-safe interval creation
186
+ if (isPluralUnitKey(prop)) {
187
+ const intervalType = PLURAL_UNITS[prop];
169
188
  return (value) => (handlerFn) => {
170
- registerScheduleHandler({ type: pluralUnits[prop], value, natural: `${value} ${prop}` }, handlerFn);
189
+ registerCallback({ type: intervalType, value, natural: `${value} ${prop}` }, handlerFn);
171
190
  };
172
191
  }
173
192
  return undefined;
@@ -177,11 +196,23 @@ function createEveryProxy() {
177
196
  const [description, handler] = args;
178
197
  if (typeof description === 'string' && typeof handler === 'function') {
179
198
  // Register with natural language - will be converted to cron at runtime
180
- registerScheduleHandler({ type: 'natural', description }, handler);
199
+ registerCallback({ type: 'natural', description }, handler);
181
200
  }
182
201
  }
183
202
  };
184
- return new Proxy(function () { }, handler);
203
+ // Create callable target with proper typing
204
+ // The function serves as the Proxy target - actual behavior is in the handler's apply trap
205
+ const target = function (_description, _handler) { };
206
+ return new Proxy(target, everyHandler);
207
+ }
208
+ /**
209
+ * Create the `every` proxy using the global schedule registry
210
+ *
211
+ * This is the default implementation that uses registerScheduleHandler
212
+ * for backward compatibility with the standalone `every` export.
213
+ */
214
+ function createEveryProxy() {
215
+ return createTypedEveryProxy(registerScheduleHandler);
185
216
  }
186
217
  /**
187
218
  * The `every` function/object for registering scheduled handlers
package/dist/every.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"every.js","sourceRoot":"","sources":["../src/every.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;GAEG;AACH,MAAM,gBAAgB,GAA2B,EAAE,CAAA;AAEnD;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,CAAC,GAAG,gBAAgB,CAAC,CAAA;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAA;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAA0B,EAC1B,OAAwB;IAExB,gBAAgB,CAAC,IAAI,CAAC;QACpB,QAAQ;QACR,OAAO;QACP,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE;KAC3B,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,cAAc,GAA2B;IAC7C,aAAa;IACb,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE,WAAW;IAEnB,eAAe;IACf,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,WAAW;IACxB,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,WAAW;IAErB,kBAAkB;IAClB,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,aAAa;IACxB,UAAU,EAAE,WAAW;IACvB,MAAM,EAAE,YAAY;CACrB,CAAA;AAED;;GAEG;AACH,MAAM,aAAa,GAAqD;IACtE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAC/B,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAC/B,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAC/B,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAC/B,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IACjC,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IACjC,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IACjC,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IACjC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IAChC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IAChC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IAChC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IAChC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IAChC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IAChC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IAChC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IAChC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;IAChC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;CACrC,CAAA;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACxC,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;AACxC,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,QAAgB,EAAE,IAAsC;IAC/E,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACjC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC9B,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC;AAED;;GAEG;AACH,IAAI,aAAa,GAAsD,IAAI,CAAA;AAE3E;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAmD;IAClF,aAAa,GAAG,SAAS,CAAA;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,WAAmB;IAC9C,6BAA6B;IAC7B,MAAM,KAAK,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAA;IAC5C,IAAI,KAAK;QAAE,OAAO,KAAK,CAAA;IAEvB,qCAAqC;IACrC,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC,WAAW,CAAC,CAAA;IACnC,CAAC;IAED,4DAA4D;IAC5D,IAAI,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1C,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,8BAA8B,WAAW,KAAK;QAC9C,8EAA8E,CAC/E,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB;IACvB,MAAM,OAAO,GAAG;QACd,GAAG,CAAC,OAAgB,EAAE,IAAY;YAChC,gCAAgC;YAChC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;YACpC,IAAI,OAAO,EAAE,CAAC;gBACZ,6EAA6E;gBAC7E,MAAM,MAAM,GAAG,CAAC,SAA0B,EAAE,EAAE;oBAC5C,uBAAuB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAA;gBAC1F,CAAC,CAAA;gBACD,qBAAqB;gBACrB,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;oBACvB,GAAG,CAAC,EAAE,EAAE,OAAe;wBACrB,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;wBACnC,IAAI,IAAI,EAAE,CAAC;4BACT,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;4BAC3C,OAAO,CAAC,SAA0B,EAAE,EAAE;gCACpC,uBAAuB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;4BACvG,CAAC,CAAA;wBACH,CAAC;wBACD,OAAO,SAAS,CAAA;oBAClB,CAAC;oBACD,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI;wBACtB,uBAAuB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;oBACxF,CAAC;iBACF,CAAC,CAAA;YACJ,CAAC;YAED,8DAA8D;YAC9D,MAAM,WAAW,GAA2B;gBAC1C,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,QAAQ;gBACjB,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,MAAM;aACd,CAAA;YACD,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,SAA0B,EAAE,EAAE;oBACvD,uBAAuB,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;gBAC5G,CAAC,CAAA;YACH,CAAC;YAED,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,KAAK,CAAC,OAAgB,EAAE,QAAiB,EAAE,IAAe;YACxD,2DAA2D;YAC3D,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,IAAiC,CAAA;YAEhE,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;gBACrE,wEAAwE;gBACxE,uBAAuB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,CAAA;YACpE,CAAC;QACH,CAAC;KACF,CAAA;IAED,OAAO,IAAI,KAAK,CAAC,cAAY,CAAQ,EAAE,OAAO,CAAC,CAAA;AACjD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAA;AAEvC;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAA0B;IACrD,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;QACrC,KAAK,QAAQ;YACX,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;QAC1C,KAAK,MAAM;YACT,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;QAC/C,KAAK,KAAK;YACR,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;QACpD,KAAK,MAAM;YACT,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;QACxD,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS;YACZ,iDAAiD;YACjD,OAAO,CAAC,CAAA;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAA0B;IACvD,IAAI,SAAS,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC9C,OAAO,QAAQ,CAAC,OAAO,CAAA;IACzB,CAAC;IAED,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC;gBACzC,CAAC,CAAC,SAAS,QAAQ,CAAC,KAAK,UAAU;gBACnC,CAAC,CAAC,cAAc,CAAA;QACpB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC;gBACzC,CAAC,CAAC,SAAS,QAAQ,CAAC,KAAK,UAAU;gBACnC,CAAC,CAAC,cAAc,CAAA;QACpB,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC;gBACzC,CAAC,CAAC,SAAS,QAAQ,CAAC,KAAK,QAAQ;gBACjC,CAAC,CAAC,YAAY,CAAA;QAClB,KAAK,KAAK;YACR,OAAO,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC;gBACzC,CAAC,CAAC,SAAS,QAAQ,CAAC,KAAK,OAAO;gBAChC,CAAC,CAAC,WAAW,CAAA;QACjB,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC;gBACzC,CAAC,CAAC,SAAS,QAAQ,CAAC,KAAK,QAAQ;gBACjC,CAAC,CAAC,YAAY,CAAA;QAClB,KAAK,MAAM;YACT,OAAO,SAAS,QAAQ,CAAC,UAAU,EAAE,CAAA;QACvC,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC,WAAW,CAAA;IAC/B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"every.js","sourceRoot":"","sources":["../src/every.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Graph algorithms for workflow execution ordering
3
+ *
4
+ * Provides topological sorting and execution level grouping for
5
+ * managing workflow step dependencies.
6
+ */
7
+ export { topologicalSort, topologicalSortKahn, topologicalSortDFS, getExecutionLevels, CycleDetectedError, MissingNodeError, type SortableNode, type ExecutionLevel, type TopologicalSortOptions, type TopologicalSortResult, } from './topological-sort.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Graph algorithms for workflow execution ordering
3
+ *
4
+ * Provides topological sorting and execution level grouping for
5
+ * managing workflow step dependencies.
6
+ */
7
+ export { topologicalSort, topologicalSortKahn, topologicalSortDFS, getExecutionLevels, CycleDetectedError, MissingNodeError, } from './topological-sort.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GAKjB,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Topological Sort Implementation for Workflow Execution Ordering
3
+ *
4
+ * Provides multiple algorithms for topologically sorting workflow steps:
5
+ * - Kahn's algorithm (BFS-based, good for detecting cycles)
6
+ * - DFS-based algorithm (classic approach, provides cycle path)
7
+ *
8
+ * Features:
9
+ * - Cycle detection with path reporting
10
+ * - Parallel execution level grouping
11
+ * - Stable, deterministic ordering
12
+ * - Support for missing dependency handling
13
+ */
14
+ /**
15
+ * A node that can be topologically sorted
16
+ */
17
+ export interface SortableNode {
18
+ /** Unique identifier for the node */
19
+ id: string;
20
+ /** IDs of nodes this node depends on */
21
+ dependencies: string[];
22
+ }
23
+ /**
24
+ * Execution level containing nodes that can run in parallel
25
+ */
26
+ export interface ExecutionLevel {
27
+ /** Level number (0 = no dependencies, 1 = depends on level 0, etc.) */
28
+ level: number;
29
+ /** Node IDs that can run concurrently at this level */
30
+ nodes: string[];
31
+ }
32
+ /**
33
+ * Options for topological sort
34
+ */
35
+ export interface TopologicalSortOptions {
36
+ /** Throw CycleDetectedError instead of returning hasCycle: true (default: false) */
37
+ throwOnCycle?: boolean;
38
+ /** Which algorithm to use (default: 'kahn') */
39
+ algorithm?: 'kahn' | 'dfs';
40
+ /** Throw on missing dependencies (default: false) */
41
+ strict?: boolean;
42
+ }
43
+ /**
44
+ * Result of topological sort operation
45
+ */
46
+ export interface TopologicalSortResult {
47
+ /** Sorted node IDs in execution order */
48
+ order: string[];
49
+ /** Whether a cycle was detected */
50
+ hasCycle: boolean;
51
+ /** Path of nodes forming the cycle (if detected) */
52
+ cyclePath?: string[];
53
+ /** Additional metadata from the algorithm */
54
+ metadata?: {
55
+ /** In-degrees for each node (Kahn's algorithm) */
56
+ inDegrees?: Record<string, number>;
57
+ };
58
+ }
59
+ /**
60
+ * Error thrown when a cycle is detected in the dependency graph
61
+ */
62
+ export declare class CycleDetectedError extends Error {
63
+ /** The path of nodes forming the cycle */
64
+ cyclePath: string[];
65
+ constructor(cyclePath: string[]);
66
+ }
67
+ /**
68
+ * Error thrown when a dependency references a non-existent node
69
+ */
70
+ export declare class MissingNodeError extends Error {
71
+ /** The missing node ID */
72
+ missingNode: string;
73
+ /** The node that references the missing node */
74
+ referencedBy: string;
75
+ constructor(missingNode: string, referencedBy: string);
76
+ }
77
+ /**
78
+ * Topological sort using Kahn's algorithm (BFS-based)
79
+ *
80
+ * Algorithm:
81
+ * 1. Calculate in-degree for each node
82
+ * 2. Add all nodes with in-degree 0 to queue
83
+ * 3. While queue not empty:
84
+ * - Remove node from queue, add to result
85
+ * - Decrease in-degree of all dependents
86
+ * - Add nodes with in-degree 0 to queue
87
+ * 4. If result size < node count, cycle exists
88
+ */
89
+ export declare function topologicalSortKahn(nodes: SortableNode[], options?: TopologicalSortOptions): TopologicalSortResult;
90
+ /**
91
+ * Topological sort using DFS-based algorithm
92
+ *
93
+ * Algorithm:
94
+ * 1. For each unvisited node:
95
+ * - Mark as "in progress"
96
+ * - Recursively visit all dependencies
97
+ * - Mark as "visited" and add to result (in reverse)
98
+ * 2. If we encounter a node "in progress", we found a cycle
99
+ */
100
+ export declare function topologicalSortDFS(nodes: SortableNode[], options?: TopologicalSortOptions): TopologicalSortResult;
101
+ /**
102
+ * Main topological sort function with algorithm selection
103
+ *
104
+ * @param nodes - Array of nodes to sort
105
+ * @param options - Sort options
106
+ * @returns Sorted result with order and cycle information
107
+ */
108
+ export declare function topologicalSort(nodes: SortableNode[], options?: TopologicalSortOptions): TopologicalSortResult;
109
+ /**
110
+ * Get execution levels for parallel execution
111
+ *
112
+ * Groups nodes by their execution level:
113
+ * - Level 0: Nodes with no dependencies
114
+ * - Level N: Nodes whose dependencies are all at level < N
115
+ *
116
+ * @param nodes - Array of nodes to analyze
117
+ * @returns Array of execution levels, sorted by level number
118
+ * @throws CycleDetectedError if a cycle is detected
119
+ */
120
+ export declare function getExecutionLevels(nodes: SortableNode[]): ExecutionLevel[];
121
+ //# sourceMappingURL=topological-sort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topological-sort.d.ts","sourceRoot":"","sources":["../../src/graph/topological-sort.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,wCAAwC;IACxC,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,oFAAoF;IACpF,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAC1B,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,mCAAmC;IACnC,QAAQ,EAAE,OAAO,CAAA;IACjB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE;QACT,kDAAkD;QAClD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACnC,CAAA;CACF;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,0CAA0C;IAC1C,SAAS,EAAE,MAAM,EAAE,CAAA;gBAEP,SAAS,EAAE,MAAM,EAAE;CAMhC;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAA;gBAER,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAMtD;AA8CD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,GAAE,sBAA2B,GACnC,qBAAqB,CAiDvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,GAAE,sBAA2B,GACnC,qBAAqB,CA2EvB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,GAAE,sBAA2B,GACnC,qBAAqB,CAwBvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,cAAc,EAAE,CAqE1E"}
@@ -0,0 +1,292 @@
1
+ /**
2
+ * Topological Sort Implementation for Workflow Execution Ordering
3
+ *
4
+ * Provides multiple algorithms for topologically sorting workflow steps:
5
+ * - Kahn's algorithm (BFS-based, good for detecting cycles)
6
+ * - DFS-based algorithm (classic approach, provides cycle path)
7
+ *
8
+ * Features:
9
+ * - Cycle detection with path reporting
10
+ * - Parallel execution level grouping
11
+ * - Stable, deterministic ordering
12
+ * - Support for missing dependency handling
13
+ */
14
+ /**
15
+ * Error thrown when a cycle is detected in the dependency graph
16
+ */
17
+ export class CycleDetectedError extends Error {
18
+ /** The path of nodes forming the cycle */
19
+ cyclePath;
20
+ constructor(cyclePath) {
21
+ const pathStr = cyclePath.join(' -> ');
22
+ super(`Cycle detected in dependency graph: ${pathStr}`);
23
+ this.name = 'CycleDetectedError';
24
+ this.cyclePath = cyclePath;
25
+ }
26
+ }
27
+ /**
28
+ * Error thrown when a dependency references a non-existent node
29
+ */
30
+ export class MissingNodeError extends Error {
31
+ /** The missing node ID */
32
+ missingNode;
33
+ /** The node that references the missing node */
34
+ referencedBy;
35
+ constructor(missingNode, referencedBy) {
36
+ super(`Missing dependency '${missingNode}' referenced by '${referencedBy}'`);
37
+ this.name = 'MissingNodeError';
38
+ this.missingNode = missingNode;
39
+ this.referencedBy = referencedBy;
40
+ }
41
+ }
42
+ /**
43
+ * Build adjacency list and compute in-degrees for Kahn's algorithm
44
+ */
45
+ function buildGraph(nodes, strict) {
46
+ const nodeSet = new Set(nodes.map((n) => n.id));
47
+ const adjacencyList = new Map();
48
+ const inDegrees = new Map();
49
+ // Initialize all nodes
50
+ for (const node of nodes) {
51
+ adjacencyList.set(node.id, []);
52
+ inDegrees.set(node.id, 0);
53
+ }
54
+ // Build edges (dependency -> dependent)
55
+ for (const node of nodes) {
56
+ // Deduplicate dependencies
57
+ const uniqueDeps = [...new Set(node.dependencies)];
58
+ for (const dep of uniqueDeps) {
59
+ if (!nodeSet.has(dep)) {
60
+ if (strict) {
61
+ throw new MissingNodeError(dep, node.id);
62
+ }
63
+ // Skip missing dependencies in non-strict mode
64
+ continue;
65
+ }
66
+ // Add edge from dependency to this node
67
+ adjacencyList.get(dep).push(node.id);
68
+ inDegrees.set(node.id, inDegrees.get(node.id) + 1);
69
+ }
70
+ }
71
+ return { adjacencyList, inDegrees, nodeSet };
72
+ }
73
+ /**
74
+ * Topological sort using Kahn's algorithm (BFS-based)
75
+ *
76
+ * Algorithm:
77
+ * 1. Calculate in-degree for each node
78
+ * 2. Add all nodes with in-degree 0 to queue
79
+ * 3. While queue not empty:
80
+ * - Remove node from queue, add to result
81
+ * - Decrease in-degree of all dependents
82
+ * - Add nodes with in-degree 0 to queue
83
+ * 4. If result size < node count, cycle exists
84
+ */
85
+ export function topologicalSortKahn(nodes, options = {}) {
86
+ const { strict = false } = options;
87
+ if (nodes.length === 0) {
88
+ return { order: [], hasCycle: false };
89
+ }
90
+ const { adjacencyList, inDegrees, nodeSet } = buildGraph(nodes, strict);
91
+ const order = [];
92
+ const inDegreesCopy = new Map(inDegrees);
93
+ // Start with nodes that have no dependencies (in-degree 0)
94
+ // Sort alphabetically for determinism
95
+ const queue = [...nodeSet].filter((id) => inDegreesCopy.get(id) === 0).sort();
96
+ while (queue.length > 0) {
97
+ // Sort queue for deterministic ordering
98
+ queue.sort();
99
+ const current = queue.shift();
100
+ order.push(current);
101
+ // Decrease in-degree for all dependents
102
+ for (const dependent of adjacencyList.get(current) || []) {
103
+ const newDegree = inDegreesCopy.get(dependent) - 1;
104
+ inDegreesCopy.set(dependent, newDegree);
105
+ if (newDegree === 0) {
106
+ queue.push(dependent);
107
+ }
108
+ }
109
+ }
110
+ // If we didn't process all nodes, there's a cycle
111
+ const hasCycle = order.length < nodeSet.size;
112
+ // Convert in-degrees to record
113
+ const inDegreesRecord = {};
114
+ for (const [id, degree] of inDegrees) {
115
+ inDegreesRecord[id] = degree;
116
+ }
117
+ return {
118
+ order,
119
+ hasCycle,
120
+ metadata: {
121
+ inDegrees: inDegreesRecord,
122
+ },
123
+ };
124
+ }
125
+ /**
126
+ * Topological sort using DFS-based algorithm
127
+ *
128
+ * Algorithm:
129
+ * 1. For each unvisited node:
130
+ * - Mark as "in progress"
131
+ * - Recursively visit all dependencies
132
+ * - Mark as "visited" and add to result (in reverse)
133
+ * 2. If we encounter a node "in progress", we found a cycle
134
+ */
135
+ export function topologicalSortDFS(nodes, options = {}) {
136
+ const { strict = false } = options;
137
+ if (nodes.length === 0) {
138
+ return { order: [], hasCycle: false };
139
+ }
140
+ const nodeMap = new Map(nodes.map((n) => [n.id, n]));
141
+ const nodeSet = new Set(nodes.map((n) => n.id));
142
+ const visited = new Set();
143
+ const inProgress = new Set();
144
+ const order = [];
145
+ let cyclePath;
146
+ function dfs(nodeId, path) {
147
+ if (inProgress.has(nodeId)) {
148
+ // Found a cycle - construct the cycle path
149
+ const cycleStart = path.indexOf(nodeId);
150
+ cyclePath = [...path.slice(cycleStart), nodeId];
151
+ return true; // Cycle detected
152
+ }
153
+ if (visited.has(nodeId)) {
154
+ return false; // Already processed
155
+ }
156
+ inProgress.add(nodeId);
157
+ path.push(nodeId);
158
+ const node = nodeMap.get(nodeId);
159
+ if (node) {
160
+ // Deduplicate and sort dependencies for determinism
161
+ const uniqueDeps = [...new Set(node.dependencies)].sort();
162
+ for (const dep of uniqueDeps) {
163
+ if (!nodeSet.has(dep)) {
164
+ if (strict) {
165
+ throw new MissingNodeError(dep, nodeId);
166
+ }
167
+ continue; // Skip missing deps in non-strict mode
168
+ }
169
+ if (dfs(dep, path)) {
170
+ return true; // Propagate cycle detection
171
+ }
172
+ }
173
+ }
174
+ path.pop();
175
+ inProgress.delete(nodeId);
176
+ visited.add(nodeId);
177
+ order.push(nodeId);
178
+ return false;
179
+ }
180
+ // Process nodes in sorted order for determinism
181
+ const sortedNodeIds = [...nodeSet].sort();
182
+ for (const nodeId of sortedNodeIds) {
183
+ if (!visited.has(nodeId)) {
184
+ if (dfs(nodeId, [])) {
185
+ break; // Stop on first cycle
186
+ }
187
+ }
188
+ }
189
+ const hasCycle = cyclePath !== undefined;
190
+ return {
191
+ order: hasCycle ? order : order, // DFS produces correct order
192
+ hasCycle,
193
+ ...(cyclePath !== undefined && { cyclePath }),
194
+ };
195
+ }
196
+ /**
197
+ * Main topological sort function with algorithm selection
198
+ *
199
+ * @param nodes - Array of nodes to sort
200
+ * @param options - Sort options
201
+ * @returns Sorted result with order and cycle information
202
+ */
203
+ export function topologicalSort(nodes, options = {}) {
204
+ const { algorithm = 'dfs', throwOnCycle = false } = options;
205
+ let result;
206
+ if (algorithm === 'kahn') {
207
+ result = topologicalSortKahn(nodes, options);
208
+ // Kahn's algorithm doesn't provide cycle path, so detect it separately
209
+ if (result.hasCycle) {
210
+ const dfsResult = topologicalSortDFS(nodes, options);
211
+ if (dfsResult.cyclePath !== undefined) {
212
+ result = { ...result, cyclePath: dfsResult.cyclePath };
213
+ }
214
+ }
215
+ }
216
+ else {
217
+ result = topologicalSortDFS(nodes, options);
218
+ }
219
+ if (result.hasCycle && throwOnCycle) {
220
+ throw new CycleDetectedError(result.cyclePath || ['unknown']);
221
+ }
222
+ return result;
223
+ }
224
+ /**
225
+ * Get execution levels for parallel execution
226
+ *
227
+ * Groups nodes by their execution level:
228
+ * - Level 0: Nodes with no dependencies
229
+ * - Level N: Nodes whose dependencies are all at level < N
230
+ *
231
+ * @param nodes - Array of nodes to analyze
232
+ * @returns Array of execution levels, sorted by level number
233
+ * @throws CycleDetectedError if a cycle is detected
234
+ */
235
+ export function getExecutionLevels(nodes) {
236
+ if (nodes.length === 0) {
237
+ return [];
238
+ }
239
+ // First, verify no cycles exist
240
+ const sortResult = topologicalSort(nodes, { throwOnCycle: true });
241
+ const nodeMap = new Map(nodes.map((n) => [n.id, n]));
242
+ const nodeSet = new Set(nodes.map((n) => n.id));
243
+ const levels = new Map();
244
+ // Calculate level for each node
245
+ function calculateLevel(nodeId) {
246
+ if (levels.has(nodeId)) {
247
+ return levels.get(nodeId);
248
+ }
249
+ const node = nodeMap.get(nodeId);
250
+ if (!node) {
251
+ return 0;
252
+ }
253
+ // Filter to only existing dependencies
254
+ const validDeps = node.dependencies.filter((d) => nodeSet.has(d));
255
+ if (validDeps.length === 0) {
256
+ levels.set(nodeId, 0);
257
+ return 0;
258
+ }
259
+ let maxDepLevel = -1;
260
+ for (const dep of validDeps) {
261
+ const depLevel = calculateLevel(dep);
262
+ maxDepLevel = Math.max(maxDepLevel, depLevel);
263
+ }
264
+ const level = maxDepLevel + 1;
265
+ levels.set(nodeId, level);
266
+ return level;
267
+ }
268
+ // Calculate levels for all nodes
269
+ for (const node of nodes) {
270
+ calculateLevel(node.id);
271
+ }
272
+ // Group nodes by level
273
+ const levelGroups = new Map();
274
+ for (const [nodeId, level] of levels) {
275
+ if (!levelGroups.has(level)) {
276
+ levelGroups.set(level, []);
277
+ }
278
+ levelGroups.get(level).push(nodeId);
279
+ }
280
+ // Convert to sorted array of ExecutionLevels
281
+ const result = [];
282
+ const sortedLevels = [...levelGroups.keys()].sort((a, b) => a - b);
283
+ for (const level of sortedLevels) {
284
+ result.push({
285
+ level,
286
+ // Sort nodes within level for determinism
287
+ nodes: levelGroups.get(level).sort(),
288
+ });
289
+ }
290
+ return result;
291
+ }
292
+ //# sourceMappingURL=topological-sort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topological-sort.js","sourceRoot":"","sources":["../../src/graph/topological-sort.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -60,9 +60,18 @@
60
60
  * ```
61
61
  */
62
62
  export { Workflow, createTestContext, parseEvent, type WorkflowInstance } from './workflow.js';
63
+ export { createWorkflowRuntime, type WorkflowRuntime, type WorkflowRuntimeOptions, } from './runtime.js';
63
64
  export { on, registerEventHandler, getEventHandlers, clearEventHandlers } from './on.js';
64
65
  export { every, registerScheduleHandler, getScheduleHandlers, clearScheduleHandlers, setCronConverter, toCron, intervalToMs, formatInterval, } from './every.js';
65
66
  export { send, getEventBus } from './send.js';
66
67
  export { createWorkflowContext, createIsolatedContext } from './context.js';
67
- export type { EventHandler, ScheduleHandler, WorkflowContext, WorkflowState, WorkflowHistoryEntry, EventRegistration, ScheduleRegistration, ScheduleInterval, WorkflowDefinition, WorkflowOptions, ParsedEvent, OnProxy, EveryProxy, HandlerFunction, DatabaseContext, ActionData, ArtifactData, } from './types.js';
68
+ export { createCascadeContext, recordStep, withCascadeContext, type CascadeContext, type CascadeStep, type CascadeContextOptions, type SerializedCascadeContext, type SerializedCascadeStep, type TraceContext, type FiveWHEvent, type StepStatus, } from './cascade-context.js';
69
+ export { DependencyGraph, CircularDependencyError, MissingDependencyError, type GraphNode, type ParallelGroup, type GraphJSON, type EventRegistrationWithDeps, } from './dependency-graph.js';
70
+ export { topologicalSort, topologicalSortKahn, topologicalSortDFS, getExecutionLevels, CycleDetectedError, MissingNodeError, type SortableNode, type ExecutionLevel, type TopologicalSortOptions, type TopologicalSortResult, } from './graph/topological-sort.js';
71
+ export { Barrier, BarrierTimeoutError, createBarrier, waitForAll, waitForAny, withConcurrencyLimit, type BarrierOptions, type BarrierProgress, type BarrierResult, type WaitForAllOptions, type WaitForAnyOptions, type WaitForAnyResult, type ConcurrencyOptions, } from './barrier.js';
72
+ export { CascadeExecutor, CascadeTimeoutError, TierSkippedError, AllTiersFailedError, TIER_ORDER, DEFAULT_TIER_TIMEOUTS, type CapabilityTier, type TierHandler, type TierContext, type TierResult, type TierRetryConfig, type CascadeConfig, type CascadeResult, type CascadeMetrics, type SkipCondition, } from './cascade-executor.js';
73
+ export { DurableStep, StepContext as DurableStepContext, type StepConfig, type StepMetadata, type RetryConfig as DurableRetryConfig, type WorkflowStep, type StepFunction as DurableStepFunction, DurableCascadeStep, AllTiersFailed, CascadeTimeout, DEFAULT_CASCADE_TIMEOUTS, CASCADE_TIER_ORDER, type CascadeTier, type CascadeConfig as DurableCascadeConfig, type CascadeTierConfig, type CascadeTierResult, type CascadeResult as DurableCascadeResult, type CascadeContext as DurableCascadeContext, type CascadeTierContext, type AiBinding, type HumanReviewRequest, type CodeTierHandler, type AiTierHandler, type HumanTierHandler, } from './worker/durable-step.js';
74
+ export { workflow, WorkflowBuilder, type StepDefinition, type StepChain, type ConditionalChain, type LoopChain, type BuiltWorkflow, type StepContext, type RetryConfig, type StepFunction, type ConditionFunction, type ErrorHandler, type LoopOptions, type ForEachOptions, } from './workflow-builder.js';
75
+ export { WorkflowStateAdapter, type PersistedWorkflowState, type StepCheckpoint, type WorkflowHistoryEntry as StateHistoryEntry, type SnapshotInfo, type DatabaseConnection, } from './worker/state-adapter.js';
76
+ export type { EventHandler, ScheduleHandler, WorkflowContext, WorkflowState, WorkflowHistoryEntry, EventRegistration, ScheduleRegistration, ScheduleInterval, WorkflowDefinition, WorkflowOptions, ParsedEvent, OnProxy, EveryProxy, HandlerFunction, DatabaseContext, ActionData, ArtifactData, DependencyConfig, DependencyType, } from './types.js';
68
77
  //# sourceMappingURL=index.d.ts.map