@memberjunction/server 3.3.0 → 3.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.
Files changed (103) hide show
  1. package/README.md +59 -0
  2. package/dist/auth/BaseAuthProvider.d.ts +1 -0
  3. package/dist/auth/BaseAuthProvider.d.ts.map +1 -1
  4. package/dist/auth/BaseAuthProvider.js +2 -0
  5. package/dist/auth/BaseAuthProvider.js.map +1 -1
  6. package/dist/auth/IAuthProvider.d.ts +1 -0
  7. package/dist/auth/IAuthProvider.d.ts.map +1 -1
  8. package/dist/config.js +2 -2
  9. package/dist/config.js.map +1 -1
  10. package/dist/generated/generated.d.ts +431 -2
  11. package/dist/generated/generated.d.ts.map +1 -1
  12. package/dist/generated/generated.js +3052 -379
  13. package/dist/generated/generated.js.map +1 -1
  14. package/dist/generic/ResolverBase.d.ts +1 -0
  15. package/dist/generic/ResolverBase.d.ts.map +1 -1
  16. package/dist/generic/ResolverBase.js +30 -0
  17. package/dist/generic/ResolverBase.js.map +1 -1
  18. package/dist/index.d.ts +2 -2
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +2 -2
  21. package/dist/index.js.map +1 -1
  22. package/dist/resolvers/APIKeyResolver.d.ts +2 -1
  23. package/dist/resolvers/APIKeyResolver.d.ts.map +1 -1
  24. package/dist/resolvers/APIKeyResolver.js +4 -1
  25. package/dist/resolvers/APIKeyResolver.js.map +1 -1
  26. package/dist/resolvers/ActionResolver.d.ts +2 -1
  27. package/dist/resolvers/ActionResolver.d.ts.map +1 -1
  28. package/dist/resolvers/ActionResolver.js +4 -1
  29. package/dist/resolvers/ActionResolver.js.map +1 -1
  30. package/dist/resolvers/DatasetResolver.d.ts +5 -4
  31. package/dist/resolvers/DatasetResolver.d.ts.map +1 -1
  32. package/dist/resolvers/DatasetResolver.js +7 -4
  33. package/dist/resolvers/DatasetResolver.js.map +1 -1
  34. package/dist/resolvers/EntityCommunicationsResolver.d.ts +2 -1
  35. package/dist/resolvers/EntityCommunicationsResolver.d.ts.map +1 -1
  36. package/dist/resolvers/EntityCommunicationsResolver.js +3 -1
  37. package/dist/resolvers/EntityCommunicationsResolver.js.map +1 -1
  38. package/dist/resolvers/GetDataContextDataResolver.d.ts +2 -1
  39. package/dist/resolvers/GetDataContextDataResolver.d.ts.map +1 -1
  40. package/dist/resolvers/GetDataContextDataResolver.js +10 -3
  41. package/dist/resolvers/GetDataContextDataResolver.js.map +1 -1
  42. package/dist/resolvers/MCPResolver.d.ts +37 -0
  43. package/dist/resolvers/MCPResolver.d.ts.map +1 -0
  44. package/dist/resolvers/MCPResolver.js +363 -0
  45. package/dist/resolvers/MCPResolver.js.map +1 -0
  46. package/dist/resolvers/MergeRecordsResolver.d.ts +2 -1
  47. package/dist/resolvers/MergeRecordsResolver.d.ts.map +1 -1
  48. package/dist/resolvers/MergeRecordsResolver.js +3 -1
  49. package/dist/resolvers/MergeRecordsResolver.js.map +1 -1
  50. package/dist/resolvers/QueryResolver.d.ts +2 -1
  51. package/dist/resolvers/QueryResolver.d.ts.map +1 -1
  52. package/dist/resolvers/QueryResolver.js +6 -1
  53. package/dist/resolvers/QueryResolver.js.map +1 -1
  54. package/dist/resolvers/ReportResolver.d.ts +2 -1
  55. package/dist/resolvers/ReportResolver.d.ts.map +1 -1
  56. package/dist/resolvers/ReportResolver.js +4 -1
  57. package/dist/resolvers/ReportResolver.js.map +1 -1
  58. package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
  59. package/dist/resolvers/RunAIAgentResolver.js +2 -0
  60. package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
  61. package/dist/resolvers/RunAIPromptResolver.d.ts.map +1 -1
  62. package/dist/resolvers/RunAIPromptResolver.js +3 -0
  63. package/dist/resolvers/RunAIPromptResolver.js.map +1 -1
  64. package/dist/resolvers/RunTemplateResolver.d.ts.map +1 -1
  65. package/dist/resolvers/RunTemplateResolver.js +1 -0
  66. package/dist/resolvers/RunTemplateResolver.js.map +1 -1
  67. package/dist/resolvers/TaskResolver.d.ts.map +1 -1
  68. package/dist/resolvers/TaskResolver.js +1 -0
  69. package/dist/resolvers/TaskResolver.js.map +1 -1
  70. package/dist/resolvers/UserResolver.d.ts.map +1 -1
  71. package/dist/resolvers/UserResolver.js +4 -0
  72. package/dist/resolvers/UserResolver.js.map +1 -1
  73. package/package.json +47 -46
  74. package/src/auth/BaseAuthProvider.ts +3 -0
  75. package/src/auth/IAuthProvider.ts +5 -0
  76. package/src/config.ts +2 -2
  77. package/src/generated/generated.ts +2020 -334
  78. package/src/generic/ResolverBase.ts +89 -3
  79. package/src/index.ts +10 -2
  80. package/src/resolvers/APIKeyResolver.ts +8 -1
  81. package/src/resolvers/ActionResolver.ts +8 -1
  82. package/src/resolvers/DatasetResolver.ts +11 -4
  83. package/src/resolvers/EntityCommunicationsResolver.ts +5 -1
  84. package/src/resolvers/GetDataContextDataResolver.ts +14 -6
  85. package/src/resolvers/MCPResolver.ts +480 -0
  86. package/src/resolvers/MergeRecordsResolver.ts +5 -1
  87. package/src/resolvers/QueryResolver.ts +17 -3
  88. package/src/resolvers/ReportResolver.ts +8 -1
  89. package/src/resolvers/RunAIAgentResolver.ts +6 -0
  90. package/src/resolvers/RunAIPromptResolver.ts +10 -1
  91. package/src/resolvers/RunTemplateResolver.ts +4 -1
  92. package/src/resolvers/TaskResolver.ts +3 -0
  93. package/src/resolvers/UserResolver.ts +15 -3
  94. package/dist/resolvers/AskSkipResolver.d.ts +0 -123
  95. package/dist/resolvers/AskSkipResolver.d.ts.map +0 -1
  96. package/dist/resolvers/AskSkipResolver.js +0 -1788
  97. package/dist/resolvers/AskSkipResolver.js.map +0 -1
  98. package/dist/scheduler/LearningCycleScheduler.d.ts +0 -4
  99. package/dist/scheduler/LearningCycleScheduler.d.ts.map +0 -1
  100. package/dist/scheduler/LearningCycleScheduler.js +0 -4
  101. package/dist/scheduler/LearningCycleScheduler.js.map +0 -1
  102. package/src/resolvers/AskSkipResolver.ts +0 -3446
  103. package/src/scheduler/LearningCycleScheduler.ts +0 -320
@@ -56,6 +56,9 @@ export class TaskOrchestrationResolver extends ResolverBase {
56
56
  @Ctx() { userPayload }: AppContext,
57
57
  @Arg('createNotifications', { nullable: true }) createNotifications?: boolean
58
58
  ): Promise<ExecuteTaskGraphResult> {
59
+ // Check API key scope authorization for task execution
60
+ await this.CheckAPIKeyScopeAuthorization('task:execute', '*', userPayload);
61
+
59
62
  try {
60
63
  LogStatus(`=== EXECUTING TASK GRAPH FOR CONVERSATION: ${conversationDetailId} ===`);
61
64
 
@@ -6,6 +6,9 @@ import { GetReadOnlyProvider } from '../util.js';
6
6
  export class UserResolver extends MJUserResolverBase {
7
7
  @Query(() => MJUser_)
8
8
  async CurrentUser(@Ctx() context: AppContext) {
9
+ // Check API key scope authorization for user read (self)
10
+ await this.CheckAPIKeyScopeAuthorization('user:read', '*', context.userPayload);
11
+
9
12
  // If userRecord is already available (e.g., from API key auth or system auth),
10
13
  // use it directly instead of looking up by email again
11
14
  if (context.userPayload.userRecord) {
@@ -49,23 +52,32 @@ export class UserResolver extends MJUserResolverBase {
49
52
 
50
53
  @Query(() => MJUser_)
51
54
  async UserByID(@Arg('ID', () => Int) ID: number, @Ctx() { providers, userPayload }: AppContext) {
52
- const provider = GetReadOnlyProvider(providers, {allowFallbackToReadWrite: true})
55
+ // Check API key scope authorization for user read
56
+ await this.CheckAPIKeyScopeAuthorization('user:read', ID.toString(), userPayload);
57
+
58
+ const provider = GetReadOnlyProvider(providers, {allowFallbackToReadWrite: true})
53
59
  const retVal = super.safeFirstArrayElement(await this.findBy(provider, 'Users', { ID }, userPayload.userRecord));
54
60
  return this.MapFieldNamesToCodeNames('Users', retVal);
55
61
  }
56
62
 
57
63
  @Query(() => MJUser_)
58
64
  async UserByEmployeeID(@Arg('EmployeeID', () => Int) EmployeeID: number, @Ctx() { providers, userPayload }: AppContext) {
59
- const provider = GetReadOnlyProvider(providers, {allowFallbackToReadWrite: true})
65
+ // Check API key scope authorization for user read
66
+ await this.CheckAPIKeyScopeAuthorization('user:read', EmployeeID.toString(), userPayload);
67
+
68
+ const provider = GetReadOnlyProvider(providers, {allowFallbackToReadWrite: true})
60
69
  const retVal = super.safeFirstArrayElement(await this.findBy(provider, 'Users', { EmployeeID }, userPayload.userRecord));
61
70
  return this.MapFieldNamesToCodeNames('Users', retVal);
62
71
  }
63
72
 
64
73
  @Query(() => MJUser_)
65
74
  async UserByEmail(@Arg('Email', () => String) Email: string, @Ctx() { providers, userPayload }: AppContext) {
75
+ // Check API key scope authorization for user read
76
+ await this.CheckAPIKeyScopeAuthorization('user:read', Email, userPayload);
77
+
66
78
  // const searchEmail = userEmailMap[Email] ?? Email;
67
79
  const searchEmail = Email;
68
- const provider = GetReadOnlyProvider(providers, {allowFallbackToReadWrite: true})
80
+ const provider = GetReadOnlyProvider(providers, {allowFallbackToReadWrite: true})
69
81
  const returnVal = super.safeFirstArrayElement(await this.findBy(provider, 'Users', { Email: searchEmail }, userPayload.userRecord));
70
82
  return this.MapFieldNamesToCodeNames('Users', returnVal);
71
83
  }
@@ -1,123 +0,0 @@
1
- import { PubSubEngine } from 'type-graphql';
2
- import { Metadata, UserInfo, EntityFieldInfo, EntityInfo, EntityRelationshipInfo } from '@memberjunction/core';
3
- import { AppContext, UserPayload } from '../types.js';
4
- import { DataContext } from '@memberjunction/data-context';
5
- import { SkipAPIRequest, SkipAPIResponse, SkipMessage, SkipAPIAnalysisCompleteResponse, SkipAPIDataRequestResponse, SkipAPIClarifyingQuestionResponse, SkipEntityInfo, SkipQueryInfo, SkipAPIRequestAPIKey, SkipRequestPhase, SkipAPIAgentNote, SkipAPIAgentNoteType, SkipEntityFieldInfo, SkipEntityRelationshipInfo, SkipEntityFieldValueInfo, SkipAPILearningCycleRequest, SkipConversation, SkipAPIArtifact, SkipAPIAgentRequest } from '@memberjunction/skip-types';
6
- import { ConversationDetailEntity, ConversationEntity, DataContextEntity } from '@memberjunction/core-entities';
7
- import mssql from 'mssql';
8
- import { CompositeKeyInputType } from '../generic/KeyInputOutputTypes.js';
9
- import { GetDataAccessToken } from './GetDataResolver.js';
10
- declare class ReattachConversationResponse {
11
- lastStatusMessage?: string;
12
- startTime?: Date;
13
- }
14
- declare enum SkipResponsePhase {
15
- ClarifyingQuestion = "clarifying_question",
16
- DataRequest = "data_request",
17
- AnalysisComplete = "analysis_complete"
18
- }
19
- export declare class AskSkipResultType {
20
- Success: boolean;
21
- Status: string;
22
- ResponsePhase: SkipResponsePhase;
23
- Result: string;
24
- ConversationId: string;
25
- UserMessageConversationDetailId: string;
26
- AIMessageConversationDetailId: string;
27
- }
28
- export declare class ManualLearningCycleResultType {
29
- Success: boolean;
30
- Message: string;
31
- }
32
- export declare class CycleDetailsType {
33
- LearningCycleId: string;
34
- StartTime: string;
35
- RunningForMinutes: number;
36
- }
37
- export declare class RunningOrganizationType {
38
- OrganizationId: string;
39
- LearningCycleId: string;
40
- StartTime: string;
41
- RunningForMinutes: number;
42
- }
43
- export declare class LearningCycleStatusType {
44
- IsSchedulerRunning: boolean;
45
- LastRunTime: string;
46
- RunningOrganizations: RunningOrganizationType[];
47
- }
48
- export declare class StopLearningCycleResultType {
49
- Success: boolean;
50
- Message: string;
51
- WasRunning: boolean;
52
- CycleDetails: CycleDetailsType;
53
- }
54
- type BaseSkipRequest = {
55
- entities: SkipEntityInfo[];
56
- queries: SkipQueryInfo[];
57
- notes: SkipAPIAgentNote[];
58
- noteTypes: SkipAPIAgentNoteType[];
59
- requests: SkipAPIAgentRequest[];
60
- accessToken: GetDataAccessToken;
61
- organizationID: string;
62
- organizationInfo: any;
63
- apiKeys: SkipAPIRequestAPIKey[];
64
- callingServerURL: string;
65
- callingServerAPIKey: string;
66
- callingServerAccessToken: string;
67
- userEmail: string;
68
- };
69
- export declare class AskSkipResolver {
70
- private static _defaultNewChatName;
71
- private static _maxHistoricalMessages;
72
- ExecuteAskSkipRecordChat(UserQuestion: string, ConversationId: string, EntityName: string, compositeKey: CompositeKeyInputType, { dataSource, userPayload, providers }: AppContext, pubSub: PubSubEngine): Promise<AskSkipResultType>;
73
- protected handleSimpleSkipChatPostRequest(input: SkipAPIRequest, convoEntity?: ConversationEntity, convoDetailEntity?: ConversationDetailEntity, createAIMessageConversationDetail?: boolean, user?: UserInfo, userPayload?: UserPayload): Promise<AskSkipResultType>;
74
- protected CreateAIMessageConversationDetail(apiResponse: SkipAPIResponse, conversationID: string, user: UserInfo, userPayload: UserPayload): Promise<string>;
75
- protected buildBaseSkipRequest(contextUser: UserInfo, dataSource: mssql.ConnectionPool, includeEntities: boolean, includeQueries: boolean, includeNotes: boolean, filterUserNotesToContextUser: boolean, includeRequests: boolean, forceEntitiesRefresh?: boolean, includeCallBackKeyAndAccessToken?: boolean, additionalTokenInfo?: any): Promise<BaseSkipRequest>;
76
- protected buildSkipLearningAPIRequest(learningCycleId: string, lastLearningCycleDate: Date, includeEntities: boolean, includeQueries: boolean, includeNotes: boolean, includeRequests: boolean, dataSource: mssql.ConnectionPool, contextUser: UserInfo, forceEntitiesRefresh?: boolean, includeCallBackKeyAndAccessToken?: boolean): Promise<SkipAPILearningCycleRequest>;
77
- protected BuildSkipLearningCycleNewConversations(lastLearningCycleDate: Date, dataSource: mssql.ConnectionPool, contextUser: UserInfo): Promise<SkipConversation[]>;
78
- protected BuildSkipRequests(contextUser: UserInfo): Promise<SkipAPIAgentRequest[]>;
79
- protected GetLastCompleteLearningCycleDate(agentID: string, user: UserInfo): Promise<Date>;
80
- protected buildSkipChatAPIRequest(messages: SkipMessage[], conversationId: string, dataContext: DataContext, requestPhase: SkipRequestPhase, includeEntities: boolean, includeQueries: boolean, includeNotes: boolean, includeRequests: boolean, contextUser: UserInfo, dataSource: mssql.ConnectionPool, forceEntitiesRefresh?: boolean, includeCallBackKeyAndAccessToken?: boolean): Promise<SkipAPIRequest>;
81
- protected buildSkipAPIArtifacts(contextUser: UserInfo, dataSource: mssql.ConnectionPool, conversationId: string): Promise<SkipAPIArtifact[]>;
82
- ExecuteAskSkipRunScript({ dataSource, userPayload }: AppContext, pubSub: PubSubEngine, DataContextId: string, ScriptText: string): Promise<AskSkipResultType>;
83
- protected buildSkipAPIKeys(): SkipAPIRequestAPIKey[];
84
- ReattachToProcessingConversation(ConversationId: string, { userPayload, providers }: AppContext, pubSub: PubSubEngine): Promise<ReattachConversationResponse | null>;
85
- ExecuteAskSkipAnalysisQuery(UserQuestion: string, ConversationId: string, { dataSource, userPayload, providers }: AppContext, pubSub: PubSubEngine, DataContextId?: string, ForceEntityRefresh?: boolean, StartTime?: Date): Promise<AskSkipResultType>;
86
- protected buildQueryCategoryPath(md: Metadata, categoryID: string): string;
87
- protected BuildSkipQueries(status?: "Pending" | "In-Review" | "Approved" | "Rejected" | "Obsolete"): SkipQueryInfo[];
88
- protected PackEntityRows(e: EntityInfo, dataSource: mssql.ConnectionPool): Promise<any[]>;
89
- protected PackFieldPossibleValues(f: EntityFieldInfo, dataSource: mssql.ConnectionPool): Promise<SkipEntityFieldValueInfo[]>;
90
- protected GetFieldDistinctValues(f: EntityFieldInfo, dataSource: mssql.ConnectionPool): Promise<SkipEntityFieldValueInfo[]>;
91
- private static __skipEntitiesCache$;
92
- private static __lastRefreshTime;
93
- private static __refreshInProgress;
94
- private refreshSkipEntities;
95
- BuildSkipEntities(dataSource: mssql.ConnectionPool, forceRefresh?: boolean, refreshIntervalMinutes?: number): Promise<SkipEntityInfo[]>;
96
- protected PackSingleSkipEntityInfo(e: EntityInfo, dataSource: mssql.ConnectionPool): Promise<SkipEntityInfo>;
97
- protected PackSingleSkipEntityRelationship(r: EntityRelationshipInfo): SkipEntityRelationshipInfo;
98
- protected PackSingleSkipEntityField(f: EntityFieldInfo, dataSource: mssql.ConnectionPool): Promise<SkipEntityFieldInfo>;
99
- protected HandleSkipChatInitialObjectLoading(dataSource: mssql.ConnectionPool, ConversationId: string, UserQuestion: string, user: UserInfo, userPayload: UserPayload, md: Metadata, DataContextId: string): Promise<{
100
- convoEntity: ConversationEntity;
101
- dataContextEntity: DataContextEntity;
102
- convoDetailEntity: ConversationDetailEntity;
103
- dataContext: DataContext;
104
- }>;
105
- protected LoadConversationDetailsIntoSkipMessages(dataSource: mssql.ConnectionPool, ConversationId: string, maxHistoricalMessages?: number, roleFilter?: string): Promise<SkipMessage[]>;
106
- protected MapDBRoleToSkipRole(role: string): 'user' | 'system';
107
- protected HandleSkipChatRequest(input: SkipAPIRequest, UserQuestion: string, user: UserInfo, dataSource: mssql.ConnectionPool, ConversationId: string, userPayload: UserPayload, pubSub: PubSubEngine, md: Metadata, convoEntity: ConversationEntity, convoDetailEntity: ConversationDetailEntity, dataContext: DataContext, dataContextEntity: DataContextEntity, conversationDetailCount: number, startTime: Date): Promise<AskSkipResultType>;
108
- protected buildSkipPostHeaders(): {
109
- [key: string]: string;
110
- };
111
- protected PublishApiResponseUserUpdateMessage(apiResponse: SkipAPIResponse, userPayload: UserPayload, conversationID: string, pubSub: PubSubEngine): Promise<void>;
112
- protected HandleAnalysisComplete(apiRequest: SkipAPIRequest, apiResponse: SkipAPIAnalysisCompleteResponse, UserQuestion: string, user: UserInfo, dataSource: mssql.ConnectionPool, ConversationId: string, userPayload: UserPayload, pubSub: PubSubEngine, convoEntity: ConversationEntity, convoDetailEntity: ConversationDetailEntity, dataContext: DataContext, dataContextEntity: DataContextEntity, startTime: Date): Promise<AskSkipResultType>;
113
- protected HandleClarifyingQuestionPhase(apiRequest: SkipAPIRequest, apiResponse: SkipAPIClarifyingQuestionResponse, UserQuestion: string, user: UserInfo, dataSource: mssql.ConnectionPool, ConversationId: string, userPayload: UserPayload, pubSub: PubSubEngine, convoEntity: ConversationEntity, convoDetailEntity: ConversationDetailEntity, startTime: Date): Promise<AskSkipResultType>;
114
- protected HandleDataRequestPhase(apiRequest: SkipAPIRequest, apiResponse: SkipAPIDataRequestResponse, UserQuestion: string, user: UserInfo, dataSource: mssql.ConnectionPool, ConversationId: string, userPayload: UserPayload, pubSub: PubSubEngine, convoEntity: ConversationEntity, convoDetailEntity: ConversationDetailEntity, dataContext: DataContext, dataContextEntity: DataContextEntity, conversationDetailCount: number, startTime: Date): Promise<AskSkipResultType>;
115
- protected FinishConversationAndNotifyUser(apiResponse: SkipAPIAnalysisCompleteResponse, dataContext: DataContext, dataContextEntity: DataContextEntity, md: Metadata, user: UserInfo, convoEntity: ConversationEntity, pubSub: PubSubEngine, userPayload: UserPayload, dataSource: mssql.ConnectionPool, startTime: Date): Promise<{
116
- AIMessageConversationDetailID: string;
117
- }>;
118
- private setConversationStatus;
119
- protected getAgentNoteTypeIDByName(name: string, defaultNoteType?: string): string;
120
- protected getViewData(ViewId: string, user: UserInfo): Promise<any>;
121
- }
122
- export default AskSkipResolver;
123
- //# sourceMappingURL=AskSkipResolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AskSkipResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/AskSkipResolver.ts"],"names":[],"mappings":"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"}