@memberjunction/core-entities-server 5.42.0 → 5.44.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/README.md CHANGED
@@ -118,6 +118,10 @@ See [`@memberjunction/aiengine` README](../AI/Engine/README.md#vector-store-inva
118
118
 
119
119
  Companion to `MJAIAgentNoteEntityServer` — maintains the parallel invariant for the agent example vector store on `Save`/`Delete`.
120
120
 
121
+ ### MJRemoteOperationEntityServer (v5.43.x+)
122
+
123
+ The **AI-from-Description** half of the [Remote Operations](../../guides/REMOTE_OPERATIONS_GUIDE.md) primitive (RO-4). For a `MJ: Remote Operations` row with `GenerationType='AI'`, the `Save` hook calls the `Generate Remote Operation Code` prompt to author the body of the operation's `InternalExecute` — against the ambient `input` / `provider` / `user` / `context` contract — stores it in `Code`, records the libraries it used in the JSONType `LibrariesObject`, and resets `CodeApprovalStatus='Pending'` for human review (skipped when `CodeLocked`). CodeGen then emits a complete registered class from the approved code. Mirrors `MJActionEntityServer`; transactional; no junction CRUD (the library list is a JSONType field).
124
+
121
125
  ## Architecture
122
126
 
123
127
  ### Entity Registration
@@ -0,0 +1,19 @@
1
+ import { ValidationResult } from '@memberjunction/core';
2
+ import { MJAISkillPermissionEntity } from '@memberjunction/core-entities';
3
+ /**
4
+ * Server-side AISkillPermission entity enforcing the grantee-exclusivity invariant:
5
+ * **exactly one** of `UserID` / `RoleID` must be set — never both, never neither.
6
+ *
7
+ * This mirrors the generated `MJAIAgentPermissionEntity.ValidateRoleIDAndUserIDExclusive`
8
+ * rule (which AIAgentPermission gets from a DB-authored, LLM-generated table-level
9
+ * validation baked into the shared entity). We enforce it here as a **version-controlled,
10
+ * deterministic** server-side gate so the invariant holds on every server save path
11
+ * (`Save()` calls `Validate()` and the ClassFactory resolves this higher-priority subclass
12
+ * server-side) without depending on non-deterministic LLM codegen. The sharing UI sets a
13
+ * single grantee per row by construction, so this is the integrity backstop for any other
14
+ * write path (Remote Operations, scripts, imports).
15
+ */
16
+ export declare class MJAISkillPermissionEntityServer extends MJAISkillPermissionEntity {
17
+ Validate(): ValidationResult;
18
+ }
19
+ //# sourceMappingURL=MJAISkillPermissionEntityServer.server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MJAISkillPermissionEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJAISkillPermissionEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwD,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE9G,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,qBACa,+BAAgC,SAAQ,yBAAyB;IAC1D,QAAQ,IAAI,gBAAgB;CAe/C"}
@@ -0,0 +1,39 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { BaseEntity, ValidationErrorInfo, ValidationErrorType } from '@memberjunction/core';
8
+ import { RegisterClass } from '@memberjunction/global';
9
+ import { MJAISkillPermissionEntity } from '@memberjunction/core-entities';
10
+ /**
11
+ * Server-side AISkillPermission entity enforcing the grantee-exclusivity invariant:
12
+ * **exactly one** of `UserID` / `RoleID` must be set — never both, never neither.
13
+ *
14
+ * This mirrors the generated `MJAIAgentPermissionEntity.ValidateRoleIDAndUserIDExclusive`
15
+ * rule (which AIAgentPermission gets from a DB-authored, LLM-generated table-level
16
+ * validation baked into the shared entity). We enforce it here as a **version-controlled,
17
+ * deterministic** server-side gate so the invariant holds on every server save path
18
+ * (`Save()` calls `Validate()` and the ClassFactory resolves this higher-priority subclass
19
+ * server-side) without depending on non-deterministic LLM codegen. The sharing UI sets a
20
+ * single grantee per row by construction, so this is the integrity backstop for any other
21
+ * write path (Remote Operations, scripts, imports).
22
+ */
23
+ let MJAISkillPermissionEntityServer = class MJAISkillPermissionEntityServer extends MJAISkillPermissionEntity {
24
+ Validate() {
25
+ const result = super.Validate();
26
+ const hasRole = this.RoleID != null;
27
+ const hasUser = this.UserID != null;
28
+ if ((hasRole && hasUser) || (!hasRole && !hasUser)) {
29
+ result.Errors.push(new ValidationErrorInfo('RoleID/UserID', 'You must specify either a Role or a User, but not both and not neither.', `RoleID: ${this.RoleID}, UserID: ${this.UserID}`, ValidationErrorType.Failure));
30
+ }
31
+ result.Success = result.Success && result.Errors.length === 0;
32
+ return result;
33
+ }
34
+ };
35
+ MJAISkillPermissionEntityServer = __decorate([
36
+ RegisterClass(BaseEntity, 'MJ: AI Skill Permissions')
37
+ ], MJAISkillPermissionEntityServer);
38
+ export { MJAISkillPermissionEntityServer };
39
+ //# sourceMappingURL=MJAISkillPermissionEntityServer.server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MJAISkillPermissionEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJAISkillPermissionEntityServer.server.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,mBAAmB,EAAoB,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1E;;;;;;;;;;;;GAYG;AAEI,IAAM,+BAA+B,GAArC,MAAM,+BAAgC,SAAQ,yBAAyB;IAC1D,QAAQ;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;QACpC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CACtC,eAAe,EACf,yEAAyE,EACzE,WAAW,IAAI,CAAC,MAAM,aAAa,IAAI,CAAC,MAAM,EAAE,EAChD,mBAAmB,CAAC,OAAO,CAC9B,CAAC,CAAC;QACP,CAAC;QACD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ,CAAA;AAhBY,+BAA+B;IAD3C,aAAa,CAAC,UAAU,EAAE,0BAA0B,CAAC;GACzC,+BAA+B,CAgB3C"}
@@ -0,0 +1,55 @@
1
+ import { EntityInfo, EntitySaveOptions } from "@memberjunction/core";
2
+ import { MJRemoteOperationEntity, MJRemoteOperationEntity_RemoteOperationLibrary } from "@memberjunction/core-entities";
3
+ /** The shape `GenerateCode()` returns — the AI-authored body + its explanation + the libraries it declared. */
4
+ interface RemoteOperationGeneratedCode {
5
+ Success: boolean;
6
+ Code: string;
7
+ Comments: string;
8
+ Libraries: MJRemoteOperationEntity_RemoteOperationLibrary[];
9
+ }
10
+ /**
11
+ * Server-only subclass for the `MJ: Remote Operations` entity — the RO-4 "AI-from-Description" half of the
12
+ * Remote Operations primitive. When an `AI`-generation operation's `Description` changes, `Save()` asks the
13
+ * `Generate Remote Operation Code` prompt to author the body of `InternalExecute` (against the ambient
14
+ * contract: typed `input`, `provider`, `user`, `context`), stores it in `Code`, records the libraries the
15
+ * body uses in `LibrariesObject`, and resets `CodeApprovalStatus` to `Pending` for human review. CodeGen's
16
+ * {@link import('@memberjunction/codegen-lib').RemoteOperationGeneratorBase} then emits the registered class
17
+ * from the approved `Code` + `LibrariesObject` — no hand-written subclass required.
18
+ *
19
+ * Mirrors `MJActionEntityServer` (the Generated-Actions pipeline); the library list is a JSONType field, so
20
+ * there is no junction CRUD — `this.LibrariesObject = ...` is the whole "manage libraries" step.
21
+ */
22
+ export declare class MJRemoteOperationEntityServer extends MJRemoteOperationEntity {
23
+ /**
24
+ * Transient (never persisted) flag — set it before `Save()` to force regeneration even when `Description`
25
+ * is unchanged. Reset to false after every save, exactly like Action.ForceCodeGeneration.
26
+ */
27
+ ForceCodeGeneration: boolean;
28
+ constructor(Entity: EntityInfo);
29
+ /**
30
+ * Save override: (re)generates the AI body when needed, within a transaction so a generation/save failure
31
+ * leaves no partial state.
32
+ */
33
+ Save(options?: EntitySaveOptions): Promise<boolean>;
34
+ /** AI regeneration runs only for `GenerationType='AI'` ops whose `Description` changed (or new/forced) and that aren't locked. */
35
+ protected ShouldRegenerate(): boolean;
36
+ /**
37
+ * Asks the `Generate Remote Operation Code` prompt to author the body of `InternalExecute` from this op's
38
+ * Description + typed I/O contract + the available libraries. Returns the body, an explanation, and the
39
+ * declared libraries; never throws for a logical model failure (returns `Success: false`).
40
+ */
41
+ GenerateCode(): Promise<RemoteOperationGeneratedCode>;
42
+ /** Builds the template variables consumed by remote-operation-generation.template.md. */
43
+ protected PreparePromptData(): Record<string, unknown>;
44
+ /** The libraries an authored body may import from, with their documentation — reused verbatim from the Action pipeline. */
45
+ protected GenerateLibrariesContext(): Array<{
46
+ Name: string;
47
+ Description: string;
48
+ Items: Array<{
49
+ Name: string;
50
+ Content: string;
51
+ }>;
52
+ }>;
53
+ }
54
+ export {};
55
+ //# sourceMappingURL=MJRemoteOperationEntityServer.server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MJRemoteOperationEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJRemoteOperationEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,UAAU,EAAE,iBAAiB,EAAsB,MAAM,sBAAsB,CAAC;AAC3H,OAAO,EAAE,uBAAuB,EAAE,8CAA8C,EAAE,MAAM,+BAA+B,CAAC;AAOxH,+GAA+G;AAC/G,UAAU,4BAA4B;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,8CAA8C,EAAE,CAAC;CAC/D;AAED;;;;;;;;;;;GAWG;AACH,qBACa,6BAA8B,SAAQ,uBAAuB;IACtE;;;OAGG;IACI,mBAAmB,UAAS;gBAEvB,MAAM,EAAE,UAAU;IAS9B;;;OAGG;IACmB,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiCzE,kIAAkI;IAClI,SAAS,CAAC,gBAAgB,IAAI,OAAO;IAQrC;;;;OAIG;IACU,YAAY,IAAI,OAAO,CAAC,4BAA4B,CAAC;IAqClE,yFAAyF;IACzF,SAAS,CAAC,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IActD,2HAA2H;IAC3H,SAAS,CAAC,wBAAwB,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;CAOtI"}
@@ -0,0 +1,148 @@
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
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { BaseEntity, EntityInfo, LogError, Metadata } from "@memberjunction/core";
11
+ import { MJRemoteOperationEntity } from "@memberjunction/core-entities";
12
+ import { RegisterClass } from "@memberjunction/global";
13
+ import { AIEngine } from "@memberjunction/aiengine";
14
+ import { AIPromptRunner } from "@memberjunction/ai-prompts";
15
+ import { AIPromptParams } from "@memberjunction/ai-core-plus";
16
+ import { DocumentationEngine } from "@memberjunction/doc-utils";
17
+ /**
18
+ * Server-only subclass for the `MJ: Remote Operations` entity — the RO-4 "AI-from-Description" half of the
19
+ * Remote Operations primitive. When an `AI`-generation operation's `Description` changes, `Save()` asks the
20
+ * `Generate Remote Operation Code` prompt to author the body of `InternalExecute` (against the ambient
21
+ * contract: typed `input`, `provider`, `user`, `context`), stores it in `Code`, records the libraries the
22
+ * body uses in `LibrariesObject`, and resets `CodeApprovalStatus` to `Pending` for human review. CodeGen's
23
+ * {@link import('@memberjunction/codegen-lib').RemoteOperationGeneratorBase} then emits the registered class
24
+ * from the approved `Code` + `LibrariesObject` — no hand-written subclass required.
25
+ *
26
+ * Mirrors `MJActionEntityServer` (the Generated-Actions pipeline); the library list is a JSONType field, so
27
+ * there is no junction CRUD — `this.LibrariesObject = ...` is the whole "manage libraries" step.
28
+ */
29
+ let MJRemoteOperationEntityServer = class MJRemoteOperationEntityServer extends MJRemoteOperationEntity {
30
+ constructor(Entity) {
31
+ super(Entity);
32
+ /**
33
+ * Transient (never persisted) flag — set it before `Save()` to force regeneration even when `Description`
34
+ * is unchanged. Reset to false after every save, exactly like Action.ForceCodeGeneration.
35
+ */
36
+ this.ForceCodeGeneration = false;
37
+ // Constructor runs before the entity provider is wired, so the global Metadata is the only check available.
38
+ const md = new Metadata(); // global-provider-ok: constructor-time provider-type check
39
+ if (md.ProviderType !== 'Database') {
40
+ throw new Error('MJRemoteOperationEntityServer is server/database-only — remove @memberjunction/core-entities-server from client applications.');
41
+ }
42
+ }
43
+ /**
44
+ * Save override: (re)generates the AI body when needed, within a transaction so a generation/save failure
45
+ * leaves no partial state.
46
+ */
47
+ async Save(options) {
48
+ await AIEngine.Instance.Config(false, this.ContextCurrentUser);
49
+ await DocumentationEngine.Instance.Config(false, this.ContextCurrentUser);
50
+ const provider = this.ProviderToUse;
51
+ await provider.BeginTransaction();
52
+ try {
53
+ if (this.ShouldRegenerate()) {
54
+ const result = await this.GenerateCode();
55
+ if (!result.Success) {
56
+ throw new Error(`Failed to generate code for Remote Operation '${this.Name}': ${result.Comments}`);
57
+ }
58
+ this.Code = result.Code;
59
+ this.CodeComments = result.Comments;
60
+ this.CodeApprovalStatus = 'Pending'; // re-review required whenever the body changes
61
+ this.CodeApprovedAt = null;
62
+ this.CodeApprovedByUserID = null;
63
+ this.LibrariesObject = result.Libraries; // JSONType setter — serializes to the Libraries column
64
+ }
65
+ this.ForceCodeGeneration = false; // never persists past one Save
66
+ if (await super.Save(options)) {
67
+ await provider.CommitTransaction();
68
+ return true;
69
+ }
70
+ await provider.RollbackTransaction();
71
+ return false;
72
+ }
73
+ catch (e) {
74
+ await provider.RollbackTransaction();
75
+ throw e;
76
+ }
77
+ }
78
+ /** AI regeneration runs only for `GenerationType='AI'` ops whose `Description` changed (or new/forced) and that aren't locked. */
79
+ ShouldRegenerate() {
80
+ return (this.GenerationType === 'AI' &&
81
+ !this.CodeLocked &&
82
+ (this.GetFieldByName('Description').Dirty || !this.IsSaved || this.ForceCodeGeneration));
83
+ }
84
+ /**
85
+ * Asks the `Generate Remote Operation Code` prompt to author the body of `InternalExecute` from this op's
86
+ * Description + typed I/O contract + the available libraries. Returns the body, an explanation, and the
87
+ * declared libraries; never throws for a logical model failure (returns `Success: false`).
88
+ */
89
+ async GenerateCode() {
90
+ try {
91
+ await AIEngine.Instance.Config(false, this.ContextCurrentUser);
92
+ const aiPrompt = AIEngine.Instance.Prompts.find((p) => p.Name === 'Generate Remote Operation Code');
93
+ if (!aiPrompt) {
94
+ throw new Error('Failed to find AI prompt template: "Generate Remote Operation Code"');
95
+ }
96
+ const runner = new AIPromptRunner();
97
+ const params = new AIPromptParams();
98
+ params.prompt = aiPrompt;
99
+ params.data = this.PreparePromptData();
100
+ params.contextUser = this.ContextCurrentUser;
101
+ const result = await runner.ExecutePrompt(params);
102
+ if (result.success && result.result) {
103
+ return {
104
+ Success: true,
105
+ Code: (result.result.code ?? '').trim(),
106
+ Comments: result.result.explanation ?? '',
107
+ Libraries: (result.result.libraries ?? [])
108
+ .filter((l) => !!l?.Library)
109
+ .map((l) => ({ Library: l.Library, ItemsUsed: l.ItemsUsed ?? [] })),
110
+ };
111
+ }
112
+ return { Success: false, Code: '', Comments: result.errorMessage ?? 'Failed to generate code', Libraries: [] };
113
+ }
114
+ catch (e) {
115
+ LogError(e);
116
+ throw e;
117
+ }
118
+ }
119
+ /** Builds the template variables consumed by remote-operation-generation.template.md. */
120
+ PreparePromptData() {
121
+ return {
122
+ name: this.Name,
123
+ operationKey: this.OperationKey,
124
+ executionMode: this.ExecutionMode,
125
+ description: this.Description ?? '',
126
+ inputTypeName: this.InputTypeName ?? 'unknown',
127
+ inputTypeDefinition: this.InputTypeDefinition ?? '',
128
+ outputTypeName: this.OutputTypeName ?? 'unknown',
129
+ outputTypeDefinition: this.OutputTypeDefinition ?? '',
130
+ availableLibraries: this.GenerateLibrariesContext(),
131
+ };
132
+ }
133
+ /** The libraries an authored body may import from, with their documentation — reused verbatim from the Action pipeline. */
134
+ GenerateLibrariesContext() {
135
+ return DocumentationEngine.Instance.Libraries.map((library) => ({
136
+ Name: library.Name,
137
+ Description: library.Description,
138
+ Items: library.Items.map((item) => ({ Name: item.Name, Content: item.HTMLContent })),
139
+ }));
140
+ }
141
+ };
142
+ MJRemoteOperationEntityServer = __decorate([
143
+ RegisterClass(BaseEntity, 'MJ: Remote Operations') // high priority — ensure this server subclass wins over the generated entity
144
+ ,
145
+ __metadata("design:paramtypes", [EntityInfo])
146
+ ], MJRemoteOperationEntityServer);
147
+ export { MJRemoteOperationEntityServer };
148
+ //# sourceMappingURL=MJRemoteOperationEntityServer.server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MJRemoteOperationEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJRemoteOperationEntityServer.server.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -27,10 +27,12 @@ export * from './custom/MJAIBridgeProviderChannelEntityServer.server.js';
27
27
  export * from './custom/MJAIAgentSessionBridgeEntityServer.server.js';
28
28
  export * from './custom/MJAIAgentSessionBridgeParticipantEntityServer.server.js';
29
29
  export * from './custom/MJAIRemoteBrowserProviderEntityServer.server.js';
30
+ export * from './custom/MJAISkillPermissionEntityServer.server.js';
30
31
  export * from './custom/json-schema-lite.js';
31
32
  export * from './custom/IntegrationLLMPKCallback.js';
32
33
  export * from './custom/util.js';
33
34
  export * from './engines/QueryEngineServer.js';
34
35
  export * from './engines/QueryMatchResult.js';
35
36
  export * from './engines/ComponentMetadataEngineServer.js';
37
+ export * from './custom/MJRemoteOperationEntityServer.server.js';
36
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,uDAAuD,CAAC;AACtE,cAAc,oDAAoD,CAAC;AACnE,cAAc,+DAA+D,CAAC;AAC9E,cAAc,uDAAuD,CAAC;AACtE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,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,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,uDAAuD,CAAC;AACtE,cAAc,oDAAoD,CAAC;AACnE,cAAc,+DAA+D,CAAC;AAC9E,cAAc,uDAAuD,CAAC;AACtE,cAAc,iDAAiD,CAAC;AAChE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AAAA,cAAc,+CAA+C,CAAC"}
package/dist/index.js CHANGED
@@ -27,10 +27,12 @@ export * from './custom/MJAIBridgeProviderChannelEntityServer.server.js';
27
27
  export * from './custom/MJAIAgentSessionBridgeEntityServer.server.js';
28
28
  export * from './custom/MJAIAgentSessionBridgeParticipantEntityServer.server.js';
29
29
  export * from './custom/MJAIRemoteBrowserProviderEntityServer.server.js';
30
+ export * from './custom/MJAISkillPermissionEntityServer.server.js';
30
31
  export * from './custom/json-schema-lite.js';
31
32
  export * from './custom/IntegrationLLMPKCallback.js';
32
33
  export * from './custom/util.js';
33
34
  export * from './engines/QueryEngineServer.js';
34
35
  export * from './engines/QueryMatchResult.js';
35
36
  export * from './engines/ComponentMetadataEngineServer.js';
37
+ export * from './custom/MJRemoteOperationEntityServer.server.js';
36
38
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,uDAAuD,CAAC;AACtE,cAAc,oDAAoD,CAAC;AACnE,cAAc,+DAA+D,CAAC;AAC9E,cAAc,uDAAuD,CAAC;AACtE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,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,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,uDAAuD,CAAC;AACtE,cAAc,oDAAoD,CAAC;AACnE,cAAc,+DAA+D,CAAC;AAC9E,cAAc,uDAAuD,CAAC;AACtE,cAAc,iDAAiD,CAAC;AAChE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AAAA,cAAc,+CAA+C,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/core-entities-server",
3
3
  "type": "module",
4
- "version": "5.42.0",
4
+ "version": "5.44.0",
5
5
  "description": "Entity subclasses for the metadata layer of MemberJunction that are only used on server side applications like MJAPI, distributed as part of each release of MemberJunction",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -21,29 +21,29 @@
21
21
  "typescript": "^5.9.3"
22
22
  },
23
23
  "dependencies": {
24
- "@memberjunction/actions-base": "5.42.0",
25
- "@memberjunction/ai": "5.42.0",
26
- "@memberjunction/ai-core-plus": "5.42.0",
27
- "@memberjunction/ai-engine-base": "5.42.0",
28
- "@memberjunction/ai-prompts": "5.42.0",
29
- "@memberjunction/ai-provider-bundle": "5.42.0",
30
- "@memberjunction/ai-vector-dupe": "5.42.0",
31
- "@memberjunction/ai-vectordb": "5.42.0",
32
- "@memberjunction/ai-vectors-memory": "5.42.0",
33
- "@memberjunction/aiengine": "5.42.0",
34
- "@memberjunction/core": "5.42.0",
35
- "@memberjunction/core-entities": "5.42.0",
36
- "@memberjunction/doc-utils": "5.42.0",
37
- "@memberjunction/generic-database-provider": "5.42.0",
38
- "@memberjunction/global": "5.42.0",
39
- "@memberjunction/integration-engine": "5.42.0",
40
- "@memberjunction/integration-pk-classifier": "5.42.0",
41
- "@memberjunction/skip-types": "5.42.0",
42
- "@memberjunction/sql-converter": "5.42.0",
43
- "@memberjunction/sql-dialect": "5.42.0",
44
- "@memberjunction/sql-parser": "5.42.0",
45
- "@memberjunction/sqlserver-dataprovider": "5.42.0",
46
- "@memberjunction/tag-engine": "5.42.0",
24
+ "@memberjunction/actions-base": "5.44.0",
25
+ "@memberjunction/ai": "5.44.0",
26
+ "@memberjunction/ai-core-plus": "5.44.0",
27
+ "@memberjunction/ai-engine-base": "5.44.0",
28
+ "@memberjunction/ai-prompts": "5.44.0",
29
+ "@memberjunction/ai-provider-bundle": "5.44.0",
30
+ "@memberjunction/ai-vector-dupe": "5.44.0",
31
+ "@memberjunction/ai-vectordb": "5.44.0",
32
+ "@memberjunction/ai-vectors-memory": "5.44.0",
33
+ "@memberjunction/aiengine": "5.44.0",
34
+ "@memberjunction/core": "5.44.0",
35
+ "@memberjunction/core-entities": "5.44.0",
36
+ "@memberjunction/doc-utils": "5.44.0",
37
+ "@memberjunction/generic-database-provider": "5.44.0",
38
+ "@memberjunction/global": "5.44.0",
39
+ "@memberjunction/integration-engine": "5.44.0",
40
+ "@memberjunction/integration-pk-classifier": "5.44.0",
41
+ "@memberjunction/skip-types": "5.44.0",
42
+ "@memberjunction/sql-converter": "5.44.0",
43
+ "@memberjunction/sql-dialect": "5.44.0",
44
+ "@memberjunction/sql-parser": "5.44.0",
45
+ "@memberjunction/sqlserver-dataprovider": "5.44.0",
46
+ "@memberjunction/tag-engine": "5.44.0",
47
47
  "nunjucks": "3.2.4",
48
48
  "rxjs": "~7.8.1",
49
49
  "zod": "~3.24.4"