@memberjunction/core-entities-server 5.34.1 → 5.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,29 @@
1
+ import { EntitySaveOptions, ValidationResult } from '@memberjunction/core';
2
+ import { MJConversationDetailAttachmentEntity } from '@memberjunction/core-entities';
3
+ /**
4
+ * Server-side hook for `MJ: Conversation Detail Attachments` that:
5
+ *
6
+ * 1. Rejects uploads whose MIME type is not registered in the Artifact
7
+ * Type registry (and whose extension hint also fails to resolve via
8
+ * the wildcard resolver). Failure surfaces through ValidateAsync so
9
+ * the client gets a structured error rather than a silent skip.
10
+ *
11
+ * 2. After the attachment row is saved, creates a paired Artifact +
12
+ * ArtifactVersion (v1) + ConversationDetailArtifact junction so the
13
+ * attachment participates in the artifact-tool dispatch path. The
14
+ * attachment's ArtifactVersionID is set as a back-link; the
15
+ * RunAIAgentResolver uses that link to dedupe between the attachment
16
+ * and its artifact partner.
17
+ *
18
+ * Both legs run on every NEW save. Updates to an already-paired attachment
19
+ * (ArtifactVersionID already populated) skip the pairing step but still go
20
+ * through validation.
21
+ */
22
+ export declare class MJConversationDetailAttachmentEntityServer extends MJConversationDetailAttachmentEntity {
23
+ get DefaultSkipAsyncValidation(): boolean;
24
+ ValidateAsync(): Promise<ValidationResult>;
25
+ Save(options?: EntitySaveOptions): Promise<boolean>;
26
+ private checkMimeRegistered;
27
+ private createArtifactPair;
28
+ }
29
+ //# sourceMappingURL=MJConversationDetailAttachmentEntityServer.server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MJConversationDetailAttachmentEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJConversationDetailAttachmentEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,iBAAiB,EAAoF,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEzK,OAAO,EAKH,oCAAoC,EAGvC,MAAM,+BAA+B,CAAC;AAEvC;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBACa,0CAA2C,SAAQ,oCAAoC;IAEhG,IAAoB,0BAA0B,IAAI,OAAO,CAExD;IAEqB,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAgB1C,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;YAuB3D,mBAAmB;YAyBnB,kBAAkB;CAqEnC"}
@@ -0,0 +1,151 @@
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, LogError, LogStatus, ValidationErrorInfo, ValidationErrorType } from '@memberjunction/core';
8
+ import { RegisterClass } from '@memberjunction/global';
9
+ import { ArtifactMetadataEngine, MJConversationDetailAttachmentEntity, BuildUnregisteredMimeError, DecideInlineStorage, } from '@memberjunction/core-entities';
10
+ /**
11
+ * Server-side hook for `MJ: Conversation Detail Attachments` that:
12
+ *
13
+ * 1. Rejects uploads whose MIME type is not registered in the Artifact
14
+ * Type registry (and whose extension hint also fails to resolve via
15
+ * the wildcard resolver). Failure surfaces through ValidateAsync so
16
+ * the client gets a structured error rather than a silent skip.
17
+ *
18
+ * 2. After the attachment row is saved, creates a paired Artifact +
19
+ * ArtifactVersion (v1) + ConversationDetailArtifact junction so the
20
+ * attachment participates in the artifact-tool dispatch path. The
21
+ * attachment's ArtifactVersionID is set as a back-link; the
22
+ * RunAIAgentResolver uses that link to dedupe between the attachment
23
+ * and its artifact partner.
24
+ *
25
+ * Both legs run on every NEW save. Updates to an already-paired attachment
26
+ * (ArtifactVersionID already populated) skip the pairing step but still go
27
+ * through validation.
28
+ */
29
+ let MJConversationDetailAttachmentEntityServer = class MJConversationDetailAttachmentEntityServer extends MJConversationDetailAttachmentEntity {
30
+ get DefaultSkipAsyncValidation() {
31
+ return false;
32
+ }
33
+ async ValidateAsync() {
34
+ const result = await super.ValidateAsync();
35
+ if (!result.Success)
36
+ return result;
37
+ // Skip the MIME gate for already-saved rows being updated for
38
+ // unrelated reasons (e.g. DisplayOrder reorder, FileID rebind).
39
+ if (!this.IsSaved) {
40
+ const gateError = await this.checkMimeRegistered();
41
+ if (gateError) {
42
+ result.Success = false;
43
+ (result.Errors ??= []).push(gateError);
44
+ }
45
+ }
46
+ return result;
47
+ }
48
+ async Save(options) {
49
+ const isNewSave = !this.IsSaved;
50
+ const saved = await super.Save(options);
51
+ if (!saved)
52
+ return false;
53
+ // Pair the attachment with an Artifact/Version/junction on creation.
54
+ // Existing rows or rows already linked are skipped.
55
+ if (isNewSave && !this.ArtifactVersionID) {
56
+ try {
57
+ const versionId = await this.createArtifactPair();
58
+ if (versionId) {
59
+ this.ArtifactVersionID = versionId;
60
+ if (!(await super.Save(options))) {
61
+ LogError(`[MJConversationDetailAttachmentEntityServer] failed to backlink attachment ${this.ID} to artifact version ${versionId}: ${this.LatestResult?.CompleteMessage ?? 'unknown error'}`);
62
+ }
63
+ }
64
+ }
65
+ catch (err) {
66
+ LogError(`[MJConversationDetailAttachmentEntityServer] storage unification failed for attachment ${this.ID}: ${err instanceof Error ? err.message : String(err)}`);
67
+ }
68
+ }
69
+ return true;
70
+ }
71
+ async checkMimeRegistered() {
72
+ const mime = this.MimeType ?? '';
73
+ if (!mime) {
74
+ return new ValidationErrorInfo('MimeType', 'A MIME type is required when uploading an attachment.', this.MimeType, ValidationErrorType.Failure);
75
+ }
76
+ await ArtifactMetadataEngine.Instance.Config(false, this.ContextCurrentUser);
77
+ const ext = this.FileName?.includes('.') ? this.FileName.split('.').pop() : undefined;
78
+ const artifactType = ArtifactMetadataEngine.Instance.GetArtifactTypeByMimeType(mime, ext);
79
+ if (!artifactType) {
80
+ return new ValidationErrorInfo('MimeType', BuildUnregisteredMimeError(this.FileName, mime), mime, ValidationErrorType.Failure);
81
+ }
82
+ return null;
83
+ }
84
+ async createArtifactPair() {
85
+ const mime = this.MimeType;
86
+ if (!mime)
87
+ return null;
88
+ await ArtifactMetadataEngine.Instance.Config(false, this.ContextCurrentUser);
89
+ const ext = this.FileName?.includes('.') ? this.FileName.split('.').pop() : undefined;
90
+ const artifactType = ArtifactMetadataEngine.Instance.GetArtifactTypeByMimeType(mime, ext);
91
+ if (!artifactType) {
92
+ // Validation should have caught this. Log and bail rather than panic.
93
+ LogStatus(`[MJConversationDetailAttachmentEntityServer] no artifact type for MIME "${mime}" on attachment ${this.ID}; skipping pair creation.`);
94
+ return null;
95
+ }
96
+ // Use this entity's own provider rather than `new Metadata()` — keeps
97
+ // the artifact pair on the same provider as the originating attachment
98
+ // in multi-provider clients (per @memberjunction/global multi-provider
99
+ // compliance rule).
100
+ const md = this.ProviderToUse;
101
+ const userId = this.ContextCurrentUser?.ID;
102
+ if (!userId) {
103
+ LogError(`[MJConversationDetailAttachmentEntityServer] no context user for attachment ${this.ID}; cannot create artifact.`);
104
+ return null;
105
+ }
106
+ const artifact = await md.GetEntityObject('MJ: Artifacts', this.ContextCurrentUser);
107
+ artifact.Name = this.FileName || `attachment_${this.ID}`;
108
+ artifact.TypeID = artifactType.ID;
109
+ artifact.UserID = userId;
110
+ artifact.Visibility = 'Always';
111
+ if (!(await artifact.Save())) {
112
+ LogError(`[MJConversationDetailAttachmentEntityServer] failed to save artifact for attachment ${this.ID}: ${artifact.LatestResult?.CompleteMessage ?? 'unknown error'}`);
113
+ return null;
114
+ }
115
+ const version = await md.GetEntityObject('MJ: Artifact Versions', this.ContextCurrentUser);
116
+ version.ArtifactID = artifact.ID;
117
+ version.VersionNumber = 1;
118
+ version.MimeType = mime;
119
+ version.FileName = this.FileName ?? null;
120
+ version.ContentSizeBytes = this.FileSizeBytes ?? null;
121
+ version.UserID = userId;
122
+ if (this.FileID) {
123
+ version.ContentMode = 'File';
124
+ version.FileID = this.FileID;
125
+ }
126
+ else {
127
+ // Single source of truth for the inline-storage decision — pure
128
+ // helper so both upload-path and tests share the same logic.
129
+ const stored = DecideInlineStorage(mime, this.InlineData);
130
+ version.ContentMode = stored.contentMode;
131
+ version.Content = stored.content;
132
+ }
133
+ if (!(await version.Save())) {
134
+ LogError(`[MJConversationDetailAttachmentEntityServer] failed to save artifact version for attachment ${this.ID}: ${version.LatestResult?.CompleteMessage ?? 'unknown error'}`);
135
+ return null;
136
+ }
137
+ const junction = await md.GetEntityObject('MJ: Conversation Detail Artifacts', this.ContextCurrentUser);
138
+ junction.ConversationDetailID = this.ConversationDetailID;
139
+ junction.ArtifactVersionID = version.ID;
140
+ junction.Direction = 'Input';
141
+ if (!(await junction.Save())) {
142
+ LogError(`[MJConversationDetailAttachmentEntityServer] failed to link artifact ${artifact.ID} to detail ${this.ConversationDetailID}: ${junction.LatestResult?.CompleteMessage ?? 'unknown error'}`);
143
+ }
144
+ return version.ID;
145
+ }
146
+ };
147
+ MJConversationDetailAttachmentEntityServer = __decorate([
148
+ RegisterClass(BaseEntity, 'MJ: Conversation Detail Attachments')
149
+ ], MJConversationDetailAttachmentEntityServer);
150
+ export { MJConversationDetailAttachmentEntityServer };
151
+ //# sourceMappingURL=MJConversationDetailAttachmentEntityServer.server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MJConversationDetailAttachmentEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJConversationDetailAttachmentEntityServer.server.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './custom/MJAIPromptEntityServer.server.js';
2
2
  export * from './custom/MJAIPromptRunEntityServer.server.js';
3
3
  export * from './custom/MJConversationDetailEntityServer.server.js';
4
+ export * from './custom/MJConversationDetailAttachmentEntityServer.server.js';
4
5
  export * from './custom/MJDuplicateRunEntityServer.server.js';
5
6
  export * from './custom/MJQueryEntityServer.server.js';
6
7
  export * from './custom/MJTemplateContentEntityServer.server.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,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,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,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,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './custom/MJAIPromptEntityServer.server.js';
2
2
  export * from './custom/MJAIPromptRunEntityServer.server.js';
3
3
  export * from './custom/MJConversationDetailEntityServer.server.js';
4
+ export * from './custom/MJConversationDetailAttachmentEntityServer.server.js';
4
5
  export * from './custom/MJDuplicateRunEntityServer.server.js';
5
6
  export * from './custom/MJQueryEntityServer.server.js';
6
7
  export * from './custom/MJTemplateContentEntityServer.server.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,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,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,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,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,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,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.34.1",
4
+ "version": "5.35.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,27 +21,27 @@
21
21
  "typescript": "^5.9.3"
22
22
  },
23
23
  "dependencies": {
24
- "@memberjunction/actions-base": "5.34.1",
25
- "@memberjunction/ai": "5.34.1",
26
- "@memberjunction/ai-core-plus": "5.34.1",
27
- "@memberjunction/ai-engine-base": "5.34.1",
28
- "@memberjunction/ai-prompts": "5.34.1",
29
- "@memberjunction/ai-provider-bundle": "5.34.1",
30
- "@memberjunction/ai-vectordb": "5.34.1",
31
- "@memberjunction/tag-engine": "5.34.1",
32
- "@memberjunction/ai-vector-dupe": "5.34.1",
33
- "@memberjunction/ai-vectors-memory": "5.34.1",
34
- "@memberjunction/aiengine": "5.34.1",
35
- "@memberjunction/core": "5.34.1",
36
- "@memberjunction/core-entities": "5.34.1",
37
- "@memberjunction/generic-database-provider": "5.34.1",
38
- "@memberjunction/doc-utils": "5.34.1",
39
- "@memberjunction/global": "5.34.1",
40
- "@memberjunction/skip-types": "5.34.1",
41
- "@memberjunction/sql-converter": "5.34.1",
42
- "@memberjunction/sql-dialect": "5.34.1",
43
- "@memberjunction/sql-parser": "5.34.1",
44
- "@memberjunction/sqlserver-dataprovider": "5.34.1",
24
+ "@memberjunction/actions-base": "5.35.0",
25
+ "@memberjunction/ai": "5.35.0",
26
+ "@memberjunction/ai-core-plus": "5.35.0",
27
+ "@memberjunction/ai-engine-base": "5.35.0",
28
+ "@memberjunction/ai-prompts": "5.35.0",
29
+ "@memberjunction/ai-provider-bundle": "5.35.0",
30
+ "@memberjunction/ai-vectordb": "5.35.0",
31
+ "@memberjunction/tag-engine": "5.35.0",
32
+ "@memberjunction/ai-vector-dupe": "5.35.0",
33
+ "@memberjunction/ai-vectors-memory": "5.35.0",
34
+ "@memberjunction/aiengine": "5.35.0",
35
+ "@memberjunction/core": "5.35.0",
36
+ "@memberjunction/core-entities": "5.35.0",
37
+ "@memberjunction/generic-database-provider": "5.35.0",
38
+ "@memberjunction/doc-utils": "5.35.0",
39
+ "@memberjunction/global": "5.35.0",
40
+ "@memberjunction/skip-types": "5.35.0",
41
+ "@memberjunction/sql-converter": "5.35.0",
42
+ "@memberjunction/sql-dialect": "5.35.0",
43
+ "@memberjunction/sql-parser": "5.35.0",
44
+ "@memberjunction/sqlserver-dataprovider": "5.35.0",
45
45
  "nunjucks": "3.2.4",
46
46
  "rxjs": "~7.8.1",
47
47
  "zod": "~3.24.4"