@memberjunction/core-entities-server 6.2.0-edge.5 → 6.2.0-edge.7
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/README.md +155 -100
- package/dist/custom/MJAIAgentExampleEntityServer.server.d.ts +2 -0
- package/dist/custom/MJAIAgentExampleEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJAIAgentExampleEntityServer.server.js +8 -5
- package/dist/custom/MJAIAgentExampleEntityServer.server.js.map +1 -1
- package/dist/custom/MJAIAgentNoteEntityServer.server.d.ts +2 -0
- package/dist/custom/MJAIAgentNoteEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJAIAgentNoteEntityServer.server.js +8 -5
- package/dist/custom/MJAIAgentNoteEntityServer.server.js.map +1 -1
- package/dist/custom/MJAIAgentRelationshipEntityServer.server.d.ts +17 -0
- package/dist/custom/MJAIAgentRelationshipEntityServer.server.d.ts.map +1 -0
- package/dist/custom/MJAIAgentRelationshipEntityServer.server.js +71 -0
- package/dist/custom/MJAIAgentRelationshipEntityServer.server.js.map +1 -0
- package/dist/custom/MJAIAgentSessionEntityServer.server.d.ts +8 -39
- package/dist/custom/MJAIAgentSessionEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJAIAgentSessionEntityServer.server.js +44 -44
- package/dist/custom/MJAIAgentSessionEntityServer.server.js.map +1 -1
- package/dist/custom/MJAIAgentUserPolicyEntityServer.server.d.ts +23 -0
- package/dist/custom/MJAIAgentUserPolicyEntityServer.server.d.ts.map +1 -0
- package/dist/custom/MJAIAgentUserPolicyEntityServer.server.js +53 -0
- package/dist/custom/MJAIAgentUserPolicyEntityServer.server.js.map +1 -0
- package/dist/custom/MJAIPromptEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJAIPromptEntityServer.server.js +2 -1
- package/dist/custom/MJAIPromptEntityServer.server.js.map +1 -1
- package/dist/custom/MJBrandKitEntityServer.server.d.ts +14 -0
- package/dist/custom/MJBrandKitEntityServer.server.d.ts.map +1 -0
- package/dist/custom/MJBrandKitEntityServer.server.js +75 -0
- package/dist/custom/MJBrandKitEntityServer.server.js.map +1 -0
- package/dist/custom/MJCompanyIntegrationEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJCompanyIntegrationEntityServer.server.js +1 -0
- package/dist/custom/MJCompanyIntegrationEntityServer.server.js.map +1 -1
- package/dist/custom/MJComponentEntityServer.server.d.ts +11 -0
- package/dist/custom/MJComponentEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJComponentEntityServer.server.js +30 -2
- package/dist/custom/MJComponentEntityServer.server.js.map +1 -1
- package/dist/custom/MJConversationEntityServer.server.d.ts +13 -0
- package/dist/custom/MJConversationEntityServer.server.d.ts.map +1 -0
- package/dist/custom/MJConversationEntityServer.server.js +33 -0
- package/dist/custom/MJConversationEntityServer.server.js.map +1 -0
- package/dist/custom/MJDashboardEntityServer.server.d.ts +14 -0
- package/dist/custom/MJDashboardEntityServer.server.d.ts.map +1 -0
- package/dist/custom/MJDashboardEntityServer.server.js +38 -0
- package/dist/custom/MJDashboardEntityServer.server.js.map +1 -0
- package/dist/custom/MJDuplicateRunEntityServer.server.d.ts +34 -2
- package/dist/custom/MJDuplicateRunEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJDuplicateRunEntityServer.server.js +103 -23
- package/dist/custom/MJDuplicateRunEntityServer.server.js.map +1 -1
- package/dist/custom/MJEntityAlternateBaseViewEntityServer.server.d.ts +73 -0
- package/dist/custom/MJEntityAlternateBaseViewEntityServer.server.d.ts.map +1 -0
- package/dist/custom/MJEntityAlternateBaseViewEntityServer.server.js +391 -0
- package/dist/custom/MJEntityAlternateBaseViewEntityServer.server.js.map +1 -0
- package/dist/custom/MJEntityDocumentEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJEntityDocumentEntityServer.server.js +1 -0
- package/dist/custom/MJEntityDocumentEntityServer.server.js.map +1 -1
- package/dist/custom/MJEntityFieldPermissionEntityServer.server.d.ts +96 -22
- package/dist/custom/MJEntityFieldPermissionEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJEntityFieldPermissionEntityServer.server.js +239 -55
- package/dist/custom/MJEntityFieldPermissionEntityServer.server.js.map +1 -1
- package/dist/custom/MJListDetailEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJListDetailEntityServer.server.js +1 -0
- package/dist/custom/MJListDetailEntityServer.server.js.map +1 -1
- package/dist/custom/MJQueryEntityServer.server.d.ts +184 -46
- package/dist/custom/MJQueryEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJQueryEntityServer.server.js +505 -159
- package/dist/custom/MJQueryEntityServer.server.js.map +1 -1
- package/dist/custom/MJQuerySQLEntityServer.server.d.ts +15 -18
- package/dist/custom/MJQuerySQLEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJQuerySQLEntityServer.server.js +34 -42
- package/dist/custom/MJQuerySQLEntityServer.server.js.map +1 -1
- package/dist/custom/MJTagEntityServer.server.d.ts +2 -0
- package/dist/custom/MJTagEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJTagEntityServer.server.js +13 -7
- package/dist/custom/MJTagEntityServer.server.js.map +1 -1
- package/dist/custom/MJUserRoleEntityServer.server.d.ts +74 -7
- package/dist/custom/MJUserRoleEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJUserRoleEntityServer.server.js +206 -20
- package/dist/custom/MJUserRoleEntityServer.server.js.map +1 -1
- package/dist/custom/MJUserRoutineEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJUserRoutineEntityServer.server.js +8 -1
- package/dist/custom/MJUserRoutineEntityServer.server.js.map +1 -1
- package/dist/custom/MJUserViewEntityServer.server.d.ts +17 -1
- package/dist/custom/MJUserViewEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJUserViewEntityServer.server.js +95 -7
- package/dist/custom/MJUserViewEntityServer.server.js.map +1 -1
- package/dist/custom/MJVectorIndexEntityServer.server.d.ts +2 -0
- package/dist/custom/MJVectorIndexEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJVectorIndexEntityServer.server.js +33 -0
- package/dist/custom/MJVectorIndexEntityServer.server.js.map +1 -1
- package/dist/custom/anonymousOwnershipKeyGuard.d.ts +42 -0
- package/dist/custom/anonymousOwnershipKeyGuard.d.ts.map +1 -0
- package/dist/custom/anonymousOwnershipKeyGuard.js +36 -0
- package/dist/custom/anonymousOwnershipKeyGuard.js.map +1 -0
- package/dist/custom/approvalStamp.d.ts +37 -0
- package/dist/custom/approvalStamp.d.ts.map +1 -0
- package/dist/custom/approvalStamp.js +67 -0
- package/dist/custom/approvalStamp.js.map +1 -0
- package/dist/custom/fieldPermissionAccess.d.ts +31 -0
- package/dist/custom/fieldPermissionAccess.d.ts.map +1 -0
- package/dist/custom/fieldPermissionAccess.js +38 -0
- package/dist/custom/fieldPermissionAccess.js.map +1 -0
- package/dist/custom/fieldPermissionReconciler.d.ts.map +1 -1
- package/dist/custom/fieldPermissionReconciler.js +12 -2
- package/dist/custom/fieldPermissionReconciler.js.map +1 -1
- package/dist/custom/query-extraction/childRowWriter.d.ts +77 -0
- package/dist/custom/query-extraction/childRowWriter.d.ts.map +1 -0
- package/dist/custom/query-extraction/childRowWriter.js +277 -0
- package/dist/custom/query-extraction/childRowWriter.js.map +1 -0
- package/dist/custom/query-extraction/compositionTargets.d.ts +40 -0
- package/dist/custom/query-extraction/compositionTargets.d.ts.map +1 -0
- package/dist/custom/query-extraction/compositionTargets.js +99 -0
- package/dist/custom/query-extraction/compositionTargets.js.map +1 -0
- package/dist/custom/query-extraction/declared.d.ts +79 -0
- package/dist/custom/query-extraction/declared.d.ts.map +1 -0
- package/dist/custom/query-extraction/declared.js +91 -0
- package/dist/custom/query-extraction/declared.js.map +1 -0
- package/dist/custom/query-extraction/describeFacts.d.ts +40 -0
- package/dist/custom/query-extraction/describeFacts.d.ts.map +1 -0
- package/dist/custom/query-extraction/describeFacts.js +225 -0
- package/dist/custom/query-extraction/describeFacts.js.map +1 -0
- package/dist/custom/query-extraction/descriptionPass.d.ts +23 -0
- package/dist/custom/query-extraction/descriptionPass.d.ts.map +1 -0
- package/dist/custom/query-extraction/descriptionPass.js +95 -0
- package/dist/custom/query-extraction/descriptionPass.js.map +1 -0
- package/dist/custom/query-extraction/extractQuery.d.ts +25 -0
- package/dist/custom/query-extraction/extractQuery.d.ts.map +1 -0
- package/dist/custom/query-extraction/extractQuery.js +146 -0
- package/dist/custom/query-extraction/extractQuery.js.map +1 -0
- package/dist/custom/query-extraction/extractionTypes.d.ts +133 -0
- package/dist/custom/query-extraction/extractionTypes.d.ts.map +1 -0
- package/dist/custom/query-extraction/extractionTypes.js +2 -0
- package/dist/custom/query-extraction/extractionTypes.js.map +1 -0
- package/dist/custom/query-extraction/index.d.ts +16 -0
- package/dist/custom/query-extraction/index.d.ts.map +1 -1
- package/dist/custom/query-extraction/index.js +11 -1
- package/dist/custom/query-extraction/index.js.map +1 -1
- package/dist/custom/query-extraction/pipeline.d.ts +6 -2
- package/dist/custom/query-extraction/pipeline.d.ts.map +1 -1
- package/dist/custom/query-extraction/pipeline.js +21 -14
- package/dist/custom/query-extraction/pipeline.js.map +1 -1
- package/dist/custom/query-extraction/resolve.d.ts +7 -2
- package/dist/custom/query-extraction/resolve.d.ts.map +1 -1
- package/dist/custom/query-extraction/resolve.js +41 -20
- package/dist/custom/query-extraction/resolve.js.map +1 -1
- package/dist/custom/query-extraction/sourceBinding.d.ts +57 -0
- package/dist/custom/query-extraction/sourceBinding.d.ts.map +1 -0
- package/dist/custom/query-extraction/sourceBinding.js +104 -0
- package/dist/custom/query-extraction/sourceBinding.js.map +1 -0
- package/dist/custom/query-extraction/sync.d.ts +28 -4
- package/dist/custom/query-extraction/sync.d.ts.map +1 -1
- package/dist/custom/query-extraction/sync.js +147 -59
- package/dist/custom/query-extraction/sync.js.map +1 -1
- package/dist/custom/query-extraction/templateFacts.d.ts +62 -0
- package/dist/custom/query-extraction/templateFacts.d.ts.map +1 -0
- package/dist/custom/query-extraction/templateFacts.js +229 -0
- package/dist/custom/query-extraction/templateFacts.js.map +1 -0
- package/dist/custom/query-extraction/types.d.ts +8 -0
- package/dist/custom/query-extraction/types.d.ts.map +1 -1
- package/dist/custom/query-refresh/QueryExtractionService.d.ts +54 -0
- package/dist/custom/query-refresh/QueryExtractionService.d.ts.map +1 -0
- package/dist/custom/query-refresh/QueryExtractionService.js +207 -0
- package/dist/custom/query-refresh/QueryExtractionService.js.map +1 -0
- package/dist/custom/query-refresh/QueryRefreshExtractionServerOperation.d.ts +28 -0
- package/dist/custom/query-refresh/QueryRefreshExtractionServerOperation.d.ts.map +1 -0
- package/dist/custom/query-refresh/QueryRefreshExtractionServerOperation.js +106 -0
- package/dist/custom/query-refresh/QueryRefreshExtractionServerOperation.js.map +1 -0
- package/dist/custom/query-refresh/index.d.ts +14 -0
- package/dist/custom/query-refresh/index.d.ts.map +1 -0
- package/dist/custom/query-refresh/index.js +10 -0
- package/dist/custom/query-refresh/index.js.map +1 -0
- package/dist/custom/query-refresh/queryRebind.d.ts +33 -0
- package/dist/custom/query-refresh/queryRebind.d.ts.map +1 -0
- package/dist/custom/query-refresh/queryRebind.js +85 -0
- package/dist/custom/query-refresh/queryRebind.js.map +1 -0
- package/dist/custom/query-refresh/refreshAuthorization.d.ts +29 -0
- package/dist/custom/query-refresh/refreshAuthorization.d.ts.map +1 -0
- package/dist/custom/query-refresh/refreshAuthorization.js +66 -0
- package/dist/custom/query-refresh/refreshAuthorization.js.map +1 -0
- package/dist/custom/query-refresh/refreshFormat.d.ts +16 -0
- package/dist/custom/query-refresh/refreshFormat.d.ts.map +1 -0
- package/dist/custom/query-refresh/refreshFormat.js +67 -0
- package/dist/custom/query-refresh/refreshFormat.js.map +1 -0
- package/dist/custom/query-refresh/refreshOrder.d.ts +25 -0
- package/dist/custom/query-refresh/refreshOrder.d.ts.map +1 -0
- package/dist/custom/query-refresh/refreshOrder.js +95 -0
- package/dist/custom/query-refresh/refreshOrder.js.map +1 -0
- package/dist/custom/query-refresh/refreshSelection.d.ts +15 -0
- package/dist/custom/query-refresh/refreshSelection.d.ts.map +1 -0
- package/dist/custom/query-refresh/refreshSelection.js +99 -0
- package/dist/custom/query-refresh/refreshSelection.js.map +1 -0
- package/dist/custom/query-refresh/refreshTypes.d.ts +81 -0
- package/dist/custom/query-refresh/refreshTypes.d.ts.map +1 -0
- package/dist/custom/query-refresh/refreshTypes.js +5 -0
- package/dist/custom/query-refresh/refreshTypes.js.map +1 -0
- package/dist/custom/systemUserGuardState.d.ts +73 -0
- package/dist/custom/systemUserGuardState.d.ts.map +1 -0
- package/dist/custom/systemUserGuardState.js +161 -0
- package/dist/custom/systemUserGuardState.js.map +1 -0
- package/dist/custom/template-extraction/parser.js +5 -2
- package/dist/custom/template-extraction/parser.js.map +1 -1
- package/dist/custom/template-extraction/types.d.ts +1 -1
- package/dist/custom/template-extraction/types.d.ts.map +1 -1
- package/dist/custom/util.d.ts +8 -0
- package/dist/custom/util.d.ts.map +1 -1
- package/dist/custom/util.js +18 -1
- package/dist/custom/util.js.map +1 -1
- package/dist/engines/QueryEngineServer.d.ts +4 -1
- package/dist/engines/QueryEngineServer.d.ts.map +1 -1
- package/dist/engines/QueryEngineServer.js +10 -7
- package/dist/engines/QueryEngineServer.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/package.json +30 -30
|
@@ -1,46 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ValidationResult } from '@memberjunction/core';
|
|
2
2
|
import { MJAIAgentSessionEntity } from '@memberjunction/core-entities';
|
|
3
|
-
/**
|
|
4
|
-
* Server-side `MJ: AI Agent Sessions` entity.
|
|
5
|
-
*
|
|
6
|
-
* It keeps the **server-authoritative keys** inside `Config` (the janitor's
|
|
7
|
-
* `maxSessionDeadlineIso`, the `identityVerification` state) out of the session owner's reach, and it
|
|
8
|
-
* keeps every save from writing back the **recording ledger's columns** (see {@link Save}). The
|
|
9
|
-
* owner can legitimately write the row — the `UI` and `Widget Guest` roles hold `CanUpdate` on their
|
|
10
|
-
* own sessions — so the protection has to live at the entity, where the generated CRUD mutations,
|
|
11
|
-
* `StartAgentSession(configJson)` and every other path converge on `Save()`.
|
|
12
|
-
*
|
|
13
|
-
* See {@link FindProtectedSessionConfigChanges} for what is protected and why, and
|
|
14
|
-
* `RunWithTrustedSessionConfigWrites` for how server code opts in.
|
|
15
|
-
*
|
|
16
|
-
* Uses the **synchronous** `Validate()` rather than `ValidateAsync()` on purpose: `Validate()` runs on
|
|
17
|
-
* every save, whereas async validation can be skipped by an option, and a guard that a caller can opt
|
|
18
|
-
* out of is not a guard.
|
|
19
|
-
*/
|
|
20
3
|
export declare class MJAIAgentSessionEntityServer extends MJAIAgentSessionEntity {
|
|
4
|
+
Validate(): ValidationResult;
|
|
21
5
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Saves without writing back the recording ledger's columns the caller did not change.
|
|
29
|
-
*
|
|
30
|
-
* An update writes every loaded column, so a session loaded before a ledger procedure ran and saved
|
|
31
|
-
* after it (a heartbeat, the close, a delegated tool call that rolls `Config` forward, a verification
|
|
32
|
-
* step) would put the stale recording state back: rewind the assembly version and status (a running
|
|
33
|
-
* assembly then loses its fence and a superseded one can win it) or clear `RecordingFileID` (a later
|
|
34
|
-
* re-assembly then has no file to reuse and writes silence over audio it can no longer recover).
|
|
35
|
-
* Marking those fields not-loaded makes the save leave them out of the update procedure, whose
|
|
36
|
-
* `ISNULL` keeps the stored values. A field the caller set explicitly (the legacy whole-call upload
|
|
37
|
-
* stamps `RecordingFileID`) is dirty and is still saved; an insert takes every column.
|
|
38
|
-
*
|
|
39
|
-
* `MarkNotLoaded` is the hydration paths' tool; this entity uses it for the same meaning — "this copy
|
|
40
|
-
* of the value is not the database's" — at the one place every server-side save converges.
|
|
6
|
+
* Returns a refusal when an untrusted save writes or overwrites a server-only `CloseReason`, else null. The owner may
|
|
7
|
+
* close their own row as `Explicit` or `Error`; `TimeLimit` is stamped only after `SessionManager.CloseSession`
|
|
8
|
+
* verifies it against the stored deadline, and `Idle`, `Janitor` and `Shutdown` belong to the janitor and the
|
|
9
|
+
* host. A stamped server-only reason is the record of how the session ended, so the owner cannot replace it either.
|
|
10
|
+
* Server code that stamps them saves inside `RunWithTrustedSessionConfigWrites`.
|
|
41
11
|
*/
|
|
42
|
-
|
|
43
|
-
Validate(): ValidationResult;
|
|
12
|
+
private checkServerManagedCloseReason;
|
|
44
13
|
/** Returns a refusal when an untrusted save changes a protected `Config` key, else null. */
|
|
45
14
|
private checkProtectedConfigKeys;
|
|
46
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJAIAgentSessionEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJAIAgentSessionEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"MJAIAgentSessionEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJAIAgentSessionEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwD,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE9G,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AA8BvE,qBACa,4BAA6B,SAAQ,sBAAsB;IACpD,QAAQ,IAAI,gBAAgB;IAc5C;;;;;;OAMG;IACH,OAAO,CAAC,6BAA6B;IAkBrC,4FAA4F;IAC5F,OAAO,CAAC,wBAAwB;CAmCnC"}
|
|
@@ -4,20 +4,26 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
var MJAIAgentSessionEntityServer_1;
|
|
8
7
|
import { BaseEntity, ValidationErrorInfo, ValidationErrorType } from '@memberjunction/core';
|
|
9
8
|
import { RegisterClass } from '@memberjunction/global';
|
|
10
9
|
import { MJAIAgentSessionEntity } from '@memberjunction/core-entities';
|
|
11
10
|
import { FindProtectedSessionConfigChanges, IsTrustedSessionConfigWriteActive } from './sessionConfigGuard.js';
|
|
11
|
+
import { CheckAnonymousOwnershipKeyChange, IsSetByTransactionVariable } from './anonymousOwnershipKeyGuard.js';
|
|
12
12
|
/**
|
|
13
13
|
* Server-side `MJ: AI Agent Sessions` entity.
|
|
14
14
|
*
|
|
15
15
|
* It keeps the **server-authoritative keys** inside `Config` (the janitor's
|
|
16
|
-
* `maxSessionDeadlineIso`, the `identityVerification` state)
|
|
17
|
-
*
|
|
16
|
+
* `maxSessionDeadlineIso`, the `identityVerification` state) and the server-only `CloseReason` values (`TimeLimit`,
|
|
17
|
+
* `Idle`, `Janitor`, `Shutdown`) out of the session owner's reach, and keeps an
|
|
18
|
+
* anonymous visitor from re-pointing an existing session's `ConversationID` (the anonymous ownership key —
|
|
19
|
+
* see `CheckAnonymousOwnershipKeyChange`). The
|
|
18
20
|
* owner can legitimately write the row — the `UI` and `Widget Guest` roles hold `CanUpdate` on their
|
|
19
21
|
* own sessions — so the protection has to live at the entity, where the generated CRUD mutations,
|
|
20
|
-
* `StartAgentSession(configJson)` and every other path converge on `Save
|
|
22
|
+
* `StartAgentSession(configJson)` and every other path converge on `Save`.
|
|
23
|
+
*
|
|
24
|
+
* The recording ledger's columns need no subclass: they are protected in metadata
|
|
25
|
+
* (`AllowUpdateAPI=false`, #6010), so an entity save cannot write them and only the ledger's stored
|
|
26
|
+
* procedures do.
|
|
21
27
|
*
|
|
22
28
|
* See {@link FindProtectedSessionConfigChanges} for what is protected and why, and
|
|
23
29
|
* `RunWithTrustedSessionConfigWrites` for how server code opts in.
|
|
@@ -26,52 +32,41 @@ import { FindProtectedSessionConfigChanges, IsTrustedSessionConfigWriteActive }
|
|
|
26
32
|
* every save, whereas async validation can be skipped by an option, and a guard that a caller can opt
|
|
27
33
|
* out of is not a guard.
|
|
28
34
|
*/
|
|
35
|
+
/** The close reasons a session owner may record; every other value is stamped by the server. */
|
|
36
|
+
const OWNER_CLOSE_REASONS = new Set(['Explicit', 'Error']);
|
|
29
37
|
let MJAIAgentSessionEntityServer = class MJAIAgentSessionEntityServer extends MJAIAgentSessionEntity {
|
|
30
|
-
static { MJAIAgentSessionEntityServer_1 = this; }
|
|
31
|
-
/**
|
|
32
|
-
* Columns the client-direct recording ledger's stored procedures own (#5294). They change under a live
|
|
33
|
-
* session (shard inserts, terminal stamps, assembly claims and finishes) without going through this
|
|
34
|
-
* entity.
|
|
35
|
-
*/
|
|
36
|
-
static { this.recordingLedgerFields = [
|
|
37
|
-
'RecordingStatus', 'RecordingExpectedShards', 'RecordingCapturedSamples', 'RecordingGaps',
|
|
38
|
-
'RecordingAssemblyVersion', 'RecordingFileID', 'RecordingMedia',
|
|
39
|
-
]; }
|
|
40
|
-
/**
|
|
41
|
-
* Saves without writing back the recording ledger's columns the caller did not change.
|
|
42
|
-
*
|
|
43
|
-
* An update writes every loaded column, so a session loaded before a ledger procedure ran and saved
|
|
44
|
-
* after it (a heartbeat, the close, a delegated tool call that rolls `Config` forward, a verification
|
|
45
|
-
* step) would put the stale recording state back: rewind the assembly version and status (a running
|
|
46
|
-
* assembly then loses its fence and a superseded one can win it) or clear `RecordingFileID` (a later
|
|
47
|
-
* re-assembly then has no file to reuse and writes silence over audio it can no longer recover).
|
|
48
|
-
* Marking those fields not-loaded makes the save leave them out of the update procedure, whose
|
|
49
|
-
* `ISNULL` keeps the stored values. A field the caller set explicitly (the legacy whole-call upload
|
|
50
|
-
* stamps `RecordingFileID`) is dirty and is still saved; an insert takes every column.
|
|
51
|
-
*
|
|
52
|
-
* `MarkNotLoaded` is the hydration paths' tool; this entity uses it for the same meaning — "this copy
|
|
53
|
-
* of the value is not the database's" — at the one place every server-side save converges.
|
|
54
|
-
*/
|
|
55
|
-
async Save(options) {
|
|
56
|
-
if (this.IsSaved) {
|
|
57
|
-
for (const name of MJAIAgentSessionEntityServer_1.recordingLedgerFields) {
|
|
58
|
-
const field = this.GetFieldByName(name);
|
|
59
|
-
if (field && !field.Dirty) {
|
|
60
|
-
field.MarkNotLoaded();
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return super.Save(options);
|
|
65
|
-
}
|
|
66
38
|
Validate() {
|
|
67
39
|
const result = super.Validate();
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
40
|
+
const violations = [
|
|
41
|
+
this.checkProtectedConfigKeys(),
|
|
42
|
+
this.checkServerManagedCloseReason(),
|
|
43
|
+
CheckAnonymousOwnershipKeyChange(this, 'ConversationID'),
|
|
44
|
+
].filter((v) => v !== null);
|
|
45
|
+
if (violations.length > 0) {
|
|
46
|
+
result.Errors.push(...violations);
|
|
71
47
|
result.Success = false;
|
|
72
48
|
}
|
|
73
49
|
return result;
|
|
74
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Returns a refusal when an untrusted save writes or overwrites a server-only `CloseReason`, else null. The owner may
|
|
53
|
+
* close their own row as `Explicit` or `Error`; `TimeLimit` is stamped only after `SessionManager.CloseSession`
|
|
54
|
+
* verifies it against the stored deadline, and `Idle`, `Janitor` and `Shutdown` belong to the janitor and the
|
|
55
|
+
* host. A stamped server-only reason is the record of how the session ended, so the owner cannot replace it either.
|
|
56
|
+
* Server code that stamps them saves inside `RunWithTrustedSessionConfigWrites`.
|
|
57
|
+
*/
|
|
58
|
+
checkServerManagedCloseReason() {
|
|
59
|
+
const field = this.GetFieldByName('CloseReason');
|
|
60
|
+
if (IsTrustedSessionConfigWriteActive() || !field?.Dirty) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
const previous = typeof field.OldValue === 'string' ? field.OldValue : null;
|
|
64
|
+
const serverOnly = [this.CloseReason, previous].find((reason) => reason !== null && !OWNER_CLOSE_REASONS.has(reason));
|
|
65
|
+
if (serverOnly === undefined) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
return new ValidationErrorInfo('CloseReason', `CloseReason '${serverOnly}' is server-managed; a session owner can close a session only as Explicit or Error, and cannot change a reason the server recorded.`, this.CloseReason, ValidationErrorType.Failure);
|
|
69
|
+
}
|
|
75
70
|
/** Returns a refusal when an untrusted save changes a protected `Config` key, else null. */
|
|
76
71
|
checkProtectedConfigKeys() {
|
|
77
72
|
if (IsTrustedSessionConfigWriteActive()) {
|
|
@@ -81,6 +76,11 @@ let MJAIAgentSessionEntityServer = class MJAIAgentSessionEntityServer extends MJ
|
|
|
81
76
|
if (!configField) {
|
|
82
77
|
return null;
|
|
83
78
|
}
|
|
79
|
+
// A 'Use' transaction variable writes its field at submit, after this comparison: on Config its value is unknown
|
|
80
|
+
// here, and on ID the update (and this Config) lands on another session than the one compared against.
|
|
81
|
+
if (IsSetByTransactionVariable(this, ['Config', 'ID'])) {
|
|
82
|
+
return new ValidationErrorInfo('Config', 'Config is server-managed in part, so neither it nor the row it is written to can come from a transaction variable.', null, ValidationErrorType.Failure);
|
|
83
|
+
}
|
|
84
84
|
// A saved record is compared against what was loaded; a new record against nothing. For a
|
|
85
85
|
// saved record whose Config was not touched there is nothing to compare.
|
|
86
86
|
if (this.IsSaved && !configField.Dirty) {
|
|
@@ -94,7 +94,7 @@ let MJAIAgentSessionEntityServer = class MJAIAgentSessionEntityServer extends MJ
|
|
|
94
94
|
return new ValidationErrorInfo('Config', `Config keys [${changed.join(', ')}] are server-managed and cannot be set by the session owner.`, null, ValidationErrorType.Failure);
|
|
95
95
|
}
|
|
96
96
|
};
|
|
97
|
-
MJAIAgentSessionEntityServer =
|
|
97
|
+
MJAIAgentSessionEntityServer = __decorate([
|
|
98
98
|
RegisterClass(BaseEntity, 'MJ: AI Agent Sessions')
|
|
99
99
|
], MJAIAgentSessionEntityServer);
|
|
100
100
|
export { MJAIAgentSessionEntityServer };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJAIAgentSessionEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJAIAgentSessionEntityServer.server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MJAIAgentSessionEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJAIAgentSessionEntityServer.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { EntitySaveOptions, ValidationResult } from '@memberjunction/core';
|
|
2
|
+
import { MJAIAgentUserPolicyEntity } from '@memberjunction/core-entities';
|
|
3
|
+
/**
|
|
4
|
+
* Server-side `MJ: AI Agent User Policies` entity: a user's agent policy is private to that user.
|
|
5
|
+
*
|
|
6
|
+
* The UI role may create and update policies (granted in `metadata/entity-permissions`) so that
|
|
7
|
+
* a regular user's Chief of Staff can persist their preferences during onboarding and the
|
|
8
|
+
* cockpit's Governance tab can save edits. Row-level security for this entity is not yet
|
|
9
|
+
* expressible as version-controlled metadata, so this subclass is the defense-in-depth gate,
|
|
10
|
+
* mirroring `MJUserRoutineEntityServer`:
|
|
11
|
+
*
|
|
12
|
+
* 1. **Ownership** — a non-Owner-type context user may only save the policy whose `UserID` is
|
|
13
|
+
* their own, compared against the PRE-save owner so reassigning `UserID` cannot bypass it.
|
|
14
|
+
* Owner-type users (administrators, the scheduler's system user) are exempt.
|
|
15
|
+
* 2. **Owner attribution** — first save defaults `UserID` to the context user when unset, so
|
|
16
|
+
* programmatic create paths attribute the row correctly.
|
|
17
|
+
*/
|
|
18
|
+
export declare class MJAIAgentUserPolicyEntityServer extends MJAIAgentUserPolicyEntity {
|
|
19
|
+
Save(options?: EntitySaveOptions): Promise<boolean>;
|
|
20
|
+
Validate(): ValidationResult;
|
|
21
|
+
private validateOwnership;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=MJAIAgentUserPolicyEntityServer.server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJAIAgentUserPolicyEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJAIAgentUserPolicyEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,iBAAiB,EAA4C,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEjI,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1E;;;;;;;;;;;;;;GAcG;AACH,qBACa,+BAAgC,SAAQ,yBAAyB;IACpD,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAOzD,QAAQ,IAAI,gBAAgB;IAO5C,OAAO,CAAC,iBAAiB;CAe5B"}
|
|
@@ -0,0 +1,53 @@
|
|
|
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, UUIDsEqual } from '@memberjunction/global';
|
|
9
|
+
import { MJAIAgentUserPolicyEntity } from '@memberjunction/core-entities';
|
|
10
|
+
/**
|
|
11
|
+
* Server-side `MJ: AI Agent User Policies` entity: a user's agent policy is private to that user.
|
|
12
|
+
*
|
|
13
|
+
* The UI role may create and update policies (granted in `metadata/entity-permissions`) so that
|
|
14
|
+
* a regular user's Chief of Staff can persist their preferences during onboarding and the
|
|
15
|
+
* cockpit's Governance tab can save edits. Row-level security for this entity is not yet
|
|
16
|
+
* expressible as version-controlled metadata, so this subclass is the defense-in-depth gate,
|
|
17
|
+
* mirroring `MJUserRoutineEntityServer`:
|
|
18
|
+
*
|
|
19
|
+
* 1. **Ownership** — a non-Owner-type context user may only save the policy whose `UserID` is
|
|
20
|
+
* their own, compared against the PRE-save owner so reassigning `UserID` cannot bypass it.
|
|
21
|
+
* Owner-type users (administrators, the scheduler's system user) are exempt.
|
|
22
|
+
* 2. **Owner attribution** — first save defaults `UserID` to the context user when unset, so
|
|
23
|
+
* programmatic create paths attribute the row correctly.
|
|
24
|
+
*/
|
|
25
|
+
let MJAIAgentUserPolicyEntityServer = class MJAIAgentUserPolicyEntityServer extends MJAIAgentUserPolicyEntity {
|
|
26
|
+
async Save(options) {
|
|
27
|
+
if (!this.IsSaved && !this.UserID && this.ContextCurrentUser) {
|
|
28
|
+
this.UserID = this.ContextCurrentUser.ID;
|
|
29
|
+
}
|
|
30
|
+
return super.Save(options);
|
|
31
|
+
}
|
|
32
|
+
Validate() {
|
|
33
|
+
const result = super.Validate();
|
|
34
|
+
this.validateOwnership(result);
|
|
35
|
+
result.Success = result.Success && result.Errors.length === 0;
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
validateOwnership(result) {
|
|
39
|
+
const user = this.ContextCurrentUser;
|
|
40
|
+
if (!user || user.Type?.trim().toLowerCase() === 'owner') {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const preSaveOwnerId = this.GetFieldByName('UserID')?.OldValue ?? this.UserID;
|
|
44
|
+
if (preSaveOwnerId && !UUIDsEqual(preSaveOwnerId, user.ID)) {
|
|
45
|
+
result.Errors.push(new ValidationErrorInfo('UserID', 'An agent policy is private to its user — you can only modify your own policy.', this.UserID, ValidationErrorType.Failure));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
MJAIAgentUserPolicyEntityServer = __decorate([
|
|
50
|
+
RegisterClass(BaseEntity, 'MJ: AI Agent User Policies')
|
|
51
|
+
], MJAIAgentUserPolicyEntityServer);
|
|
52
|
+
export { MJAIAgentUserPolicyEntityServer };
|
|
53
|
+
//# sourceMappingURL=MJAIAgentUserPolicyEntityServer.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJAIAgentUserPolicyEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJAIAgentUserPolicyEntityServer.server.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAqB,mBAAmB,EAAE,mBAAmB,EAAoB,MAAM,sBAAsB,CAAC;AACjI,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1E;;;;;;;;;;;;;;GAcG;AAEI,IAAM,+BAA+B,GAArC,MAAM,+BAAgC,SAAQ,yBAAyB;IAC1D,KAAK,CAAC,IAAI,CAAC,OAA2B;QAClD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAEe,QAAQ;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,iBAAiB,CAAC,MAAwB;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACrC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC;YACvD,OAAO;QACX,CAAC;QACD,MAAM,cAAc,GAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,QAAsC,IAAI,IAAI,CAAC,MAAM,CAAC;QAC7G,IAAI,cAAc,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CACtC,QAAQ,EACR,+EAA+E,EAC/E,IAAI,CAAC,MAAM,EACX,mBAAmB,CAAC,OAAO,CAC9B,CAAC,CAAC;QACP,CAAC;IACL,CAAC;CACJ,CAAA;AA9BY,+BAA+B;IAD3C,aAAa,CAAC,UAAU,EAAE,4BAA4B,CAAC;GAC3C,+BAA+B,CA8B3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJAIPromptEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJAIPromptEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,iBAAiB,EAAE,iBAAiB,EAAgC,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE9J,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAkF,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjJ;;;;;;GAMG;AACH,qBACa,sBAAuB,SAAQ,wBAAwB;IAChE,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAuB;IAC5D;;;;OAIG;IACH,WAAkB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAEvD;IACD,WAAkB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAE3D;IAED,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAuB;IAC7D;;;;;;;;;;OAUG;IACH,WAAkB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAExD;IACD,WAAkB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAE5D;IAED;;;;;;;;;OASG;cACa,iCAAiC,IAAI,OAAO,CAAC,MAAM,CAAC;IA0BpE;;;;;;OAMG;cACa,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBzE;;;;;;OAMG;IACY,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IA8ClE;;;;;;OAMG;cACa,4BAA4B,CAAC,EAAE,EAAE,iBAAiB,EAAE,EAAE,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MJAIPromptEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJAIPromptEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,iBAAiB,EAAE,iBAAiB,EAAgC,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE9J,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAkF,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjJ;;;;;;GAMG;AACH,qBACa,sBAAuB,SAAQ,wBAAwB;IAChE,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAuB;IAC5D;;;;OAIG;IACH,WAAkB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAEvD;IACD,WAAkB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAE3D;IAED,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAuB;IAC7D;;;;;;;;;;OAUG;IACH,WAAkB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAExD;IACD,WAAkB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAE5D;IAED;;;;;;;;;OASG;cACa,iCAAiC,IAAI,OAAO,CAAC,MAAM,CAAC;IA0BpE;;;;;;OAMG;cACa,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBzE;;;;;;OAMG;IACY,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IA8ClE;;;;;;OAMG;cACa,4BAA4B,CAAC,EAAE,EAAE,iBAAiB,EAAE,EAAE,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAqDhH;;;;;OAKG;cACa,uCAAuC,CAAC,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IA2ChH;;;OAGG;cACa,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC;CAoB9D"}
|
|
@@ -175,7 +175,8 @@ let MJAIPromptEntityServer = class MJAIPromptEntityServer extends MJAIPromptEnti
|
|
|
175
175
|
ExtraFilter: `TemplateID='${this.TemplateID}'`,
|
|
176
176
|
OrderBy: "__mj_CreatedAt ASC", // first one
|
|
177
177
|
ResultType: 'entity_object',
|
|
178
|
-
MaxRows: 1 // should only be one row
|
|
178
|
+
MaxRows: 1, // should only be one row
|
|
179
|
+
SkipTotalRowCount: true
|
|
179
180
|
}, this.ContextCurrentUser);
|
|
180
181
|
let tc = undefined;
|
|
181
182
|
if (result && result.Success && result.Results.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJAIPromptEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJAIPromptEntityServer.server.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAA0D,UAAU,EAAwB,MAAM,sBAAsB,CAAC;AAC9J,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAGxE;;;;;;GAMG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,wBAAwB;;aACjD,2BAAsB,GAAkB,IAAI,AAAtB,CAAuB;IAC5D;;;;OAIG;IACI,MAAM,KAAK,qBAAqB;QACnC,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACvC,CAAC;IACM,MAAM,KAAK,qBAAqB,CAAC,KAAoB;QACxD,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACxC,CAAC;aAEc,4BAAuB,GAAkB,IAAI,AAAtB,CAAuB;IAC7D;;;;;;;;;;OAUG;IACI,MAAM,KAAK,sBAAsB;QACpC,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACxC,CAAC;IACM,MAAM,KAAK,sBAAsB,CAAC,KAAoB;QACzD,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;IACzC,CAAC;IAED;;;;;;;;;OASG;IACO,KAAK,CAAC,iCAAiC;QAC7C,IAAI,wBAAsB,CAAC,sBAAsB,EAAE,CAAC;YAChD,OAAO,wBAAsB,CAAC,sBAAsB,CAAC;QACzD,CAAC;QAED,0EAA0E;QAC1E,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;YAC3B,6BAA6B,CAAC,EAAE,KAAK,IAAI,gBAAgB,CAAC;QAC/F,MAAM,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAA;QACpC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAA2B;YACtD,UAAU,EAAE,yBAAyB;YACrC,WAAW,EAAE,SAAS,OAAO,wBAAwB;YACrD,OAAO,EAAE,oBAAoB,CAAC,YAAY;SAC7C,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC5B,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,6DAA6D;YAC7D,wBAAsB,CAAC,sBAAsB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,OAAO,wBAAsB,CAAC,sBAAsB,CAAC;QACzD,CAAC;aACI,CAAC;YACF,2DAA2D;YAC3D,OAAO,MAAM,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACO,KAAK,CAAC,0BAA0B,CAAC,IAAY;QACnD,MAAM,EAAE,GAAG,IAAI,CAAC,aAAyC,CAAC;QAC1D,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,eAAe,CAA2B,yBAAyB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC5H,YAAY,CAAC,SAAS,EAAE,CAAC;QACzB,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,YAAY,CAAC,WAAW,GAAG,kEAAkE,CAAC;QAC9F,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAEjD,oBAAoB;QACpB,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;YACtB,wBAAsB,CAAC,sBAAsB,GAAG,YAAY,CAAC,EAAE,CAAC;YAChE,OAAO,wBAAsB,CAAC,sBAAsB,CAAC;QACzD,CAAC;aACI,CAAC;YACF,gEAAgE;YAChE,MAAM,IAAI,KAAK,CAAC,sDAAsD,IAAI,4CAA4C,CAAC,CAAC;QAC5H,CAAC;IACL,CAAC;IAGD;;;;;;OAMG;IACM,KAAK,CAAC,IAAI,CAAC,OAA2B;QAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,aAAyC,CAAC;QAE1D,6EAA6E;QAC7E,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uCAAuC,CAAC,EAAE,CAAC,CAAC;YACxE,IAAI,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,sCAAsC;YACzE,CAAC;iBACI,CAAC;gBACF,OAAO,GAAG,KAAK,CAAC,CAAC,+EAA+E;gBAChG,4DAA4D;gBAC5D,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;gBACtC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;gBACvB,MAAM,CAAC,OAAO,GAAG,6FAA6F,CAAC;gBAC/G,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;aACI,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzF,gFAAgF;YAChF,IAAI,CAAE,MAAM,IAAI,CAAC,4BAA4B,CAAC,EAAE,CAAC,EAAC,CAAC;gBAC/C,OAAO,GAAG,KAAK,CAAC,CAAC,wFAAwF;gBACzG,4DAA4D;gBAC5D,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;gBACtC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;gBACvB,MAAM,CAAC,OAAO,GAAG,sGAAsG,CAAC;gBACxH,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACV,gCAAgC;YAChC,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAG,CAAC;gBAC7B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,+CAA+C;gBAC/F,OAAO,IAAI,CAAC;YAChB,CAAC;iBACI,CAAC;gBACF,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;aACI,CAAC;YACF,8GAA8G;YAC9G,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACO,KAAK,CAAC,4BAA4B,CAAC,EAAqB,EAAE,EAAyB;QACzF,IAAI,CAAC;YACD,wFAAwF;YACxF,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;YAC1F,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAA;YACpC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAA0B;gBACrD,UAAU,EAAE,uBAAuB;gBACnC,WAAW,EAAE,eAAe,IAAI,CAAC,UAAU,GAAG;gBAC9C,OAAO,EAAE,oBAAoB,EAAE,YAAY;gBAC3C,UAAU,EAAE,eAAe;gBAC3B,OAAO,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"MJAIPromptEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJAIPromptEntityServer.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidationResult } from '@memberjunction/core';
|
|
2
|
+
import { MJBrandKitEntity } from '@memberjunction/core-entities';
|
|
3
|
+
/**
|
|
4
|
+
* Server-side `MJ: Brand Kits` entity enforcing the one-default-kit-per-scope rule (§4.1):
|
|
5
|
+
* at most one brand kit with `IsDefault = 1` may exist per `CompanyID` scope (where
|
|
6
|
+
* `CompanyID IS NULL` is the org-wide scope). No SQL index backs `IsDefault`; this
|
|
7
|
+
* `ValidateAsync` check is the only guard, failing a second default kit in the same scope
|
|
8
|
+
* with a `ValidationErrorInfo` naming the existing default kit rather than silently swapping flags.
|
|
9
|
+
*/
|
|
10
|
+
export declare class MJBrandKitEntityServer extends MJBrandKitEntity {
|
|
11
|
+
get DefaultSkipAsyncValidation(): boolean;
|
|
12
|
+
ValidateAsync(): Promise<ValidationResult>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=MJBrandKitEntityServer.server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJBrandKitEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJBrandKitEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwD,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE9G,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE;;;;;;GAMG;AACH,qBACa,sBAAuB,SAAQ,gBAAgB;IACxD,IAAoB,0BAA0B,IAAI,OAAO,CAExD;IAEqB,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;CA+EnE"}
|
|
@@ -0,0 +1,75 @@
|
|
|
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 { EscapeSQLString, RegisterClass } from '@memberjunction/global';
|
|
9
|
+
import { MJBrandKitEntity } from '@memberjunction/core-entities';
|
|
10
|
+
/**
|
|
11
|
+
* Server-side `MJ: Brand Kits` entity enforcing the one-default-kit-per-scope rule (§4.1):
|
|
12
|
+
* at most one brand kit with `IsDefault = 1` may exist per `CompanyID` scope (where
|
|
13
|
+
* `CompanyID IS NULL` is the org-wide scope). No SQL index backs `IsDefault`; this
|
|
14
|
+
* `ValidateAsync` check is the only guard, failing a second default kit in the same scope
|
|
15
|
+
* with a `ValidationErrorInfo` naming the existing default kit rather than silently swapping flags.
|
|
16
|
+
*/
|
|
17
|
+
let MJBrandKitEntityServer = class MJBrandKitEntityServer extends MJBrandKitEntity {
|
|
18
|
+
get DefaultSkipAsyncValidation() {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
async ValidateAsync() {
|
|
22
|
+
const result = await super.ValidateAsync();
|
|
23
|
+
if (!result.Success) {
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
if (!this.IsDefault) {
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
const isDefaultDirty = this.GetFieldByName('IsDefault')?.Dirty ?? false;
|
|
30
|
+
const companyIdDirty = this.GetFieldByName('CompanyID')?.Dirty ?? false;
|
|
31
|
+
if (this.IsSaved && !isDefaultDirty && !companyIdDirty) {
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
const companyFilter = this.CompanyID
|
|
35
|
+
? `CompanyID = '${EscapeSQLString(this.CompanyID)}'`
|
|
36
|
+
: 'CompanyID IS NULL';
|
|
37
|
+
const selfFilter = this.ID
|
|
38
|
+
? ` AND ID <> '${EscapeSQLString(this.ID)}'`
|
|
39
|
+
: '';
|
|
40
|
+
const extraFilter = `IsDefault = 1 AND ${companyFilter}${selfFilter}`;
|
|
41
|
+
try {
|
|
42
|
+
const rv = this.RunViewProviderToUse;
|
|
43
|
+
const runResult = await rv.RunView({
|
|
44
|
+
EntityName: 'MJ: Brand Kits',
|
|
45
|
+
ExtraFilter: extraFilter,
|
|
46
|
+
Fields: ['ID', 'Name'],
|
|
47
|
+
ResultType: 'simple',
|
|
48
|
+
MaxRows: 1,
|
|
49
|
+
}, this.ContextCurrentUser);
|
|
50
|
+
if (!runResult.Success) {
|
|
51
|
+
result.Errors.push(new ValidationErrorInfo('IsDefault', `Could not check for another default kit: ${runResult.ErrorMessage ?? 'RunView failed'}.`, this.IsDefault, ValidationErrorType.Failure));
|
|
52
|
+
result.Success = false;
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
const existing = runResult.Results?.[0];
|
|
56
|
+
if (existing) {
|
|
57
|
+
const scopeMessage = this.CompanyID
|
|
58
|
+
? `Brand kit '${existing.Name}' is already the default for this company. Clear its IsDefault first.`
|
|
59
|
+
: `Brand kit '${existing.Name}' is already the default for all companies. Clear its IsDefault first.`;
|
|
60
|
+
result.Errors.push(new ValidationErrorInfo('IsDefault', scopeMessage, this.IsDefault, ValidationErrorType.Failure));
|
|
61
|
+
result.Success = false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
result.Errors.push(new ValidationErrorInfo('IsDefault', `Could not check for another default kit: ${err instanceof Error ? err.message : String(err)}.`, this.IsDefault, ValidationErrorType.Failure));
|
|
66
|
+
result.Success = false;
|
|
67
|
+
}
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
MJBrandKitEntityServer = __decorate([
|
|
72
|
+
RegisterClass(BaseEntity, 'MJ: Brand Kits')
|
|
73
|
+
], MJBrandKitEntityServer);
|
|
74
|
+
export { MJBrandKitEntityServer };
|
|
75
|
+
//# sourceMappingURL=MJBrandKitEntityServer.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJBrandKitEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJBrandKitEntityServer.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJCompanyIntegrationEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJCompanyIntegrationEntityServer.server.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,0BAA0B,EAAuB,MAAM,+BAA+B,CAAC;AAQhG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AACH,qBACa,gCAAiC,SAAQ,0BAA0B;IAC5E;;;;;;;;OAQG;IACU,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"MJCompanyIntegrationEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJCompanyIntegrationEntityServer.server.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,0BAA0B,EAAuB,MAAM,+BAA+B,CAAC;AAQhG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AACH,qBACa,gCAAiC,SAAQ,0BAA0B;IAC5E;;;;;;;;OAQG;IACU,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;CA2EzD"}
|
|
@@ -136,6 +136,7 @@ let MJCompanyIntegrationEntityServer = class MJCompanyIntegrationEntityServer ex
|
|
|
136
136
|
ExtraFilter: `ID='${this.IntegrationID}'`,
|
|
137
137
|
ResultType: 'entity_object',
|
|
138
138
|
MaxRows: 1,
|
|
139
|
+
SkipTotalRowCount: true,
|
|
139
140
|
}, user);
|
|
140
141
|
const integration = integResult.Success ? integResult.Results[0] : undefined;
|
|
141
142
|
if (!integration) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJCompanyIntegrationEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJCompanyIntegrationEntityServer.server.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EACH,UAAU,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,OAAO,GAGV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,0BAA0B,EAAuB,MAAM,+BAA+B,CAAC;AAChG,OAAO,EACH,oCAAoC,EACpC,iBAAiB,EACjB,gBAAgB,GACnB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AAEI,IAAM,gCAAgC,GAAtC,MAAM,gCAAiC,SAAQ,0BAA0B;IAC5E;;;;;;;;OAQG;IACI,KAAK,CAAC,wBAAwB;QACjC,MAAM,IAAI,GAAyB,IAAI,CAAC,kBAAkB,CAAC;QAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,SAAS,CAAC,iEAAiE,IAAI,CAAC,EAAE,mCAAmC,CAAC,CAAC;YACvH,OAAO;QACX,CAAC;QACD,2EAA2E;QAC3E,qEAAqE;QACrE,2EAA2E;QAC3E,4EAA4E;QAC5E,MAAM,QAAQ,GAAkC,IAAI,CAAC,aAAyD,CAAC;QAE/G,SAAS,CAAC,mEAAmE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAE5I,2EAA2E;QAC3E,yDAAyD;QACzD,MAAM,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE/D,oEAAoE;QACpE,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,OAAO,CAAsB;YACtD,UAAU,EAAE,kBAAkB;YAC9B,WAAW,EAAE,OAAO,IAAI,CAAC,aAAa,GAAG;YACzC,UAAU,EAAE,eAAe;YAC3B,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"MJCompanyIntegrationEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJCompanyIntegrationEntityServer.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,9 +24,18 @@ import { MJComponentEntityExtended } from "@memberjunction/core-entities";
|
|
|
24
24
|
* found by comparing with the stored row, not with the values as loaded. When a read fails, the
|
|
25
25
|
* write is refused. The check needs a query and `Validate()` is synchronous, so it runs in `Save()`
|
|
26
26
|
* (an ordinary save and a `ReplayOnly` save alike) and in `Delete()`, before the write.
|
|
27
|
+
*
|
|
28
|
+
* Approval (`ApprovalStatus`) is a server act: a save that moves it to Approved records the context
|
|
29
|
+
* user, the time and the fingerprint of this version's specification (`ApplyApprovalRulesAsync`).
|
|
27
30
|
*/
|
|
28
31
|
export declare class MJComponentEntityServer extends MJComponentEntityExtended {
|
|
29
32
|
Save(options?: EntitySaveOptions): Promise<boolean>;
|
|
33
|
+
/**
|
|
34
|
+
* Applies the approval rules. Nothing in this save derives the specification or version, so an
|
|
35
|
+
* approving save stamps the fingerprint now and writes it with the row.
|
|
36
|
+
* @returns false when the save was refused (the reason is in `LatestResult`)
|
|
37
|
+
*/
|
|
38
|
+
private applyApprovalAsync;
|
|
30
39
|
Delete(options?: EntityDeleteOptions): Promise<boolean>;
|
|
31
40
|
/**
|
|
32
41
|
* Simple proxy to local helper method for embeddings. Needed for BaseEntity sub-classes that want to use embeddings built into BaseEntity
|
|
@@ -34,6 +43,8 @@ export declare class MJComponentEntityServer extends MJComponentEntityExtended {
|
|
|
34
43
|
* @returns
|
|
35
44
|
*/
|
|
36
45
|
protected EmbedTextLocal(textToEmbed: string): Promise<SimpleEmbeddingResult>;
|
|
46
|
+
/** A stored vector from a model other than the default local one is re-embedded on save. */
|
|
47
|
+
protected IsEmbeddingStale(embeddingModelID: string | null): Promise<boolean>;
|
|
37
48
|
/** This component as the guard reads it. Built here because `ActiveUser` is protected on `BaseEntity`. */
|
|
38
49
|
private get guardedRow();
|
|
39
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJComponentEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJComponentEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EAExB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,
|
|
1
|
+
{"version":3,"file":"MJComponentEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJComponentEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EAExB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAoC,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAM5G;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBACa,uBAAwB,SAAQ,yBAAyB;IAC5C,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BzE;;;;OAIG;YACW,kBAAkB;IAYV,MAAM,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAS7E;;;;OAIG;cACsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI5F,4FAA4F;cACnE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5F,0GAA0G;IAC1G,OAAO,KAAK,UAAU,GAcrB;CACJ"}
|
|
@@ -6,10 +6,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { BaseEntity, } from "@memberjunction/core";
|
|
8
8
|
import { RegisterClass } from "@memberjunction/global";
|
|
9
|
-
import { MJComponentEntityExtended } from "@memberjunction/core-entities";
|
|
10
|
-
import { EmbedTextLocalHelper } from "./util.js";
|
|
9
|
+
import { ComputeComponentFingerprintAsync, MJComponentEntityExtended } from "@memberjunction/core-entities";
|
|
10
|
+
import { EmbedTextLocalHelper, IsLocalEmbeddingStaleHelper } from "./util.js";
|
|
11
11
|
import { FormScopeRefusalResult } from "./FormScopeGuard.js";
|
|
12
12
|
import { ComponentGuardRefusal } from "./FormComponentGuard.js";
|
|
13
|
+
import { ApplyApprovalRulesAsync, ApprovalRefusalResult } from "./approvalStamp.js";
|
|
13
14
|
/**
|
|
14
15
|
* Server-side `MJ: Components` entity.
|
|
15
16
|
*
|
|
@@ -34,6 +35,9 @@ import { ComponentGuardRefusal } from "./FormComponentGuard.js";
|
|
|
34
35
|
* found by comparing with the stored row, not with the values as loaded. When a read fails, the
|
|
35
36
|
* write is refused. The check needs a query and `Validate()` is synchronous, so it runs in `Save()`
|
|
36
37
|
* (an ordinary save and a `ReplayOnly` save alike) and in `Delete()`, before the write.
|
|
38
|
+
*
|
|
39
|
+
* Approval (`ApprovalStatus`) is a server act: a save that moves it to Approved records the context
|
|
40
|
+
* user, the time and the fingerprint of this version's specification (`ApplyApprovalRulesAsync`).
|
|
37
41
|
*/
|
|
38
42
|
let MJComponentEntityServer = class MJComponentEntityServer extends MJComponentEntityExtended {
|
|
39
43
|
async Save(options) {
|
|
@@ -43,6 +47,9 @@ let MJComponentEntityServer = class MJComponentEntityServer extends MJComponentE
|
|
|
43
47
|
this.RegisterResultHistoryEntry(FormScopeRefusalResult(operation, refusal));
|
|
44
48
|
return false;
|
|
45
49
|
}
|
|
50
|
+
if (!await this.applyApprovalAsync(options)) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
46
53
|
await this.GenerateEmbeddingsByFieldName([
|
|
47
54
|
{
|
|
48
55
|
fieldName: "FunctionalRequirements",
|
|
@@ -60,6 +67,23 @@ let MJComponentEntityServer = class MJComponentEntityServer extends MJComponentE
|
|
|
60
67
|
const saveResult = await super.Save(options);
|
|
61
68
|
return saveResult;
|
|
62
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Applies the approval rules. Nothing in this save derives the specification or version, so an
|
|
72
|
+
* approving save stamps the fingerprint now and writes it with the row.
|
|
73
|
+
* @returns false when the save was refused (the reason is in `LatestResult`)
|
|
74
|
+
*/
|
|
75
|
+
async applyApprovalAsync(options) {
|
|
76
|
+
try {
|
|
77
|
+
if (!options?.ReplayOnly && await ApplyApprovalRulesAsync(this, 'ApprovalStatus', this.ApprovalStatus)) {
|
|
78
|
+
this.ApprovedFingerprint = await ComputeComponentFingerprintAsync(this);
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
this.RegisterResultHistoryEntry(ApprovalRefusalResult(this, e));
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
63
87
|
async Delete(options) {
|
|
64
88
|
const refusal = await ComponentGuardRefusal(this.guardedRow, 'delete');
|
|
65
89
|
if (refusal) {
|
|
@@ -76,6 +100,10 @@ let MJComponentEntityServer = class MJComponentEntityServer extends MJComponentE
|
|
|
76
100
|
async EmbedTextLocal(textToEmbed) {
|
|
77
101
|
return EmbedTextLocalHelper(this, textToEmbed);
|
|
78
102
|
}
|
|
103
|
+
/** A stored vector from a model other than the default local one is re-embedded on save. */
|
|
104
|
+
async IsEmbeddingStale(embeddingModelID) {
|
|
105
|
+
return IsLocalEmbeddingStaleHelper(this, embeddingModelID);
|
|
106
|
+
}
|
|
79
107
|
/** This component as the guard reads it. Built here because `ActiveUser` is protected on `BaseEntity`. */
|
|
80
108
|
get guardedRow() {
|
|
81
109
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJComponentEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJComponentEntityServer.server.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EACH,UAAU,GAKb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"MJComponentEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJComponentEntityServer.server.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EACH,UAAU,GAKb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gCAAgC,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC5G,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAA4B,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEI,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,yBAAyB;IAClD,KAAK,CAAC,IAAI,CAAC,OAA2B;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACxE,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;YAC5E,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,IAAI,CAAC,6BAA6B,CAAC;YACrC;gBACI,SAAS,EAAE,wBAAwB;gBACnC,eAAe,EAAE,8BAA8B;gBAC/C,cAAc,EAAE,8CAA8C;gBAC9D,qBAAqB,EAAE,oCAAoC;aAC9D;YACD;gBACI,SAAS,EAAE,iBAAiB;gBAC5B,eAAe,EAAE,uBAAuB;gBACxC,cAAc,EAAE,uCAAuC;gBACvD,qBAAqB,EAAE,6BAA6B;aACvD;SACJ,CAAC,CAAC;QACH,MAAM,UAAU,GAAY,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,kBAAkB,CAAC,OAA2B;QACxD,IAAI,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,MAAM,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;gBACrG,IAAI,CAAC,mBAAmB,GAAG,MAAM,gCAAgC,CAAC,IAAI,CAAC,CAAC;YAC5E,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,0BAA0B,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAChE,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAEe,KAAK,CAAC,MAAM,CAAC,OAA6B;QACtD,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACvE,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YAC3E,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACgB,KAAK,CAAC,cAAc,CAAC,WAAmB;QACvD,OAAO,oBAAoB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC;IAED,4FAA4F;IACzE,KAAK,CAAC,gBAAgB,CAAC,gBAA+B;QACrE,OAAO,2BAA2B,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAC/D,CAAC;IAED,0GAA0G;IAC1G,IAAY,UAAU;QAClB,OAAO;YACH,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE;gBACJ,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS;aAC5B;YACD,eAAe,EAAE,IAAI,CAAC,oBAAoB;YAC1C,gBAAgB,EAAE,IAAI,CAAC,aAA6C;SACvE,CAAC;IACN,CAAC;CACJ,CAAA;AArFY,uBAAuB;IADnC,aAAa,CAAC,UAAU,EAAE,gBAAgB,CAAC;GAC/B,uBAAuB,CAqFnC"}
|