@ggakila/agentx-framework 0.1.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 (228) hide show
  1. package/CHANGELOG.md +107 -0
  2. package/LICENSE +21 -0
  3. package/README.md +335 -0
  4. package/dist/agent/Agent.d.ts +110 -0
  5. package/dist/agent/Agent.d.ts.map +1 -0
  6. package/dist/agent/Agent.js +291 -0
  7. package/dist/agent/Agent.js.map +1 -0
  8. package/dist/agent/index.d.ts +5 -0
  9. package/dist/agent/index.d.ts.map +1 -0
  10. package/dist/agent/index.js +11 -0
  11. package/dist/agent/index.js.map +1 -0
  12. package/dist/cli/CLI.d.ts +74 -0
  13. package/dist/cli/CLI.d.ts.map +1 -0
  14. package/dist/cli/CLI.js +255 -0
  15. package/dist/cli/CLI.js.map +1 -0
  16. package/dist/cli/InteractiveSetup.d.ts +104 -0
  17. package/dist/cli/InteractiveSetup.d.ts.map +1 -0
  18. package/dist/cli/InteractiveSetup.js +2225 -0
  19. package/dist/cli/InteractiveSetup.js.map +1 -0
  20. package/dist/cli/bin.d.ts +7 -0
  21. package/dist/cli/bin.d.ts.map +1 -0
  22. package/dist/cli/bin.js +35 -0
  23. package/dist/cli/bin.js.map +1 -0
  24. package/dist/cli/commands/ProjectCommands.d.ts +23 -0
  25. package/dist/cli/commands/ProjectCommands.d.ts.map +1 -0
  26. package/dist/cli/commands/ProjectCommands.js +504 -0
  27. package/dist/cli/commands/ProjectCommands.js.map +1 -0
  28. package/dist/cli/index.d.ts +7 -0
  29. package/dist/cli/index.d.ts.map +1 -0
  30. package/dist/cli/index.js +21 -0
  31. package/dist/cli/index.js.map +1 -0
  32. package/dist/credential/CredentialManager.d.ts +112 -0
  33. package/dist/credential/CredentialManager.d.ts.map +1 -0
  34. package/dist/credential/CredentialManager.js +343 -0
  35. package/dist/credential/CredentialManager.js.map +1 -0
  36. package/dist/credential/OAuth2Manager.d.ts +206 -0
  37. package/dist/credential/OAuth2Manager.d.ts.map +1 -0
  38. package/dist/credential/OAuth2Manager.js +463 -0
  39. package/dist/credential/OAuth2Manager.js.map +1 -0
  40. package/dist/credential/index.d.ts +6 -0
  41. package/dist/credential/index.d.ts.map +1 -0
  42. package/dist/credential/index.js +16 -0
  43. package/dist/credential/index.js.map +1 -0
  44. package/dist/error/ErrorHandler.d.ts +74 -0
  45. package/dist/error/ErrorHandler.d.ts.map +1 -0
  46. package/dist/error/ErrorHandler.js +279 -0
  47. package/dist/error/ErrorHandler.js.map +1 -0
  48. package/dist/index.d.ts +30 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +100 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/integrations/DatabaseTool.d.ts +149 -0
  53. package/dist/integrations/DatabaseTool.d.ts.map +1 -0
  54. package/dist/integrations/DatabaseTool.js +900 -0
  55. package/dist/integrations/DatabaseTool.js.map +1 -0
  56. package/dist/integrations/EmailTool.d.ts +142 -0
  57. package/dist/integrations/EmailTool.d.ts.map +1 -0
  58. package/dist/integrations/EmailTool.js +259 -0
  59. package/dist/integrations/EmailTool.js.map +1 -0
  60. package/dist/integrations/FileSystemTool.d.ts +153 -0
  61. package/dist/integrations/FileSystemTool.d.ts.map +1 -0
  62. package/dist/integrations/FileSystemTool.js +835 -0
  63. package/dist/integrations/FileSystemTool.js.map +1 -0
  64. package/dist/integrations/GoogleWorkspaceTool.d.ts +125 -0
  65. package/dist/integrations/GoogleWorkspaceTool.d.ts.map +1 -0
  66. package/dist/integrations/GoogleWorkspaceTool.js +765 -0
  67. package/dist/integrations/GoogleWorkspaceTool.js.map +1 -0
  68. package/dist/integrations/HttpTool.d.ts +55 -0
  69. package/dist/integrations/HttpTool.d.ts.map +1 -0
  70. package/dist/integrations/HttpTool.js +209 -0
  71. package/dist/integrations/HttpTool.js.map +1 -0
  72. package/dist/integrations/MessagingTool.d.ts +136 -0
  73. package/dist/integrations/MessagingTool.d.ts.map +1 -0
  74. package/dist/integrations/MessagingTool.js +503 -0
  75. package/dist/integrations/MessagingTool.js.map +1 -0
  76. package/dist/integrations/SchedulerTool.d.ts +147 -0
  77. package/dist/integrations/SchedulerTool.d.ts.map +1 -0
  78. package/dist/integrations/SchedulerTool.js +471 -0
  79. package/dist/integrations/SchedulerTool.js.map +1 -0
  80. package/dist/integrations/WebhookTool.d.ts +97 -0
  81. package/dist/integrations/WebhookTool.d.ts.map +1 -0
  82. package/dist/integrations/WebhookTool.js +351 -0
  83. package/dist/integrations/WebhookTool.js.map +1 -0
  84. package/dist/integrations/index.d.ts +13 -0
  85. package/dist/integrations/index.d.ts.map +1 -0
  86. package/dist/integrations/index.js +60 -0
  87. package/dist/integrations/index.js.map +1 -0
  88. package/dist/llm/LLMProvider.d.ts +83 -0
  89. package/dist/llm/LLMProvider.d.ts.map +1 -0
  90. package/dist/llm/LLMProvider.js +370 -0
  91. package/dist/llm/LLMProvider.js.map +1 -0
  92. package/dist/llm/index.d.ts +5 -0
  93. package/dist/llm/index.d.ts.map +1 -0
  94. package/dist/llm/index.js +14 -0
  95. package/dist/llm/index.js.map +1 -0
  96. package/dist/payment/PaymentProvider.d.ts +157 -0
  97. package/dist/payment/PaymentProvider.d.ts.map +1 -0
  98. package/dist/payment/PaymentProvider.js +525 -0
  99. package/dist/payment/PaymentProvider.js.map +1 -0
  100. package/dist/payment/index.d.ts +5 -0
  101. package/dist/payment/index.d.ts.map +1 -0
  102. package/dist/payment/index.js +16 -0
  103. package/dist/payment/index.js.map +1 -0
  104. package/dist/plugin/PluginManager.d.ts +156 -0
  105. package/dist/plugin/PluginManager.d.ts.map +1 -0
  106. package/dist/plugin/PluginManager.js +288 -0
  107. package/dist/plugin/PluginManager.js.map +1 -0
  108. package/dist/plugin/index.d.ts +5 -0
  109. package/dist/plugin/index.d.ts.map +1 -0
  110. package/dist/plugin/index.js +10 -0
  111. package/dist/plugin/index.js.map +1 -0
  112. package/dist/runtime/AgentXRuntime.d.ts +90 -0
  113. package/dist/runtime/AgentXRuntime.d.ts.map +1 -0
  114. package/dist/runtime/AgentXRuntime.js +469 -0
  115. package/dist/runtime/AgentXRuntime.js.map +1 -0
  116. package/dist/security/SecurityManager.d.ts +245 -0
  117. package/dist/security/SecurityManager.d.ts.map +1 -0
  118. package/dist/security/SecurityManager.js +512 -0
  119. package/dist/security/SecurityManager.js.map +1 -0
  120. package/dist/security/index.d.ts +5 -0
  121. package/dist/security/index.d.ts.map +1 -0
  122. package/dist/security/index.js +14 -0
  123. package/dist/security/index.js.map +1 -0
  124. package/dist/tool/ToolRegistry.d.ts +58 -0
  125. package/dist/tool/ToolRegistry.d.ts.map +1 -0
  126. package/dist/tool/ToolRegistry.js +173 -0
  127. package/dist/tool/ToolRegistry.js.map +1 -0
  128. package/dist/tool/ToolValidator.d.ts +41 -0
  129. package/dist/tool/ToolValidator.d.ts.map +1 -0
  130. package/dist/tool/ToolValidator.js +158 -0
  131. package/dist/tool/ToolValidator.js.map +1 -0
  132. package/dist/tool/index.d.ts +6 -0
  133. package/dist/tool/index.d.ts.map +1 -0
  134. package/dist/tool/index.js +11 -0
  135. package/dist/tool/index.js.map +1 -0
  136. package/dist/transport/BaseTransport.d.ts +66 -0
  137. package/dist/transport/BaseTransport.d.ts.map +1 -0
  138. package/dist/transport/BaseTransport.js +103 -0
  139. package/dist/transport/BaseTransport.js.map +1 -0
  140. package/dist/transport/HttpTransport.d.ts +41 -0
  141. package/dist/transport/HttpTransport.d.ts.map +1 -0
  142. package/dist/transport/HttpTransport.js +160 -0
  143. package/dist/transport/HttpTransport.js.map +1 -0
  144. package/dist/transport/LocalTransport.d.ts +40 -0
  145. package/dist/transport/LocalTransport.d.ts.map +1 -0
  146. package/dist/transport/LocalTransport.js +157 -0
  147. package/dist/transport/LocalTransport.js.map +1 -0
  148. package/dist/transport/QueueTransport.d.ts +63 -0
  149. package/dist/transport/QueueTransport.d.ts.map +1 -0
  150. package/dist/transport/QueueTransport.js +194 -0
  151. package/dist/transport/QueueTransport.js.map +1 -0
  152. package/dist/transport/StdioTransport.d.ts +51 -0
  153. package/dist/transport/StdioTransport.d.ts.map +1 -0
  154. package/dist/transport/StdioTransport.js +216 -0
  155. package/dist/transport/StdioTransport.js.map +1 -0
  156. package/dist/transport/TransportFactory.d.ts +35 -0
  157. package/dist/transport/TransportFactory.d.ts.map +1 -0
  158. package/dist/transport/TransportFactory.js +100 -0
  159. package/dist/transport/TransportFactory.js.map +1 -0
  160. package/dist/transport/index.d.ts +10 -0
  161. package/dist/transport/index.d.ts.map +1 -0
  162. package/dist/transport/index.js +19 -0
  163. package/dist/transport/index.js.map +1 -0
  164. package/dist/types/agent.d.ts +66 -0
  165. package/dist/types/agent.d.ts.map +1 -0
  166. package/dist/types/agent.js +3 -0
  167. package/dist/types/agent.js.map +1 -0
  168. package/dist/types/config.d.ts +60 -0
  169. package/dist/types/config.d.ts.map +1 -0
  170. package/dist/types/config.js +6 -0
  171. package/dist/types/config.js.map +1 -0
  172. package/dist/types/credential.d.ts +38 -0
  173. package/dist/types/credential.d.ts.map +1 -0
  174. package/dist/types/credential.js +3 -0
  175. package/dist/types/credential.js.map +1 -0
  176. package/dist/types/error.d.ts +136 -0
  177. package/dist/types/error.d.ts.map +1 -0
  178. package/dist/types/error.js +223 -0
  179. package/dist/types/error.js.map +1 -0
  180. package/dist/types/index.d.ts +10 -0
  181. package/dist/types/index.d.ts.map +1 -0
  182. package/dist/types/index.js +27 -0
  183. package/dist/types/index.js.map +1 -0
  184. package/dist/types/llm.d.ts +43 -0
  185. package/dist/types/llm.d.ts.map +1 -0
  186. package/dist/types/llm.js +3 -0
  187. package/dist/types/llm.js.map +1 -0
  188. package/dist/types/payment.d.ts +129 -0
  189. package/dist/types/payment.d.ts.map +1 -0
  190. package/dist/types/payment.js +6 -0
  191. package/dist/types/payment.js.map +1 -0
  192. package/dist/types/runtime.d.ts +31 -0
  193. package/dist/types/runtime.d.ts.map +1 -0
  194. package/dist/types/runtime.js +3 -0
  195. package/dist/types/runtime.js.map +1 -0
  196. package/dist/types/tool.d.ts +72 -0
  197. package/dist/types/tool.d.ts.map +1 -0
  198. package/dist/types/tool.js +3 -0
  199. package/dist/types/tool.js.map +1 -0
  200. package/dist/types/transport.d.ts +53 -0
  201. package/dist/types/transport.d.ts.map +1 -0
  202. package/dist/types/transport.js +3 -0
  203. package/dist/types/transport.js.map +1 -0
  204. package/dist/types/workflow.d.ts +72 -0
  205. package/dist/types/workflow.d.ts.map +1 -0
  206. package/dist/types/workflow.js +6 -0
  207. package/dist/types/workflow.js.map +1 -0
  208. package/dist/utils/factory.d.ts +14 -0
  209. package/dist/utils/factory.d.ts.map +1 -0
  210. package/dist/utils/factory.js +146 -0
  211. package/dist/utils/factory.js.map +1 -0
  212. package/dist/workflow/StateManager.d.ts +93 -0
  213. package/dist/workflow/StateManager.d.ts.map +1 -0
  214. package/dist/workflow/StateManager.js +223 -0
  215. package/dist/workflow/StateManager.js.map +1 -0
  216. package/dist/workflow/WorkflowDefinition.d.ts +49 -0
  217. package/dist/workflow/WorkflowDefinition.d.ts.map +1 -0
  218. package/dist/workflow/WorkflowDefinition.js +264 -0
  219. package/dist/workflow/WorkflowDefinition.js.map +1 -0
  220. package/dist/workflow/WorkflowExecutor.d.ts +42 -0
  221. package/dist/workflow/WorkflowExecutor.d.ts.map +1 -0
  222. package/dist/workflow/WorkflowExecutor.js +372 -0
  223. package/dist/workflow/WorkflowExecutor.js.map +1 -0
  224. package/dist/workflow/index.d.ts +7 -0
  225. package/dist/workflow/index.d.ts.map +1 -0
  226. package/dist/workflow/index.js +17 -0
  227. package/dist/workflow/index.js.map +1 -0
  228. package/package.json +122 -0
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ /**
3
+ * Workflow State Manager for persistence and recovery
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.IdempotencyManager = exports.StateManager = exports.InMemoryStateStore = void 0;
7
+ const uuid_1 = require("uuid");
8
+ class InMemoryStateStore {
9
+ store = new Map();
10
+ async save(key, data) {
11
+ this.store.set(key, JSON.parse(JSON.stringify(data)));
12
+ }
13
+ async load(key) {
14
+ const data = this.store.get(key);
15
+ return data ? JSON.parse(JSON.stringify(data)) : null;
16
+ }
17
+ async delete(key) {
18
+ this.store.delete(key);
19
+ }
20
+ async list(prefix) {
21
+ return Array.from(this.store.keys()).filter(k => k.startsWith(prefix));
22
+ }
23
+ clear() {
24
+ this.store.clear();
25
+ }
26
+ }
27
+ exports.InMemoryStateStore = InMemoryStateStore;
28
+ class StateManager {
29
+ store;
30
+ logger;
31
+ checkpointInterval;
32
+ constructor(store, logger, checkpointInterval = 5000) {
33
+ this.store = store;
34
+ this.logger = logger;
35
+ this.checkpointInterval = checkpointInterval;
36
+ }
37
+ /**
38
+ * Create a checkpoint for an execution
39
+ */
40
+ async checkpoint(execution) {
41
+ const checkpointData = {
42
+ executionId: execution.id,
43
+ workflowId: execution.workflowId,
44
+ status: execution.status,
45
+ input: execution.input,
46
+ context: execution.context,
47
+ completedSteps: execution.steps
48
+ .filter(s => s.status === 'completed')
49
+ .map(s => s.stepId),
50
+ stepResults: this.extractStepResults(execution),
51
+ checkpointedAt: new Date(),
52
+ version: 1,
53
+ };
54
+ const key = this.getCheckpointKey(execution.id);
55
+ await this.store.save(key, checkpointData);
56
+ this.logger.debug(`Checkpoint saved for execution: ${execution.id}`);
57
+ }
58
+ /**
59
+ * Load a checkpoint for recovery
60
+ */
61
+ async loadCheckpoint(executionId) {
62
+ const key = this.getCheckpointKey(executionId);
63
+ const data = await this.store.load(key);
64
+ if (!data) {
65
+ return null;
66
+ }
67
+ return data;
68
+ }
69
+ /**
70
+ * Restore execution from checkpoint
71
+ */
72
+ async restoreExecution(checkpoint) {
73
+ const execution = {
74
+ id: checkpoint.executionId,
75
+ workflowId: checkpoint.workflowId,
76
+ status: 'running', // Resume as running
77
+ input: checkpoint.input,
78
+ startedAt: new Date(),
79
+ steps: [],
80
+ context: checkpoint.context,
81
+ };
82
+ // Restore step results to context
83
+ for (const [stepId, result] of Object.entries(checkpoint.stepResults)) {
84
+ execution.context.variables[`$steps.${stepId}`] = result;
85
+ }
86
+ // Create step execution records for completed steps
87
+ for (const stepId of checkpoint.completedSteps) {
88
+ execution.steps.push({
89
+ id: (0, uuid_1.v4)(),
90
+ stepId,
91
+ status: 'completed',
92
+ output: checkpoint.stepResults[stepId],
93
+ startedAt: new Date(),
94
+ completedAt: new Date(),
95
+ retryCount: 0,
96
+ duration: 0,
97
+ });
98
+ }
99
+ this.logger.info(`Restored execution from checkpoint: ${checkpoint.executionId}`);
100
+ return execution;
101
+ }
102
+ /**
103
+ * Delete checkpoint after successful completion
104
+ */
105
+ async deleteCheckpoint(executionId) {
106
+ const key = this.getCheckpointKey(executionId);
107
+ await this.store.delete(key);
108
+ this.logger.debug(`Checkpoint deleted for execution: ${executionId}`);
109
+ }
110
+ /**
111
+ * List all pending checkpoints (for recovery on startup)
112
+ */
113
+ async listPendingCheckpoints() {
114
+ const keys = await this.store.list('checkpoint:');
115
+ const checkpoints = [];
116
+ for (const key of keys) {
117
+ const data = await this.store.load(key);
118
+ if (data) {
119
+ const checkpoint = data;
120
+ if (checkpoint.status === 'running' || checkpoint.status === 'pending') {
121
+ checkpoints.push(checkpoint);
122
+ }
123
+ }
124
+ }
125
+ return checkpoints;
126
+ }
127
+ /**
128
+ * Get steps that need to be executed (not yet completed)
129
+ */
130
+ getStepsToExecute(checkpoint, allStepIds) {
131
+ const completedSet = new Set(checkpoint.completedSteps);
132
+ return allStepIds.filter(id => !completedSet.has(id));
133
+ }
134
+ getCheckpointKey(executionId) {
135
+ return `checkpoint:${executionId}`;
136
+ }
137
+ extractStepResults(execution) {
138
+ const results = {};
139
+ for (const step of execution.steps) {
140
+ if (step.status === 'completed' && step.output !== undefined) {
141
+ results[step.stepId] = step.output;
142
+ }
143
+ }
144
+ return results;
145
+ }
146
+ }
147
+ exports.StateManager = StateManager;
148
+ /**
149
+ * Idempotency key manager for ensuring workflow idempotency
150
+ */
151
+ class IdempotencyManager {
152
+ store;
153
+ logger;
154
+ ttlMs;
155
+ constructor(store, logger, ttlMs = 24 * 60 * 60 * 1000) {
156
+ this.store = store;
157
+ this.logger = logger;
158
+ this.ttlMs = ttlMs;
159
+ }
160
+ /**
161
+ * Generate idempotency key from workflow ID and input
162
+ */
163
+ generateKey(workflowId, input) {
164
+ const inputHash = this.hashInput(input);
165
+ return `idempotency:${workflowId}:${inputHash}`;
166
+ }
167
+ /**
168
+ * Check if a workflow execution with this key already exists
169
+ */
170
+ async checkIdempotency(key) {
171
+ const data = await this.store.load(key);
172
+ if (!data) {
173
+ return { exists: false };
174
+ }
175
+ const record = data;
176
+ // Check if expired
177
+ if (Date.now() - new Date(record.createdAt).getTime() > this.ttlMs) {
178
+ await this.store.delete(key);
179
+ return { exists: false };
180
+ }
181
+ return {
182
+ exists: true,
183
+ executionId: record.executionId,
184
+ result: record.result,
185
+ };
186
+ }
187
+ /**
188
+ * Record an execution for idempotency
189
+ */
190
+ async recordExecution(key, executionId, result) {
191
+ const record = {
192
+ executionId,
193
+ result,
194
+ createdAt: new Date().toISOString(),
195
+ };
196
+ await this.store.save(key, record);
197
+ this.logger.debug(`Idempotency key recorded: ${key}`);
198
+ }
199
+ /**
200
+ * Update result for an existing idempotency record
201
+ */
202
+ async updateResult(key, result) {
203
+ const data = await this.store.load(key);
204
+ if (data) {
205
+ const record = data;
206
+ record.result = result;
207
+ await this.store.save(key, record);
208
+ }
209
+ }
210
+ hashInput(input) {
211
+ // Simple hash for idempotency - in production use crypto
212
+ const str = JSON.stringify(input);
213
+ let hash = 0;
214
+ for (let i = 0; i < str.length; i++) {
215
+ const char = str.charCodeAt(i);
216
+ hash = ((hash << 5) - hash) + char;
217
+ hash = hash & hash;
218
+ }
219
+ return Math.abs(hash).toString(36);
220
+ }
221
+ }
222
+ exports.IdempotencyManager = IdempotencyManager;
223
+ //# sourceMappingURL=StateManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateManager.js","sourceRoot":"","sources":["../../src/workflow/StateManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Workflow Definition and Validation
3
+ */
4
+ import { WorkflowDefinition, WorkflowStep, TriggerConfig, ErrorHandlingConfig, RetryPolicy } from '../types/workflow';
5
+ export declare class WorkflowDefinitionBuilder {
6
+ private definition;
7
+ constructor(id: string, name: string, version: string);
8
+ trigger(config: TriggerConfig): this;
9
+ step(step: WorkflowStep): this;
10
+ steps(steps: WorkflowStep[]): this;
11
+ errorHandling(config: ErrorHandlingConfig): this;
12
+ retryPolicy(policy: RetryPolicy): this;
13
+ build(): WorkflowDefinition;
14
+ }
15
+ export declare class WorkflowValidator {
16
+ /**
17
+ * Validate a complete workflow definition
18
+ */
19
+ static validate(definition: WorkflowDefinition): void;
20
+ private static validateRequiredFields;
21
+ private static validateTrigger;
22
+ private static validateSteps;
23
+ /**
24
+ * Validate that steps form a valid DAG (no cycles)
25
+ */
26
+ static validateDAG(steps: WorkflowStep[]): void;
27
+ private static validateRetryPolicy;
28
+ /**
29
+ * Get topological order of steps
30
+ */
31
+ static getTopologicalOrder(steps: WorkflowStep[]): string[];
32
+ /**
33
+ * Get steps that can run in parallel (same level in DAG)
34
+ */
35
+ static getParallelGroups(steps: WorkflowStep[]): string[][];
36
+ }
37
+ /**
38
+ * Helper function to create workflow definitions
39
+ */
40
+ export declare function workflow(config: {
41
+ id: string;
42
+ name: string;
43
+ version: string;
44
+ trigger: TriggerConfig;
45
+ steps: WorkflowStep[];
46
+ errorHandling?: ErrorHandlingConfig;
47
+ retryPolicy?: RetryPolicy;
48
+ }): WorkflowDefinition;
49
+ //# sourceMappingURL=WorkflowDefinition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowDefinition.d.ts","sourceRoot":"","sources":["../../src/workflow/WorkflowDefinition.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAG3B,qBAAa,yBAAyB;IACpC,OAAO,CAAC,UAAU,CAAmC;gBAEzC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAOrD,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAKpC,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAK9B,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI;IAKlC,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAKhD,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAKtC,KAAK,IAAI,kBAAkB;CAI5B;AAED,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI;IAWrD,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAkBrC,OAAO,CAAC,MAAM,CAAC,eAAe;IAU9B,OAAO,CAAC,MAAM,CAAC,aAAa;IAiC5B;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI;IAoD/C,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA4BlC;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE;IAgD3D;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,EAAE;CA+C5D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,GAAG,kBAAkB,CAarB"}
@@ -0,0 +1,264 @@
1
+ "use strict";
2
+ /**
3
+ * Workflow Definition and Validation
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WorkflowValidator = exports.WorkflowDefinitionBuilder = void 0;
7
+ exports.workflow = workflow;
8
+ const error_1 = require("../types/error");
9
+ class WorkflowDefinitionBuilder {
10
+ definition = {};
11
+ constructor(id, name, version) {
12
+ this.definition.id = id;
13
+ this.definition.name = name;
14
+ this.definition.version = version;
15
+ this.definition.steps = [];
16
+ }
17
+ trigger(config) {
18
+ this.definition.trigger = config;
19
+ return this;
20
+ }
21
+ step(step) {
22
+ this.definition.steps.push(step);
23
+ return this;
24
+ }
25
+ steps(steps) {
26
+ this.definition.steps = steps;
27
+ return this;
28
+ }
29
+ errorHandling(config) {
30
+ this.definition.errorHandling = config;
31
+ return this;
32
+ }
33
+ retryPolicy(policy) {
34
+ this.definition.retryPolicy = policy;
35
+ return this;
36
+ }
37
+ build() {
38
+ WorkflowValidator.validate(this.definition);
39
+ return this.definition;
40
+ }
41
+ }
42
+ exports.WorkflowDefinitionBuilder = WorkflowDefinitionBuilder;
43
+ class WorkflowValidator {
44
+ /**
45
+ * Validate a complete workflow definition
46
+ */
47
+ static validate(definition) {
48
+ this.validateRequiredFields(definition);
49
+ this.validateTrigger(definition.trigger);
50
+ this.validateSteps(definition.steps);
51
+ this.validateDAG(definition.steps);
52
+ if (definition.retryPolicy) {
53
+ this.validateRetryPolicy(definition.retryPolicy);
54
+ }
55
+ }
56
+ static validateRequiredFields(definition) {
57
+ if (!definition.id) {
58
+ throw new error_1.ValidationError('Workflow id is required', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
59
+ }
60
+ if (!definition.name) {
61
+ throw new error_1.ValidationError('Workflow name is required', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
62
+ }
63
+ if (!definition.version) {
64
+ throw new error_1.ValidationError('Workflow version is required', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
65
+ }
66
+ if (!definition.trigger) {
67
+ throw new error_1.ValidationError('Workflow trigger is required', error_1.ErrorCodes.MISSING_REQUIRED_FIELD);
68
+ }
69
+ if (!definition.steps || definition.steps.length === 0) {
70
+ throw new error_1.ValidationError('Workflow must have at least one step', error_1.ErrorCodes.INVALID_INPUT);
71
+ }
72
+ }
73
+ static validateTrigger(trigger) {
74
+ const validTypes = ['webhook', 'cron', 'polling', 'manual'];
75
+ if (!validTypes.includes(trigger.type)) {
76
+ throw new error_1.ValidationError(`Invalid trigger type: ${trigger.type}. Must be one of: ${validTypes.join(', ')}`, error_1.ErrorCodes.INVALID_FORMAT);
77
+ }
78
+ }
79
+ static validateSteps(steps) {
80
+ const stepIds = new Set();
81
+ for (const step of steps) {
82
+ // Check for duplicate step IDs
83
+ if (stepIds.has(step.id)) {
84
+ throw new error_1.ValidationError(`Duplicate step id: ${step.id}`, error_1.ErrorCodes.INVALID_INPUT);
85
+ }
86
+ stepIds.add(step.id);
87
+ // Validate step type
88
+ const validTypes = ['tool', 'agent', 'condition', 'loop', 'parallel', 'payment'];
89
+ if (!validTypes.includes(step.type)) {
90
+ throw new error_1.ValidationError(`Invalid step type: ${step.type}. Must be one of: ${validTypes.join(', ')}`, error_1.ErrorCodes.INVALID_FORMAT);
91
+ }
92
+ // Validate dependencies reference existing steps
93
+ if (step.dependencies) {
94
+ for (const dep of step.dependencies) {
95
+ if (!stepIds.has(dep)) {
96
+ // Dependency might be defined later, we'll check in DAG validation
97
+ }
98
+ }
99
+ }
100
+ }
101
+ }
102
+ /**
103
+ * Validate that steps form a valid DAG (no cycles)
104
+ */
105
+ static validateDAG(steps) {
106
+ const stepMap = new Map();
107
+ for (const step of steps) {
108
+ stepMap.set(step.id, step);
109
+ }
110
+ // Check all dependencies exist
111
+ for (const step of steps) {
112
+ if (step.dependencies) {
113
+ for (const dep of step.dependencies) {
114
+ if (!stepMap.has(dep)) {
115
+ throw new error_1.ValidationError(`Step ${step.id} depends on non-existent step: ${dep}`, error_1.ErrorCodes.INVALID_INPUT);
116
+ }
117
+ }
118
+ }
119
+ }
120
+ // Detect cycles using DFS
121
+ const visited = new Set();
122
+ const recursionStack = new Set();
123
+ const hasCycle = (stepId) => {
124
+ if (recursionStack.has(stepId))
125
+ return true;
126
+ if (visited.has(stepId))
127
+ return false;
128
+ visited.add(stepId);
129
+ recursionStack.add(stepId);
130
+ const step = stepMap.get(stepId);
131
+ if (step?.dependencies) {
132
+ for (const dep of step.dependencies) {
133
+ if (hasCycle(dep))
134
+ return true;
135
+ }
136
+ }
137
+ recursionStack.delete(stepId);
138
+ return false;
139
+ };
140
+ for (const step of steps) {
141
+ if (hasCycle(step.id)) {
142
+ throw new error_1.ValidationError('Workflow contains circular dependencies', error_1.ErrorCodes.CIRCULAR_DEPENDENCY);
143
+ }
144
+ }
145
+ }
146
+ static validateRetryPolicy(policy) {
147
+ if (policy.maxAttempts < 1) {
148
+ throw new error_1.ValidationError('Retry policy maxAttempts must be at least 1', error_1.ErrorCodes.INVALID_INPUT);
149
+ }
150
+ if (policy.baseDelay < 0) {
151
+ throw new error_1.ValidationError('Retry policy baseDelay must be non-negative', error_1.ErrorCodes.INVALID_INPUT);
152
+ }
153
+ if (policy.maxDelay < policy.baseDelay) {
154
+ throw new error_1.ValidationError('Retry policy maxDelay must be >= baseDelay', error_1.ErrorCodes.INVALID_INPUT);
155
+ }
156
+ const validStrategies = ['linear', 'exponential', 'fixed'];
157
+ if (!validStrategies.includes(policy.backoffStrategy)) {
158
+ throw new error_1.ValidationError(`Invalid backoff strategy: ${policy.backoffStrategy}`, error_1.ErrorCodes.INVALID_FORMAT);
159
+ }
160
+ }
161
+ /**
162
+ * Get topological order of steps
163
+ */
164
+ static getTopologicalOrder(steps) {
165
+ const stepMap = new Map();
166
+ const inDegree = new Map();
167
+ const adjacency = new Map();
168
+ // Initialize
169
+ for (const step of steps) {
170
+ stepMap.set(step.id, step);
171
+ inDegree.set(step.id, 0);
172
+ adjacency.set(step.id, []);
173
+ }
174
+ // Build adjacency list and calculate in-degrees
175
+ for (const step of steps) {
176
+ if (step.dependencies) {
177
+ for (const dep of step.dependencies) {
178
+ adjacency.get(dep).push(step.id);
179
+ inDegree.set(step.id, inDegree.get(step.id) + 1);
180
+ }
181
+ }
182
+ }
183
+ // Kahn's algorithm
184
+ const queue = [];
185
+ const result = [];
186
+ // Start with nodes that have no dependencies
187
+ for (const [stepId, degree] of inDegree) {
188
+ if (degree === 0) {
189
+ queue.push(stepId);
190
+ }
191
+ }
192
+ while (queue.length > 0) {
193
+ const current = queue.shift();
194
+ result.push(current);
195
+ for (const neighbor of adjacency.get(current)) {
196
+ inDegree.set(neighbor, inDegree.get(neighbor) - 1);
197
+ if (inDegree.get(neighbor) === 0) {
198
+ queue.push(neighbor);
199
+ }
200
+ }
201
+ }
202
+ return result;
203
+ }
204
+ /**
205
+ * Get steps that can run in parallel (same level in DAG)
206
+ */
207
+ static getParallelGroups(steps) {
208
+ const stepMap = new Map();
209
+ const levels = new Map();
210
+ for (const step of steps) {
211
+ stepMap.set(step.id, step);
212
+ }
213
+ // Calculate level for each step
214
+ const getLevel = (stepId, visited = new Set()) => {
215
+ if (levels.has(stepId))
216
+ return levels.get(stepId);
217
+ if (visited.has(stepId))
218
+ return 0; // Cycle detected, handled elsewhere
219
+ visited.add(stepId);
220
+ const step = stepMap.get(stepId);
221
+ if (!step.dependencies || step.dependencies.length === 0) {
222
+ levels.set(stepId, 0);
223
+ return 0;
224
+ }
225
+ const maxDepLevel = Math.max(...step.dependencies.map(dep => getLevel(dep, visited)));
226
+ const level = maxDepLevel + 1;
227
+ levels.set(stepId, level);
228
+ return level;
229
+ };
230
+ for (const step of steps) {
231
+ getLevel(step.id);
232
+ }
233
+ // Group by level
234
+ const groups = new Map();
235
+ for (const [stepId, level] of levels) {
236
+ if (!groups.has(level)) {
237
+ groups.set(level, []);
238
+ }
239
+ groups.get(level).push(stepId);
240
+ }
241
+ // Return sorted by level
242
+ return Array.from(groups.entries())
243
+ .sort((a, b) => a[0] - b[0])
244
+ .map(([_, stepIds]) => stepIds);
245
+ }
246
+ }
247
+ exports.WorkflowValidator = WorkflowValidator;
248
+ /**
249
+ * Helper function to create workflow definitions
250
+ */
251
+ function workflow(config) {
252
+ const definition = {
253
+ id: config.id,
254
+ name: config.name,
255
+ version: config.version,
256
+ trigger: config.trigger,
257
+ steps: config.steps,
258
+ errorHandling: config.errorHandling,
259
+ retryPolicy: config.retryPolicy,
260
+ };
261
+ WorkflowValidator.validate(definition);
262
+ return definition;
263
+ }
264
+ //# sourceMappingURL=WorkflowDefinition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowDefinition.js","sourceRoot":"","sources":["../../src/workflow/WorkflowDefinition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Workflow Executor with DAG-based execution
3
+ */
4
+ import { EventEmitter } from 'events';
5
+ import { WorkflowDefinition, WorkflowExecution, ExecutionContext } from '../types/workflow';
6
+ import { ToolContext, ToolResult, Logger, MetricsCollector } from '../types/tool';
7
+ export interface ExecutorDependencies {
8
+ logger: Logger;
9
+ metrics: MetricsCollector;
10
+ toolExecutor: (toolName: string, input: unknown, context: ToolContext) => Promise<ToolResult>;
11
+ agentExecutor?: (agentConfig: any, goal: string, context: any) => Promise<any>;
12
+ credentialResolver?: (scope: string) => Promise<Record<string, unknown>>;
13
+ }
14
+ export declare class WorkflowExecutor extends EventEmitter {
15
+ private logger;
16
+ private metrics;
17
+ private toolExecutor;
18
+ private agentExecutor?;
19
+ private credentialResolver?;
20
+ private activeExecutions;
21
+ constructor(deps: ExecutorDependencies);
22
+ execute(workflow: WorkflowDefinition, input?: unknown, parentContext?: Partial<ExecutionContext>): Promise<WorkflowExecution>;
23
+ private executeStep;
24
+ private executeStepByType;
25
+ private executeToolStep;
26
+ private executeAgentStep;
27
+ private executeConditionStep;
28
+ private executeLoopStep;
29
+ private executeParallelStep;
30
+ private executeWithRetry;
31
+ private calculateDelay;
32
+ private resolveStepInput;
33
+ private resolveValue;
34
+ private getNestedValue;
35
+ private evaluateCondition;
36
+ private safeEvaluate;
37
+ private parseValue;
38
+ private sleep;
39
+ cancel(executionId: string): Promise<void>;
40
+ getActiveExecutions(): WorkflowExecution[];
41
+ }
42
+ //# sourceMappingURL=WorkflowExecutor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowExecutor.d.ts","sourceRoot":"","sources":["../../src/workflow/WorkflowExecutor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,kBAAkB,EAElB,iBAAiB,EAEjB,gBAAgB,EAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAIlF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gBAAgB,CAAC;IAC1B,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9F,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/E,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC1E;AAED,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,aAAa,CAAC,CAAwC;IAC9D,OAAO,CAAC,kBAAkB,CAAC,CAA6C;IACxE,OAAO,CAAC,gBAAgB,CAA6C;gBAEzD,IAAI,EAAE,oBAAoB;IAShC,OAAO,CACX,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,CAAC,EAAE,OAAO,EACf,aAAa,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GACxC,OAAO,CAAC,iBAAiB,CAAC;YA6Ef,WAAW;YAkEX,iBAAiB;YAkCjB,eAAe;YAmBf,gBAAgB;YAyBhB,oBAAoB;YAmBpB,eAAe;YAgCf,mBAAmB;YAcnB,gBAAgB;IAyB9B,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,YAAY;IA4BpB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,KAAK;IAIP,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhD,mBAAmB,IAAI,iBAAiB,EAAE;CAG3C"}