@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.
- package/README.md +158 -81
- package/index.ts +462 -22
- package/package copy.json +21 -0
- package/package.json +9 -44
- package/tsconfig.json +108 -22
- package/types.ts +62 -0
- package/utils/executor.ts +42 -0
- package/.mocharc.json +0 -5
- package/dist/graph/controller.d.ts +0 -31
- package/dist/graph/controller.d.ts.map +0 -1
- package/dist/graph/controller.js +0 -71
- package/dist/graph/controller.js.map +0 -1
- package/dist/graph/event-manager.d.ts +0 -92
- package/dist/graph/event-manager.d.ts.map +0 -1
- package/dist/graph/event-manager.js +0 -244
- package/dist/graph/event-manager.js.map +0 -1
- package/dist/graph/index.d.ts +0 -159
- package/dist/graph/index.d.ts.map +0 -1
- package/dist/graph/index.js +0 -303
- package/dist/graph/index.js.map +0 -1
- package/dist/graph/logger.d.ts +0 -46
- package/dist/graph/logger.d.ts.map +0 -1
- package/dist/graph/logger.js +0 -69
- package/dist/graph/logger.js.map +0 -1
- package/dist/graph/node.d.ts +0 -92
- package/dist/graph/node.d.ts.map +0 -1
- package/dist/graph/node.js +0 -249
- package/dist/graph/node.js.map +0 -1
- package/dist/graph/observer.d.ts +0 -113
- package/dist/graph/observer.d.ts.map +0 -1
- package/dist/graph/observer.js +0 -198
- package/dist/graph/observer.js.map +0 -1
- package/dist/index.d.ts +0 -26
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -42
- package/dist/index.js.map +0 -1
- package/dist/interfaces/index.d.ts +0 -447
- package/dist/interfaces/index.d.ts.map +0 -1
- package/dist/interfaces/index.js +0 -75
- package/dist/interfaces/index.js.map +0 -1
- package/dist/modules/agenda/adapters/node-cron/index.d.ts +0 -17
- package/dist/modules/agenda/adapters/node-cron/index.d.ts.map +0 -1
- package/dist/modules/agenda/adapters/node-cron/index.js +0 -30
- package/dist/modules/agenda/adapters/node-cron/index.js.map +0 -1
- package/dist/modules/agenda/index.d.ts +0 -63
- package/dist/modules/agenda/index.d.ts.map +0 -1
- package/dist/modules/agenda/index.js +0 -141
- package/dist/modules/agenda/index.js.map +0 -1
- package/dist/modules/embedding/adapters/ai/index.d.ts +0 -29
- package/dist/modules/embedding/adapters/ai/index.d.ts.map +0 -1
- package/dist/modules/embedding/adapters/ai/index.js +0 -58
- package/dist/modules/embedding/adapters/ai/index.js.map +0 -1
- package/dist/modules/embedding/index.d.ts +0 -36
- package/dist/modules/embedding/index.d.ts.map +0 -1
- package/dist/modules/embedding/index.js +0 -60
- package/dist/modules/embedding/index.js.map +0 -1
- package/dist/modules/memory/adapters/in-memory/index.d.ts +0 -120
- package/dist/modules/memory/adapters/in-memory/index.d.ts.map +0 -1
- package/dist/modules/memory/adapters/in-memory/index.js +0 -211
- package/dist/modules/memory/adapters/in-memory/index.js.map +0 -1
- package/dist/modules/memory/adapters/meilisearch/index.d.ts +0 -110
- package/dist/modules/memory/adapters/meilisearch/index.d.ts.map +0 -1
- package/dist/modules/memory/adapters/meilisearch/index.js +0 -321
- package/dist/modules/memory/adapters/meilisearch/index.js.map +0 -1
- package/dist/modules/memory/adapters/redis/index.d.ts +0 -82
- package/dist/modules/memory/adapters/redis/index.d.ts.map +0 -1
- package/dist/modules/memory/adapters/redis/index.js +0 -159
- package/dist/modules/memory/adapters/redis/index.js.map +0 -1
- package/dist/modules/memory/index.d.ts +0 -67
- package/dist/modules/memory/index.d.ts.map +0 -1
- package/dist/modules/memory/index.js +0 -104
- package/dist/modules/memory/index.js.map +0 -1
- package/dist/types/index.d.ts +0 -166
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -3
- package/dist/types/index.js.map +0 -1
- package/dist/utils/generate-action-schema.d.ts +0 -5
- package/dist/utils/generate-action-schema.d.ts.map +0 -1
- package/dist/utils/generate-action-schema.js +0 -44
- package/dist/utils/generate-action-schema.js.map +0 -1
- package/dist/utils/header-builder.d.ts +0 -12
- package/dist/utils/header-builder.d.ts.map +0 -1
- package/dist/utils/header-builder.js +0 -35
- package/dist/utils/header-builder.js.map +0 -1
- package/graph/controller.ts +0 -74
- package/graph/event-manager.ts +0 -295
- package/graph/index.ts +0 -397
- package/graph/logger.ts +0 -70
- package/graph/node.ts +0 -305
- package/graph/observer.ts +0 -368
- package/interfaces/index.ts +0 -545
- package/modules/agenda/adapters/node-cron/index.ts +0 -25
- package/modules/agenda/index.ts +0 -146
- package/modules/embedding/adapters/ai/index.ts +0 -42
- package/modules/embedding/index.ts +0 -45
- package/modules/memory/adapters/in-memory/index.ts +0 -207
- package/modules/memory/adapters/meilisearch/index.ts +0 -361
- package/modules/memory/adapters/redis/index.ts +0 -164
- package/modules/memory/index.ts +0 -93
- package/test/graph/controller.test.ts +0 -187
- package/test/graph/event-manager.test.ts +0 -72
- package/test/graph/index.test.ts +0 -768
- package/test/graph/node.test.ts +0 -510
- package/test/graph/observer.test.ts +0 -398
- package/test/modules/agenda/node-cron.test.ts +0 -307
- package/test/modules/memory/adapters/in-memory.test.ts +0 -153
- package/test/modules/memory/adapters/meilisearch.test.ts +0 -287
- package/test/modules/memory/base.test.ts +0 -230
- package/types/index.ts +0 -184
- package/utils/generate-action-schema.ts +0 -46
- package/utils/header-builder.ts +0 -40
package/README.md
CHANGED
@@ -1,116 +1,193 @@
|
|
1
|
-
# @ai.ntellect/
|
1
|
+
# @ai.ntellect/workflow
|
2
2
|
|
3
|
-
|
3
|
+
The **@ai.ntellect/workflow** package is a robust framework for managing and executing workflows, supporting dynamic decision-making, conditional paths, event-driven execution, and state persistence.
|
4
4
|
|
5
5
|
## Features
|
6
6
|
|
7
|
-
- **
|
8
|
-
- **
|
9
|
-
- **
|
10
|
-
- **
|
11
|
-
- **
|
7
|
+
- **Dynamic Workflow Execution:** Manage workflows with complex branching and parallel paths.
|
8
|
+
- **Conditional Logic:** Execute nodes based on real-time conditions.
|
9
|
+
- **Event-Driven Execution:** Trigger actions dynamically using events.
|
10
|
+
- **State Management:** Handle shared and persistent states.
|
11
|
+
- **Visualization:** Generate workflow diagrams using Mermaid syntax.
|
12
12
|
|
13
13
|
## Installation
|
14
14
|
|
15
|
-
|
15
|
+
Install the package via npm:
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
```bash
|
18
|
+
npm install @ai.ntellect/workflow
|
19
|
+
```
|
20
20
|
|
21
|
-
|
21
|
+
Import the `Workflow` class:
|
22
22
|
|
23
|
-
```
|
24
|
-
|
25
|
-
npm -v
|
23
|
+
```javascript
|
24
|
+
import { Workflow } from "@ai.ntellect/workflow";
|
26
25
|
```
|
27
26
|
|
28
|
-
|
27
|
+
## Creating a content pipeline workflow
|
29
28
|
|
30
|
-
|
31
|
-
npm install @ai.ntellect/core zod
|
32
|
-
```
|
29
|
+
Here is an example of creating a workflow to manage a content pipeline:
|
33
30
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
31
|
+
```javascript
|
32
|
+
import { Workflow } from "@ai.ntellect/workflow";
|
33
|
+
|
34
|
+
const contentPipelineDefinition = {
|
35
|
+
name: "ContentPipeline",
|
36
|
+
entryNode: "fetchContent",
|
37
|
+
nodes: {
|
38
|
+
fetchContent: {
|
39
|
+
name: "fetchContent",
|
40
|
+
description: "Fetch content from external APIs",
|
41
|
+
execute: async (state) => {
|
42
|
+
console.log("Fetching content...");
|
43
|
+
state.content = ["Article1", "Article2"];
|
44
|
+
return state;
|
45
|
+
},
|
46
|
+
next: ["processContent"],
|
47
|
+
},
|
48
|
+
processContent: {
|
49
|
+
name: "processContent",
|
50
|
+
description: "Process and analyze content",
|
51
|
+
execute: async (state) => {
|
52
|
+
console.log("Processing content:", state.content);
|
53
|
+
state.processedContent = state.content.map((c) => c.toUpperCase());
|
54
|
+
return state;
|
55
|
+
},
|
56
|
+
next: ["publishContent"],
|
57
|
+
},
|
58
|
+
publishContent: {
|
59
|
+
name: "publishContent",
|
60
|
+
description: "Publish processed content",
|
61
|
+
execute: async (state) => {
|
62
|
+
console.log("Publishing content:", state.processedContent);
|
63
|
+
state.published = true;
|
64
|
+
return state;
|
57
65
|
},
|
58
|
-
next: [],
|
59
66
|
},
|
60
|
-
|
61
|
-
}
|
67
|
+
},
|
68
|
+
};
|
62
69
|
|
63
|
-
|
64
|
-
(async () => {
|
65
|
-
await myGraph.execute("printMessage");
|
66
|
-
})();
|
70
|
+
const workflow = new Workflow(contentPipelineDefinition);
|
67
71
|
```
|
68
72
|
|
69
|
-
##
|
73
|
+
## Executing the workflow
|
70
74
|
|
71
|
-
|
75
|
+
Run the content pipeline workflow with an initial state:
|
72
76
|
|
73
|
-
```
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
77
|
+
```javascript
|
78
|
+
const initialState = {};
|
79
|
+
await workflow.execute(initialState, "fetchContent");
|
80
|
+
```
|
81
|
+
|
82
|
+
Example output:
|
83
|
+
|
84
|
+
```text
|
85
|
+
Fetching content...
|
86
|
+
Processing content: [ 'Article1', 'Article2' ]
|
87
|
+
Publishing content: [ 'ARTICLE1', 'ARTICLE2' ]
|
88
|
+
```
|
89
|
+
|
90
|
+
## Visualizing the workflow
|
91
|
+
|
92
|
+
Generate a visual representation of the content pipeline workflow:
|
93
|
+
|
94
|
+
```javascript
|
95
|
+
workflow.visualize("Content Pipeline Workflow");
|
96
|
+
```
|
97
|
+
|
98
|
+
Output example:
|
82
99
|
|
83
|
-
|
84
|
-
|
100
|
+
```mermaid
|
101
|
+
workflow TD
|
102
|
+
fetchContent[Fetch Content]
|
103
|
+
processContent[Process Content]
|
104
|
+
publishContent[Publish Content]
|
105
|
+
fetchContent --> processContent
|
106
|
+
processContent --> publishContent
|
85
107
|
```
|
86
108
|
|
87
|
-
|
109
|
+
## Advanced features
|
110
|
+
|
111
|
+
### Event-driven execution
|
112
|
+
|
113
|
+
Add event-driven nodes to the workflow:
|
88
114
|
|
89
|
-
```
|
90
|
-
|
91
|
-
|
115
|
+
```javascript
|
116
|
+
workflow.addNode(
|
117
|
+
{
|
118
|
+
name: "eventDrivenNode",
|
119
|
+
description: "Node triggered by a custom event",
|
120
|
+
execute: async (state) => {
|
121
|
+
console.log("Custom event processed.");
|
122
|
+
return state;
|
123
|
+
},
|
124
|
+
},
|
125
|
+
{ events: ["customEvent"] }
|
126
|
+
);
|
127
|
+
|
128
|
+
workflow.emit("customEvent", { state: { exampleKey: "exampleValue" } });
|
129
|
+
```
|
92
130
|
|
93
|
-
|
94
|
-
graph.observe().property("counter").subscribe(console.log);
|
131
|
+
Example output:
|
95
132
|
|
96
|
-
|
97
|
-
|
133
|
+
```text
|
134
|
+
Custom event processed.
|
98
135
|
```
|
99
136
|
|
100
|
-
|
137
|
+
### Parallel execution
|
138
|
+
|
139
|
+
Execute multiple nodes concurrently:
|
101
140
|
|
102
|
-
|
141
|
+
```javascript
|
142
|
+
await workflow.executeParallel(
|
143
|
+
{ data: "Parallel Execution" },
|
144
|
+
["nodeA", "nodeB"],
|
145
|
+
2
|
146
|
+
);
|
147
|
+
```
|
148
|
+
|
149
|
+
### Conditional logic
|
103
150
|
|
104
|
-
|
151
|
+
Add conditional nodes to control the workflow path:
|
105
152
|
|
106
|
-
|
153
|
+
```javascript
|
154
|
+
workflow.addNode(
|
155
|
+
{
|
156
|
+
name: "conditionalNode",
|
157
|
+
description: "Node executed conditionally",
|
158
|
+
execute: async (state) => {
|
159
|
+
console.log("Condition met, executing node...");
|
160
|
+
return state;
|
161
|
+
},
|
162
|
+
},
|
163
|
+
{
|
164
|
+
condition: (state) => state.content && state.content.length > 0,
|
165
|
+
next: ["publishContent"],
|
166
|
+
}
|
167
|
+
);
|
168
|
+
```
|
107
169
|
|
108
|
-
-
|
109
|
-
- Explore the [GitBook documentation](https://ai-ntellect.gitbook.io/core)
|
110
|
-
- Open an issue on GitHub
|
170
|
+
### Sub-workflows
|
111
171
|
|
112
|
-
|
172
|
+
Embed sub-workflows for modularity:
|
113
173
|
|
114
|
-
|
115
|
-
|
116
|
-
|
174
|
+
```javascript
|
175
|
+
const subWorkflowDefinition = {
|
176
|
+
name: "SubWorkflow",
|
177
|
+
nodes: {
|
178
|
+
subNode: {
|
179
|
+
name: "subNode",
|
180
|
+
execute: async (state) => {
|
181
|
+
console.log("Executing sub-workflow.");
|
182
|
+
return state;
|
183
|
+
},
|
184
|
+
},
|
185
|
+
},
|
186
|
+
};
|
187
|
+
|
188
|
+
workflow.addSubWorkflow(
|
189
|
+
new Workflow(subWorkflowDefinition),
|
190
|
+
"subNode",
|
191
|
+
"processContent"
|
192
|
+
);
|
193
|
+
```
|