@memberjunction/ai-prompts 2.44.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.
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExecutionPlanner = void 0;
4
+ const core_1 = require("@memberjunction/core");
5
+ const uuid_1 = require("uuid");
6
+ class ExecutionPlanner {
7
+ createExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId) {
8
+ (0, core_1.LogStatus)(`Creating execution plan for prompt "${prompt.Name}" with parallelization mode: ${prompt.ParallelizationMode}`);
9
+ const strategy = prompt.ParallelizationMode;
10
+ switch (strategy) {
11
+ case 'None':
12
+ return this.createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId);
13
+ case 'StaticCount':
14
+ return this.createStaticCountPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId);
15
+ case 'ConfigParam':
16
+ return this.createConfigParamPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId);
17
+ case 'ModelSpecific':
18
+ return this.createModelSpecificPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId);
19
+ default:
20
+ (0, core_1.LogError)(`Unknown parallelization strategy: ${strategy}, falling back to single execution`);
21
+ return this.createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId);
22
+ }
23
+ }
24
+ createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId) {
25
+ const selectedModel = this.selectBestModel(prompt, promptModels, allModels, configurationId);
26
+ if (!selectedModel) {
27
+ (0, core_1.LogError)(`No suitable model found for prompt "${prompt.Name}"`);
28
+ return [];
29
+ }
30
+ const promptModel = promptModels.find(pm => pm.ModelID === selectedModel.ID);
31
+ const task = {
32
+ taskId: (0, uuid_1.v4)(),
33
+ prompt,
34
+ model: selectedModel,
35
+ promptModel,
36
+ executionGroup: 0,
37
+ priority: promptModel?.Priority || 0,
38
+ renderedPrompt,
39
+ contextUser,
40
+ configurationId,
41
+ modelParameters: this.parseModelParameters(promptModel?.ModelParameters)
42
+ };
43
+ (0, core_1.LogStatus)(`Created single execution plan with model: ${selectedModel.Name}`);
44
+ return [task];
45
+ }
46
+ createStaticCountPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId) {
47
+ const parallelCount = prompt.ParallelCount || 1;
48
+ if (parallelCount <= 1) {
49
+ (0, core_1.LogStatus)(`StaticCount parallelization with count ${parallelCount}, falling back to single execution`);
50
+ return this.createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId);
51
+ }
52
+ const tasks = [];
53
+ const availableModels = this.getAvailableModels(prompt, promptModels, allModels, configurationId);
54
+ if (availableModels.length === 0) {
55
+ (0, core_1.LogError)(`No suitable models found for prompt "${prompt.Name}"`);
56
+ return [];
57
+ }
58
+ for (let i = 0; i < parallelCount; i++) {
59
+ const modelIndex = i % availableModels.length;
60
+ const selectedModel = availableModels[modelIndex];
61
+ const promptModel = promptModels.find(pm => pm.ModelID === selectedModel.ID);
62
+ const task = {
63
+ taskId: (0, uuid_1.v4)(),
64
+ prompt,
65
+ model: selectedModel,
66
+ promptModel,
67
+ executionGroup: 0,
68
+ priority: promptModel?.Priority || 0,
69
+ renderedPrompt,
70
+ contextUser,
71
+ configurationId,
72
+ modelParameters: this.parseModelParameters(promptModel?.ModelParameters)
73
+ };
74
+ tasks.push(task);
75
+ }
76
+ (0, core_1.LogStatus)(`Created StaticCount execution plan with ${tasks.length} parallel tasks`);
77
+ return tasks;
78
+ }
79
+ createConfigParamPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId) {
80
+ const configParamName = prompt.ParallelConfigParam;
81
+ if (!configParamName) {
82
+ (0, core_1.LogError)(`ConfigParam parallelization specified but ParallelConfigParam is not set for prompt "${prompt.Name}"`);
83
+ return this.createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId);
84
+ }
85
+ const parallelCount = this.getConfigurationParameter(configParamName, configurationId) || 1;
86
+ (0, core_1.LogStatus)(`ConfigParam parallelization: ${configParamName} = ${parallelCount}`);
87
+ if (parallelCount <= 1) {
88
+ return this.createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId);
89
+ }
90
+ const tasks = [];
91
+ const availableModels = this.getAvailableModels(prompt, promptModels, allModels, configurationId);
92
+ if (availableModels.length === 0) {
93
+ (0, core_1.LogError)(`No suitable models found for prompt "${prompt.Name}"`);
94
+ return [];
95
+ }
96
+ for (let i = 0; i < parallelCount; i++) {
97
+ const modelIndex = i % availableModels.length;
98
+ const selectedModel = availableModels[modelIndex];
99
+ const promptModel = promptModels.find(pm => pm.ModelID === selectedModel.ID);
100
+ const task = {
101
+ taskId: (0, uuid_1.v4)(),
102
+ prompt,
103
+ model: selectedModel,
104
+ promptModel,
105
+ executionGroup: 0,
106
+ priority: promptModel?.Priority || 0,
107
+ renderedPrompt,
108
+ contextUser,
109
+ configurationId,
110
+ modelParameters: this.parseModelParameters(promptModel?.ModelParameters)
111
+ };
112
+ tasks.push(task);
113
+ }
114
+ (0, core_1.LogStatus)(`Created ConfigParam execution plan with ${tasks.length} parallel tasks`);
115
+ return tasks;
116
+ }
117
+ createModelSpecificPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId) {
118
+ const tasks = [];
119
+ const activePromptModels = promptModels.filter(pm => pm.Status === 'Active' || pm.Status === 'Preview');
120
+ if (activePromptModels.length === 0) {
121
+ (0, core_1.LogError)(`No active prompt models found for ModelSpecific parallelization of prompt "${prompt.Name}"`);
122
+ return this.createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId);
123
+ }
124
+ for (const promptModel of activePromptModels) {
125
+ const model = allModels.find(m => m.ID === promptModel.ModelID && m.IsActive);
126
+ if (!model) {
127
+ (0, core_1.LogError)(`Model ${promptModel.ModelID} not found or inactive for prompt "${prompt.Name}"`);
128
+ continue;
129
+ }
130
+ const parallelCount = this.getModelParallelCount(promptModel);
131
+ for (let i = 0; i < parallelCount; i++) {
132
+ const task = {
133
+ taskId: (0, uuid_1.v4)(),
134
+ prompt,
135
+ model,
136
+ promptModel,
137
+ executionGroup: promptModel.ExecutionGroup,
138
+ priority: promptModel.Priority,
139
+ renderedPrompt,
140
+ contextUser,
141
+ configurationId,
142
+ modelParameters: this.parseModelParameters(promptModel.ModelParameters)
143
+ };
144
+ tasks.push(task);
145
+ }
146
+ }
147
+ (0, core_1.LogStatus)(`Created ModelSpecific execution plan with ${tasks.length} tasks across ${new Set(tasks.map(t => t.executionGroup)).size} execution groups`);
148
+ return tasks;
149
+ }
150
+ selectBestModel(prompt, promptModels, allModels, configurationId) {
151
+ const availablePromptModels = promptModels.filter(pm => (pm.Status === 'Active' || pm.Status === 'Preview') &&
152
+ (!configurationId || !pm.ConfigurationID || pm.ConfigurationID === configurationId));
153
+ if (availablePromptModels.length > 0) {
154
+ availablePromptModels.sort((a, b) => b.Priority - a.Priority);
155
+ const selectedPromptModel = availablePromptModels[0];
156
+ const model = allModels.find(m => m.ID === selectedPromptModel.ModelID && m.IsActive);
157
+ if (model) {
158
+ return model;
159
+ }
160
+ }
161
+ const candidateModels = allModels.filter(m => m.IsActive &&
162
+ (m.PowerRank >= (prompt.MinPowerRank || 0)) &&
163
+ (!prompt.AIModelTypeID || m.AIModelTypeID === prompt.AIModelTypeID));
164
+ if (candidateModels.length === 0) {
165
+ return null;
166
+ }
167
+ switch (prompt.PowerPreference) {
168
+ case 'Highest':
169
+ candidateModels.sort((a, b) => b.PowerRank - a.PowerRank);
170
+ break;
171
+ case 'Lowest':
172
+ candidateModels.sort((a, b) => a.PowerRank - b.PowerRank);
173
+ break;
174
+ case 'Balanced':
175
+ default:
176
+ candidateModels.sort((a, b) => b.PowerRank - a.PowerRank);
177
+ break;
178
+ }
179
+ return candidateModels[0];
180
+ }
181
+ getAvailableModels(prompt, promptModels, allModels, configurationId) {
182
+ const availablePromptModels = promptModels.filter(pm => (pm.Status === 'Active' || pm.Status === 'Preview') &&
183
+ (!configurationId || !pm.ConfigurationID || pm.ConfigurationID === configurationId));
184
+ if (availablePromptModels.length > 0) {
185
+ const models = availablePromptModels
186
+ .map(pm => allModels.find(m => m.ID === pm.ModelID && m.IsActive))
187
+ .filter(m => m !== undefined);
188
+ models.sort((a, b) => {
189
+ const aPriority = availablePromptModels.find(pm => pm.ModelID === a.ID)?.Priority || 0;
190
+ const bPriority = availablePromptModels.find(pm => pm.ModelID === b.ID)?.Priority || 0;
191
+ return bPriority - aPriority;
192
+ });
193
+ return models;
194
+ }
195
+ return allModels.filter(m => m.IsActive &&
196
+ (m.PowerRank >= (prompt.MinPowerRank || 0)) &&
197
+ (!prompt.AIModelTypeID || m.AIModelTypeID === prompt.AIModelTypeID));
198
+ }
199
+ getModelParallelCount(promptModel) {
200
+ switch (promptModel.ParallelizationMode) {
201
+ case 'StaticCount':
202
+ return promptModel.ParallelCount || 1;
203
+ case 'ConfigParam':
204
+ const configValue = this.getConfigurationParameter(promptModel.ParallelConfigParam, null);
205
+ return configValue || 1;
206
+ case 'None':
207
+ default:
208
+ return 1;
209
+ }
210
+ }
211
+ getConfigurationParameter(paramName, _configurationId) {
212
+ if (!paramName) {
213
+ return null;
214
+ }
215
+ (0, core_1.LogStatus)(`Configuration parameter lookup not yet implemented: ${paramName}`);
216
+ return 2;
217
+ }
218
+ parseModelParameters(modelParametersJson) {
219
+ if (!modelParametersJson) {
220
+ return undefined;
221
+ }
222
+ try {
223
+ return JSON.parse(modelParametersJson);
224
+ }
225
+ catch (error) {
226
+ (0, core_1.LogError)(`Failed to parse model parameters JSON: ${error.message}`);
227
+ return undefined;
228
+ }
229
+ }
230
+ }
231
+ exports.ExecutionPlanner = ExecutionPlanner;
232
+ //# sourceMappingURL=ExecutionPlanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecutionPlanner.js","sourceRoot":"","sources":["../src/ExecutionPlanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { AIPromptEntity, AIPromptModelEntity, AIModelEntityExtended, AIPromptRunEntity } from "@memberjunction/core-entities";
2
+ import { UserInfo, ValidationResult } from "@memberjunction/core";
3
+ import { ChatResult } from "@memberjunction/ai";
4
+ export interface ExecutionTask {
5
+ taskId: string;
6
+ prompt: AIPromptEntity;
7
+ model: AIModelEntityExtended;
8
+ promptModel?: AIPromptModelEntity;
9
+ executionGroup: number;
10
+ priority: number;
11
+ renderedPrompt: string;
12
+ contextUser?: UserInfo;
13
+ configurationId?: string;
14
+ modelParameters?: Record<string, any>;
15
+ }
16
+ export interface ExecutionTaskResult {
17
+ task: ExecutionTask;
18
+ success: boolean;
19
+ rawResult?: string;
20
+ parsedResult?: any;
21
+ errorMessage?: string;
22
+ promptRun?: AIPromptRunEntity;
23
+ executionTimeMS: number;
24
+ tokensUsed?: number;
25
+ validationResult?: ValidationResult;
26
+ modelResult?: ChatResult;
27
+ startTime: Date;
28
+ endTime: Date;
29
+ }
30
+ export interface ExecutionGroup {
31
+ groupNumber: number;
32
+ tasks: ExecutionTask[];
33
+ maxParallelExecutions?: number;
34
+ }
35
+ export interface ParallelExecutionConfig {
36
+ maxConcurrentExecutions: number;
37
+ taskTimeoutMS: number;
38
+ failFast: boolean;
39
+ collectPartialResults: boolean;
40
+ maxRetries: number;
41
+ retryDelayMS: number;
42
+ }
43
+ export interface ParallelExecutionResult {
44
+ success: boolean;
45
+ taskResults: ExecutionTaskResult[];
46
+ groupResults: Map<number, ExecutionTaskResult[]>;
47
+ totalExecutionTimeMS: number;
48
+ successCount: number;
49
+ failureCount: number;
50
+ totalTokensUsed: number;
51
+ errors: string[];
52
+ startTime: Date;
53
+ endTime: Date;
54
+ selectedResult?: ExecutionTaskResult;
55
+ }
56
+ export type ParallelizationStrategy = 'None' | 'StaticCount' | 'ConfigParam' | 'ModelSpecific';
57
+ export type ResultSelectionMethod = 'First' | 'Random' | 'PromptSelector' | 'Consensus';
58
+ export interface ResultSelectionConfig {
59
+ method: ResultSelectionMethod;
60
+ selectorPromptId?: string;
61
+ selectionParameters?: Record<string, any>;
62
+ }
63
+ //# sourceMappingURL=ParallelExecution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParallelExecution.d.ts","sourceRoot":"","sources":["../src/ParallelExecution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAC9H,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMhD,MAAM,WAAW,aAAa;IAE1B,MAAM,EAAE,MAAM,CAAC;IAGf,MAAM,EAAE,cAAc,CAAC;IAGvB,KAAK,EAAE,qBAAqB,CAAC;IAG7B,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAGlC,cAAc,EAAE,MAAM,CAAC;IAGvB,QAAQ,EAAE,MAAM,CAAC;IAGjB,cAAc,EAAE,MAAM,CAAC;IAGvB,WAAW,CAAC,EAAE,QAAQ,CAAC;IAGvB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzC;AAMD,MAAM,WAAW,mBAAmB;IAEhC,IAAI,EAAE,aAAa,CAAC;IAGpB,OAAO,EAAE,OAAO,CAAC;IAGjB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,YAAY,CAAC,EAAE,GAAG,CAAC;IAGnB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAG9B,eAAe,EAAE,MAAM,CAAC;IAGxB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAGpC,WAAW,CAAC,EAAE,UAAU,CAAC;IAGzB,SAAS,EAAE,IAAI,CAAC;IAGhB,OAAO,EAAE,IAAI,CAAC;CACjB;AAOD,MAAM,WAAW,cAAc;IAE3B,WAAW,EAAE,MAAM,CAAC;IAGpB,KAAK,EAAE,aAAa,EAAE,CAAC;IAGvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC;AAMD,MAAM,WAAW,uBAAuB;IAEpC,uBAAuB,EAAE,MAAM,CAAC;IAGhC,aAAa,EAAE,MAAM,CAAC;IAGtB,QAAQ,EAAE,OAAO,CAAC;IAGlB,qBAAqB,EAAE,OAAO,CAAC;IAG/B,UAAU,EAAE,MAAM,CAAC;IAGnB,YAAY,EAAE,MAAM,CAAC;CACxB;AAMD,MAAM,WAAW,uBAAuB;IAEpC,OAAO,EAAE,OAAO,CAAC;IAGjB,WAAW,EAAE,mBAAmB,EAAE,CAAC;IAGnC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAGjD,oBAAoB,EAAE,MAAM,CAAC;IAG7B,YAAY,EAAE,MAAM,CAAC;IAGrB,YAAY,EAAE,MAAM,CAAC;IAGrB,eAAe,EAAE,MAAM,CAAC;IAGxB,MAAM,EAAE,MAAM,EAAE,CAAC;IAGjB,SAAS,EAAE,IAAI,CAAC;IAGhB,OAAO,EAAE,IAAI,CAAC;IAGd,cAAc,CAAC,EAAE,mBAAmB,CAAC;CACxC;AAMD,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,aAAa,GAAG,aAAa,GAAG,eAAe,CAAC;AAM/F,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,QAAQ,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAMxF,MAAM,WAAW,qBAAqB;IAElC,MAAM,EAAE,qBAAqB,CAAC;IAG9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ParallelExecution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParallelExecution.js","sourceRoot":"","sources":["../src/ParallelExecution.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { ExecutionTask, ExecutionTaskResult, ParallelExecutionConfig, ParallelExecutionResult, ResultSelectionConfig } from "./ParallelExecution";
2
+ export declare class ParallelExecutionCoordinator {
3
+ private readonly _defaultConfig;
4
+ constructor();
5
+ executeTasksInParallel(tasks: ExecutionTask[], config?: Partial<ParallelExecutionConfig>): Promise<ParallelExecutionResult>;
6
+ selectBestResult(results: ExecutionTaskResult[], config: ResultSelectionConfig): Promise<ExecutionTaskResult | null>;
7
+ private groupTasksByExecutionGroup;
8
+ private executeGroupsSequentially;
9
+ private executeGroupInParallel;
10
+ private executeTask;
11
+ private executeSingleTask;
12
+ private aggregateResults;
13
+ private selectFirstResult;
14
+ private selectRandomResult;
15
+ private selectResultWithPrompt;
16
+ private selectConsensusResult;
17
+ private delay;
18
+ }
19
+ //# sourceMappingURL=ParallelExecutionCoordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParallelExecutionCoordinator.d.ts","sourceRoot":"","sources":["../src/ParallelExecutionCoordinator.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,aAAa,EACb,mBAAmB,EAEnB,uBAAuB,EACvB,uBAAuB,EAEvB,qBAAqB,EAExB,MAAM,qBAAqB,CAAC;AAY7B,qBAAa,4BAA4B;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B;;IA0B5C,sBAAsB,CAC/B,KAAK,EAAE,aAAa,EAAE,EACtB,MAAM,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAC1C,OAAO,CAAC,uBAAuB,CAAC;IA+CtB,gBAAgB,CACzB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,MAAM,EAAE,qBAAqB,GAC9B,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAqCtC,OAAO,CAAC,0BAA0B;YAsCpB,yBAAyB;YA8BzB,sBAAsB;YA2CtB,WAAW;YAoDX,iBAAiB;IA8D/B,OAAO,CAAC,gBAAgB;IAgDxB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,kBAAkB;YAYZ,sBAAsB;IAsBpC,OAAO,CAAC,qBAAqB;IA8B7B,OAAO,CAAC,KAAK;CAGhB"}
@@ -0,0 +1,262 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParallelExecutionCoordinator = void 0;
4
+ const core_1 = require("@memberjunction/core");
5
+ const global_1 = require("@memberjunction/global");
6
+ const ai_1 = require("@memberjunction/ai");
7
+ class ParallelExecutionCoordinator {
8
+ constructor() {
9
+ this._defaultConfig = {
10
+ maxConcurrentExecutions: 5,
11
+ taskTimeoutMS: 30000,
12
+ failFast: false,
13
+ collectPartialResults: true,
14
+ maxRetries: 3,
15
+ retryDelayMS: 1000
16
+ };
17
+ }
18
+ async executeTasksInParallel(tasks, config) {
19
+ const startTime = new Date();
20
+ const executionConfig = { ...this._defaultConfig, ...config };
21
+ (0, core_1.LogStatus)(`Starting parallel execution of ${tasks.length} tasks with config: ${JSON.stringify(executionConfig)}`);
22
+ try {
23
+ const executionGroups = this.groupTasksByExecutionGroup(tasks);
24
+ const allResults = await this.executeGroupsSequentially(executionGroups, executionConfig);
25
+ const result = this.aggregateResults(allResults, startTime, new Date());
26
+ (0, core_1.LogStatus)(`Parallel execution completed: ${result.successCount}/${tasks.length} tasks successful`);
27
+ return result;
28
+ }
29
+ catch (error) {
30
+ (0, core_1.LogError)(`Parallel execution failed: ${error.message}`);
31
+ return {
32
+ success: false,
33
+ taskResults: [],
34
+ groupResults: new Map(),
35
+ totalExecutionTimeMS: new Date().getTime() - startTime.getTime(),
36
+ successCount: 0,
37
+ failureCount: tasks.length,
38
+ totalTokensUsed: 0,
39
+ errors: [error.message],
40
+ startTime,
41
+ endTime: new Date()
42
+ };
43
+ }
44
+ }
45
+ async selectBestResult(results, config) {
46
+ if (results.length === 0) {
47
+ return null;
48
+ }
49
+ if (results.length === 1) {
50
+ return results[0];
51
+ }
52
+ (0, core_1.LogStatus)(`Selecting best result from ${results.length} candidates using method: ${config.method}`);
53
+ switch (config.method) {
54
+ case 'First':
55
+ return this.selectFirstResult(results);
56
+ case 'Random':
57
+ return this.selectRandomResult(results);
58
+ case 'PromptSelector':
59
+ return await this.selectResultWithPrompt(results, config.selectorPromptId);
60
+ case 'Consensus':
61
+ return this.selectConsensusResult(results);
62
+ default:
63
+ (0, core_1.LogError)(`Unknown result selection method: ${config.method}`);
64
+ return results[0];
65
+ }
66
+ }
67
+ groupTasksByExecutionGroup(tasks) {
68
+ const groupMap = new Map();
69
+ for (const task of tasks) {
70
+ const groupNumber = task.executionGroup;
71
+ if (!groupMap.has(groupNumber)) {
72
+ groupMap.set(groupNumber, []);
73
+ }
74
+ groupMap.get(groupNumber).push(task);
75
+ }
76
+ const groups = [];
77
+ for (const [groupNumber, groupTasks] of groupMap) {
78
+ groupTasks.sort((a, b) => b.priority - a.priority);
79
+ groups.push({
80
+ groupNumber,
81
+ tasks: groupTasks
82
+ });
83
+ }
84
+ groups.sort((a, b) => a.groupNumber - b.groupNumber);
85
+ (0, core_1.LogStatus)(`Grouped ${tasks.length} tasks into ${groups.length} execution groups`);
86
+ return groups;
87
+ }
88
+ async executeGroupsSequentially(groups, config) {
89
+ const allResults = [];
90
+ for (const group of groups) {
91
+ (0, core_1.LogStatus)(`Executing group ${group.groupNumber} with ${group.tasks.length} tasks`);
92
+ const groupResults = await this.executeGroupInParallel(group, config);
93
+ allResults.push(...groupResults);
94
+ if (config.failFast && groupResults.some(r => !r.success)) {
95
+ const failedTasks = groupResults.filter(r => !r.success);
96
+ (0, core_1.LogError)(`Failing fast due to ${failedTasks.length} failed tasks in group ${group.groupNumber}`);
97
+ break;
98
+ }
99
+ }
100
+ return allResults;
101
+ }
102
+ async executeGroupInParallel(group, config) {
103
+ const maxConcurrent = Math.min(config.maxConcurrentExecutions, group.tasks.length);
104
+ const results = [];
105
+ const executing = [];
106
+ let taskIndex = 0;
107
+ while (taskIndex < group.tasks.length || executing.length > 0) {
108
+ while (executing.length < maxConcurrent && taskIndex < group.tasks.length) {
109
+ const task = group.tasks[taskIndex++];
110
+ const execution = this.executeTask(task, config);
111
+ executing.push(execution);
112
+ }
113
+ if (executing.length > 0) {
114
+ const result = await Promise.race(executing);
115
+ results.push(result);
116
+ const completedIndex = executing.findIndex(p => p === Promise.resolve(result));
117
+ if (completedIndex !== -1) {
118
+ executing.splice(completedIndex, 1);
119
+ }
120
+ }
121
+ }
122
+ (0, core_1.LogStatus)(`Group ${group.groupNumber} completed: ${results.filter(r => r.success).length}/${results.length} successful`);
123
+ return results;
124
+ }
125
+ async executeTask(task, config) {
126
+ const startTime = new Date();
127
+ let lastError = null;
128
+ for (let attempt = 0; attempt <= config.maxRetries; attempt++) {
129
+ try {
130
+ if (attempt > 0) {
131
+ await this.delay(config.retryDelayMS * attempt);
132
+ (0, core_1.LogStatus)(`Retrying task ${task.taskId}, attempt ${attempt + 1}/${config.maxRetries + 1}`);
133
+ }
134
+ const result = await this.executeSingleTask(task, config.taskTimeoutMS);
135
+ result.startTime = startTime;
136
+ result.endTime = new Date();
137
+ return result;
138
+ }
139
+ catch (error) {
140
+ lastError = error;
141
+ (0, core_1.LogError)(`Task ${task.taskId} attempt ${attempt + 1} failed: ${error.message}`);
142
+ if (attempt === config.maxRetries) {
143
+ break;
144
+ }
145
+ }
146
+ }
147
+ const endTime = new Date();
148
+ return {
149
+ task,
150
+ success: false,
151
+ errorMessage: lastError?.message || 'Unknown error',
152
+ executionTimeMS: endTime.getTime() - startTime.getTime(),
153
+ startTime,
154
+ endTime
155
+ };
156
+ }
157
+ async executeSingleTask(task, timeoutMS) {
158
+ const startTime = new Date();
159
+ try {
160
+ const apiKey = (0, ai_1.GetAIAPIKey)(task.model.DriverClass);
161
+ const llm = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(ai_1.BaseLLM, task.model.DriverClass, apiKey);
162
+ const params = new ai_1.ChatParams();
163
+ params.model = task.model.APIName;
164
+ params.messages = [
165
+ {
166
+ role: ai_1.ChatMessageRole.user,
167
+ content: task.renderedPrompt
168
+ }
169
+ ];
170
+ if (task.modelParameters) {
171
+ Object.assign(params, task.modelParameters);
172
+ }
173
+ const modelResult = await Promise.race([
174
+ llm.ChatCompletion(params),
175
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Task execution timeout')), timeoutMS))
176
+ ]);
177
+ const endTime = new Date();
178
+ const executionTimeMS = endTime.getTime() - startTime.getTime();
179
+ return {
180
+ task,
181
+ success: modelResult.success,
182
+ rawResult: modelResult.data?.choices?.[0]?.message?.content,
183
+ executionTimeMS,
184
+ tokensUsed: modelResult.data?.usage?.totalTokens,
185
+ modelResult,
186
+ startTime,
187
+ endTime
188
+ };
189
+ }
190
+ catch (error) {
191
+ const endTime = new Date();
192
+ throw new Error(`Task execution failed: ${error.message}`);
193
+ }
194
+ }
195
+ aggregateResults(taskResults, startTime, endTime) {
196
+ const groupResults = new Map();
197
+ const errors = [];
198
+ let totalTokensUsed = 0;
199
+ let successCount = 0;
200
+ for (const result of taskResults) {
201
+ const groupNumber = result.task.executionGroup;
202
+ if (!groupResults.has(groupNumber)) {
203
+ groupResults.set(groupNumber, []);
204
+ }
205
+ groupResults.get(groupNumber).push(result);
206
+ if (result.success) {
207
+ successCount++;
208
+ totalTokensUsed += result.tokensUsed || 0;
209
+ }
210
+ else {
211
+ if (result.errorMessage) {
212
+ errors.push(result.errorMessage);
213
+ }
214
+ }
215
+ }
216
+ return {
217
+ success: successCount > 0,
218
+ taskResults,
219
+ groupResults,
220
+ totalExecutionTimeMS: endTime.getTime() - startTime.getTime(),
221
+ successCount,
222
+ failureCount: taskResults.length - successCount,
223
+ totalTokensUsed,
224
+ errors,
225
+ startTime,
226
+ endTime
227
+ };
228
+ }
229
+ selectFirstResult(results) {
230
+ return results[0];
231
+ }
232
+ selectRandomResult(results) {
233
+ const randomIndex = Math.floor(Math.random() * results.length);
234
+ return results[randomIndex];
235
+ }
236
+ async selectResultWithPrompt(results, selectorPromptId) {
237
+ (0, core_1.LogStatus)(`AI-based result selection not yet implemented, returning first result`);
238
+ return results[0];
239
+ }
240
+ selectConsensusResult(results) {
241
+ const resultGroups = new Map();
242
+ for (const result of results) {
243
+ const key = result.rawResult || '';
244
+ if (!resultGroups.has(key)) {
245
+ resultGroups.set(key, []);
246
+ }
247
+ resultGroups.get(key).push(result);
248
+ }
249
+ let largestGroup = [];
250
+ for (const group of resultGroups.values()) {
251
+ if (group.length > largestGroup.length) {
252
+ largestGroup = group;
253
+ }
254
+ }
255
+ return largestGroup[0];
256
+ }
257
+ delay(ms) {
258
+ return new Promise(resolve => setTimeout(resolve, ms));
259
+ }
260
+ }
261
+ exports.ParallelExecutionCoordinator = ParallelExecutionCoordinator;
262
+ //# sourceMappingURL=ParallelExecutionCoordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParallelExecutionCoordinator.js","sourceRoot":"","sources":["../src/ParallelExecutionCoordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './AIPromptCategoryExtended';
2
+ export * from './AIPromptRunner';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC"}