@memberjunction/ai-recommendations 4.3.1 → 5.0.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/dist/Engine.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { BaseEngine, UserInfo, IMetadataProvider } from '@memberjunction/core';
2
- import { RecommendationProviderEntity } from '@memberjunction/core-entities';
2
+ import { MJRecommendationProviderEntity } from '@memberjunction/core-entities';
3
3
  import { RecommendationRequest, RecommendationResult } from './generic/types.js';
4
4
  /**
5
5
  * Engine class to be used for running all recommendation requests
@@ -7,7 +7,7 @@ import { RecommendationRequest, RecommendationResult } from './generic/types.js'
7
7
  export declare class RecommendationEngineBase extends BaseEngine<RecommendationEngineBase> {
8
8
  private _RecommendationProviders;
9
9
  static get Instance(): RecommendationEngineBase;
10
- get RecommendationProviders(): RecommendationProviderEntity[];
10
+ get RecommendationProviders(): MJRecommendationProviderEntity[];
11
11
  Config(forceRefresh?: boolean, contextUser?: UserInfo, provider?: IMetadataProvider): Promise<void>;
12
12
  Recommend<T>(request: RecommendationRequest<T>): Promise<RecommendationResult>;
13
13
  private GetRecommendationEntities;
@@ -1 +1 @@
1
- {"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAY,QAAQ,EAA4C,iBAAiB,EAA4B,MAAM,sBAAsB,CAAC;AAC7J,OAAO,EAA0E,4BAA4B,EAA2B,MAAM,+BAA+B,CAAC;AAG9K,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE9E;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,UAAU,CAAC,wBAAwB,CAAC;IAChF,OAAO,CAAC,wBAAwB,CAAsC;IAEtE,WAAkB,QAAQ,IAAI,wBAAwB,CAErD;IAED,IAAW,uBAAuB,IAAI,4BAA4B,EAAE,CAEnE;IAEY,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB;IAYnF,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC;YAuE7E,yBAAyB;YA4BzB,0BAA0B;YAoE1B,6BAA6B;YAiC7B,6BAA6B;IAmB3C,OAAO,CAAC,iBAAiB;CAG1B"}
1
+ {"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAY,QAAQ,EAA4C,iBAAiB,EAA4B,MAAM,sBAAsB,CAAC;AAC7J,OAAO,EAAkF,8BAA8B,EAA6B,MAAM,+BAA+B,CAAC;AAG1L,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE9E;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,UAAU,CAAC,wBAAwB,CAAC;IAChF,OAAO,CAAC,wBAAwB,CAAwC;IAExE,WAAkB,QAAQ,IAAI,wBAAwB,CAErD;IAED,IAAW,uBAAuB,IAAI,8BAA8B,EAAE,CAErE;IAEY,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB;IAYnF,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC;YAuE7E,yBAAyB;YA4BzB,0BAA0B;YAoE1B,6BAA6B;YAiC7B,6BAA6B;IAmB3C,OAAO,CAAC,iBAAiB;CAG1B"}
package/dist/Engine.js CHANGED
@@ -19,7 +19,7 @@ export class RecommendationEngineBase extends BaseEngine {
19
19
  const params = [
20
20
  {
21
21
  PropertyName: '_RecommendationProviders',
22
- EntityName: 'Recommendation Providers',
22
+ EntityName: 'MJ: Recommendation Providers',
23
23
  CacheLocal: true
24
24
  },
25
25
  ];
@@ -52,7 +52,7 @@ export class RecommendationEngineBase extends BaseEngine {
52
52
  }
53
53
  request.Recommendations = recommendations;
54
54
  // load the run
55
- const recommendationRunEntity = await new Metadata().GetEntityObject('Recommendation Runs', request.CurrentUser);
55
+ const recommendationRunEntity = await new Metadata().GetEntityObject('MJ: Recommendation Runs', request.CurrentUser);
56
56
  recommendationRunEntity.NewRecord();
57
57
  // update status for current run
58
58
  recommendationRunEntity.Status = 'In Progress';
@@ -109,12 +109,12 @@ export class RecommendationEngineBase extends BaseEngine {
109
109
  const md = new Metadata();
110
110
  const rvListDetailsResult = await rv.RunViews([
111
111
  {
112
- EntityName: 'Lists',
112
+ EntityName: 'MJ: Lists',
113
113
  ExtraFilter: `ID = '${listID}'`,
114
114
  ResultType: 'simple'
115
115
  },
116
116
  {
117
- EntityName: 'List Details',
117
+ EntityName: 'MJ: List Details',
118
118
  ExtraFilter: `ListID = '${listID}'`,
119
119
  ResultType: 'simple',
120
120
  IgnoreMaxRows: true,
@@ -152,7 +152,7 @@ export class RecommendationEngineBase extends BaseEngine {
152
152
  }
153
153
  let recommendations = [];
154
154
  for (const entity of rvEntityResult.Results) {
155
- const recommendationEntity = await md.GetEntityObject('Recommendations', currentUser);
155
+ const recommendationEntity = await md.GetEntityObject('MJ: Recommendations', currentUser);
156
156
  recommendationEntity.NewRecord();
157
157
  recommendationEntity.SourceEntityID = entityID;
158
158
  recommendationEntity.SourceEntityRecordID = entity.ID;
@@ -180,7 +180,7 @@ export class RecommendationEngineBase extends BaseEngine {
180
180
  }
181
181
  let recommendations = [];
182
182
  for (const entity of rvEntityResult.Results) {
183
- const recommendationEntity = await md.GetEntityObject('Recommendations', currentUser);
183
+ const recommendationEntity = await md.GetEntityObject('MJ: Recommendations', currentUser);
184
184
  recommendationEntity.NewRecord();
185
185
  recommendationEntity.SourceEntityID = entity.ID;
186
186
  recommendations.push(recommendationEntity);
@@ -189,7 +189,7 @@ export class RecommendationEngineBase extends BaseEngine {
189
189
  }
190
190
  async CreateRecommendationErrorList(recommendationRunID, entityID, currentUser) {
191
191
  const md = new Metadata();
192
- const list = await md.GetEntityObject('Lists', currentUser);
192
+ const list = await md.GetEntityObject('MJ: Lists', currentUser);
193
193
  list.Name = `Recommendation Run ${recommendationRunID} Errors`;
194
194
  list.EntityID = entityID;
195
195
  list.UserID = currentUser ? currentUser.ID : super.ContextUser.ID;
@@ -1 +1 @@
1
- {"version":3,"file":"Engine.js","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Engine.js","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { RecommendationEntity, RecommendationItemEntity } from '@memberjunction/core-entities';
1
+ import { MJRecommendationEntity, MJRecommendationItemEntity } from '@memberjunction/core-entities';
2
2
  import { UserInfo } from '@memberjunction/core';
3
3
  import { RecommendationRequest, RecommendationResult } from './generic/types.js';
4
4
  /**
@@ -11,7 +11,7 @@ export declare abstract class RecommendationProviderBase {
11
11
  get ContextUser(): UserInfo;
12
12
  /**
13
13
  * For each entry in the request.Recommendations array, the provider's external API is called to
14
- * produce zero or more {@link RecommendationItemEntity} records.
14
+ * produce zero or more {@link MJRecommendationItemEntity} records.
15
15
  *
16
16
  * @param request - The Recommendations to request from this provider
17
17
  */
@@ -22,6 +22,6 @@ export declare abstract class RecommendationProviderBase {
22
22
  * @param recommendation
23
23
  * @param RunID
24
24
  */
25
- protected SaveRecommendation(recommendation: RecommendationEntity, RunID: string, items: RecommendationItemEntity[]): Promise<boolean>;
25
+ protected SaveRecommendation(recommendation: MJRecommendationEntity, RunID: string, items: MJRecommendationItemEntity[]): Promise<boolean>;
26
26
  }
27
27
  //# sourceMappingURL=ProviderBase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderBase.d.ts","sourceRoot":"","sources":["../src/ProviderBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAC/F,OAAO,EAAsB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE9E;;GAEG;AACH,8BAAsB,0BAA0B;IAC9C,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,YAAY,CAAW;gBAEZ,WAAW,EAAE,QAAQ;IAKxC,IAAW,WAAW,IAAI,QAAQ,CAEjC;IAED;;;;;OAKG;aACa,SAAS,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAExF;;;;;OAKG;cACa,kBAAkB,CAAC,cAAc,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAoB7I"}
1
+ {"version":3,"file":"ProviderBase.d.ts","sourceRoot":"","sources":["../src/ProviderBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AACnG,OAAO,EAAsB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE9E;;GAEG;AACH,8BAAsB,0BAA0B;IAC9C,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,YAAY,CAAW;gBAEZ,WAAW,EAAE,QAAQ;IAKxC,IAAW,WAAW,IAAI,QAAQ,CAEjC;IAED;;;;;OAKG;aACa,SAAS,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAExF;;;;;OAKG;cACa,kBAAkB,CAAC,cAAc,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,0BAA0B,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBjJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderBase.js","sourceRoot":"","sources":["../src/ProviderBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAY,MAAM,sBAAsB,CAAC;AAGpE;;GAEG;AACH,MAAM,OAAgB,0BAA0B;IAI9C,YAAmB,WAAqB;QACtC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAUD;;;;;OAKG;IACO,KAAK,CAAC,kBAAkB,CAAC,cAAoC,EAAE,KAAa,EAAE,KAAiC;QACvH,cAAc,CAAC,mBAAmB,GAAG,KAAK,CAAC;QAC3C,MAAM,wBAAwB,GAAY,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QACtE,IAAG,CAAC,wBAAwB,EAAE,CAAC;YAC7B,QAAQ,CAAC,mCAAmC,cAAc,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;YACzG,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,QAAQ,GAAY,IAAI,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAY,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAG,CAAC,UAAU,EAAE,CAAC;gBACf,QAAQ,CAAC,uDAAuD,cAAc,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnH,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
1
+ {"version":3,"file":"ProviderBase.js","sourceRoot":"","sources":["../src/ProviderBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAY,MAAM,sBAAsB,CAAC;AAGpE;;GAEG;AACH,MAAM,OAAgB,0BAA0B;IAI9C,YAAmB,WAAqB;QACtC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAUD;;;;;OAKG;IACO,KAAK,CAAC,kBAAkB,CAAC,cAAsC,EAAE,KAAa,EAAE,KAAmC;QAC3H,cAAc,CAAC,mBAAmB,GAAG,KAAK,CAAC;QAC3C,MAAM,wBAAwB,GAAY,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QACtE,IAAG,CAAC,wBAAwB,EAAE,CAAC;YAC7B,QAAQ,CAAC,mCAAmC,cAAc,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;YACzG,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,QAAQ,GAAY,IAAI,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAY,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAG,CAAC,UAAU,EAAE,CAAC;gBACf,QAAQ,CAAC,uDAAuD,cAAc,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnH,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
1
  import { UserInfo } from "@memberjunction/core";
2
- import { RecommendationEntity, RecommendationItemEntity, RecommendationProviderEntity, RecommendationRunEntity } from "@memberjunction/core-entities";
2
+ import { MJRecommendationEntity, MJRecommendationItemEntity, MJRecommendationProviderEntity, MJRecommendationRunEntity } from "@memberjunction/core-entities";
3
3
  /**
4
4
  * Used to make requests to Recommendation providers
5
5
  */
@@ -15,7 +15,7 @@ export declare class RecommendationRequest<T = Record<string, any>> {
15
15
  * to save the Recommendation records. This will be done as the batch is processed. You cannot save a Recommendation record until a Run is created
16
16
  * which is done by the RecommendationEngineBase.Recommend() method.
17
17
  */
18
- Recommendations?: RecommendationEntity[];
18
+ Recommendations?: MJRecommendationEntity[];
19
19
  /**
20
20
  * This is an optional field that can be passed in instead of the Recommendations field. If passed in,
21
21
  * the Recommendations field will be populated with Recommendation Entities whose Primary key value matches any of the RecordIDs passed in.
@@ -35,7 +35,7 @@ export declare class RecommendationRequest<T = Record<string, any>> {
35
35
  /**
36
36
  * The specific provider to use for the request. Leave this undefined if you want to use the default provider.
37
37
  */
38
- Provider?: RecommendationProviderEntity;
38
+ Provider?: MJRecommendationProviderEntity;
39
39
  /**
40
40
  * UserInfo object to use when applicable.
41
41
  */
@@ -62,11 +62,11 @@ export declare class RecommendationResult {
62
62
  /**
63
63
  * The Recommendation Run entity that was created by the recommendation engine
64
64
  */
65
- RecommendationRun?: RecommendationRunEntity;
65
+ RecommendationRun?: MJRecommendationRunEntity;
66
66
  /**
67
67
  * The Recommendation Item Entities that were created by the recommendation provider
68
68
  */
69
- RecommendationItems?: RecommendationItemEntity[];
69
+ RecommendationItems?: MJRecommendationItemEntity[];
70
70
  Success: boolean;
71
71
  ErrorMessage: string;
72
72
  constructor(request: RecommendationRequest);
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/generic/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAEtJ;;GAEG;AACH,qBAAa,qBAAqB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACtD;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,eAAe,CAAC,EAAE,oBAAoB,EAAE,CAAM;IAE9C;;;OAGG;IACH,oBAAoB,CAAC,EAAE;QACnB;;WAEG;QACH,UAAU,EAAE,MAAM,CAAC;QACnB;;;WAGG;QACH,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;KACpC,CAAA;IAED,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,4BAA4B,CAAC;IAExC;;OAEG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAC;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC;IAEZ;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC7B,OAAO,EAAE,qBAAqB,CAAC;IAC/B;;OAEG;IACH,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C;;OAEG;IACH,mBAAmB,CAAC,EAAE,wBAAwB,EAAE,CAAM;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;gBAET,OAAO,EAAE,qBAAqB;IAM1C;;;;OAIG;IACH,aAAa,CAAC,cAAc,EAAE,MAAM;IAIpC;;;;OAIG;IACH,WAAW,CAAC,YAAY,EAAE,MAAM;IAKhC;;;;OAIG;IACH,gBAAgB,IAAI,MAAM,EAAE;CAG/B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/generic/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE9J;;GAEG;AACH,qBAAa,qBAAqB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACtD;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,eAAe,CAAC,EAAE,sBAAsB,EAAE,CAAM;IAEhD;;;OAGG;IACH,oBAAoB,CAAC,EAAE;QACnB;;WAEG;QACH,UAAU,EAAE,MAAM,CAAC;QACnB;;;WAGG;QACH,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;KACpC,CAAA;IAED,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,8BAA8B,CAAC;IAE1C;;OAEG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAC;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC;IAEZ;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC7B,OAAO,EAAE,qBAAqB,CAAC;IAC/B;;OAEG;IACH,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;IAC9C;;OAEG;IACH,mBAAmB,CAAC,EAAE,0BAA0B,EAAE,CAAM;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;gBAET,OAAO,EAAE,qBAAqB;IAM1C;;;;OAIG;IACH,aAAa,CAAC,cAAc,EAAE,MAAM;IAIpC;;;;OAIG;IACH,WAAW,CAAC,YAAY,EAAE,MAAM;IAKhC;;;;OAIG;IACH,gBAAgB,IAAI,MAAM,EAAE;CAG/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/generic/types.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAAlC;QAQI;;;;WAIG;QACH,oBAAe,GAA4B,EAAE,CAAC;IA6ClD,CAAC;CAAA;AAED;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAa7B,YAAY,OAA8B;QAP1C;;WAEG;QACH,wBAAmB,GAAgC,EAAE,CAAC;QAKlD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,cAAsB;QAChC,IAAI,CAAC,YAAY,IAAI,YAAY,cAAc,KAAK,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,YAAoB;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,YAAY,IAAI,UAAU,YAAY,KAAK,CAAC;IACrD,CAAC;IAED;;;;OAIG;IACH,gBAAgB;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACJ"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/generic/types.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAAlC;QAQI;;;;WAIG;QACH,oBAAe,GAA8B,EAAE,CAAC;IA6CpD,CAAC;CAAA;AAED;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAa7B,YAAY,OAA8B;QAP1C;;WAEG;QACH,wBAAmB,GAAkC,EAAE,CAAC;QAKpD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,cAAsB;QAChC,IAAI,CAAC,YAAY,IAAI,YAAY,cAAc,KAAK,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,YAAoB;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,YAAY,IAAI,UAAU,YAAY,KAAK,CAAC;IACrD,CAAC;IAED;;;;OAIG;IACH,gBAAgB;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/ai-recommendations",
3
3
  "type": "module",
4
- "version": "4.3.1",
4
+ "version": "5.0.0",
5
5
  "description": "MemberJunction Recommendations Engine",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -21,10 +21,10 @@
21
21
  "typescript": "^5.9.3"
22
22
  },
23
23
  "dependencies": {
24
- "@memberjunction/global": "4.3.1",
25
- "@memberjunction/core": "4.3.1",
26
- "@memberjunction/core-entities": "4.3.1",
27
- "@memberjunction/ai": "4.3.1"
24
+ "@memberjunction/global": "5.0.0",
25
+ "@memberjunction/core": "5.0.0",
26
+ "@memberjunction/core-entities": "5.0.0",
27
+ "@memberjunction/ai": "5.0.0"
28
28
  },
29
29
  "repository": {
30
30
  "type": "git",
package/README.md DELETED
@@ -1,376 +0,0 @@
1
- # @memberjunction/ai-recommendations
2
-
3
- A provider-based recommendation engine for MemberJunction. Manages recommendation runs, delegates to pluggable providers via the class factory, and tracks results through Recommendation, Recommendation Run, and Recommendation Item entities.
4
-
5
- ## Architecture
6
-
7
- ```mermaid
8
- graph TD
9
- subgraph Engine["@memberjunction/ai-recommendations"]
10
- REB["RecommendationEngineBase<br/>(singleton BaseEngine)"]
11
- RPB["RecommendationProviderBase<br/>(abstract)"]
12
- RR["RecommendationRequest&lt;T&gt;"]
13
- RRES["RecommendationResult"]
14
- end
15
-
16
- subgraph Providers["Registered Providers"]
17
- P1["Provider A"]
18
- P2["Provider B"]
19
- end
20
-
21
- subgraph MJEntities["MemberJunction Entities"]
22
- RP["Recommendation Providers"]
23
- RUN["Recommendation Runs"]
24
- REC["Recommendations"]
25
- RI["Recommendation Items"]
26
- LIST["Lists / List Details"]
27
- end
28
-
29
- subgraph MJCore["MemberJunction Core"]
30
- BE["BaseEngine"]
31
- CF["ClassFactory"]
32
- MD["Metadata"]
33
- end
34
-
35
- REB -->|extends| BE
36
- REB -->|discovers| CF
37
- CF -->|creates| P1
38
- CF -->|creates| P2
39
- P1 -->|extends| RPB
40
- P2 -->|extends| RPB
41
- REB --> RP
42
- REB --> RUN
43
- RPB --> REC
44
- RPB --> RI
45
- REB --> LIST
46
-
47
- style Engine fill:#2d6a9f,stroke:#1a4971,color:#fff
48
- style Providers fill:#2d8659,stroke:#1a5c3a,color:#fff
49
- style MJEntities fill:#b8762f,stroke:#8a5722,color:#fff
50
- style MJCore fill:#7c5295,stroke:#563a6b,color:#fff
51
- ```
52
-
53
- ## Installation
54
-
55
- ```bash
56
- npm install @memberjunction/ai-recommendations
57
- ```
58
-
59
- ## Overview
60
-
61
- This package provides the framework for running recommendations in MemberJunction. It follows the engine/provider pattern used throughout the platform:
62
-
63
- 1. **RecommendationEngineBase** -- a singleton engine (extending `BaseEngine`) that loads provider metadata, selects a provider, creates Recommendation Run tracking records, and delegates the actual recommendation logic
64
- 2. **RecommendationProviderBase** -- an abstract class that concrete providers implement to generate recommendations for each source record
65
- 3. **RecommendationRequest/RecommendationResult** -- typed request and response objects that flow through the pipeline
66
-
67
- Providers are discovered at runtime through MemberJunction's `ClassFactory` using `@RegisterClass(RecommendationProviderBase, 'ProviderName')`.
68
-
69
- ## Recommendation Flow
70
-
71
- ```mermaid
72
- sequenceDiagram
73
- participant Caller
74
- participant Engine as RecommendationEngineBase
75
- participant CF as ClassFactory
76
- participant Provider as RecommendationProvider
77
- participant DB as MJ Database
78
-
79
- Caller->>Engine: Recommend(request)
80
- Engine->>Engine: TryThrowIfNotLoaded()
81
-
82
- alt Provider specified
83
- Engine->>Engine: Use request.Provider
84
- else No provider
85
- Engine->>Engine: Use first available
86
- end
87
-
88
- Engine->>Engine: GetRecommendationEntities(request)
89
-
90
- alt From List
91
- Engine->>DB: Load List + List Details
92
- Engine->>DB: Load entity records by IDs
93
- else From EntityAndRecordsInfo
94
- Engine->>DB: Load records by entity name + IDs
95
- else Pre-built
96
- Engine->>Engine: Validate Recommendations array
97
- end
98
-
99
- Engine->>DB: Create Recommendation Run (Status: In Progress)
100
-
101
- opt CreateErrorList = true
102
- Engine->>DB: Create error tracking List
103
- end
104
-
105
- Engine->>CF: CreateInstance(provider.Name)
106
- CF-->>Engine: Provider instance
107
-
108
- Engine->>Provider: Recommend(request)
109
-
110
- loop For each recommendation
111
- Provider->>Provider: Call external API
112
- Provider->>DB: SaveRecommendation + Items
113
- end
114
-
115
- Provider-->>Engine: RecommendationResult
116
-
117
- Engine->>DB: Update Run (Completed/Error)
118
- Engine-->>Caller: RecommendationResult
119
- ```
120
-
121
- ## Core Components
122
-
123
- ### RecommendationEngineBase
124
-
125
- A singleton engine that manages the recommendation lifecycle.
126
-
127
- ```typescript
128
- import { RecommendationEngineBase } from '@memberjunction/ai-recommendations';
129
-
130
- // Access the singleton
131
- const engine = RecommendationEngineBase.Instance;
132
-
133
- // Initialize (loads Recommendation Providers metadata)
134
- await engine.Config(false, contextUser);
135
-
136
- // Run recommendations
137
- const result = await engine.Recommend(request);
138
- ```
139
-
140
- **Key properties and methods:**
141
-
142
- | Member | Description |
143
- |---|---|
144
- | `Instance` | Static getter for the singleton instance |
145
- | `RecommendationProviders` | Array of `RecommendationProviderEntity` loaded from metadata |
146
- | `Config(forceRefresh?, contextUser?, provider?)` | Loads provider metadata into cache |
147
- | `Recommend<T>(request)` | Runs the full recommendation pipeline |
148
-
149
- ### RecommendationProviderBase
150
-
151
- Abstract base class for implementing recommendation providers.
152
-
153
- ```mermaid
154
- classDiagram
155
- class RecommendationProviderBase {
156
- <<abstract>>
157
- -_md : Metadata
158
- -_ContextUser : UserInfo
159
- +ContextUser : UserInfo
160
- +Recommend(request)* RecommendationResult
161
- #SaveRecommendation(rec, runID, items) boolean
162
- }
163
-
164
- class ConcreteProvider {
165
- +Recommend(request) RecommendationResult
166
- }
167
-
168
- RecommendationProviderBase <|-- ConcreteProvider
169
-
170
- style RecommendationProviderBase fill:#2d6a9f,stroke:#1a4971,color:#fff
171
- style ConcreteProvider fill:#2d8659,stroke:#1a5c3a,color:#fff
172
- ```
173
-
174
- The `SaveRecommendation` helper method handles:
175
- 1. Setting the `RecommendationRunID` on the recommendation entity
176
- 2. Saving the recommendation record
177
- 3. Linking and saving all `RecommendationItemEntity` records
178
-
179
- ### RecommendationRequest\<T\>
180
-
181
- The request object supports three ways to specify source records:
182
-
183
- ```mermaid
184
- graph TD
185
- RR["RecommendationRequest"]
186
- OPT1["Recommendations[]<br/>Pre-built entities"]
187
- OPT2["EntityAndRecordsInfo<br/>Entity name + Record IDs"]
188
- OPT3["ListID<br/>MJ List reference"]
189
-
190
- RR --> OPT1
191
- RR --> OPT2
192
- RR --> OPT3
193
-
194
- style RR fill:#2d6a9f,stroke:#1a4971,color:#fff
195
- style OPT1 fill:#2d8659,stroke:#1a5c3a,color:#fff
196
- style OPT2 fill:#2d8659,stroke:#1a5c3a,color:#fff
197
- style OPT3 fill:#2d8659,stroke:#1a5c3a,color:#fff
198
- ```
199
-
200
- | Field | Type | Description |
201
- |---|---|---|
202
- | `Recommendations` | `RecommendationEntity[]` | Pre-built unsaved recommendation entities |
203
- | `EntityAndRecordsInfo` | `{ EntityName, RecordIDs }` | Entity name and array of record IDs to process |
204
- | `ListID` | `string` | ID of a MJ List whose details become the source records |
205
- | `Provider` | `RecommendationProviderEntity` | Specific provider to use (defaults to first available) |
206
- | `CurrentUser` | `UserInfo` | User context |
207
- | `Options` | `T` | Generic additional options passed to the provider |
208
- | `CreateErrorList` | `boolean` | Whether to create an error tracking list |
209
- | `RunID` | `string` | Set automatically by the engine |
210
- | `ErrorListID` | `string` | Set automatically if error list is created |
211
-
212
- ### RecommendationResult
213
-
214
- ```typescript
215
- class RecommendationResult {
216
- Request: RecommendationRequest;
217
- RecommendationRun?: RecommendationRunEntity;
218
- RecommendationItems?: RecommendationItemEntity[];
219
- Success: boolean;
220
- ErrorMessage: string;
221
-
222
- AppendWarning(message: string): void; // Adds warning without setting Success=false
223
- AppendError(message: string): void; // Adds error and sets Success=false
224
- GetErrorMessages(): string[]; // Splits ErrorMessage into array
225
- }
226
- ```
227
-
228
- ## Usage
229
-
230
- ### Running Recommendations from a List
231
-
232
- ```typescript
233
- import { RecommendationEngineBase } from '@memberjunction/ai-recommendations';
234
- import { RecommendationRequest } from '@memberjunction/ai-recommendations';
235
-
236
- const engine = RecommendationEngineBase.Instance;
237
- await engine.Config(false, contextUser);
238
-
239
- const request = new RecommendationRequest();
240
- request.ListID = 'list-uuid';
241
- request.CurrentUser = contextUser;
242
- request.CreateErrorList = true;
243
-
244
- const result = await engine.Recommend(request);
245
-
246
- if (result.Success) {
247
- console.log(`Generated ${result.RecommendationItems?.length ?? 0} items`);
248
- } else {
249
- console.error(result.ErrorMessage);
250
- }
251
- ```
252
-
253
- ### Running Recommendations by Entity and Record IDs
254
-
255
- ```typescript
256
- const request = new RecommendationRequest();
257
- request.EntityAndRecordsInfo = {
258
- EntityName: 'Products',
259
- RecordIDs: ['id-1', 'id-2', 'id-3']
260
- };
261
- request.CurrentUser = contextUser;
262
-
263
- const result = await engine.Recommend(request);
264
- ```
265
-
266
- ### Implementing a Provider
267
-
268
- ```typescript
269
- import { RecommendationProviderBase } from '@memberjunction/ai-recommendations';
270
- import { RecommendationRequest, RecommendationResult } from '@memberjunction/ai-recommendations';
271
- import { RegisterClass } from '@memberjunction/global';
272
- import { Metadata } from '@memberjunction/core';
273
- import { RecommendationItemEntity } from '@memberjunction/core-entities';
274
-
275
- @RegisterClass(RecommendationProviderBase, 'My Recommendation Provider')
276
- export class MyProvider extends RecommendationProviderBase {
277
- async Recommend(request: RecommendationRequest): Promise<RecommendationResult> {
278
- const result = new RecommendationResult(request);
279
- const md = new Metadata();
280
-
281
- for (const rec of request.Recommendations) {
282
- // Call your recommendation API/algorithm
283
- const suggestions = await this.getSuggestions(rec.SourceEntityRecordID);
284
-
285
- const items: RecommendationItemEntity[] = [];
286
- for (const suggestion of suggestions) {
287
- const item = await md.GetEntityObject<RecommendationItemEntity>(
288
- 'Recommendation Items', request.CurrentUser
289
- );
290
- item.NewRecord();
291
- item.DestinationEntityID = suggestion.entityID;
292
- item.DestinationEntityRecordID = suggestion.recordID;
293
- item.MatchProbability = suggestion.score;
294
- items.push(item);
295
- }
296
-
297
- await this.SaveRecommendation(rec, request.RunID, items);
298
- }
299
-
300
- return result;
301
- }
302
-
303
- private async getSuggestions(recordID: string): Promise<Suggestion[]> {
304
- // Your recommendation logic here
305
- return [];
306
- }
307
- }
308
- ```
309
-
310
- ## Database Entities
311
-
312
- ```mermaid
313
- erDiagram
314
- RECOMMENDATION_PROVIDERS {
315
- string ID PK
316
- string Name
317
- string Description
318
- }
319
-
320
- RECOMMENDATION_RUNS {
321
- string ID PK
322
- string RecommendationProviderID FK
323
- string RunByUserID FK
324
- datetime StartDate
325
- string Status
326
- string Description
327
- }
328
-
329
- RECOMMENDATIONS {
330
- string ID PK
331
- string RecommendationRunID FK
332
- string SourceEntityID FK
333
- string SourceEntityRecordID
334
- }
335
-
336
- RECOMMENDATION_ITEMS {
337
- string ID PK
338
- string RecommendationID FK
339
- string DestinationEntityID FK
340
- string DestinationEntityRecordID
341
- float MatchProbability
342
- }
343
-
344
- LISTS {
345
- string ID PK
346
- string Name
347
- string EntityID FK
348
- string UserID FK
349
- }
350
-
351
- RECOMMENDATION_PROVIDERS ||--o{ RECOMMENDATION_RUNS : has
352
- RECOMMENDATION_RUNS ||--o{ RECOMMENDATIONS : contains
353
- RECOMMENDATIONS ||--o{ RECOMMENDATION_ITEMS : produces
354
- ```
355
-
356
- ## Dependencies
357
-
358
- | Package | Purpose |
359
- |---|---|
360
- | `@memberjunction/core` | `BaseEngine`, `Metadata`, `RunView`, `UserInfo`, `LogStatus` |
361
- | `@memberjunction/core-entities` | `RecommendationEntity`, `RecommendationRunEntity`, `RecommendationItemEntity`, `RecommendationProviderEntity`, `ListEntity` |
362
- | `@memberjunction/global` | `MJGlobal` class factory for provider discovery |
363
-
364
- ## Development
365
-
366
- ```bash
367
- # Build
368
- npm run build
369
-
370
- # Development mode
371
- npm run start
372
- ```
373
-
374
- ## License
375
-
376
- ISC