@memberjunction/server 5.3.1 → 5.4.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/server",
3
- "version": "5.3.1",
3
+ "version": "5.4.0",
4
4
  "description": "MemberJunction: This project provides API access via GraphQL to the common data store.",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./src/index.ts",
@@ -26,58 +26,58 @@
26
26
  "@apollo/server": "^4.9.1",
27
27
  "@graphql-tools/schema": "latest",
28
28
  "@graphql-tools/utils": "^11.0.0",
29
- "@memberjunction/actions": "5.3.1",
30
- "@memberjunction/actions-base": "5.3.1",
31
- "@memberjunction/actions-apollo": "5.3.1",
32
- "@memberjunction/actions-bizapps-accounting": "5.3.1",
33
- "@memberjunction/actions-bizapps-crm": "5.3.1",
34
- "@memberjunction/actions-bizapps-formbuilders": "5.3.1",
35
- "@memberjunction/actions-bizapps-lms": "5.3.1",
36
- "@memberjunction/actions-bizapps-social": "5.3.1",
37
- "@memberjunction/ai": "5.3.1",
38
- "@memberjunction/ai-mcp-client": "5.3.1",
39
- "@memberjunction/ai-agent-manager": "5.3.1",
40
- "@memberjunction/ai-agent-manager-actions": "5.3.1",
41
- "@memberjunction/ai-agents": "5.3.1",
42
- "@memberjunction/ai-core-plus": "5.3.1",
43
- "@memberjunction/ai-prompts": "5.3.1",
44
- "@memberjunction/ai-provider-bundle": "5.3.1",
45
- "@memberjunction/ai-vectors-pinecone": "5.3.1",
46
- "@memberjunction/aiengine": "5.3.1",
47
- "@memberjunction/communication-ms-graph": "5.3.1",
48
- "@memberjunction/communication-sendgrid": "5.3.1",
49
- "@memberjunction/communication-types": "5.3.1",
50
- "@memberjunction/component-registry-client-sdk": "5.3.1",
51
- "@memberjunction/config": "5.3.1",
52
- "@memberjunction/core": "5.3.1",
53
- "@memberjunction/core-actions": "5.3.1",
54
- "@memberjunction/core-entities": "5.3.1",
55
- "@memberjunction/core-entities-server": "5.3.1",
56
- "@memberjunction/data-context": "5.3.1",
57
- "@memberjunction/data-context-server": "5.3.1",
58
- "@memberjunction/doc-utils": "5.3.1",
59
- "@memberjunction/api-keys": "5.3.1",
60
- "@memberjunction/encryption": "5.3.1",
61
- "@memberjunction/entity-communications-base": "5.3.1",
62
- "@memberjunction/entity-communications-server": "5.3.1",
63
- "@memberjunction/external-change-detection": "5.3.1",
64
- "@memberjunction/global": "5.3.1",
65
- "@memberjunction/graphql-dataprovider": "5.3.1",
66
- "@memberjunction/interactive-component-types": "5.3.1",
67
- "@memberjunction/computer-use-engine": "5.3.1",
68
- "@memberjunction/notifications": "5.3.1",
69
- "@memberjunction/queue": "5.3.1",
70
- "@memberjunction/scheduling-actions": "5.3.1",
71
- "@memberjunction/scheduling-base-types": "5.3.1",
72
- "@memberjunction/scheduling-engine": "5.3.1",
73
- "@memberjunction/scheduling-engine-base": "5.3.1",
74
- "@memberjunction/skip-types": "5.3.1",
75
- "@memberjunction/sqlserver-dataprovider": "5.3.1",
76
- "@memberjunction/storage": "5.3.1",
77
- "@memberjunction/templates": "5.3.1",
78
- "@memberjunction/testing-engine": "5.3.1",
79
- "@memberjunction/testing-engine-base": "5.3.1",
80
- "@memberjunction/version-history": "5.3.1",
29
+ "@memberjunction/actions": "5.4.0",
30
+ "@memberjunction/actions-base": "5.4.0",
31
+ "@memberjunction/actions-apollo": "5.4.0",
32
+ "@memberjunction/actions-bizapps-accounting": "5.4.0",
33
+ "@memberjunction/actions-bizapps-crm": "5.4.0",
34
+ "@memberjunction/actions-bizapps-formbuilders": "5.4.0",
35
+ "@memberjunction/actions-bizapps-lms": "5.4.0",
36
+ "@memberjunction/actions-bizapps-social": "5.4.0",
37
+ "@memberjunction/ai": "5.4.0",
38
+ "@memberjunction/ai-mcp-client": "5.4.0",
39
+ "@memberjunction/ai-agent-manager": "5.4.0",
40
+ "@memberjunction/ai-agent-manager-actions": "5.4.0",
41
+ "@memberjunction/ai-agents": "5.4.0",
42
+ "@memberjunction/ai-core-plus": "5.4.0",
43
+ "@memberjunction/ai-prompts": "5.4.0",
44
+ "@memberjunction/ai-provider-bundle": "5.4.0",
45
+ "@memberjunction/ai-vectors-pinecone": "5.4.0",
46
+ "@memberjunction/aiengine": "5.4.0",
47
+ "@memberjunction/communication-ms-graph": "5.4.0",
48
+ "@memberjunction/communication-sendgrid": "5.4.0",
49
+ "@memberjunction/communication-types": "5.4.0",
50
+ "@memberjunction/component-registry-client-sdk": "5.4.0",
51
+ "@memberjunction/config": "5.4.0",
52
+ "@memberjunction/core": "5.4.0",
53
+ "@memberjunction/core-actions": "5.4.0",
54
+ "@memberjunction/core-entities": "5.4.0",
55
+ "@memberjunction/core-entities-server": "5.4.0",
56
+ "@memberjunction/data-context": "5.4.0",
57
+ "@memberjunction/data-context-server": "5.4.0",
58
+ "@memberjunction/doc-utils": "5.4.0",
59
+ "@memberjunction/api-keys": "5.4.0",
60
+ "@memberjunction/encryption": "5.4.0",
61
+ "@memberjunction/entity-communications-base": "5.4.0",
62
+ "@memberjunction/entity-communications-server": "5.4.0",
63
+ "@memberjunction/external-change-detection": "5.4.0",
64
+ "@memberjunction/global": "5.4.0",
65
+ "@memberjunction/graphql-dataprovider": "5.4.0",
66
+ "@memberjunction/interactive-component-types": "5.4.0",
67
+ "@memberjunction/computer-use-engine": "5.4.0",
68
+ "@memberjunction/notifications": "5.4.0",
69
+ "@memberjunction/queue": "5.4.0",
70
+ "@memberjunction/scheduling-actions": "5.4.0",
71
+ "@memberjunction/scheduling-base-types": "5.4.0",
72
+ "@memberjunction/scheduling-engine": "5.4.0",
73
+ "@memberjunction/scheduling-engine-base": "5.4.0",
74
+ "@memberjunction/skip-types": "5.4.0",
75
+ "@memberjunction/sqlserver-dataprovider": "5.4.0",
76
+ "@memberjunction/storage": "5.4.0",
77
+ "@memberjunction/templates": "5.4.0",
78
+ "@memberjunction/testing-engine": "5.4.0",
79
+ "@memberjunction/testing-engine-base": "5.4.0",
80
+ "@memberjunction/version-history": "5.4.0",
81
81
  "@types/compression": "^1.8.1",
82
82
  "@types/cors": "^2.8.19",
83
83
  "@types/jsonwebtoken": "9.0.10",
@@ -19,7 +19,7 @@ import { mj_core_schema } from '../config.js';
19
19
 
20
20
 
21
21
 
22
- import { MJAccessControlRuleEntity, MJActionAuthorizationEntity, MJActionCategoryEntity, MJActionContextTypeEntity, MJActionContextEntity, MJActionExecutionLogEntity, MJActionFilterEntity, MJActionLibraryEntity, MJActionParamEntity, MJActionResultCodeEntity, MJActionEntity, MJAIActionEntity, MJAIAgentActionEntity, MJAIAgentArtifactTypeEntity, MJAIAgentConfigurationEntity, MJAIAgentDataSourceEntity, MJAIAgentExampleEntity, MJAIAgentLearningCycleEntity, MJAIAgentModalityEntity, MJAIAgentModelEntity, MJAIAgentNoteTypeEntity, MJAIAgentNoteEntity, MJAIAgentPermissionEntity, MJAIAgentPromptEntity, MJAIAgentRelationshipEntity, MJAIAgentRequestEntity, MJAIAgentRunMediaEntity, MJAIAgentRunStepEntity, MJAIAgentRunEntity, MJAIAgentStepPathEntity, MJAIAgentStepEntity, MJAIAgentTypeEntity, MJAIAgentEntity, MJAIArchitectureEntity, 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, MJApplicationSettingEntity, MJApplicationEntity, MJArtifactPermissionEntity, MJArtifactTypeEntity, MJArtifactUseEntity, MJArtifactVersionAttributeEntity, MJArtifactVersionEntity, MJArtifactEntity, MJAuditLogTypeEntity, MJAuditLogEntity, MJAuthorizationRoleEntity, MJAuthorizationEntity, MJCollectionArtifactEntity, MJCollectionPermissionEntity, MJCollectionEntity, MJCommunicationBaseMessageTypeEntity, MJCommunicationLogEntity, MJCommunicationProviderMessageTypeEntity, MJCommunicationProviderEntity, MJCommunicationRunEntity, MJCompanyEntity, MJCompanyIntegrationRecordMapEntity, MJCompanyIntegrationRunAPILogEntity, MJCompanyIntegrationRunDetailEntity, MJCompanyIntegrationRunEntity, MJCompanyIntegrationEntity, MJComponentDependencyEntity, MJComponentLibraryEntity, MJComponentLibraryLinkEntity, MJComponentRegistryEntity, MJComponentEntity, MJContentFileTypeEntity, MJContentItemAttributeEntity, MJContentItemTagEntity, MJContentItemEntity, MJContentProcessRunEntity, MJContentSourceParamEntity, MJContentSourceTypeParamEntity, MJContentSourceTypeEntity, MJContentSourceEntity, MJContentTypeAttributeEntity, MJContentTypeEntity, MJConversationArtifactPermissionEntity, MJConversationArtifactVersionEntity, MJConversationArtifactEntity, MJConversationDetailArtifactEntity, MJConversationDetailAttachmentEntity, MJConversationDetailRatingEntity, MJConversationDetailEntity, MJConversationEntity, 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, MJEntityPermissionEntity, MJEntityRecordDocumentEntity, MJEntityRelationshipDisplayComponentEntity, MJEntityRelationshipEntity, MJEntitySettingEntity, MJEnvironmentEntity, MJErrorLogEntity, MJExplorerNavigationItemEntity, MJFileCategoryEntity, MJFileEntityRecordLinkEntity, MJFileStorageAccountEntity, MJFileStorageProviderEntity, MJFileEntity, MJGeneratedCodeCategoryEntity, MJGeneratedCodeEntity, MJIntegrationURLFormatEntity, MJIntegrationEntity, MJLibraryEntity, MJLibraryItemEntity, MJListCategoryEntity, MJListDetailEntity, MJListInvitationEntity, MJListShareEntity, MJListEntity, MJMCPServerConnectionPermissionEntity, MJMCPServerConnectionToolEntity, MJMCPServerConnectionEntity, MJMCPServerToolEntity, MJMCPServerEntity, MJMCPToolExecutionLogEntity, MJOAuthAuthServerMetadataCacheEntity, MJOAuthAuthorizationStateEntity, MJOAuthClientRegistrationEntity, MJOAuthTokenEntity, MJOpenAppDependencyEntity, MJOpenAppInstallHistoryEntity, MJOpenAppEntity, MJOutputDeliveryTypeEntity, MJOutputFormatTypeEntity, MJOutputTriggerTypeEntity, MJProjectEntity, MJPublicLinkEntity, MJQueryEntity, MJQueryCategoryEntity, MJQueryEntityEntity, MJQueryFieldEntity, MJQueryParameterEntity, MJQueryPermissionEntity, MJQueueTaskEntity, MJQueueTypeEntity, MJQueueEntity, MJRecommendationItemEntity, MJRecommendationProviderEntity, MJRecommendationRunEntity, MJRecommendationEntity, MJRecordChangeReplayRunEntity, MJRecordChangeEntity, MJRecordLinkEntity, MJRecordMergeDeletionLogEntity, MJRecordMergeLogEntity, MJReportCategoryEntity, MJReportSnapshotEntity, MJReportUserStateEntity, MJReportVersionEntity, MJReportEntity, MJResourceLinkEntity, MJResourcePermissionEntity, MJResourceTypeEntity, MJRoleEntity, MJRowLevelSecurityFilterEntity, MJScheduledActionParamEntity, MJScheduledActionEntity, MJScheduledJobRunEntity, MJScheduledJobTypeEntity, MJScheduledJobEntity, MJSchemaInfoEntity, MJSkillEntity, MJTaggedItemEntity, MJTagEntity, MJTaskDependencyEntity, MJTaskTypeEntity, MJTaskEntity, MJTemplateCategoryEntity, MJTemplateContentTypeEntity, MJTemplateContentEntity, MJTemplateParamEntity, MJTemplateEntity, MJTestRubricEntity, MJTestRunFeedbackEntity, 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
+ import { MJAccessControlRuleEntity, MJActionAuthorizationEntity, MJActionCategoryEntity, MJActionContextTypeEntity, MJActionContextEntity, MJActionExecutionLogEntity, MJActionFilterEntity, MJActionLibraryEntity, MJActionParamEntity, MJActionResultCodeEntity, MJActionEntity, MJAIActionEntity, MJAIAgentActionEntity, MJAIAgentArtifactTypeEntity, MJAIAgentConfigurationEntity, MJAIAgentDataSourceEntity, MJAIAgentExampleEntity, MJAIAgentLearningCycleEntity, MJAIAgentModalityEntity, MJAIAgentModelEntity, MJAIAgentNoteTypeEntity, MJAIAgentNoteEntity, MJAIAgentPermissionEntity, MJAIAgentPromptEntity, MJAIAgentRelationshipEntity, MJAIAgentRequestEntity, MJAIAgentRunMediaEntity, MJAIAgentRunStepEntity, MJAIAgentRunEntity, MJAIAgentStepPathEntity, MJAIAgentStepEntity, MJAIAgentTypeEntity, MJAIAgentEntity, MJAIArchitectureEntity, 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, MJApplicationSettingEntity, MJApplicationEntity, MJArtifactPermissionEntity, MJArtifactTypeEntity, MJArtifactUseEntity, MJArtifactVersionAttributeEntity, MJArtifactVersionEntity, MJArtifactEntity, MJAuditLogTypeEntity, MJAuditLogEntity, MJAuthorizationRoleEntity, MJAuthorizationEntity, MJCollectionArtifactEntity, MJCollectionPermissionEntity, MJCollectionEntity, MJCommunicationBaseMessageTypeEntity, MJCommunicationLogEntity, MJCommunicationProviderMessageTypeEntity, MJCommunicationProviderEntity, MJCommunicationRunEntity, MJCompanyEntity, MJCompanyIntegrationRecordMapEntity, MJCompanyIntegrationRunAPILogEntity, MJCompanyIntegrationRunDetailEntity, MJCompanyIntegrationRunEntity, MJCompanyIntegrationEntity, MJComponentDependencyEntity, MJComponentLibraryEntity, MJComponentLibraryLinkEntity, MJComponentRegistryEntity, MJComponentEntity, MJContentFileTypeEntity, MJContentItemAttributeEntity, MJContentItemTagEntity, MJContentItemEntity, MJContentProcessRunEntity, MJContentSourceParamEntity, MJContentSourceTypeParamEntity, MJContentSourceTypeEntity, MJContentSourceEntity, MJContentTypeAttributeEntity, MJContentTypeEntity, MJConversationArtifactPermissionEntity, MJConversationArtifactVersionEntity, MJConversationArtifactEntity, MJConversationDetailArtifactEntity, MJConversationDetailAttachmentEntity, MJConversationDetailRatingEntity, MJConversationDetailEntity, MJConversationEntity, 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, MJEntityPermissionEntity, MJEntityRecordDocumentEntity, MJEntityRelationshipDisplayComponentEntity, MJEntityRelationshipEntity, MJEntitySettingEntity, MJEnvironmentEntity, MJErrorLogEntity, MJExplorerNavigationItemEntity, MJFileCategoryEntity, MJFileEntityRecordLinkEntity, MJFileStorageAccountEntity, MJFileStorageProviderEntity, MJFileEntity, MJGeneratedCodeCategoryEntity, MJGeneratedCodeEntity, MJIntegrationURLFormatEntity, MJIntegrationEntity, MJLibraryEntity, MJLibraryItemEntity, MJListCategoryEntity, MJListDetailEntity, MJListInvitationEntity, MJListShareEntity, MJListEntity, MJMCPServerConnectionPermissionEntity, MJMCPServerConnectionToolEntity, MJMCPServerConnectionEntity, MJMCPServerToolEntity, MJMCPServerEntity, MJMCPToolExecutionLogEntity, MJOAuthAuthServerMetadataCacheEntity, MJOAuthAuthorizationStateEntity, MJOAuthClientRegistrationEntity, MJOAuthTokenEntity, MJOpenAppDependencyEntity, MJOpenAppInstallHistoryEntity, MJOpenAppEntity, MJOutputDeliveryTypeEntity, MJOutputFormatTypeEntity, MJOutputTriggerTypeEntity, MJProjectEntity, MJPublicLinkEntity, MJQueryEntity, MJQueryCategoryEntity, MJQueryEntityEntity, MJQueryFieldEntity, MJQueryParameterEntity, MJQueryPermissionEntity, MJQueueTaskEntity, MJQueueTypeEntity, MJQueueEntity, MJRecommendationItemEntity, MJRecommendationProviderEntity, MJRecommendationRunEntity, MJRecommendationEntity, MJRecordChangeReplayRunEntity, MJRecordChangeEntity, MJRecordLinkEntity, MJRecordMergeDeletionLogEntity, MJRecordMergeLogEntity, MJReportCategoryEntity, MJReportSnapshotEntity, MJReportUserStateEntity, MJReportVersionEntity, MJReportEntity, MJResourceLinkEntity, MJResourcePermissionEntity, MJResourceTypeEntity, MJRoleEntity, MJRowLevelSecurityFilterEntity, MJScheduledActionParamEntity, MJScheduledActionEntity, MJScheduledJobRunEntity, MJScheduledJobTypeEntity, MJScheduledJobEntity, MJSchemaInfoEntity, MJSkillEntity, 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';
23
23
 
24
24
 
25
25
  //****************************************************************************
@@ -59182,6 +59182,424 @@ export class MJTestRunFeedbackResolver extends ResolverBase {
59182
59182
 
59183
59183
  }
59184
59184
 
59185
+ //****************************************************************************
59186
+ // ENTITY CLASS for MJ: Test Run Output Types
59187
+ //****************************************************************************
59188
+ @ObjectType()
59189
+ export class MJTestRunOutputType_ {
59190
+ @Field()
59191
+ @MaxLength(16)
59192
+ ID: string;
59193
+
59194
+ @Field({description: `Unique name identifying this output type (e.g., Screenshot, Log, Data, Video)`})
59195
+ @MaxLength(200)
59196
+ Name: string;
59197
+
59198
+ @Field({nullable: true, description: `Description of what this output type represents and when it is used`})
59199
+ Description?: string;
59200
+
59201
+ @Field()
59202
+ @MaxLength(10)
59203
+ _mj__CreatedAt: Date;
59204
+
59205
+ @Field()
59206
+ @MaxLength(10)
59207
+ _mj__UpdatedAt: Date;
59208
+
59209
+ @Field(() => [MJTestRunOutput_])
59210
+ MJTestRunOutputs_OutputTypeIDArray: MJTestRunOutput_[]; // Link to MJTestRunOutputs
59211
+
59212
+ }
59213
+
59214
+ //****************************************************************************
59215
+ // INPUT TYPE for MJ: Test Run Output Types
59216
+ //****************************************************************************
59217
+ @InputType()
59218
+ export class CreateMJTestRunOutputTypeInput {
59219
+ @Field({ nullable: true })
59220
+ ID?: string;
59221
+
59222
+ @Field({ nullable: true })
59223
+ Name?: string;
59224
+
59225
+ @Field({ nullable: true })
59226
+ Description: string | null;
59227
+ }
59228
+
59229
+
59230
+ //****************************************************************************
59231
+ // INPUT TYPE for MJ: Test Run Output Types
59232
+ //****************************************************************************
59233
+ @InputType()
59234
+ export class UpdateMJTestRunOutputTypeInput {
59235
+ @Field()
59236
+ ID: string;
59237
+
59238
+ @Field({ nullable: true })
59239
+ Name?: string;
59240
+
59241
+ @Field({ nullable: true })
59242
+ Description?: string | null;
59243
+
59244
+ @Field(() => [KeyValuePairInput], { nullable: true })
59245
+ OldValues___?: KeyValuePairInput[];
59246
+ }
59247
+
59248
+ //****************************************************************************
59249
+ // RESOLVER for MJ: Test Run Output Types
59250
+ //****************************************************************************
59251
+ @ObjectType()
59252
+ export class RunMJTestRunOutputTypeViewResult {
59253
+ @Field(() => [MJTestRunOutputType_])
59254
+ Results: MJTestRunOutputType_[];
59255
+
59256
+ @Field(() => String, {nullable: true})
59257
+ UserViewRunID?: string;
59258
+
59259
+ @Field(() => Int, {nullable: true})
59260
+ RowCount: number;
59261
+
59262
+ @Field(() => Int, {nullable: true})
59263
+ TotalRowCount: number;
59264
+
59265
+ @Field(() => Int, {nullable: true})
59266
+ ExecutionTime: number;
59267
+
59268
+ @Field({nullable: true})
59269
+ ErrorMessage?: string;
59270
+
59271
+ @Field(() => Boolean, {nullable: false})
59272
+ Success: boolean;
59273
+ }
59274
+
59275
+ @Resolver(MJTestRunOutputType_)
59276
+ export class MJTestRunOutputTypeResolver extends ResolverBase {
59277
+ @Query(() => RunMJTestRunOutputTypeViewResult)
59278
+ async RunMJTestRunOutputTypeViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
59279
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
59280
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
59281
+ }
59282
+
59283
+ @Query(() => RunMJTestRunOutputTypeViewResult)
59284
+ async RunMJTestRunOutputTypeViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
59285
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
59286
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
59287
+ }
59288
+
59289
+ @Query(() => RunMJTestRunOutputTypeViewResult)
59290
+ async RunMJTestRunOutputTypeDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
59291
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
59292
+ input.EntityName = 'MJ: Test Run Output Types';
59293
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
59294
+ }
59295
+ @Query(() => MJTestRunOutputType_, { nullable: true })
59296
+ async MJTestRunOutputType(@Arg('ID', () => String) ID: string, @Ctx() { dataSources, userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJTestRunOutputType_ | null> {
59297
+ this.CheckUserReadPermissions('MJ: Test Run Output Types', userPayload);
59298
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
59299
+ const connPool = GetReadOnlyDataSource(dataSources, { allowFallbackToReadWrite: true });
59300
+ const sSQL = `SELECT * FROM [${Metadata.Provider.ConfigData.MJCoreSchemaName}].[vwTestRunOutputTypes] WHERE [ID]='${ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Test Run Output Types', userPayload, EntityPermissionType.Read, 'AND');
59301
+ const rows = await SQLServerDataProvider.ExecuteSQLWithPool(connPool, sSQL, undefined, this.GetUserFromPayload(userPayload));
59302
+ const result = await this.MapFieldNamesToCodeNames('MJ: Test Run Output Types', rows && rows.length > 0 ? rows[0] : {}, this.GetUserFromPayload(userPayload));
59303
+ return result;
59304
+ }
59305
+
59306
+ @FieldResolver(() => [MJTestRunOutput_])
59307
+ async MJTestRunOutputs_OutputTypeIDArray(@Root() mjtestrunoutputtype_: MJTestRunOutputType_, @Ctx() { dataSources, userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
59308
+ this.CheckUserReadPermissions('MJ: Test Run Outputs', userPayload);
59309
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
59310
+ const connPool = GetReadOnlyDataSource(dataSources, { allowFallbackToReadWrite: true });
59311
+ const sSQL = `SELECT * FROM [${Metadata.Provider.ConfigData.MJCoreSchemaName}].[vwTestRunOutputs] WHERE [OutputTypeID]='${mjtestrunoutputtype_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Test Run Outputs', userPayload, EntityPermissionType.Read, 'AND');
59312
+ const rows = await SQLServerDataProvider.ExecuteSQLWithPool(connPool, sSQL, undefined, this.GetUserFromPayload(userPayload));
59313
+ const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Test Run Outputs', rows, this.GetUserFromPayload(userPayload));
59314
+ return result;
59315
+ }
59316
+
59317
+ @Mutation(() => MJTestRunOutputType_)
59318
+ async CreateMJTestRunOutputType(
59319
+ @Arg('input', () => CreateMJTestRunOutputTypeInput) input: CreateMJTestRunOutputTypeInput,
59320
+ @Ctx() { providers, userPayload }: AppContext,
59321
+ @PubSub() pubSub: PubSubEngine
59322
+ ) {
59323
+ const provider = GetReadWriteProvider(providers);
59324
+ return this.CreateRecord('MJ: Test Run Output Types', input, provider, userPayload, pubSub)
59325
+ }
59326
+
59327
+ @Mutation(() => MJTestRunOutputType_)
59328
+ async UpdateMJTestRunOutputType(
59329
+ @Arg('input', () => UpdateMJTestRunOutputTypeInput) input: UpdateMJTestRunOutputTypeInput,
59330
+ @Ctx() { providers, userPayload }: AppContext,
59331
+ @PubSub() pubSub: PubSubEngine
59332
+ ) {
59333
+ const provider = GetReadWriteProvider(providers);
59334
+ return this.UpdateRecord('MJ: Test Run Output Types', input, provider, userPayload, pubSub);
59335
+ }
59336
+
59337
+ @Mutation(() => MJTestRunOutputType_)
59338
+ async DeleteMJTestRunOutputType(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
59339
+ const provider = GetReadWriteProvider(providers);
59340
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
59341
+ return this.DeleteRecord('MJ: Test Run Output Types', key, options, provider, userPayload, pubSub);
59342
+ }
59343
+
59344
+ }
59345
+
59346
+ //****************************************************************************
59347
+ // ENTITY CLASS for MJ: Test Run Outputs
59348
+ //****************************************************************************
59349
+ @ObjectType()
59350
+ export class MJTestRunOutput_ {
59351
+ @Field()
59352
+ @MaxLength(16)
59353
+ ID: string;
59354
+
59355
+ @Field({description: `Foreign key to the parent test run that produced this output`})
59356
+ @MaxLength(16)
59357
+ TestRunID: string;
59358
+
59359
+ @Field({description: `Foreign key to the output type category (Screenshot, Log, Video, etc.)`})
59360
+ @MaxLength(16)
59361
+ OutputTypeID: string;
59362
+
59363
+ @Field(() => Int, {description: `Chronological ordering for storyboarding outputs across steps`})
59364
+ Sequence: number;
59365
+
59366
+ @Field(() => Int, {nullable: true, description: `Which step produced this output, for step-based tests like Computer Use`})
59367
+ StepNumber?: number;
59368
+
59369
+ @Field({nullable: true, description: `Human-readable label for this output (e.g., Step 3 Screenshot)`})
59370
+ @MaxLength(510)
59371
+ Name?: string;
59372
+
59373
+ @Field({nullable: true, description: `Additional context about this output`})
59374
+ Description?: string;
59375
+
59376
+ @Field({nullable: true, description: `MIME type of the output data (e.g., image/png, text/plain, application/json, video/mp4)`})
59377
+ @MaxLength(200)
59378
+ MimeType?: string;
59379
+
59380
+ @Field({nullable: true, description: `Base64-encoded binary data (images, audio, video) or text content (logs, JSON, HTML)`})
59381
+ InlineData?: string;
59382
+
59383
+ @Field(() => Int, {nullable: true, description: `Size of the output data in bytes`})
59384
+ FileSizeBytes?: number;
59385
+
59386
+ @Field(() => Int, {nullable: true, description: `Width in pixels for image or video outputs`})
59387
+ Width?: number;
59388
+
59389
+ @Field(() => Int, {nullable: true, description: `Height in pixels for image or video outputs`})
59390
+ Height?: number;
59391
+
59392
+ @Field(() => Float, {nullable: true, description: `Duration in seconds for audio or video outputs`})
59393
+ DurationSeconds?: number;
59394
+
59395
+ @Field({nullable: true, description: `JSON object with additional metadata about this output (e.g., URL at time of capture, tool calls, error info)`})
59396
+ Metadata?: string;
59397
+
59398
+ @Field()
59399
+ @MaxLength(10)
59400
+ _mj__CreatedAt: Date;
59401
+
59402
+ @Field()
59403
+ @MaxLength(10)
59404
+ _mj__UpdatedAt: Date;
59405
+
59406
+ @Field()
59407
+ @MaxLength(510)
59408
+ TestRun: string;
59409
+
59410
+ @Field()
59411
+ @MaxLength(200)
59412
+ OutputType: string;
59413
+
59414
+ }
59415
+
59416
+ //****************************************************************************
59417
+ // INPUT TYPE for MJ: Test Run Outputs
59418
+ //****************************************************************************
59419
+ @InputType()
59420
+ export class CreateMJTestRunOutputInput {
59421
+ @Field({ nullable: true })
59422
+ ID?: string;
59423
+
59424
+ @Field({ nullable: true })
59425
+ TestRunID?: string;
59426
+
59427
+ @Field({ nullable: true })
59428
+ OutputTypeID?: string;
59429
+
59430
+ @Field(() => Int, { nullable: true })
59431
+ Sequence?: number;
59432
+
59433
+ @Field(() => Int, { nullable: true })
59434
+ StepNumber: number | null;
59435
+
59436
+ @Field({ nullable: true })
59437
+ Name: string | null;
59438
+
59439
+ @Field({ nullable: true })
59440
+ Description: string | null;
59441
+
59442
+ @Field({ nullable: true })
59443
+ MimeType: string | null;
59444
+
59445
+ @Field({ nullable: true })
59446
+ InlineData: string | null;
59447
+
59448
+ @Field(() => Int, { nullable: true })
59449
+ FileSizeBytes: number | null;
59450
+
59451
+ @Field(() => Int, { nullable: true })
59452
+ Width: number | null;
59453
+
59454
+ @Field(() => Int, { nullable: true })
59455
+ Height: number | null;
59456
+
59457
+ @Field(() => Float, { nullable: true })
59458
+ DurationSeconds: number | null;
59459
+
59460
+ @Field({ nullable: true })
59461
+ Metadata: string | null;
59462
+ }
59463
+
59464
+
59465
+ //****************************************************************************
59466
+ // INPUT TYPE for MJ: Test Run Outputs
59467
+ //****************************************************************************
59468
+ @InputType()
59469
+ export class UpdateMJTestRunOutputInput {
59470
+ @Field()
59471
+ ID: string;
59472
+
59473
+ @Field({ nullable: true })
59474
+ TestRunID?: string;
59475
+
59476
+ @Field({ nullable: true })
59477
+ OutputTypeID?: string;
59478
+
59479
+ @Field(() => Int, { nullable: true })
59480
+ Sequence?: number;
59481
+
59482
+ @Field(() => Int, { nullable: true })
59483
+ StepNumber?: number | null;
59484
+
59485
+ @Field({ nullable: true })
59486
+ Name?: string | null;
59487
+
59488
+ @Field({ nullable: true })
59489
+ Description?: string | null;
59490
+
59491
+ @Field({ nullable: true })
59492
+ MimeType?: string | null;
59493
+
59494
+ @Field({ nullable: true })
59495
+ InlineData?: string | null;
59496
+
59497
+ @Field(() => Int, { nullable: true })
59498
+ FileSizeBytes?: number | null;
59499
+
59500
+ @Field(() => Int, { nullable: true })
59501
+ Width?: number | null;
59502
+
59503
+ @Field(() => Int, { nullable: true })
59504
+ Height?: number | null;
59505
+
59506
+ @Field(() => Float, { nullable: true })
59507
+ DurationSeconds?: number | null;
59508
+
59509
+ @Field({ nullable: true })
59510
+ Metadata?: string | null;
59511
+
59512
+ @Field(() => [KeyValuePairInput], { nullable: true })
59513
+ OldValues___?: KeyValuePairInput[];
59514
+ }
59515
+
59516
+ //****************************************************************************
59517
+ // RESOLVER for MJ: Test Run Outputs
59518
+ //****************************************************************************
59519
+ @ObjectType()
59520
+ export class RunMJTestRunOutputViewResult {
59521
+ @Field(() => [MJTestRunOutput_])
59522
+ Results: MJTestRunOutput_[];
59523
+
59524
+ @Field(() => String, {nullable: true})
59525
+ UserViewRunID?: string;
59526
+
59527
+ @Field(() => Int, {nullable: true})
59528
+ RowCount: number;
59529
+
59530
+ @Field(() => Int, {nullable: true})
59531
+ TotalRowCount: number;
59532
+
59533
+ @Field(() => Int, {nullable: true})
59534
+ ExecutionTime: number;
59535
+
59536
+ @Field({nullable: true})
59537
+ ErrorMessage?: string;
59538
+
59539
+ @Field(() => Boolean, {nullable: false})
59540
+ Success: boolean;
59541
+ }
59542
+
59543
+ @Resolver(MJTestRunOutput_)
59544
+ export class MJTestRunOutputResolver extends ResolverBase {
59545
+ @Query(() => RunMJTestRunOutputViewResult)
59546
+ async RunMJTestRunOutputViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
59547
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
59548
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
59549
+ }
59550
+
59551
+ @Query(() => RunMJTestRunOutputViewResult)
59552
+ async RunMJTestRunOutputViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
59553
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
59554
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
59555
+ }
59556
+
59557
+ @Query(() => RunMJTestRunOutputViewResult)
59558
+ async RunMJTestRunOutputDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
59559
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
59560
+ input.EntityName = 'MJ: Test Run Outputs';
59561
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
59562
+ }
59563
+ @Query(() => MJTestRunOutput_, { nullable: true })
59564
+ async MJTestRunOutput(@Arg('ID', () => String) ID: string, @Ctx() { dataSources, userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<MJTestRunOutput_ | null> {
59565
+ this.CheckUserReadPermissions('MJ: Test Run Outputs', userPayload);
59566
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
59567
+ const connPool = GetReadOnlyDataSource(dataSources, { allowFallbackToReadWrite: true });
59568
+ const sSQL = `SELECT * FROM [${Metadata.Provider.ConfigData.MJCoreSchemaName}].[vwTestRunOutputs] WHERE [ID]='${ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Test Run Outputs', userPayload, EntityPermissionType.Read, 'AND');
59569
+ const rows = await SQLServerDataProvider.ExecuteSQLWithPool(connPool, sSQL, undefined, this.GetUserFromPayload(userPayload));
59570
+ const result = await this.MapFieldNamesToCodeNames('MJ: Test Run Outputs', rows && rows.length > 0 ? rows[0] : {}, this.GetUserFromPayload(userPayload));
59571
+ return result;
59572
+ }
59573
+
59574
+ @Mutation(() => MJTestRunOutput_)
59575
+ async CreateMJTestRunOutput(
59576
+ @Arg('input', () => CreateMJTestRunOutputInput) input: CreateMJTestRunOutputInput,
59577
+ @Ctx() { providers, userPayload }: AppContext,
59578
+ @PubSub() pubSub: PubSubEngine
59579
+ ) {
59580
+ const provider = GetReadWriteProvider(providers);
59581
+ return this.CreateRecord('MJ: Test Run Outputs', input, provider, userPayload, pubSub)
59582
+ }
59583
+
59584
+ @Mutation(() => MJTestRunOutput_)
59585
+ async UpdateMJTestRunOutput(
59586
+ @Arg('input', () => UpdateMJTestRunOutputInput) input: UpdateMJTestRunOutputInput,
59587
+ @Ctx() { providers, userPayload }: AppContext,
59588
+ @PubSub() pubSub: PubSubEngine
59589
+ ) {
59590
+ const provider = GetReadWriteProvider(providers);
59591
+ return this.UpdateRecord('MJ: Test Run Outputs', input, provider, userPayload, pubSub);
59592
+ }
59593
+
59594
+ @Mutation(() => MJTestRunOutput_)
59595
+ async DeleteMJTestRunOutput(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
59596
+ const provider = GetReadWriteProvider(providers);
59597
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
59598
+ return this.DeleteRecord('MJ: Test Run Outputs', key, options, provider, userPayload, pubSub);
59599
+ }
59600
+
59601
+ }
59602
+
59185
59603
  //****************************************************************************
59186
59604
  // ENTITY CLASS for MJ: Test Runs
59187
59605
  //****************************************************************************
@@ -59315,6 +59733,9 @@ export class MJTestRun_ {
59315
59733
  @MaxLength(510)
59316
59734
  TargetLogEntity?: string;
59317
59735
 
59736
+ @Field(() => [MJTestRunOutput_])
59737
+ MJTestRunOutputs_TestRunIDArray: MJTestRunOutput_[]; // Link to MJTestRunOutputs
59738
+
59318
59739
  @Field(() => [MJTestRunFeedback_])
59319
59740
  MJTestRunFeedbacks_TestRunIDArray: MJTestRunFeedback_[]; // Link to MJTestRunFeedbacks
59320
59741
 
@@ -59586,6 +60007,17 @@ export class MJTestRunResolver extends ResolverBase {
59586
60007
  return result;
59587
60008
  }
59588
60009
 
60010
+ @FieldResolver(() => [MJTestRunOutput_])
60011
+ async MJTestRunOutputs_TestRunIDArray(@Root() mjtestrun_: MJTestRun_, @Ctx() { dataSources, userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
60012
+ this.CheckUserReadPermissions('MJ: Test Run Outputs', userPayload);
60013
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
60014
+ const connPool = GetReadOnlyDataSource(dataSources, { allowFallbackToReadWrite: true });
60015
+ const sSQL = `SELECT * FROM [${Metadata.Provider.ConfigData.MJCoreSchemaName}].[vwTestRunOutputs] WHERE [TestRunID]='${mjtestrun_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Test Run Outputs', userPayload, EntityPermissionType.Read, 'AND');
60016
+ const rows = await SQLServerDataProvider.ExecuteSQLWithPool(connPool, sSQL, undefined, this.GetUserFromPayload(userPayload));
60017
+ const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Test Run Outputs', rows, this.GetUserFromPayload(userPayload));
60018
+ return result;
60019
+ }
60020
+
59589
60021
  @FieldResolver(() => [MJTestRunFeedback_])
59590
60022
  async MJTestRunFeedbacks_TestRunIDArray(@Root() mjtestrun_: MJTestRun_, @Ctx() { dataSources, userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
59591
60023
  this.CheckUserReadPermissions('MJ: Test Run Feedbacks', userPayload);
package/src/index.ts CHANGED
@@ -369,6 +369,9 @@ export const serve = async (resolverPaths: Array<string>, app: Application = cre
369
369
  graphqlRootPath,
370
370
  cors<cors.CorsRequest>(),
371
371
  BodyParser.json({ limit: '50mb' }),
372
+ // Express 5 leaves req.body as undefined for non-JSON or empty bodies;
373
+ // Apollo Server's expressMiddleware requires req.body to be defined.
374
+ (req, _res, next) => { if (req.body === undefined) req.body = {}; next(); },
372
375
  expressMiddleware(apolloServer, {
373
376
  context: contextFunction({
374
377
  setupComplete$,
@@ -544,6 +544,7 @@ export class RunAIAgentResolver extends ResolverBase {
544
544
 
545
545
  /**
546
546
  * Public mutation for regular users to run AI agents with authentication.
547
+ * Supports fire-and-forget mode to avoid Azure proxy timeouts on long-running agent executions.
547
548
  */
548
549
  @Mutation(() => AIAgentRunResult)
549
550
  async RunAIAgent(
@@ -562,12 +563,33 @@ export class RunAIAgentResolver extends ResolverBase {
562
563
  @Arg('createArtifacts', { nullable: true }) createArtifacts?: boolean,
563
564
  @Arg('createNotification', { nullable: true }) createNotification?: boolean,
564
565
  @Arg('sourceArtifactId', { nullable: true }) sourceArtifactId?: string,
565
- @Arg('sourceArtifactVersionId', { nullable: true }) sourceArtifactVersionId?: string
566
+ @Arg('sourceArtifactVersionId', { nullable: true }) sourceArtifactVersionId?: string,
567
+ @Arg('fireAndForget', { nullable: true }) fireAndForget?: boolean
566
568
  ): Promise<AIAgentRunResult> {
567
569
  // Check API key scope authorization for agent execution
568
570
  await this.CheckAPIKeyScopeAuthorization('agent:execute', agentId, userPayload);
569
571
 
570
572
  const p = GetReadWriteProvider(providers);
573
+
574
+ if (fireAndForget) {
575
+ // Fire-and-forget mode: start execution in background, return immediately.
576
+ // The client will receive the result via WebSocket PubSub completion event.
577
+ this.executeAgentInBackground(
578
+ p, dataSource, agentId, userPayload, messagesJson, sessionId, pubSub,
579
+ data, payload, lastRunId, autoPopulateLastRunPayload, configurationId,
580
+ conversationDetailId, createArtifacts || false, createNotification || false,
581
+ sourceArtifactId, sourceArtifactVersionId
582
+ );
583
+
584
+ LogStatus(`🔥 Fire-and-forget: Agent ${agentId} execution started in background for session ${sessionId}`);
585
+
586
+ return {
587
+ success: true,
588
+ result: JSON.stringify({ accepted: true, fireAndForget: true })
589
+ };
590
+ }
591
+
592
+ // Synchronous mode (default): wait for execution to complete
571
593
  return this.executeAIAgent(
572
594
  p,
573
595
  dataSource,