@sowonai/crewx-sdk 0.1.0-dev.0 → 0.1.0-dev.2

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 (74) hide show
  1. package/README.md +444 -0
  2. package/dist/config/yaml-loader.d.ts +8 -0
  3. package/dist/config/yaml-loader.js +137 -0
  4. package/dist/config/yaml-loader.js.map +1 -0
  5. package/dist/core/agent/agent-factory.d.ts +1 -1
  6. package/dist/core/agent/agent-factory.js +4 -6
  7. package/dist/core/agent/agent-factory.js.map +1 -1
  8. package/dist/core/agent/index.d.ts +1 -1
  9. package/dist/core/agent/index.js +2 -1
  10. package/dist/core/agent/index.js.map +1 -1
  11. package/dist/core/parallel/helpers.d.ts +27 -0
  12. package/dist/core/parallel/helpers.js +252 -0
  13. package/dist/core/parallel/helpers.js.map +1 -0
  14. package/dist/core/parallel/index.d.ts +4 -0
  15. package/dist/core/parallel/index.js +11 -0
  16. package/dist/core/parallel/index.js.map +1 -0
  17. package/dist/core/parallel/parallel-runner.d.ts +16 -0
  18. package/dist/core/parallel/parallel-runner.js +230 -0
  19. package/dist/core/parallel/parallel-runner.js.map +1 -0
  20. package/dist/core/parallel/types.d.ts +41 -0
  21. package/dist/core/parallel/types.js +3 -0
  22. package/dist/core/parallel/types.js.map +1 -0
  23. package/dist/core/providers/base-ai.provider.d.ts +12 -26
  24. package/dist/core/providers/base-ai.provider.js +37 -30
  25. package/dist/core/providers/base-ai.provider.js.map +1 -1
  26. package/dist/core/providers/base-ai.types.d.ts +15 -0
  27. package/dist/core/providers/base-ai.types.js +3 -0
  28. package/dist/core/providers/base-ai.types.js.map +1 -0
  29. package/dist/core/providers/claude.provider.d.ts +4 -3
  30. package/dist/core/providers/claude.provider.js +16 -33
  31. package/dist/core/providers/claude.provider.js.map +1 -1
  32. package/dist/core/providers/codex.provider.d.ts +2 -1
  33. package/dist/core/providers/codex.provider.js +4 -18
  34. package/dist/core/providers/codex.provider.js.map +1 -1
  35. package/dist/core/providers/copilot.provider.d.ts +4 -3
  36. package/dist/core/providers/copilot.provider.js +10 -28
  37. package/dist/core/providers/copilot.provider.js.map +1 -1
  38. package/dist/core/providers/gemini.provider.d.ts +4 -3
  39. package/dist/core/providers/gemini.provider.js +18 -36
  40. package/dist/core/providers/gemini.provider.js.map +1 -1
  41. package/dist/core/providers/index.d.ts +5 -0
  42. package/dist/core/providers/index.js +14 -0
  43. package/dist/core/providers/index.js.map +1 -0
  44. package/dist/core/providers/tool-call.types.d.ts +39 -0
  45. package/dist/core/providers/tool-call.types.js +3 -0
  46. package/dist/core/providers/tool-call.types.js.map +1 -0
  47. package/dist/core/remote/index.d.ts +3 -0
  48. package/dist/core/remote/index.js +20 -0
  49. package/dist/core/remote/index.js.map +1 -0
  50. package/dist/core/remote/remote-agent-manager.d.ts +24 -0
  51. package/dist/core/remote/remote-agent-manager.js +195 -0
  52. package/dist/core/remote/remote-agent-manager.js.map +1 -0
  53. package/dist/core/remote/remote-transport.d.ts +15 -0
  54. package/dist/core/remote/remote-transport.js +70 -0
  55. package/dist/core/remote/remote-transport.js.map +1 -0
  56. package/dist/core/remote/types.d.ts +79 -0
  57. package/dist/core/remote/types.js +3 -0
  58. package/dist/core/remote/types.js.map +1 -0
  59. package/dist/index.d.ts +12 -1
  60. package/dist/index.js +26 -1
  61. package/dist/index.js.map +1 -1
  62. package/dist/types/structured-payload.types.d.ts +46 -0
  63. package/dist/types/structured-payload.types.js +65 -0
  64. package/dist/types/structured-payload.types.js.map +1 -0
  65. package/dist/utils/base-message-formatter.d.ts +32 -0
  66. package/dist/utils/base-message-formatter.js +170 -0
  67. package/dist/utils/base-message-formatter.js.map +1 -0
  68. package/package.json +4 -1
  69. package/dist/core/providers/dynamic-provider.factory.d.ts +0 -55
  70. package/dist/core/providers/dynamic-provider.factory.js +0 -587
  71. package/dist/core/providers/dynamic-provider.factory.js.map +0 -1
  72. package/dist/version.d.ts +0 -1
  73. package/dist/version.js +0 -17
  74. package/dist/version.js.map +0 -1
@@ -0,0 +1,27 @@
1
+ import type { ParallelRunnerMetrics } from './types';
2
+ import { type AgentQueryRequest, type AgentExecuteRequest, type AgentResult } from '../agent';
3
+ export interface RetryPolicy {
4
+ maxRetries: number;
5
+ retryDelay: number;
6
+ }
7
+ export interface ParallelConfig {
8
+ concurrency?: number;
9
+ timeout?: number;
10
+ retryPolicy?: RetryPolicy;
11
+ onProgress?: (completed: number, total: number) => void;
12
+ onComplete?: (result: HelperResult<AgentResult>) => void;
13
+ }
14
+ export interface HelperResult<T = AgentResult> {
15
+ total: number;
16
+ completed: number;
17
+ successCount: number;
18
+ failureCount: number;
19
+ results: T[];
20
+ errors: Array<{
21
+ index: number;
22
+ error: Error;
23
+ }>;
24
+ metrics: ParallelRunnerMetrics;
25
+ }
26
+ export declare const runQueriesParallel: (queries: AgentQueryRequest[], config?: ParallelConfig) => Promise<AgentResult[]>;
27
+ export declare const runExecutesParallel: (requests: AgentExecuteRequest[], config?: ParallelConfig) => Promise<AgentResult[]>;
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runExecutesParallel = exports.runQueriesParallel = void 0;
4
+ const parallel_runner_1 = require("./parallel-runner");
5
+ const agent_1 = require("../agent");
6
+ const DEFAULT_CONCURRENCY = 3;
7
+ const DEFAULT_TIMEOUT_MS = 30000;
8
+ const DEFAULT_RETRY_DELAY_MS = 500;
9
+ const normalizeConcurrency = (value) => {
10
+ if (typeof value !== 'number' || Number.isNaN(value) || !Number.isFinite(value)) {
11
+ return DEFAULT_CONCURRENCY;
12
+ }
13
+ const normalized = Math.floor(value);
14
+ return normalized > 0 ? normalized : DEFAULT_CONCURRENCY;
15
+ };
16
+ const normalizeTimeout = (value) => {
17
+ if (value === undefined) {
18
+ return DEFAULT_TIMEOUT_MS;
19
+ }
20
+ if (typeof value !== 'number' || Number.isNaN(value) || value <= 0) {
21
+ return DEFAULT_TIMEOUT_MS;
22
+ }
23
+ return value;
24
+ };
25
+ const normalizeRetryPolicy = (policy) => {
26
+ if (!policy) {
27
+ return { maxRetries: 0, retryDelay: DEFAULT_RETRY_DELAY_MS };
28
+ }
29
+ const maxRetries = Number.isInteger(policy.maxRetries) && policy.maxRetries >= 0
30
+ ? policy.maxRetries
31
+ : 0;
32
+ const retryDelay = typeof policy.retryDelay === 'number' && policy.retryDelay >= 0
33
+ ? policy.retryDelay
34
+ : DEFAULT_RETRY_DELAY_MS;
35
+ return { maxRetries, retryDelay };
36
+ };
37
+ const createAbortError = (signal) => {
38
+ const reason = signal.reason;
39
+ if (reason instanceof Error) {
40
+ return reason;
41
+ }
42
+ if (typeof reason === 'string') {
43
+ return new Error(reason);
44
+ }
45
+ return new Error('Parallel operation aborted');
46
+ };
47
+ const waitForDelay = (delayMs, signal) => {
48
+ if (delayMs <= 0) {
49
+ return Promise.resolve();
50
+ }
51
+ return new Promise((resolve, reject) => {
52
+ const timer = setTimeout(() => {
53
+ signal.removeEventListener('abort', onAbort);
54
+ resolve();
55
+ }, delayMs);
56
+ const onAbort = () => {
57
+ clearTimeout(timer);
58
+ reject(createAbortError(signal));
59
+ };
60
+ if (signal.aborted) {
61
+ onAbort();
62
+ return;
63
+ }
64
+ signal.addEventListener('abort', onAbort, { once: true });
65
+ });
66
+ };
67
+ const executeWithRetry = async (execute, retryPolicy, signal) => {
68
+ let lastFailureResult;
69
+ let lastError;
70
+ for (let attempt = 0; attempt <= retryPolicy.maxRetries; attempt += 1) {
71
+ if (signal.aborted) {
72
+ throw createAbortError(signal);
73
+ }
74
+ try {
75
+ const result = await execute();
76
+ lastFailureResult = result;
77
+ if (result.success || attempt === retryPolicy.maxRetries) {
78
+ return result;
79
+ }
80
+ }
81
+ catch (error) {
82
+ lastError = error;
83
+ if (signal.aborted) {
84
+ throw createAbortError(signal);
85
+ }
86
+ if (attempt === retryPolicy.maxRetries) {
87
+ const normalizedError = error instanceof Error ? error : new Error(String(error));
88
+ throw normalizedError;
89
+ }
90
+ }
91
+ if (attempt < retryPolicy.maxRetries) {
92
+ await waitForDelay(retryPolicy.retryDelay, signal);
93
+ }
94
+ }
95
+ if (lastFailureResult) {
96
+ return lastFailureResult;
97
+ }
98
+ if (lastError) {
99
+ throw lastError instanceof Error ? lastError : new Error(String(lastError));
100
+ }
101
+ throw new Error('Parallel helper encountered an unexpected state');
102
+ };
103
+ const recordProgress = (callbacks, state, wasSuccessful) => {
104
+ state.completed += 1;
105
+ if (wasSuccessful) {
106
+ state.success += 1;
107
+ }
108
+ else {
109
+ state.failure += 1;
110
+ }
111
+ try {
112
+ callbacks.onProgress?.(state.completed, state.total);
113
+ }
114
+ catch (error) {
115
+ if (process.env.NODE_ENV !== 'production') {
116
+ console.warn('Parallel helper onProgress callback threw an error:', error);
117
+ }
118
+ }
119
+ };
120
+ const mapResults = (taskResults) => {
121
+ return taskResults.map((taskResult) => ({
122
+ metadata: taskResult.metadata,
123
+ taskResult,
124
+ }));
125
+ };
126
+ const buildAgentResults = (decoratedResults) => {
127
+ const ordered = decoratedResults.slice().sort((a, b) => a.metadata.index - b.metadata.index);
128
+ return ordered.map(({ metadata, taskResult }) => {
129
+ if (taskResult.value) {
130
+ const baseResult = taskResult.value;
131
+ return {
132
+ ...baseResult,
133
+ agentId: baseResult.agentId ?? metadata.request.agentId,
134
+ metadata: {
135
+ ...baseResult.metadata,
136
+ requestIndex: metadata.index,
137
+ mode: metadata.mode,
138
+ },
139
+ };
140
+ }
141
+ const error = taskResult.error ?? new Error('Unknown error');
142
+ return {
143
+ agentId: metadata.request.agentId,
144
+ content: error.message,
145
+ success: false,
146
+ metadata: {
147
+ error: error.message,
148
+ aborted: taskResult.aborted ?? false,
149
+ requestIndex: metadata.index,
150
+ mode: metadata.mode,
151
+ },
152
+ };
153
+ });
154
+ };
155
+ const collectErrors = (decoratedResults) => {
156
+ return decoratedResults
157
+ .filter(({ taskResult }) => !taskResult.success)
158
+ .map(({ metadata, taskResult }) => {
159
+ if (taskResult.error instanceof Error) {
160
+ return { index: metadata.index, error: taskResult.error };
161
+ }
162
+ if (taskResult.value && !taskResult.value.success) {
163
+ const errorMessage = taskResult.value.metadata?.error
164
+ ?? taskResult.value.content
165
+ ?? 'Agent returned unsuccessful result';
166
+ return { index: metadata.index, error: new Error(errorMessage) };
167
+ }
168
+ return { index: metadata.index, error: new Error('Unknown failure') };
169
+ });
170
+ };
171
+ const createCallbacks = (progressState, config) => ({
172
+ onTaskComplete: async (result) => {
173
+ recordProgress(config, progressState, result.success);
174
+ },
175
+ onError: async () => {
176
+ recordProgress(config, progressState, false);
177
+ },
178
+ });
179
+ const runAgentOperations = async (requests, mode, config = {}) => {
180
+ if (!Array.isArray(requests)) {
181
+ throw new TypeError('Parallel helpers expect an array of requests');
182
+ }
183
+ if (requests.length === 0) {
184
+ const emptyMetrics = {
185
+ totalTasks: 0,
186
+ startedTasks: 0,
187
+ completedTasks: 0,
188
+ successCount: 0,
189
+ failureCount: 0,
190
+ totalDurationMs: 0,
191
+ averageDurationMs: 0,
192
+ throughput: 0,
193
+ };
194
+ const summary = {
195
+ total: 0,
196
+ completed: 0,
197
+ successCount: 0,
198
+ failureCount: 0,
199
+ results: [],
200
+ errors: [],
201
+ metrics: emptyMetrics,
202
+ };
203
+ config.onComplete?.(summary);
204
+ return [];
205
+ }
206
+ const concurrency = normalizeConcurrency(config.concurrency);
207
+ const timeout = normalizeTimeout(config.timeout);
208
+ const retryPolicy = normalizeRetryPolicy(config.retryPolicy);
209
+ const runner = new parallel_runner_1.ParallelRunner();
210
+ const runtime = new agent_1.AgentRuntime();
211
+ const runSingleOperation = (request) => (mode === 'query'
212
+ ? runtime.query(request)
213
+ : runtime.execute(request));
214
+ const tasks = requests.map((request, index) => ({
215
+ id: `${mode}:${request.agentId ?? 'anonymous'}:${index}`,
216
+ metadata: { index, mode, request },
217
+ run: (context) => executeWithRetry(() => runSingleOperation(request), retryPolicy, context.signal),
218
+ }));
219
+ const progressState = {
220
+ completed: 0,
221
+ success: 0,
222
+ failure: 0,
223
+ total: requests.length,
224
+ };
225
+ const runnerOptions = {
226
+ maxConcurrency: concurrency,
227
+ timeoutMs: timeout,
228
+ evaluateTaskSuccess: (value) => value.success,
229
+ callbacks: createCallbacks(progressState, config),
230
+ };
231
+ const taskResults = await runner.run(tasks, runnerOptions);
232
+ const decoratedResults = mapResults(taskResults);
233
+ const agentResults = buildAgentResults(decoratedResults);
234
+ const errors = collectErrors(decoratedResults);
235
+ const metrics = runner.getMetrics();
236
+ const summary = {
237
+ total: requests.length,
238
+ completed: requests.length,
239
+ successCount: agentResults.filter((item) => item.success).length,
240
+ failureCount: agentResults.filter((item) => !item.success).length,
241
+ results: agentResults,
242
+ errors,
243
+ metrics,
244
+ };
245
+ config.onComplete?.(summary);
246
+ return agentResults;
247
+ };
248
+ const runQueriesParallel = (queries, config) => runAgentOperations(queries, 'query', config);
249
+ exports.runQueriesParallel = runQueriesParallel;
250
+ const runExecutesParallel = (requests, config) => runAgentOperations(requests, 'execute', config);
251
+ exports.runExecutesParallel = runExecutesParallel;
252
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/core/parallel/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { ParallelRunner, ParallelRunnerTimeoutError, createDefaultParallelRunner, } from './parallel-runner';
2
+ export type { ParallelRunnerMetrics, ParallelRunnerOptions, Task, TaskResult, TaskCallbacks, TaskExecutionContext, } from './types';
3
+ export { runQueriesParallel, runExecutesParallel, } from './helpers';
4
+ export type { ParallelConfig, HelperResult, RetryPolicy, } from './helpers';
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runExecutesParallel = exports.runQueriesParallel = exports.createDefaultParallelRunner = exports.ParallelRunnerTimeoutError = exports.ParallelRunner = void 0;
4
+ var parallel_runner_1 = require("./parallel-runner");
5
+ Object.defineProperty(exports, "ParallelRunner", { enumerable: true, get: function () { return parallel_runner_1.ParallelRunner; } });
6
+ Object.defineProperty(exports, "ParallelRunnerTimeoutError", { enumerable: true, get: function () { return parallel_runner_1.ParallelRunnerTimeoutError; } });
7
+ Object.defineProperty(exports, "createDefaultParallelRunner", { enumerable: true, get: function () { return parallel_runner_1.createDefaultParallelRunner; } });
8
+ var helpers_1 = require("./helpers");
9
+ Object.defineProperty(exports, "runQueriesParallel", { enumerable: true, get: function () { return helpers_1.runQueriesParallel; } });
10
+ Object.defineProperty(exports, "runExecutesParallel", { enumerable: true, get: function () { return helpers_1.runExecutesParallel; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/parallel/index.ts"],"names":[],"mappings":";;;AAAA,qDAI2B;AAHzB,iHAAA,cAAc,OAAA;AACd,6HAAA,0BAA0B,OAAA;AAC1B,8HAAA,2BAA2B,OAAA;AAU7B,qCAGmB;AAFjB,6GAAA,kBAAkB,OAAA;AAClB,8GAAA,mBAAmB,OAAA"}
@@ -0,0 +1,16 @@
1
+ import type { ParallelRunnerMetrics, ParallelRunnerOptions, Task, TaskResult } from './types';
2
+ export declare class ParallelRunnerTimeoutError extends Error {
3
+ readonly taskId: string;
4
+ readonly timeoutMs: number;
5
+ constructor(taskId: string, timeoutMs: number);
6
+ }
7
+ export declare class ParallelRunner {
8
+ private readonly defaults;
9
+ private metrics;
10
+ constructor(defaults?: ParallelRunnerOptions);
11
+ run<T>(tasks: Task<T>[], options?: ParallelRunnerOptions<T>): Promise<TaskResult<T>[]>;
12
+ getMetrics(): ParallelRunnerMetrics;
13
+ private mergeOptions;
14
+ private mergeCallbacks;
15
+ }
16
+ export declare const createDefaultParallelRunner: () => ParallelRunner;
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDefaultParallelRunner = exports.ParallelRunner = exports.ParallelRunnerTimeoutError = void 0;
4
+ const node_perf_hooks_1 = require("node:perf_hooks");
5
+ class ParallelRunnerTimeoutError extends Error {
6
+ constructor(taskId, timeoutMs) {
7
+ super(`Task ${taskId} timed out after ${timeoutMs}ms`);
8
+ this.taskId = taskId;
9
+ this.timeoutMs = timeoutMs;
10
+ this.name = 'ParallelRunnerTimeoutError';
11
+ }
12
+ }
13
+ exports.ParallelRunnerTimeoutError = ParallelRunnerTimeoutError;
14
+ class ParallelRunner {
15
+ constructor(defaults = {}) {
16
+ this.defaults = defaults;
17
+ this.metrics = {
18
+ totalTasks: 0,
19
+ startedTasks: 0,
20
+ completedTasks: 0,
21
+ successCount: 0,
22
+ failureCount: 0,
23
+ totalDurationMs: 0,
24
+ averageDurationMs: 0,
25
+ throughput: 0,
26
+ };
27
+ }
28
+ async run(tasks, options = {}) {
29
+ if (!Array.isArray(tasks)) {
30
+ throw new TypeError('ParallelRunner.run expects an array of tasks');
31
+ }
32
+ if (tasks.length === 0) {
33
+ this.metrics = {
34
+ totalTasks: 0,
35
+ startedTasks: 0,
36
+ completedTasks: 0,
37
+ successCount: 0,
38
+ failureCount: 0,
39
+ totalDurationMs: 0,
40
+ averageDurationMs: 0,
41
+ throughput: 0,
42
+ };
43
+ return [];
44
+ }
45
+ const merged = this.mergeOptions(options);
46
+ const maxConcurrency = Math.max(1, merged.maxConcurrency ?? 5);
47
+ const timeoutMs = merged.timeoutMs;
48
+ const failFast = merged.failFast ?? false;
49
+ const callbacks = merged.callbacks;
50
+ const evaluateTaskSuccess = merged.evaluateTaskSuccess ?? (() => true);
51
+ const results = [];
52
+ let successCount = 0;
53
+ let failureCount = 0;
54
+ let startedTasks = 0;
55
+ let aborted = false;
56
+ let cursor = 0;
57
+ const startedAt = node_perf_hooks_1.performance.now();
58
+ const executeTask = async (task) => {
59
+ if (callbacks?.onTaskStart) {
60
+ await callbacks.onTaskStart(task);
61
+ }
62
+ startedTasks += 1;
63
+ const controller = new AbortController();
64
+ const context = { signal: controller.signal };
65
+ let timeoutId;
66
+ let timeoutPromise;
67
+ if (typeof timeoutMs === 'number' && Number.isFinite(timeoutMs) && timeoutMs > 0) {
68
+ timeoutPromise = new Promise((_, reject) => {
69
+ timeoutId = setTimeout(() => {
70
+ const timeoutError = new ParallelRunnerTimeoutError(task.id, timeoutMs);
71
+ controller.abort(timeoutError);
72
+ reject(timeoutError);
73
+ }, timeoutMs);
74
+ });
75
+ }
76
+ const startedAtTask = node_perf_hooks_1.performance.now();
77
+ const runPromise = task.run(context);
78
+ const combinedPromise = timeoutPromise
79
+ ? Promise.race([runPromise, timeoutPromise])
80
+ : runPromise;
81
+ try {
82
+ const value = await combinedPromise;
83
+ const finishedAtTask = node_perf_hooks_1.performance.now();
84
+ const durationMs = finishedAtTask - startedAtTask;
85
+ const success = evaluateTaskSuccess(value, task);
86
+ const result = {
87
+ taskId: task.id,
88
+ success,
89
+ value,
90
+ durationMs,
91
+ startedAt: startedAtTask,
92
+ finishedAt: finishedAtTask,
93
+ metadata: task.metadata,
94
+ aborted: false,
95
+ };
96
+ results.push(result);
97
+ success ? (successCount += 1) : (failureCount += 1);
98
+ if (callbacks?.onTaskComplete) {
99
+ await callbacks.onTaskComplete(result);
100
+ }
101
+ if (failFast && !success) {
102
+ aborted = true;
103
+ }
104
+ }
105
+ catch (rawError) {
106
+ const finishedAtTask = node_perf_hooks_1.performance.now();
107
+ const durationMs = finishedAtTask - startedAtTask;
108
+ const error = rawError instanceof Error ? rawError : new Error(String(rawError));
109
+ const result = {
110
+ taskId: task.id,
111
+ success: false,
112
+ error,
113
+ durationMs,
114
+ startedAt: startedAtTask,
115
+ finishedAt: finishedAtTask,
116
+ metadata: task.metadata,
117
+ aborted: controller.signal.aborted,
118
+ };
119
+ results.push(result);
120
+ failureCount += 1;
121
+ if (callbacks?.onError) {
122
+ await callbacks.onError(task, error, durationMs);
123
+ }
124
+ if (failFast) {
125
+ aborted = true;
126
+ }
127
+ }
128
+ finally {
129
+ if (timeoutId) {
130
+ clearTimeout(timeoutId);
131
+ }
132
+ if (timeoutPromise) {
133
+ runPromise.catch(() => undefined);
134
+ }
135
+ }
136
+ };
137
+ const worker = async () => {
138
+ while (true) {
139
+ if (aborted) {
140
+ break;
141
+ }
142
+ const currentIndex = cursor;
143
+ if (currentIndex >= tasks.length) {
144
+ break;
145
+ }
146
+ cursor += 1;
147
+ const task = tasks[currentIndex];
148
+ if (!task) {
149
+ break;
150
+ }
151
+ await executeTask(task);
152
+ if (aborted) {
153
+ break;
154
+ }
155
+ }
156
+ };
157
+ const workers = [];
158
+ const workerCount = Math.min(maxConcurrency, tasks.length);
159
+ for (let i = 0; i < workerCount; i += 1) {
160
+ workers.push(worker());
161
+ }
162
+ await Promise.all(workers);
163
+ const finishedAt = node_perf_hooks_1.performance.now();
164
+ const totalDurationMs = finishedAt - startedAt;
165
+ const averageDurationMs = results.length
166
+ ? results.reduce((sum, item) => sum + item.durationMs, 0) / results.length
167
+ : 0;
168
+ const throughput = totalDurationMs > 0
169
+ ? (results.length / (totalDurationMs / 1000))
170
+ : results.length;
171
+ this.metrics = {
172
+ totalTasks: tasks.length,
173
+ startedTasks,
174
+ completedTasks: results.length,
175
+ successCount,
176
+ failureCount,
177
+ totalDurationMs,
178
+ averageDurationMs,
179
+ throughput,
180
+ };
181
+ return results;
182
+ }
183
+ getMetrics() {
184
+ return this.metrics;
185
+ }
186
+ mergeOptions(options) {
187
+ return {
188
+ maxConcurrency: options.maxConcurrency ?? this.defaults.maxConcurrency,
189
+ timeoutMs: options.timeoutMs ?? this.defaults.timeoutMs,
190
+ failFast: options.failFast ?? this.defaults.failFast,
191
+ evaluateTaskSuccess: options.evaluateTaskSuccess ?? this.defaults.evaluateTaskSuccess,
192
+ callbacks: this.mergeCallbacks(this.defaults.callbacks, options.callbacks),
193
+ };
194
+ }
195
+ mergeCallbacks(base, override) {
196
+ if (!base && !override) {
197
+ return undefined;
198
+ }
199
+ return {
200
+ onTaskStart: async (task) => {
201
+ if (base?.onTaskStart) {
202
+ await base.onTaskStart(task);
203
+ }
204
+ if (override?.onTaskStart) {
205
+ await override.onTaskStart(task);
206
+ }
207
+ },
208
+ onTaskComplete: async (result) => {
209
+ if (base?.onTaskComplete) {
210
+ await base.onTaskComplete(result);
211
+ }
212
+ if (override?.onTaskComplete) {
213
+ await override.onTaskComplete(result);
214
+ }
215
+ },
216
+ onError: async (task, error, durationMs) => {
217
+ if (base?.onError) {
218
+ await base.onError(task, error, durationMs);
219
+ }
220
+ if (override?.onError) {
221
+ await override.onError(task, error, durationMs);
222
+ }
223
+ },
224
+ };
225
+ }
226
+ }
227
+ exports.ParallelRunner = ParallelRunner;
228
+ const createDefaultParallelRunner = () => new ParallelRunner();
229
+ exports.createDefaultParallelRunner = createDefaultParallelRunner;
230
+ //# sourceMappingURL=parallel-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-runner.js","sourceRoot":"","sources":["../../../src/core/parallel/parallel-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ export interface Task<T> {
2
+ id: string;
3
+ metadata?: Record<string, unknown>;
4
+ run: (context: TaskExecutionContext) => Promise<T>;
5
+ }
6
+ export interface TaskExecutionContext {
7
+ signal: AbortSignal;
8
+ }
9
+ export interface TaskResult<T> {
10
+ taskId: string;
11
+ success: boolean;
12
+ value?: T;
13
+ error?: Error;
14
+ durationMs: number;
15
+ startedAt: number;
16
+ finishedAt: number;
17
+ metadata?: Record<string, unknown>;
18
+ aborted?: boolean;
19
+ }
20
+ export interface TaskCallbacks<T> {
21
+ onTaskStart?: (task: Task<T>) => void | Promise<void>;
22
+ onTaskComplete?: (result: TaskResult<T>) => void | Promise<void>;
23
+ onError?: (task: Task<T>, error: Error, durationMs: number) => void | Promise<void>;
24
+ }
25
+ export interface ParallelRunnerOptions<T = unknown> {
26
+ maxConcurrency?: number;
27
+ timeoutMs?: number;
28
+ failFast?: boolean;
29
+ callbacks?: TaskCallbacks<T>;
30
+ evaluateTaskSuccess?: (value: T, task: Task<T>) => boolean;
31
+ }
32
+ export interface ParallelRunnerMetrics {
33
+ totalTasks: number;
34
+ startedTasks: number;
35
+ completedTasks: number;
36
+ successCount: number;
37
+ failureCount: number;
38
+ totalDurationMs: number;
39
+ averageDurationMs: number;
40
+ throughput: number;
41
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/parallel/types.ts"],"names":[],"mappings":""}