@memberjunction/core-entities-server 5.44.0 → 5.45.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/custom/MJAIPromptRunEntityServer.server.js +2 -2
- package/dist/custom/MJAIPromptRunEntityServer.server.js.map +1 -1
- package/dist/custom/MJAISkillEntityServer.server.d.ts +18 -0
- package/dist/custom/MJAISkillEntityServer.server.d.ts.map +1 -0
- package/dist/custom/MJAISkillEntityServer.server.js +34 -0
- package/dist/custom/MJAISkillEntityServer.server.js.map +1 -0
- package/dist/custom/MJArtifactVersionEntityServer.server.js +1 -1
- package/dist/custom/MJArtifactVersionEntityServer.server.js.map +1 -1
- package/dist/custom/MJConversationDetailEntityServer.server.js +1 -1
- package/dist/custom/MJConversationDetailEntityServer.server.js.map +1 -1
- package/dist/custom/MJUserRoutineEntityServer.server.d.ts +56 -0
- package/dist/custom/MJUserRoutineEntityServer.server.d.ts.map +1 -0
- package/dist/custom/MJUserRoutineEntityServer.server.js +152 -0
- package/dist/custom/MJUserRoutineEntityServer.server.js.map +1 -0
- package/dist/custom/MJUserRoutineRecipientEntityServer.server.d.ts +17 -0
- package/dist/custom/MJUserRoutineRecipientEntityServer.server.d.ts.map +1 -0
- package/dist/custom/MJUserRoutineRecipientEntityServer.server.js +37 -0
- package/dist/custom/MJUserRoutineRecipientEntityServer.server.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +24 -24
|
@@ -53,8 +53,8 @@ let MJAIPromptRunEntityServer = class MJAIPromptRunEntityServer extends MJAIProm
|
|
|
53
53
|
}
|
|
54
54
|
// Check if CompletedAt was just set (either new record or just changed)
|
|
55
55
|
// For existing records, check if any fields have changed
|
|
56
|
-
const f = this.
|
|
57
|
-
const completedAtChanged = !this.IsSaved || f
|
|
56
|
+
const f = this.GetFieldByName('CompletedAt');
|
|
57
|
+
const completedAtChanged = !this.IsSaved || f?.Dirty;
|
|
58
58
|
if (!completedAtChanged) {
|
|
59
59
|
return false;
|
|
60
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJAIPromptRunEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJAIPromptRunEntityServer.server.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAqB,QAAQ,EAAwC,MAAM,sBAAsB,CAAC;AACrH,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEjF;;;;;;GAMG;AAEI,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,2BAA2B;IAEtE;;OAEG;IACM,KAAK,CAAC,IAAI,CAAC,OAA2B;QAC3C,IAAI,CAAC;YACD,sCAAsC;YACtC,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAEvD,IAAI,mBAAmB,EAAE,CAAC;gBACtB,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACrC,CAAC;YAED,sEAAsE;YACtE,IAAI,CAAC,eAAe,EAAE,CAAC;YAEvB,gDAAgD;YAChD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEzC,0FAA0F;YAC1F,8CAA8C;YAC9C,IAAI,MAAM,IAAI,mBAAmB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;gBACtE,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACzC,CAAC;YAED,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,OAAO,GAAG,EAAE,CAAC;YACT,QAAQ,CAAC,4CAA4C,GAAG,EAAE,CAAC,CAAC;YAC5D,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;IAED;;;OAGG;IACO,mBAAmB;QACzB,oDAAoD;QACpD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,wEAAwE;QACxE,yDAAyD;QACzD,MAAM,CAAC,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"MJAIPromptRunEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJAIPromptRunEntityServer.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { EntitySaveOptions } from '@memberjunction/core';
|
|
2
|
+
import { MJAISkillEntity } from '@memberjunction/core-entities';
|
|
3
|
+
/**
|
|
4
|
+
* Server-side AISkill entity that defaults `CreatedByUserID` to the context user on
|
|
5
|
+
* first save when the caller didn't set it explicitly.
|
|
6
|
+
*
|
|
7
|
+
* `CreatedByUserID` is NOT NULL with no DB default, and ownership drives the
|
|
8
|
+
* open-by-default permission model (only the owner may Edit/Delete when no explicit
|
|
9
|
+
* grants exist). Interactive paths (the skill form, `SkillImportExportService`) set it
|
|
10
|
+
* from their context user by construction, but generic programmatic paths — the
|
|
11
|
+
* `Create Record` action used by agents such as SkillSmith, Remote Operations,
|
|
12
|
+
* scripts — have no natural place to inject it. Defaulting here keeps every server
|
|
13
|
+
* save path working and correctly attributes ownership to the acting user.
|
|
14
|
+
*/
|
|
15
|
+
export declare class MJAISkillEntityServer extends MJAISkillEntity {
|
|
16
|
+
Save(options?: EntitySaveOptions): Promise<boolean>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=MJAISkillEntityServer.server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJAISkillEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJAISkillEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE;;;;;;;;;;;GAWG;AACH,qBACa,qBAAsB,SAAQ,eAAe;IAChC,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CAM5E"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { BaseEntity } from '@memberjunction/core';
|
|
8
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
9
|
+
import { MJAISkillEntity } from '@memberjunction/core-entities';
|
|
10
|
+
/**
|
|
11
|
+
* Server-side AISkill entity that defaults `CreatedByUserID` to the context user on
|
|
12
|
+
* first save when the caller didn't set it explicitly.
|
|
13
|
+
*
|
|
14
|
+
* `CreatedByUserID` is NOT NULL with no DB default, and ownership drives the
|
|
15
|
+
* open-by-default permission model (only the owner may Edit/Delete when no explicit
|
|
16
|
+
* grants exist). Interactive paths (the skill form, `SkillImportExportService`) set it
|
|
17
|
+
* from their context user by construction, but generic programmatic paths — the
|
|
18
|
+
* `Create Record` action used by agents such as SkillSmith, Remote Operations,
|
|
19
|
+
* scripts — have no natural place to inject it. Defaulting here keeps every server
|
|
20
|
+
* save path working and correctly attributes ownership to the acting user.
|
|
21
|
+
*/
|
|
22
|
+
let MJAISkillEntityServer = class MJAISkillEntityServer extends MJAISkillEntity {
|
|
23
|
+
async Save(options) {
|
|
24
|
+
if (!this.IsSaved && !this.CreatedByUserID && this.ContextCurrentUser) {
|
|
25
|
+
this.CreatedByUserID = this.ContextCurrentUser.ID;
|
|
26
|
+
}
|
|
27
|
+
return super.Save(options);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
MJAISkillEntityServer = __decorate([
|
|
31
|
+
RegisterClass(BaseEntity, 'MJ: AI Skills')
|
|
32
|
+
], MJAISkillEntityServer);
|
|
33
|
+
export { MJAISkillEntityServer };
|
|
34
|
+
//# sourceMappingURL=MJAISkillEntityServer.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJAISkillEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJAISkillEntityServer.server.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE;;;;;;;;;;;GAWG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,eAAe;IACtC,KAAK,CAAC,IAAI,CAAC,OAA2B;QAClD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACpE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;CACJ,CAAA;AAPY,qBAAqB;IADjC,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC;GAC9B,qBAAqB,CAOjC"}
|
|
@@ -68,7 +68,7 @@ let MJArtifactVersionEntityServer = class MJArtifactVersionEntityServer extends
|
|
|
68
68
|
* @param options
|
|
69
69
|
*/
|
|
70
70
|
async Save(options) {
|
|
71
|
-
const contentDirty = this.IsSaved === false || this.
|
|
71
|
+
const contentDirty = this.IsSaved === false || this.GetFieldByName("Content")?.Dirty;
|
|
72
72
|
if (contentDirty && this.Content) {
|
|
73
73
|
try {
|
|
74
74
|
// 1. Calculate ContentHash using SHA-256
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJArtifactVersionEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJArtifactVersionEntityServer.server.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAA+B,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AACrH,OAAO,EAAE,uBAAuB,EAA4E,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACrK,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACrD,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAGM,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,uBAAuB;IAAnE;;QACK,uBAAkB,GAAiB,IAAI,CAAC;QACxC,sBAAiB,GAA8C,IAAI,CAAC;IAuRhF,CAAC;IArRG;;;;;OAKG;IACH,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACa,KAAK,CAAC,SAAS,CAAC,YAAiB,EAAE,yBAAoC;QACnF,6BAA6B;QAC7B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;QAE9E,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,iDAAiD;QACjD,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAmC;gBAC9D,UAAU,EAAE,iCAAiC;gBAC7C,WAAW,EAAE,sBAAsB,IAAI,CAAC,EAAE,GAAG;gBAC7C,UAAU,EAAE,eAAe;aAC9B,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAE5B,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;YAChC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,QAAQ,CAAC,iDAAiD,IAAI,CAAC,EAAE,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACxH,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACM,KAAK,CAAC,IAAI,CAAC,OAA2B;QAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"MJArtifactVersionEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJArtifactVersionEntityServer.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@ let MJConversationDetailEntityServer = class MJConversationDetailEntityServer ex
|
|
|
23
23
|
// Only check for message changes on existing records (not new records)
|
|
24
24
|
if (!this.IsSaved) {
|
|
25
25
|
// Check if the Message field is dirty (has been modified)
|
|
26
|
-
const messageField = this.
|
|
26
|
+
const messageField = this.GetFieldByName('Message');
|
|
27
27
|
if (messageField && messageField.Dirty && messageField.OldValue !== undefined) {
|
|
28
28
|
// Message has been changed on an existing record - set the flag
|
|
29
29
|
this.OriginalMessageChanged = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJConversationDetailEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJConversationDetailEntityServer.server.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAE3E;;;;;;GAMG;AAEI,IAAM,gCAAgC,GAAtC,MAAM,gCAAiC,SAAQ,0BAA0B;IAC5E;;;OAGG;IACM,KAAK,CAAC,IAAI,CAAC,OAA2B;QAC3C,uEAAuE;QACvE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,0DAA0D;YAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"MJConversationDetailEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJConversationDetailEntityServer.server.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAE3E;;;;;;GAMG;AAEI,IAAM,gCAAgC,GAAtC,MAAM,gCAAiC,SAAQ,0BAA0B;IAC5E;;;OAGG;IACM,KAAK,CAAC,IAAI,CAAC,OAA2B;QAC3C,uEAAuE;QACvE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,0DAA0D;YAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,YAAY,IAAI,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC5E,gEAAgE;gBAChE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACvC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;CACJ,CAAA;AAlBY,gCAAgC;IAD5C,aAAa,CAAC,UAAU,EAAE,0BAA0B,CAAC;GACzC,gCAAgC,CAkB5C"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { EntityDeleteOptions, EntitySaveOptions, ValidationResult } from '@memberjunction/core';
|
|
2
|
+
import { MJUserRoutineEntity } from '@memberjunction/core-entities';
|
|
3
|
+
/**
|
|
4
|
+
* Server-side UserRoutine entity enforcing the scheduling + ownership invariants of the
|
|
5
|
+
* User Routines feature (P1.5):
|
|
6
|
+
*
|
|
7
|
+
* 1. **NextRunAt maintenance** — on Save, when the schedule inputs changed (CronExpression /
|
|
8
|
+
* Timezone / StartAt dirty) or NextRunAt has never been computed, NextRunAt is recomputed
|
|
9
|
+
* via {@link ComputeRoutineNextRunAt} — the SAME cron helper the
|
|
10
|
+
* `UserRoutineDispatcherDriver` uses, including the StartAt floor. An **explicitly set**
|
|
11
|
+
* NextRunAt is always respected (the dispatcher's claim path advances it directly and
|
|
12
|
+
* must never be second-guessed here).
|
|
13
|
+
* 2. **Validation** — `Validate()` rejects invalid cron expressions (and cron/timezone
|
|
14
|
+
* combinations that cannot produce a next occurrence) and any TargetType without a
|
|
15
|
+
* TargetID (the polymorphic reference has no FK, so this is the integrity backstop).
|
|
16
|
+
* 3. **Ownership defense** — routines are private to their owner. Row-level security for
|
|
17
|
+
* these entities is not yet expressible via version-controlled metadata (RLS filter rows
|
|
18
|
+
* are migration-seeded reference data), so as defense-in-depth a non-Owner-type context
|
|
19
|
+
* user may only save routines they own. Owner-type users (including the system user the
|
|
20
|
+
* scheduler dispatches under) are exempt, which keeps the dispatcher's cross-user
|
|
21
|
+
* LastRunAt/NextRunAt bookkeeping working.
|
|
22
|
+
* 4. **Owner attribution** — first save defaults `UserID` to the context user when unset
|
|
23
|
+
* (mirrors `MJAISkillEntityServer.CreatedByUserID`), so programmatic create paths
|
|
24
|
+
* (Create Record action, Remote Operations, scripts) attribute ownership correctly.
|
|
25
|
+
*/
|
|
26
|
+
export declare class MJUserRoutineEntityServer extends MJUserRoutineEntity {
|
|
27
|
+
Save(options?: EntitySaveOptions): Promise<boolean>;
|
|
28
|
+
Validate(): ValidationResult;
|
|
29
|
+
/**
|
|
30
|
+
* FK cleanup before delete (see BASE_ENTITY_SERVER_PATTERNS): recipients and run
|
|
31
|
+
* bookkeeping rows hang off the routine via RoutineID, so they're removed first —
|
|
32
|
+
* otherwise deleting any routine that has ever run fails on the FK. The underlying
|
|
33
|
+
* Agent Run / Prompt Run / Action Execution Log records the runs LINK to are
|
|
34
|
+
* independent and remain — that's where the real telemetry/audit lives.
|
|
35
|
+
*/
|
|
36
|
+
Delete(options?: EntityDeleteOptions): Promise<boolean>;
|
|
37
|
+
/** Deletes recipient + run rows for this routine. Returns false (with LatestResult intact on the failing row) on the first failure. */
|
|
38
|
+
private deleteDependents;
|
|
39
|
+
/**
|
|
40
|
+
* Recompute NextRunAt when the schedule changed or it was never computed — unless the
|
|
41
|
+
* caller explicitly set NextRunAt on this save (dirty), which always wins (the
|
|
42
|
+
* dispatcher's optimistic claim advances NextRunAt directly).
|
|
43
|
+
*/
|
|
44
|
+
private applyNextRunAtIfNeeded;
|
|
45
|
+
/** Reject invalid cron expressions and cron/timezone combinations that cannot compute a next occurrence. */
|
|
46
|
+
private validateSchedule;
|
|
47
|
+
/** The polymorphic TargetID has no FK — require it whenever a TargetType is set. */
|
|
48
|
+
private validateTarget;
|
|
49
|
+
/**
|
|
50
|
+
* Defense-in-depth ownership gate: a non-Owner-type context user may only save routines
|
|
51
|
+
* they own (compared against the PRE-save owner, so reassigning UserID cannot bypass it).
|
|
52
|
+
* Owner-type users — admins and the scheduler's system user — are exempt.
|
|
53
|
+
*/
|
|
54
|
+
private validateOwnership;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=MJUserRoutineEntityServer.server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJUserRoutineEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJUserRoutineEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,mBAAmB,EAAE,iBAAiB,EAAqD,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE/J,OAAO,EAAE,mBAAmB,EAAwD,MAAM,+BAA+B,CAAC;AAG1H;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBACa,yBAA0B,SAAQ,mBAAmB;IACxC,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAQzD,QAAQ,IAAI,gBAAgB;IAS5C;;;;;;OAMG;IACmB,MAAM,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ7E,uIAAuI;YACzH,gBAAgB;IAqB9B;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAwB9B,4GAA4G;IAC5G,OAAO,CAAC,gBAAgB;IAmBxB,oFAAoF;IACpF,OAAO,CAAC,cAAc;IAWtB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;CAe5B"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { BaseEntity, RunView, ValidationErrorInfo, ValidationErrorType } from '@memberjunction/core';
|
|
8
|
+
import { RegisterClass, UUIDsEqual } from '@memberjunction/global';
|
|
9
|
+
import { MJUserRoutineEntity } from '@memberjunction/core-entities';
|
|
10
|
+
import { CronExpressionHelper, ComputeRoutineNextRunAt } from '@memberjunction/scheduling-engine';
|
|
11
|
+
/**
|
|
12
|
+
* Server-side UserRoutine entity enforcing the scheduling + ownership invariants of the
|
|
13
|
+
* User Routines feature (P1.5):
|
|
14
|
+
*
|
|
15
|
+
* 1. **NextRunAt maintenance** — on Save, when the schedule inputs changed (CronExpression /
|
|
16
|
+
* Timezone / StartAt dirty) or NextRunAt has never been computed, NextRunAt is recomputed
|
|
17
|
+
* via {@link ComputeRoutineNextRunAt} — the SAME cron helper the
|
|
18
|
+
* `UserRoutineDispatcherDriver` uses, including the StartAt floor. An **explicitly set**
|
|
19
|
+
* NextRunAt is always respected (the dispatcher's claim path advances it directly and
|
|
20
|
+
* must never be second-guessed here).
|
|
21
|
+
* 2. **Validation** — `Validate()` rejects invalid cron expressions (and cron/timezone
|
|
22
|
+
* combinations that cannot produce a next occurrence) and any TargetType without a
|
|
23
|
+
* TargetID (the polymorphic reference has no FK, so this is the integrity backstop).
|
|
24
|
+
* 3. **Ownership defense** — routines are private to their owner. Row-level security for
|
|
25
|
+
* these entities is not yet expressible via version-controlled metadata (RLS filter rows
|
|
26
|
+
* are migration-seeded reference data), so as defense-in-depth a non-Owner-type context
|
|
27
|
+
* user may only save routines they own. Owner-type users (including the system user the
|
|
28
|
+
* scheduler dispatches under) are exempt, which keeps the dispatcher's cross-user
|
|
29
|
+
* LastRunAt/NextRunAt bookkeeping working.
|
|
30
|
+
* 4. **Owner attribution** — first save defaults `UserID` to the context user when unset
|
|
31
|
+
* (mirrors `MJAISkillEntityServer.CreatedByUserID`), so programmatic create paths
|
|
32
|
+
* (Create Record action, Remote Operations, scripts) attribute ownership correctly.
|
|
33
|
+
*/
|
|
34
|
+
let MJUserRoutineEntityServer = class MJUserRoutineEntityServer extends MJUserRoutineEntity {
|
|
35
|
+
async Save(options) {
|
|
36
|
+
if (!this.IsSaved && !this.UserID && this.ContextCurrentUser) {
|
|
37
|
+
this.UserID = this.ContextCurrentUser.ID;
|
|
38
|
+
}
|
|
39
|
+
this.applyNextRunAtIfNeeded();
|
|
40
|
+
return super.Save(options);
|
|
41
|
+
}
|
|
42
|
+
Validate() {
|
|
43
|
+
const result = super.Validate();
|
|
44
|
+
this.validateSchedule(result);
|
|
45
|
+
this.validateTarget(result);
|
|
46
|
+
this.validateOwnership(result);
|
|
47
|
+
result.Success = result.Success && result.Errors.length === 0;
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* FK cleanup before delete (see BASE_ENTITY_SERVER_PATTERNS): recipients and run
|
|
52
|
+
* bookkeeping rows hang off the routine via RoutineID, so they're removed first —
|
|
53
|
+
* otherwise deleting any routine that has ever run fails on the FK. The underlying
|
|
54
|
+
* Agent Run / Prompt Run / Action Execution Log records the runs LINK to are
|
|
55
|
+
* independent and remain — that's where the real telemetry/audit lives.
|
|
56
|
+
*/
|
|
57
|
+
async Delete(options) {
|
|
58
|
+
const deps = await this.deleteDependents();
|
|
59
|
+
if (!deps) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
return super.Delete(options);
|
|
63
|
+
}
|
|
64
|
+
/** Deletes recipient + run rows for this routine. Returns false (with LatestResult intact on the failing row) on the first failure. */
|
|
65
|
+
async deleteDependents() {
|
|
66
|
+
const rv = new RunView(this.RunViewProviderToUse);
|
|
67
|
+
const [recipients, runs] = await rv.RunViews([
|
|
68
|
+
{ EntityName: 'MJ: User Routine Recipients', ExtraFilter: `RoutineID='${this.ID}'`, ResultType: 'entity_object' },
|
|
69
|
+
{ EntityName: 'MJ: User Routine Runs', ExtraFilter: `RoutineID='${this.ID}'`, ResultType: 'entity_object' },
|
|
70
|
+
], this.ContextCurrentUser);
|
|
71
|
+
const rows = [
|
|
72
|
+
...(recipients.Success ? recipients.Results : []),
|
|
73
|
+
...(runs.Success ? runs.Results : []),
|
|
74
|
+
];
|
|
75
|
+
for (const row of rows) {
|
|
76
|
+
if (!(await row.Delete())) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Recompute NextRunAt when the schedule changed or it was never computed — unless the
|
|
84
|
+
* caller explicitly set NextRunAt on this save (dirty), which always wins (the
|
|
85
|
+
* dispatcher's optimistic claim advances NextRunAt directly).
|
|
86
|
+
*/
|
|
87
|
+
applyNextRunAtIfNeeded() {
|
|
88
|
+
// Only a dirty NON-NULL NextRunAt is an explicit claim/advance ("run now", the
|
|
89
|
+
// dispatcher's optimistic claim) and wins. A null can never be a claim — and the
|
|
90
|
+
// GraphQL create path marks every client-provided field dirty, including a
|
|
91
|
+
// client's untouched null, so a null-dirty NextRunAt must not suppress the
|
|
92
|
+
// initial computation (it previously left new UI-created routines unscheduled
|
|
93
|
+
// until the dispatcher's seeding sweep).
|
|
94
|
+
const explicitlySet = this.GetFieldByName('NextRunAt')?.Dirty === true && this.NextRunAt != null;
|
|
95
|
+
if (explicitlySet) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const scheduleChanged = ['CronExpression', 'Timezone', 'StartAt']
|
|
99
|
+
.some(fieldName => this.GetFieldByName(fieldName)?.Dirty === true);
|
|
100
|
+
if (this.NextRunAt != null && !scheduleChanged) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
this.NextRunAt = ComputeRoutineNextRunAt(this.CronExpression, this.Timezone, new Date(), this.StartAt);
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// Invalid cron/timezone — leave NextRunAt untouched; Validate() reports the
|
|
108
|
+
// problem and fails the save with a meaningful message.
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/** Reject invalid cron expressions and cron/timezone combinations that cannot compute a next occurrence. */
|
|
112
|
+
validateSchedule(result) {
|
|
113
|
+
const cronResult = CronExpressionHelper.ValidateExpression(this.CronExpression);
|
|
114
|
+
if (!cronResult.Success) {
|
|
115
|
+
result.Errors.push(...cronResult.Errors);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
ComputeRoutineNextRunAt(this.CronExpression, this.Timezone, new Date(), this.StartAt);
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
result.Errors.push(new ValidationErrorInfo('CronExpression', `Cannot compute a next run time from CronExpression '${this.CronExpression}' with Timezone '${this.Timezone}': ` +
|
|
123
|
+
`${error instanceof Error ? error.message : String(error)}`, this.CronExpression, ValidationErrorType.Failure));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/** The polymorphic TargetID has no FK — require it whenever a TargetType is set. */
|
|
127
|
+
validateTarget(result) {
|
|
128
|
+
if (this.TargetType && !this.TargetID) {
|
|
129
|
+
result.Errors.push(new ValidationErrorInfo('TargetID', `TargetID is required — a routine with TargetType '${this.TargetType}' must reference a ${this.TargetType} record.`, this.TargetID, ValidationErrorType.Failure));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Defense-in-depth ownership gate: a non-Owner-type context user may only save routines
|
|
134
|
+
* they own (compared against the PRE-save owner, so reassigning UserID cannot bypass it).
|
|
135
|
+
* Owner-type users — admins and the scheduler's system user — are exempt.
|
|
136
|
+
*/
|
|
137
|
+
validateOwnership(result) {
|
|
138
|
+
const user = this.ContextCurrentUser;
|
|
139
|
+
if (!user || user.Type?.trim().toLowerCase() === 'owner') {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const preSaveOwnerId = this.GetFieldByName('UserID')?.OldValue ?? this.UserID;
|
|
143
|
+
if (preSaveOwnerId && !UUIDsEqual(preSaveOwnerId, user.ID)) {
|
|
144
|
+
result.Errors.push(new ValidationErrorInfo('UserID', 'Routines are private to their owner — you can only modify routines you own.', this.UserID, ValidationErrorType.Failure));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
MJUserRoutineEntityServer = __decorate([
|
|
149
|
+
RegisterClass(BaseEntity, 'MJ: User Routines')
|
|
150
|
+
], MJUserRoutineEntityServer);
|
|
151
|
+
export { MJUserRoutineEntityServer };
|
|
152
|
+
//# sourceMappingURL=MJUserRoutineEntityServer.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJUserRoutineEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJUserRoutineEntityServer.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ValidationResult } from '@memberjunction/core';
|
|
2
|
+
import { MJUserRoutineRecipientEntity } from '@memberjunction/core-entities';
|
|
3
|
+
/**
|
|
4
|
+
* Server-side UserRoutineRecipient entity enforcing the recipient-exclusivity invariant:
|
|
5
|
+
* **exactly one** of `UserID` / `Email` must be set — never both, never neither.
|
|
6
|
+
*
|
|
7
|
+
* Mirrors `MJAISkillPermissionEntityServer`'s grantee-exclusivity gate. A recipient is
|
|
8
|
+
* either an internal MJ user (UserID → in-app and/or email via the user's address) or an
|
|
9
|
+
* external email address (Email) — a row carrying both is ambiguous and a row carrying
|
|
10
|
+
* neither is undeliverable. Enforced here as a version-controlled, deterministic
|
|
11
|
+
* server-side gate so the invariant holds on every server save path (`Save()` calls
|
|
12
|
+
* `Validate()` and the ClassFactory resolves this higher-priority subclass server-side).
|
|
13
|
+
*/
|
|
14
|
+
export declare class MJUserRoutineRecipientEntityServer extends MJUserRoutineRecipientEntity {
|
|
15
|
+
Validate(): ValidationResult;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=MJUserRoutineRecipientEntityServer.server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJUserRoutineRecipientEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJUserRoutineRecipientEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwD,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE9G,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAE7E;;;;;;;;;;GAUG;AACH,qBACa,kCAAmC,SAAQ,4BAA4B;IAChE,QAAQ,IAAI,gBAAgB;CAe/C"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { BaseEntity, ValidationErrorInfo, ValidationErrorType } from '@memberjunction/core';
|
|
8
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
9
|
+
import { MJUserRoutineRecipientEntity } from '@memberjunction/core-entities';
|
|
10
|
+
/**
|
|
11
|
+
* Server-side UserRoutineRecipient entity enforcing the recipient-exclusivity invariant:
|
|
12
|
+
* **exactly one** of `UserID` / `Email` must be set — never both, never neither.
|
|
13
|
+
*
|
|
14
|
+
* Mirrors `MJAISkillPermissionEntityServer`'s grantee-exclusivity gate. A recipient is
|
|
15
|
+
* either an internal MJ user (UserID → in-app and/or email via the user's address) or an
|
|
16
|
+
* external email address (Email) — a row carrying both is ambiguous and a row carrying
|
|
17
|
+
* neither is undeliverable. Enforced here as a version-controlled, deterministic
|
|
18
|
+
* server-side gate so the invariant holds on every server save path (`Save()` calls
|
|
19
|
+
* `Validate()` and the ClassFactory resolves this higher-priority subclass server-side).
|
|
20
|
+
*/
|
|
21
|
+
let MJUserRoutineRecipientEntityServer = class MJUserRoutineRecipientEntityServer extends MJUserRoutineRecipientEntity {
|
|
22
|
+
Validate() {
|
|
23
|
+
const result = super.Validate();
|
|
24
|
+
const hasUser = this.UserID != null;
|
|
25
|
+
const hasEmail = this.Email != null && this.Email.trim().length > 0;
|
|
26
|
+
if ((hasUser && hasEmail) || (!hasUser && !hasEmail)) {
|
|
27
|
+
result.Errors.push(new ValidationErrorInfo('UserID/Email', 'You must specify either a User or an Email address, but not both and not neither.', `UserID: ${this.UserID}, Email: ${this.Email}`, ValidationErrorType.Failure));
|
|
28
|
+
}
|
|
29
|
+
result.Success = result.Success && result.Errors.length === 0;
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
MJUserRoutineRecipientEntityServer = __decorate([
|
|
34
|
+
RegisterClass(BaseEntity, 'MJ: User Routine Recipients')
|
|
35
|
+
], MJUserRoutineRecipientEntityServer);
|
|
36
|
+
export { MJUserRoutineRecipientEntityServer };
|
|
37
|
+
//# sourceMappingURL=MJUserRoutineRecipientEntityServer.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJUserRoutineRecipientEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJUserRoutineRecipientEntityServer.server.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,mBAAmB,EAAoB,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAE7E;;;;;;;;;;GAUG;AAEI,IAAM,kCAAkC,GAAxC,MAAM,kCAAmC,SAAQ,4BAA4B;IAChE,QAAQ;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CACtC,cAAc,EACd,mFAAmF,EACnF,WAAW,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,KAAK,EAAE,EAC9C,mBAAmB,CAAC,OAAO,CAC9B,CAAC,CAAC;QACP,CAAC;QACD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ,CAAA;AAhBY,kCAAkC;IAD9C,aAAa,CAAC,UAAU,EAAE,6BAA6B,CAAC;GAC5C,kCAAkC,CAgB9C"}
|
package/dist/index.d.ts
CHANGED
|
@@ -28,6 +28,9 @@ export * from './custom/MJAIAgentSessionBridgeEntityServer.server.js';
|
|
|
28
28
|
export * from './custom/MJAIAgentSessionBridgeParticipantEntityServer.server.js';
|
|
29
29
|
export * from './custom/MJAIRemoteBrowserProviderEntityServer.server.js';
|
|
30
30
|
export * from './custom/MJAISkillPermissionEntityServer.server.js';
|
|
31
|
+
export * from './custom/MJAISkillEntityServer.server.js';
|
|
32
|
+
export * from './custom/MJUserRoutineEntityServer.server.js';
|
|
33
|
+
export * from './custom/MJUserRoutineRecipientEntityServer.server.js';
|
|
31
34
|
export * from './custom/json-schema-lite.js';
|
|
32
35
|
export * from './custom/IntegrationLLMPKCallback.js';
|
|
33
36
|
export * from './custom/util.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,uDAAuD,CAAC;AACtE,cAAc,oDAAoD,CAAC;AACnE,cAAc,+DAA+D,CAAC;AAC9E,cAAc,uDAAuD,CAAC;AACtE,cAAc,iDAAiD,CAAC;AAChE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AAAA,cAAc,+CAA+C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,uDAAuD,CAAC;AACtE,cAAc,oDAAoD,CAAC;AACnE,cAAc,+DAA+D,CAAC;AAC9E,cAAc,uDAAuD,CAAC;AACtE,cAAc,iDAAiD,CAAC;AAChE,cAAc,uCAAuC,CAAC;AACtD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oDAAoD,CAAC;AACnE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AAAA,cAAc,+CAA+C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -28,6 +28,9 @@ export * from './custom/MJAIAgentSessionBridgeEntityServer.server.js';
|
|
|
28
28
|
export * from './custom/MJAIAgentSessionBridgeParticipantEntityServer.server.js';
|
|
29
29
|
export * from './custom/MJAIRemoteBrowserProviderEntityServer.server.js';
|
|
30
30
|
export * from './custom/MJAISkillPermissionEntityServer.server.js';
|
|
31
|
+
export * from './custom/MJAISkillEntityServer.server.js';
|
|
32
|
+
export * from './custom/MJUserRoutineEntityServer.server.js';
|
|
33
|
+
export * from './custom/MJUserRoutineRecipientEntityServer.server.js';
|
|
31
34
|
export * from './custom/json-schema-lite.js';
|
|
32
35
|
export * from './custom/IntegrationLLMPKCallback.js';
|
|
33
36
|
export * from './custom/util.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,uDAAuD,CAAC;AACtE,cAAc,oDAAoD,CAAC;AACnE,cAAc,+DAA+D,CAAC;AAC9E,cAAc,uDAAuD,CAAC;AACtE,cAAc,iDAAiD,CAAC;AAChE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AAAA,cAAc,+CAA+C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,uDAAuD,CAAC;AACtE,cAAc,oDAAoD,CAAC;AACnE,cAAc,+DAA+D,CAAC;AAC9E,cAAc,uDAAuD,CAAC;AACtE,cAAc,iDAAiD,CAAC;AAChE,cAAc,uCAAuC,CAAC;AACtD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oDAAoD,CAAC;AACnE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AAAA,cAAc,+CAA+C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/core-entities-server",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.45.0",
|
|
5
5
|
"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",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -21,29 +21,29 @@
|
|
|
21
21
|
"typescript": "^5.9.3"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@memberjunction/actions-base": "5.
|
|
25
|
-
"@memberjunction/ai": "5.
|
|
26
|
-
"@memberjunction/ai-core-plus": "5.
|
|
27
|
-
"@memberjunction/ai-engine-base": "5.
|
|
28
|
-
"@memberjunction/ai-prompts": "5.
|
|
29
|
-
"@memberjunction/ai-provider-bundle": "5.
|
|
30
|
-
"@memberjunction/ai-vector-dupe": "5.
|
|
31
|
-
"@memberjunction/ai-vectordb": "5.
|
|
32
|
-
"@memberjunction/ai-vectors-memory": "5.
|
|
33
|
-
"@memberjunction/aiengine": "5.
|
|
34
|
-
"@memberjunction/core": "5.
|
|
35
|
-
"@memberjunction/core-entities": "5.
|
|
36
|
-
"@memberjunction/doc-utils": "5.
|
|
37
|
-
"@memberjunction/generic-database-provider": "5.
|
|
38
|
-
"@memberjunction/global": "5.
|
|
39
|
-
"@memberjunction/integration-engine": "5.
|
|
40
|
-
"@memberjunction/integration-pk-classifier": "5.
|
|
41
|
-
"@memberjunction/
|
|
42
|
-
"@memberjunction/sql-converter": "5.
|
|
43
|
-
"@memberjunction/sql-dialect": "5.
|
|
44
|
-
"@memberjunction/sql-parser": "5.
|
|
45
|
-
"@memberjunction/sqlserver-dataprovider": "5.
|
|
46
|
-
"@memberjunction/tag-engine": "5.
|
|
24
|
+
"@memberjunction/actions-base": "5.45.0",
|
|
25
|
+
"@memberjunction/ai": "5.45.0",
|
|
26
|
+
"@memberjunction/ai-core-plus": "5.45.0",
|
|
27
|
+
"@memberjunction/ai-engine-base": "5.45.0",
|
|
28
|
+
"@memberjunction/ai-prompts": "5.45.0",
|
|
29
|
+
"@memberjunction/ai-provider-bundle": "5.45.0",
|
|
30
|
+
"@memberjunction/ai-vector-dupe": "5.45.0",
|
|
31
|
+
"@memberjunction/ai-vectordb": "5.45.0",
|
|
32
|
+
"@memberjunction/ai-vectors-memory": "5.45.0",
|
|
33
|
+
"@memberjunction/aiengine": "5.45.0",
|
|
34
|
+
"@memberjunction/core": "5.45.0",
|
|
35
|
+
"@memberjunction/core-entities": "5.45.0",
|
|
36
|
+
"@memberjunction/doc-utils": "5.45.0",
|
|
37
|
+
"@memberjunction/generic-database-provider": "5.45.0",
|
|
38
|
+
"@memberjunction/global": "5.45.0",
|
|
39
|
+
"@memberjunction/integration-engine": "5.45.0",
|
|
40
|
+
"@memberjunction/integration-pk-classifier": "5.45.0",
|
|
41
|
+
"@memberjunction/scheduling-engine": "5.45.0",
|
|
42
|
+
"@memberjunction/sql-converter": "5.45.0",
|
|
43
|
+
"@memberjunction/sql-dialect": "5.45.0",
|
|
44
|
+
"@memberjunction/sql-parser": "5.45.0",
|
|
45
|
+
"@memberjunction/sqlserver-dataprovider": "5.45.0",
|
|
46
|
+
"@memberjunction/tag-engine": "5.45.0",
|
|
47
47
|
"nunjucks": "3.2.4",
|
|
48
48
|
"rxjs": "~7.8.1",
|
|
49
49
|
"zod": "~3.24.4"
|