@memberjunction/ai-prompts 3.4.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,19 +1,134 @@
1
1
  import { UserInfo } from '@memberjunction/core';
2
2
  import { AIPromptModelEntity } from '@memberjunction/core-entities';
3
- import { ExecutionTask } from './ParallelExecution';
3
+ import { ExecutionTask } from './ParallelExecution.js';
4
4
  import { ChatMessage } from '@memberjunction/ai';
5
5
  import { AIModelEntityExtended, AIPromptEntityExtended, TemplateMessageRole } from '@memberjunction/ai-core-plus';
6
+ /**
7
+ * Plans and organizes execution tasks for AI prompts based on parallelization configuration.
8
+ *
9
+ * This class analyzes prompt configuration and creates execution plans that determine:
10
+ * - Which models to use
11
+ * - How many parallel executions to perform
12
+ * - How to group executions for coordination
13
+ * - Priority and ordering of tasks
14
+ */
6
15
  export declare class ExecutionPlanner {
16
+ /**
17
+ * Creates an execution plan for a prompt based on its parallelization configuration.
18
+ *
19
+ * Analyzes the prompt's ParallelizationMode and associated models to determine
20
+ * the optimal execution strategy and task distribution.
21
+ *
22
+ * @param prompt - The AI prompt to create an execution plan for
23
+ * @param promptModels - Associated model configurations for this prompt
24
+ * @param allModels - All available AI models in the system
25
+ * @param renderedPrompt - The rendered prompt text ready for execution
26
+ * @param contextUser - User context for authentication and permissions
27
+ * @param configurationId - Optional configuration ID for environment-specific behavior
28
+ * @returns ExecutionTask[] - Array of execution tasks to be processed
29
+ */
7
30
  createExecutionPlan(prompt: AIPromptEntityExtended, promptModels: AIPromptModelEntity[], allModels: AIModelEntityExtended[], renderedPrompt: string, contextUser?: UserInfo, configurationId?: string, conversationMessages?: ChatMessage[], templateMessageRole?: TemplateMessageRole): ExecutionTask[];
31
+ /**
32
+ * Creates a single execution task (no parallelization).
33
+ *
34
+ * Selects the best model based on prompt configuration and creates a single task.
35
+ *
36
+ * @param prompt - The AI prompt to execute
37
+ * @param promptModels - Associated model configurations
38
+ * @param allModels - All available models
39
+ * @param renderedPrompt - Rendered prompt text
40
+ * @param contextUser - User context
41
+ * @param configurationId - Configuration ID
42
+ * @returns ExecutionTask[] - Array containing single execution task
43
+ */
8
44
  private createSingleExecutionPlan;
45
+ /**
46
+ * Creates execution tasks based on a static count of parallel executions.
47
+ *
48
+ * Uses the ParallelCount field to determine how many parallel executions to create.
49
+ *
50
+ * @param prompt - The AI prompt to execute
51
+ * @param promptModels - Associated model configurations
52
+ * @param allModels - All available models
53
+ * @param renderedPrompt - Rendered prompt text
54
+ * @param contextUser - User context
55
+ * @param configurationId - Configuration ID
56
+ * @returns ExecutionTask[] - Array of execution tasks for parallel processing
57
+ */
9
58
  private createStaticCountPlan;
59
+ /**
60
+ * Creates execution tasks based on a configuration parameter.
61
+ *
62
+ * Looks up the parallel count from a configuration parameter specified in ParallelConfigParam.
63
+ *
64
+ * @param prompt - The AI prompt to execute
65
+ * @param promptModels - Associated model configurations
66
+ * @param allModels - All available models
67
+ * @param renderedPrompt - Rendered prompt text
68
+ * @param contextUser - User context
69
+ * @param configurationId - Configuration ID
70
+ * @returns ExecutionTask[] - Array of execution tasks for parallel processing
71
+ */
10
72
  private createConfigParamPlan;
73
+ /**
74
+ * Creates execution tasks based on model-specific parallelization settings.
75
+ *
76
+ * Uses individual AIPromptModel configurations to determine execution groups and parallel counts.
77
+ *
78
+ * @param prompt - The AI prompt to execute
79
+ * @param promptModels - Associated model configurations
80
+ * @param allModels - All available models
81
+ * @param renderedPrompt - Rendered prompt text
82
+ * @param contextUser - User context
83
+ * @param configurationId - Configuration ID
84
+ * @returns ExecutionTask[] - Array of execution tasks organized by execution groups
85
+ */
11
86
  private createModelSpecificPlan;
87
+ /**
88
+ * Selects the best model based on prompt configuration and available models.
89
+ *
90
+ * @param prompt - The AI prompt requiring a model
91
+ * @param promptModels - Associated model configurations
92
+ * @param allModels - All available models
93
+ * @param configurationId - Configuration ID
94
+ * @returns AIModelEntityExtended | null - The selected model or null if none suitable
95
+ */
12
96
  private selectBestModel;
97
+ /**
98
+ * Gets all available models for a prompt considering configuration constraints.
99
+ *
100
+ * @param prompt - The AI prompt
101
+ * @param promptModels - Associated model configurations
102
+ * @param allModels - All available models
103
+ * @param configurationId - Configuration ID
104
+ * @returns AIModelEntityExtended[] - Array of suitable models
105
+ */
13
106
  private getAvailableModels;
107
+ /**
108
+ * Determines the parallel count for a specific model configuration.
109
+ *
110
+ * @param promptModel - The prompt model configuration
111
+ * @returns number - Number of parallel executions for this model
112
+ */
14
113
  private getModelParallelCount;
114
+ /**
115
+ * Looks up a configuration parameter value.
116
+ *
117
+ * @param paramName - Name of the configuration parameter
118
+ * @param configurationId - Configuration context ID
119
+ * @returns number | null - The parameter value or null if not found
120
+ */
15
121
  private getConfigurationParameter;
122
+ /**
123
+ * Parses model parameters from JSON string.
124
+ *
125
+ * @param modelParametersJson - JSON string containing model parameters
126
+ * @returns Record<string, any> | undefined - Parsed parameters or undefined
127
+ */
16
128
  private parseModelParameters;
129
+ /**
130
+ * Selects vendor information for a model, preferring inference providers
131
+ */
17
132
  private selectVendorForModel;
18
133
  }
19
134
  //# sourceMappingURL=ExecutionPlanner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionPlanner.d.ts","sourceRoot":"","sources":["../src/ExecutionPlanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,aAAa,EAA2B,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAclH,qBAAa,gBAAgB;IAepB,mBAAmB,CACxB,MAAM,EAAE,sBAAsB,EAC9B,YAAY,EAAE,mBAAmB,EAAE,EACnC,SAAS,EAAE,qBAAqB,EAAE,EAClC,cAAc,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,QAAQ,EACtB,eAAe,CAAC,EAAE,MAAM,EACxB,oBAAoB,CAAC,EAAE,WAAW,EAAE,EACpC,mBAAmB,GAAE,mBAA8B,GAClD,aAAa,EAAE;IAkFlB,OAAO,CAAC,yBAAyB;IAuDjC,OAAO,CAAC,qBAAqB;IAuE7B,OAAO,CAAC,qBAAqB;IAiF7B,OAAO,CAAC,uBAAuB;IAoE/B,OAAO,CAAC,eAAe;IAyDvB,OAAO,CAAC,kBAAkB;IAsC1B,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,yBAAyB;IA4DjC,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,oBAAoB;CAwC7B"}
1
+ {"version":3,"file":"ExecutionPlanner.d.ts","sourceRoot":"","sources":["../src/ExecutionPlanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,aAAa,EAA2B,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAKlH;;;;;;;;GAQG;AACH,qBAAa,gBAAgB;IAC3B;;;;;;;;;;;;;OAaG;IACI,mBAAmB,CACxB,MAAM,EAAE,sBAAsB,EAC9B,YAAY,EAAE,mBAAmB,EAAE,EACnC,SAAS,EAAE,qBAAqB,EAAE,EAClC,cAAc,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,QAAQ,EACtB,eAAe,CAAC,EAAE,MAAM,EACxB,oBAAoB,CAAC,EAAE,WAAW,EAAE,EACpC,mBAAmB,GAAE,mBAA8B,GAClD,aAAa,EAAE;IAqElB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,yBAAyB;IA0CjC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,qBAAqB;IA0D7B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,qBAAqB;IAoE7B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,uBAAuB;IA2D/B;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAgDvB;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IAsDjC;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAwC7B"}
@@ -1,13 +1,33 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExecutionPlanner = void 0;
4
- const core_1 = require("@memberjunction/core");
5
- const ai_engine_base_1 = require("@memberjunction/ai-engine-base");
6
- const aiengine_1 = require("@memberjunction/aiengine");
7
- const uuid_1 = require("uuid");
8
- class ExecutionPlanner {
1
+ import { LogError, LogStatus } from '@memberjunction/core';
2
+ import { AIEngineBase } from '@memberjunction/ai-engine-base';
3
+ import { AIEngine } from '@memberjunction/aiengine';
4
+ import { v4 as uuidv4 } from 'uuid';
5
+ /**
6
+ * Plans and organizes execution tasks for AI prompts based on parallelization configuration.
7
+ *
8
+ * This class analyzes prompt configuration and creates execution plans that determine:
9
+ * - Which models to use
10
+ * - How many parallel executions to perform
11
+ * - How to group executions for coordination
12
+ * - Priority and ordering of tasks
13
+ */
14
+ export class ExecutionPlanner {
15
+ /**
16
+ * Creates an execution plan for a prompt based on its parallelization configuration.
17
+ *
18
+ * Analyzes the prompt's ParallelizationMode and associated models to determine
19
+ * the optimal execution strategy and task distribution.
20
+ *
21
+ * @param prompt - The AI prompt to create an execution plan for
22
+ * @param promptModels - Associated model configurations for this prompt
23
+ * @param allModels - All available AI models in the system
24
+ * @param renderedPrompt - The rendered prompt text ready for execution
25
+ * @param contextUser - User context for authentication and permissions
26
+ * @param configurationId - Optional configuration ID for environment-specific behavior
27
+ * @returns ExecutionTask[] - Array of execution tasks to be processed
28
+ */
9
29
  createExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole = 'system') {
10
- (0, core_1.LogStatus)(`Creating execution plan for prompt "${prompt.Name}" with parallelization mode: ${prompt.ParallelizationMode}`);
30
+ LogStatus(`Creating execution plan for prompt "${prompt.Name}" with parallelization mode: ${prompt.ParallelizationMode}`);
11
31
  const strategy = prompt.ParallelizationMode;
12
32
  switch (strategy) {
13
33
  case 'None':
@@ -19,20 +39,33 @@ class ExecutionPlanner {
19
39
  case 'ModelSpecific':
20
40
  return this.createModelSpecificPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole);
21
41
  default:
22
- (0, core_1.LogError)(`Unknown parallelization strategy: ${strategy}, falling back to single execution`);
42
+ LogError(`Unknown parallelization strategy: ${strategy}, falling back to single execution`);
23
43
  return this.createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole);
24
44
  }
25
45
  }
46
+ /**
47
+ * Creates a single execution task (no parallelization).
48
+ *
49
+ * Selects the best model based on prompt configuration and creates a single task.
50
+ *
51
+ * @param prompt - The AI prompt to execute
52
+ * @param promptModels - Associated model configurations
53
+ * @param allModels - All available models
54
+ * @param renderedPrompt - Rendered prompt text
55
+ * @param contextUser - User context
56
+ * @param configurationId - Configuration ID
57
+ * @returns ExecutionTask[] - Array containing single execution task
58
+ */
26
59
  createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole = 'system') {
27
60
  const selectedModel = this.selectBestModel(prompt, promptModels, allModels, configurationId);
28
61
  if (!selectedModel) {
29
- (0, core_1.LogError)(`No suitable model found for prompt "${prompt.Name}"`);
62
+ LogError(`No suitable model found for prompt "${prompt.Name}"`);
30
63
  return [];
31
64
  }
32
65
  const promptModel = promptModels.find((pm) => pm.ModelID === selectedModel.ID);
33
66
  const vendorInfo = this.selectVendorForModel(selectedModel);
34
67
  const task = {
35
- taskId: (0, uuid_1.v4)(),
68
+ taskId: uuidv4(),
36
69
  prompt,
37
70
  model: selectedModel,
38
71
  promptModel,
@@ -48,32 +81,46 @@ class ExecutionPlanner {
48
81
  vendorDriverClass: vendorInfo.vendorDriverClass,
49
82
  vendorApiName: vendorInfo.vendorApiName,
50
83
  };
51
- (0, core_1.LogStatus)(`Created single execution plan with model: ${selectedModel.Name}`);
84
+ LogStatus(`Created single execution plan with model: ${selectedModel.Name}`);
52
85
  return [task];
53
86
  }
87
+ /**
88
+ * Creates execution tasks based on a static count of parallel executions.
89
+ *
90
+ * Uses the ParallelCount field to determine how many parallel executions to create.
91
+ *
92
+ * @param prompt - The AI prompt to execute
93
+ * @param promptModels - Associated model configurations
94
+ * @param allModels - All available models
95
+ * @param renderedPrompt - Rendered prompt text
96
+ * @param contextUser - User context
97
+ * @param configurationId - Configuration ID
98
+ * @returns ExecutionTask[] - Array of execution tasks for parallel processing
99
+ */
54
100
  createStaticCountPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole = 'system') {
55
101
  const parallelCount = prompt.ParallelCount || 1;
56
102
  if (parallelCount <= 1) {
57
- (0, core_1.LogStatus)(`StaticCount parallelization with count ${parallelCount}, falling back to single execution`);
103
+ LogStatus(`StaticCount parallelization with count ${parallelCount}, falling back to single execution`);
58
104
  return this.createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole);
59
105
  }
60
106
  const tasks = [];
61
107
  const availableModels = this.getAvailableModels(prompt, promptModels, allModels, configurationId);
62
108
  if (availableModels.length === 0) {
63
- (0, core_1.LogError)(`No suitable models found for prompt "${prompt.Name}"`);
109
+ LogError(`No suitable models found for prompt "${prompt.Name}"`);
64
110
  return [];
65
111
  }
112
+ // Create tasks by cycling through available models
66
113
  for (let i = 0; i < parallelCount; i++) {
67
114
  const modelIndex = i % availableModels.length;
68
115
  const selectedModel = availableModels[modelIndex];
69
116
  const promptModel = promptModels.find((pm) => pm.ModelID === selectedModel.ID);
70
117
  const vendorInfo = this.selectVendorForModel(selectedModel);
71
118
  const task = {
72
- taskId: (0, uuid_1.v4)(),
119
+ taskId: uuidv4(),
73
120
  prompt,
74
121
  model: selectedModel,
75
122
  promptModel,
76
- executionGroup: 0,
123
+ executionGroup: 0, // All in same group for true parallelization
77
124
  priority: promptModel?.Priority || 0,
78
125
  renderedPrompt,
79
126
  contextUser,
@@ -87,37 +134,53 @@ class ExecutionPlanner {
87
134
  };
88
135
  tasks.push(task);
89
136
  }
90
- (0, core_1.LogStatus)(`Created StaticCount execution plan with ${tasks.length} parallel tasks`);
137
+ LogStatus(`Created StaticCount execution plan with ${tasks.length} parallel tasks`);
91
138
  return tasks;
92
139
  }
140
+ /**
141
+ * Creates execution tasks based on a configuration parameter.
142
+ *
143
+ * Looks up the parallel count from a configuration parameter specified in ParallelConfigParam.
144
+ *
145
+ * @param prompt - The AI prompt to execute
146
+ * @param promptModels - Associated model configurations
147
+ * @param allModels - All available models
148
+ * @param renderedPrompt - Rendered prompt text
149
+ * @param contextUser - User context
150
+ * @param configurationId - Configuration ID
151
+ * @returns ExecutionTask[] - Array of execution tasks for parallel processing
152
+ */
93
153
  createConfigParamPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole = 'system') {
94
154
  const configParamName = prompt.ParallelConfigParam;
95
155
  if (!configParamName) {
96
- (0, core_1.LogError)(`ConfigParam parallelization specified but ParallelConfigParam is not set for prompt "${prompt.Name}"`);
156
+ LogError(`ConfigParam parallelization specified but ParallelConfigParam is not set for prompt "${prompt.Name}"`);
97
157
  return this.createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole);
98
158
  }
159
+ // Look up the configuration parameter to get the parallel count
99
160
  const parallelCount = this.getConfigurationParameter(configParamName, configurationId) || 1;
100
- (0, core_1.LogStatus)(`ConfigParam parallelization: ${configParamName} = ${parallelCount}`);
161
+ LogStatus(`ConfigParam parallelization: ${configParamName} = ${parallelCount}`);
162
+ // Create tasks using the resolved parallel count
101
163
  if (parallelCount <= 1) {
102
164
  return this.createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole);
103
165
  }
104
166
  const tasks = [];
105
167
  const availableModels = this.getAvailableModels(prompt, promptModels, allModels, configurationId);
106
168
  if (availableModels.length === 0) {
107
- (0, core_1.LogError)(`No suitable models found for prompt "${prompt.Name}"`);
169
+ LogError(`No suitable models found for prompt "${prompt.Name}"`);
108
170
  return [];
109
171
  }
172
+ // Create tasks by cycling through available models
110
173
  for (let i = 0; i < parallelCount; i++) {
111
174
  const modelIndex = i % availableModels.length;
112
175
  const selectedModel = availableModels[modelIndex];
113
176
  const promptModel = promptModels.find((pm) => pm.ModelID === selectedModel.ID);
114
177
  const vendorInfo = this.selectVendorForModel(selectedModel);
115
178
  const task = {
116
- taskId: (0, uuid_1.v4)(),
179
+ taskId: uuidv4(),
117
180
  prompt,
118
181
  model: selectedModel,
119
182
  promptModel,
120
- executionGroup: 0,
183
+ executionGroup: 0, // All in same group for true parallelization
121
184
  priority: promptModel?.Priority || 0,
122
185
  renderedPrompt,
123
186
  contextUser,
@@ -131,27 +194,42 @@ class ExecutionPlanner {
131
194
  };
132
195
  tasks.push(task);
133
196
  }
134
- (0, core_1.LogStatus)(`Created ConfigParam execution plan with ${tasks.length} parallel tasks`);
197
+ LogStatus(`Created ConfigParam execution plan with ${tasks.length} parallel tasks`);
135
198
  return tasks;
136
199
  }
200
+ /**
201
+ * Creates execution tasks based on model-specific parallelization settings.
202
+ *
203
+ * Uses individual AIPromptModel configurations to determine execution groups and parallel counts.
204
+ *
205
+ * @param prompt - The AI prompt to execute
206
+ * @param promptModels - Associated model configurations
207
+ * @param allModels - All available models
208
+ * @param renderedPrompt - Rendered prompt text
209
+ * @param contextUser - User context
210
+ * @param configurationId - Configuration ID
211
+ * @returns ExecutionTask[] - Array of execution tasks organized by execution groups
212
+ */
137
213
  createModelSpecificPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole = 'system') {
138
214
  const tasks = [];
139
215
  const activePromptModels = promptModels.filter((pm) => pm.Status === 'Active' || pm.Status === 'Preview');
140
216
  if (activePromptModels.length === 0) {
141
- (0, core_1.LogError)(`No active prompt models found for ModelSpecific parallelization of prompt "${prompt.Name}"`);
217
+ LogError(`No active prompt models found for ModelSpecific parallelization of prompt "${prompt.Name}"`);
142
218
  return this.createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole);
143
219
  }
220
+ // Create tasks based on each prompt model's configuration
144
221
  for (const promptModel of activePromptModels) {
145
222
  const model = allModels.find((m) => m.ID === promptModel.ModelID && m.IsActive);
146
223
  if (!model) {
147
- (0, core_1.LogError)(`Model ${promptModel.ModelID} not found or inactive for prompt "${prompt.Name}"`);
224
+ LogError(`Model ${promptModel.ModelID} not found or inactive for prompt "${prompt.Name}"`);
148
225
  continue;
149
226
  }
150
227
  const parallelCount = this.getModelParallelCount(promptModel);
228
+ // Create multiple tasks for this model if parallel count > 1
151
229
  for (let i = 0; i < parallelCount; i++) {
152
230
  const vendorInfo = this.selectVendorForModel(model);
153
231
  const task = {
154
- taskId: (0, uuid_1.v4)(),
232
+ taskId: uuidv4(),
155
233
  prompt,
156
234
  model,
157
235
  promptModel,
@@ -170,12 +248,23 @@ class ExecutionPlanner {
170
248
  tasks.push(task);
171
249
  }
172
250
  }
173
- (0, core_1.LogStatus)(`Created ModelSpecific execution plan with ${tasks.length} tasks across ${new Set(tasks.map((t) => t.executionGroup)).size} execution groups`);
251
+ LogStatus(`Created ModelSpecific execution plan with ${tasks.length} tasks across ${new Set(tasks.map((t) => t.executionGroup)).size} execution groups`);
174
252
  return tasks;
175
253
  }
254
+ /**
255
+ * Selects the best model based on prompt configuration and available models.
256
+ *
257
+ * @param prompt - The AI prompt requiring a model
258
+ * @param promptModels - Associated model configurations
259
+ * @param allModels - All available models
260
+ * @param configurationId - Configuration ID
261
+ * @returns AIModelEntityExtended | null - The selected model or null if none suitable
262
+ */
176
263
  selectBestModel(prompt, promptModels, allModels, configurationId) {
264
+ // First try to use prompt-specific models
177
265
  const availablePromptModels = promptModels.filter((pm) => (pm.Status === 'Active' || pm.Status === 'Preview') && (!configurationId || !pm.ConfigurationID || pm.ConfigurationID === configurationId));
178
266
  if (availablePromptModels.length > 0) {
267
+ // Sort by priority and return the highest priority model
179
268
  availablePromptModels.sort((a, b) => b.Priority - a.Priority);
180
269
  const selectedPromptModel = availablePromptModels[0];
181
270
  const model = allModels.find((m) => m.ID === selectedPromptModel.ModelID && m.IsActive);
@@ -183,10 +272,12 @@ class ExecutionPlanner {
183
272
  return model;
184
273
  }
185
274
  }
275
+ // Fall back to automatic model selection
186
276
  const candidateModels = allModels.filter((m) => m.IsActive && m.PowerRank >= (prompt.MinPowerRank || 0) && (!prompt.AIModelTypeID || m.AIModelTypeID === prompt.AIModelTypeID));
187
277
  if (candidateModels.length === 0) {
188
278
  return null;
189
279
  }
280
+ // Sort by power preference
190
281
  switch (prompt.PowerPreference) {
191
282
  case 'Highest':
192
283
  candidateModels.sort((a, b) => b.PowerRank - a.PowerRank);
@@ -201,12 +292,23 @@ class ExecutionPlanner {
201
292
  }
202
293
  return candidateModels[0];
203
294
  }
295
+ /**
296
+ * Gets all available models for a prompt considering configuration constraints.
297
+ *
298
+ * @param prompt - The AI prompt
299
+ * @param promptModels - Associated model configurations
300
+ * @param allModels - All available models
301
+ * @param configurationId - Configuration ID
302
+ * @returns AIModelEntityExtended[] - Array of suitable models
303
+ */
204
304
  getAvailableModels(prompt, promptModels, allModels, configurationId) {
205
305
  const availablePromptModels = promptModels.filter((pm) => (pm.Status === 'Active' || pm.Status === 'Preview') && (!configurationId || !pm.ConfigurationID || pm.ConfigurationID === configurationId));
206
306
  if (availablePromptModels.length > 0) {
307
+ // Use prompt-specific models
207
308
  const models = availablePromptModels
208
309
  .map((pm) => allModels.find((m) => m.ID === pm.ModelID && m.IsActive))
209
310
  .filter((m) => m !== undefined);
311
+ // Sort by priority from prompt models
210
312
  models.sort((a, b) => {
211
313
  const aPriority = availablePromptModels.find((pm) => pm.ModelID === a.ID)?.Priority || 0;
212
314
  const bPriority = availablePromptModels.find((pm) => pm.ModelID === b.ID)?.Priority || 0;
@@ -214,8 +316,15 @@ class ExecutionPlanner {
214
316
  });
215
317
  return models;
216
318
  }
319
+ // Fall back to all suitable models
217
320
  return allModels.filter((m) => m.IsActive && m.PowerRank >= (prompt.MinPowerRank || 0) && (!prompt.AIModelTypeID || m.AIModelTypeID === prompt.AIModelTypeID));
218
321
  }
322
+ /**
323
+ * Determines the parallel count for a specific model configuration.
324
+ *
325
+ * @param promptModel - The prompt model configuration
326
+ * @returns number - Number of parallel executions for this model
327
+ */
219
328
  getModelParallelCount(promptModel) {
220
329
  switch (promptModel.ParallelizationMode) {
221
330
  case 'StaticCount':
@@ -229,49 +338,64 @@ class ExecutionPlanner {
229
338
  return 1;
230
339
  }
231
340
  }
341
+ /**
342
+ * Looks up a configuration parameter value.
343
+ *
344
+ * @param paramName - Name of the configuration parameter
345
+ * @param configurationId - Configuration context ID
346
+ * @returns number | null - The parameter value or null if not found
347
+ */
232
348
  getConfigurationParameter(paramName, configurationId) {
233
349
  if (!paramName) {
234
350
  return null;
235
351
  }
236
352
  if (!configurationId) {
237
- (0, core_1.LogStatus)(`No configuration ID provided for parameter lookup: ${paramName}`);
353
+ LogStatus(`No configuration ID provided for parameter lookup: ${paramName}`);
238
354
  return null;
239
355
  }
240
356
  try {
241
- const aiEngine = ai_engine_base_1.AIEngineBase.Instance;
357
+ const aiEngine = AIEngineBase.Instance;
242
358
  const configParam = aiEngine.GetConfigurationParam(configurationId, paramName);
243
359
  if (!configParam) {
244
- (0, core_1.LogStatus)(`Configuration parameter "${paramName}" not found in configuration "${configurationId}"`);
360
+ LogStatus(`Configuration parameter "${paramName}" not found in configuration "${configurationId}"`);
245
361
  return null;
246
362
  }
363
+ // Parse the value based on the Type
247
364
  let value = null;
248
365
  switch (configParam.Type) {
249
366
  case 'number':
250
367
  value = parseFloat(configParam.Value);
251
368
  if (isNaN(value)) {
252
- (0, core_1.LogError)(`Failed to parse number value for configuration parameter "${paramName}": ${configParam.Value}`);
369
+ LogError(`Failed to parse number value for configuration parameter "${paramName}": ${configParam.Value}`);
253
370
  return null;
254
371
  }
255
372
  break;
256
373
  case 'string':
374
+ // Try to parse string as number
257
375
  value = parseFloat(configParam.Value);
258
376
  if (isNaN(value)) {
259
- (0, core_1.LogError)(`Configuration parameter "${paramName}" is a string but expected a number: ${configParam.Value}`);
377
+ LogError(`Configuration parameter "${paramName}" is a string but expected a number: ${configParam.Value}`);
260
378
  return null;
261
379
  }
262
380
  break;
263
381
  default:
264
- (0, core_1.LogError)(`Unsupported data type for parallel count configuration parameter "${paramName}": ${configParam.Type}`);
382
+ LogError(`Unsupported data type for parallel count configuration parameter "${paramName}": ${configParam.Type}`);
265
383
  return null;
266
384
  }
267
- (0, core_1.LogStatus)(`Retrieved configuration parameter "${paramName}" = ${value} from configuration "${configurationId}"`);
385
+ LogStatus(`Retrieved configuration parameter "${paramName}" = ${value} from configuration "${configurationId}"`);
268
386
  return value;
269
387
  }
270
388
  catch (error) {
271
- (0, core_1.LogError)(`Error retrieving configuration parameter "${paramName}": ${error.message}`);
389
+ LogError(`Error retrieving configuration parameter "${paramName}": ${error.message}`);
272
390
  return null;
273
391
  }
274
392
  }
393
+ /**
394
+ * Parses model parameters from JSON string.
395
+ *
396
+ * @param modelParametersJson - JSON string containing model parameters
397
+ * @returns Record<string, any> | undefined - Parsed parameters or undefined
398
+ */
275
399
  parseModelParameters(modelParametersJson) {
276
400
  if (!modelParametersJson) {
277
401
  return undefined;
@@ -280,29 +404,37 @@ class ExecutionPlanner {
280
404
  return JSON.parse(modelParametersJson);
281
405
  }
282
406
  catch (error) {
283
- (0, core_1.LogError)(`Failed to parse model parameters JSON: ${error.message}`);
407
+ LogError(`Failed to parse model parameters JSON: ${error.message}`);
284
408
  return undefined;
285
409
  }
286
410
  }
411
+ /**
412
+ * Selects vendor information for a model, preferring inference providers
413
+ */
287
414
  selectVendorForModel(model) {
288
- const inferenceProviderType = aiengine_1.AIEngine.Instance.VendorTypeDefinitions.find(vt => vt.Name === 'Inference Provider');
415
+ // Find the inference provider type from vendor type definitions
416
+ const inferenceProviderType = AIEngine.Instance.VendorTypeDefinitions.find(vt => vt.Name === 'Inference Provider');
289
417
  if (!inferenceProviderType) {
418
+ // Fallback to model defaults if we can't find the inference provider type
290
419
  return {
291
420
  vendorDriverClass: model.DriverClass,
292
421
  vendorApiName: model.APIName
293
422
  };
294
423
  }
295
- const modelVendors = aiengine_1.AIEngine.Instance.ModelVendors
424
+ // Get active model vendors for this model that are inference providers
425
+ const modelVendors = AIEngine.Instance.ModelVendors
296
426
  .filter(mv => mv.ModelID === model.ID &&
297
427
  mv.Status === 'Active' &&
298
428
  mv.TypeID === inferenceProviderType.ID)
299
429
  .sort((a, b) => b.Priority - a.Priority);
300
430
  if (modelVendors.length === 0) {
431
+ // No vendors found, use model defaults
301
432
  return {
302
433
  vendorDriverClass: model.DriverClass,
303
434
  vendorApiName: model.APIName
304
435
  };
305
436
  }
437
+ // Use the highest priority vendor
306
438
  const selectedVendor = modelVendors[0];
307
439
  return {
308
440
  vendorId: selectedVendor.VendorID,
@@ -311,5 +443,4 @@ class ExecutionPlanner {
311
443
  };
312
444
  }
313
445
  }
314
- exports.ExecutionPlanner = ExecutionPlanner;
315
446
  //# sourceMappingURL=ExecutionPlanner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionPlanner.js","sourceRoot":"","sources":["../src/ExecutionPlanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExecutionPlanner.js","sourceRoot":"","sources":["../src/ExecutionPlanner.ts"],"names":[],"mappings":"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"}