yaml-flow 3.0.0 → 3.1.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 (59) hide show
  1. package/README.md +44 -23
  2. package/dist/{constants-B_ftYTTE.d.ts → constants-B2zqu10b.d.ts} +7 -57
  3. package/dist/{constants-CiyHX8L-.d.cts → constants-DJZU1pwJ.d.cts} +7 -57
  4. package/dist/continuous-event-graph/index.cjs +1161 -182
  5. package/dist/continuous-event-graph/index.cjs.map +1 -1
  6. package/dist/continuous-event-graph/index.d.cts +567 -48
  7. package/dist/continuous-event-graph/index.d.ts +567 -48
  8. package/dist/continuous-event-graph/index.js +1151 -183
  9. package/dist/continuous-event-graph/index.js.map +1 -1
  10. package/dist/event-graph/index.cjs +35 -11
  11. package/dist/event-graph/index.cjs.map +1 -1
  12. package/dist/event-graph/index.d.cts +14 -5
  13. package/dist/event-graph/index.d.ts +14 -5
  14. package/dist/event-graph/index.js +34 -11
  15. package/dist/event-graph/index.js.map +1 -1
  16. package/dist/index.cjs +945 -414
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +5 -4
  19. package/dist/index.d.ts +5 -4
  20. package/dist/index.js +936 -415
  21. package/dist/index.js.map +1 -1
  22. package/dist/inference/index.cjs +31 -7
  23. package/dist/inference/index.cjs.map +1 -1
  24. package/dist/inference/index.d.cts +2 -2
  25. package/dist/inference/index.d.ts +2 -2
  26. package/dist/inference/index.js +31 -7
  27. package/dist/inference/index.js.map +1 -1
  28. package/dist/{types-CxJg9Jrt.d.cts → types-BwvgvlOO.d.cts} +2 -2
  29. package/dist/{types-BuEo3wVG.d.ts → types-ClRA8hzC.d.ts} +2 -2
  30. package/dist/{types-BpWrH1sf.d.cts → types-DEj7OakX.d.cts} +14 -4
  31. package/dist/{types-BpWrH1sf.d.ts → types-DEj7OakX.d.ts} +14 -4
  32. package/dist/validate-DEZ2Ymdb.d.ts +53 -0
  33. package/dist/validate-DqKTZg_o.d.cts +53 -0
  34. package/examples/batch/batch-step-machine.ts +121 -0
  35. package/examples/browser/index.html +367 -0
  36. package/examples/continuous-event-graph/live-cards-board.ts +215 -0
  37. package/examples/continuous-event-graph/live-portfolio-dashboard.ts +555 -0
  38. package/examples/continuous-event-graph/portfolio-tracker.ts +287 -0
  39. package/examples/continuous-event-graph/reactive-monitoring.ts +265 -0
  40. package/examples/continuous-event-graph/reactive-pipeline.ts +168 -0
  41. package/examples/continuous-event-graph/soc-incident-board.ts +287 -0
  42. package/examples/continuous-event-graph/stock-dashboard.ts +229 -0
  43. package/examples/event-graph/ci-cd-pipeline.ts +243 -0
  44. package/examples/event-graph/executor-diamond.ts +165 -0
  45. package/examples/event-graph/executor-pipeline.ts +161 -0
  46. package/examples/event-graph/research-pipeline.ts +137 -0
  47. package/examples/flows/ai-conversation.yaml +116 -0
  48. package/examples/flows/order-processing.yaml +143 -0
  49. package/examples/flows/simple-greeting.yaml +54 -0
  50. package/examples/graph-of-graphs/multi-stage-etl.ts +307 -0
  51. package/examples/graph-of-graphs/url-processing-pipeline.ts +254 -0
  52. package/examples/inference/azure-deployment.ts +149 -0
  53. package/examples/inference/copilot-cli.ts +138 -0
  54. package/examples/inference/data-pipeline.ts +145 -0
  55. package/examples/inference/pluggable-adapters.ts +254 -0
  56. package/examples/ingest.js +733 -0
  57. package/examples/node/ai-conversation.ts +195 -0
  58. package/examples/node/simple-greeting.ts +101 -0
  59. package/package.json +3 -2
package/README.md CHANGED
@@ -1069,11 +1069,10 @@ import { createReactiveGraph, MemoryJournal } from 'yaml-flow/continuous-event-g
1069
1069
  // 1. Create with handlers
1070
1070
  const rg = createReactiveGraph(config, {
1071
1071
  handlers: {
1072
- fetch: async (ctx) => { const data = await fetchAPI(); return { dataHash: hash(data) }; },
1073
- transform: async (ctx) => { return { result: 'success' }; },
1074
- notify: async (ctx) => { await sendSlack('done'); return {}; },
1072
+ fetch: async ({ callbackToken }) => { /* ... */ return 'task-initiated'; },
1073
+ transform: async ({ callbackToken }) => { /* ... */ return 'task-initiated'; },
1074
+ notify: async ({ callbackToken }) => { /* ... */ return 'task-initiated'; },
1075
1075
  },
1076
- defaultTimeoutMs: 30_000,
1077
1076
  onDrain: (events, live, schedule) => console.log(`${events.length} events, ${schedule.eligible.length} eligible`),
1078
1077
  });
1079
1078
 
@@ -1081,18 +1080,30 @@ const rg = createReactiveGraph(config, {
1081
1080
  rg.push({ type: 'inject-tokens', tokens: [], timestamp: new Date().toISOString() });
1082
1081
  // fetch runs -> completes -> transform becomes eligible -> runs -> notify -> done
1083
1082
 
1084
- // 3. Add nodes at runtime (with handler)
1085
- rg.addNode('alert', { requires: ['anomaly'], provides: ['alerted'] }, async (ctx) => {
1086
- await pageOncall(ctx.taskName);
1087
- return {};
1083
+ // 3. Add nodes at runtime
1084
+ rg.addNode('alert', { requires: ['anomaly'], provides: ['alerted'], taskHandlers: ['alert'] });
1085
+ rg.registerHandler('alert', async ({ callbackToken }) => {
1086
+ // ... do work, then resolve the callback
1087
+ rg.resolveCallback(callbackToken, { alerted: true });
1088
+ return 'task-initiated';
1088
1089
  });
1089
1090
 
1090
- // 4. Read state
1091
+ // 4. Dynamic wiring mutations
1092
+ rg.addRequires('alert', ['sentiment']); // add a new dependency
1093
+ rg.removeRequires('alert', ['sentiment']); // detach it
1094
+ rg.addProvides('fetch', ['market-data']); // produce a new token
1095
+ rg.removeProvides('fetch', ['market-data']); // stop producing it
1096
+
1097
+ // 5. Batch events + selective retrigger
1098
+ rg.pushAll([event1, event2]); // atomic multi-event push
1099
+ rg.retrigger('fetch'); // re-run a single task
1100
+ rg.retriggerAll(['fetch', 'transform']); // re-run multiple tasks
1101
+
1102
+ // 6. Read state
1091
1103
  rg.getState(); // LiveGraph snapshot
1092
1104
  rg.getSchedule(); // current ScheduleResult
1093
- rg.getDispatchState(); // Map<taskName, DispatchEntry>
1094
1105
 
1095
- // 5. Cleanup
1106
+ // 7. Cleanup
1096
1107
  rg.dispose();
1097
1108
  ```
1098
1109
 
@@ -1110,27 +1121,36 @@ push(event)
1110
1121
 
1111
1122
  The journal serializes concurrent callbacks — multiple handlers complete simultaneously, their events batch into a single `applyEvents()` call. No race conditions.
1112
1123
 
1113
- **Dispatch lifecycle (reactive-layer internal, NOT in core types):**
1124
+ **Handler model:** Handlers are initiators. They receive a `callbackToken` and return `'task-initiated'` or `'task-initiate-failure'`. When work completes, call `rg.resolveCallback(token, data, errors?)` to push the result back through the engine.
1125
+
1126
+ **ReactiveGraph API:**
1114
1127
 
1115
- | Status | Meaning |
1128
+ | Method | Description |
1116
1129
  |---|---|
1117
- | `initiated` | Handler callback fired, awaiting response |
1118
- | `dispatch-failed` | Handler threw synchronously |
1119
- | `timed-out` | No callback within deadline |
1120
- | `retry-queued` | Will retry on next drain cycle |
1121
- | `abandoned` | Max dispatch retries exceeded -> pushes `task-failed` to core |
1130
+ | `push(event)` | Push a single event into the engine |
1131
+ | `pushAll(events)` | Push multiple events atomically |
1132
+ | `resolveCallback(token, data, errors?)` | Resolve a handler's callback token |
1133
+ | `addNode(name, config)` | Add a task to the live graph |
1134
+ | `removeNode(name)` | Remove a task from the live graph |
1135
+ | `addRequires(name, tokens)` | Add require tokens to a task |
1136
+ | `removeRequires(name, tokens)` | Remove require tokens from a task |
1137
+ | `addProvides(name, tokens)` | Add provide tokens to a task |
1138
+ | `removeProvides(name, tokens)` | Remove provide tokens from a task |
1139
+ | `registerHandler(name, fn)` | Register a named handler |
1140
+ | `unregisterHandler(name)` | Unregister a handler |
1141
+ | `retrigger(name)` | Reset and re-run a single task |
1142
+ | `retriggerAll(names)` | Reset and re-run multiple tasks |
1143
+ | `getState()` | Current LiveGraph snapshot |
1144
+ | `getSchedule()` | Current ScheduleResult |
1145
+ | `dispose()` | Shut down the reactive graph |
1122
1146
 
1123
1147
  **Options:**
1124
1148
 
1125
1149
  | Option | Default | Description |
1126
1150
  |---|---|---|
1127
- | `handlers` | (required) | `Record<string, TaskHandler>` |
1128
- | `maxDispatchRetries` | `3` | Times to retry invoking a handler |
1129
- | `defaultTimeoutMs` | `30000` | Handler callback deadline (0 = no timeout) |
1151
+ | `handlers` | (required) | `Record<string, TaskHandlerFn>` |
1130
1152
  | `journal` | `MemoryJournal` | Event log adapter (`MemoryJournal` or `FileJournal`) |
1131
1153
  | `onDrain` | — | Called after each drain cycle (observability) |
1132
- | `onDispatchFailed` | — | Called when handler invocation fails |
1133
- | `onAbandoned` | — | Called when task dispatch is abandoned |
1134
1154
 
1135
1155
  ---
1136
1156
 
@@ -1484,6 +1504,7 @@ See the [examples/](./examples) directory:
1484
1504
  | [Stock Dashboard](./examples/continuous-event-graph/stock-dashboard.ts) | Continuous Event Graph | Runtime mutations, token drain, upstream/downstream, snapshot |
1485
1505
  | [Reactive Pipeline](./examples/continuous-event-graph/reactive-pipeline.ts) | Reactive Graph | Self-driving ETL — push once, 4 tasks complete automatically |
1486
1506
  | [Reactive Monitoring](./examples/continuous-event-graph/reactive-monitoring.ts) | Reactive Graph | Conditional routing, on_failure escalation, runtime addNode |
1507
+ | [Live Portfolio Dashboard](./examples/continuous-event-graph/live-portfolio-dashboard.ts) | Reactive Graph + Live Cards | 15+ cards, disk roundtrip, addRequires/removeRequires, addProvides/removeProvides, pushAll, retriggerAll |
1487
1508
  | [Executor Pipeline](./examples/event-graph/executor-pipeline.ts) | Event Graph (library) | You-drive-the-loop ETL with random async delays |
1488
1509
  | [Executor Diamond](./examples/event-graph/executor-diamond.ts) | Event Graph (library) | Parallel fan-out/fan-in diamond DAG with async executors |
1489
1510
  | [Azure Deployment](./examples/inference/azure-deployment.ts) | Inference | LLM analyzes deployment logs, auto-completes checkpoints |
@@ -1,4 +1,4 @@
1
- import { G as GraphConfig, c as ExecutionState, S as SchedulerResult, e as GraphEvent, T as TaskConfig, l as TaskState, R as RefreshStrategy, g as StuckDetection, C as CompletionStrategy, a as ConflictStrategy, b as ExecutionMode, d as ExecutionStatus, m as TaskStatus } from './types-BpWrH1sf.js';
1
+ import { G as GraphConfig, c as ExecutionState, S as SchedulerResult, f as GraphEvent, T as TaskConfig, e as GraphEngineStore, R as RefreshStrategy, h as StuckDetection, C as CompletionStrategy, a as ConflictStrategy, b as ExecutionMode, d as ExecutionStatus, m as TaskStatus } from './types-DEj7OakX.js';
2
2
  import { e as StepFlowConfig } from './types-FZ_eyErS.js';
3
3
 
4
4
  /**
@@ -54,9 +54,9 @@ declare function getRequires(task: TaskConfig | undefined): string[];
54
54
  declare function getAllTasks(graph: GraphConfig): Record<string, TaskConfig>;
55
55
  declare function getTask(graph: GraphConfig, taskName: string): TaskConfig | undefined;
56
56
  declare function hasTask(graph: GraphConfig, taskName: string): boolean;
57
- declare function isNonActiveTask(taskState: TaskState | undefined): boolean;
58
- declare function isTaskCompleted(taskState: TaskState | undefined): boolean;
59
- declare function isTaskRunning(taskState: TaskState | undefined): boolean;
57
+ declare function isNonActiveTask(taskState: GraphEngineStore | undefined): boolean;
58
+ declare function isTaskCompleted(taskState: GraphEngineStore | undefined): boolean;
59
+ declare function isTaskRunning(taskState: GraphEngineStore | undefined): boolean;
60
60
  declare function getRefreshStrategy(taskConfig: TaskConfig, graphSettings?: {
61
61
  refreshStrategy?: RefreshStrategy;
62
62
  }): RefreshStrategy;
@@ -69,7 +69,7 @@ declare function getMaxExecutions(taskConfig: TaskConfig): number | undefined;
69
69
  * Tasks with strategies other than 'once' may have completed and reset.
70
70
  * Pure function.
71
71
  */
72
- declare function computeAvailableOutputs(graph: GraphConfig, taskStates: Record<string, TaskState>): string[];
72
+ declare function computeAvailableOutputs(graph: GraphConfig, taskStates: Record<string, GraphEngineStore>): string[];
73
73
  /**
74
74
  * Group candidate tasks by the outputs they provide.
75
75
  * Used to detect conflicts (multiple tasks providing the same output).
@@ -90,7 +90,7 @@ declare function addDynamicTask(graph: GraphConfig, taskName: string, taskConfig
90
90
  /**
91
91
  * Create default task state for a new task.
92
92
  */
93
- declare function createDefaultTaskState(): TaskState;
93
+ declare function createDefaultGraphEngineStore(): GraphEngineStore;
94
94
  /**
95
95
  * Create the initial execution state for a graph.
96
96
  */
@@ -258,56 +258,6 @@ declare function exportGraphConfig(config: GraphConfig, options?: ExportOptions)
258
258
  */
259
259
  declare function exportGraphConfigToFile(config: GraphConfig, filePath: string, options?: ExportOptions): Promise<void>;
260
260
 
261
- /**
262
- * Event Graph — Semantic Graph Validation
263
- *
264
- * Validates the logical correctness of a static graph configuration.
265
- * Unlike validateGraphConfig() which checks JSON structure, this checks:
266
- * - Dangling requires (tokens no task produces)
267
- * - Circular dependencies
268
- * - Provide conflicts (multiple tasks producing same token)
269
- * - Unreachable goal tokens
270
- * - Dead-end tasks (no provides)
271
- * - Self-dependencies
272
- * - Orphaned tasks (disconnected from the graph)
273
- *
274
- * Pure function — config in, diagnostics out.
275
- */
276
-
277
- type IssueSeverity = 'error' | 'warning' | 'info';
278
- interface GraphIssue {
279
- /** Severity: error = will break execution, warning = may cause problems, info = notable */
280
- severity: IssueSeverity;
281
- /** Machine-readable issue code */
282
- code: string;
283
- /** Human-readable description */
284
- message: string;
285
- /** Affected task names (if applicable) */
286
- tasks?: string[];
287
- /** Affected tokens (if applicable) */
288
- tokens?: string[];
289
- }
290
- interface GraphValidationResult {
291
- /** true if no errors (warnings/info are allowed) */
292
- valid: boolean;
293
- /** All issues found */
294
- issues: GraphIssue[];
295
- /** Just the errors */
296
- errors: GraphIssue[];
297
- /** Just the warnings */
298
- warnings: GraphIssue[];
299
- }
300
- /**
301
- * Validate the semantic correctness of a static event-graph configuration.
302
- *
303
- * Checks for logical issues that would cause execution failures, stuck states,
304
- * or unexpected behavior. Does NOT check JSON structure (use validateGraphConfig for that).
305
- *
306
- * @param graph - The event-graph configuration to validate
307
- * @returns Validation result with categorized issues
308
- */
309
- declare function validateGraph(graph: GraphConfig): GraphValidationResult;
310
-
311
261
  /**
312
262
  * schema-validator — Full JSON Schema validation for EventGraph configs.
313
263
  *
@@ -349,4 +299,4 @@ declare const DEFAULTS: {
349
299
  readonly MAX_ITERATIONS: 1000;
350
300
  };
351
301
 
352
- export { isNonActiveTask as A, isRerunnable as B, COMPLETION_STRATEGIES as C, DEFAULTS as D, EXECUTION_MODES as E, isTaskCompleted as F, type GraphIssue as G, isTaskRunning as H, type IssueSeverity as I, loadGraphConfig as J, next as K, planExecution as L, type MermaidOptions as M, validateGraph as N, validateGraphConfig as O, validateGraphSchema as P, addKeyToProvides as Q, addKeyToRequires as R, groupTasksByProvides as S, TASK_STATUS as T, hasOutputConflict as U, removeKeyFromProvides as V, removeKeyFromRequires as W, CONFLICT_STRATEGIES as a, type CompletionResult as b, EXECUTION_STATUS as c, type ExecutionPlan as d, type ExportOptions as e, type GraphValidationResult as f, addDynamicTask as g, apply as h, applyAll as i, computeAvailableOutputs as j, createDefaultTaskState as k, createInitialExecutionState as l, detectStuckState as m, exportGraphConfig as n, exportGraphConfigToFile as o, flowToMermaid as p, getAllTasks as q, getCandidateTasks as r, getMaxExecutions as s, getProvides as t, getRefreshStrategy as u, getRequires as v, getTask as w, graphToMermaid as x, hasTask as y, isExecutionComplete as z };
302
+ export { isRerunnable as A, isTaskCompleted as B, COMPLETION_STRATEGIES as C, DEFAULTS as D, EXECUTION_MODES as E, isTaskRunning as F, loadGraphConfig as G, next as H, planExecution as I, validateGraphConfig as J, validateGraphSchema as K, addKeyToProvides as L, type MermaidOptions as M, addKeyToRequires as N, groupTasksByProvides as O, hasOutputConflict as P, removeKeyFromProvides as Q, removeKeyFromRequires as R, TASK_STATUS as T, CONFLICT_STRATEGIES as a, type CompletionResult as b, EXECUTION_STATUS as c, type ExecutionPlan as d, type ExportOptions as e, addDynamicTask as f, apply as g, applyAll as h, computeAvailableOutputs as i, createDefaultGraphEngineStore as j, createInitialExecutionState as k, detectStuckState as l, exportGraphConfig as m, exportGraphConfigToFile as n, flowToMermaid as o, getAllTasks as p, getCandidateTasks as q, getMaxExecutions as r, getProvides as s, getRefreshStrategy as t, getRequires as u, getTask as v, graphToMermaid as w, hasTask as x, isExecutionComplete as y, isNonActiveTask as z };
@@ -1,4 +1,4 @@
1
- import { G as GraphConfig, c as ExecutionState, S as SchedulerResult, e as GraphEvent, T as TaskConfig, l as TaskState, R as RefreshStrategy, g as StuckDetection, C as CompletionStrategy, a as ConflictStrategy, b as ExecutionMode, d as ExecutionStatus, m as TaskStatus } from './types-BpWrH1sf.cjs';
1
+ import { G as GraphConfig, c as ExecutionState, S as SchedulerResult, f as GraphEvent, T as TaskConfig, e as GraphEngineStore, R as RefreshStrategy, h as StuckDetection, C as CompletionStrategy, a as ConflictStrategy, b as ExecutionMode, d as ExecutionStatus, m as TaskStatus } from './types-DEj7OakX.cjs';
2
2
  import { e as StepFlowConfig } from './types-FZ_eyErS.cjs';
3
3
 
4
4
  /**
@@ -54,9 +54,9 @@ declare function getRequires(task: TaskConfig | undefined): string[];
54
54
  declare function getAllTasks(graph: GraphConfig): Record<string, TaskConfig>;
55
55
  declare function getTask(graph: GraphConfig, taskName: string): TaskConfig | undefined;
56
56
  declare function hasTask(graph: GraphConfig, taskName: string): boolean;
57
- declare function isNonActiveTask(taskState: TaskState | undefined): boolean;
58
- declare function isTaskCompleted(taskState: TaskState | undefined): boolean;
59
- declare function isTaskRunning(taskState: TaskState | undefined): boolean;
57
+ declare function isNonActiveTask(taskState: GraphEngineStore | undefined): boolean;
58
+ declare function isTaskCompleted(taskState: GraphEngineStore | undefined): boolean;
59
+ declare function isTaskRunning(taskState: GraphEngineStore | undefined): boolean;
60
60
  declare function getRefreshStrategy(taskConfig: TaskConfig, graphSettings?: {
61
61
  refreshStrategy?: RefreshStrategy;
62
62
  }): RefreshStrategy;
@@ -69,7 +69,7 @@ declare function getMaxExecutions(taskConfig: TaskConfig): number | undefined;
69
69
  * Tasks with strategies other than 'once' may have completed and reset.
70
70
  * Pure function.
71
71
  */
72
- declare function computeAvailableOutputs(graph: GraphConfig, taskStates: Record<string, TaskState>): string[];
72
+ declare function computeAvailableOutputs(graph: GraphConfig, taskStates: Record<string, GraphEngineStore>): string[];
73
73
  /**
74
74
  * Group candidate tasks by the outputs they provide.
75
75
  * Used to detect conflicts (multiple tasks providing the same output).
@@ -90,7 +90,7 @@ declare function addDynamicTask(graph: GraphConfig, taskName: string, taskConfig
90
90
  /**
91
91
  * Create default task state for a new task.
92
92
  */
93
- declare function createDefaultTaskState(): TaskState;
93
+ declare function createDefaultGraphEngineStore(): GraphEngineStore;
94
94
  /**
95
95
  * Create the initial execution state for a graph.
96
96
  */
@@ -258,56 +258,6 @@ declare function exportGraphConfig(config: GraphConfig, options?: ExportOptions)
258
258
  */
259
259
  declare function exportGraphConfigToFile(config: GraphConfig, filePath: string, options?: ExportOptions): Promise<void>;
260
260
 
261
- /**
262
- * Event Graph — Semantic Graph Validation
263
- *
264
- * Validates the logical correctness of a static graph configuration.
265
- * Unlike validateGraphConfig() which checks JSON structure, this checks:
266
- * - Dangling requires (tokens no task produces)
267
- * - Circular dependencies
268
- * - Provide conflicts (multiple tasks producing same token)
269
- * - Unreachable goal tokens
270
- * - Dead-end tasks (no provides)
271
- * - Self-dependencies
272
- * - Orphaned tasks (disconnected from the graph)
273
- *
274
- * Pure function — config in, diagnostics out.
275
- */
276
-
277
- type IssueSeverity = 'error' | 'warning' | 'info';
278
- interface GraphIssue {
279
- /** Severity: error = will break execution, warning = may cause problems, info = notable */
280
- severity: IssueSeverity;
281
- /** Machine-readable issue code */
282
- code: string;
283
- /** Human-readable description */
284
- message: string;
285
- /** Affected task names (if applicable) */
286
- tasks?: string[];
287
- /** Affected tokens (if applicable) */
288
- tokens?: string[];
289
- }
290
- interface GraphValidationResult {
291
- /** true if no errors (warnings/info are allowed) */
292
- valid: boolean;
293
- /** All issues found */
294
- issues: GraphIssue[];
295
- /** Just the errors */
296
- errors: GraphIssue[];
297
- /** Just the warnings */
298
- warnings: GraphIssue[];
299
- }
300
- /**
301
- * Validate the semantic correctness of a static event-graph configuration.
302
- *
303
- * Checks for logical issues that would cause execution failures, stuck states,
304
- * or unexpected behavior. Does NOT check JSON structure (use validateGraphConfig for that).
305
- *
306
- * @param graph - The event-graph configuration to validate
307
- * @returns Validation result with categorized issues
308
- */
309
- declare function validateGraph(graph: GraphConfig): GraphValidationResult;
310
-
311
261
  /**
312
262
  * schema-validator — Full JSON Schema validation for EventGraph configs.
313
263
  *
@@ -349,4 +299,4 @@ declare const DEFAULTS: {
349
299
  readonly MAX_ITERATIONS: 1000;
350
300
  };
351
301
 
352
- export { isNonActiveTask as A, isRerunnable as B, COMPLETION_STRATEGIES as C, DEFAULTS as D, EXECUTION_MODES as E, isTaskCompleted as F, type GraphIssue as G, isTaskRunning as H, type IssueSeverity as I, loadGraphConfig as J, next as K, planExecution as L, type MermaidOptions as M, validateGraph as N, validateGraphConfig as O, validateGraphSchema as P, addKeyToProvides as Q, addKeyToRequires as R, groupTasksByProvides as S, TASK_STATUS as T, hasOutputConflict as U, removeKeyFromProvides as V, removeKeyFromRequires as W, CONFLICT_STRATEGIES as a, type CompletionResult as b, EXECUTION_STATUS as c, type ExecutionPlan as d, type ExportOptions as e, type GraphValidationResult as f, addDynamicTask as g, apply as h, applyAll as i, computeAvailableOutputs as j, createDefaultTaskState as k, createInitialExecutionState as l, detectStuckState as m, exportGraphConfig as n, exportGraphConfigToFile as o, flowToMermaid as p, getAllTasks as q, getCandidateTasks as r, getMaxExecutions as s, getProvides as t, getRefreshStrategy as u, getRequires as v, getTask as w, graphToMermaid as x, hasTask as y, isExecutionComplete as z };
302
+ export { isRerunnable as A, isTaskCompleted as B, COMPLETION_STRATEGIES as C, DEFAULTS as D, EXECUTION_MODES as E, isTaskRunning as F, loadGraphConfig as G, next as H, planExecution as I, validateGraphConfig as J, validateGraphSchema as K, addKeyToProvides as L, type MermaidOptions as M, addKeyToRequires as N, groupTasksByProvides as O, hasOutputConflict as P, removeKeyFromProvides as Q, removeKeyFromRequires as R, TASK_STATUS as T, CONFLICT_STRATEGIES as a, type CompletionResult as b, EXECUTION_STATUS as c, type ExecutionPlan as d, type ExportOptions as e, addDynamicTask as f, apply as g, applyAll as h, computeAvailableOutputs as i, createDefaultGraphEngineStore as j, createInitialExecutionState as k, detectStuckState as l, exportGraphConfig as m, exportGraphConfigToFile as n, flowToMermaid as o, getAllTasks as p, getCandidateTasks as q, getMaxExecutions as r, getProvides as s, getRefreshStrategy as t, getRequires as u, getTask as v, graphToMermaid as w, hasTask as x, isExecutionComplete as y, isNonActiveTask as z };