@ai.ntellect/core 0.7.0 → 0.7.2

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 (84) hide show
  1. package/dist/graph/controller.d.ts +33 -0
  2. package/dist/graph/controller.d.ts.map +1 -0
  3. package/dist/graph/controller.js +73 -0
  4. package/dist/graph/controller.js.map +1 -0
  5. package/dist/graph/event-manager.d.ts +92 -0
  6. package/dist/graph/event-manager.d.ts.map +1 -0
  7. package/dist/graph/event-manager.js +238 -0
  8. package/dist/graph/event-manager.js.map +1 -0
  9. package/dist/graph/index.d.ts +157 -0
  10. package/dist/graph/index.d.ts.map +1 -0
  11. package/dist/graph/index.js +299 -0
  12. package/dist/graph/index.js.map +1 -0
  13. package/dist/graph/logger.d.ts +46 -0
  14. package/dist/graph/logger.d.ts.map +1 -0
  15. package/dist/graph/logger.js +69 -0
  16. package/dist/graph/logger.js.map +1 -0
  17. package/dist/graph/node.d.ts +103 -0
  18. package/dist/graph/node.d.ts.map +1 -0
  19. package/dist/graph/node.js +310 -0
  20. package/dist/graph/node.js.map +1 -0
  21. package/dist/graph/observer.d.ts +113 -0
  22. package/dist/graph/observer.d.ts.map +1 -0
  23. package/dist/graph/observer.js +197 -0
  24. package/dist/graph/observer.js.map +1 -0
  25. package/dist/index.d.ts +26 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +42 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/interfaces/index.d.ts +447 -0
  30. package/dist/interfaces/index.d.ts.map +1 -0
  31. package/dist/interfaces/index.js +75 -0
  32. package/dist/interfaces/index.js.map +1 -0
  33. package/dist/modules/agenda/adapters/node-cron/index.d.ts +17 -0
  34. package/dist/modules/agenda/adapters/node-cron/index.d.ts.map +1 -0
  35. package/dist/modules/agenda/adapters/node-cron/index.js +30 -0
  36. package/dist/modules/agenda/adapters/node-cron/index.js.map +1 -0
  37. package/dist/modules/agenda/index.d.ts +63 -0
  38. package/dist/modules/agenda/index.d.ts.map +1 -0
  39. package/dist/modules/agenda/index.js +141 -0
  40. package/dist/modules/agenda/index.js.map +1 -0
  41. package/dist/modules/embedding/adapters/ai/index.d.ts +29 -0
  42. package/dist/modules/embedding/adapters/ai/index.d.ts.map +1 -0
  43. package/dist/modules/embedding/adapters/ai/index.js +58 -0
  44. package/dist/modules/embedding/adapters/ai/index.js.map +1 -0
  45. package/dist/modules/embedding/index.d.ts +36 -0
  46. package/dist/modules/embedding/index.d.ts.map +1 -0
  47. package/dist/modules/embedding/index.js +60 -0
  48. package/dist/modules/embedding/index.js.map +1 -0
  49. package/dist/modules/memory/adapters/in-memory/index.d.ts +120 -0
  50. package/dist/modules/memory/adapters/in-memory/index.d.ts.map +1 -0
  51. package/dist/modules/memory/adapters/in-memory/index.js +211 -0
  52. package/dist/modules/memory/adapters/in-memory/index.js.map +1 -0
  53. package/dist/modules/memory/adapters/meilisearch/index.d.ts +110 -0
  54. package/dist/modules/memory/adapters/meilisearch/index.d.ts.map +1 -0
  55. package/dist/modules/memory/adapters/meilisearch/index.js +321 -0
  56. package/dist/modules/memory/adapters/meilisearch/index.js.map +1 -0
  57. package/dist/modules/memory/adapters/redis/index.d.ts +82 -0
  58. package/dist/modules/memory/adapters/redis/index.d.ts.map +1 -0
  59. package/dist/modules/memory/adapters/redis/index.js +159 -0
  60. package/dist/modules/memory/adapters/redis/index.js.map +1 -0
  61. package/dist/modules/memory/index.d.ts +67 -0
  62. package/dist/modules/memory/index.d.ts.map +1 -0
  63. package/dist/modules/memory/index.js +104 -0
  64. package/dist/modules/memory/index.js.map +1 -0
  65. package/dist/types/index.d.ts +166 -0
  66. package/dist/types/index.d.ts.map +1 -0
  67. package/dist/types/index.js +3 -0
  68. package/dist/types/index.js.map +1 -0
  69. package/dist/utils/generate-action-schema.d.ts +5 -0
  70. package/dist/utils/generate-action-schema.d.ts.map +1 -0
  71. package/dist/utils/generate-action-schema.js +44 -0
  72. package/dist/utils/generate-action-schema.js.map +1 -0
  73. package/dist/utils/header-builder.d.ts +12 -0
  74. package/dist/utils/header-builder.d.ts.map +1 -0
  75. package/dist/utils/header-builder.js +35 -0
  76. package/dist/utils/header-builder.js.map +1 -0
  77. package/graph/observer.ts +1 -1
  78. package/modules/memory/adapters/in-memory/index.ts +6 -2
  79. package/modules/memory/adapters/meilisearch/index.ts +6 -2
  80. package/modules/memory/adapters/redis/index.ts +2 -2
  81. package/modules/memory/index.ts +1 -1
  82. package/package.json +3 -1
  83. package/tsconfig.json +13 -2
  84. package/types/index.ts +1 -1
@@ -0,0 +1,33 @@
1
+ import { ZodSchema } from "zod";
2
+ import { GraphFlow } from "./index";
3
+ /**
4
+ * Controller class for managing the execution of graph flows
5
+ * Handles both sequential and parallel execution of multiple graphs
6
+ */
7
+ export declare class GraphFlowController {
8
+ /**
9
+ * Executes multiple graphs sequentially
10
+ * @param graphs - Array of GraphFlow instances to execute
11
+ * @param startNodes - Array of starting node identifiers for each graph
12
+ * @param inputContexts - Optional array of initial contexts for each graph
13
+ * @returns Map containing results of each graph execution, keyed by graph name and index
14
+ * @template T - Zod schema type for graph context validation
15
+ */
16
+ static executeSequential<T extends ZodSchema[]>(graphs: {
17
+ [K in keyof T]: GraphFlow<T[K]>;
18
+ }, startNodes: string[], inputs: any[]): Promise<any[]>;
19
+ /**
20
+ * Executes multiple graphs in parallel with optional concurrency control
21
+ * @param graphs - Array of GraphFlow instances to execute
22
+ * @param startNodes - Array of starting node identifiers for each graph
23
+ * @param inputContexts - Optional array of initial contexts for each graph
24
+ * @param inputs - Optional array of additional inputs for each graph
25
+ * @param concurrencyLimit - Optional limit on number of concurrent graph executions
26
+ * @returns Map containing results of each graph execution, keyed by graph name
27
+ * @template T - Zod schema type for graph context validation
28
+ */
29
+ static executeParallel<T extends ZodSchema[]>(graphs: {
30
+ [K in keyof T]: GraphFlow<T[K]>;
31
+ }, startNodes: string[], concurrency: number, inputs: any[]): Promise<any[]>;
32
+ }
33
+ //# sourceMappingURL=controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../graph/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;;OAOG;WACU,iBAAiB,CAAC,CAAC,SAAS,SAAS,EAAE,EAClD,MAAM,EAAE;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,EAC3C,UAAU,EAAE,MAAM,EAAE,EACpB,MAAM,EAAE,GAAG,EAAE,GACZ,OAAO,CAAC,GAAG,EAAE,CAAC;IASjB;;;;;;;;;OASG;WACU,eAAe,CAAC,CAAC,SAAS,SAAS,EAAE,EAChD,MAAM,EAAE;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,EAC3C,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,GAAG,EAAE,GACZ,OAAO,CAAC,GAAG,EAAE,CAAC;CAgClB"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.GraphFlowController = void 0;
13
+ /**
14
+ * Controller class for managing the execution of graph flows
15
+ * Handles both sequential and parallel execution of multiple graphs
16
+ */
17
+ class GraphFlowController {
18
+ /**
19
+ * Executes multiple graphs sequentially
20
+ * @param graphs - Array of GraphFlow instances to execute
21
+ * @param startNodes - Array of starting node identifiers for each graph
22
+ * @param inputContexts - Optional array of initial contexts for each graph
23
+ * @returns Map containing results of each graph execution, keyed by graph name and index
24
+ * @template T - Zod schema type for graph context validation
25
+ */
26
+ static executeSequential(graphs, startNodes, inputs) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ const results = new Map();
29
+ for (let i = 0; i < graphs.length; i++) {
30
+ const result = yield graphs[i].execute(startNodes[i], inputs[i]);
31
+ results.set(`${graphs[i].name}-${i}`, result);
32
+ }
33
+ return Array.from(results.values());
34
+ });
35
+ }
36
+ /**
37
+ * Executes multiple graphs in parallel with optional concurrency control
38
+ * @param graphs - Array of GraphFlow instances to execute
39
+ * @param startNodes - Array of starting node identifiers for each graph
40
+ * @param inputContexts - Optional array of initial contexts for each graph
41
+ * @param inputs - Optional array of additional inputs for each graph
42
+ * @param concurrencyLimit - Optional limit on number of concurrent graph executions
43
+ * @returns Map containing results of each graph execution, keyed by graph name
44
+ * @template T - Zod schema type for graph context validation
45
+ */
46
+ static executeParallel(graphs, startNodes, concurrency, inputs) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const results = new Map();
49
+ if (inputs) {
50
+ inputs = inputs.map((input) => input || {});
51
+ }
52
+ if (concurrency) {
53
+ for (let i = 0; i < graphs.length; i += concurrency) {
54
+ const batchResults = yield Promise.all(graphs
55
+ .slice(i, i + concurrency)
56
+ .map((graph, index) => graph.execute(startNodes[i + index], inputs === null || inputs === void 0 ? void 0 : inputs[i + index])));
57
+ batchResults.forEach((result, index) => {
58
+ results.set(`${graphs[i + index].name}`, result);
59
+ });
60
+ }
61
+ }
62
+ else {
63
+ const allResults = yield Promise.all(graphs.map((graph, index) => graph.execute(startNodes[index], (inputs === null || inputs === void 0 ? void 0 : inputs[index]) || {})));
64
+ allResults.forEach((result, index) => {
65
+ results.set(`${graphs[index].name}`, result);
66
+ });
67
+ }
68
+ return Array.from(results.values());
69
+ });
70
+ }
71
+ }
72
+ exports.GraphFlowController = GraphFlowController;
73
+ //# sourceMappingURL=controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../graph/controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAIA;;;GAGG;AACH,MAAa,mBAAmB;IAC9B;;;;;;;OAOG;IACH,MAAM,CAAO,iBAAiB,CAC5B,MAA2C,EAC3C,UAAoB,EACpB,MAAa;;YAEb,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoC,CAAC;YAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACtC,CAAC;KAAA;IAED;;;;;;;;;OASG;IACH,MAAM,CAAO,eAAe,CAC1B,MAA2C,EAC3C,UAAoB,EACpB,WAAmB,EACnB,MAAa;;YAEb,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoC,CAAC;YAE5D,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;oBACpD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,MAAM;yBACH,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC;yBACzB,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACpB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAC1D,CACJ,CAAC;oBACF,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBACrC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;oBACnD,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAC1B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,KAAK,CAAC,KAAI,EAAE,CAAC,CACxD,CACF,CAAC;gBACF,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACnC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACtC,CAAC;KAAA;CACF;AArED,kDAqEC"}
@@ -0,0 +1,92 @@
1
+ import { ZodSchema } from "zod";
2
+ import { IEventEmitter } from "../interfaces";
3
+ import { GraphContext, Node } from "../types";
4
+ import { GraphNode } from "./node";
5
+ /**
6
+ * Manages event handling and routing for a graph
7
+ * Coordinates event emission, listening, and execution of event-driven nodes
8
+ * @template T - The Zod schema type for validation
9
+ */
10
+ export declare class GraphEventManager<T extends ZodSchema> {
11
+ private eventEmitter;
12
+ private nodes;
13
+ private nodeExecutor?;
14
+ private eventSubject;
15
+ private nodeStreams;
16
+ private context;
17
+ private name;
18
+ private graphEvents?;
19
+ private entryNode?;
20
+ private globalErrorHandler?;
21
+ /**
22
+ * Creates a new GraphEventManager instance
23
+ * @param eventEmitter - The event emitter implementation to use
24
+ * @param nodes - Map of all nodes in the graph
25
+ * @param name - Name of the graph
26
+ * @param context - Initial graph context
27
+ * @param graphEvents - List of events the graph should listen to
28
+ * @param entryNode - Name of the entry node for graph events
29
+ * @param globalErrorHandler - Global error handling function
30
+ * @param nodeExecutor - GraphNode instance for executing nodes
31
+ */
32
+ constructor(eventEmitter: IEventEmitter, nodes: Map<string, Node<T, any>>, name: string, context: GraphContext<T>, graphEvents?: string[], entryNode?: string, globalErrorHandler?: (error: Error, context: GraphContext<T>) => void, nodeExecutor?: GraphNode<T> | undefined);
33
+ /**
34
+ * Sets up event streams for all nodes that listen to events
35
+ */
36
+ setupEventStreams(): void;
37
+ /**
38
+ * Emits an event with optional payload and context
39
+ * @param type - The type of event to emit
40
+ * @param payload - Optional payload data
41
+ * @param context - Optional graph context
42
+ */
43
+ emitEvent<P = any>(type: string, payload?: P, context?: GraphContext<T>): void;
44
+ /**
45
+ * Sets up event listeners for all nodes in the graph
46
+ * Handles cleanup and re-registration of event listeners
47
+ */
48
+ setupEventListeners(): void;
49
+ /**
50
+ * Sets up listeners for graph-level events
51
+ * Handles graph start, completion, and error events
52
+ */
53
+ setupGraphEventListeners(): void;
54
+ /**
55
+ * Waits for a set of events to occur within a timeout period
56
+ * @param events - Array of event names to wait for
57
+ * @param timeout - Maximum time to wait in milliseconds
58
+ * @returns Promise that resolves with array of received events
59
+ * @throws Error if timeout occurs before all events are received
60
+ */
61
+ waitForEvents(events: string[], timeout?: number): Promise<any[]>;
62
+ /**
63
+ * Registers an event handler
64
+ * @param eventName - Name of the event to listen for
65
+ * @param handler - Function to handle the event
66
+ */
67
+ on(eventName: string, handler: (...args: any[]) => void): void;
68
+ /**
69
+ * Emits an event through the event emitter
70
+ * @param eventName - Name of the event to emit
71
+ * @param data - Optional data to include with the event
72
+ */
73
+ emit(eventName: string, data?: any): void;
74
+ /**
75
+ * Creates a new context object by cloning the current context
76
+ * @returns A new graph context instance
77
+ * @private
78
+ */
79
+ private createNewContext;
80
+ /**
81
+ * Executes a node with the given parameters
82
+ * @param nodeName - Name of the node to execute
83
+ * @param context - Graph context for execution
84
+ * @param inputs - Input data for the node
85
+ * @param triggeredByEvent - Whether execution was triggered by an event
86
+ * @returns Promise that resolves when execution is complete
87
+ * @throws Error if nodeExecutor is not initialized
88
+ * @private
89
+ */
90
+ private executeNode;
91
+ }
92
+ //# sourceMappingURL=event-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-manager.d.ts","sourceRoot":"","sources":["../../graph/event-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAc,IAAI,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;;GAIG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,SAAS;IAqB9C,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,YAAY,CAAC;IA3BvB,OAAO,CAAC,YAAY,CAAyC;IAC7D,OAAO,CAAC,WAAW,CAAqD;IACxE,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAAC,CAAW;IAC/B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,kBAAkB,CAAC,CAAmD;IAE9E;;;;;;;;;;OAUG;gBAEO,YAAY,EAAE,aAAa,EAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EACxC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EACxB,WAAW,CAAC,EAAE,MAAM,EAAE,EACtB,SAAS,CAAC,EAAE,MAAM,EAClB,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,EAC7D,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,YAAA;IAUrC;;OAEG;IACI,iBAAiB,IAAI,IAAI;IAWhC;;;;;OAKG;IACI,SAAS,CAAC,CAAC,GAAG,GAAG,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,CAAC,EACX,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GACxB,IAAI;IAMP;;;OAGG;IACH,mBAAmB,IAAI,IAAI;IAiD3B;;;OAGG;IACH,wBAAwB,IAAI,IAAI;IAuChC;;;;;;OAMG;IACG,aAAa,CACjB,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,GAAE,MAAc,GACtB,OAAO,CAAC,GAAG,EAAE,CAAC;IAiDjB;;;;OAIG;IACH,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAI9D;;;;OAIG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAIzC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;;;;;;;OASG;YACW,WAAW;CAgB1B"}
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.GraphEventManager = void 0;
13
+ const rxjs_1 = require("rxjs");
14
+ /**
15
+ * Manages event handling and routing for a graph
16
+ * Coordinates event emission, listening, and execution of event-driven nodes
17
+ * @template T - The Zod schema type for validation
18
+ */
19
+ class GraphEventManager {
20
+ /**
21
+ * Creates a new GraphEventManager instance
22
+ * @param eventEmitter - The event emitter implementation to use
23
+ * @param nodes - Map of all nodes in the graph
24
+ * @param name - Name of the graph
25
+ * @param context - Initial graph context
26
+ * @param graphEvents - List of events the graph should listen to
27
+ * @param entryNode - Name of the entry node for graph events
28
+ * @param globalErrorHandler - Global error handling function
29
+ * @param nodeExecutor - GraphNode instance for executing nodes
30
+ */
31
+ constructor(eventEmitter, nodes, name, context, graphEvents, entryNode, globalErrorHandler, nodeExecutor) {
32
+ this.eventEmitter = eventEmitter;
33
+ this.nodes = nodes;
34
+ this.nodeExecutor = nodeExecutor;
35
+ this.eventSubject = new rxjs_1.Subject();
36
+ this.nodeStreams = new Map();
37
+ this.name = name;
38
+ this.context = context;
39
+ this.graphEvents = graphEvents;
40
+ this.entryNode = entryNode;
41
+ this.globalErrorHandler = globalErrorHandler;
42
+ this.setupEventStreams();
43
+ }
44
+ /**
45
+ * Sets up event streams for all nodes that listen to events
46
+ */
47
+ setupEventStreams() {
48
+ for (const [nodeName, node] of this.nodes.entries()) {
49
+ if (node.events && node.events.length > 0) {
50
+ const nodeStream = this.eventSubject.pipe((0, rxjs_1.filter)((event) => node.events.includes(event.type)));
51
+ this.nodeStreams.set(nodeName, nodeStream);
52
+ }
53
+ }
54
+ }
55
+ /**
56
+ * Emits an event with optional payload and context
57
+ * @param type - The type of event to emit
58
+ * @param payload - Optional payload data
59
+ * @param context - Optional graph context
60
+ */
61
+ emitEvent(type, payload, context) {
62
+ const event = { type, payload, timestamp: Date.now() };
63
+ this.eventSubject.next(event);
64
+ this.eventEmitter.emit(type, event);
65
+ }
66
+ /**
67
+ * Sets up event listeners for all nodes in the graph
68
+ * Handles cleanup and re-registration of event listeners
69
+ */
70
+ setupEventListeners() {
71
+ // First remove only the existing node-based listeners that we might have created previously
72
+ // We do NOT remove, for example, "nodeStarted" or "nodeCompleted" listeners that test code added.
73
+ for (const [eventName, listener] of this.eventEmitter
74
+ .rawListeners("*")
75
+ .entries()) {
76
+ // This can be tricky—EventEmitter doesn't directly let you remove by "type" of listener.
77
+ // Alternatively, we can store references in a separate structure.
78
+ // For simplicity, let's do a full removeAllListeners() on node-specified events (only),
79
+ // then re-add them below, but keep the test-based events like "nodeStarted" or "nodeCompleted".
80
+ }
81
+ // The simplest approach: removeAllListeners for each event that is declared as a node event
82
+ // so we don't stack up duplicates:
83
+ const allEvents = new Set();
84
+ for (const node of this.nodes.values()) {
85
+ if (node.events) {
86
+ node.events.forEach((evt) => allEvents.add(evt));
87
+ }
88
+ }
89
+ for (const evt of allEvents) {
90
+ // remove only those events that are used by nodes
91
+ this.eventEmitter.removeAllListeners(evt);
92
+ }
93
+ // Now re-add the node-based event triggers
94
+ for (const node of this.nodes.values()) {
95
+ if (node.events && node.events.length > 0) {
96
+ node.events.forEach((event) => {
97
+ this.eventEmitter.on(event, (data) => __awaiter(this, void 0, void 0, function* () {
98
+ const freshContext = structuredClone(this.context);
99
+ if (data)
100
+ Object.assign(freshContext, data);
101
+ // If triggered by an event, we pass "true" so event-driven node will skip `next`.
102
+ yield this.executeNode(node.name, freshContext, undefined,
103
+ /* triggeredByEvent= */ true);
104
+ }));
105
+ });
106
+ }
107
+ }
108
+ }
109
+ /**
110
+ * Sets up listeners for graph-level events
111
+ * Handles graph start, completion, and error events
112
+ */
113
+ setupGraphEventListeners() {
114
+ if (this.graphEvents && this.graphEvents.length > 0) {
115
+ this.graphEvents.forEach((event) => {
116
+ this.eventEmitter.on(event, (data) => __awaiter(this, void 0, void 0, function* () {
117
+ var _a;
118
+ const freshContext = this.createNewContext();
119
+ if (data)
120
+ Object.assign(freshContext, data);
121
+ // Emit "graphStarted"
122
+ this.eventEmitter.emit("graphStarted", { name: this.name });
123
+ try {
124
+ // Execute the graph starting from the entry node
125
+ if (!this.entryNode) {
126
+ throw new Error("No entry node defined for graph event handling");
127
+ }
128
+ yield this.executeNode(this.entryNode, freshContext, undefined, false);
129
+ // Emit "graphCompleted"
130
+ this.eventEmitter.emit("graphCompleted", {
131
+ name: this.name,
132
+ context: this.context,
133
+ });
134
+ }
135
+ catch (error) {
136
+ // Emit "graphError"
137
+ this.eventEmitter.emit("graphError", { name: this.name, error });
138
+ (_a = this.globalErrorHandler) === null || _a === void 0 ? void 0 : _a.call(this, error, freshContext);
139
+ throw error;
140
+ }
141
+ }));
142
+ });
143
+ }
144
+ }
145
+ /**
146
+ * Waits for a set of events to occur within a timeout period
147
+ * @param events - Array of event names to wait for
148
+ * @param timeout - Maximum time to wait in milliseconds
149
+ * @returns Promise that resolves with array of received events
150
+ * @throws Error if timeout occurs before all events are received
151
+ */
152
+ waitForEvents(events_1) {
153
+ return __awaiter(this, arguments, void 0, function* (events, timeout = 30000) {
154
+ return new Promise((resolve, reject) => {
155
+ const receivedEvents = new Map();
156
+ const eventHandlers = new Map();
157
+ let isResolved = false;
158
+ const cleanup = () => {
159
+ events.forEach((event) => {
160
+ const handler = eventHandlers.get(event);
161
+ if (handler) {
162
+ this.eventEmitter.removeListener(event, handler);
163
+ }
164
+ });
165
+ };
166
+ events.forEach((event) => {
167
+ const handler = (eventData) => {
168
+ console.log(`Received event: ${event}`, eventData);
169
+ if (!isResolved) {
170
+ receivedEvents.set(event, eventData);
171
+ console.log("Current received events:", Array.from(receivedEvents.keys()));
172
+ if (events.every((e) => receivedEvents.has(e))) {
173
+ console.log("All events received, resolving");
174
+ isResolved = true;
175
+ clearTimeout(timeoutId);
176
+ cleanup();
177
+ resolve(Array.from(receivedEvents.values()));
178
+ }
179
+ }
180
+ };
181
+ eventHandlers.set(event, handler);
182
+ this.eventEmitter.on(event, handler);
183
+ });
184
+ const timeoutId = setTimeout(() => {
185
+ if (!isResolved) {
186
+ isResolved = true;
187
+ cleanup();
188
+ reject(new Error(`Timeout waiting for events: ${events.join(", ")}`));
189
+ }
190
+ }, timeout);
191
+ });
192
+ });
193
+ }
194
+ /**
195
+ * Registers an event handler
196
+ * @param eventName - Name of the event to listen for
197
+ * @param handler - Function to handle the event
198
+ */
199
+ on(eventName, handler) {
200
+ this.eventEmitter.on(eventName, handler);
201
+ }
202
+ /**
203
+ * Emits an event through the event emitter
204
+ * @param eventName - Name of the event to emit
205
+ * @param data - Optional data to include with the event
206
+ */
207
+ emit(eventName, data) {
208
+ this.eventEmitter.emit(eventName, data);
209
+ }
210
+ /**
211
+ * Creates a new context object by cloning the current context
212
+ * @returns A new graph context instance
213
+ * @private
214
+ */
215
+ createNewContext() {
216
+ return structuredClone(this.context);
217
+ }
218
+ /**
219
+ * Executes a node with the given parameters
220
+ * @param nodeName - Name of the node to execute
221
+ * @param context - Graph context for execution
222
+ * @param inputs - Input data for the node
223
+ * @param triggeredByEvent - Whether execution was triggered by an event
224
+ * @returns Promise that resolves when execution is complete
225
+ * @throws Error if nodeExecutor is not initialized
226
+ * @private
227
+ */
228
+ executeNode(nodeName, context, inputs, triggeredByEvent) {
229
+ return __awaiter(this, void 0, void 0, function* () {
230
+ if (!this.nodeExecutor) {
231
+ throw new Error("NodeExecutor not initialized");
232
+ }
233
+ return this.nodeExecutor.executeNode(nodeName, context, inputs, triggeredByEvent);
234
+ });
235
+ }
236
+ }
237
+ exports.GraphEventManager = GraphEventManager;
238
+ //# sourceMappingURL=event-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-manager.js","sourceRoot":"","sources":["../../graph/event-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ import { ZodSchema } from "zod";
2
+ import { GraphObservable } from "../interfaces";
3
+ import { GraphContext, GraphDefinition, Node } from "../types";
4
+ import { GraphObserver } from "./observer";
5
+ /**
6
+ * @module GraphFlow
7
+ * @description A flexible workflow engine that manages the execution of nodes in a graph-like structure.
8
+ *
9
+ * Key features:
10
+ * - Multiple branches support
11
+ * - Conditional branching (runs first matching condition, or all if none have conditions)
12
+ * - Event-driven nodes
13
+ * - Zod validation of context/inputs/outputs
14
+ * - Automatic retry on node failures
15
+ *
16
+ * @template T - Extends ZodSchema for type validation
17
+ */
18
+ export declare class GraphFlow<T extends ZodSchema> {
19
+ name: string;
20
+ private context;
21
+ validator?: T;
22
+ private eventEmitter;
23
+ private globalErrorHandler?;
24
+ private graphEvents?;
25
+ private entryNode?;
26
+ private verbose;
27
+ nodes: Map<string, Node<T, any>>;
28
+ private eventSubject;
29
+ private stateSubject;
30
+ private destroySubject;
31
+ observer: GraphObserver<T>;
32
+ private logger;
33
+ private eventManager;
34
+ private nodeExecutor;
35
+ /**
36
+ * Creates a new instance of GraphFlow
37
+ * @param {string} name - The name of the graph flow
38
+ * @param {GraphDefinition<T>} config - Configuration object containing nodes, schema, context, and error handlers
39
+ * @param {Object} options - Optional options for the graph flow
40
+ */
41
+ constructor(name: string, config: GraphDefinition<T>, options?: {
42
+ verbose?: boolean;
43
+ });
44
+ /**
45
+ * Sets up event listeners for node-based events
46
+ * @private
47
+ * @description Attaches all node-based event triggers while preserving external listeners
48
+ */
49
+ private setupEventStreams;
50
+ /**
51
+ * Sets up event listeners for node-based events
52
+ * @private
53
+ * @description Attaches all node-based event triggers while preserving external listeners
54
+ */
55
+ private setupEventListeners;
56
+ /**
57
+ * Sets up event listeners for graph-based events
58
+ * @private
59
+ * @description Attaches all graph-based event triggers
60
+ */
61
+ private setupGraphEventListeners;
62
+ /**
63
+ * Executes a specific node in the graph
64
+ * @private
65
+ * @param {string} nodeName - Name of the node to execute
66
+ * @param {GraphContext<T>} context - Current execution context
67
+ * @param {any} inputs - Input parameters for the node
68
+ * @param {boolean} triggeredByEvent - Whether the execution was triggered by an event
69
+ * @returns {Promise<void>}
70
+ */
71
+ private executeNode;
72
+ private addLog;
73
+ getLogs(): string[];
74
+ clearLogs(): void;
75
+ /**
76
+ * Get the observer instance for monitoring graph state and events
77
+ */
78
+ observe(options?: {
79
+ debounce?: number;
80
+ delay?: number;
81
+ stream?: boolean;
82
+ properties?: (keyof GraphContext<T> extends string ? keyof GraphContext<T> : never)[];
83
+ onStreamLetter?: (data: {
84
+ letter: string;
85
+ property: string;
86
+ }) => void;
87
+ onStreamComplete?: () => void;
88
+ }): GraphObservable<T>;
89
+ /**
90
+ * Enable or disable verbose logging
91
+ * @param {boolean} enabled - Whether to enable verbose logging
92
+ */
93
+ setVerbose(enabled: boolean): void;
94
+ /**
95
+ * Get current verbose setting
96
+ * @returns {boolean} Current verbose setting
97
+ */
98
+ isVerbose(): boolean;
99
+ /**
100
+ * Executes the graph flow starting from a specific node
101
+ * @param {string} startNode - Name of the node to start execution from
102
+ * @param {Partial<GraphContext<T>>} inputContext - Optional partial context to merge with current context
103
+ * @param {any} inputParams - Optional input parameters for the start node
104
+ * @returns {Promise<GraphContext<T>>} Final context after execution
105
+ */
106
+ execute(startNode: string, inputParams?: any, inputContext?: Partial<GraphContext<T>>): Promise<GraphContext<T>>;
107
+ /**
108
+ * Emits an event to trigger event-based nodes
109
+ * @param {string} eventName - Name of the event to emit
110
+ * @param {Partial<GraphContext<T>>} data - Optional data to merge with context
111
+ * @returns {Promise<void>}
112
+ */
113
+ emit(eventName: string, data?: Partial<GraphContext<T>>): Promise<void>;
114
+ /**
115
+ * Registers an event handler
116
+ * @param {string} eventName - Name of the event to listen for
117
+ * @param {Function} handler - Handler function to execute when event is emitted
118
+ */
119
+ on(eventName: string, handler: (...args: any[]) => void): void;
120
+ /**
121
+ * Updates the graph definition with new configuration
122
+ * @param {GraphDefinition<T>} definition - New graph definition
123
+ */
124
+ load(definition: GraphDefinition<T>): void;
125
+ /**
126
+ * Gets a copy of the current context
127
+ * @returns {GraphContext<T>} A deep copy of the current context
128
+ */
129
+ getContext(): GraphContext<T>;
130
+ /**
131
+ * Logs a message with optional data
132
+ * @param {string} message - Message to log
133
+ * @param {any} data - Optional data to log
134
+ */
135
+ log(message: string, data?: any): void;
136
+ /**
137
+ * Adds a new node to the graph
138
+ * @param {Node<T>} node - Node to add
139
+ * @throws {Error} If node with same name already exists
140
+ */
141
+ addNode(node: Node<T, any>): void;
142
+ /**
143
+ * Removes a node from the graph
144
+ * @param {string} nodeName - Name of the node to remove
145
+ */
146
+ removeNode(nodeName: string): void;
147
+ /**
148
+ * Returns all nodes in the graph
149
+ * @returns {Node<T>[]} Array of all nodes
150
+ */
151
+ getNodes(): Node<T, any>[];
152
+ /**
153
+ * Cleanup resources
154
+ */
155
+ destroy(): void;
156
+ }
157
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../graph/index.ts"],"names":[],"mappings":"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"}