@ai.ntellect/core 0.7.14 → 0.8.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.
- package/README.md +104 -44
- package/dist/graph/event-manager.d.ts +9 -1
- package/dist/graph/event-manager.d.ts.map +1 -1
- package/dist/graph/event-manager.js +115 -37
- package/dist/graph/event-manager.js.map +1 -1
- package/dist/graph/index.d.ts +20 -1
- package/dist/graph/index.d.ts.map +1 -1
- package/dist/graph/index.js +59 -10
- package/dist/graph/index.js.map +1 -1
- package/dist/graph/node.d.ts +0 -24
- package/dist/graph/node.d.ts.map +1 -1
- package/dist/graph/node.js +2 -71
- package/dist/graph/node.js.map +1 -1
- package/dist/graph/observer.d.ts +6 -87
- package/dist/graph/observer.d.ts.map +1 -1
- package/dist/graph/observer.js +3 -116
- package/dist/graph/observer.js.map +1 -1
- package/dist/index.d.ts +3 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -6
- package/dist/index.js.map +1 -1
- package/dist/interfaces/index.d.ts +10 -1
- package/dist/interfaces/index.d.ts.map +1 -1
- package/dist/interfaces/index.js.map +1 -1
- package/dist/modules/agent/agent.d.ts +35 -0
- package/dist/modules/agent/agent.d.ts.map +1 -0
- package/dist/modules/agent/agent.js +106 -0
- package/dist/modules/agent/agent.js.map +1 -0
- package/dist/modules/agent/base/executor.d.ts +51 -0
- package/dist/modules/agent/base/executor.d.ts.map +1 -0
- package/dist/modules/agent/base/executor.js +66 -0
- package/dist/modules/agent/base/executor.js.map +1 -0
- package/dist/modules/agent/base/index.d.ts +30 -0
- package/dist/modules/agent/base/index.d.ts.map +1 -0
- package/dist/modules/agent/base/index.js +100 -0
- package/dist/modules/agent/base/index.js.map +1 -0
- package/dist/modules/agent/generic-assistant.d.ts +20 -0
- package/dist/modules/agent/generic-assistant.d.ts.map +1 -0
- package/dist/modules/agent/generic-assistant.js +89 -0
- package/dist/modules/agent/generic-assistant.js.map +1 -0
- package/dist/modules/agent/generic-executor.d.ts +57 -0
- package/dist/modules/agent/generic-executor.d.ts.map +1 -0
- package/dist/modules/agent/generic-executor.js +200 -0
- package/dist/modules/agent/generic-executor.js.map +1 -0
- package/dist/modules/agent/llm-factory.d.ts +19 -0
- package/dist/modules/agent/llm-factory.d.ts.map +1 -0
- package/dist/modules/agent/llm-factory.js +56 -0
- package/dist/modules/agent/llm-factory.js.map +1 -0
- package/dist/modules/agent/prompt-builder.d.ts +35 -0
- package/dist/modules/agent/prompt-builder.d.ts.map +1 -0
- package/dist/modules/agent/prompt-builder.js +76 -0
- package/dist/modules/agent/prompt-builder.js.map +1 -0
- package/dist/modules/memory/adapters/in-memory/index.d.ts.map +1 -1
- package/dist/modules/memory/adapters/in-memory/index.js +4 -3
- package/dist/modules/memory/adapters/in-memory/index.js.map +1 -1
- package/dist/modules/memory/adapters/meilisearch/index.d.ts.map +1 -1
- package/dist/modules/memory/adapters/meilisearch/index.js +7 -4
- package/dist/modules/memory/adapters/meilisearch/index.js.map +1 -1
- package/dist/modules/memory/adapters/redis/index.d.ts.map +1 -1
- package/dist/modules/memory/adapters/redis/index.js +2 -1
- package/dist/modules/memory/adapters/redis/index.js.map +1 -1
- package/dist/modules/nlp/engine.d.ts +126 -0
- package/dist/modules/nlp/engine.d.ts.map +1 -0
- package/dist/modules/nlp/engine.js +300 -0
- package/dist/modules/nlp/engine.js.map +1 -0
- package/dist/modules/nlp/index.d.ts +27 -0
- package/dist/modules/nlp/index.d.ts.map +1 -0
- package/dist/modules/nlp/index.js +56 -0
- package/dist/modules/nlp/index.js.map +1 -0
- package/dist/types/agent.d.ts +233 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +29 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/index.d.ts +72 -18
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/generate-action-schema.d.ts.map +1 -1
- package/graph/event-manager.ts +135 -42
- package/graph/index.ts +57 -4
- package/graph/node.ts +2 -104
- package/graph/observer.ts +9 -215
- package/index.ts +4 -7
- package/interfaces/index.ts +12 -0
- package/modules/agent/agent.ts +108 -0
- package/modules/agent/base/executor.ts +100 -0
- package/modules/agent/base/index.ts +99 -0
- package/modules/agent/generic-assistant.ts +90 -0
- package/modules/agent/generic-executor.ts +259 -0
- package/modules/agent/llm-factory.ts +47 -0
- package/modules/agent/prompt-builder.ts +78 -0
- package/modules/memory/adapters/in-memory/index.ts +4 -3
- package/modules/memory/adapters/meilisearch/index.ts +7 -4
- package/modules/memory/adapters/redis/index.ts +2 -1
- package/modules/nlp/engine.ts +325 -0
- package/modules/nlp/index.ts +45 -0
- package/package.json +5 -2
- package/test/graph/index.test.ts +6 -4
- package/test/graph/node.test.ts +18 -14
- package/types/agent.ts +174 -0
- package/types/index.ts +74 -18
package/README.md
CHANGED
@@ -5,10 +5,15 @@
|
|
5
5
|
## Features
|
6
6
|
|
7
7
|
- **GraphFlow** – Graph-based execution engine for automating business processes
|
8
|
+
- **AI Agents** – Built-in support for LLM-powered agents with memory and tools
|
8
9
|
- **Event-Driven** – Nodes can react to real-time events and trigger actions dynamically
|
9
10
|
- **Modular** – Plug-and-play modules and adapters for memory, scheduling, and external APIs
|
10
11
|
- **Extensible** – Custom nodes, adapters, and interactions with third-party services
|
11
12
|
- **Observable** – Complete state and event monitoring
|
13
|
+
- **Type-Safe** – Built with TypeScript for robust type checking
|
14
|
+
- **Schema Validation** – Integrated Zod schema validation
|
15
|
+
- **Retry Mechanisms** – Built-in retry strategies for resilient workflows
|
16
|
+
- **Event Correlation** – Advanced event handling with correlation strategies
|
12
17
|
|
13
18
|
## Installation
|
14
19
|
|
@@ -31,70 +36,125 @@ npm -v
|
|
31
36
|
npm install @ai.ntellect/core zod
|
32
37
|
```
|
33
38
|
|
34
|
-
##
|
39
|
+
## Quick Start
|
40
|
+
|
41
|
+
### 1. Basic Workflow
|
35
42
|
|
36
43
|
```typescript
|
37
44
|
import { GraphFlow } from "@ai.ntellect/core";
|
38
45
|
import { z } from "zod";
|
39
46
|
|
40
|
-
//
|
41
|
-
const
|
42
|
-
|
47
|
+
// Define schema
|
48
|
+
const EmailSchema = z.object({
|
49
|
+
to: z.string(),
|
50
|
+
subject: z.string(),
|
51
|
+
content: z.string(),
|
52
|
+
status: z.string().default("pending"),
|
43
53
|
});
|
44
54
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
55
|
+
// Create workflow
|
56
|
+
const emailFlow = new GraphFlow("email", {
|
57
|
+
name: "email",
|
58
|
+
schema: EmailSchema,
|
59
|
+
context: {
|
60
|
+
to: "",
|
61
|
+
subject: "",
|
62
|
+
content: "",
|
63
|
+
status: "pending",
|
64
|
+
},
|
52
65
|
nodes: [
|
53
66
|
{
|
54
|
-
name: "
|
67
|
+
name: "send",
|
55
68
|
execute: async (context) => {
|
56
|
-
console.log(context.
|
69
|
+
console.log(`Sending email to ${context.to}`);
|
70
|
+
// Logic to send email
|
71
|
+
context.status = "sent";
|
57
72
|
},
|
58
|
-
next: [],
|
59
73
|
},
|
60
74
|
],
|
61
75
|
});
|
76
|
+
```
|
77
|
+
|
78
|
+
### 2. AI-Powered Assistant
|
79
|
+
|
80
|
+
```typescript
|
81
|
+
import { Agent } from "@ai.ntellect/core";
|
82
|
+
|
83
|
+
const assistant = new Agent({
|
84
|
+
role: "Email Assistant",
|
85
|
+
goal: "Help users send emails efficiently",
|
86
|
+
backstory: "I am an AI assistant specialized in email communications",
|
87
|
+
tools: [emailFlow],
|
88
|
+
llmConfig: {
|
89
|
+
provider: "openai",
|
90
|
+
model: "gpt-4",
|
91
|
+
apiKey: "YOUR_API_KEY",
|
92
|
+
},
|
93
|
+
});
|
62
94
|
|
63
|
-
//
|
64
|
-
|
65
|
-
|
66
|
-
|
95
|
+
// Use the assistant
|
96
|
+
const result = await assistant.process(
|
97
|
+
"Send an email to john@example.com about tomorrow's meeting"
|
98
|
+
);
|
67
99
|
```
|
68
100
|
|
69
|
-
## Features
|
101
|
+
## Advanced Features
|
70
102
|
|
71
|
-
### Event
|
103
|
+
### Event Handling
|
72
104
|
|
73
105
|
```typescript
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
}
|
106
|
+
const workflow = new GraphFlow("notification", {
|
107
|
+
nodes: [
|
108
|
+
{
|
109
|
+
name: "waitForEvent",
|
110
|
+
events: ["emailSent"],
|
111
|
+
execute: async (context, event) => {
|
112
|
+
console.log(`Email sent to ${event.payload.recipient}`);
|
113
|
+
},
|
114
|
+
},
|
115
|
+
],
|
116
|
+
});
|
82
117
|
|
83
118
|
// Emit events
|
84
|
-
|
119
|
+
workflow.emit("emailSent", { recipient: "john@example.com" });
|
85
120
|
```
|
86
121
|
|
87
|
-
###
|
122
|
+
### Retry Mechanisms
|
88
123
|
|
89
124
|
```typescript
|
90
|
-
|
91
|
-
|
125
|
+
const node = {
|
126
|
+
name: "sendEmail",
|
127
|
+
execute: async (context) => {
|
128
|
+
// Email sending logic
|
129
|
+
},
|
130
|
+
retry: {
|
131
|
+
maxAttempts: 3,
|
132
|
+
delay: 1000,
|
133
|
+
onRetryFailed: async (error, context) => {
|
134
|
+
console.error(`Failed to send email to ${context.to}`);
|
135
|
+
},
|
136
|
+
},
|
137
|
+
};
|
138
|
+
```
|
92
139
|
|
93
|
-
|
94
|
-
graph.observe().property("counter").subscribe(console.log);
|
140
|
+
### State Observation
|
95
141
|
|
96
|
-
|
97
|
-
|
142
|
+
```typescript
|
143
|
+
// Observe specific properties
|
144
|
+
workflow
|
145
|
+
.observe()
|
146
|
+
.property("status")
|
147
|
+
.subscribe((status) => {
|
148
|
+
console.log(`Email status changed to: ${status}`);
|
149
|
+
});
|
150
|
+
|
151
|
+
// Observe specific nodes
|
152
|
+
workflow
|
153
|
+
.observe()
|
154
|
+
.node("sendEmail")
|
155
|
+
.subscribe((state) => {
|
156
|
+
console.log(`Send email node state:`, state);
|
157
|
+
});
|
98
158
|
```
|
99
159
|
|
100
160
|
## Documentation
|
@@ -103,14 +163,14 @@ For complete documentation, visit our [GitBook](https://ai-ntellect.gitbook.io/c
|
|
103
163
|
|
104
164
|
## Contributing
|
105
165
|
|
106
|
-
|
166
|
+
We welcome contributions! To get started:
|
167
|
+
|
168
|
+
1. Fork the repository
|
169
|
+
2. Create a feature branch
|
170
|
+
3. Submit a pull request
|
107
171
|
|
108
|
-
|
109
|
-
- Explore the [GitBook documentation](https://ai-ntellect.gitbook.io/core)
|
110
|
-
- Open an issue on GitHub
|
172
|
+
Join our [Discord community](https://discord.gg/kEc5gWXJ) for discussions and support.
|
111
173
|
|
112
|
-
##
|
174
|
+
## License
|
113
175
|
|
114
|
-
|
115
|
-
- Community: [Discord](https://discord.gg/kEc5gWXJ)
|
116
|
-
- GitHub Repository: [@ai.ntellect/core](https://github.com/ai-ntellect/core)
|
176
|
+
MIT
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { ZodSchema } from "zod";
|
2
2
|
import { IEventEmitter } from "../interfaces";
|
3
|
-
import { GraphContext, GraphEvent, GraphNodeConfig } from "../types";
|
3
|
+
import { EventConfig, GraphContext, GraphEvent, GraphNodeConfig } from "../types";
|
4
4
|
import { GraphNode } from "./node";
|
5
5
|
/**
|
6
6
|
* Manages event handling and routing for a graph
|
@@ -18,6 +18,7 @@ export declare class GraphEventManager<T extends ZodSchema> {
|
|
18
18
|
private graphEvents?;
|
19
19
|
private entryNode?;
|
20
20
|
private globalErrorHandler?;
|
21
|
+
private lastEvents;
|
21
22
|
/**
|
22
23
|
* Creates a new GraphEventManager instance
|
23
24
|
* @param eventEmitter - The event emitter implementation to use
|
@@ -88,6 +89,13 @@ export declare class GraphEventManager<T extends ZodSchema> {
|
|
88
89
|
* @private
|
89
90
|
*/
|
90
91
|
private executeNode;
|
92
|
+
/**
|
93
|
+
* Waits for correlated events to occur and validates them using a correlation function
|
94
|
+
*/
|
91
95
|
waitForCorrelatedEvents(eventTypes: string[], timeoutMs: number, correlationFn: (events: GraphEvent<T>[]) => boolean): Promise<GraphEvent<T>[]>;
|
96
|
+
/**
|
97
|
+
* Handles events based on the node's event handler configuration
|
98
|
+
*/
|
99
|
+
handleNodeEvents(nodeName: string, config: EventConfig): Promise<any[]>;
|
92
100
|
}
|
93
101
|
//# sourceMappingURL=event-manager.d.ts.map
|
@@ -1 +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,
|
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,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;;GAIG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,SAAS;IAsB9C,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,YAAY,CAAC;IA5BvB,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;IAC9E,OAAO,CAAC,UAAU,CAA0B;IAE5C;;;;;;;;;;OAUG;gBAEO,YAAY,EAAE,aAAa,EAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EACnD,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;IAWP;;;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;IA2CjB;;;;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;IAKzC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;;;;;;;OASG;YACW,WAAW;IA4BzB;;OAEG;IACH,uBAAuB,CACrB,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,GAClD,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAmD3B;;OAEG;IACG,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,GAAG,EAAE,CAAC;CAsFlB"}
|
@@ -34,6 +34,7 @@ class GraphEventManager {
|
|
34
34
|
this.nodeExecutor = nodeExecutor;
|
35
35
|
this.eventSubject = new rxjs_1.Subject();
|
36
36
|
this.nodeStreams = new Map();
|
37
|
+
this.lastEvents = new Map();
|
37
38
|
this.name = name;
|
38
39
|
this.context = context;
|
39
40
|
this.graphEvents = graphEvents;
|
@@ -59,13 +60,11 @@ class GraphEventManager {
|
|
59
60
|
* @param context - Optional graph context
|
60
61
|
*/
|
61
62
|
emitEvent(type, payload, context) {
|
62
|
-
// Éviter la double imbrication des événements
|
63
63
|
const event = {
|
64
64
|
type,
|
65
65
|
payload,
|
66
66
|
timestamp: Date.now(),
|
67
67
|
};
|
68
|
-
// Émettre l'événement une seule fois
|
69
68
|
this.eventSubject.next(event);
|
70
69
|
this.eventEmitter.emit(type, payload);
|
71
70
|
}
|
@@ -208,6 +207,7 @@ class GraphEventManager {
|
|
208
207
|
* @param data - Optional data to include with the event
|
209
208
|
*/
|
210
209
|
emit(eventName, data) {
|
210
|
+
this.lastEvents.set(eventName, data);
|
211
211
|
this.eventEmitter.emit(eventName, data);
|
212
212
|
}
|
213
213
|
/**
|
@@ -237,57 +237,135 @@ class GraphEventManager {
|
|
237
237
|
if (!node) {
|
238
238
|
throw new Error(`Node "${nodeName}" not found`);
|
239
239
|
}
|
240
|
-
//
|
241
|
-
if (node.
|
242
|
-
|
243
|
-
yield this.waitForEvents(node.waitForEvents.events, node.waitForEvents.timeout);
|
244
|
-
}
|
245
|
-
catch (error) {
|
246
|
-
throw new Error(`Timeout waiting for events in node "${nodeName}": ${error.message}`);
|
247
|
-
}
|
240
|
+
// Remplacer le code existant de gestion d'événements
|
241
|
+
if (node.when) {
|
242
|
+
yield this.handleNodeEvents(nodeName, node.when);
|
248
243
|
}
|
249
244
|
return this.nodeExecutor.executeNode(nodeName, context, inputs, triggeredByEvent);
|
250
245
|
});
|
251
246
|
}
|
247
|
+
/**
|
248
|
+
* Waits for correlated events to occur and validates them using a correlation function
|
249
|
+
*/
|
252
250
|
waitForCorrelatedEvents(eventTypes, timeoutMs, correlationFn) {
|
253
|
-
return
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
251
|
+
return new Promise((resolve, reject) => {
|
252
|
+
const receivedEvents = new Map();
|
253
|
+
const eventHandlers = new Map();
|
254
|
+
let isResolved = false;
|
255
|
+
const cleanup = () => {
|
256
|
+
eventHandlers.forEach((handler, event) => {
|
257
|
+
this.eventEmitter.removeListener(event, handler);
|
258
|
+
});
|
259
|
+
};
|
260
|
+
eventTypes.forEach((eventType) => {
|
261
|
+
const handler = (eventData) => {
|
258
262
|
if (!isResolved) {
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
const events = Array.from(receivedEvents.values());
|
269
|
-
if (correlationFn(events)) {
|
270
|
-
if (!isResolved) {
|
263
|
+
const event = {
|
264
|
+
type: eventType,
|
265
|
+
payload: eventData,
|
266
|
+
timestamp: Date.now(),
|
267
|
+
};
|
268
|
+
receivedEvents.set(eventType, event);
|
269
|
+
if (eventTypes.every((type) => receivedEvents.has(type))) {
|
270
|
+
const events = Array.from(receivedEvents.values());
|
271
|
+
if (correlationFn(events)) {
|
271
272
|
isResolved = true;
|
272
273
|
clearTimeout(timeoutId);
|
273
|
-
|
274
|
-
this.eventEmitter.removeAllListeners(type);
|
275
|
-
});
|
274
|
+
cleanup();
|
276
275
|
resolve(events);
|
277
276
|
}
|
278
277
|
}
|
279
278
|
}
|
280
279
|
};
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
280
|
+
eventHandlers.set(eventType, handler);
|
281
|
+
this.eventEmitter.on(eventType, handler);
|
282
|
+
});
|
283
|
+
const timeoutId = setTimeout(() => {
|
284
|
+
if (!isResolved) {
|
285
|
+
cleanup();
|
286
|
+
reject(new Error(`Timeout waiting for correlated events: ${eventTypes.join(", ")}`));
|
287
|
+
}
|
288
|
+
}, timeoutMs);
|
289
|
+
});
|
290
|
+
}
|
291
|
+
/**
|
292
|
+
* Handles events based on the node's event handler configuration
|
293
|
+
*/
|
294
|
+
handleNodeEvents(nodeName, config) {
|
295
|
+
return __awaiter(this, void 0, void 0, function* () {
|
296
|
+
const { events, timeout = 30000, strategy } = config;
|
297
|
+
return new Promise((resolve, reject) => {
|
298
|
+
const receivedEvents = new Map();
|
299
|
+
const eventHandlers = new Map();
|
300
|
+
let isResolved = false;
|
301
|
+
// Ajouter les événements déjà reçus
|
302
|
+
events.forEach((event) => {
|
303
|
+
const existingEvent = this.lastEvents.get(event);
|
304
|
+
if (existingEvent) {
|
305
|
+
receivedEvents.set(event, {
|
306
|
+
type: event,
|
307
|
+
payload: existingEvent,
|
286
308
|
timestamp: Date.now(),
|
287
309
|
});
|
288
|
-
|
289
|
-
});
|
310
|
+
}
|
290
311
|
});
|
312
|
+
// Vérifier si on a déjà tous les événements nécessaires
|
313
|
+
const checkEvents = () => {
|
314
|
+
var _a;
|
315
|
+
if (isResolved)
|
316
|
+
return;
|
317
|
+
const eventsList = Array.from(receivedEvents.values());
|
318
|
+
switch (strategy.type) {
|
319
|
+
case "single":
|
320
|
+
if (receivedEvents.size > 0) {
|
321
|
+
resolve(eventsList);
|
322
|
+
isResolved = true;
|
323
|
+
}
|
324
|
+
break;
|
325
|
+
case "all":
|
326
|
+
case "correlate":
|
327
|
+
const allReceived = events.every((e) => receivedEvents.has(e));
|
328
|
+
if (allReceived) {
|
329
|
+
if (strategy.type === "correlate") {
|
330
|
+
const correlated = (_a = strategy.correlation) === null || _a === void 0 ? void 0 : _a.call(strategy, eventsList);
|
331
|
+
if (!correlated)
|
332
|
+
return;
|
333
|
+
}
|
334
|
+
resolve(eventsList);
|
335
|
+
isResolved = true;
|
336
|
+
}
|
337
|
+
break;
|
338
|
+
}
|
339
|
+
if (isResolved) {
|
340
|
+
cleanup();
|
341
|
+
}
|
342
|
+
};
|
343
|
+
events.forEach((event) => {
|
344
|
+
if (!receivedEvents.has(event)) {
|
345
|
+
const handler = (eventData) => {
|
346
|
+
receivedEvents.set(event, {
|
347
|
+
type: event,
|
348
|
+
payload: eventData,
|
349
|
+
timestamp: Date.now(),
|
350
|
+
});
|
351
|
+
checkEvents();
|
352
|
+
};
|
353
|
+
eventHandlers.set(event, handler);
|
354
|
+
this.eventEmitter.on(event, handler);
|
355
|
+
}
|
356
|
+
});
|
357
|
+
const cleanup = () => {
|
358
|
+
eventHandlers.forEach((handler, event) => {
|
359
|
+
this.eventEmitter.removeListener(event, handler);
|
360
|
+
});
|
361
|
+
};
|
362
|
+
checkEvents();
|
363
|
+
const timeoutId = setTimeout(() => {
|
364
|
+
if (!isResolved) {
|
365
|
+
cleanup();
|
366
|
+
reject(new Error(`Timeout waiting for events: ${events.join(", ")}`));
|
367
|
+
}
|
368
|
+
}, timeout);
|
291
369
|
});
|
292
370
|
});
|
293
371
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"event-manager.js","sourceRoot":"","sources":["../../graph/event-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAAmD;
|
1
|
+
{"version":3,"file":"event-manager.js","sourceRoot":"","sources":["../../graph/event-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAAmD;AAWnD;;;;GAIG;AACH,MAAa,iBAAiB;IAU5B;;;;;;;;;;OAUG;IACH,YACU,YAA2B,EAC3B,KAA2C,EACnD,IAAY,EACZ,OAAwB,EACxB,WAAsB,EACtB,SAAkB,EAClB,kBAAqE,EAC7D,YAA2B;QAP3B,iBAAY,GAAZ,YAAY,CAAe;QAC3B,UAAK,GAAL,KAAK,CAAsC;QAM3C,iBAAY,GAAZ,YAAY,CAAe;QA5B7B,iBAAY,GAA2B,IAAI,cAAO,EAAE,CAAC;QACrD,gBAAW,GAA2C,IAAI,GAAG,EAAE,CAAC;QAMhE,eAAU,GAAG,IAAI,GAAG,EAAe,CAAC;QAuB1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,iBAAiB;QACtB,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YACpD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CACvC,IAAA,aAAM,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CACrD,CAAC;gBACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,SAAS,CACd,IAAY,EACZ,OAAW,EACX,OAAyB;QAEzB,MAAM,KAAK,GAAG;YACZ,IAAI;YACJ,OAAO;YACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,mBAAmB;QACjB,4FAA4F;QAC5F,kGAAkG;QAClG,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY;aAClD,YAAY,CAAC,GAAG,CAAC;aACjB,OAAO,EAAE,EAAE,CAAC;YACb,yFAAyF;YACzF,kEAAkE;YAClE,wFAAwF;YACxF,gGAAgG;QAClG,CAAC;QAED,4FAA4F;QAC5F,mCAAmC;QACnC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,kDAAkD;YAClD,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;QAED,2CAA2C;QAC3C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC5B,IAAI,CAAC,YAAY,CAAC,EAAE,CAClB,KAAK,EACL,CAAO,IAA+B,EAAE,EAAE;wBACxC,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACnD,IAAI,IAAI;4BAAE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;wBAE5C,kFAAkF;wBAClF,MAAM,IAAI,CAAC,WAAW,CACpB,IAAI,CAAC,IAAI,EACT,YAAY,EACZ,SAAS;wBACT,uBAAuB,CAAC,IAAI,CAC7B,CAAC;oBACJ,CAAC,CAAA,CACF,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,wBAAwB;QACtB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACjC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,CAAO,IAA+B,EAAE,EAAE;;oBACpE,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC7C,IAAI,IAAI;wBAAE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;oBAE5C,sBAAsB;oBACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBAE5D,IAAI,CAAC;wBACH,iDAAiD;wBACjD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;4BACpB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;wBACpE,CAAC;wBAED,MAAM,IAAI,CAAC,WAAW,CACpB,IAAI,CAAC,SAAS,EACd,YAAY,EACZ,SAAS,EACT,KAAK,CACN,CAAC;wBAEF,wBAAwB;wBACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE;4BACvC,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,OAAO,EAAE,IAAI,CAAC,OAAO;yBACtB,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,oBAAoB;wBACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;wBACjE,MAAA,IAAI,CAAC,kBAAkB,qDAAG,KAAc,EAAE,YAAY,CAAC,CAAC;wBACxD,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC,CAAA,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACG,aAAa;6DACjB,MAAgB,EAChB,UAAkB,KAAK;YAEvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAe,CAAC;gBAC9C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;gBAChC,IAAI,UAAU,GAAG,KAAK,CAAC;gBAEvB,MAAM,OAAO,GAAG,GAAG,EAAE;oBACnB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;wBACvB,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACzC,IAAI,OAAO,EAAE,CAAC;4BACZ,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;wBACnD,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC;gBAEF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBACvB,MAAM,OAAO,GAAG,CAAC,SAAc,EAAE,EAAE;wBACjC,IAAI,CAAC,UAAU,EAAE,CAAC;4BAChB,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;4BAErC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gCAC/C,UAAU,GAAG,IAAI,CAAC;gCAClB,YAAY,CAAC,SAAS,CAAC,CAAC;gCACxB,OAAO,EAAE,CAAC;gCACV,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;4BAC/C,CAAC;wBACH,CAAC;oBACH,CAAC,CAAC;oBAEF,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBAClC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACvC,CAAC,CAAC,CAAC;gBAEH,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;oBAChC,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,UAAU,GAAG,IAAI,CAAC;wBAClB,OAAO,EAAE,CAAC;wBACV,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;oBACxE,CAAC;gBACH,CAAC,EAAE,OAAO,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAED;;;;OAIG;IACH,EAAE,CAAC,SAAiB,EAAE,OAAiC;QACrD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,SAAiB,EAAE,IAAU;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACK,gBAAgB;QACtB,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;;;OASG;IACW,WAAW,CACvB,QAAgB,EAChB,OAAwB,EACxB,MAAW,EACX,gBAAyB;;YAEzB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,aAAa,CAAC,CAAC;YAClD,CAAC;YAED,qDAAqD;YACrD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC;YAED,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAClC,QAAQ,EACR,OAAO,EACP,MAAM,EACN,gBAAgB,CACjB,CAAC;QACJ,CAAC;KAAA;IAED;;OAEG;IACH,uBAAuB,CACrB,UAAoB,EACpB,SAAiB,EACjB,aAAmD;QAEnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAC;YACxD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;YAChC,IAAI,UAAU,GAAG,KAAK,CAAC;YAEvB,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;oBACvC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YAEF,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;gBAC/B,MAAM,OAAO,GAAG,CAAC,SAAc,EAAE,EAAE;oBACjC,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,MAAM,KAAK,GAAkB;4BAC3B,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,SAAS;4BAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;yBACtB,CAAC;wBACF,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;wBAErC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;4BACzD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;4BACnD,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;gCAC1B,UAAU,GAAG,IAAI,CAAC;gCAClB,YAAY,CAAC,SAAS,CAAC,CAAC;gCACxB,OAAO,EAAE,CAAC;gCACV,OAAO,CAAC,MAAM,CAAC,CAAC;4BAClB,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC;gBAEF,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACtC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAChC,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,EAAE,CAAC;oBACV,MAAM,CACJ,IAAI,KAAK,CACP,0CAA0C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClE,CACF,CAAC;gBACJ,CAAC;YACH,CAAC,EAAE,SAAS,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACG,gBAAgB,CACpB,QAAgB,EAChB,MAAmB;;YAEnB,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;YAErD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAe,CAAC;gBAC9C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;gBAChC,IAAI,UAAU,GAAG,KAAK,CAAC;gBAEvB,oCAAoC;gBACpC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;oBAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACjD,IAAI,aAAa,EAAE,CAAC;wBAClB,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE;4BACxB,IAAI,EAAE,KAAK;4BACX,OAAO,EAAE,aAAa;4BACtB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;yBACtB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,wDAAwD;gBACxD,MAAM,WAAW,GAAG,GAAG,EAAE;;oBACvB,IAAI,UAAU;wBAAE,OAAO;oBAEvB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;oBAEvD,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;wBACtB,KAAK,QAAQ;4BACX,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gCAC5B,OAAO,CAAC,UAAU,CAAC,CAAC;gCACpB,UAAU,GAAG,IAAI,CAAC;4BACpB,CAAC;4BACD,MAAM;wBAER,KAAK,KAAK,CAAC;wBACX,KAAK,WAAW;4BACd,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAS,EAAE,EAAE,CAC7C,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CACtB,CAAC;4BACF,IAAI,WAAW,EAAE,CAAC;gCAChB,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oCAClC,MAAM,UAAU,GAAG,MAAA,QAAQ,CAAC,WAAW,yDAAG,UAAU,CAAC,CAAC;oCACtD,IAAI,CAAC,UAAU;wCAAE,OAAO;gCAC1B,CAAC;gCACD,OAAO,CAAC,UAAU,CAAC,CAAC;gCACpB,UAAU,GAAG,IAAI,CAAC;4BACpB,CAAC;4BACD,MAAM;oBACV,CAAC;oBAED,IAAI,UAAU,EAAE,CAAC;wBACf,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,CAAC;gBAEF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;oBAC/B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC/B,MAAM,OAAO,GAAG,CAAC,SAAc,EAAE,EAAE;4BACjC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE;gCACxB,IAAI,EAAE,KAAK;gCACX,OAAO,EAAE,SAAS;gCAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;6BACtB,CAAC,CAAC;4BACH,WAAW,EAAE,CAAC;wBAChB,CAAC,CAAC;wBACF,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;wBAClC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,MAAM,OAAO,GAAG,GAAG,EAAE;oBACnB,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;wBACvC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBACnD,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC;gBAEF,WAAW,EAAE,CAAC;gBAEd,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;oBAChC,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,OAAO,EAAE,CAAC;wBACV,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;oBACxE,CAAC;gBACH,CAAC,EAAE,OAAO,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;CACF;AAvbD,8CAubC"}
|
package/dist/graph/index.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { ZodSchema } from "zod";
|
2
|
-
import { GraphObservable } from "../interfaces";
|
2
|
+
import { GraphObservable, NLPNodeConfig } from "../interfaces";
|
3
3
|
import { GraphConfig, GraphContext, GraphNodeConfig } from "../types";
|
4
4
|
import { NodeParams } from "./node";
|
5
5
|
import { GraphObserver } from "./observer";
|
@@ -34,6 +34,7 @@ export declare class GraphFlow<T extends ZodSchema> {
|
|
34
34
|
private logger;
|
35
35
|
private eventManager;
|
36
36
|
private nodeExecutor;
|
37
|
+
private nlpNodes;
|
37
38
|
/**
|
38
39
|
* Creates a new instance of GraphFlow
|
39
40
|
* @param {string} name - The name of the graph flow
|
@@ -161,5 +162,23 @@ export declare class GraphFlow<T extends ZodSchema> {
|
|
161
162
|
* @returns {GraphVisualizer<T>} A visualizer instance
|
162
163
|
*/
|
163
164
|
createVisualizer(): GraphVisualizer<T>;
|
165
|
+
/**
|
166
|
+
* Gets the schema for the current graph
|
167
|
+
* @returns {T} The schema for the current graph
|
168
|
+
*/
|
169
|
+
getSchema(): T;
|
170
|
+
/**
|
171
|
+
* Adds a new NLP node to the graph
|
172
|
+
* @param {NLPNodeConfig<T>} config - Configuration for the NLP node
|
173
|
+
* @returns {Promise<void>}
|
174
|
+
*/
|
175
|
+
addNLPNode(config: NLPNodeConfig<T>): Promise<void>;
|
176
|
+
/**
|
177
|
+
* Processes natural language input using a specific NLP node
|
178
|
+
* @param {string} text - The input text to process
|
179
|
+
* @param {string} nodeName - The name of the NLP node to use
|
180
|
+
* @returns {Promise<GraphContext<T>>} The result of the NLP node execution
|
181
|
+
*/
|
182
|
+
processNaturalLanguage(text: string, nodeName: string): Promise<GraphContext<T>>;
|
164
183
|
}
|
165
184
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../graph/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,eAAe,EAAiB,MAAM,eAAe,CAAC;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../graph/index.ts"],"names":[],"mappings":"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"}
|
package/dist/graph/index.js
CHANGED
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.GraphFlow = void 0;
|
13
13
|
const events_1 = require("events");
|
14
14
|
const rxjs_1 = require("rxjs");
|
15
|
+
const nlp_1 = require("../modules/nlp");
|
15
16
|
const event_manager_1 = require("./event-manager");
|
16
17
|
const logger_1 = require("./logger");
|
17
18
|
const node_1 = require("./node");
|
@@ -43,6 +44,7 @@ class GraphFlow {
|
|
43
44
|
this.verbose = false;
|
44
45
|
this.eventSubject = new rxjs_1.Subject();
|
45
46
|
this.destroySubject = new rxjs_1.Subject();
|
47
|
+
this.nlpNodes = new Map();
|
46
48
|
this.nodes = new Map(config.nodes.map((node) => [node.name, node]));
|
47
49
|
this.validator = config.schema;
|
48
50
|
this.context = config.schema.parse(config.context);
|
@@ -58,7 +60,7 @@ class GraphFlow {
|
|
58
60
|
this.setupEventStreams();
|
59
61
|
this.setupEventListeners();
|
60
62
|
this.setupGraphEventListeners();
|
61
|
-
this.observer = new observer_1.GraphObserver(this, this.eventSubject, this.stateSubject, this.destroySubject);
|
63
|
+
this.observer = new observer_1.GraphObserver(this, this.eventSubject, this.stateSubject, this.destroySubject, this.eventManager);
|
62
64
|
}
|
63
65
|
/**
|
64
66
|
* Sets up event listeners for node-based events
|
@@ -116,6 +118,9 @@ class GraphFlow {
|
|
116
118
|
*/
|
117
119
|
executeNode(nodeName_1, context_1, inputs_1) {
|
118
120
|
return __awaiter(this, arguments, void 0, function* (nodeName, context, inputs, triggeredByEvent = false) {
|
121
|
+
const node = this.nodes.get(nodeName);
|
122
|
+
if (!node)
|
123
|
+
throw new Error(`Node "${nodeName}" not found`);
|
119
124
|
return this.nodeExecutor.executeNode(nodeName, context, inputs, triggeredByEvent);
|
120
125
|
});
|
121
126
|
}
|
@@ -191,15 +196,14 @@ class GraphFlow {
|
|
191
196
|
* @returns {Promise<void>}
|
192
197
|
*/
|
193
198
|
emit(eventName, data) {
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
});
|
199
|
+
const event = {
|
200
|
+
type: eventName,
|
201
|
+
payload: data,
|
202
|
+
timestamp: Date.now(),
|
203
|
+
};
|
204
|
+
this.eventSubject.next(event);
|
205
|
+
this.eventManager.emit(eventName, data);
|
206
|
+
return Promise.resolve();
|
203
207
|
}
|
204
208
|
/**
|
205
209
|
* Registers an event handler
|
@@ -306,6 +310,51 @@ class GraphFlow {
|
|
306
310
|
createVisualizer() {
|
307
311
|
return new visualizer_1.GraphVisualizer(this.nodes);
|
308
312
|
}
|
313
|
+
/**
|
314
|
+
* Gets the schema for the current graph
|
315
|
+
* @returns {T} The schema for the current graph
|
316
|
+
*/
|
317
|
+
getSchema() {
|
318
|
+
return this.validator;
|
319
|
+
}
|
320
|
+
/**
|
321
|
+
* Adds a new NLP node to the graph
|
322
|
+
* @param {NLPNodeConfig<T>} config - Configuration for the NLP node
|
323
|
+
* @returns {Promise<void>}
|
324
|
+
*/
|
325
|
+
addNLPNode(config) {
|
326
|
+
return __awaiter(this, void 0, void 0, function* () {
|
327
|
+
const node = new nlp_1.NLPNode(config);
|
328
|
+
yield node.initialize();
|
329
|
+
this.nlpNodes.set(config.name, node);
|
330
|
+
this.addNode({
|
331
|
+
name: config.name,
|
332
|
+
execute: (context, input) => __awaiter(this, void 0, void 0, function* () {
|
333
|
+
if (!(input === null || input === void 0 ? void 0 : input.input))
|
334
|
+
return;
|
335
|
+
const result = yield node.process(input.input);
|
336
|
+
console.log("GraphFlow NLP result:", result);
|
337
|
+
Object.assign(context, { nlpResult: result });
|
338
|
+
}),
|
339
|
+
next: config.next,
|
340
|
+
});
|
341
|
+
});
|
342
|
+
}
|
343
|
+
/**
|
344
|
+
* Processes natural language input using a specific NLP node
|
345
|
+
* @param {string} text - The input text to process
|
346
|
+
* @param {string} nodeName - The name of the NLP node to use
|
347
|
+
* @returns {Promise<GraphContext<T>>} The result of the NLP node execution
|
348
|
+
*/
|
349
|
+
processNaturalLanguage(text, nodeName) {
|
350
|
+
return __awaiter(this, void 0, void 0, function* () {
|
351
|
+
const node = this.nlpNodes.get(nodeName);
|
352
|
+
if (!node) {
|
353
|
+
throw new Error(`NLP node "${nodeName}" not found`);
|
354
|
+
}
|
355
|
+
return this.execute(nodeName, { input: text });
|
356
|
+
});
|
357
|
+
}
|
309
358
|
}
|
310
359
|
exports.GraphFlow = GraphFlow;
|
311
360
|
//# sourceMappingURL=index.js.map
|