@memberjunction/core-entities 5.41.0 → 5.43.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/PermissionProviders/AccessControlRuleProvider.d.ts +8 -0
- package/dist/custom/PermissionProviders/AccessControlRuleProvider.d.ts.map +1 -1
- package/dist/custom/PermissionProviders/AccessControlRuleProvider.js +14 -4
- package/dist/custom/PermissionProviders/AccessControlRuleProvider.js.map +1 -1
- package/dist/engines/RemoteOperationEngineBase.d.ts +48 -0
- package/dist/engines/RemoteOperationEngineBase.d.ts.map +1 -0
- package/dist/engines/RemoteOperationEngineBase.js +85 -0
- package/dist/engines/RemoteOperationEngineBase.js.map +1 -0
- package/dist/engines/conversations.d.ts +71 -1
- package/dist/engines/conversations.d.ts.map +1 -1
- package/dist/engines/conversations.js +219 -0
- package/dist/engines/conversations.js.map +1 -1
- package/dist/generated/entity_subclasses.d.ts +1996 -5
- package/dist/generated/entity_subclasses.d.ts.map +1 -1
- package/dist/generated/entity_subclasses.js +3200 -209
- package/dist/generated/entity_subclasses.js.map +1 -1
- package/dist/generated/remote_operations.d.ts +164 -0
- package/dist/generated/remote_operations.d.ts.map +1 -0
- package/dist/generated/remote_operations.js +120 -0
- package/dist/generated/remote_operations.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -35,6 +35,14 @@ export declare class AccessControlRuleProvider extends PermissionProviderBase {
|
|
|
35
35
|
* expired ACR can't be acted on, so surfacing it in "Shared by me" would be noise.
|
|
36
36
|
*/
|
|
37
37
|
GetPermissionsGrantedByUser(grantor: UserInfo): Promise<NormalizedPermission[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Dialect-neutral "not yet expired" predicate. Uses a JS-computed ISO-8601
|
|
40
|
+
* timestamp literal rather than a SQL function — SQL Server's `GETUTCDATE()`
|
|
41
|
+
* does not exist on PostgreSQL and would crash the underlying RunView query
|
|
42
|
+
* there. An ISO-8601 literal compares correctly against `datetimeoffset`
|
|
43
|
+
* (SQL Server) and `timestamptz` (PostgreSQL) alike.
|
|
44
|
+
*/
|
|
45
|
+
private unexpiredClause;
|
|
38
46
|
private resolveEntityId;
|
|
39
47
|
private fetchActiveRules;
|
|
40
48
|
private resolveGranteeName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessControlRuleProvider.d.ts","sourceRoot":"","sources":["../../../src/custom/PermissionProviders/AccessControlRuleProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,WAAW,EACX,iBAAiB,EAEjB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,QAAQ,EACX,MAAM,sBAAsB,CAAC;AAyB9B;;;;;;;;;;;GAWG;AACH,qBACa,yBAA0B,SAAQ,sBAAsB;IACjE,QAAQ,CAAC,UAAU,0BAA0B;IAC7C,QAAQ,CAAC,WAAW,iHAC8F;IAClH,QAAQ,CAAC,qBAAqB,EAAE,WAAW,EAAE,CAA0C;IACvF,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,CAAmD;IAChG,QAAQ,CAAC,YAAY,SAAS;IAC9B,QAAQ,CAAC,kBAAkB,QAAQ;IAE1B,gBAAgB,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,MAAM,EAAE;IAK3D,eAAe,CACjB,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,MAAM,EAAE,gBAAgB,EACxB,QAAQ,CAAC,EAAE,iBAAiB,GAC7B,OAAO,CAAC,qBAAqB,CAAC;IA6B3B,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAchJ,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAqDtH,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAsBrI;;;;;OAKG;IACY,4BAA4B,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAyB/F;;;OAGG;IACY,2BAA2B,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IA0B9F,OAAO,CAAC,eAAe;YAMT,gBAAgB;IAS9B,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,UAAU;CASrB"}
|
|
1
|
+
{"version":3,"file":"AccessControlRuleProvider.d.ts","sourceRoot":"","sources":["../../../src/custom/PermissionProviders/AccessControlRuleProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,WAAW,EACX,iBAAiB,EAEjB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,QAAQ,EACX,MAAM,sBAAsB,CAAC;AAyB9B;;;;;;;;;;;GAWG;AACH,qBACa,yBAA0B,SAAQ,sBAAsB;IACjE,QAAQ,CAAC,UAAU,0BAA0B;IAC7C,QAAQ,CAAC,WAAW,iHAC8F;IAClH,QAAQ,CAAC,qBAAqB,EAAE,WAAW,EAAE,CAA0C;IACvF,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,CAAmD;IAChG,QAAQ,CAAC,YAAY,SAAS;IAC9B,QAAQ,CAAC,kBAAkB,QAAQ;IAE1B,gBAAgB,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,MAAM,EAAE;IAK3D,eAAe,CACjB,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,MAAM,EAAE,gBAAgB,EACxB,QAAQ,CAAC,EAAE,iBAAiB,GAC7B,OAAO,CAAC,qBAAqB,CAAC;IA6B3B,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAchJ,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAqDtH,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAsBrI;;;;;OAKG;IACY,4BAA4B,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAyB/F;;;OAGG;IACY,2BAA2B,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IA0B9F;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;YAMT,gBAAgB;IAS9B,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,UAAU;CASrB"}
|
|
@@ -87,7 +87,7 @@ let AccessControlRuleProvider = class AccessControlRuleProvider extends Permissi
|
|
|
87
87
|
granteeClauses.push(`(GranteeType='Role' AND GranteeID IN (${userRoleIds.join(',')}))`);
|
|
88
88
|
}
|
|
89
89
|
const granteeFilter = granteeClauses.join(' OR ');
|
|
90
|
-
let filter = `(${granteeFilter}) AND (
|
|
90
|
+
let filter = `(${granteeFilter}) AND ${this.unexpiredClause()}`;
|
|
91
91
|
if (resourceType) {
|
|
92
92
|
const entityId = this.resolveEntityId(resourceType, provider);
|
|
93
93
|
if (!entityId)
|
|
@@ -152,7 +152,7 @@ let AccessControlRuleProvider = class AccessControlRuleProvider extends Permissi
|
|
|
152
152
|
async GetPermissionsSharedWithUser(grantee) {
|
|
153
153
|
const rows = await this.fetchRows('MJ: Access Control Rules', `GranteeType='User' AND GranteeID='${grantee.ID}' ` +
|
|
154
154
|
`AND GrantedByUserID <> '${grantee.ID}' ` +
|
|
155
|
-
`AND (
|
|
155
|
+
`AND ${this.unexpiredClause()}`, ACR_GRANT_FIELDS, 'GetPermissionsSharedWithUser');
|
|
156
156
|
const results = [];
|
|
157
157
|
for (const row of rows) {
|
|
158
158
|
const actions = this.rowActions(row);
|
|
@@ -173,7 +173,7 @@ let AccessControlRuleProvider = class AccessControlRuleProvider extends Permissi
|
|
|
173
173
|
* expired ACR can't be acted on, so surfacing it in "Shared by me" would be noise.
|
|
174
174
|
*/
|
|
175
175
|
async GetPermissionsGrantedByUser(grantor) {
|
|
176
|
-
const rows = await this.fetchRows('MJ: Access Control Rules', `GrantedByUserID='${grantor.ID}' AND (
|
|
176
|
+
const rows = await this.fetchRows('MJ: Access Control Rules', `GrantedByUserID='${grantor.ID}' AND ${this.unexpiredClause()}`, ACR_GRANT_FIELDS, 'GetPermissionsGrantedByUser');
|
|
177
177
|
const results = [];
|
|
178
178
|
for (const row of rows) {
|
|
179
179
|
const actions = this.rowActions(row);
|
|
@@ -192,13 +192,23 @@ let AccessControlRuleProvider = class AccessControlRuleProvider extends Permissi
|
|
|
192
192
|
}
|
|
193
193
|
return results;
|
|
194
194
|
}
|
|
195
|
+
/**
|
|
196
|
+
* Dialect-neutral "not yet expired" predicate. Uses a JS-computed ISO-8601
|
|
197
|
+
* timestamp literal rather than a SQL function — SQL Server's `GETUTCDATE()`
|
|
198
|
+
* does not exist on PostgreSQL and would crash the underlying RunView query
|
|
199
|
+
* there. An ISO-8601 literal compares correctly against `datetimeoffset`
|
|
200
|
+
* (SQL Server) and `timestamptz` (PostgreSQL) alike.
|
|
201
|
+
*/
|
|
202
|
+
unexpiredClause() {
|
|
203
|
+
return `(ExpiresAt IS NULL OR ExpiresAt > '${new Date().toISOString()}')`;
|
|
204
|
+
}
|
|
195
205
|
resolveEntityId(entityName, provider) {
|
|
196
206
|
const md = provider ?? new Metadata();
|
|
197
207
|
const entity = md.EntityByName(entityName);
|
|
198
208
|
return entity?.ID ?? null;
|
|
199
209
|
}
|
|
200
210
|
async fetchActiveRules(entityId, recordId) {
|
|
201
|
-
return this.fetchRows('MJ: Access Control Rules', `EntityID='${entityId}' AND RecordID='${recordId}' AND (
|
|
211
|
+
return this.fetchRows('MJ: Access Control Rules', `EntityID='${entityId}' AND RecordID='${recordId}' AND ${this.unexpiredClause()}`, ACR_GRANT_FIELDS.filter((f) => f !== 'GrantedByUserID' && f !== 'Entity'), 'fetchActiveRules');
|
|
202
212
|
}
|
|
203
213
|
resolveGranteeName(row, provider) {
|
|
204
214
|
switch (row.GranteeType) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessControlRuleProvider.js","sourceRoot":"","sources":["../../../src/custom/PermissionProviders/AccessControlRuleProvider.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAGH,QAAQ,EAIR,sBAAsB,GAEzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAkBnE,oGAAoG;AACpG,MAAM,gBAAgB,GAAa;IAC/B,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB;IACrF,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW;CAC5E,CAAC;AAEF;;;;;;;;;;;GAWG;AAEI,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,sBAAsB;IAA9D;;QACM,eAAU,GAAG,sBAAsB,CAAC;QACpC,gBAAW,GAChB,6GAA6G,CAAC;QACzG,0BAAqB,GAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC9E,qBAAgB,GAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvF,iBAAY,GAAG,KAAK,CAAC;QACrB,uBAAkB,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"AccessControlRuleProvider.js","sourceRoot":"","sources":["../../../src/custom/PermissionProviders/AccessControlRuleProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Metadata cache for `MJ: Remote Operations` rows — the `@RegisterForStartup` engine the
|
|
3
|
+
* generic `ExecuteRemoteOperation` resolver consults to gate dispatch on the operation's metadata
|
|
4
|
+
* (Status / approval), independent of the in-code ClassFactory registration.
|
|
5
|
+
*
|
|
6
|
+
* Why this exists as defense-in-depth: CodeGen only emits Active + Approved operations, so a Disabled or
|
|
7
|
+
* unapproved op normally has no generated class and is therefore unregistered + already unreachable. But a
|
|
8
|
+
* hand-authored (`GenerationType='Manual'`) op keeps its `@RegisterClass` decorator in source even if the
|
|
9
|
+
* metadata row is later set to `Status='Disabled'`. This engine lets the resolver honor that metadata state
|
|
10
|
+
* at runtime — a registered-but-disabled op is rejected — with a synchronous in-memory cache hit (no per-call
|
|
11
|
+
* DB query), kept fresh by the BaseEngine entity-event subscription.
|
|
12
|
+
*
|
|
13
|
+
* @module @memberjunction/core-entities
|
|
14
|
+
*/
|
|
15
|
+
import { BaseEngine, IMetadataProvider, UserInfo } from '@memberjunction/core';
|
|
16
|
+
import { MJRemoteOperationEntity } from '../generated/entity_subclasses.js';
|
|
17
|
+
/** Why an operation is not currently invokable (for a clear caller-facing rejection). */
|
|
18
|
+
export interface RemoteOperationInvokabilityResult {
|
|
19
|
+
/** True when the operation may be dispatched. */
|
|
20
|
+
Invokable: boolean;
|
|
21
|
+
/** Machine-readable reason code when not invokable (e.g. `OPERATION_DISABLED`, `OPERATION_NOT_APPROVED`). */
|
|
22
|
+
ResultCode?: string;
|
|
23
|
+
/** Human-readable reason when not invokable. */
|
|
24
|
+
Reason?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Caches every `MJ: Remote Operations` row and answers "may this operation key be dispatched?" from metadata.
|
|
28
|
+
* Client-safe (pure metadata caching); the server resolver uses it as a defense-in-depth gate.
|
|
29
|
+
*/
|
|
30
|
+
export declare class RemoteOperationEngineBase extends BaseEngine<RemoteOperationEngineBase> {
|
|
31
|
+
private _remoteOperations;
|
|
32
|
+
private _byKey;
|
|
33
|
+
/** The process-wide singleton. */
|
|
34
|
+
static get Instance(): RemoteOperationEngineBase;
|
|
35
|
+
/** Loads (or refreshes) the cached Remote Operation rows. */
|
|
36
|
+
Config(forceRefresh?: boolean, contextUser?: UserInfo, provider?: IMetadataProvider): Promise<void>;
|
|
37
|
+
/** All cached Remote Operation rows. */
|
|
38
|
+
get RemoteOperations(): MJRemoteOperationEntity[];
|
|
39
|
+
/** Case-insensitive lookup of an operation row by its `OperationKey` (`undefined` if there is no row). */
|
|
40
|
+
GetOperationByKey(operationKey: string): MJRemoteOperationEntity | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Decides whether the operation key may be dispatched, from its metadata row. When there is NO row for the
|
|
43
|
+
* key (a code-only operation), it is considered invokable — the in-code ClassFactory registration governs.
|
|
44
|
+
* When a row exists it must be `Active`, and `AI`-generated ops must additionally be `Approved`.
|
|
45
|
+
*/
|
|
46
|
+
IsInvokable(operationKey: string): RemoteOperationInvokabilityResult;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=RemoteOperationEngineBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoteOperationEngineBase.d.ts","sourceRoot":"","sources":["../../src/engines/RemoteOperationEngineBase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,UAAU,EAA4B,iBAAiB,EAAE,QAAQ,EAAsB,MAAM,sBAAsB,CAAC;AAC7H,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,yFAAyF;AACzF,MAAM,WAAW,iCAAiC;IAC9C,iDAAiD;IACjD,SAAS,EAAE,OAAO,CAAC;IACnB,6GAA6G;IAC7G,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBACa,yBAA0B,SAAQ,UAAU,CAAC,yBAAyB,CAAC;IAChF,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,MAAM,CAAqD;IAEnE,kCAAkC;IAClC,WAAkB,QAAQ,IAAI,yBAAyB,CAEtD;IAED,6DAA6D;IAChD,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYhH,wCAAwC;IACxC,IAAW,gBAAgB,IAAI,uBAAuB,EAAE,CAEvD;IAED,0GAA0G;IACnG,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;IAUnF;;;;OAIG;IACI,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,iCAAiC;CAa9E"}
|
|
@@ -0,0 +1,85 @@
|
|
|
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
|
+
/**
|
|
8
|
+
* @fileoverview Metadata cache for `MJ: Remote Operations` rows — the `@RegisterForStartup` engine the
|
|
9
|
+
* generic `ExecuteRemoteOperation` resolver consults to gate dispatch on the operation's metadata
|
|
10
|
+
* (Status / approval), independent of the in-code ClassFactory registration.
|
|
11
|
+
*
|
|
12
|
+
* Why this exists as defense-in-depth: CodeGen only emits Active + Approved operations, so a Disabled or
|
|
13
|
+
* unapproved op normally has no generated class and is therefore unregistered + already unreachable. But a
|
|
14
|
+
* hand-authored (`GenerationType='Manual'`) op keeps its `@RegisterClass` decorator in source even if the
|
|
15
|
+
* metadata row is later set to `Status='Disabled'`. This engine lets the resolver honor that metadata state
|
|
16
|
+
* at runtime — a registered-but-disabled op is rejected — with a synchronous in-memory cache hit (no per-call
|
|
17
|
+
* DB query), kept fresh by the BaseEngine entity-event subscription.
|
|
18
|
+
*
|
|
19
|
+
* @module @memberjunction/core-entities
|
|
20
|
+
*/
|
|
21
|
+
import { BaseEngine, RegisterForStartup } from '@memberjunction/core';
|
|
22
|
+
/**
|
|
23
|
+
* Caches every `MJ: Remote Operations` row and answers "may this operation key be dispatched?" from metadata.
|
|
24
|
+
* Client-safe (pure metadata caching); the server resolver uses it as a defense-in-depth gate.
|
|
25
|
+
*/
|
|
26
|
+
let RemoteOperationEngineBase = class RemoteOperationEngineBase extends BaseEngine {
|
|
27
|
+
constructor() {
|
|
28
|
+
super(...arguments);
|
|
29
|
+
this._remoteOperations = [];
|
|
30
|
+
this._byKey = null;
|
|
31
|
+
}
|
|
32
|
+
/** The process-wide singleton. */
|
|
33
|
+
static get Instance() {
|
|
34
|
+
return super.getInstance();
|
|
35
|
+
}
|
|
36
|
+
/** Loads (or refreshes) the cached Remote Operation rows. */
|
|
37
|
+
async Config(forceRefresh, contextUser, provider) {
|
|
38
|
+
const configs = [
|
|
39
|
+
{
|
|
40
|
+
PropertyName: '_remoteOperations',
|
|
41
|
+
EntityName: 'MJ: Remote Operations',
|
|
42
|
+
CacheLocal: true,
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
this._byKey = null; // invalidate the key index; rebuilt lazily after (re)load
|
|
46
|
+
await this.Load(configs, provider, forceRefresh, contextUser);
|
|
47
|
+
}
|
|
48
|
+
/** All cached Remote Operation rows. */
|
|
49
|
+
get RemoteOperations() {
|
|
50
|
+
return this._remoteOperations;
|
|
51
|
+
}
|
|
52
|
+
/** Case-insensitive lookup of an operation row by its `OperationKey` (`undefined` if there is no row). */
|
|
53
|
+
GetOperationByKey(operationKey) {
|
|
54
|
+
if (!operationKey) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
if (!this._byKey) {
|
|
58
|
+
this._byKey = new Map(this._remoteOperations.map((o) => [o.OperationKey.trim().toLowerCase(), o]));
|
|
59
|
+
}
|
|
60
|
+
return this._byKey.get(operationKey.trim().toLowerCase());
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Decides whether the operation key may be dispatched, from its metadata row. When there is NO row for the
|
|
64
|
+
* key (a code-only operation), it is considered invokable — the in-code ClassFactory registration governs.
|
|
65
|
+
* When a row exists it must be `Active`, and `AI`-generated ops must additionally be `Approved`.
|
|
66
|
+
*/
|
|
67
|
+
IsInvokable(operationKey) {
|
|
68
|
+
const row = this.GetOperationByKey(operationKey);
|
|
69
|
+
if (!row) {
|
|
70
|
+
return { Invokable: true }; // no metadata row → governed solely by code registration
|
|
71
|
+
}
|
|
72
|
+
if (row.Status !== 'Active') {
|
|
73
|
+
return { Invokable: false, ResultCode: 'OPERATION_DISABLED', Reason: `Remote operation '${operationKey}' is not active (Status='${row.Status}')` };
|
|
74
|
+
}
|
|
75
|
+
if (row.GenerationType === 'AI' && row.CodeApprovalStatus !== 'Approved') {
|
|
76
|
+
return { Invokable: false, ResultCode: 'OPERATION_NOT_APPROVED', Reason: `Remote operation '${operationKey}' has unapproved AI-generated code (CodeApprovalStatus='${row.CodeApprovalStatus}')` };
|
|
77
|
+
}
|
|
78
|
+
return { Invokable: true };
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
RemoteOperationEngineBase = __decorate([
|
|
82
|
+
RegisterForStartup()
|
|
83
|
+
], RemoteOperationEngineBase);
|
|
84
|
+
export { RemoteOperationEngineBase };
|
|
85
|
+
//# sourceMappingURL=RemoteOperationEngineBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoteOperationEngineBase.js","sourceRoot":"","sources":["../../src/engines/RemoteOperationEngineBase.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,UAAU,EAAyD,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAa7H;;;GAGG;AAEI,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,UAAqC;IAA7E;;QACK,sBAAiB,GAA8B,EAAE,CAAC;QAClD,WAAM,GAAgD,IAAI,CAAC;IAsDvE,CAAC;IApDG,kCAAkC;IAC3B,MAAM,KAAK,QAAQ;QACtB,OAAO,KAAK,CAAC,WAAW,EAA6B,CAAC;IAC1D,CAAC;IAED,6DAA6D;IACtD,KAAK,CAAC,MAAM,CAAC,YAAsB,EAAE,WAAsB,EAAE,QAA4B;QAC5F,MAAM,OAAO,GAAwC;YACjD;gBACI,YAAY,EAAE,mBAAmB;gBACjC,UAAU,EAAE,uBAAuB;gBACnC,UAAU,EAAE,IAAI;aACnB;SACJ,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,0DAA0D;QAC9E,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC;IAED,wCAAwC;IACxC,IAAW,gBAAgB;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,0GAA0G;IACnG,iBAAiB,CAAC,YAAoB;QACzC,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvG,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,YAAoB;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,yDAAyD;QACzF,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,EAAE,qBAAqB,YAAY,4BAA4B,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QACvJ,CAAC;QACD,IAAI,GAAG,CAAC,cAAc,KAAK,IAAI,IAAI,GAAG,CAAC,kBAAkB,KAAK,UAAU,EAAE,CAAC;YACvE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,EAAE,qBAAqB,YAAY,2DAA2D,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC;QACtM,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC/B,CAAC;CACJ,CAAA;AAxDY,yBAAyB;IADrC,kBAAkB,EAAE;GACR,yBAAyB,CAwDrC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BaseEngine, BaseEntityEvent, IMetadataProvider, UserInfo } from "@memberjunction/core";
|
|
2
2
|
import { Observable } from "rxjs";
|
|
3
|
-
import { MJConversationEntity, MJConversationDetailEntity, MJConversationDetailEntityType, MJAIAgentRunEntity, MJAIAgentRunEntityType, MJConversationDetailRatingEntityType, MJConversationDetailArtifactEntityType } from "../generated/entity_subclasses.js";
|
|
3
|
+
import { MJConversationEntity, MJConversationDetailEntity, MJConversationDetailEntityType, MJAIAgentRunEntity, MJAIAgentRunEntityType, MJConversationDetailRatingEntityType, MJConversationDetailArtifactEntityType, MJProjectEntity } from "../generated/entity_subclasses.js";
|
|
4
4
|
/**
|
|
5
5
|
* Display info about the user who shared a conversation with the current user,
|
|
6
6
|
* plus the `PermissionLevel` the grantee was granted. Exposed via
|
|
@@ -180,10 +180,23 @@ export declare class ConversationEngine extends BaseEngine<ConversationEngine> {
|
|
|
180
180
|
* Current snapshot of conversations (non-reactive).
|
|
181
181
|
*/
|
|
182
182
|
get Conversations(): MJConversationEntity[];
|
|
183
|
+
private _projects$;
|
|
184
|
+
/**
|
|
185
|
+
* Observable stream of the projects (conversation folders) for the current
|
|
186
|
+
* environment. Emits whenever projects are loaded or a project is created,
|
|
187
|
+
* renamed, or deleted (kept in sync via the entity event handler).
|
|
188
|
+
*/
|
|
189
|
+
get Projects$(): Observable<MJProjectEntity[]>;
|
|
190
|
+
/**
|
|
191
|
+
* Current snapshot of projects/folders (non-reactive).
|
|
192
|
+
*/
|
|
193
|
+
get Projects(): MJProjectEntity[];
|
|
183
194
|
/** Detail cache keyed by normalized conversation ID */
|
|
184
195
|
private _detailCache;
|
|
185
196
|
/** Track the environment ID used for the last load */
|
|
186
197
|
private _lastEnvironmentId;
|
|
198
|
+
/** Track the environment ID used for the last projects (folders) load */
|
|
199
|
+
private _lastProjectsEnvironmentId;
|
|
187
200
|
/**
|
|
188
201
|
* For conversations the current user *received* via sharing, this map goes
|
|
189
202
|
* from `conversationId` to the grantor's display info. Populated by
|
|
@@ -230,6 +243,56 @@ export declare class ConversationEngine extends BaseEngine<ConversationEngine> {
|
|
|
230
243
|
* are skipped — the UI degrades to no badge for those.
|
|
231
244
|
*/
|
|
232
245
|
private rebuildSharedByMap;
|
|
246
|
+
/**
|
|
247
|
+
* Loads the projects (conversation folders) for an environment and emits via Projects$.
|
|
248
|
+
* Projects are environment-scoped (not user-scoped) and small, so the full active set
|
|
249
|
+
* is cached. Skips reloading when already loaded for the same environment unless forced.
|
|
250
|
+
*
|
|
251
|
+
* @param environmentId - The environment to filter projects by
|
|
252
|
+
* @param contextUser - The current user context
|
|
253
|
+
* @param forceRefresh - If true, reloads even if already cached for this environment
|
|
254
|
+
*/
|
|
255
|
+
LoadProjects(environmentId: string, contextUser: UserInfo, forceRefresh?: boolean): Promise<void>;
|
|
256
|
+
/**
|
|
257
|
+
* Assigns a conversation to a folder (project), or removes it from its folder when
|
|
258
|
+
* projectId is null. Thin wrapper over {@link SaveConversation} that keeps the
|
|
259
|
+
* intent explicit at call sites.
|
|
260
|
+
*
|
|
261
|
+
* @param conversationId - The conversation to move
|
|
262
|
+
* @param projectId - The target project ID, or null to ungroup
|
|
263
|
+
* @param contextUser - The current user context
|
|
264
|
+
* @returns true if saved successfully
|
|
265
|
+
*/
|
|
266
|
+
MoveConversationToProject(conversationId: string, projectId: string | null, contextUser: UserInfo): Promise<boolean>;
|
|
267
|
+
/**
|
|
268
|
+
* Reparents a folder (project) under another folder, or to the top level when
|
|
269
|
+
* parentId is null. Callers are responsible for preventing cycles (don't pass a
|
|
270
|
+
* descendant of the folder as its new parent). Updates the cached entity in place
|
|
271
|
+
* and re-emits Projects$.
|
|
272
|
+
*
|
|
273
|
+
* @param projectId - The folder to move
|
|
274
|
+
* @param parentId - The new parent folder ID, or null for top level
|
|
275
|
+
* @param contextUser - The current user context
|
|
276
|
+
* @returns true if saved successfully
|
|
277
|
+
*/
|
|
278
|
+
MoveProjectToParent(projectId: string, parentId: string | null, contextUser: UserInfo): Promise<boolean>;
|
|
279
|
+
/**
|
|
280
|
+
* Deletes a folder (project) in an FK-safe way. The Conversation→Project and
|
|
281
|
+
* Project→Project (ParentID) foreign keys are RESTRICT, so the row can't be
|
|
282
|
+
* deleted while anything references it. Before deleting, this:
|
|
283
|
+
* 1. Unassigns every conversation directly in the folder (ProjectID → null).
|
|
284
|
+
* 2. Reparents direct child folders to this folder's parent (one level up).
|
|
285
|
+
* 3. Deletes the now-unreferenced folder.
|
|
286
|
+
* Conversations and subfolders are preserved — only the folder itself is removed.
|
|
287
|
+
*
|
|
288
|
+
* Note: this does NOT reassign Tasks that reference the project; if a Task still
|
|
289
|
+
* references it, the final delete will fail and this throws with the DB message.
|
|
290
|
+
*
|
|
291
|
+
* @param id - The project (folder) ID to delete
|
|
292
|
+
* @param contextUser - The current user context
|
|
293
|
+
* @returns true if deleted successfully
|
|
294
|
+
*/
|
|
295
|
+
DeleteProject(id: string, contextUser: UserInfo): Promise<boolean>;
|
|
233
296
|
/**
|
|
234
297
|
* Creates a new conversation, saves it to the database, and adds it to the cached list.
|
|
235
298
|
*
|
|
@@ -475,6 +538,13 @@ export declare class ConversationEngine extends BaseEngine<ConversationEngine> {
|
|
|
475
538
|
* Handles save/delete events on ConversationDetail entities from local or remote code.
|
|
476
539
|
*/
|
|
477
540
|
private handleConversationDetailEntityEvent;
|
|
541
|
+
/**
|
|
542
|
+
* Handles save/delete events on Project entities from local or remote code.
|
|
543
|
+
* Keeps the folder list in sync when a folder is created, renamed, archived, or
|
|
544
|
+
* deleted via the project form modal. Only tracks projects in the currently-loaded
|
|
545
|
+
* environment; archived projects are dropped from the active list.
|
|
546
|
+
*/
|
|
547
|
+
private handleProjectEntityEvent;
|
|
478
548
|
/**
|
|
479
549
|
* Handles save/delete events on AI Agent Run entities from local or remote code.
|
|
480
550
|
* Updates the AgentRunsByDetailId map so timers and status reflect reality.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../src/engines/conversations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA4B,eAAe,EAAE,iBAAiB,EAA0D,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAElL,OAAO,EAAmB,UAAU,EAAE,MAAM,MAAM,CAAC;AACnD,OAAO,EACH,oBAAoB,EACpB,0BAA0B,EAC1B,8BAA8B,EAC9B,kBAAkB,EAClB,sBAAsB,EACtB,oCAAoC,EACpC,sCAAsC,
|
|
1
|
+
{"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../src/engines/conversations.ts"],"names":[],"mappings":"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"}
|