@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.
@@ -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.Fields.find(f => f.Name === 'CompletedAt');
57
- const completedAtChanged = !this.IsSaved || f.Dirty;
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":"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"}
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.Fields.find(f => f.Name === "Content")?.Dirty;
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":"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"}
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.Fields.find(f => f.Name === 'Message');
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,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YACjE,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"}
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';
@@ -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.44.0",
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.44.0",
25
- "@memberjunction/ai": "5.44.0",
26
- "@memberjunction/ai-core-plus": "5.44.0",
27
- "@memberjunction/ai-engine-base": "5.44.0",
28
- "@memberjunction/ai-prompts": "5.44.0",
29
- "@memberjunction/ai-provider-bundle": "5.44.0",
30
- "@memberjunction/ai-vector-dupe": "5.44.0",
31
- "@memberjunction/ai-vectordb": "5.44.0",
32
- "@memberjunction/ai-vectors-memory": "5.44.0",
33
- "@memberjunction/aiengine": "5.44.0",
34
- "@memberjunction/core": "5.44.0",
35
- "@memberjunction/core-entities": "5.44.0",
36
- "@memberjunction/doc-utils": "5.44.0",
37
- "@memberjunction/generic-database-provider": "5.44.0",
38
- "@memberjunction/global": "5.44.0",
39
- "@memberjunction/integration-engine": "5.44.0",
40
- "@memberjunction/integration-pk-classifier": "5.44.0",
41
- "@memberjunction/skip-types": "5.44.0",
42
- "@memberjunction/sql-converter": "5.44.0",
43
- "@memberjunction/sql-dialect": "5.44.0",
44
- "@memberjunction/sql-parser": "5.44.0",
45
- "@memberjunction/sqlserver-dataprovider": "5.44.0",
46
- "@memberjunction/tag-engine": "5.44.0",
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"