@memberjunction/server 5.29.0 → 5.30.1

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.
@@ -18,7 +18,7 @@ import { mj_core_schema } from '../config.js';
18
18
 
19
19
 
20
20
 
21
- import { MJAccessControlRuleEntity, MJActionAuthorizationEntity, MJActionCategoryEntity, MJActionContextTypeEntity, MJActionContextEntity, MJActionExecutionLogEntity, MJActionFilterEntity, MJActionLibraryEntity, MJActionParamEntity, MJActionResultCodeEntity, MJActionEntity, MJAIActionEntity, MJAIAgentActionEntity, MJAIAgentArtifactTypeEntity, MJAIAgentCategoryEntity, MJAIAgentClientToolEntity, MJAIAgentConfigurationEntity, MJAIAgentDataSourceEntity, MJAIAgentExampleEntity, MJAIAgentLearningCycleEntity, MJAIAgentModalityEntity, MJAIAgentModelEntity, MJAIAgentNoteTypeEntity, MJAIAgentNoteEntity, MJAIAgentPermissionEntity, MJAIAgentPromptEntity, MJAIAgentRelationshipEntity, MJAIAgentRequestTypeEntity, MJAIAgentRequestEntity, MJAIAgentRunMediaEntity, MJAIAgentRunStepEntity, MJAIAgentRunEntity, MJAIAgentStepPathEntity, MJAIAgentStepEntity, MJAIAgentTypeEntity, MJAIAgentEntity, MJAIArchitectureEntity, MJAIClientToolDefinitionEntity, MJAIConfigurationParamEntity, MJAIConfigurationEntity, MJAICredentialBindingEntity, MJAIModalityEntity, MJAIModelActionEntity, MJAIModelArchitectureEntity, MJAIModelCostEntity, MJAIModelModalityEntity, MJAIModelPriceTypeEntity, MJAIModelPriceUnitTypeEntity, MJAIModelTypeEntity, MJAIModelVendorEntity, MJAIModelEntity, MJAIPromptCategoryEntity, MJAIPromptModelEntity, MJAIPromptRunMediaEntity, MJAIPromptRunEntity, MJAIPromptTypeEntity, MJAIPromptEntity, MJAIResultCacheEntity, MJAIVendorTypeDefinitionEntity, MJAIVendorTypeEntity, MJAIVendorEntity, MJAPIApplicationScopeEntity, MJAPIApplicationEntity, MJAPIKeyApplicationEntity, MJAPIKeyScopeEntity, MJAPIKeyUsageLogEntity, MJAPIKeyEntity, MJAPIScopeEntity, MJApplicationEntityEntity, MJApplicationRoleEntity, MJApplicationSettingEntity, MJApplicationEntity, MJArchiveConfigurationEntityEntity, MJArchiveConfigurationEntity, MJArchiveRunDetailEntity, MJArchiveRunEntity, MJArtifactPermissionEntity, MJArtifactTypeEntity, MJArtifactUseEntity, MJArtifactVersionAttributeEntity, MJArtifactVersionEntity, MJArtifactEntity, MJAuditLogTypeEntity, MJAuditLogEntity, MJAuthorizationRoleEntity, MJAuthorizationEntity, MJCollectionArtifactEntity, MJCollectionPermissionEntity, MJCollectionEntity, MJCommunicationBaseMessageTypeEntity, MJCommunicationLogEntity, MJCommunicationProviderMessageTypeEntity, MJCommunicationProviderEntity, MJCommunicationRunEntity, MJCompanyEntity, MJCompanyIntegrationEntityMapEntity, MJCompanyIntegrationFieldMapEntity, MJCompanyIntegrationRecordMapEntity, MJCompanyIntegrationRunAPILogEntity, MJCompanyIntegrationRunDetailEntity, MJCompanyIntegrationRunEntity, MJCompanyIntegrationSyncWatermarkEntity, MJCompanyIntegrationEntity, MJComponentDependencyEntity, MJComponentLibraryEntity, MJComponentLibraryLinkEntity, MJComponentRegistryEntity, MJComponentEntity, MJContentFileTypeEntity, MJContentItemAttributeEntity, MJContentItemDuplicateEntity, MJContentItemTagEntity, MJContentItemEntity, MJContentProcessRunDetailEntity, MJContentProcessRunPromptRunEntity, MJContentProcessRunEntity, MJContentSourceParamEntity, MJContentSourceTypeParamEntity, MJContentSourceTypeEntity, MJContentSourceEntity, MJContentTypeAttributeEntity, MJContentTypeEntity, MJConversationArtifactPermissionEntity, MJConversationArtifactVersionEntity, MJConversationArtifactEntity, MJConversationDetailArtifactEntity, MJConversationDetailAttachmentEntity, MJConversationDetailRatingEntity, MJConversationDetailEntity, MJConversationEntity, MJCountryEntity, MJCredentialCategoryEntity, MJCredentialTypeEntity, MJCredentialEntity, MJDashboardCategoryEntity, MJDashboardCategoryLinkEntity, MJDashboardCategoryPermissionEntity, MJDashboardPartTypeEntity, MJDashboardPermissionEntity, MJDashboardUserPreferenceEntity, MJDashboardUserStateEntity, MJDashboardEntity, MJDataContextItemEntity, MJDataContextEntity, MJDatasetItemEntity, MJDatasetEntity, MJDuplicateRunDetailMatchEntity, MJDuplicateRunDetailEntity, MJDuplicateRunEntity, MJEmployeeCompanyIntegrationEntity, MJEmployeeRoleEntity, MJEmployeeSkillEntity, MJEmployeeEntity, MJEncryptionAlgorithmEntity, MJEncryptionKeySourceEntity, MJEncryptionKeyEntity, MJEntityEntity, MJEntityActionFilterEntity, MJEntityActionInvocationTypeEntity, MJEntityActionInvocationEntity, MJEntityActionParamEntity, MJEntityActionEntity, MJEntityAIActionEntity, MJEntityCommunicationFieldEntity, MJEntityCommunicationMessageTypeEntity, MJEntityDocumentRunEntity, MJEntityDocumentSettingEntity, MJEntityDocumentTypeEntity, MJEntityDocumentEntity, MJEntityFieldValueEntity, MJEntityFieldEntity, MJEntityOrganicKeyRelatedEntityEntity, MJEntityOrganicKeyEntity, MJEntityPermissionEntity, MJEntityRecordDocumentEntity, MJEntityRelationshipDisplayComponentEntity, MJEntityRelationshipEntity, MJEntitySettingEntity, MJEnvironmentEntity, MJErrorLogEntity, MJExplorerNavigationItemEntity, MJFileCategoryEntity, MJFileEntityRecordLinkEntity, MJFileStorageAccountPermissionEntity, MJFileStorageAccountEntity, MJFileStorageProviderEntity, MJFileEntity, MJGeneratedCodeCategoryEntity, MJGeneratedCodeEntity, MJInstanceConfigurationEntity, MJIntegrationObjectFieldEntity, MJIntegrationObjectEntity, MJIntegrationSourceTypeEntity, MJIntegrationURLFormatEntity, MJIntegrationEntity, MJKnowledgeHubSavedSearchEntity, MJLibraryEntity, MJLibraryItemEntity, MJListCategoryEntity, MJListDetailEntity, MJListInvitationEntity, MJListShareEntity, MJListEntity, MJMCPServerConnectionPermissionEntity, MJMCPServerConnectionToolEntity, MJMCPServerConnectionEntity, MJMCPServerToolEntity, MJMCPServerEntity, MJMCPToolExecutionLogEntity, MJMCPToolFavoriteEntity, MJOAuthAuthServerMetadataCacheEntity, MJOAuthAuthorizationStateEntity, MJOAuthClientRegistrationEntity, MJOAuthTokenEntity, MJOpenAppDependencyEntity, MJOpenAppInstallHistoryEntity, MJOpenAppEntity, MJOutputDeliveryTypeEntity, MJOutputFormatTypeEntity, MJOutputTriggerTypeEntity, MJProjectEntity, MJPublicLinkEntity, MJQueryEntity, MJQueryCategoryEntity, MJQueryDependencyEntity, MJQueryEntityEntity, MJQueryFieldEntity, MJQueryParameterEntity, MJQueryPermissionEntity, MJQuerySQLEntity, MJQueueTaskEntity, MJQueueTypeEntity, MJQueueEntity, MJRecommendationItemEntity, MJRecommendationProviderEntity, MJRecommendationRunEntity, MJRecommendationEntity, MJRecordChangeReplayRunEntity, MJRecordChangeEntity, MJRecordGeoCodeEntity, MJRecordLinkEntity, MJRecordMergeDeletionLogEntity, MJRecordMergeLogEntity, MJReportCategoryEntity, MJReportSnapshotEntity, MJReportUserStateEntity, MJReportVersionEntity, MJReportEntity, MJResourceLinkEntity, MJResourcePermissionEntity, MJResourceTypeEntity, MJRoleEntity, MJRowLevelSecurityFilterEntity, MJScheduledActionParamEntity, MJScheduledActionEntity, MJScheduledJobRunEntity, MJScheduledJobTypeEntity, MJScheduledJobEntity, MJSchemaInfoEntity, MJSearchProviderEntity, MJSkillEntity, MJSQLDialectEntity, MJStateProvinceEntity, MJTagAuditLogEntity, MJTagCoOccurrenceEntity, MJTaggedItemEntity, MJTagEntity, MJTaskDependencyEntity, MJTaskTypeEntity, MJTaskEntity, MJTemplateCategoryEntity, MJTemplateContentTypeEntity, MJTemplateContentEntity, MJTemplateParamEntity, MJTemplateEntity, MJTestRubricEntity, MJTestRunFeedbackEntity, MJTestRunOutputTypeEntity, MJTestRunOutputEntity, MJTestRunEntity, MJTestSuiteRunEntity, MJTestSuiteTestEntity, MJTestSuiteEntity, MJTestTypeEntity, MJTestEntity, MJUserApplicationEntityEntity, MJUserApplicationEntity, MJUserFavoriteEntity, MJUserNotificationPreferenceEntity, MJUserNotificationTypeEntity, MJUserNotificationEntity, MJUserRecordLogEntity, MJUserRoleEntity, MJUserSettingEntity, MJUserViewCategoryEntity, MJUserViewRunDetailEntity, MJUserViewRunEntity, MJUserViewEntity, MJUserEntity, MJVectorDatabaseEntity, MJVectorIndexEntity, MJVersionInstallationEntity, MJVersionLabelItemEntity, MJVersionLabelRestoreEntity, MJVersionLabelEntity, MJWorkflowEngineEntity, MJWorkflowRunEntity, MJWorkflowEntity, MJWorkspaceItemEntity, MJWorkspaceEntity } from '@memberjunction/core-entities';
21
+ import { MJAccessControlRuleEntity, MJActionAuthorizationEntity, MJActionCategoryEntity, MJActionContextTypeEntity, MJActionContextEntity, MJActionExecutionLogEntity, MJActionFilterEntity, MJActionLibraryEntity, MJActionParamEntity, MJActionResultCodeEntity, MJActionEntity, MJAIActionEntity, MJAIAgentActionEntity, MJAIAgentArtifactTypeEntity, MJAIAgentCategoryEntity, MJAIAgentClientToolEntity, MJAIAgentConfigurationEntity, MJAIAgentDataSourceEntity, MJAIAgentExampleEntity, MJAIAgentLearningCycleEntity, MJAIAgentModalityEntity, MJAIAgentModelEntity, MJAIAgentNoteTypeEntity, MJAIAgentNoteEntity, MJAIAgentPermissionEntity, MJAIAgentPromptEntity, MJAIAgentRelationshipEntity, MJAIAgentRequestTypeEntity, MJAIAgentRequestEntity, MJAIAgentRunMediaEntity, MJAIAgentRunStepEntity, MJAIAgentRunEntity, MJAIAgentStepPathEntity, MJAIAgentStepEntity, MJAIAgentTypeEntity, MJAIAgentEntity, MJAIArchitectureEntity, MJAIClientToolDefinitionEntity, MJAIConfigurationParamEntity, MJAIConfigurationEntity, MJAICredentialBindingEntity, MJAIModalityEntity, MJAIModelActionEntity, MJAIModelArchitectureEntity, MJAIModelCostEntity, MJAIModelModalityEntity, MJAIModelPriceTypeEntity, MJAIModelPriceUnitTypeEntity, MJAIModelTypeEntity, MJAIModelVendorEntity, MJAIModelEntity, MJAIPromptCategoryEntity, MJAIPromptModelEntity, MJAIPromptRunMediaEntity, MJAIPromptRunEntity, MJAIPromptTypeEntity, MJAIPromptEntity, MJAIResultCacheEntity, MJAIVendorTypeDefinitionEntity, MJAIVendorTypeEntity, MJAIVendorEntity, MJAPIApplicationScopeEntity, MJAPIApplicationEntity, MJAPIKeyApplicationEntity, MJAPIKeyScopeEntity, MJAPIKeyUsageLogEntity, MJAPIKeyEntity, MJAPIScopeEntity, MJApplicationEntityEntity, MJApplicationRoleEntity, MJApplicationSettingEntity, MJApplicationEntity, MJArchiveConfigurationEntityEntity, MJArchiveConfigurationEntity, MJArchiveRunDetailEntity, MJArchiveRunEntity, MJArtifactPermissionEntity, MJArtifactTypeEntity, MJArtifactUseEntity, MJArtifactVersionAttributeEntity, MJArtifactVersionEntity, MJArtifactEntity, MJAuditLogTypeEntity, MJAuditLogEntity, MJAuthorizationRoleEntity, MJAuthorizationEntity, MJCollectionArtifactEntity, MJCollectionPermissionEntity, MJCollectionEntity, MJCommunicationBaseMessageTypeEntity, MJCommunicationLogEntity, MJCommunicationProviderMessageTypeEntity, MJCommunicationProviderEntity, MJCommunicationRunEntity, MJCompanyEntity, MJCompanyIntegrationEntityMapEntity, MJCompanyIntegrationFieldMapEntity, MJCompanyIntegrationRecordMapEntity, MJCompanyIntegrationRunAPILogEntity, MJCompanyIntegrationRunDetailEntity, MJCompanyIntegrationRunEntity, MJCompanyIntegrationSyncWatermarkEntity, MJCompanyIntegrationEntity, MJComponentDependencyEntity, MJComponentLibraryEntity, MJComponentLibraryLinkEntity, MJComponentRegistryEntity, MJComponentEntity, MJContentFileTypeEntity, MJContentItemAttributeEntity, MJContentItemDuplicateEntity, MJContentItemTagEntity, MJContentItemEntity, MJContentProcessRunDetailEntity, MJContentProcessRunPromptRunEntity, MJContentProcessRunEntity, MJContentSourceParamEntity, MJContentSourceTypeParamEntity, MJContentSourceTypeEntity, MJContentSourceEntity, MJContentTypeAttributeEntity, MJContentTypeEntity, MJConversationArtifactPermissionEntity, MJConversationArtifactVersionEntity, MJConversationArtifactEntity, MJConversationDetailArtifactEntity, MJConversationDetailAttachmentEntity, MJConversationDetailRatingEntity, MJConversationDetailEntity, MJConversationEntity, MJCountryEntity, MJCredentialCategoryEntity, MJCredentialTypeEntity, MJCredentialEntity, MJDashboardCategoryEntity, MJDashboardCategoryLinkEntity, MJDashboardCategoryPermissionEntity, MJDashboardPartTypeEntity, MJDashboardPermissionEntity, MJDashboardUserPreferenceEntity, MJDashboardUserStateEntity, MJDashboardEntity, MJDataContextItemEntity, MJDataContextEntity, MJDatasetItemEntity, MJDatasetEntity, MJDuplicateRunDetailMatchEntity, MJDuplicateRunDetailEntity, MJDuplicateRunEntity, MJEmployeeCompanyIntegrationEntity, MJEmployeeRoleEntity, MJEmployeeSkillEntity, MJEmployeeEntity, MJEncryptionAlgorithmEntity, MJEncryptionKeySourceEntity, MJEncryptionKeyEntity, MJEntityEntity, MJEntityActionFilterEntity, MJEntityActionInvocationTypeEntity, MJEntityActionInvocationEntity, MJEntityActionParamEntity, MJEntityActionEntity, MJEntityAIActionEntity, MJEntityCommunicationFieldEntity, MJEntityCommunicationMessageTypeEntity, MJEntityDocumentRunEntity, MJEntityDocumentSettingEntity, MJEntityDocumentTypeEntity, MJEntityDocumentEntity, MJEntityFieldValueEntity, MJEntityFieldEntity, MJEntityOrganicKeyRelatedEntityEntity, MJEntityOrganicKeyEntity, MJEntityPermissionEntity, MJEntityRecordDocumentEntity, MJEntityRelationshipDisplayComponentEntity, MJEntityRelationshipEntity, MJEntitySettingEntity, MJEnvironmentEntity, MJErrorLogEntity, MJExplorerNavigationItemEntity, MJFileCategoryEntity, MJFileEntityRecordLinkEntity, MJFileStorageAccountPermissionEntity, MJFileStorageAccountEntity, MJFileStorageProviderEntity, MJFileEntity, MJGeneratedCodeCategoryEntity, MJGeneratedCodeEntity, MJInstanceConfigurationEntity, MJIntegrationObjectFieldEntity, MJIntegrationObjectEntity, MJIntegrationSourceTypeEntity, MJIntegrationURLFormatEntity, MJIntegrationEntity, MJKnowledgeHubSavedSearchEntity, MJLibraryEntity, MJLibraryItemEntity, MJListCategoryEntity, MJListDetailEntity, MJListInvitationEntity, MJListShareEntity, MJListEntity, MJMCPServerConnectionPermissionEntity, MJMCPServerConnectionToolEntity, MJMCPServerConnectionEntity, MJMCPServerToolEntity, MJMCPServerEntity, MJMCPToolExecutionLogEntity, MJMCPToolFavoriteEntity, MJOAuthAuthServerMetadataCacheEntity, MJOAuthAuthorizationStateEntity, MJOAuthClientRegistrationEntity, MJOAuthTokenEntity, MJOpenAppDependencyEntity, MJOpenAppInstallHistoryEntity, MJOpenAppEntity, MJOutputDeliveryTypeEntity, MJOutputFormatTypeEntity, MJOutputTriggerTypeEntity, MJPermissionDomainEntity, MJProjectEntity, MJPublicLinkEntity, MJQueryEntity, MJQueryCategoryEntity, MJQueryDependencyEntity, MJQueryEntityEntity, MJQueryFieldEntity, MJQueryParameterEntity, MJQueryPermissionEntity, MJQuerySQLEntity, MJQueueTaskEntity, MJQueueTypeEntity, MJQueueEntity, MJRecommendationItemEntity, MJRecommendationProviderEntity, MJRecommendationRunEntity, MJRecommendationEntity, MJRecordChangeReplayRunEntity, MJRecordChangeEntity, MJRecordGeoCodeEntity, MJRecordLinkEntity, MJRecordMergeDeletionLogEntity, MJRecordMergeLogEntity, MJReportCategoryEntity, MJReportSnapshotEntity, MJReportUserStateEntity, MJReportVersionEntity, MJReportEntity, MJResourceLinkEntity, MJResourcePermissionEntity, MJResourceTypeEntity, MJRoleEntity, MJRowLevelSecurityFilterEntity, MJScheduledActionParamEntity, MJScheduledActionEntity, MJScheduledJobRunEntity, MJScheduledJobTypeEntity, MJScheduledJobEntity, MJSchemaInfoEntity, MJSearchProviderEntity, MJSkillEntity, MJSQLDialectEntity, MJStateProvinceEntity, MJTagAuditLogEntity, MJTagCoOccurrenceEntity, MJTaggedItemEntity, MJTagEntity, MJTaskDependencyEntity, MJTaskTypeEntity, MJTaskEntity, MJTemplateCategoryEntity, MJTemplateContentTypeEntity, MJTemplateContentEntity, MJTemplateParamEntity, MJTemplateEntity, MJTestRubricEntity, MJTestRunFeedbackEntity, MJTestRunOutputTypeEntity, MJTestRunOutputEntity, MJTestRunEntity, MJTestSuiteRunEntity, MJTestSuiteTestEntity, MJTestSuiteEntity, MJTestTypeEntity, MJTestEntity, MJUserApplicationEntityEntity, MJUserApplicationEntity, MJUserFavoriteEntity, MJUserNotificationPreferenceEntity, MJUserNotificationTypeEntity, MJUserNotificationEntity, MJUserRecordLogEntity, MJUserRoleEntity, MJUserSettingEntity, MJUserViewCategoryEntity, MJUserViewRunDetailEntity, MJUserViewRunEntity, MJUserViewEntity, MJUserEntity, MJVectorDatabaseEntity, MJVectorIndexEntity, MJVersionInstallationEntity, MJVersionLabelItemEntity, MJVersionLabelRestoreEntity, MJVersionLabelEntity, MJWorkflowEngineEntity, MJWorkflowRunEntity, MJWorkflowEntity, MJWorkspaceItemEntity, MJWorkspaceEntity } from '@memberjunction/core-entities';
22
22
 
23
23
 
24
24
  //****************************************************************************
@@ -2051,6 +2051,16 @@ export class MJAction_ {
2051
2051
  @Field({nullable: true, description: `Optional JSON configuration for the action. For integration actions, contains routing info: integrationName, objectName, verb, and optional connectorConfig. Non-integration actions leave this NULL.`})
2052
2052
  Config?: string;
2053
2053
 
2054
+ @Field({nullable: true, description: `JSON blob holding configuration specific to Type='Runtime' actions: declarative permission scopes (allowedEntities, allowedActions, allowedAgents with id+name pairs), resource limits (maxMemoryMB, maxBridgeCalls), and sandbox options (additionalLibraries, debugMode). Evolvable — new keys can be introduced without schema changes. NULL for non-Runtime actions.`})
2055
+ RuntimeActionConfiguration?: string;
2056
+
2057
+ @Field(() => Int, {nullable: true, description: `Universal maximum execution time in milliseconds for a single action invocation. Enforced by ActionEngine across ALL action types (Custom, Generated, Runtime) via AbortSignal passed through RunActionParams. NULL means use the engine default.`})
2058
+ MaxExecutionTimeMS?: number;
2059
+
2060
+ @Field({nullable: true, description: `Optional reference to the AI Agent that authored this action — populated when an agent (e.g. ActionSmith) dynamically generates a Runtime action. NULL for human-authored Custom/Generated actions. Provides an audit trail linking agent-generated capabilities back to their creator.`})
2061
+ @MaxLength(36)
2062
+ CreatedByAgentID?: string;
2063
+
2054
2064
  @Field({nullable: true})
2055
2065
  @MaxLength(255)
2056
2066
  Category?: string;
@@ -2067,6 +2077,10 @@ export class MJAction_ {
2067
2077
  @MaxLength(255)
2068
2078
  DefaultCompactPrompt?: string;
2069
2079
 
2080
+ @Field({nullable: true})
2081
+ @MaxLength(255)
2082
+ CreatedByAgent?: string;
2083
+
2070
2084
  @Field({nullable: true})
2071
2085
  @MaxLength(36)
2072
2086
  RootParentID?: string;
@@ -2180,6 +2194,15 @@ export class CreateMJActionInput {
2180
2194
  @Field({ nullable: true })
2181
2195
  Config: string | null;
2182
2196
 
2197
+ @Field({ nullable: true })
2198
+ RuntimeActionConfiguration: string | null;
2199
+
2200
+ @Field(() => Int, { nullable: true })
2201
+ MaxExecutionTimeMS: number | null;
2202
+
2203
+ @Field({ nullable: true })
2204
+ CreatedByAgentID: string | null;
2205
+
2183
2206
  @Field(() => RestoreContextInput, { nullable: true })
2184
2207
  RestoreContext___?: RestoreContextInput;
2185
2208
  }
@@ -2256,6 +2279,15 @@ export class UpdateMJActionInput {
2256
2279
  @Field({ nullable: true })
2257
2280
  Config?: string | null;
2258
2281
 
2282
+ @Field({ nullable: true })
2283
+ RuntimeActionConfiguration?: string | null;
2284
+
2285
+ @Field(() => Int, { nullable: true })
2286
+ MaxExecutionTimeMS?: number | null;
2287
+
2288
+ @Field({ nullable: true })
2289
+ CreatedByAgentID?: string | null;
2290
+
2259
2291
  @Field(() => [KeyValuePairInput], { nullable: true })
2260
2292
  OldValues___?: KeyValuePairInput[];
2261
2293
 
@@ -5218,6 +5250,23 @@ export class MJAIAgentNote_ {
5218
5250
  @Field({nullable: true, description: `Optional expiration timestamp. Notes past this date are candidates for archival. NULL means no expiration.`})
5219
5251
  ExpiresAt?: Date;
5220
5252
 
5253
+ @Field({nullable: true, description: `Self-referential FK. Points to the consolidated note that replaced this one when revoked during consolidation or contradiction resolution.`})
5254
+ @MaxLength(36)
5255
+ ConsolidatedIntoNoteID?: string;
5256
+
5257
+ @Field(() => Int, {description: `Tracks re-summarization depth. 0=raw extraction, 1=first consolidation, etc. Capped at 3 to prevent semantic drift.`})
5258
+ ConsolidationCount: number;
5259
+
5260
+ @Field({nullable: true, description: `JSON array of source note IDs that were consolidated into this note. Enables provenance chain resolution and rollback.`})
5261
+ DerivedFromNoteIDs?: string;
5262
+
5263
+ @Field({description: `Protection level: Immutable (never consolidated/archived), Protected (no consolidation, extended 365-day retention), Standard (default), Ephemeral (aggressive consolidation, 2x decay rate).`})
5264
+ @MaxLength(20)
5265
+ ProtectionTier: string;
5266
+
5267
+ @Field(() => Float, {nullable: true, description: `Composite importance score (0-10) computed from 7 signals: recency, LLM-importance, relevance, uniqueness, correction boost, goal alignment, user mark. Replaces raw AccessCount for authority and retention decisions.`})
5268
+ ImportanceScore?: number;
5269
+
5221
5270
  @Field({nullable: true})
5222
5271
  @MaxLength(255)
5223
5272
  Agent?: string;
@@ -5253,6 +5302,16 @@ export class MJAIAgentNote_ {
5253
5302
  @MaxLength(255)
5254
5303
  PrimaryScopeEntity?: string;
5255
5304
 
5305
+ @Field({nullable: true})
5306
+ ConsolidatedIntoNote?: string;
5307
+
5308
+ @Field({nullable: true})
5309
+ @MaxLength(36)
5310
+ RootConsolidatedIntoNoteID?: string;
5311
+
5312
+ @Field(() => [MJAIAgentNote_])
5313
+ MJAIAgentNotes_ConsolidatedIntoNoteIDArray: MJAIAgentNote_[]; // Link to MJAIAgentNotes
5314
+
5256
5315
  }
5257
5316
 
5258
5317
  //****************************************************************************
@@ -5323,6 +5382,21 @@ export class CreateMJAIAgentNoteInput {
5323
5382
  @Field({ nullable: true })
5324
5383
  ExpiresAt: Date | null;
5325
5384
 
5385
+ @Field({ nullable: true })
5386
+ ConsolidatedIntoNoteID: string | null;
5387
+
5388
+ @Field(() => Int, { nullable: true })
5389
+ ConsolidationCount?: number;
5390
+
5391
+ @Field({ nullable: true })
5392
+ DerivedFromNoteIDs: string | null;
5393
+
5394
+ @Field({ nullable: true })
5395
+ ProtectionTier?: string;
5396
+
5397
+ @Field(() => Float, { nullable: true })
5398
+ ImportanceScore: number | null;
5399
+
5326
5400
  @Field(() => RestoreContextInput, { nullable: true })
5327
5401
  RestoreContext___?: RestoreContextInput;
5328
5402
  }
@@ -5396,6 +5470,21 @@ export class UpdateMJAIAgentNoteInput {
5396
5470
  @Field({ nullable: true })
5397
5471
  ExpiresAt?: Date | null;
5398
5472
 
5473
+ @Field({ nullable: true })
5474
+ ConsolidatedIntoNoteID?: string | null;
5475
+
5476
+ @Field(() => Int, { nullable: true })
5477
+ ConsolidationCount?: number;
5478
+
5479
+ @Field({ nullable: true })
5480
+ DerivedFromNoteIDs?: string | null;
5481
+
5482
+ @Field({ nullable: true })
5483
+ ProtectionTier?: string;
5484
+
5485
+ @Field(() => Float, { nullable: true })
5486
+ ImportanceScore?: number | null;
5487
+
5399
5488
  @Field(() => [KeyValuePairInput], { nullable: true })
5400
5489
  OldValues___?: KeyValuePairInput[];
5401
5490
 
@@ -5460,6 +5549,16 @@ export class MJAIAgentNoteResolver extends ResolverBase {
5460
5549
  return result;
5461
5550
  }
5462
5551
 
5552
+ @FieldResolver(() => [MJAIAgentNote_])
5553
+ async MJAIAgentNotes_ConsolidatedIntoNoteIDArray(@Root() mjaiagentnote_: MJAIAgentNote_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
5554
+ this.CheckUserReadPermissions('MJ: AI Agent Notes', userPayload);
5555
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
5556
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwAIAgentNotes')} WHERE ${provider.QuoteIdentifier('ConsolidatedIntoNoteID')}='${mjaiagentnote_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: AI Agent Notes', userPayload, EntityPermissionType.Read, 'AND');
5557
+ const rows = await provider.ExecuteSQL(sSQL, undefined, undefined, this.GetUserFromPayload(userPayload));
5558
+ const result = await this.ArrayMapFieldNamesToCodeNames('MJ: AI Agent Notes', rows, this.GetUserFromPayload(userPayload));
5559
+ return result;
5560
+ }
5561
+
5463
5562
  @Mutation(() => MJAIAgentNote_)
5464
5563
  async CreateMJAIAgentNote(
5465
5564
  @Arg('input', () => CreateMJAIAgentNoteInput) input: CreateMJAIAgentNoteInput,
@@ -7490,6 +7589,10 @@ each time the agent processes a prompt step.`})
7490
7589
  @MaxLength(200)
7491
7590
  ExternalReferenceID?: string;
7492
7591
 
7592
+ @Field({nullable: true, description: `Optional company scope for multi-tenant memory. When populated, Memory Manager uses this to scope extracted notes to the company. Flows from ExecuteAgentParams.companyId at agent invocation time.`})
7593
+ @MaxLength(36)
7594
+ CompanyID?: string;
7595
+
7493
7596
  @Field({nullable: true})
7494
7597
  @MaxLength(255)
7495
7598
  Agent?: string;
@@ -7708,6 +7811,9 @@ export class CreateMJAIAgentRunInput {
7708
7811
  @Field({ nullable: true })
7709
7812
  ExternalReferenceID: string | null;
7710
7813
 
7814
+ @Field({ nullable: true })
7815
+ CompanyID: string | null;
7816
+
7711
7817
  @Field(() => RestoreContextInput, { nullable: true })
7712
7818
  RestoreContext___?: RestoreContextInput;
7713
7819
  }
@@ -7847,6 +7953,9 @@ export class UpdateMJAIAgentRunInput {
7847
7953
  @Field({ nullable: true })
7848
7954
  ExternalReferenceID?: string | null;
7849
7955
 
7956
+ @Field({ nullable: true })
7957
+ CompanyID?: string | null;
7958
+
7850
7959
  @Field(() => [KeyValuePairInput], { nullable: true })
7851
7960
  OldValues___?: KeyValuePairInput[];
7852
7961
 
@@ -9189,6 +9298,9 @@ if this limit is exceeded.`})
9189
9298
  @Field(() => [MJAIAgent_])
9190
9299
  MJAIAgents_ParentIDArray: MJAIAgent_[]; // Link to MJAIAgents
9191
9300
 
9301
+ @Field(() => [MJAction_])
9302
+ MJActions_CreatedByAgentIDArray: MJAction_[]; // Link to MJActions
9303
+
9192
9304
  }
9193
9305
 
9194
9306
  //****************************************************************************
@@ -9872,6 +9984,16 @@ export class MJAIAgentResolver extends ResolverBase {
9872
9984
  return result;
9873
9985
  }
9874
9986
 
9987
+ @FieldResolver(() => [MJAction_])
9988
+ async MJActions_CreatedByAgentIDArray(@Root() mjaiagent_: MJAIAgent_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
9989
+ this.CheckUserReadPermissions('MJ: Actions', userPayload);
9990
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
9991
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwActions')} WHERE ${provider.QuoteIdentifier('CreatedByAgentID')}='${mjaiagent_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Actions', userPayload, EntityPermissionType.Read, 'AND');
9992
+ const rows = await provider.ExecuteSQL(sSQL, undefined, undefined, this.GetUserFromPayload(userPayload));
9993
+ const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Actions', rows, this.GetUserFromPayload(userPayload));
9994
+ return result;
9995
+ }
9996
+
9875
9997
  @Mutation(() => MJAIAgent_)
9876
9998
  async CreateMJAIAgent(
9877
9999
  @Arg('input', () => CreateMJAIAgentInput) input: CreateMJAIAgentInput,
@@ -20045,6 +20167,16 @@ export class MJArchiveConfigurationEntityResolver extends ResolverBase {
20045
20167
  return result;
20046
20168
  }
20047
20169
 
20170
+ @Query(() => [MJArchiveConfigurationEntity_])
20171
+ async AllMJArchiveConfigurationEntities(@Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
20172
+ this.CheckUserReadPermissions('MJ: Archive Configuration Entities', userPayload);
20173
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
20174
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwArchiveConfigurationEntities')}` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Archive Configuration Entities', userPayload, EntityPermissionType.Read, ' WHERE');
20175
+ const rows = await provider.ExecuteSQL(sSQL, undefined, undefined, this.GetUserFromPayload(userPayload));
20176
+ const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Archive Configuration Entities', rows, this.GetUserFromPayload(userPayload));
20177
+ return result;
20178
+ }
20179
+
20048
20180
  @Mutation(() => MJArchiveConfigurationEntity_)
20049
20181
  async CreateMJArchiveConfigurationEntity(
20050
20182
  @Arg('input', () => CreateMJArchiveConfigurationEntityInput) input: CreateMJArchiveConfigurationEntityInput,
@@ -20305,6 +20437,16 @@ export class MJArchiveConfigurationResolver extends ResolverBase {
20305
20437
  return result;
20306
20438
  }
20307
20439
 
20440
+ @Query(() => [MJArchiveConfiguration_])
20441
+ async AllMJArchiveConfigurations(@Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
20442
+ this.CheckUserReadPermissions('MJ: Archive Configurations', userPayload);
20443
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
20444
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwArchiveConfigurations')}` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Archive Configurations', userPayload, EntityPermissionType.Read, ' WHERE');
20445
+ const rows = await provider.ExecuteSQL(sSQL, undefined, undefined, this.GetUserFromPayload(userPayload));
20446
+ const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Archive Configurations', rows, this.GetUserFromPayload(userPayload));
20447
+ return result;
20448
+ }
20449
+
20308
20450
  @FieldResolver(() => [MJArchiveConfigurationEntity_])
20309
20451
  async MJArchiveConfigurationEntities_ArchiveConfigurationIDArray(@Root() mjarchiveconfiguration_: MJArchiveConfiguration_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
20310
20452
  this.CheckUserReadPermissions('MJ: Archive Configuration Entities', userPayload);
@@ -20404,6 +20546,9 @@ export class MJArchiveRunDetail_ {
20404
20546
  @Field()
20405
20547
  _mj__UpdatedAt: Date;
20406
20548
 
20549
+ @Field()
20550
+ ArchiveRun: Date;
20551
+
20407
20552
  @Field()
20408
20553
  @MaxLength(255)
20409
20554
  Entity: string;
@@ -20555,6 +20700,16 @@ export class MJArchiveRunDetailResolver extends ResolverBase {
20555
20700
  return result;
20556
20701
  }
20557
20702
 
20703
+ @Query(() => [MJArchiveRunDetail_])
20704
+ async AllMJArchiveRunDetails(@Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
20705
+ this.CheckUserReadPermissions('MJ: Archive Run Details', userPayload);
20706
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
20707
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwArchiveRunDetails')}` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Archive Run Details', userPayload, EntityPermissionType.Read, ' WHERE');
20708
+ const rows = await provider.ExecuteSQL(sSQL, undefined, undefined, this.GetUserFromPayload(userPayload));
20709
+ const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Archive Run Details', rows, this.GetUserFromPayload(userPayload));
20710
+ return result;
20711
+ }
20712
+
20558
20713
  @Mutation(() => MJArchiveRunDetail_)
20559
20714
  async CreateMJArchiveRunDetail(
20560
20715
  @Arg('input', () => CreateMJArchiveRunDetailInput) input: CreateMJArchiveRunDetailInput,
@@ -20799,6 +20954,16 @@ export class MJArchiveRunResolver extends ResolverBase {
20799
20954
  return result;
20800
20955
  }
20801
20956
 
20957
+ @Query(() => [MJArchiveRun_])
20958
+ async AllMJArchiveRuns(@Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
20959
+ this.CheckUserReadPermissions('MJ: Archive Runs', userPayload);
20960
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
20961
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwArchiveRuns')}` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Archive Runs', userPayload, EntityPermissionType.Read, ' WHERE');
20962
+ const rows = await provider.ExecuteSQL(sSQL, undefined, undefined, this.GetUserFromPayload(userPayload));
20963
+ const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Archive Runs', rows, this.GetUserFromPayload(userPayload));
20964
+ return result;
20965
+ }
20966
+
20802
20967
  @FieldResolver(() => [MJArchiveRunDetail_])
20803
20968
  async MJArchiveRunDetails_ArchiveRunIDArray(@Root() mjarchiverun_: MJArchiveRun_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
20804
20969
  this.CheckUserReadPermissions('MJ: Archive Run Details', userPayload);
@@ -21095,6 +21260,10 @@ export class MJArtifactType_ {
21095
21260
  @MaxLength(10)
21096
21261
  ContentCategory: string;
21097
21262
 
21263
+ @Field({nullable: true, description: `Class name for the BaseArtifactToolLibrary subclass that provides type-specific artifact exploration tools for agents. Resolved via ClassFactory. When NULL, ArtifactToolManager uses name-based fallback resolution.`})
21264
+ @MaxLength(100)
21265
+ ToolLibraryClass?: string;
21266
+
21098
21267
  @Field({nullable: true})
21099
21268
  @MaxLength(100)
21100
21269
  Parent?: string;
@@ -21155,6 +21324,9 @@ export class CreateMJArtifactTypeInput {
21155
21324
  @Field({ nullable: true })
21156
21325
  ContentCategory?: string;
21157
21326
 
21327
+ @Field({ nullable: true })
21328
+ ToolLibraryClass: string | null;
21329
+
21158
21330
  @Field(() => RestoreContextInput, { nullable: true })
21159
21331
  RestoreContext___?: RestoreContextInput;
21160
21332
  }
@@ -21195,6 +21367,9 @@ export class UpdateMJArtifactTypeInput {
21195
21367
  @Field({ nullable: true })
21196
21368
  ContentCategory?: string;
21197
21369
 
21370
+ @Field({ nullable: true })
21371
+ ToolLibraryClass?: string | null;
21372
+
21198
21373
  @Field(() => [KeyValuePairInput], { nullable: true })
21199
21374
  OldValues___?: KeyValuePairInput[];
21200
21375
 
@@ -44687,6 +44862,10 @@ export class MJEntityPermission_ {
44687
44862
  @Field()
44688
44863
  _mj__UpdatedAt: Date;
44689
44864
 
44865
+ @Field({description: `Allow or Deny. Deny rows override any Allow grants on the same (EntityID, RoleID, action) at evaluation time, letting administrators exclude a role from an action another role grants.`})
44866
+ @MaxLength(10)
44867
+ Type: string;
44868
+
44690
44869
  @Field()
44691
44870
  @MaxLength(255)
44692
44871
  Entity: string;
@@ -44755,6 +44934,9 @@ export class CreateMJEntityPermissionInput {
44755
44934
  @Field({ nullable: true })
44756
44935
  DeleteRLSFilterID: string | null;
44757
44936
 
44937
+ @Field({ nullable: true })
44938
+ Type?: string;
44939
+
44758
44940
  @Field(() => RestoreContextInput, { nullable: true })
44759
44941
  RestoreContext___?: RestoreContextInput;
44760
44942
  }
@@ -44798,6 +44980,9 @@ export class UpdateMJEntityPermissionInput {
44798
44980
  @Field({ nullable: true })
44799
44981
  DeleteRLSFilterID?: string | null;
44800
44982
 
44983
+ @Field({ nullable: true })
44984
+ Type?: string;
44985
+
44801
44986
  @Field(() => [KeyValuePairInput], { nullable: true })
44802
44987
  OldValues___?: KeyValuePairInput[];
44803
44988
 
@@ -53220,17 +53405,17 @@ export class MJMCPToolExecutionLogResolver extends ResolverBase {
53220
53405
  //****************************************************************************
53221
53406
  // ENTITY CLASS for MJ: MCP Tool Favorites
53222
53407
  //****************************************************************************
53223
- @ObjectType({ description: `Per-user favorite marker for an MCP Server Tool. Lets users star tools for quick access in the MCP Dashboard and Test dialog.` })
53408
+ @ObjectType({ description: `Per-user favorite marker for an MCP Server Tool. Each row indicates the user has starred the referenced tool for quick access in the MCP Dashboard Tools tab and in the Test Tool dialog picker. Combined with UserID forms a unique pair so a user cannot favorite the same tool twice.` })
53224
53409
  export class MJMCPToolFavorite_ {
53225
53410
  @Field()
53226
53411
  @MaxLength(36)
53227
53412
  ID: string;
53228
53413
 
53229
- @Field()
53414
+ @Field({description: `The user who starred this tool. Favorites are per-user; multiple users can favorite the same tool independently. References the MJ User table.`})
53230
53415
  @MaxLength(36)
53231
53416
  UserID: string;
53232
53417
 
53233
- @Field()
53418
+ @Field({description: `The MCP Server Tool that has been favorited. Combined with UserID this forms a unique constraint so a user cannot favorite the same tool twice.`})
53234
53419
  @MaxLength(36)
53235
53420
  MCPServerToolID: string;
53236
53421
 
@@ -53263,6 +53448,9 @@ export class CreateMJMCPToolFavoriteInput {
53263
53448
 
53264
53449
  @Field({ nullable: true })
53265
53450
  MCPServerToolID?: string;
53451
+
53452
+ @Field(() => RestoreContextInput, { nullable: true })
53453
+ RestoreContext___?: RestoreContextInput;
53266
53454
  }
53267
53455
 
53268
53456
 
@@ -53282,6 +53470,9 @@ export class UpdateMJMCPToolFavoriteInput {
53282
53470
 
53283
53471
  @Field(() => [KeyValuePairInput], { nullable: true })
53284
53472
  OldValues___?: KeyValuePairInput[];
53473
+
53474
+ @Field(() => RestoreContextInput, { nullable: true })
53475
+ RestoreContext___?: RestoreContextInput;
53285
53476
  }
53286
53477
 
53287
53478
  //****************************************************************************
@@ -55714,6 +55905,241 @@ export class MJOutputTriggerTypeResolver extends ResolverBase {
55714
55905
 
55715
55906
  }
55716
55907
 
55908
+ //****************************************************************************
55909
+ // ENTITY CLASS for MJ: Permission Domains
55910
+ //****************************************************************************
55911
+ @ObjectType({ description: `Catalog of registered permission subsystems. Each row describes one permission provider; the PermissionEngine uses ProviderClassName as the ClassFactory key to instantiate providers at startup. Enables unified permission queries across all subsystems.` })
55912
+ export class MJPermissionDomain_ {
55913
+ @Field()
55914
+ @MaxLength(36)
55915
+ ID: string;
55916
+
55917
+ @Field({description: `Human-readable unique name for the permission domain (e.g., "Entity Permissions", "Dashboard Permissions"). Used in admin UI and as the domain identifier in PermissionEngine API calls.`})
55918
+ @MaxLength(200)
55919
+ Name: string;
55920
+
55921
+ @Field({nullable: true, description: `Detailed description of what this permission domain covers and how permissions are enforced.`})
55922
+ Description?: string;
55923
+
55924
+ @Field({description: `ClassFactory key used to instantiate this provider. Must match the key passed to @RegisterClass(PermissionProviderBase, 'ClassName'). Convention: prefix with MJ for built-in providers (e.g., MJEntityPermissionProvider).`})
55925
+ @MaxLength(500)
55926
+ ProviderClassName: string;
55927
+
55928
+ @Field({description: `Comma-delimited list of grantee types this provider supports. Valid tokens: User, Role, Everyone, Public. Example: "User,Role".`})
55929
+ @MaxLength(200)
55930
+ SupportedGranteeTypes: string;
55931
+
55932
+ @Field({description: `Comma-delimited list of permission actions this provider can evaluate. Valid tokens: Read, Create, Update, Delete, Share, Execute, Admin. Example: "Read,Create,Update,Delete".`})
55933
+ @MaxLength(500)
55934
+ SupportedActions: string;
55935
+
55936
+ @Field(() => Boolean, {description: `When true, this provider supports explicit Deny records that override Allow grants at the same scope.`})
55937
+ SupportsDeny: boolean;
55938
+
55939
+ @Field(() => Boolean, {description: `When true, this provider supports time-bound permissions with an expiration timestamp.`})
55940
+ SupportsExpiration: boolean;
55941
+
55942
+ @Field(() => Boolean, {description: `When true, this provider resolves permissions hierarchically (e.g., category-level grants cascade to items within the category).`})
55943
+ SupportsHierarchyInheritance: boolean;
55944
+
55945
+ @Field(() => Boolean, {description: `When false, the PermissionEngine skips loading this provider at startup. Use to temporarily disable a provider without removing its record.`})
55946
+ IsActive: boolean;
55947
+
55948
+ @Field(() => Int, {description: `Sort order for displaying domains in the Sharing Center admin UI. Lower numbers appear first.`})
55949
+ DisplayOrder: number;
55950
+
55951
+ @Field({nullable: true, description: `Optional Font Awesome icon class for display in admin UI (e.g., "fa-solid fa-shield").`})
55952
+ @MaxLength(100)
55953
+ Icon?: string;
55954
+
55955
+ @Field()
55956
+ _mj__CreatedAt: Date;
55957
+
55958
+ @Field()
55959
+ _mj__UpdatedAt: Date;
55960
+
55961
+ }
55962
+
55963
+ //****************************************************************************
55964
+ // INPUT TYPE for MJ: Permission Domains
55965
+ //****************************************************************************
55966
+ @InputType()
55967
+ export class CreateMJPermissionDomainInput {
55968
+ @Field({ nullable: true })
55969
+ ID?: string;
55970
+
55971
+ @Field({ nullable: true })
55972
+ Name?: string;
55973
+
55974
+ @Field({ nullable: true })
55975
+ Description: string | null;
55976
+
55977
+ @Field({ nullable: true })
55978
+ ProviderClassName?: string;
55979
+
55980
+ @Field({ nullable: true })
55981
+ SupportedGranteeTypes?: string;
55982
+
55983
+ @Field({ nullable: true })
55984
+ SupportedActions?: string;
55985
+
55986
+ @Field(() => Boolean, { nullable: true })
55987
+ SupportsDeny?: boolean;
55988
+
55989
+ @Field(() => Boolean, { nullable: true })
55990
+ SupportsExpiration?: boolean;
55991
+
55992
+ @Field(() => Boolean, { nullable: true })
55993
+ SupportsHierarchyInheritance?: boolean;
55994
+
55995
+ @Field(() => Boolean, { nullable: true })
55996
+ IsActive?: boolean;
55997
+
55998
+ @Field(() => Int, { nullable: true })
55999
+ DisplayOrder?: number;
56000
+
56001
+ @Field({ nullable: true })
56002
+ Icon: string | null;
56003
+
56004
+ @Field(() => RestoreContextInput, { nullable: true })
56005
+ RestoreContext___?: RestoreContextInput;
56006
+ }
56007
+
56008
+
56009
+ //****************************************************************************
56010
+ // INPUT TYPE for MJ: Permission Domains
56011
+ //****************************************************************************
56012
+ @InputType()
56013
+ export class UpdateMJPermissionDomainInput {
56014
+ @Field()
56015
+ ID: string;
56016
+
56017
+ @Field({ nullable: true })
56018
+ Name?: string;
56019
+
56020
+ @Field({ nullable: true })
56021
+ Description?: string | null;
56022
+
56023
+ @Field({ nullable: true })
56024
+ ProviderClassName?: string;
56025
+
56026
+ @Field({ nullable: true })
56027
+ SupportedGranteeTypes?: string;
56028
+
56029
+ @Field({ nullable: true })
56030
+ SupportedActions?: string;
56031
+
56032
+ @Field(() => Boolean, { nullable: true })
56033
+ SupportsDeny?: boolean;
56034
+
56035
+ @Field(() => Boolean, { nullable: true })
56036
+ SupportsExpiration?: boolean;
56037
+
56038
+ @Field(() => Boolean, { nullable: true })
56039
+ SupportsHierarchyInheritance?: boolean;
56040
+
56041
+ @Field(() => Boolean, { nullable: true })
56042
+ IsActive?: boolean;
56043
+
56044
+ @Field(() => Int, { nullable: true })
56045
+ DisplayOrder?: number;
56046
+
56047
+ @Field({ nullable: true })
56048
+ Icon?: string | null;
56049
+
56050
+ @Field(() => [KeyValuePairInput], { nullable: true })
56051
+ OldValues___?: KeyValuePairInput[];
56052
+
56053
+ @Field(() => RestoreContextInput, { nullable: true })
56054
+ RestoreContext___?: RestoreContextInput;
56055
+ }
56056
+
56057
+ //****************************************************************************
56058
+ // RESOLVER for MJ: Permission Domains
56059
+ //****************************************************************************
56060
+ @ObjectType()
56061
+ export class RunMJPermissionDomainViewResult {
56062
+ @Field(() => [MJPermissionDomain_])
56063
+ Results: MJPermissionDomain_[];
56064
+
56065
+ @Field(() => String, {nullable: true})
56066
+ UserViewRunID?: string;
56067
+
56068
+ @Field(() => Int, {nullable: true})
56069
+ RowCount: number;
56070
+
56071
+ @Field(() => Int, {nullable: true})
56072
+ TotalRowCount: number;
56073
+
56074
+ @Field(() => Int, {nullable: true})
56075
+ ExecutionTime: number;
56076
+
56077
+ @Field({nullable: true})
56078
+ ErrorMessage?: string;
56079
+
56080
+ @Field(() => Boolean, {nullable: false})
56081
+ Success: boolean;
56082
+ }
56083
+
56084
+ @Resolver(MJPermissionDomain_)
56085
+ export class MJPermissionDomainResolver extends ResolverBase {
56086
+ @Query(() => RunMJPermissionDomainViewResult)
56087
+ async RunMJPermissionDomainViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
56088
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
56089
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
56090
+ }
56091
+
56092
+ @Query(() => RunMJPermissionDomainViewResult)
56093
+ async RunMJPermissionDomainViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
56094
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
56095
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
56096
+ }
56097
+
56098
+ @Query(() => RunMJPermissionDomainViewResult)
56099
+ async RunMJPermissionDomainDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
56100
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
56101
+ input.EntityName = 'MJ: Permission Domains';
56102
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
56103
+ }
56104
+ @Query(() => MJPermissionDomain_, { nullable: true })
56105
+ async MJPermissionDomain(@Arg('ID', () => String) ID: string, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJPermissionDomain_ | null> {
56106
+ this.CheckUserReadPermissions('MJ: Permission Domains', userPayload);
56107
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
56108
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwPermissionDomains')} WHERE ${provider.QuoteIdentifier('ID')}='${ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Permission Domains', userPayload, EntityPermissionType.Read, 'AND');
56109
+ const rows = await provider.ExecuteSQL(sSQL, undefined, undefined, this.GetUserFromPayload(userPayload));
56110
+ const result = await this.MapFieldNamesToCodeNames('MJ: Permission Domains', rows && rows.length > 0 ? rows[0] : null, this.GetUserFromPayload(userPayload));
56111
+ return result;
56112
+ }
56113
+
56114
+ @Mutation(() => MJPermissionDomain_)
56115
+ async CreateMJPermissionDomain(
56116
+ @Arg('input', () => CreateMJPermissionDomainInput) input: CreateMJPermissionDomainInput,
56117
+ @Ctx() { providers, userPayload }: AppContext,
56118
+ @PubSub() pubSub: PubSubEngine
56119
+ ) {
56120
+ const provider = GetReadWriteProvider(providers);
56121
+ return this.CreateRecord('MJ: Permission Domains', input, provider, userPayload, pubSub)
56122
+ }
56123
+
56124
+ @Mutation(() => MJPermissionDomain_)
56125
+ async UpdateMJPermissionDomain(
56126
+ @Arg('input', () => UpdateMJPermissionDomainInput) input: UpdateMJPermissionDomainInput,
56127
+ @Ctx() { providers, userPayload }: AppContext,
56128
+ @PubSub() pubSub: PubSubEngine
56129
+ ) {
56130
+ const provider = GetReadWriteProvider(providers);
56131
+ return this.UpdateRecord('MJ: Permission Domains', input, provider, userPayload, pubSub);
56132
+ }
56133
+
56134
+ @Mutation(() => MJPermissionDomain_)
56135
+ async DeleteMJPermissionDomain(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
56136
+ const provider = GetReadWriteProvider(providers);
56137
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
56138
+ return this.DeleteRecord('MJ: Permission Domains', key, options, provider, userPayload, pubSub);
56139
+ }
56140
+
56141
+ }
56142
+
55717
56143
  //****************************************************************************
55718
56144
  // ENTITY CLASS for MJ: Projects
55719
56145
  //****************************************************************************
@@ -62301,6 +62727,10 @@ export class MJResourcePermission_ {
62301
62727
  @MaxLength(20)
62302
62728
  Status: string;
62303
62729
 
62730
+ @Field({nullable: true, description: `The user who granted this permission. NULL when the share pre-dates this column or when the grantor is unknown (e.g., a system-seeded permission).`})
62731
+ @MaxLength(36)
62732
+ SharedByUserID?: string;
62733
+
62304
62734
  @Field()
62305
62735
  @MaxLength(255)
62306
62736
  ResourceType: string;
@@ -62313,6 +62743,10 @@ export class MJResourcePermission_ {
62313
62743
  @MaxLength(100)
62314
62744
  User?: string;
62315
62745
 
62746
+ @Field({nullable: true})
62747
+ @MaxLength(100)
62748
+ SharedByUser?: string;
62749
+
62316
62750
  }
62317
62751
 
62318
62752
  //****************************************************************************
@@ -62350,6 +62784,9 @@ export class CreateMJResourcePermissionInput {
62350
62784
  @Field({ nullable: true })
62351
62785
  Status?: string;
62352
62786
 
62787
+ @Field({ nullable: true })
62788
+ SharedByUserID: string | null;
62789
+
62353
62790
  @Field(() => RestoreContextInput, { nullable: true })
62354
62791
  RestoreContext___?: RestoreContextInput;
62355
62792
  }
@@ -62390,6 +62827,9 @@ export class UpdateMJResourcePermissionInput {
62390
62827
  @Field({ nullable: true })
62391
62828
  Status?: string;
62392
62829
 
62830
+ @Field({ nullable: true })
62831
+ SharedByUserID?: string | null;
62832
+
62393
62833
  @Field(() => [KeyValuePairInput], { nullable: true })
62394
62834
  OldValues___?: KeyValuePairInput[];
62395
62835
 
@@ -66316,12 +66756,12 @@ export class MJTag_ {
66316
66756
  @Field(() => [MJTaggedItem_])
66317
66757
  MJTaggedItems_TagIDArray: MJTaggedItem_[]; // Link to MJTaggedItems
66318
66758
 
66319
- @Field(() => [MJContentItemTag_])
66320
- MJContentItemTags_TagIDArray: MJContentItemTag_[]; // Link to MJContentItemTags
66321
-
66322
66759
  @Field(() => [MJTagCoOccurrence_])
66323
66760
  MJTagCoOccurrences_TagBIDArray: MJTagCoOccurrence_[]; // Link to MJTagCoOccurrences
66324
66761
 
66762
+ @Field(() => [MJContentItemTag_])
66763
+ MJContentItemTags_TagIDArray: MJContentItemTag_[]; // Link to MJContentItemTags
66764
+
66325
66765
  @Field(() => [MJTagAuditLog_])
66326
66766
  MJTagAuditLogs_RelatedTagIDArray: MJTagAuditLog_[]; // Link to MJTagAuditLogs
66327
66767
 
@@ -66477,16 +66917,6 @@ export class MJTagResolver extends ResolverBase {
66477
66917
  return result;
66478
66918
  }
66479
66919
 
66480
- @FieldResolver(() => [MJContentItemTag_])
66481
- async MJContentItemTags_TagIDArray(@Root() mjtag_: MJTag_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
66482
- this.CheckUserReadPermissions('MJ: Content Item Tags', userPayload);
66483
- const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
66484
- const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwContentItemTags')} WHERE ${provider.QuoteIdentifier('TagID')}='${mjtag_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Content Item Tags', userPayload, EntityPermissionType.Read, 'AND');
66485
- const rows = await provider.ExecuteSQL(sSQL, undefined, undefined, this.GetUserFromPayload(userPayload));
66486
- const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Content Item Tags', rows, this.GetUserFromPayload(userPayload));
66487
- return result;
66488
- }
66489
-
66490
66920
  @FieldResolver(() => [MJTagCoOccurrence_])
66491
66921
  async MJTagCoOccurrences_TagBIDArray(@Root() mjtag_: MJTag_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
66492
66922
  this.CheckUserReadPermissions('MJ: Tag Co Occurrences', userPayload);
@@ -66497,6 +66927,16 @@ export class MJTagResolver extends ResolverBase {
66497
66927
  return result;
66498
66928
  }
66499
66929
 
66930
+ @FieldResolver(() => [MJContentItemTag_])
66931
+ async MJContentItemTags_TagIDArray(@Root() mjtag_: MJTag_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
66932
+ this.CheckUserReadPermissions('MJ: Content Item Tags', userPayload);
66933
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
66934
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwContentItemTags')} WHERE ${provider.QuoteIdentifier('TagID')}='${mjtag_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Content Item Tags', userPayload, EntityPermissionType.Read, 'AND');
66935
+ const rows = await provider.ExecuteSQL(sSQL, undefined, undefined, this.GetUserFromPayload(userPayload));
66936
+ const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Content Item Tags', rows, this.GetUserFromPayload(userPayload));
66937
+ return result;
66938
+ }
66939
+
66500
66940
  @FieldResolver(() => [MJTagAuditLog_])
66501
66941
  async MJTagAuditLogs_RelatedTagIDArray(@Root() mjtag_: MJTag_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
66502
66942
  this.CheckUserReadPermissions('MJ: Tag Audit Logs', userPayload);
@@ -74028,30 +74468,33 @@ export class MJUser_ {
74028
74468
  @Field(() => [MJOAuthAuthorizationState_])
74029
74469
  MJOAuthAuthorizationStates_UserIDArray: MJOAuthAuthorizationState_[]; // Link to MJOAuthAuthorizationStates
74030
74470
 
74031
- @Field(() => [MJOpenAppInstallHistory_])
74032
- MJOpenAppInstallHistories_ExecutedByUserIDArray: MJOpenAppInstallHistory_[]; // Link to MJOpenAppInstallHistories
74033
-
74034
74471
  @Field(() => [MJOpenApp_])
74035
74472
  MJOpenApps_InstalledByUserIDArray: MJOpenApp_[]; // Link to MJOpenApps
74036
74473
 
74474
+ @Field(() => [MJOpenAppInstallHistory_])
74475
+ MJOpenAppInstallHistories_ExecutedByUserIDArray: MJOpenAppInstallHistory_[]; // Link to MJOpenAppInstallHistories
74476
+
74037
74477
  @Field(() => [MJContentItemDuplicate_])
74038
74478
  MJContentItemDuplicates_ResolvedByUserIDArray: MJContentItemDuplicate_[]; // Link to MJContentItemDuplicates
74039
74479
 
74040
- @Field(() => [MJTagAuditLog_])
74041
- MJTagAuditLogs_PerformedByUserIDArray: MJTagAuditLog_[]; // Link to MJTagAuditLogs
74042
-
74043
74480
  @Field(() => [MJContentProcessRun_])
74044
74481
  MJContentProcessRuns_StartedByUserIDArray: MJContentProcessRun_[]; // Link to MJContentProcessRuns
74045
74482
 
74046
74483
  @Field(() => [MJKnowledgeHubSavedSearch_])
74047
74484
  MJKnowledgeHubSavedSearches_UserIDArray: MJKnowledgeHubSavedSearch_[]; // Link to MJKnowledgeHubSavedSearches
74048
74485
 
74049
- @Field(() => [MJMCPToolFavorite_])
74050
- MJMCPToolFavorites_UserIDArray: MJMCPToolFavorite_[]; // Link to MJMCPToolFavorites
74486
+ @Field(() => [MJTagAuditLog_])
74487
+ MJTagAuditLogs_PerformedByUserIDArray: MJTagAuditLog_[]; // Link to MJTagAuditLogs
74051
74488
 
74052
74489
  @Field(() => [MJArchiveConfiguration_])
74053
74490
  MJArchiveConfigurations_CreatedByUserIDArray: MJArchiveConfiguration_[]; // Link to MJArchiveConfigurations
74054
74491
 
74492
+ @Field(() => [MJMCPToolFavorite_])
74493
+ MJMCPToolFavorites_UserIDArray: MJMCPToolFavorite_[]; // Link to MJMCPToolFavorites
74494
+
74495
+ @Field(() => [MJResourcePermission_])
74496
+ MJResourcePermissions_SharedByUserIDArray: MJResourcePermission_[]; // Link to MJResourcePermissions
74497
+
74055
74498
  @Field(() => [MJResourcePermission_])
74056
74499
  MJResourcePermissions_UserIDArray: MJResourcePermission_[]; // Link to MJResourcePermissions
74057
74500
 
@@ -74882,16 +75325,6 @@ export class MJUserResolverBase extends ResolverBase {
74882
75325
  return result;
74883
75326
  }
74884
75327
 
74885
- @FieldResolver(() => [MJOpenAppInstallHistory_])
74886
- async MJOpenAppInstallHistories_ExecutedByUserIDArray(@Root() mjuser_: MJUser_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
74887
- this.CheckUserReadPermissions('MJ: Open App Install Histories', userPayload);
74888
- const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
74889
- const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwOpenAppInstallHistories')} WHERE ${provider.QuoteIdentifier('ExecutedByUserID')}='${mjuser_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Open App Install Histories', userPayload, EntityPermissionType.Read, 'AND');
74890
- const rows = await provider.ExecuteSQL(sSQL, undefined, undefined, this.GetUserFromPayload(userPayload));
74891
- const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Open App Install Histories', rows, this.GetUserFromPayload(userPayload));
74892
- return result;
74893
- }
74894
-
74895
75328
  @FieldResolver(() => [MJOpenApp_])
74896
75329
  async MJOpenApps_InstalledByUserIDArray(@Root() mjuser_: MJUser_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
74897
75330
  this.CheckUserReadPermissions('MJ: Open Apps', userPayload);
@@ -74902,23 +75335,23 @@ export class MJUserResolverBase extends ResolverBase {
74902
75335
  return result;
74903
75336
  }
74904
75337
 
74905
- @FieldResolver(() => [MJContentItemDuplicate_])
74906
- async MJContentItemDuplicates_ResolvedByUserIDArray(@Root() mjuser_: MJUser_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
74907
- this.CheckUserReadPermissions('MJ: Content Item Duplicates', userPayload);
75338
+ @FieldResolver(() => [MJOpenAppInstallHistory_])
75339
+ async MJOpenAppInstallHistories_ExecutedByUserIDArray(@Root() mjuser_: MJUser_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
75340
+ this.CheckUserReadPermissions('MJ: Open App Install Histories', userPayload);
74908
75341
  const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
74909
- const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwContentItemDuplicates')} WHERE ${provider.QuoteIdentifier('ResolvedByUserID')}='${mjuser_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Content Item Duplicates', userPayload, EntityPermissionType.Read, 'AND');
75342
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwOpenAppInstallHistories')} WHERE ${provider.QuoteIdentifier('ExecutedByUserID')}='${mjuser_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Open App Install Histories', userPayload, EntityPermissionType.Read, 'AND');
74910
75343
  const rows = await provider.ExecuteSQL(sSQL, undefined, undefined, this.GetUserFromPayload(userPayload));
74911
- const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Content Item Duplicates', rows, this.GetUserFromPayload(userPayload));
75344
+ const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Open App Install Histories', rows, this.GetUserFromPayload(userPayload));
74912
75345
  return result;
74913
75346
  }
74914
75347
 
74915
- @FieldResolver(() => [MJTagAuditLog_])
74916
- async MJTagAuditLogs_PerformedByUserIDArray(@Root() mjuser_: MJUser_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
74917
- this.CheckUserReadPermissions('MJ: Tag Audit Logs', userPayload);
75348
+ @FieldResolver(() => [MJContentItemDuplicate_])
75349
+ async MJContentItemDuplicates_ResolvedByUserIDArray(@Root() mjuser_: MJUser_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
75350
+ this.CheckUserReadPermissions('MJ: Content Item Duplicates', userPayload);
74918
75351
  const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
74919
- const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwTagAuditLogs')} WHERE ${provider.QuoteIdentifier('PerformedByUserID')}='${mjuser_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Tag Audit Logs', userPayload, EntityPermissionType.Read, 'AND');
75352
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwContentItemDuplicates')} WHERE ${provider.QuoteIdentifier('ResolvedByUserID')}='${mjuser_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Content Item Duplicates', userPayload, EntityPermissionType.Read, 'AND');
74920
75353
  const rows = await provider.ExecuteSQL(sSQL, undefined, undefined, this.GetUserFromPayload(userPayload));
74921
- const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Tag Audit Logs', rows, this.GetUserFromPayload(userPayload));
75354
+ const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Content Item Duplicates', rows, this.GetUserFromPayload(userPayload));
74922
75355
  return result;
74923
75356
  }
74924
75357
 
@@ -74942,13 +75375,13 @@ export class MJUserResolverBase extends ResolverBase {
74942
75375
  return result;
74943
75376
  }
74944
75377
 
74945
- @FieldResolver(() => [MJMCPToolFavorite_])
74946
- async MJMCPToolFavorites_UserIDArray(@Root() mjuser_: MJUser_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
74947
- this.CheckUserReadPermissions('MJ: MCP Tool Favorites', userPayload);
75378
+ @FieldResolver(() => [MJTagAuditLog_])
75379
+ async MJTagAuditLogs_PerformedByUserIDArray(@Root() mjuser_: MJUser_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
75380
+ this.CheckUserReadPermissions('MJ: Tag Audit Logs', userPayload);
74948
75381
  const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
74949
- const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwMCPToolFavorites')} WHERE ${provider.QuoteIdentifier('UserID')}='${mjuser_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: MCP Tool Favorites', userPayload, EntityPermissionType.Read, 'AND');
75382
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwTagAuditLogs')} WHERE ${provider.QuoteIdentifier('PerformedByUserID')}='${mjuser_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Tag Audit Logs', userPayload, EntityPermissionType.Read, 'AND');
74950
75383
  const rows = await provider.ExecuteSQL(sSQL, undefined, undefined, this.GetUserFromPayload(userPayload));
74951
- const result = await this.ArrayMapFieldNamesToCodeNames('MJ: MCP Tool Favorites', rows, this.GetUserFromPayload(userPayload));
75384
+ const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Tag Audit Logs', rows, this.GetUserFromPayload(userPayload));
74952
75385
  return result;
74953
75386
  }
74954
75387
 
@@ -74962,6 +75395,26 @@ export class MJUserResolverBase extends ResolverBase {
74962
75395
  return result;
74963
75396
  }
74964
75397
 
75398
+ @FieldResolver(() => [MJMCPToolFavorite_])
75399
+ async MJMCPToolFavorites_UserIDArray(@Root() mjuser_: MJUser_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
75400
+ this.CheckUserReadPermissions('MJ: MCP Tool Favorites', userPayload);
75401
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
75402
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwMCPToolFavorites')} WHERE ${provider.QuoteIdentifier('UserID')}='${mjuser_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: MCP Tool Favorites', userPayload, EntityPermissionType.Read, 'AND');
75403
+ const rows = await provider.ExecuteSQL(sSQL, undefined, undefined, this.GetUserFromPayload(userPayload));
75404
+ const result = await this.ArrayMapFieldNamesToCodeNames('MJ: MCP Tool Favorites', rows, this.GetUserFromPayload(userPayload));
75405
+ return result;
75406
+ }
75407
+
75408
+ @FieldResolver(() => [MJResourcePermission_])
75409
+ async MJResourcePermissions_SharedByUserIDArray(@Root() mjuser_: MJUser_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
75410
+ this.CheckUserReadPermissions('MJ: Resource Permissions', userPayload);
75411
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
75412
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwResourcePermissions')} WHERE ${provider.QuoteIdentifier('SharedByUserID')}='${mjuser_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Resource Permissions', userPayload, EntityPermissionType.Read, 'AND');
75413
+ const rows = await provider.ExecuteSQL(sSQL, undefined, undefined, this.GetUserFromPayload(userPayload));
75414
+ const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Resource Permissions', rows, this.GetUserFromPayload(userPayload));
75415
+ return result;
75416
+ }
75417
+
74965
75418
  @FieldResolver(() => [MJResourcePermission_])
74966
75419
  async MJResourcePermissions_UserIDArray(@Root() mjuser_: MJUser_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
74967
75420
  this.CheckUserReadPermissions('MJ: Resource Permissions', userPayload);