@ai.ntellect/core 0.7.8 → 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 -93
  14. package/dist/graph/event-manager.d.ts.map +0 -1
  15. package/dist/graph/event-manager.js +0 -296
  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 -93
  26. package/dist/graph/node.d.ts.map +0 -1
  27. package/dist/graph/node.js +0 -259
  28. package/dist/graph/node.js.map +0 -1
  29. package/dist/graph/observer.d.ts +0 -115
  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 -170
  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 -363
  87. package/graph/index.ts +0 -395
  88. package/graph/logger.ts +0 -70
  89. package/graph/node.ts +0 -327
  90. package/graph/observer.ts +0 -368
  91. package/interfaces/index.ts +0 -548
  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 -118
  102. package/test/graph/index.test.ts +0 -684
  103. package/test/graph/node.test.ts +0 -655
  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 -190
  110. package/utils/generate-action-schema.ts +0 -46
  111. package/utils/header-builder.ts +0 -40
package/README.md CHANGED
@@ -1,116 +1,193 @@
1
- # @ai.ntellect/core
1
+ # @ai.ntellect/workflow
2
2
 
3
- @ai.ntellect/core is a modular and event-driven framework designed to orchestrate and execute intelligent workflows using execution graphs. It enables automation of complex tasks, seamless integration with external services, and the creation of AI-driven agents in a flexible and scalable way.
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
- - **GraphFlow** Graph-based execution engine for automating business processes
8
- - **Event-Driven** Nodes can react to real-time events and trigger actions dynamically
9
- - **Modular** – Plug-and-play modules and adapters for memory, scheduling, and external APIs
10
- - **Extensible** Custom nodes, adapters, and interactions with third-party services
11
- - **Observable** Complete state and event monitoring
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
- ### Prerequisites
15
+ Install the package via npm:
16
16
 
17
- - Node.js (LTS version recommended)
18
- - TypeScript
19
- - Zod (for data validation)
17
+ ```bash
18
+ npm install @ai.ntellect/workflow
19
+ ```
20
20
 
21
- Verify your installation:
21
+ Import the `Workflow` class:
22
22
 
23
- ```sh
24
- node -v
25
- npm -v
23
+ ```javascript
24
+ import { Workflow } from "@ai.ntellect/workflow";
26
25
  ```
27
26
 
28
- ### Installing the framework
27
+ ## Creating a content pipeline workflow
29
28
 
30
- ```sh
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
- ## Example
35
-
36
- ```typescript
37
- import { GraphFlow } from "@ai.ntellect/core";
38
- import { z } from "zod";
39
-
40
- // Definition of the context schema
41
- const ContextSchema = z.object({
42
- message: z.string(),
43
- });
44
-
45
- type ContextSchema = typeof ContextSchema;
46
-
47
- // Definition of the graph
48
- const myGraph = new GraphFlow<ContextSchema>("TestGraph", {
49
- name: "TestGraph",
50
- context: { message: "Installation success" },
51
- schema: ContextSchema,
52
- nodes: [
53
- {
54
- name: "printMessage",
55
- execute: async (context) => {
56
- console.log(context.message);
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
- // Execution of the graph
64
- (async () => {
65
- await myGraph.execute("printMessage");
66
- })();
70
+ const workflow = new Workflow(contentPipelineDefinition);
67
71
  ```
68
72
 
69
- ## Features
73
+ ## Executing the workflow
70
74
 
71
- ### Event handling
75
+ Run the content pipeline workflow with an initial state:
72
76
 
73
- ```typescript
74
- // Event-driven node
75
- {
76
- name: "waitForEvent",
77
- events: ["dataReceived"],
78
- execute: async (context, event) => {
79
- context.data = event.payload;
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
- // Emit events
84
- graph.emit("dataReceived", { value: 42 });
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
- ### State observation
109
+ ## Advanced features
110
+
111
+ ### Event-driven execution
112
+
113
+ Add event-driven nodes to the workflow:
88
114
 
89
- ```typescript
90
- // Observe specific node
91
- graph.observe().node("myNode").subscribe(console.log);
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
- // Observe specific properties
94
- graph.observe().property("counter").subscribe(console.log);
131
+ Example output:
95
132
 
96
- // Observe events
97
- graph.observe().event("nodeCompleted").subscribe(console.log);
133
+ ```text
134
+ Custom event processed.
98
135
  ```
99
136
 
100
- ## Documentation
137
+ ### Parallel execution
138
+
139
+ Execute multiple nodes concurrently:
101
140
 
102
- For complete documentation, visit our [GitBook](https://ai-ntellect.gitbook.io/core).
141
+ ```javascript
142
+ await workflow.executeParallel(
143
+ { data: "Parallel Execution" },
144
+ ["nodeA", "nodeB"],
145
+ 2
146
+ );
147
+ ```
148
+
149
+ ### Conditional logic
103
150
 
104
- ## Contributing
151
+ Add conditional nodes to control the workflow path:
105
152
 
106
- Contributions are welcome! To suggest an improvement or report an issue:
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
- - Join our [Discord community](https://discord.gg/kEc5gWXJ)
109
- - Explore the [GitBook documentation](https://ai-ntellect.gitbook.io/core)
110
- - Open an issue on GitHub
170
+ ### Sub-workflows
111
171
 
112
- ## Useful links
172
+ Embed sub-workflows for modularity:
113
173
 
114
- - Documentation: [GitBook](https://ai-ntellect.gitbook.io/core)
115
- - Community: [Discord](https://discord.gg/kEc5gWXJ)
116
- - GitHub Repository: [@ai.ntellect/core](https://github.com/ai-ntellect/core)
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
+ ```