@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.
- package/README.md +639 -0
- package/dist/AIPromptCategoryExtended.d.ts +6 -0
- package/dist/AIPromptCategoryExtended.d.ts.map +1 -0
- package/dist/AIPromptCategoryExtended.js +26 -0
- package/dist/AIPromptCategoryExtended.js.map +1 -0
- package/dist/AIPromptRunner.d.ts +41 -0
- package/dist/AIPromptRunner.d.ts.map +1 -0
- package/dist/AIPromptRunner.js +414 -0
- package/dist/AIPromptRunner.js.map +1 -0
- package/dist/ExecutionPlanner.d.ts +16 -0
- package/dist/ExecutionPlanner.d.ts.map +1 -0
- package/dist/ExecutionPlanner.js +232 -0
- package/dist/ExecutionPlanner.js.map +1 -0
- package/dist/ParallelExecution.d.ts +63 -0
- package/dist/ParallelExecution.d.ts.map +1 -0
- package/dist/ParallelExecution.js +3 -0
- package/dist/ParallelExecution.js.map +1 -0
- package/dist/ParallelExecutionCoordinator.d.ts +19 -0
- package/dist/ParallelExecutionCoordinator.d.ts.map +1 -0
- package/dist/ParallelExecutionCoordinator.js +262 -0
- package/dist/ParallelExecutionCoordinator.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/package.json +32 -0
|
@@ -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 @@
|
|
|
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":";;;AAAA,+CAAuF;AACvF,mDAAkD;AAClD,2CAAmG;AAuBnG,MAAa,4BAA4B;IAMrC;QACI,IAAI,CAAC,cAAc,GAAG;YAClB,uBAAuB,EAAE,CAAC;YAC1B,aAAa,EAAE,KAAK;YACpB,QAAQ,EAAE,KAAK;YACf,qBAAqB,EAAE,IAAI;YAC3B,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,IAAI;SACrB,CAAC;IACN,CAAC;IAYM,KAAK,CAAC,sBAAsB,CAC/B,KAAsB,EACtB,MAAyC;QAEzC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAE9D,IAAA,gBAAS,EAAC,kCAAkC,KAAK,CAAC,MAAM,uBAAuB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAElH,IAAI,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;YAG/D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;YAG1F,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAExE,IAAA,gBAAS,EAAC,iCAAiC,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM,mBAAmB,CAAC,CAAC;YACnG,OAAO,MAAM,CAAC;QAElB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAA,eAAQ,EAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAExD,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,EAAE;gBACf,YAAY,EAAE,IAAI,GAAG,EAAE;gBACvB,oBAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE;gBAChE,YAAY,EAAE,CAAC;gBACf,YAAY,EAAE,KAAK,CAAC,MAAM;gBAC1B,eAAe,EAAE,CAAC;gBAClB,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;gBACvB,SAAS;gBACT,OAAO,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC;QACN,CAAC;IACL,CAAC;IAYM,KAAK,CAAC,gBAAgB,CACzB,OAA8B,EAC9B,MAA6B;QAE7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QAED,IAAA,gBAAS,EAAC,8BAA8B,OAAO,CAAC,MAAM,6BAA6B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAEpG,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,OAAO;gBACR,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAE3C,KAAK,QAAQ;gBACT,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAE5C,KAAK,gBAAgB;gBACjB,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAiB,CAAC,CAAC;YAEhF,KAAK,WAAW;gBACZ,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAE/C;gBACI,IAAA,eAAQ,EAAC,oCAAoC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC9D,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC;IASO,0BAA0B,CAAC,KAAsB;QACrD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;QAGpD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7B,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAClC,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QAGD,MAAM,MAAM,GAAqB,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,QAAQ,EAAE,CAAC;YAE/C,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;YAEnD,MAAM,CAAC,IAAI,CAAC;gBACR,WAAW;gBACX,KAAK,EAAE,UAAU;aACpB,CAAC,CAAC;QACP,CAAC;QAGD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;QAErD,IAAA,gBAAS,EAAC,WAAW,KAAK,CAAC,MAAM,eAAe,MAAM,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC;IAClB,CAAC;IASO,KAAK,CAAC,yBAAyB,CACnC,MAAwB,EACxB,MAA+B;QAE/B,MAAM,UAAU,GAA0B,EAAE,CAAC;QAE7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,IAAA,gBAAS,EAAC,mBAAmB,KAAK,CAAC,WAAW,SAAS,KAAK,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;YAEnF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACtE,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;YAGjC,IAAI,MAAM,CAAC,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxD,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACzD,IAAA,eAAQ,EAAC,uBAAuB,WAAW,CAAC,MAAM,0BAA0B,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;gBACjG,MAAM;YACV,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IASO,KAAK,CAAC,sBAAsB,CAChC,KAAqB,EACrB,MAA+B;QAE/B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,uBAAuB,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnF,MAAM,OAAO,GAA0B,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAmC,EAAE,CAAC;QAErD,IAAI,SAAS,GAAG,CAAC,CAAC;QAGlB,OAAO,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAE5D,OAAO,SAAS,CAAC,MAAM,GAAG,aAAa,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACxE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;gBACtC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACjD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,CAAC;YAGD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAGrB,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC/E,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;oBACxB,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;gBACxC,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAA,gBAAS,EAAC,SAAS,KAAK,CAAC,WAAW,eAAe,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,aAAa,CAAC,CAAC;QACzH,OAAO,OAAO,CAAC;IACnB,CAAC;IASO,KAAK,CAAC,WAAW,CACrB,IAAmB,EACnB,MAA+B;QAE/B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,SAAS,GAAiB,IAAI,CAAC;QAGnC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YAC5D,IAAI,CAAC;gBACD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;oBAEd,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,CAAC;oBAChD,IAAA,gBAAS,EAAC,iBAAiB,IAAI,CAAC,MAAM,aAAa,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/F,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;gBACxE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC7B,MAAM,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;gBAE5B,OAAO,MAAM,CAAC;YAElB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,SAAS,GAAG,KAAK,CAAC;gBAClB,IAAA,eAAQ,EAAC,QAAQ,IAAI,CAAC,MAAM,YAAY,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAGhF,IAAI,OAAO,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;oBAChC,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC;QAGD,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO;YACH,IAAI;YACJ,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,SAAS,EAAE,OAAO,IAAI,eAAe;YACnD,eAAe,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE;YACxD,SAAS;YACT,OAAO;SACV,CAAC;IACN,CAAC;IASO,KAAK,CAAC,iBAAiB,CAAC,IAAmB,EAAE,SAAiB;QAIlE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAE7B,IAAI,CAAC;YAED,MAAM,MAAM,GAAG,IAAA,gBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,GAAG,GAAG,iBAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAU,YAAO,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAG5G,MAAM,MAAM,GAAG,IAAI,eAAU,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAClC,MAAM,CAAC,QAAQ,GAAG;gBACd;oBACI,IAAI,EAAE,oBAAe,CAAC,IAAI;oBAC1B,OAAO,EAAE,IAAI,CAAC,cAAc;iBAC/B;aACJ,CAAC;YAGF,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAChD,CAAC;YAGD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBACnC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC;gBAC1B,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC7B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,EAAE,SAAS,CAAC,CAC3E;aACJ,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAC3B,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;YAEhE,OAAO;gBACH,IAAI;gBACJ,OAAO,EAAE,WAAW,CAAC,OAAO;gBAC5B,SAAS,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO;gBAC3D,eAAe;gBACf,UAAU,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW;gBAChD,WAAW;gBACX,SAAS;gBACT,OAAO;aACV,CAAC;QAEN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;IAUO,gBAAgB,CACpB,WAAkC,EAClC,SAAe,EACf,OAAa;QAEb,MAAM,YAAY,GAAG,IAAI,GAAG,EAAiC,CAAC;QAC9D,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,YAAY,GAAG,CAAC,CAAC;QAGrB,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;YAC/C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACtC,CAAC;YACD,YAAY,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE5C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,YAAY,EAAE,CAAC;gBACf,eAAe,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACJ,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBACrC,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO;YACH,OAAO,EAAE,YAAY,GAAG,CAAC;YACzB,WAAW;YACX,YAAY;YACZ,oBAAoB,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE;YAC7D,YAAY;YACZ,YAAY,EAAE,WAAW,CAAC,MAAM,GAAG,YAAY;YAC/C,eAAe;YACf,MAAM;YACN,SAAS;YACT,OAAO;SACV,CAAC;IACN,CAAC;IAQO,iBAAiB,CAAC,OAA8B;QACpD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAQO,kBAAkB,CAAC,OAA8B;QACrD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/D,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IASO,KAAK,CAAC,sBAAsB,CAChC,OAA8B,EAC9B,gBAAwB;QAUxB,IAAA,gBAAS,EAAC,uEAAuE,CAAC,CAAC;QACnF,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAQO,qBAAqB,CAAC,OAA8B;QAExD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAiC,CAAC;QAE9D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC9B,CAAC;YACD,YAAY,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QAGD,IAAI,YAAY,GAA0B,EAAE,CAAC;QAC7C,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;gBACrC,YAAY,GAAG,KAAK,CAAC;YACzB,CAAC;QACL,CAAC;QAGD,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAQO,KAAK,CAAC,EAAU;QACpB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;CACJ;AAndD,oEAmdC"}
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|