@memberjunction/server 4.4.0 → 5.1.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.
Files changed (99) hide show
  1. package/dist/agents/skip-agent.js +9 -9
  2. package/dist/agents/skip-agent.js.map +1 -1
  3. package/dist/auth/APIKeyScopeAuth.js.map +1 -1
  4. package/dist/auth/exampleNewUserSubClass.d.ts +2 -2
  5. package/dist/auth/exampleNewUserSubClass.d.ts.map +1 -1
  6. package/dist/auth/index.js.map +1 -1
  7. package/dist/auth/newUsers.d.ts +2 -2
  8. package/dist/auth/newUsers.d.ts.map +1 -1
  9. package/dist/auth/newUsers.js +6 -6
  10. package/dist/auth/newUsers.js.map +1 -1
  11. package/dist/entitySubclasses/entityPermissions.server.d.ts +2 -2
  12. package/dist/entitySubclasses/entityPermissions.server.d.ts.map +1 -1
  13. package/dist/entitySubclasses/entityPermissions.server.js +3 -3
  14. package/dist/entitySubclasses/entityPermissions.server.js.map +1 -1
  15. package/dist/generated/generated.d.ts +10882 -10692
  16. package/dist/generated/generated.d.ts.map +1 -1
  17. package/dist/generated/generated.js +45207 -44136
  18. package/dist/generated/generated.js.map +1 -1
  19. package/dist/generic/DeleteOptionsInput.d.ts +12 -2
  20. package/dist/generic/DeleteOptionsInput.d.ts.map +1 -1
  21. package/dist/generic/DeleteOptionsInput.js +12 -2
  22. package/dist/generic/DeleteOptionsInput.js.map +1 -1
  23. package/dist/generic/ResolverBase.d.ts.map +1 -1
  24. package/dist/generic/ResolverBase.js +6 -6
  25. package/dist/generic/ResolverBase.js.map +1 -1
  26. package/dist/generic/RunViewResolver.js +3 -3
  27. package/dist/generic/RunViewResolver.js.map +1 -1
  28. package/dist/resolvers/ComponentRegistryResolver.js.map +1 -1
  29. package/dist/resolvers/CreateQueryResolver.d.ts +3 -3
  30. package/dist/resolvers/CreateQueryResolver.d.ts.map +1 -1
  31. package/dist/resolvers/CreateQueryResolver.js +19 -19
  32. package/dist/resolvers/CreateQueryResolver.js.map +1 -1
  33. package/dist/resolvers/EntityResolver.js +1 -1
  34. package/dist/resolvers/EntityResolver.js.map +1 -1
  35. package/dist/resolvers/FileCategoryResolver.js +4 -4
  36. package/dist/resolvers/FileCategoryResolver.js.map +1 -1
  37. package/dist/resolvers/FileResolver.js +20 -20
  38. package/dist/resolvers/FileResolver.js.map +1 -1
  39. package/dist/resolvers/GetDataContextDataResolver.js +1 -1
  40. package/dist/resolvers/GetDataContextDataResolver.js.map +1 -1
  41. package/dist/resolvers/ISAEntityResolver.d.ts +22 -1
  42. package/dist/resolvers/ISAEntityResolver.d.ts.map +1 -1
  43. package/dist/resolvers/ISAEntityResolver.js +77 -1
  44. package/dist/resolvers/ISAEntityResolver.js.map +1 -1
  45. package/dist/resolvers/ReportResolver.js +3 -3
  46. package/dist/resolvers/ReportResolver.js.map +1 -1
  47. package/dist/resolvers/RunAIAgentResolver.js +3 -3
  48. package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
  49. package/dist/resolvers/RunAIPromptResolver.js +1 -1
  50. package/dist/resolvers/RunAIPromptResolver.js.map +1 -1
  51. package/dist/resolvers/RunTemplateResolver.js +2 -2
  52. package/dist/resolvers/RunTemplateResolver.js.map +1 -1
  53. package/dist/resolvers/SyncDataResolver.js +1 -1
  54. package/dist/resolvers/SyncDataResolver.js.map +1 -1
  55. package/dist/resolvers/SyncRolesUsersResolver.d.ts +9 -9
  56. package/dist/resolvers/SyncRolesUsersResolver.d.ts.map +1 -1
  57. package/dist/resolvers/SyncRolesUsersResolver.js +10 -10
  58. package/dist/resolvers/SyncRolesUsersResolver.js.map +1 -1
  59. package/dist/resolvers/UserFavoriteResolver.js +2 -2
  60. package/dist/resolvers/UserFavoriteResolver.js.map +1 -1
  61. package/dist/resolvers/UserResolver.js +8 -8
  62. package/dist/resolvers/UserResolver.js.map +1 -1
  63. package/dist/resolvers/UserViewResolver.js +5 -5
  64. package/dist/resolvers/UserViewResolver.js.map +1 -1
  65. package/dist/rest/ViewOperationsHandler.js +1 -1
  66. package/dist/rest/ViewOperationsHandler.js.map +1 -1
  67. package/dist/services/TaskOrchestrator.d.ts +1 -1
  68. package/dist/services/TaskOrchestrator.js +5 -5
  69. package/dist/services/TaskOrchestrator.js.map +1 -1
  70. package/package.json +52 -52
  71. package/src/agents/skip-agent.ts +9 -9
  72. package/src/auth/APIKeyScopeAuth.ts +5 -5
  73. package/src/auth/exampleNewUserSubClass.ts +2 -2
  74. package/src/auth/index.ts +3 -3
  75. package/src/auth/newUsers.ts +9 -9
  76. package/src/entitySubclasses/entityPermissions.server.ts +3 -3
  77. package/src/generated/generated.ts +30419 -29682
  78. package/src/generic/DeleteOptionsInput.ts +12 -2
  79. package/src/generic/ResolverBase.ts +7 -7
  80. package/src/generic/RunViewResolver.ts +3 -3
  81. package/src/resolvers/APIKeyResolver.ts +2 -2
  82. package/src/resolvers/ComponentRegistryResolver.ts +9 -9
  83. package/src/resolvers/CreateQueryResolver.ts +18 -18
  84. package/src/resolvers/EntityResolver.ts +1 -1
  85. package/src/resolvers/FileCategoryResolver.ts +5 -5
  86. package/src/resolvers/FileResolver.ts +27 -27
  87. package/src/resolvers/GetDataContextDataResolver.ts +2 -2
  88. package/src/resolvers/ISAEntityResolver.ts +77 -1
  89. package/src/resolvers/ReportResolver.ts +4 -4
  90. package/src/resolvers/RunAIAgentResolver.ts +7 -7
  91. package/src/resolvers/RunAIPromptResolver.ts +1 -1
  92. package/src/resolvers/RunTemplateResolver.ts +4 -4
  93. package/src/resolvers/SyncDataResolver.ts +3 -3
  94. package/src/resolvers/SyncRolesUsersResolver.ts +26 -26
  95. package/src/resolvers/UserFavoriteResolver.ts +2 -2
  96. package/src/resolvers/UserResolver.ts +8 -8
  97. package/src/resolvers/UserViewResolver.ts +6 -6
  98. package/src/rest/ViewOperationsHandler.ts +1 -1
  99. package/src/services/TaskOrchestrator.ts +31 -31
@@ -1,5 +1,5 @@
1
1
  import { Metadata, RunView, UserInfo, LogError, LogStatus } from '@memberjunction/core';
2
- import { TaskEntity, TaskDependencyEntity, TaskTypeEntity, ConversationDetailEntity, ArtifactEntity, ArtifactVersionEntity, ConversationDetailArtifactEntity, UserNotificationEntity } from '@memberjunction/core-entities';
2
+ import { MJTaskEntity, MJTaskDependencyEntity, MJTaskTypeEntity, MJConversationDetailEntity, MJArtifactEntity, MJArtifactVersionEntity, MJConversationDetailArtifactEntity, MJUserNotificationEntity } from '@memberjunction/core-entities';
3
3
  import { AgentRunner } from '@memberjunction/ai-agents';
4
4
  import { ChatMessageRole } from '@memberjunction/ai';
5
5
  import { PubSubEngine } from 'type-graphql';
@@ -78,7 +78,7 @@ export class TaskOrchestrator {
78
78
 
79
79
  // Create the task type if it doesn't exist
80
80
  const md = new Metadata();
81
- const taskType = await md.GetEntityObject<TaskTypeEntity>('MJ: Task Types', this.contextUser);
81
+ const taskType = await md.GetEntityObject<MJTaskTypeEntity>('MJ: Task Types', this.contextUser);
82
82
  taskType.Name = 'AI Agent Execution';
83
83
  taskType.Description = 'Task executed by an AI agent as part of conversation workflow';
84
84
 
@@ -96,7 +96,7 @@ export class TaskOrchestrator {
96
96
  * @param taskGraph Task graph from Conversation Manager
97
97
  * @param conversationDetailId ID of the conversation detail that triggered this
98
98
  * @param environmentId Environment ID
99
- * @returns Object with parentTaskId and map of tempId -> actual TaskEntity ID
99
+ * @returns Object with parentTaskId and map of tempId -> actual MJTaskEntity ID
100
100
  */
101
101
  async createTasksFromGraph(
102
102
  taskGraph: TaskGraphResponse,
@@ -108,7 +108,7 @@ export class TaskOrchestrator {
108
108
  const tempIdToRealId = new Map<string, string>();
109
109
 
110
110
  // Create parent workflow task
111
- const parentTask = await md.GetEntityObject<TaskEntity>('MJ: Tasks', this.contextUser);
111
+ const parentTask = await md.GetEntityObject<MJTaskEntity>('MJ: Tasks', this.contextUser);
112
112
  parentTask.Name = taskGraph.workflowName;
113
113
  parentTask.Description = taskGraph.reasoning || 'AI-orchestrated workflow';
114
114
  parentTask.TypeID = taskTypeId;
@@ -139,7 +139,7 @@ export class TaskOrchestrator {
139
139
 
140
140
  // Create all child tasks
141
141
  for (const taskDef of uniqueTasks) {
142
- const task = await md.GetEntityObject<TaskEntity>('MJ: Tasks', this.contextUser);
142
+ const task = await md.GetEntityObject<MJTaskEntity>('MJ: Tasks', this.contextUser);
143
143
 
144
144
  // Find agent by name
145
145
  const agent = await this.findAgentByName(taskDef.agentName);
@@ -187,7 +187,7 @@ export class TaskOrchestrator {
187
187
  continue;
188
188
  }
189
189
 
190
- const dependency = await md.GetEntityObject<TaskDependencyEntity>('MJ: Task Dependencies', this.contextUser);
190
+ const dependency = await md.GetEntityObject<MJTaskDependencyEntity>('MJ: Task Dependencies', this.contextUser);
191
191
  dependency.TaskID = taskId;
192
192
  dependency.DependsOnTaskID = dependsOnId;
193
193
  dependency.DependencyType = 'Prerequisite';
@@ -271,7 +271,7 @@ export class TaskOrchestrator {
271
271
  private async findAgentByName(agentName: string): Promise<AIAgentEntityExtended | null> {
272
272
  const rv = new RunView();
273
273
  const result = await rv.RunView<AIAgentEntityExtended>({
274
- EntityName: 'AI Agents',
274
+ EntityName: 'MJ: AI Agents',
275
275
  ExtraFilter: `Name='${agentName.replace(/'/g, "''")}'`,
276
276
  ResultType: 'entity_object'
277
277
  }, this.contextUser);
@@ -294,7 +294,7 @@ export class TaskOrchestrator {
294
294
 
295
295
  // Get parent task for progress updates
296
296
  const md = new Metadata();
297
- const parentTask = await md.GetEntityObject<TaskEntity>('MJ: Tasks', this.contextUser);
297
+ const parentTask = await md.GetEntityObject<MJTaskEntity>('MJ: Tasks', this.contextUser);
298
298
  await parentTask.Load(parentTaskId);
299
299
 
300
300
  // Publish workflow start
@@ -341,11 +341,11 @@ export class TaskOrchestrator {
341
341
  /**
342
342
  * Find tasks that are ready to execute (pending with no incomplete dependencies)
343
343
  */
344
- private async findEligibleTasks(parentTaskId: string): Promise<TaskEntity[]> {
344
+ private async findEligibleTasks(parentTaskId: string): Promise<MJTaskEntity[]> {
345
345
  const rv = new RunView();
346
346
 
347
347
  // Get all pending tasks for this parent
348
- const tasksResult = await rv.RunView<TaskEntity>({
348
+ const tasksResult = await rv.RunView<MJTaskEntity>({
349
349
  EntityName: 'MJ: Tasks',
350
350
  ExtraFilter: `ParentID='${parentTaskId}' AND Status='Pending'`,
351
351
  ResultType: 'entity_object'
@@ -355,7 +355,7 @@ export class TaskOrchestrator {
355
355
  return [];
356
356
  }
357
357
 
358
- const eligibleTasks: TaskEntity[] = [];
358
+ const eligibleTasks: MJTaskEntity[] = [];
359
359
 
360
360
  // Check each task for incomplete dependencies
361
361
  for (const task of tasksResult.Results) {
@@ -373,14 +373,14 @@ export class TaskOrchestrator {
373
373
  */
374
374
  private async updateParentTaskProgress(parentTaskId: string): Promise<void> {
375
375
  const md = new Metadata();
376
- const parentTask = await md.GetEntityObject<TaskEntity>('MJ: Tasks', this.contextUser);
376
+ const parentTask = await md.GetEntityObject<MJTaskEntity>('MJ: Tasks', this.contextUser);
377
377
  const loaded = await parentTask.Load(parentTaskId);
378
378
  if (!loaded) return;
379
379
 
380
380
  const rv = new RunView();
381
381
 
382
382
  // Get all child tasks
383
- const childrenResult = await rv.RunView<TaskEntity>({
383
+ const childrenResult = await rv.RunView<MJTaskEntity>({
384
384
  EntityName: 'MJ: Tasks',
385
385
  ExtraFilter: `ParentID='${parentTaskId}'`,
386
386
  ResultType: 'entity_object'
@@ -406,7 +406,7 @@ export class TaskOrchestrator {
406
406
  */
407
407
  private async completeParentTask(parentTaskId: string): Promise<void> {
408
408
  const md = new Metadata();
409
- const parentTask = await md.GetEntityObject<TaskEntity>('MJ: Tasks', this.contextUser);
409
+ const parentTask = await md.GetEntityObject<MJTaskEntity>('MJ: Tasks', this.contextUser);
410
410
  const loaded = await parentTask.Load(parentTaskId);
411
411
  if (!loaded) return;
412
412
 
@@ -430,7 +430,7 @@ export class TaskOrchestrator {
430
430
  const rv = new RunView();
431
431
 
432
432
  // Get dependencies
433
- const depsResult = await rv.RunView<TaskDependencyEntity>({
433
+ const depsResult = await rv.RunView<MJTaskDependencyEntity>({
434
434
  EntityName: 'MJ: Task Dependencies',
435
435
  ExtraFilter: `TaskID='${taskId}'`,
436
436
  ResultType: 'entity_object'
@@ -454,9 +454,9 @@ export class TaskOrchestrator {
454
454
  /**
455
455
  * Load a task by ID
456
456
  */
457
- private async loadTask(taskId: string): Promise<TaskEntity | null> {
457
+ private async loadTask(taskId: string): Promise<MJTaskEntity | null> {
458
458
  const md = new Metadata();
459
- const task = await md.GetEntityObject<TaskEntity>('MJ: Tasks', this.contextUser);
459
+ const task = await md.GetEntityObject<MJTaskEntity>('MJ: Tasks', this.contextUser);
460
460
  const loaded = await task.Load(taskId);
461
461
  return loaded ? task : null;
462
462
  }
@@ -464,7 +464,7 @@ export class TaskOrchestrator {
464
464
  /**
465
465
  * Execute a single task
466
466
  */
467
- private async executeTask(task: TaskEntity): Promise<TaskExecutionResult> {
467
+ private async executeTask(task: MJTaskEntity): Promise<TaskExecutionResult> {
468
468
  try {
469
469
  LogStatus(`Executing task: ${task.Name} (${task.ID})`);
470
470
 
@@ -475,7 +475,7 @@ export class TaskOrchestrator {
475
475
 
476
476
  // Load the agent entity
477
477
  const md = new Metadata();
478
- const agentEntity = await md.GetEntityObject<AIAgentEntityExtended>('AI Agents', this.contextUser);
478
+ const agentEntity = await md.GetEntityObject<AIAgentEntityExtended>('MJ: AI Agents', this.contextUser);
479
479
  const loaded = await agentEntity.Load(task.AgentID!);
480
480
  if (!loaded) {
481
481
  throw new Error(`Agent with ID ${task.AgentID} not found`);
@@ -582,7 +582,7 @@ export class TaskOrchestrator {
582
582
  /**
583
583
  * Extract input payload from task metadata
584
584
  */
585
- private extractInputPayload(task: TaskEntity): any | null {
585
+ private extractInputPayload(task: MJTaskEntity): any | null {
586
586
  if (!task.Description) return null;
587
587
 
588
588
  const metadataMatch = task.Description.match(/__TASK_METADATA__\n(.+?)(?:\n\n|$)/s);
@@ -604,7 +604,7 @@ export class TaskOrchestrator {
604
604
  const rv = new RunView();
605
605
 
606
606
  // Get dependencies
607
- const depsResult = await rv.RunView<TaskDependencyEntity>({
607
+ const depsResult = await rv.RunView<MJTaskDependencyEntity>({
608
608
  EntityName: 'MJ: Task Dependencies',
609
609
  ExtraFilter: `TaskID='${taskId}'`,
610
610
  ResultType: 'entity_object'
@@ -636,7 +636,7 @@ export class TaskOrchestrator {
636
636
  /**
637
637
  * Build conversation messages with task input and dependent outputs formatted as markdown
638
638
  */
639
- private async buildConversationMessages(task: TaskEntity): Promise<any[]> {
639
+ private async buildConversationMessages(task: MJTaskEntity): Promise<any[]> {
640
640
  const messages: any[] = [];
641
641
 
642
642
  // Start with task description/name as base content
@@ -702,7 +702,7 @@ export class TaskOrchestrator {
702
702
  const md = new Metadata();
703
703
 
704
704
  // Create Artifact header
705
- const artifact = await md.GetEntityObject<ArtifactEntity>('MJ: Artifacts', this.contextUser);
705
+ const artifact = await md.GetEntityObject<MJArtifactEntity>('MJ: Artifacts', this.contextUser);
706
706
  artifact.Name = `${agent.Name} - ${taskName} - ${new Date().toLocaleString()}`;
707
707
  artifact.Description = `Artifact generated by ${agent.Name} for task: ${taskName} (${output.type})`;
708
708
 
@@ -732,7 +732,7 @@ export class TaskOrchestrator {
732
732
  LogStatus(`Created artifact: ${artifact.Name} (${artifact.ID})`);
733
733
 
734
734
  // Create Artifact Version with content
735
- const version = await md.GetEntityObject<ArtifactVersionEntity>('MJ: Artifact Versions', this.contextUser);
735
+ const version = await md.GetEntityObject<MJArtifactVersionEntity>('MJ: Artifact Versions', this.contextUser);
736
736
  version.ArtifactID = artifact.ID;
737
737
  version.VersionNumber = 1;
738
738
 
@@ -771,7 +771,7 @@ export class TaskOrchestrator {
771
771
  }
772
772
 
773
773
  // Create M2M relationship linking artifact to conversation detail
774
- const junction = await md.GetEntityObject<ConversationDetailArtifactEntity>(
774
+ const junction = await md.GetEntityObject<MJConversationDetailArtifactEntity>(
775
775
  'MJ: Conversation Detail Artifacts',
776
776
  this.contextUser
777
777
  );
@@ -795,7 +795,7 @@ export class TaskOrchestrator {
795
795
  * Create user notification for task graph completion
796
796
  * Notifies user that their multi-step workflow has completed
797
797
  */
798
- private async createTaskGraphCompletionNotification(parentTask: TaskEntity): Promise<void> {
798
+ private async createTaskGraphCompletionNotification(parentTask: MJTaskEntity): Promise<void> {
799
799
  try {
800
800
  if (!parentTask.ConversationDetailID) {
801
801
  LogStatus('Skipping notification - no conversation detail linked');
@@ -805,8 +805,8 @@ export class TaskOrchestrator {
805
805
  const md = new Metadata();
806
806
 
807
807
  // Load conversation detail to get conversation ID
808
- const detail = await md.GetEntityObject<ConversationDetailEntity>(
809
- 'Conversation Details',
808
+ const detail = await md.GetEntityObject<MJConversationDetailEntity>(
809
+ 'MJ: Conversation Details',
810
810
  this.contextUser
811
811
  );
812
812
  if (!(await detail.Load(parentTask.ConversationDetailID))) {
@@ -815,7 +815,7 @@ export class TaskOrchestrator {
815
815
 
816
816
  // Count child tasks and success rate
817
817
  const rv = new RunView();
818
- const tasksResult = await rv.RunView<TaskEntity>({
818
+ const tasksResult = await rv.RunView<MJTaskEntity>({
819
819
  EntityName: 'MJ: Tasks',
820
820
  ExtraFilter: `ParentID='${parentTask.ID}'`,
821
821
  ResultType: 'entity_object'
@@ -826,8 +826,8 @@ export class TaskOrchestrator {
826
826
  const totalCount = childTasks.length;
827
827
 
828
828
  // Create notification
829
- const notification = await md.GetEntityObject<UserNotificationEntity>(
830
- 'User Notifications',
829
+ const notification = await md.GetEntityObject<MJUserNotificationEntity>(
830
+ 'MJ: User Notifications',
831
831
  this.contextUser
832
832
  );
833
833