@memberjunction/core-entities-server 2.65.0 → 2.67.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,84 @@
1
+ import { EntityInfo, EntitySaveOptions } from "@memberjunction/core";
2
+ import { ActionEntityExtended, ActionLibrary, GeneratedCode } from "@memberjunction/actions-base";
3
+ /**
4
+ * Extended GeneratedCode interface to include parameters and result codes
5
+ */
6
+ interface GeneratedCodeExtended extends GeneratedCode {
7
+ Parameters?: Array<{
8
+ Name: string;
9
+ Type: 'Input' | 'Output' | 'Both';
10
+ ValueType: 'Scalar' | 'Simple Object' | 'BaseEntity Sub-Class' | 'Other';
11
+ IsArray: boolean;
12
+ IsRequired: boolean;
13
+ DefaultValue: string | null;
14
+ Description: string;
15
+ }>;
16
+ ResultCodes?: Array<{
17
+ ResultCode: string;
18
+ Description: string;
19
+ IsSuccess: boolean;
20
+ }>;
21
+ }
22
+ /**
23
+ * Server-Only custom sub-class for Actions entity. This sub-class handles the process of auto-generation code for the Actions entity.
24
+ */
25
+ export declare class ActionEntityServerEntity extends ActionEntityExtended {
26
+ constructor(Entity: EntityInfo);
27
+ /**
28
+ * Override of the base Save method to handle the pre-processing to auto generate code whenever an action's UserPrompt is modified.
29
+ * This happens when a new record is created and also whenever the UserPrompt field is changed.
30
+ * @param options
31
+ * @returns
32
+ */
33
+ Save(options?: EntitySaveOptions): Promise<boolean>;
34
+ protected manageLibraries(codeLibraries: ActionLibrary[], wasNewRecord: boolean): Promise<void>;
35
+ protected SendMessage(message: string): void;
36
+ /**
37
+ * This method will generate code using a combination of the UserPrompt field as well as the overall context of how an Action gets executed. Code from the Action is later used by CodeGen to inject into
38
+ * the mj_actions library for each user environment. The mj_actions library will have a class for each action and that class will have certain libraries imported at the top of the file and available for use.
39
+ * That information along with a detailed amount of system prompt steering goes into the AI model in order to generate contextually appropriate and reliable code that maps to the business logic of the user
40
+ */
41
+ GenerateCode(maxAttempts?: number): Promise<GeneratedCodeExtended>;
42
+ /**
43
+ * Prepares the data context for the prompt template
44
+ */
45
+ protected PreparePromptData(): Promise<Record<string, any>>;
46
+ /**
47
+ * Returns a simplified object with basic entity info: Name, Description and field list.
48
+ */
49
+ protected PrepareEntityInfo(): any;
50
+ /**
51
+ * Loads the parent action entity if this is a child action
52
+ */
53
+ protected LoadParentAction(): Promise<ActionEntityExtended | null>;
54
+ /**
55
+ * Processes generated parameters and saves them to the database
56
+ */
57
+ protected ProcessGeneratedParameters(parameters: Array<any>): Promise<void>;
58
+ /**
59
+ * Processes generated result codes and saves them to the database
60
+ */
61
+ protected ProcessGeneratedResultCodes(resultCodes: Array<{
62
+ ResultCode: string;
63
+ Description: string;
64
+ IsSuccess: boolean;
65
+ }>): Promise<void>;
66
+ /**
67
+ * Validates the generated code
68
+ */
69
+ protected ValidateGeneratedCode(generatedCode: GeneratedCodeExtended, attemptsRemaining: number): Promise<GeneratedCodeExtended>;
70
+ /**
71
+ * Generates the libraries context for the prompt
72
+ */
73
+ protected GenerateLibrariesContext(): {
74
+ Name: string;
75
+ Description: string;
76
+ Items: {
77
+ Name: string;
78
+ Content: string;
79
+ }[];
80
+ }[];
81
+ }
82
+ export declare function LoadActionEntityServer(): void;
83
+ export {};
84
+ //# sourceMappingURL=ActionEntity.server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionEntity.server.d.ts","sourceRoot":"","sources":["../../src/custom/ActionEntity.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,UAAU,EAAE,iBAAiB,EAA+B,MAAM,sBAAsB,CAAC;AAQpI,OAAO,EAAoB,oBAAoB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAEpH;;GAEG;AACH,UAAU,qBAAsB,SAAQ,aAAa;IACjD,UAAU,CAAC,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;QAClC,SAAS,EAAE,QAAQ,GAAG,eAAe,GAAG,sBAAsB,GAAG,OAAO,CAAC;QACzE,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;QACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IACH,WAAW,CAAC,EAAE,KAAK,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,OAAO,CAAC;KACtB,CAAC,CAAC;CACN;AAED;;GAEG;AACH,qBACa,wBAAyB,SAAQ,oBAAoB;gBAClD,MAAM,EAAE,UAAU;IAS9B;;;;;OAKG;IACmB,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;cA4EzD,eAAe,CAAC,aAAa,EAAE,aAAa,EAAE,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDrG,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM;IAQrC;;;;OAIG;IACU,YAAY,CAAC,WAAW,GAAE,MAAU,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA2ElF;;OAEG;cACa,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAsDjE;;OAEG;IACH,SAAS,CAAC,iBAAiB,IAAI,GAAG;IAgBlC;;OAEG;cACa,gBAAgB,IAAI,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAWxE;;OAEG;cACa,0BAA0B,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqGjF;;OAEG;cACa,2BAA2B,CAAC,WAAW,EAAE,KAAK,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA2E7I;;OAEG;cACa,qBAAqB,CAAC,aAAa,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAMtI;;OAEG;IACH,SAAS,CAAC,wBAAwB,IAC9B;QACI,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE;YACH,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;SACnB,EAAE,CAAC;KACP,EAAE;CAeV;AAED,wBAAgB,sBAAsB,SAIrC"}
@@ -0,0 +1,472 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.LoadActionEntityServer = exports.ActionEntityServerEntity = void 0;
13
+ const core_1 = require("@memberjunction/core");
14
+ const global_1 = require("@memberjunction/global");
15
+ const aiengine_1 = require("@memberjunction/aiengine");
16
+ const ai_prompts_1 = require("@memberjunction/ai-prompts");
17
+ const ai_core_plus_1 = require("@memberjunction/ai-core-plus");
18
+ const doc_utils_1 = require("@memberjunction/doc-utils");
19
+ const actions_base_1 = require("@memberjunction/actions-base");
20
+ /**
21
+ * Server-Only custom sub-class for Actions entity. This sub-class handles the process of auto-generation code for the Actions entity.
22
+ */
23
+ let ActionEntityServerEntity = class ActionEntityServerEntity extends actions_base_1.ActionEntityExtended {
24
+ constructor(Entity) {
25
+ super(Entity); // call super
26
+ const md = new core_1.Metadata();
27
+ if (md.ProviderType !== 'Database')
28
+ throw new Error('This class is only supported for server-side/database providers. Remove this package from your application.');
29
+ }
30
+ /**
31
+ * Override of the base Save method to handle the pre-processing to auto generate code whenever an action's UserPrompt is modified.
32
+ * This happens when a new record is created and also whenever the UserPrompt field is changed.
33
+ * @param options
34
+ * @returns
35
+ */
36
+ async Save(options) {
37
+ // make sure the ActionEngine is configured
38
+ await actions_base_1.ActionEngineBase.Instance.Config(false, this.ContextCurrentUser);
39
+ await doc_utils_1.DocumentationEngine.Instance.Config(false, this.ContextCurrentUser);
40
+ const provider = core_1.Metadata.Provider;
41
+ // Start a database transaction
42
+ await provider.BeginTransaction();
43
+ try {
44
+ let newCodeGenerated = false;
45
+ let codeLibraries = [];
46
+ let generatedParameters = [];
47
+ let generatedResultCodes = [];
48
+ if (this.Type === 'Generated' && // only generate when the type is Generated
49
+ !this.CodeLocked && // only generate when the code is not locked
50
+ (this.GetFieldByName('UserPrompt').Dirty || !this.IsSaved || this.ForceCodeGeneration) // only generate when the UserPrompt field is dirty or this is a new record or we are being asked to FORCE code generation
51
+ ) {
52
+ // UserPrompt field is dirty, or this is a new record, either way, this is the condition where we want to generate the Code.
53
+ const result = await this.GenerateCode();
54
+ if (result.Success) {
55
+ this.Code = result.Code;
56
+ this.CodeComments = result.Comments;
57
+ this.CodeApprovalStatus = 'Pending'; // set to pending even if previously approved since we changed the code
58
+ this.CodeApprovedAt = null; // reset the approved at date
59
+ this.CodeApprovedByUserID = null; // reset the approved by user id
60
+ newCodeGenerated = true; // flag for post-save processing of libraries
61
+ codeLibraries = result.LibrariesUsed;
62
+ // Store the generated parameters and result codes for later processing
63
+ generatedParameters = result.Parameters || [];
64
+ generatedResultCodes = result.ResultCodes || [];
65
+ }
66
+ else
67
+ throw new Error(`Failed to generate code for Action ${this.Name}.`);
68
+ }
69
+ this.ForceCodeGeneration = false; // make sure to reset this flag every time we save, it should never live past one run of the Save method
70
+ const wasNewRecord = !this.IsSaved;
71
+ if (await super.Save(options)) {
72
+ // Now handle all the child entities within the same transaction
73
+ if (newCodeGenerated) {
74
+ // Process libraries
75
+ await this.manageLibraries(codeLibraries, wasNewRecord);
76
+ // Process parameters
77
+ if (generatedParameters.length > 0) {
78
+ await this.ProcessGeneratedParameters(generatedParameters);
79
+ }
80
+ // Process result codes
81
+ if (generatedResultCodes.length > 0) {
82
+ await this.ProcessGeneratedResultCodes(generatedResultCodes);
83
+ }
84
+ }
85
+ // Commit the transaction
86
+ await provider.CommitTransaction();
87
+ return true;
88
+ }
89
+ else {
90
+ // Rollback on save failure
91
+ await provider.RollbackTransaction();
92
+ return false;
93
+ }
94
+ }
95
+ catch (e) {
96
+ // Rollback on any error
97
+ await provider.RollbackTransaction();
98
+ throw e;
99
+ }
100
+ }
101
+ async manageLibraries(codeLibraries, wasNewRecord) {
102
+ // new code was generated, we need to sync up the ActionLibraries table with the libraries used in the code for this Action
103
+ // get a list of existing ActionLibrary records that match this Action
104
+ const existingLibraries = [];
105
+ if (!wasNewRecord) {
106
+ const rv = new core_1.RunView();
107
+ const libResult = await rv.RunView({
108
+ EntityName: 'Action Libraries',
109
+ ExtraFilter: `ActionID = '${this.ID}'`,
110
+ ResultType: 'entity_object'
111
+ }, this.ContextCurrentUser);
112
+ if (libResult.Success && libResult.Results.length > 0) {
113
+ existingLibraries.push(...libResult.Results);
114
+ }
115
+ }
116
+ // now we need to go through the libraries we ARE currently using in the current code and make sure they are in the ActionLibraries table
117
+ // and make sure nothing is in the table that we are not using
118
+ const librariesToAdd = codeLibraries.filter(l => !existingLibraries.some(el => el.Library.trim().toLowerCase() === l.LibraryName.trim().toLowerCase()));
119
+ const librariesToRemove = existingLibraries.filter(el => !codeLibraries.some(l => l.LibraryName.trim().toLowerCase() === el.Library.trim().toLowerCase()));
120
+ const librariesToUpdate = existingLibraries.filter(el => codeLibraries.some(l => l.LibraryName.trim().toLowerCase() === el.Library.trim().toLowerCase()));
121
+ const md = new core_1.Metadata();
122
+ for (const lib of librariesToAdd) {
123
+ const libMetadata = md.Libraries.find(l => l.Name.trim().toLowerCase() === lib.LibraryName.trim().toLowerCase());
124
+ if (libMetadata) {
125
+ const newLib = await md.GetEntityObject('Action Libraries', this.ContextCurrentUser);
126
+ newLib.ActionID = this.ID;
127
+ newLib.LibraryID = libMetadata.ID;
128
+ newLib.ItemsUsed = lib.ItemsUsed.join(',');
129
+ await newLib.Save();
130
+ }
131
+ }
132
+ // now update the libraries that were already in place to ensure the ItemsUsed are up to date
133
+ for (const lib of librariesToUpdate) {
134
+ const newCode = codeLibraries.find(l => l.LibraryName.trim().toLowerCase() === lib.Library.trim().toLowerCase());
135
+ lib.ItemsUsed = newCode.ItemsUsed.join(',');
136
+ await lib.Save();
137
+ }
138
+ // now remove the libraries that are no longer used
139
+ for (const lib of librariesToRemove) {
140
+ // each lib in this array iteration is already a BaseEntity derived object
141
+ await lib.Delete();
142
+ }
143
+ }
144
+ SendMessage(message) {
145
+ global_1.MJGlobal.Instance.RaiseEvent({
146
+ args: { message },
147
+ eventCode: 'Actions',
148
+ event: global_1.MJEventType.ComponentEvent,
149
+ component: this
150
+ });
151
+ }
152
+ /**
153
+ * This method will generate code using a combination of the UserPrompt field as well as the overall context of how an Action gets executed. Code from the Action is later used by CodeGen to inject into
154
+ * the mj_actions library for each user environment. The mj_actions library will have a class for each action and that class will have certain libraries imported at the top of the file and available for use.
155
+ * That information along with a detailed amount of system prompt steering goes into the AI model in order to generate contextually appropriate and reliable code that maps to the business logic of the user
156
+ */
157
+ async GenerateCode(maxAttempts = 3) {
158
+ try {
159
+ this.SendMessage('Generating code... ');
160
+ // Ensure AIEngine is configured
161
+ await aiengine_1.AIEngine.Instance.Config(false, this.ContextCurrentUser);
162
+ // Load the consolidated prompt template from preloaded prompts
163
+ const aiPrompt = aiengine_1.AIEngine.Instance.Prompts.find(p => p.Name === 'Generate Action Code' &&
164
+ p.Category === 'Actions');
165
+ if (!aiPrompt) {
166
+ throw new Error('Failed to find AI prompt template: Generate Action Code in Actions category');
167
+ }
168
+ // Prepare prompt data
169
+ const promptData = await this.PreparePromptData();
170
+ // Execute the prompt using AIPromptRunner
171
+ const promptRunner = new ai_prompts_1.AIPromptRunner();
172
+ const params = new ai_core_plus_1.AIPromptParams();
173
+ params.prompt = aiPrompt;
174
+ params.data = promptData;
175
+ params.contextUser = this.ContextCurrentUser;
176
+ const result = await promptRunner.ExecutePrompt(params);
177
+ if (result.success && result.result) {
178
+ const generatedCode = {
179
+ Success: true,
180
+ Code: result.result.code.trim(),
181
+ Comments: result.result.explanation,
182
+ LibrariesUsed: result.result.libraries,
183
+ Parameters: result.result.parameters,
184
+ ResultCodes: result.result.resultCodes
185
+ };
186
+ // Validate the generated code
187
+ return await this.ValidateGeneratedCode(generatedCode, maxAttempts);
188
+ }
189
+ else {
190
+ return {
191
+ Success: false,
192
+ Code: '',
193
+ Comments: result.errorMessage || 'Failed to generate code',
194
+ LibrariesUsed: []
195
+ };
196
+ }
197
+ }
198
+ catch (e) {
199
+ (0, core_1.LogError)(e);
200
+ throw e;
201
+ }
202
+ }
203
+ /**
204
+ * Prepares the data context for the prompt template
205
+ */
206
+ async PreparePromptData() {
207
+ const data = {
208
+ userPrompt: this.UserPrompt,
209
+ entityInfo: this.PrepareEntityInfo(),
210
+ availableLibraries: this.GenerateLibrariesContext(),
211
+ IsChildAction: !!this.ParentID // Template variable for conditional sections
212
+ };
213
+ // If this is a child action, load parent context and create ChildActionInfo
214
+ if (this.ParentID) {
215
+ const parentAction = await this.LoadParentAction();
216
+ if (parentAction) {
217
+ // Create the ChildActionInfo template variable with all parent details
218
+ data.ChildActionInfo = `
219
+ **Parent Action ID:** ${parentAction.ID.trim().toLowerCase() /*just to make sure casing doesn't mess up the string we pass in*/}
220
+ **Parent Action Name:** ${parentAction.Name}
221
+ **Parent Description:** ${parentAction.Description || 'No description provided'}
222
+
223
+ **Parent Parameters:**
224
+ ${JSON.stringify(parentAction.Params.map(p => {
225
+ return {
226
+ Name: p.Name,
227
+ Type: p.Type,
228
+ ValueType: p.ValueType,
229
+ IsArray: p.IsArray,
230
+ IsRequired: p.IsRequired,
231
+ DefaultValue: p.DefaultValue,
232
+ Description: p.Description
233
+ };
234
+ }), null, 2)}
235
+ `;
236
+ // Also include the parent action object for template access
237
+ data.parentAction = {
238
+ Name: parentAction.Name,
239
+ Description: parentAction.Description,
240
+ Category: parentAction.Category
241
+ };
242
+ data.actionParams = parentAction.Params.map(p => {
243
+ return {
244
+ Name: p.Name,
245
+ Type: p.Type,
246
+ ValueType: p.ValueType,
247
+ IsArray: p.IsArray,
248
+ IsRequired: p.IsRequired,
249
+ DefaultValue: p.DefaultValue,
250
+ Description: p.Description
251
+ };
252
+ });
253
+ }
254
+ }
255
+ return data;
256
+ }
257
+ /**
258
+ * Returns a simplified object with basic entity info: Name, Description and field list.
259
+ */
260
+ PrepareEntityInfo() {
261
+ const md = new core_1.Metadata();
262
+ const entities = md.Entities.map(entity => ({
263
+ Name: entity.Name,
264
+ Description: entity.Description,
265
+ Fields: entity.Fields.map(field => ({
266
+ Name: field.Name,
267
+ NeedsQuotes: field.NeedsQuotes,
268
+ ReadOnly: field.ReadOnly,
269
+ AllowsNull: field.AllowsNull
270
+ }))
271
+ }));
272
+ return entities;
273
+ }
274
+ /**
275
+ * Loads the parent action entity if this is a child action
276
+ */
277
+ async LoadParentAction() {
278
+ if (!this.ParentID)
279
+ return null;
280
+ const md = new core_1.Metadata();
281
+ const parent = await md.GetEntityObject('Actions', this.ContextCurrentUser);
282
+ if (await parent.Load(this.ParentID)) {
283
+ return parent;
284
+ }
285
+ return null;
286
+ }
287
+ /**
288
+ * Processes generated parameters and saves them to the database
289
+ */
290
+ async ProcessGeneratedParameters(parameters) {
291
+ const md = new core_1.Metadata();
292
+ try {
293
+ // First, get existing parameters
294
+ const rv = new core_1.RunView();
295
+ const existingParams = await rv.RunView({
296
+ EntityName: 'Action Params',
297
+ ExtraFilter: `ActionID='${this.ID}'`,
298
+ ResultType: 'entity_object'
299
+ }, this.ContextCurrentUser);
300
+ if (!existingParams.Success) {
301
+ throw new Error(`Failed to load existing parameters: ${existingParams.ErrorMessage}`);
302
+ }
303
+ const existingParamsList = existingParams.Results || [];
304
+ const generatedParamNames = parameters.map(p => p.Name.toLowerCase());
305
+ // Find parameters to add, update, or remove
306
+ const paramsToAdd = parameters.filter(p => !existingParamsList.some(ep => ep.Name.toLowerCase() === p.Name.toLowerCase()));
307
+ const paramsToUpdate = existingParamsList.filter(ep => parameters.some(p => p.Name.toLowerCase() === ep.Name.toLowerCase()));
308
+ const paramsToRemove = existingParamsList.filter(ep => !generatedParamNames.includes(ep.Name.toLowerCase()));
309
+ // Add new parameters
310
+ for (const param of paramsToAdd) {
311
+ const newParam = await md.GetEntityObject('Action Params', this.ContextCurrentUser);
312
+ newParam.ActionID = this.ID;
313
+ newParam.Name = param.Name;
314
+ const t = param.Type;
315
+ if (t === 'Input' || t === 'Output' || t === 'Both') {
316
+ newParam.Type = t;
317
+ }
318
+ else {
319
+ newParam.Type = 'Input'; // Default to Input if type is not recognized and emit a warning
320
+ console.warn(`Action Generator: Unrecognized parameter type "${t}" for parameter "${param.Name}". Defaulting to "Input".`);
321
+ }
322
+ newParam.ValueType = param.ValueType;
323
+ newParam.IsArray = param.IsArray;
324
+ newParam.IsRequired = param.IsRequired;
325
+ newParam.DefaultValue = param.DefaultValue;
326
+ newParam.Description = param.Description;
327
+ await newParam.Save();
328
+ }
329
+ // Update existing parameters if properties changed
330
+ for (const existingParam of paramsToUpdate) {
331
+ const generatedParam = parameters.find(p => p.Name.toLowerCase() === existingParam.Name.toLowerCase());
332
+ if (generatedParam) {
333
+ let hasChanges = false;
334
+ // Check each property for changes
335
+ if (existingParam.Type !== generatedParam.Type) {
336
+ existingParam.Type = generatedParam.Type;
337
+ hasChanges = true;
338
+ }
339
+ if (existingParam.ValueType !== generatedParam.ValueType) {
340
+ existingParam.ValueType = generatedParam.ValueType;
341
+ hasChanges = true;
342
+ }
343
+ if (existingParam.IsArray !== generatedParam.IsArray) {
344
+ existingParam.IsArray = generatedParam.IsArray;
345
+ hasChanges = true;
346
+ }
347
+ if (existingParam.IsRequired !== generatedParam.IsRequired) {
348
+ existingParam.IsRequired = generatedParam.IsRequired;
349
+ hasChanges = true;
350
+ }
351
+ if (existingParam.DefaultValue !== generatedParam.DefaultValue) {
352
+ existingParam.DefaultValue = generatedParam.DefaultValue;
353
+ hasChanges = true;
354
+ }
355
+ if (existingParam.Description !== generatedParam.Description) {
356
+ existingParam.Description = generatedParam.Description;
357
+ hasChanges = true;
358
+ }
359
+ if (hasChanges) {
360
+ await existingParam.Save();
361
+ }
362
+ }
363
+ }
364
+ // Remove parameters that are no longer in the generated list
365
+ for (const paramToRemove of paramsToRemove) {
366
+ await paramToRemove.Delete();
367
+ }
368
+ }
369
+ catch (e) {
370
+ (0, core_1.LogError)('Failed to save generated parameters:', e);
371
+ throw e; // Re-throw since we're in a transaction
372
+ }
373
+ }
374
+ /**
375
+ * Processes generated result codes and saves them to the database
376
+ */
377
+ async ProcessGeneratedResultCodes(resultCodes) {
378
+ const md = new core_1.Metadata();
379
+ try {
380
+ // First, get existing result codes
381
+ const rv = new core_1.RunView();
382
+ const existingCodes = await rv.RunView({
383
+ EntityName: 'Action Result Codes',
384
+ ExtraFilter: `ActionID='${this.ID}'`,
385
+ ResultType: 'entity_object'
386
+ }, this.ContextCurrentUser);
387
+ if (!existingCodes.Success) {
388
+ throw new Error(`Failed to load existing result codes: ${existingCodes.ErrorMessage}`);
389
+ }
390
+ const existingCodesList = existingCodes.Results || [];
391
+ const generatedCodeNames = resultCodes.map(rc => rc.ResultCode.toLowerCase());
392
+ // Find result codes to add, update, or remove
393
+ const codesToAdd = resultCodes.filter(rc => !existingCodesList.some(ec => ec.ResultCode.toLowerCase() === rc.ResultCode.toLowerCase()));
394
+ const codesToUpdate = existingCodesList.filter(ec => resultCodes.some(rc => rc.ResultCode.toLowerCase() === ec.ResultCode.toLowerCase()));
395
+ const codesToRemove = existingCodesList.filter(ec => !generatedCodeNames.includes(ec.ResultCode.toLowerCase()));
396
+ // Add new result codes
397
+ for (const resultCode of codesToAdd) {
398
+ const newCode = await md.GetEntityObject('Action Result Codes', this.ContextCurrentUser);
399
+ newCode.ActionID = this.ID;
400
+ newCode.ResultCode = resultCode.ResultCode;
401
+ newCode.Description = resultCode.Description;
402
+ newCode.IsSuccess = resultCode.IsSuccess;
403
+ await newCode.Save();
404
+ }
405
+ // Update existing result codes if properties changed
406
+ for (const existingCode of codesToUpdate) {
407
+ const generatedCode = resultCodes.find(rc => rc.ResultCode.toLowerCase() === existingCode.ResultCode.toLowerCase());
408
+ if (generatedCode) {
409
+ let hasChanges = false;
410
+ // Check each property for changes
411
+ if (existingCode.Description !== generatedCode.Description) {
412
+ existingCode.Description = generatedCode.Description;
413
+ hasChanges = true;
414
+ }
415
+ if (existingCode.IsSuccess !== generatedCode.IsSuccess) {
416
+ existingCode.IsSuccess = generatedCode.IsSuccess;
417
+ hasChanges = true;
418
+ }
419
+ if (hasChanges) {
420
+ await existingCode.Save();
421
+ }
422
+ }
423
+ }
424
+ // Remove result codes that are no longer in the generated list
425
+ for (const codeToRemove of codesToRemove) {
426
+ await codeToRemove.Delete();
427
+ }
428
+ }
429
+ catch (e) {
430
+ (0, core_1.LogError)('Failed to save generated result codes:', e);
431
+ throw e; // Re-throw since we're in a transaction
432
+ }
433
+ }
434
+ /**
435
+ * Validates the generated code
436
+ */
437
+ async ValidateGeneratedCode(generatedCode, attemptsRemaining) {
438
+ // For now, return the code as-is
439
+ // TODO: Implement validation logic using a separate prompt
440
+ return generatedCode;
441
+ }
442
+ /**
443
+ * Generates the libraries context for the prompt
444
+ */
445
+ GenerateLibrariesContext() {
446
+ return doc_utils_1.DocumentationEngine.Instance.Libraries.map((library) => {
447
+ return {
448
+ Name: library.Name,
449
+ Description: library.Description,
450
+ Items: library.Items.map((item) => {
451
+ return {
452
+ Name: item.Name,
453
+ Content: item.HTMLContent
454
+ };
455
+ })
456
+ };
457
+ });
458
+ }
459
+ };
460
+ exports.ActionEntityServerEntity = ActionEntityServerEntity;
461
+ exports.ActionEntityServerEntity = ActionEntityServerEntity = __decorate([
462
+ (0, global_1.RegisterClass)(core_1.BaseEntity, 'Actions') // high priority make sure this class is used ahead of other things
463
+ ,
464
+ __metadata("design:paramtypes", [core_1.EntityInfo])
465
+ ], ActionEntityServerEntity);
466
+ function LoadActionEntityServer() {
467
+ // this function is used to force the class to load and register itself with the system
468
+ // this is necessary because the class is not explicitly referenced in the code, it is only registered with the system
469
+ // and the system will only load it when it is needed, this function forces the class to load
470
+ }
471
+ exports.LoadActionEntityServer = LoadActionEntityServer;
472
+ //# sourceMappingURL=ActionEntity.server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionEntity.server.js","sourceRoot":"","sources":["../../src/custom/ActionEntity.server.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,5 +4,6 @@ export * from './custom/DuplicateRunEntity.server';
4
4
  export * from './custom/reportEntity.server';
5
5
  export * from './custom/TemplateContentEntity.server';
6
6
  export * from './custom/userViewEntity.server';
7
+ export * from './custom/ActionEntity.server';
7
8
  export declare function LoadCoreEntitiesServerSubClasses(): void;
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAG/C,wBAAgB,gCAAgC,IAAI,IAAI,CAOvD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAG7C,wBAAgB,gCAAgC,IAAI,IAAI,CAQvD"}
package/dist/index.js CHANGED
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.LoadCoreEntitiesServerSubClasses = void 0;
18
+ const ActionEntity_server_1 = require("./custom/ActionEntity.server");
18
19
  const AIPromptEntityExtended_server_1 = require("./custom/AIPromptEntityExtended.server");
19
20
  const AIPromptRunEntity_server_1 = require("./custom/AIPromptRunEntity.server");
20
21
  const DuplicateRunEntity_server_1 = require("./custom/DuplicateRunEntity.server");
@@ -27,6 +28,7 @@ __exportStar(require("./custom/DuplicateRunEntity.server"), exports);
27
28
  __exportStar(require("./custom/reportEntity.server"), exports);
28
29
  __exportStar(require("./custom/TemplateContentEntity.server"), exports);
29
30
  __exportStar(require("./custom/userViewEntity.server"), exports);
31
+ __exportStar(require("./custom/ActionEntity.server"), exports);
30
32
  // Call the stub functions to ensure that the custom subclasses are not tree shaken out.
31
33
  function LoadCoreEntitiesServerSubClasses() {
32
34
  (0, AIPromptEntityExtended_server_1.LoadAIPromptEntityExtendedServerSubClass)();
@@ -35,6 +37,7 @@ function LoadCoreEntitiesServerSubClasses() {
35
37
  (0, reportEntity_server_1.LoadReportEntityServerSubClass)();
36
38
  (0, TemplateContentEntity_server_1.LoadTemplateContentEntityServerSubClass)();
37
39
  (0, userViewEntity_server_1.LoadUserViewEntityServerSubClass)();
40
+ (0, ActionEntity_server_1.LoadActionEntityServer)();
38
41
  }
39
42
  exports.LoadCoreEntitiesServerSubClasses = LoadCoreEntitiesServerSubClasses;
40
43
  LoadCoreEntitiesServerSubClasses();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0FAAkG;AAClG,gFAAwF;AACxF,kFAA0F;AAC1F,sEAA8E;AAC9E,wFAAgG;AAChG,0EAAkF;AAElF,yEAAuD;AACvD,oEAAkD;AAClD,qEAAmD;AACnD,+DAA6C;AAC7C,wEAAsD;AACtD,iEAA+C;AAE/C,wFAAwF;AACxF,SAAgB,gCAAgC;IAC5C,IAAA,wEAAwC,GAAE,CAAC;IAC3C,IAAA,8DAAmC,GAAE,CAAC;IACtC,IAAA,gEAAoC,GAAE,CAAC;IACvC,IAAA,oDAA8B,GAAE,CAAC;IACjC,IAAA,sEAAuC,GAAE,CAAC;IAC1C,IAAA,wDAAgC,GAAE,CAAC;AACvC,CAAC;AAPD,4EAOC;AACD,gCAAgC,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,sEAAsE;AACtE,0FAAkG;AAClG,gFAAwF;AACxF,kFAA0F;AAC1F,sEAA8E;AAC9E,wFAAgG;AAChG,0EAAkF;AAElF,yEAAuD;AACvD,oEAAkD;AAClD,qEAAmD;AACnD,+DAA6C;AAC7C,wEAAsD;AACtD,iEAA+C;AAC/C,+DAA6C;AAE7C,wFAAwF;AACxF,SAAgB,gCAAgC;IAC5C,IAAA,wEAAwC,GAAE,CAAC;IAC3C,IAAA,8DAAmC,GAAE,CAAC;IACtC,IAAA,gEAAoC,GAAE,CAAC;IACvC,IAAA,oDAA8B,GAAE,CAAC;IACjC,IAAA,sEAAuC,GAAE,CAAC;IAC1C,IAAA,wDAAgC,GAAE,CAAC;IACnC,IAAA,4CAAsB,GAAE,CAAC;AAC7B,CAAC;AARD,4EAQC;AACD,gCAAgC,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/core-entities-server",
3
- "version": "2.65.0",
3
+ "version": "2.67.0",
4
4
  "description": "Entity subclasses for the metadata layer of MemberJunction that are only used on server side applications like MJAPI, distributed as part of each release of MemberJunction",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -19,15 +19,15 @@
19
19
  "typescript": "^5.4.5"
20
20
  },
21
21
  "dependencies": {
22
- "@memberjunction/core": "2.65.0",
23
- "@memberjunction/global": "2.65.0",
24
- "@memberjunction/core-entities": "2.65.0",
25
- "@memberjunction/ai-vector-dupe": "2.65.0",
26
- "@memberjunction/ai-core-plus": "2.65.0",
27
- "@memberjunction/ai-prompts": "2.65.0",
28
- "@memberjunction/skip-types": "2.65.0",
29
- "@memberjunction/aiengine": "2.65.0",
30
- "@memberjunction/sqlserver-dataprovider": "2.65.0",
22
+ "@memberjunction/core": "2.67.0",
23
+ "@memberjunction/global": "2.67.0",
24
+ "@memberjunction/core-entities": "2.67.0",
25
+ "@memberjunction/ai-vector-dupe": "2.67.0",
26
+ "@memberjunction/ai-core-plus": "2.67.0",
27
+ "@memberjunction/ai-prompts": "2.67.0",
28
+ "@memberjunction/skip-types": "2.67.0",
29
+ "@memberjunction/aiengine": "2.67.0",
30
+ "@memberjunction/sqlserver-dataprovider": "2.67.0",
31
31
  "zod": "^3.23.8"
32
32
  }
33
33
  }