@ai.ntellect/core 0.7.7 → 1.0.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 (111) hide show
  1. package/README.md +158 -81
  2. package/index.ts +462 -22
  3. package/package copy.json +21 -0
  4. package/package.json +9 -44
  5. package/tsconfig.json +108 -22
  6. package/types.ts +62 -0
  7. package/utils/executor.ts +42 -0
  8. package/.mocharc.json +0 -5
  9. package/dist/graph/controller.d.ts +0 -31
  10. package/dist/graph/controller.d.ts.map +0 -1
  11. package/dist/graph/controller.js +0 -71
  12. package/dist/graph/controller.js.map +0 -1
  13. package/dist/graph/event-manager.d.ts +0 -92
  14. package/dist/graph/event-manager.d.ts.map +0 -1
  15. package/dist/graph/event-manager.js +0 -244
  16. package/dist/graph/event-manager.js.map +0 -1
  17. package/dist/graph/index.d.ts +0 -159
  18. package/dist/graph/index.d.ts.map +0 -1
  19. package/dist/graph/index.js +0 -303
  20. package/dist/graph/index.js.map +0 -1
  21. package/dist/graph/logger.d.ts +0 -46
  22. package/dist/graph/logger.d.ts.map +0 -1
  23. package/dist/graph/logger.js +0 -69
  24. package/dist/graph/logger.js.map +0 -1
  25. package/dist/graph/node.d.ts +0 -92
  26. package/dist/graph/node.d.ts.map +0 -1
  27. package/dist/graph/node.js +0 -249
  28. package/dist/graph/node.js.map +0 -1
  29. package/dist/graph/observer.d.ts +0 -113
  30. package/dist/graph/observer.d.ts.map +0 -1
  31. package/dist/graph/observer.js +0 -198
  32. package/dist/graph/observer.js.map +0 -1
  33. package/dist/index.d.ts +0 -26
  34. package/dist/index.d.ts.map +0 -1
  35. package/dist/index.js +0 -42
  36. package/dist/index.js.map +0 -1
  37. package/dist/interfaces/index.d.ts +0 -447
  38. package/dist/interfaces/index.d.ts.map +0 -1
  39. package/dist/interfaces/index.js +0 -75
  40. package/dist/interfaces/index.js.map +0 -1
  41. package/dist/modules/agenda/adapters/node-cron/index.d.ts +0 -17
  42. package/dist/modules/agenda/adapters/node-cron/index.d.ts.map +0 -1
  43. package/dist/modules/agenda/adapters/node-cron/index.js +0 -30
  44. package/dist/modules/agenda/adapters/node-cron/index.js.map +0 -1
  45. package/dist/modules/agenda/index.d.ts +0 -63
  46. package/dist/modules/agenda/index.d.ts.map +0 -1
  47. package/dist/modules/agenda/index.js +0 -141
  48. package/dist/modules/agenda/index.js.map +0 -1
  49. package/dist/modules/embedding/adapters/ai/index.d.ts +0 -29
  50. package/dist/modules/embedding/adapters/ai/index.d.ts.map +0 -1
  51. package/dist/modules/embedding/adapters/ai/index.js +0 -58
  52. package/dist/modules/embedding/adapters/ai/index.js.map +0 -1
  53. package/dist/modules/embedding/index.d.ts +0 -36
  54. package/dist/modules/embedding/index.d.ts.map +0 -1
  55. package/dist/modules/embedding/index.js +0 -60
  56. package/dist/modules/embedding/index.js.map +0 -1
  57. package/dist/modules/memory/adapters/in-memory/index.d.ts +0 -120
  58. package/dist/modules/memory/adapters/in-memory/index.d.ts.map +0 -1
  59. package/dist/modules/memory/adapters/in-memory/index.js +0 -211
  60. package/dist/modules/memory/adapters/in-memory/index.js.map +0 -1
  61. package/dist/modules/memory/adapters/meilisearch/index.d.ts +0 -110
  62. package/dist/modules/memory/adapters/meilisearch/index.d.ts.map +0 -1
  63. package/dist/modules/memory/adapters/meilisearch/index.js +0 -321
  64. package/dist/modules/memory/adapters/meilisearch/index.js.map +0 -1
  65. package/dist/modules/memory/adapters/redis/index.d.ts +0 -82
  66. package/dist/modules/memory/adapters/redis/index.d.ts.map +0 -1
  67. package/dist/modules/memory/adapters/redis/index.js +0 -159
  68. package/dist/modules/memory/adapters/redis/index.js.map +0 -1
  69. package/dist/modules/memory/index.d.ts +0 -67
  70. package/dist/modules/memory/index.d.ts.map +0 -1
  71. package/dist/modules/memory/index.js +0 -104
  72. package/dist/modules/memory/index.js.map +0 -1
  73. package/dist/types/index.d.ts +0 -166
  74. package/dist/types/index.d.ts.map +0 -1
  75. package/dist/types/index.js +0 -3
  76. package/dist/types/index.js.map +0 -1
  77. package/dist/utils/generate-action-schema.d.ts +0 -5
  78. package/dist/utils/generate-action-schema.d.ts.map +0 -1
  79. package/dist/utils/generate-action-schema.js +0 -44
  80. package/dist/utils/generate-action-schema.js.map +0 -1
  81. package/dist/utils/header-builder.d.ts +0 -12
  82. package/dist/utils/header-builder.d.ts.map +0 -1
  83. package/dist/utils/header-builder.js +0 -35
  84. package/dist/utils/header-builder.js.map +0 -1
  85. package/graph/controller.ts +0 -74
  86. package/graph/event-manager.ts +0 -295
  87. package/graph/index.ts +0 -397
  88. package/graph/logger.ts +0 -70
  89. package/graph/node.ts +0 -305
  90. package/graph/observer.ts +0 -368
  91. package/interfaces/index.ts +0 -545
  92. package/modules/agenda/adapters/node-cron/index.ts +0 -25
  93. package/modules/agenda/index.ts +0 -146
  94. package/modules/embedding/adapters/ai/index.ts +0 -42
  95. package/modules/embedding/index.ts +0 -45
  96. package/modules/memory/adapters/in-memory/index.ts +0 -207
  97. package/modules/memory/adapters/meilisearch/index.ts +0 -361
  98. package/modules/memory/adapters/redis/index.ts +0 -164
  99. package/modules/memory/index.ts +0 -93
  100. package/test/graph/controller.test.ts +0 -187
  101. package/test/graph/event-manager.test.ts +0 -72
  102. package/test/graph/index.test.ts +0 -768
  103. package/test/graph/node.test.ts +0 -510
  104. package/test/graph/observer.test.ts +0 -398
  105. package/test/modules/agenda/node-cron.test.ts +0 -307
  106. package/test/modules/memory/adapters/in-memory.test.ts +0 -153
  107. package/test/modules/memory/adapters/meilisearch.test.ts +0 -287
  108. package/test/modules/memory/base.test.ts +0 -230
  109. package/types/index.ts +0 -184
  110. package/utils/generate-action-schema.ts +0 -46
  111. package/utils/header-builder.ts +0 -40
@@ -1,244 +0,0 @@
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
- // Éviter la double imbrication des événements
63
- const event = {
64
- type,
65
- payload,
66
- timestamp: Date.now(),
67
- };
68
- // Émettre l'événement une seule fois
69
- this.eventSubject.next(event);
70
- this.eventEmitter.emit(type, payload);
71
- }
72
- /**
73
- * Sets up event listeners for all nodes in the graph
74
- * Handles cleanup and re-registration of event listeners
75
- */
76
- setupEventListeners() {
77
- // First remove only the existing node-based listeners that we might have created previously
78
- // We do NOT remove, for example, "nodeStarted" or "nodeCompleted" listeners that test code added.
79
- for (const [eventName, listener] of this.eventEmitter
80
- .rawListeners("*")
81
- .entries()) {
82
- // This can be tricky—EventEmitter doesn't directly let you remove by "type" of listener.
83
- // Alternatively, we can store references in a separate structure.
84
- // For simplicity, let's do a full removeAllListeners() on node-specified events (only),
85
- // then re-add them below, but keep the test-based events like "nodeStarted" or "nodeCompleted".
86
- }
87
- // The simplest approach: removeAllListeners for each event that is declared as a node event
88
- // so we don't stack up duplicates:
89
- const allEvents = new Set();
90
- for (const node of this.nodes.values()) {
91
- if (node.events) {
92
- node.events.forEach((evt) => allEvents.add(evt));
93
- }
94
- }
95
- for (const evt of allEvents) {
96
- // remove only those events that are used by nodes
97
- this.eventEmitter.removeAllListeners(evt);
98
- }
99
- // Now re-add the node-based event triggers
100
- for (const node of this.nodes.values()) {
101
- if (node.events && node.events.length > 0) {
102
- node.events.forEach((event) => {
103
- this.eventEmitter.on(event, (data) => __awaiter(this, void 0, void 0, function* () {
104
- const freshContext = structuredClone(this.context);
105
- if (data)
106
- Object.assign(freshContext, data);
107
- // If triggered by an event, we pass "true" so event-driven node will skip `next`.
108
- yield this.executeNode(node.name, freshContext, undefined,
109
- /* triggeredByEvent= */ true);
110
- }));
111
- });
112
- }
113
- }
114
- }
115
- /**
116
- * Sets up listeners for graph-level events
117
- * Handles graph start, completion, and error events
118
- */
119
- setupGraphEventListeners() {
120
- if (this.graphEvents && this.graphEvents.length > 0) {
121
- this.graphEvents.forEach((event) => {
122
- this.eventEmitter.on(event, (data) => __awaiter(this, void 0, void 0, function* () {
123
- var _a;
124
- const freshContext = this.createNewContext();
125
- if (data)
126
- Object.assign(freshContext, data);
127
- // Emit "graphStarted"
128
- this.eventEmitter.emit("graphStarted", { name: this.name });
129
- try {
130
- // Execute the graph starting from the entry node
131
- if (!this.entryNode) {
132
- throw new Error("No entry node defined for graph event handling");
133
- }
134
- yield this.executeNode(this.entryNode, freshContext, undefined, false);
135
- // Emit "graphCompleted"
136
- this.eventEmitter.emit("graphCompleted", {
137
- name: this.name,
138
- context: this.context,
139
- });
140
- }
141
- catch (error) {
142
- // Emit "graphError"
143
- this.eventEmitter.emit("graphError", { name: this.name, error });
144
- (_a = this.globalErrorHandler) === null || _a === void 0 ? void 0 : _a.call(this, error, freshContext);
145
- throw error;
146
- }
147
- }));
148
- });
149
- }
150
- }
151
- /**
152
- * Waits for a set of events to occur within a timeout period
153
- * @param events - Array of event names to wait for
154
- * @param timeout - Maximum time to wait in milliseconds
155
- * @returns Promise that resolves with array of received events
156
- * @throws Error if timeout occurs before all events are received
157
- */
158
- waitForEvents(events_1) {
159
- return __awaiter(this, arguments, void 0, function* (events, timeout = 30000) {
160
- return new Promise((resolve, reject) => {
161
- const receivedEvents = new Map();
162
- const eventHandlers = new Map();
163
- let isResolved = false;
164
- const cleanup = () => {
165
- events.forEach((event) => {
166
- const handler = eventHandlers.get(event);
167
- if (handler) {
168
- this.eventEmitter.removeListener(event, handler);
169
- }
170
- });
171
- };
172
- events.forEach((event) => {
173
- const handler = (eventData) => {
174
- console.log(`Received event: ${event}`, eventData);
175
- if (!isResolved) {
176
- receivedEvents.set(event, eventData);
177
- console.log("Current received events:", Array.from(receivedEvents.keys()));
178
- if (events.every((e) => receivedEvents.has(e))) {
179
- console.log("All events received, resolving");
180
- isResolved = true;
181
- clearTimeout(timeoutId);
182
- cleanup();
183
- resolve(Array.from(receivedEvents.values()));
184
- }
185
- }
186
- };
187
- eventHandlers.set(event, handler);
188
- this.eventEmitter.on(event, handler);
189
- });
190
- const timeoutId = setTimeout(() => {
191
- if (!isResolved) {
192
- isResolved = true;
193
- cleanup();
194
- reject(new Error(`Timeout waiting for events: ${events.join(", ")}`));
195
- }
196
- }, timeout);
197
- });
198
- });
199
- }
200
- /**
201
- * Registers an event handler
202
- * @param eventName - Name of the event to listen for
203
- * @param handler - Function to handle the event
204
- */
205
- on(eventName, handler) {
206
- this.eventEmitter.on(eventName, handler);
207
- }
208
- /**
209
- * Emits an event through the event emitter
210
- * @param eventName - Name of the event to emit
211
- * @param data - Optional data to include with the event
212
- */
213
- emit(eventName, data) {
214
- this.eventEmitter.emit(eventName, data);
215
- }
216
- /**
217
- * Creates a new context object by cloning the current context
218
- * @returns A new graph context instance
219
- * @private
220
- */
221
- createNewContext() {
222
- return structuredClone(this.context);
223
- }
224
- /**
225
- * Executes a node with the given parameters
226
- * @param nodeName - Name of the node to execute
227
- * @param context - Graph context for execution
228
- * @param inputs - Input data for the node
229
- * @param triggeredByEvent - Whether execution was triggered by an event
230
- * @returns Promise that resolves when execution is complete
231
- * @throws Error if nodeExecutor is not initialized
232
- * @private
233
- */
234
- executeNode(nodeName, context, inputs, triggeredByEvent) {
235
- return __awaiter(this, void 0, void 0, function* () {
236
- if (!this.nodeExecutor) {
237
- throw new Error("NodeExecutor not initialized");
238
- }
239
- return this.nodeExecutor.executeNode(nodeName, context, inputs, triggeredByEvent);
240
- });
241
- }
242
- }
243
- exports.GraphEventManager = GraphEventManager;
244
- //# sourceMappingURL=event-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-manager.js","sourceRoot":"","sources":["../../graph/event-manager.ts"],"names":[],"mappings":"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"}
@@ -1,159 +0,0 @@
1
- import { ZodSchema } from "zod";
2
- import { GraphObservable } from "../interfaces";
3
- import { GraphContext, GraphDefinition, Node } from "../types";
4
- import { NodeParams } from "./node";
5
- import { GraphObserver } from "./observer";
6
- /**
7
- * @module GraphFlow
8
- * @description A flexible workflow engine that manages the execution of nodes in a graph-like structure.
9
- *
10
- * Key features:
11
- * - Multiple branches support
12
- * - Conditional branching (runs first matching condition, or all if none have conditions)
13
- * - Event-driven nodes
14
- * - Zod validation of context/inputs/outputs
15
- * - Automatic retry on node failures
16
- *
17
- * @template T - Extends ZodSchema for type validation
18
- */
19
- export declare class GraphFlow<T extends ZodSchema> {
20
- name: string;
21
- private context;
22
- validator?: T;
23
- private eventEmitter;
24
- private globalErrorHandler?;
25
- private graphEvents?;
26
- private entryNode?;
27
- private verbose;
28
- nodes: Map<string, Node<T, any>>;
29
- private eventSubject;
30
- private stateSubject;
31
- private destroySubject;
32
- observer: GraphObserver<T>;
33
- private logger;
34
- private eventManager;
35
- private nodeExecutor;
36
- /**
37
- * Creates a new instance of GraphFlow
38
- * @param {string} name - The name of the graph flow
39
- * @param {GraphDefinition<T>} config - Configuration object containing nodes, schema, context, and error handlers
40
- * @param {Object} options - Optional options for the graph flow
41
- */
42
- constructor(name: string, config: GraphDefinition<T>, options?: {
43
- verbose?: boolean;
44
- });
45
- /**
46
- * Sets up event listeners for node-based events
47
- * @private
48
- * @description Attaches all node-based event triggers while preserving external listeners
49
- */
50
- private setupEventStreams;
51
- /**
52
- * Sets up event listeners for node-based events
53
- * @private
54
- * @description Attaches all node-based event triggers while preserving external listeners
55
- */
56
- private setupEventListeners;
57
- /**
58
- * Sets up event listeners for graph-based events
59
- * @private
60
- * @description Attaches all graph-based event triggers
61
- */
62
- private setupGraphEventListeners;
63
- /**
64
- * Executes a specific node in the graph
65
- * @private
66
- * @param {string} nodeName - Name of the node to execute
67
- * @param {GraphContext<T>} context - Current execution context
68
- * @param {any} inputs - Input parameters for the node
69
- * @param {boolean} triggeredByEvent - Whether the execution was triggered by an event
70
- * @returns {Promise<void>}
71
- */
72
- private executeNode;
73
- private addLog;
74
- getLogs(): string[];
75
- clearLogs(): void;
76
- /**
77
- * Get the observer instance for monitoring graph state and events
78
- */
79
- observe(options?: {
80
- debounce?: number;
81
- delay?: number;
82
- stream?: boolean;
83
- properties?: (keyof GraphContext<T> extends string ? keyof GraphContext<T> : never)[];
84
- onStreamLetter?: (data: {
85
- letter: string;
86
- property: string;
87
- }) => void;
88
- onStreamComplete?: () => void;
89
- }): GraphObservable<T>;
90
- /**
91
- * Enable or disable verbose logging
92
- * @param {boolean} enabled - Whether to enable verbose logging
93
- */
94
- setVerbose(enabled: boolean): void;
95
- /**
96
- * Get current verbose setting
97
- * @returns {boolean} Current verbose setting
98
- */
99
- isVerbose(): boolean;
100
- /**
101
- * Executes the graph flow starting from a specific node
102
- * @param {string} startNode - Name of the node to start execution from
103
- * @param {any} inputs - Optional input parameters for the start node
104
- * @param {Partial<GraphContext<T>>} context - Optional context to merge
105
- * @param {NodeParams} params - Optional node parameters
106
- * @returns {Promise<GraphContext<T>>} Final context after execution
107
- */
108
- execute(startNode: string, params?: NodeParams, context?: Partial<GraphContext<T>>): Promise<GraphContext<T>>;
109
- /**
110
- * Emits an event to trigger event-based nodes
111
- * @param {string} eventName - Name of the event to emit
112
- * @param {Partial<GraphContext<T>>} data - Optional data to merge with context
113
- * @returns {Promise<void>}
114
- */
115
- emit(eventName: string, data?: Partial<GraphContext<T>>): Promise<void>;
116
- /**
117
- * Registers an event handler
118
- * @param {string} eventName - Name of the event to listen for
119
- * @param {Function} handler - Handler function to execute when event is emitted
120
- */
121
- on(eventName: string, handler: (...args: any[]) => void): void;
122
- /**
123
- * Updates the graph definition with new configuration
124
- * @param {GraphDefinition<T>} definition - New graph definition
125
- */
126
- load(definition: GraphDefinition<T>): void;
127
- /**
128
- * Gets a copy of the current context
129
- * @returns {GraphContext<T>} A deep copy of the current context
130
- */
131
- getContext(): GraphContext<T>;
132
- /**
133
- * Logs a message with optional data
134
- * @param {string} message - Message to log
135
- * @param {any} data - Optional data to log
136
- */
137
- log(message: string, data?: any): void;
138
- /**
139
- * Adds a new node to the graph
140
- * @param {Node<T>} node - Node to add
141
- * @throws {Error} If node with same name already exists
142
- */
143
- addNode(node: Node<T, any>): void;
144
- /**
145
- * Removes a node from the graph
146
- * @param {string} nodeName - Name of the node to remove
147
- */
148
- removeNode(nodeName: string): void;
149
- /**
150
- * Returns all nodes in the graph
151
- * @returns {Node<T>[]} Array of all nodes
152
- */
153
- getNodes(): Node<T, any>[];
154
- /**
155
- * Cleanup resources
156
- */
157
- destroy(): void;
158
- }
159
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../graph/index.ts"],"names":[],"mappings":"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"}