@ai.ntellect/core 0.7.5 → 0.7.6
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/dist/graph/controller.d.ts +8 -9
- package/dist/graph/controller.d.ts.map +1 -1
- package/dist/graph/controller.js +24 -25
- package/dist/graph/controller.js.map +1 -1
- package/dist/graph/index.d.ts +5 -3
- package/dist/graph/index.d.ts.map +1 -1
- package/dist/graph/index.js +13 -9
- package/dist/graph/index.js.map +1 -1
- package/dist/graph/node.d.ts +30 -11
- package/dist/graph/node.d.ts.map +1 -1
- package/dist/graph/node.js +64 -66
- package/dist/graph/node.js.map +1 -1
- package/dist/graph/observer.d.ts.map +1 -1
- package/dist/graph/observer.js +0 -1
- package/dist/graph/observer.js.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/graph/controller.ts +40 -39
- package/graph/index.ts +17 -13
- package/graph/node.ts +104 -95
- package/graph/observer.ts +0 -1
- package/package.json +1 -1
- package/test/graph/controller.test.ts +187 -0
- package/test/graph/index.test.ts +30 -19
- package/test/graph/node.test.ts +141 -6
- package/types/index.ts +2 -5
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"observer.js","sourceRoot":"","sources":["../../graph/observer.ts"],"names":[],"mappings":";;;AAAA,+BAMc;AACd,8CAUwB;AAMxB;;;;GAIG;AACH,MAAa,aAAa;IACxB,YACU,KAAmB,EACnB,YAAoC,EACpC,YAA8C,EAC9C,cAA6B;QAH7B,UAAK,GAAL,KAAK,CAAc;QACnB,iBAAY,GAAZ,YAAY,CAAwB;QACpC,iBAAY,GAAZ,YAAY,CAAkC;QAC9C,mBAAc,GAAd,cAAc,CAAe;IACpC,CAAC;IAEJ;;;;;;;;;;OAUG;IACH,KAAK,CACH,UAOI,EAAE;QAEN,MAAM,cAAc,GAAG,IAAI,iBAAU,CAAM,CAAC,UAAU,EAAE,EAAE;YACxD,
|
1
|
+
{"version":3,"file":"observer.js","sourceRoot":"","sources":["../../graph/observer.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
@@ -74,9 +74,9 @@ export interface Node<T extends ZodSchema, I = any> {
|
|
74
74
|
/** Schema for node outputs */
|
75
75
|
outputs?: ZodSchema;
|
76
76
|
/** Execute function for the node */
|
77
|
-
execute: (context: GraphContext<T>,
|
77
|
+
execute: (context: GraphContext<T>, params?: I) => Promise<void>;
|
78
78
|
/** Optional condition for node execution */
|
79
|
-
condition?: (context: GraphContext<T
|
79
|
+
condition?: (context: GraphContext<T>, params?: I) => boolean;
|
80
80
|
/** Array of next node names */
|
81
81
|
next?: string[] | ((context: GraphContext<T>) => string[]);
|
82
82
|
/** Array of event names that trigger this node */
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI9C;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;CACjB;AAID;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,kCAAkC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,yCAAyC;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,wBAAwB;IACxB,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAIF;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,WAAW,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,GAAG,GAAG;IAChD,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/C,8BAA8B;IAC9B,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,oCAAoC;IACpC,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"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"}
|
package/graph/controller.ts
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
import { ZodSchema } from "zod";
|
2
2
|
import { GraphContext } from "../types";
|
3
3
|
import { GraphFlow } from "./index";
|
4
|
+
import { NodeParams } from "./node";
|
4
5
|
|
5
6
|
/**
|
6
7
|
* Controller class for managing the execution of graph flows
|
@@ -11,68 +12,68 @@ export class GraphController {
|
|
11
12
|
* Executes multiple graphs sequentially
|
12
13
|
* @param graphs - Array of GraphFlow instances to execute
|
13
14
|
* @param startNodes - Array of starting node identifiers for each graph
|
14
|
-
* @param
|
15
|
+
* @param inputs - Optional array of additional inputs for each graph
|
16
|
+
* @param params - Optional array of node parameters for each graph
|
15
17
|
* @returns Map containing results of each graph execution, keyed by graph name and index
|
16
18
|
* @template T - Zod schema type for graph context validation
|
17
19
|
*/
|
18
|
-
static async executeSequential<T extends ZodSchema
|
19
|
-
graphs:
|
20
|
+
static async executeSequential<T extends ZodSchema>(
|
21
|
+
graphs: GraphFlow<T>[],
|
20
22
|
startNodes: string[],
|
21
|
-
|
23
|
+
params?: NodeParams[]
|
22
24
|
): Promise<any[]> {
|
23
|
-
const results = new Map<string, GraphContext<T
|
25
|
+
const results = new Map<string, GraphContext<T>>();
|
24
26
|
for (let i = 0; i < graphs.length; i++) {
|
25
|
-
const result = await graphs[i].execute(
|
27
|
+
const result = await graphs[i].execute(
|
28
|
+
startNodes[i],
|
29
|
+
params?.[i],
|
30
|
+
undefined
|
31
|
+
);
|
26
32
|
results.set(`${graphs[i].name}-${i}`, result);
|
27
33
|
}
|
28
34
|
return Array.from(results.values());
|
29
35
|
}
|
30
36
|
|
37
|
+
private static async executeGraph<T extends ZodSchema>(
|
38
|
+
graph: GraphFlow<T>,
|
39
|
+
startNode: string,
|
40
|
+
params?: NodeParams
|
41
|
+
): Promise<GraphContext<T>> {
|
42
|
+
try {
|
43
|
+
return await graph.execute(startNode, params);
|
44
|
+
} catch (error) {
|
45
|
+
throw error;
|
46
|
+
}
|
47
|
+
}
|
48
|
+
|
31
49
|
/**
|
32
50
|
* Executes multiple graphs in parallel with optional concurrency control
|
33
51
|
* @param graphs - Array of GraphFlow instances to execute
|
34
52
|
* @param startNodes - Array of starting node identifiers for each graph
|
35
|
-
* @param
|
53
|
+
* @param concurrency - Optional limit on number of concurrent graph executions
|
36
54
|
* @param inputs - Optional array of additional inputs for each graph
|
37
|
-
* @param concurrencyLimit - Optional limit on number of concurrent graph executions
|
38
55
|
* @returns Map containing results of each graph execution, keyed by graph name
|
39
56
|
* @template T - Zod schema type for graph context validation
|
40
57
|
*/
|
41
|
-
static async executeParallel<T extends ZodSchema
|
42
|
-
graphs:
|
58
|
+
static async executeParallel<T extends ZodSchema>(
|
59
|
+
graphs: GraphFlow<T>[],
|
43
60
|
startNodes: string[],
|
44
61
|
concurrency: number,
|
45
|
-
inputs
|
46
|
-
): Promise<
|
47
|
-
const results
|
48
|
-
|
49
|
-
if (inputs) {
|
50
|
-
inputs = inputs.map((input) => input || {});
|
51
|
-
}
|
62
|
+
inputs?: any[]
|
63
|
+
): Promise<GraphContext<T>[]> {
|
64
|
+
const results: GraphContext<T>[] = [];
|
52
65
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
)
|
61
|
-
);
|
62
|
-
batchResults.forEach((result, index) => {
|
63
|
-
results.set(`${graphs[i + index].name}`, result);
|
64
|
-
});
|
65
|
-
}
|
66
|
-
} else {
|
67
|
-
const allResults = await Promise.all(
|
68
|
-
graphs.map((graph, index) =>
|
69
|
-
graph.execute(startNodes[index], inputs?.[index] || {})
|
70
|
-
)
|
66
|
+
for (let i = 0; i < graphs.length; i += concurrency) {
|
67
|
+
const batch = graphs.slice(i, i + concurrency);
|
68
|
+
const batchResults = await Promise.all(
|
69
|
+
batch.map((graph, idx) => {
|
70
|
+
const input = inputs?.[i + idx];
|
71
|
+
return this.executeGraph(graph, startNodes[i + idx], input);
|
72
|
+
})
|
71
73
|
);
|
72
|
-
|
73
|
-
results.set(`${graphs[index].name}`, result);
|
74
|
-
});
|
74
|
+
results.push(...batchResults);
|
75
75
|
}
|
76
|
-
|
76
|
+
|
77
|
+
return results;
|
77
78
|
}
|
78
79
|
}
|
package/graph/index.ts
CHANGED
@@ -5,7 +5,7 @@ import { GraphObservable, IEventEmitter } from "../interfaces";
|
|
5
5
|
import { GraphContext, GraphDefinition, GraphEvent, Node } from "../types";
|
6
6
|
import { GraphEventManager } from "./event-manager";
|
7
7
|
import { GraphLogger } from "./logger";
|
8
|
-
import { GraphNode } from "./node";
|
8
|
+
import { GraphNode, NodeParams } from "./node";
|
9
9
|
import { GraphObserver } from "./observer";
|
10
10
|
|
11
11
|
/**
|
@@ -75,7 +75,7 @@ export class GraphFlow<T extends ZodSchema> {
|
|
75
75
|
config.onError
|
76
76
|
);
|
77
77
|
this.nodeExecutor = new GraphNode(
|
78
|
-
this.nodes,
|
78
|
+
this.nodes as Map<string, import("./node").Node<T, any>>,
|
79
79
|
this.logger,
|
80
80
|
this.eventManager,
|
81
81
|
this.eventSubject,
|
@@ -216,30 +216,34 @@ export class GraphFlow<T extends ZodSchema> {
|
|
216
216
|
/**
|
217
217
|
* Executes the graph flow starting from a specific node
|
218
218
|
* @param {string} startNode - Name of the node to start execution from
|
219
|
-
* @param {
|
220
|
-
* @param {
|
219
|
+
* @param {any} inputs - Optional input parameters for the start node
|
220
|
+
* @param {Partial<GraphContext<T>>} context - Optional context to merge
|
221
|
+
* @param {NodeParams} params - Optional node parameters
|
221
222
|
* @returns {Promise<GraphContext<T>>} Final context after execution
|
222
223
|
*/
|
223
224
|
public async execute(
|
224
225
|
startNode: string,
|
225
|
-
|
226
|
-
|
226
|
+
params?: NodeParams,
|
227
|
+
context?: Partial<GraphContext<T>>
|
227
228
|
): Promise<GraphContext<T>> {
|
228
|
-
if (
|
229
|
-
Object.assign(this.context,
|
230
|
-
}
|
231
|
-
|
232
|
-
if (inputContext) {
|
233
|
-
Object.assign(this.context, inputContext);
|
229
|
+
if (context) {
|
230
|
+
Object.assign(this.context, context);
|
234
231
|
}
|
235
232
|
|
236
233
|
this.eventEmitter.emit("graphStarted", { name: this.name });
|
237
234
|
|
238
235
|
try {
|
236
|
+
const node = this.nodes.get(startNode);
|
237
|
+
if (!node) throw new Error(`Node "${startNode}" not found`);
|
238
|
+
|
239
|
+
if (node.inputs && !params) {
|
240
|
+
throw new Error(`Inputs required for node "${startNode}"`);
|
241
|
+
}
|
242
|
+
|
239
243
|
await this.nodeExecutor.executeNode(
|
240
244
|
startNode,
|
241
245
|
this.context,
|
242
|
-
|
246
|
+
params,
|
243
247
|
false
|
244
248
|
);
|
245
249
|
|
package/graph/node.ts
CHANGED
@@ -1,14 +1,50 @@
|
|
1
1
|
import { BehaviorSubject, Subject } from "rxjs";
|
2
2
|
import { ZodSchema } from "zod";
|
3
|
-
import { GraphContext, GraphEvent
|
3
|
+
import { GraphContext, GraphEvent } from "../types";
|
4
4
|
import { GraphEventManager } from "./event-manager";
|
5
|
-
import { GraphLogger } from "./logger";
|
6
5
|
|
7
6
|
/**
|
8
7
|
* Represents a node in the graph that can execute operations and manage state
|
9
8
|
* @template T - The Zod schema type for validation
|
10
9
|
*/
|
10
|
+
export interface NodeParams<T = any> {
|
11
|
+
[key: string]: T;
|
12
|
+
}
|
13
|
+
|
14
|
+
export interface Node<T extends ZodSchema, I = any> {
|
15
|
+
condition?: (context: GraphContext<T>, params?: NodeParams) => boolean;
|
16
|
+
execute: (
|
17
|
+
context: GraphContext<T>,
|
18
|
+
inputs: I,
|
19
|
+
params?: NodeParams
|
20
|
+
) => Promise<void>;
|
21
|
+
next?: string[] | ((context: GraphContext<T>) => string[]);
|
22
|
+
inputs?: ZodSchema;
|
23
|
+
outputs?: ZodSchema;
|
24
|
+
retry?: {
|
25
|
+
maxAttempts: number;
|
26
|
+
delay?: number;
|
27
|
+
onRetryFailed?: (error: Error, context: GraphContext<T>) => Promise<void>;
|
28
|
+
continueOnFailed?: boolean;
|
29
|
+
};
|
30
|
+
correlateEvents?: {
|
31
|
+
events: string[];
|
32
|
+
timeout?: number;
|
33
|
+
correlation: (events: GraphEvent<T>[]) => boolean;
|
34
|
+
};
|
35
|
+
waitForEvents?: {
|
36
|
+
events: string[];
|
37
|
+
timeout: number;
|
38
|
+
};
|
39
|
+
}
|
40
|
+
|
41
|
+
export interface GraphLogger {
|
42
|
+
addLog: (message: string, data?: any) => void;
|
43
|
+
}
|
44
|
+
|
11
45
|
export class GraphNode<T extends ZodSchema> {
|
46
|
+
private lastStateEvent: GraphEvent<T> | null = null;
|
47
|
+
|
12
48
|
/**
|
13
49
|
* Creates a new GraphNode instance
|
14
50
|
* @param nodes - Map of all nodes in the graph
|
@@ -32,15 +68,22 @@ export class GraphNode<T extends ZodSchema> {
|
|
32
68
|
* @private
|
33
69
|
*/
|
34
70
|
private emitEvent(type: string, payload: any) {
|
35
|
-
|
71
|
+
if (type === "nodeStateChanged") {
|
72
|
+
if (
|
73
|
+
this.lastStateEvent?.type === type &&
|
74
|
+
this.lastStateEvent.payload.property === payload.property &&
|
75
|
+
this.lastStateEvent.payload.newValue === payload.newValue &&
|
76
|
+
this.lastStateEvent.payload.nodeName === payload.nodeName
|
77
|
+
) {
|
78
|
+
return;
|
79
|
+
}
|
80
|
+
}
|
81
|
+
|
36
82
|
const event = {
|
37
83
|
type,
|
38
84
|
payload: {
|
39
85
|
...payload,
|
40
|
-
name:
|
41
|
-
type === "nodeStateChanged"
|
42
|
-
? payload.name || payload.nodeName
|
43
|
-
: payload.name,
|
86
|
+
name: type === "nodeStateChanged" ? payload.nodeName : payload.name,
|
44
87
|
context: { ...payload.context },
|
45
88
|
},
|
46
89
|
timestamp: Date.now(),
|
@@ -49,8 +92,8 @@ export class GraphNode<T extends ZodSchema> {
|
|
49
92
|
this.eventSubject.next(event);
|
50
93
|
this.eventManager.emitEvent(type, event);
|
51
94
|
|
52
|
-
// Update state subject only for state changes
|
53
95
|
if (type === "nodeStateChanged") {
|
96
|
+
this.lastStateEvent = event;
|
54
97
|
this.stateSubject.next({ ...payload.context });
|
55
98
|
}
|
56
99
|
}
|
@@ -63,7 +106,7 @@ export class GraphNode<T extends ZodSchema> {
|
|
63
106
|
* @param triggeredByEvent - Whether the execution was triggered by an event
|
64
107
|
* @throws Error if the node is not found or execution fails
|
65
108
|
*/
|
66
|
-
async executeNode(
|
109
|
+
public async executeNode(
|
67
110
|
nodeName: string,
|
68
111
|
context: GraphContext<T>,
|
69
112
|
inputs: any,
|
@@ -72,61 +115,51 @@ export class GraphNode<T extends ZodSchema> {
|
|
72
115
|
const node = this.nodes.get(nodeName);
|
73
116
|
if (!node) throw new Error(`Node "${nodeName}" not found.`);
|
74
117
|
|
75
|
-
|
76
|
-
|
118
|
+
// Créer une copie du contexte pour ce nœud
|
119
|
+
const nodeContext = { ...context };
|
120
|
+
this.emitEvent("nodeStarted", { name: nodeName, context: nodeContext });
|
77
121
|
|
78
122
|
try {
|
79
|
-
|
80
|
-
if (node.condition && !node.condition(context)) {
|
81
|
-
this.logger.addLog(
|
82
|
-
`⏭️ Skipping node "${nodeName}" - condition not met`
|
83
|
-
);
|
84
|
-
return;
|
85
|
-
}
|
86
|
-
|
87
|
-
const contextProxy = new Proxy(context, {
|
123
|
+
const contextProxy = new Proxy(nodeContext, {
|
88
124
|
set: (target, prop, value) => {
|
89
125
|
const oldValue = target[prop];
|
90
126
|
if (oldValue === value) return true;
|
91
127
|
|
92
128
|
target[prop] = value;
|
129
|
+
// Mettre à jour le contexte global
|
130
|
+
context[prop as keyof typeof context] = value;
|
131
|
+
|
93
132
|
this.emitEvent("nodeStateChanged", {
|
94
133
|
nodeName,
|
95
134
|
property: prop.toString(),
|
96
135
|
oldValue,
|
97
136
|
newValue: value,
|
98
|
-
context: target,
|
137
|
+
context: { ...target },
|
99
138
|
});
|
100
|
-
|
101
139
|
return true;
|
102
140
|
},
|
103
|
-
get: (target, prop) => target[prop],
|
104
141
|
});
|
105
142
|
|
106
|
-
|
107
|
-
|
143
|
+
if (node.condition && !node.condition(contextProxy, inputs)) {
|
144
|
+
return;
|
145
|
+
}
|
108
146
|
|
109
|
-
|
110
|
-
|
111
|
-
const nextNodes =
|
112
|
-
typeof node.next === "function"
|
113
|
-
? node.next(contextProxy)
|
114
|
-
: node.next || [];
|
147
|
+
await this.executeWithRetry(node, contextProxy, inputs, nodeName);
|
148
|
+
this.emitEvent("nodeCompleted", { name: nodeName, context: nodeContext });
|
115
149
|
|
150
|
+
if (!triggeredByEvent && node.next) {
|
151
|
+
const nextNodes =
|
152
|
+
typeof node.next === "function" ? node.next(contextProxy) : node.next;
|
116
153
|
for (const nextNodeName of nextNodes) {
|
117
154
|
await this.executeNode(nextNodeName, context, undefined, false);
|
118
155
|
}
|
119
156
|
}
|
120
|
-
|
121
|
-
this.logger.addLog(`✅ Node "${nodeName}" executed successfully`);
|
122
|
-
this.emitEvent("nodeCompleted", { name: nodeName, context });
|
123
157
|
} catch (error) {
|
124
|
-
this.
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
);
|
129
|
-
this.emitEvent("nodeError", { name: nodeName, error, context });
|
158
|
+
this.emitEvent("nodeError", {
|
159
|
+
name: nodeName,
|
160
|
+
error,
|
161
|
+
context: nodeContext,
|
162
|
+
});
|
130
163
|
throw error;
|
131
164
|
}
|
132
165
|
}
|
@@ -218,30 +251,44 @@ export class GraphNode<T extends ZodSchema> {
|
|
218
251
|
nodeName: string
|
219
252
|
): Promise<void> {
|
220
253
|
let attempts = 0;
|
221
|
-
let lastError: Error
|
254
|
+
let lastError: Error = new Error("Unknown error");
|
222
255
|
|
223
|
-
while (attempts < node.retry
|
256
|
+
while (attempts < (node.retry?.maxAttempts || 1)) {
|
224
257
|
try {
|
225
|
-
|
226
|
-
|
227
|
-
|
258
|
+
// Validation des inputs
|
259
|
+
if (node.inputs) {
|
260
|
+
try {
|
261
|
+
node.inputs.parse(inputs);
|
262
|
+
} catch (error: any) {
|
263
|
+
const message = error.errors?.[0]?.message || error.message;
|
264
|
+
throw new Error(`Input validation failed: ${message}`);
|
265
|
+
}
|
266
|
+
}
|
267
|
+
|
268
|
+
// Exécution du node
|
228
269
|
await node.execute(contextProxy, inputs);
|
270
|
+
|
271
|
+
// Validation des outputs
|
272
|
+
if (node.outputs) {
|
273
|
+
try {
|
274
|
+
node.outputs.parse(contextProxy);
|
275
|
+
} catch (error: any) {
|
276
|
+
const message = error.errors?.[0]?.message || error.message;
|
277
|
+
throw new Error(`Output validation failed: ${message}`);
|
278
|
+
}
|
279
|
+
}
|
229
280
|
return;
|
230
281
|
} catch (error: any) {
|
231
|
-
lastError =
|
282
|
+
lastError =
|
283
|
+
error instanceof Error
|
284
|
+
? error
|
285
|
+
: new Error(error?.message || "Unknown error");
|
232
286
|
attempts++;
|
233
|
-
this.logger.addLog(
|
234
|
-
`❌ Attempt ${attempts} failed: ${lastError.message}`
|
235
|
-
);
|
236
287
|
|
237
|
-
if (attempts === node.retry
|
238
|
-
if (node.retry
|
239
|
-
await
|
240
|
-
|
241
|
-
lastError,
|
242
|
-
contextProxy,
|
243
|
-
nodeName
|
244
|
-
);
|
288
|
+
if (attempts === (node.retry?.maxAttempts || 1)) {
|
289
|
+
if (node.retry?.onRetryFailed) {
|
290
|
+
await node.retry.onRetryFailed(lastError, contextProxy);
|
291
|
+
if (node.retry.continueOnFailed) return;
|
245
292
|
}
|
246
293
|
throw lastError;
|
247
294
|
}
|
@@ -253,44 +300,6 @@ export class GraphNode<T extends ZodSchema> {
|
|
253
300
|
}
|
254
301
|
}
|
255
302
|
|
256
|
-
/**
|
257
|
-
* Handles the failure of retry attempts
|
258
|
-
* @param node - The node that failed
|
259
|
-
* @param error - The error that caused the failure
|
260
|
-
* @param context - The current graph context
|
261
|
-
* @param nodeName - The name of the node
|
262
|
-
* @private
|
263
|
-
*/
|
264
|
-
private async handleRetryFailure(
|
265
|
-
node: Node<T, any>,
|
266
|
-
error: Error,
|
267
|
-
context: GraphContext<T>,
|
268
|
-
nodeName: string
|
269
|
-
): Promise<void> {
|
270
|
-
this.logger.addLog(
|
271
|
-
`🔄 Executing retry failure handler for node "${nodeName}"`
|
272
|
-
);
|
273
|
-
try {
|
274
|
-
if (node.retry?.onRetryFailed) {
|
275
|
-
await node.retry.onRetryFailed(error, context);
|
276
|
-
if (node.retry.continueOnFailed) {
|
277
|
-
this.logger.addLog(
|
278
|
-
`✅ Retry failure handler succeeded - continuing execution`
|
279
|
-
);
|
280
|
-
return;
|
281
|
-
}
|
282
|
-
this.logger.addLog(
|
283
|
-
`⚠️ Retry failure handler executed but node will still fail`
|
284
|
-
);
|
285
|
-
}
|
286
|
-
} catch (handlerError: any) {
|
287
|
-
this.logger.addLog(
|
288
|
-
`❌ Retry failure handler failed: ${handlerError.message}`
|
289
|
-
);
|
290
|
-
throw handlerError;
|
291
|
-
}
|
292
|
-
}
|
293
|
-
|
294
303
|
/**
|
295
304
|
* Handles correlated events for a node
|
296
305
|
* @param node - The node with correlated events
|
package/graph/observer.ts
CHANGED
@@ -56,7 +56,6 @@ export class GraphObserver<T extends ZodSchema> {
|
|
56
56
|
} = {}
|
57
57
|
): GraphObservable<T> {
|
58
58
|
const baseObservable = new Observable<any>((subscriber) => {
|
59
|
-
// Combine les événements avec l'état actuel
|
60
59
|
const subscription = combineLatest([
|
61
60
|
this.eventSubject.pipe(
|
62
61
|
filter((event) => event.type === "nodeStateChanged"),
|