@memberjunction/server 2.51.0 → 2.53.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/dist/generated/generated.d.ts +74 -0
- package/dist/generated/generated.d.ts.map +1 -1
- package/dist/generated/generated.js +399 -0
- package/dist/generated/generated.js.map +1 -1
- package/dist/generic/ResolverBase.js +1 -1
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/generic/RunViewResolver.d.ts +28 -0
- package/dist/generic/RunViewResolver.d.ts.map +1 -1
- package/dist/generic/RunViewResolver.js +138 -0
- package/dist/generic/RunViewResolver.js.map +1 -1
- package/dist/resolvers/FileResolver.js +1 -1
- package/dist/resolvers/FileResolver.js.map +1 -1
- package/dist/resolvers/QueryResolver.d.ts +2 -0
- package/dist/resolvers/QueryResolver.d.ts.map +1 -1
- package/dist/resolvers/QueryResolver.js +57 -0
- package/dist/resolvers/QueryResolver.js.map +1 -1
- package/dist/resolvers/RunAIPromptResolver.d.ts +1 -1
- package/dist/resolvers/RunAIPromptResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIPromptResolver.js +53 -3
- package/dist/resolvers/RunAIPromptResolver.js.map +1 -1
- package/package.json +25 -25
- package/src/generated/generated.ts +241 -0
- package/src/generic/ResolverBase.ts +1 -1
- package/src/generic/RunViewResolver.ts +718 -587
- package/src/resolvers/FileResolver.ts +1 -1
- package/src/resolvers/QueryResolver.ts +134 -81
- package/src/resolvers/RunAIPromptResolver.ts +52 -2
|
@@ -72,7 +72,7 @@ export class FileResolver extends FileResolverBase {
|
|
|
72
72
|
|
|
73
73
|
// Save the file record with the updated input
|
|
74
74
|
const mapper = new FieldMapper();
|
|
75
|
-
fileEntity.LoadFromData(mapper.ReverseMapFields({ ...input }));
|
|
75
|
+
await fileEntity.LoadFromData(mapper.ReverseMapFields({ ...input }));
|
|
76
76
|
fileEntity.SetMany(mapper.ReverseMapFields({ ...updatedInput }));
|
|
77
77
|
await fileEntity.Save();
|
|
78
78
|
const File = mapper.MapFields({ ...fileEntity.GetAll() });
|
|
@@ -1,81 +1,134 @@
|
|
|
1
|
-
// Queries are MemberJunction primitive operations that are used to retrieve data from the server from any stored query
|
|
2
|
-
import { RunQuery } from '@memberjunction/core';
|
|
3
|
-
import { Arg, Ctx, Field, Int, ObjectType, Query, Resolver } from 'type-graphql';
|
|
4
|
-
import { AppContext } from '../types.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
@
|
|
36
|
-
@Arg('
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
@
|
|
61
|
-
@Arg('
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
1
|
+
// Queries are MemberJunction primitive operations that are used to retrieve data from the server from any stored query
|
|
2
|
+
import { RunQuery } from '@memberjunction/core';
|
|
3
|
+
import { Arg, Ctx, Field, Int, ObjectType, Query, Resolver } from 'type-graphql';
|
|
4
|
+
import { AppContext } from '../types.js';
|
|
5
|
+
import { RequireSystemUser } from '../directives/RequireSystemUser.js';
|
|
6
|
+
|
|
7
|
+
@ObjectType()
|
|
8
|
+
export class RunQueryResultType {
|
|
9
|
+
@Field()
|
|
10
|
+
QueryID: string;
|
|
11
|
+
|
|
12
|
+
@Field()
|
|
13
|
+
QueryName: string;
|
|
14
|
+
|
|
15
|
+
@Field()
|
|
16
|
+
Success: boolean;
|
|
17
|
+
|
|
18
|
+
@Field()
|
|
19
|
+
Results: string;
|
|
20
|
+
|
|
21
|
+
@Field()
|
|
22
|
+
RowCount: number;
|
|
23
|
+
|
|
24
|
+
@Field()
|
|
25
|
+
ExecutionTime: number;
|
|
26
|
+
|
|
27
|
+
@Field()
|
|
28
|
+
ErrorMessage: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@Resolver(RunQueryResultType)
|
|
32
|
+
export class ReportResolver {
|
|
33
|
+
@Query(() => RunQueryResultType)
|
|
34
|
+
async GetQueryData(@Arg('QueryID', () => String) QueryID: string,
|
|
35
|
+
@Ctx() context: AppContext,
|
|
36
|
+
@Arg('CategoryID', () => String, {nullable: true}) CategoryID?: string,
|
|
37
|
+
@Arg('CategoryName', () => String, {nullable: true}) CategoryName?: string): Promise<RunQueryResultType> {
|
|
38
|
+
const runQuery = new RunQuery();
|
|
39
|
+
const result = await runQuery.RunQuery(
|
|
40
|
+
{
|
|
41
|
+
QueryID: QueryID,
|
|
42
|
+
CategoryID: CategoryID,
|
|
43
|
+
CategoryName: CategoryName
|
|
44
|
+
},
|
|
45
|
+
context.userPayload.userRecord);
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
QueryID: QueryID,
|
|
49
|
+
QueryName: result.QueryName,
|
|
50
|
+
Success: result.Success,
|
|
51
|
+
Results: JSON.stringify(result.Results),
|
|
52
|
+
RowCount: result.RowCount,
|
|
53
|
+
ExecutionTime: result.ExecutionTime,
|
|
54
|
+
ErrorMessage: result.ErrorMessage,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@Query(() => RunQueryResultType)
|
|
59
|
+
async GetQueryDataByName(@Arg('QueryName', () => String) QueryName: string,
|
|
60
|
+
@Ctx() context: AppContext,
|
|
61
|
+
@Arg('CategoryID', () => String, {nullable: true}) CategoryID?: string,
|
|
62
|
+
@Arg('CategoryName', () => String, {nullable: true}) CategoryName?: string): Promise<RunQueryResultType> {
|
|
63
|
+
const runQuery = new RunQuery();
|
|
64
|
+
const result = await runQuery.RunQuery(
|
|
65
|
+
{
|
|
66
|
+
QueryName: QueryName,
|
|
67
|
+
CategoryID: CategoryID,
|
|
68
|
+
CategoryName: CategoryName
|
|
69
|
+
},
|
|
70
|
+
context.userPayload.userRecord);
|
|
71
|
+
|
|
72
|
+
return {
|
|
73
|
+
QueryID: result.QueryID,
|
|
74
|
+
QueryName: QueryName,
|
|
75
|
+
Success: result.Success,
|
|
76
|
+
Results: JSON.stringify(result.Results),
|
|
77
|
+
RowCount: result.RowCount,
|
|
78
|
+
ExecutionTime: result.ExecutionTime,
|
|
79
|
+
ErrorMessage: result.ErrorMessage,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@RequireSystemUser()
|
|
84
|
+
@Query(() => RunQueryResultType)
|
|
85
|
+
async GetQueryDataSystemUser(@Arg('QueryID', () => String) QueryID: string,
|
|
86
|
+
@Ctx() context: AppContext,
|
|
87
|
+
@Arg('CategoryID', () => String, {nullable: true}) CategoryID?: string,
|
|
88
|
+
@Arg('CategoryName', () => String, {nullable: true}) CategoryName?: string): Promise<RunQueryResultType> {
|
|
89
|
+
const runQuery = new RunQuery();
|
|
90
|
+
const result = await runQuery.RunQuery(
|
|
91
|
+
{
|
|
92
|
+
QueryID: QueryID,
|
|
93
|
+
CategoryID: CategoryID,
|
|
94
|
+
CategoryName: CategoryName
|
|
95
|
+
},
|
|
96
|
+
context.userPayload.userRecord);
|
|
97
|
+
|
|
98
|
+
return {
|
|
99
|
+
QueryID: QueryID,
|
|
100
|
+
QueryName: result.QueryName,
|
|
101
|
+
Success: result.Success,
|
|
102
|
+
Results: JSON.stringify(result.Results),
|
|
103
|
+
RowCount: result.RowCount,
|
|
104
|
+
ExecutionTime: result.ExecutionTime,
|
|
105
|
+
ErrorMessage: result.ErrorMessage,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
@RequireSystemUser()
|
|
110
|
+
@Query(() => RunQueryResultType)
|
|
111
|
+
async GetQueryDataByNameSystemUser(@Arg('QueryName', () => String) QueryName: string,
|
|
112
|
+
@Ctx() context: AppContext,
|
|
113
|
+
@Arg('CategoryID', () => String, {nullable: true}) CategoryID?: string,
|
|
114
|
+
@Arg('CategoryName', () => String, {nullable: true}) CategoryName?: string): Promise<RunQueryResultType> {
|
|
115
|
+
const runQuery = new RunQuery();
|
|
116
|
+
const result = await runQuery.RunQuery(
|
|
117
|
+
{
|
|
118
|
+
QueryName: QueryName,
|
|
119
|
+
CategoryID: CategoryID,
|
|
120
|
+
CategoryName: CategoryName
|
|
121
|
+
},
|
|
122
|
+
context.userPayload.userRecord);
|
|
123
|
+
|
|
124
|
+
return {
|
|
125
|
+
QueryID: result.QueryID,
|
|
126
|
+
QueryName: QueryName,
|
|
127
|
+
Success: result.Success,
|
|
128
|
+
Results: JSON.stringify(result.Results),
|
|
129
|
+
RowCount: result.RowCount,
|
|
130
|
+
ExecutionTime: result.ExecutionTime,
|
|
131
|
+
ErrorMessage: result.ErrorMessage,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Resolver, Mutation, Arg, Ctx, ObjectType, Field } from 'type-graphql';
|
|
1
|
+
import { Resolver, Mutation, Arg, Ctx, ObjectType, Field, Int } from 'type-graphql';
|
|
2
2
|
import { UserPayload } from '../types.js';
|
|
3
3
|
import { LogError, LogStatus, Metadata } from '@memberjunction/core';
|
|
4
4
|
import { AIPromptEntity } from '@memberjunction/core-entities';
|
|
@@ -46,7 +46,19 @@ export class RunAIPromptResolver extends ResolverBase {
|
|
|
46
46
|
@Arg('vendorId', { nullable: true }) vendorId?: string,
|
|
47
47
|
@Arg('configurationId', { nullable: true }) configurationId?: string,
|
|
48
48
|
@Arg('skipValidation', { nullable: true }) skipValidation?: boolean,
|
|
49
|
-
@Arg('templateData', { nullable: true }) templateData?: string
|
|
49
|
+
@Arg('templateData', { nullable: true }) templateData?: string,
|
|
50
|
+
@Arg('responseFormat', { nullable: true }) responseFormat?: string,
|
|
51
|
+
@Arg('temperature', { nullable: true }) temperature?: number,
|
|
52
|
+
@Arg('topP', { nullable: true }) topP?: number,
|
|
53
|
+
@Arg('topK', () => Int, { nullable: true }) topK?: number,
|
|
54
|
+
@Arg('minP', { nullable: true }) minP?: number,
|
|
55
|
+
@Arg('frequencyPenalty', { nullable: true }) frequencyPenalty?: number,
|
|
56
|
+
@Arg('presencePenalty', { nullable: true }) presencePenalty?: number,
|
|
57
|
+
@Arg('seed', () => Int, { nullable: true }) seed?: number,
|
|
58
|
+
@Arg('stopSequences', () => [String], { nullable: true }) stopSequences?: string[],
|
|
59
|
+
@Arg('includeLogProbs', { nullable: true }) includeLogProbs?: boolean,
|
|
60
|
+
@Arg('topLogProbs', () => Int, { nullable: true }) topLogProbs?: number,
|
|
61
|
+
@Arg('messages', { nullable: true }) messages?: string
|
|
50
62
|
): Promise<AIPromptRunResult> {
|
|
51
63
|
const startTime = Date.now();
|
|
52
64
|
|
|
@@ -127,6 +139,44 @@ export class RunAIPromptResolver extends ResolverBase {
|
|
|
127
139
|
promptParams.configurationId = configurationId;
|
|
128
140
|
promptParams.contextUser = currentUser;
|
|
129
141
|
promptParams.skipValidation = skipValidation || false;
|
|
142
|
+
|
|
143
|
+
// Parse and set conversation messages if provided
|
|
144
|
+
if (messages) {
|
|
145
|
+
try {
|
|
146
|
+
promptParams.conversationMessages = JSON.parse(messages);
|
|
147
|
+
} catch (parseError) {
|
|
148
|
+
// If parsing fails, treat as a simple user message
|
|
149
|
+
promptParams.conversationMessages = [{
|
|
150
|
+
role: 'user',
|
|
151
|
+
content: messages
|
|
152
|
+
}];
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// If responseFormat is provided, override the prompt's default response format
|
|
157
|
+
if (responseFormat) {
|
|
158
|
+
// We'll need to override the prompt's response format setting
|
|
159
|
+
// This will be handled in the AIPromptRunner when it builds the ChatParams
|
|
160
|
+
promptEntity.ResponseFormat = responseFormat as any;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Build additional parameters for chat-specific settings
|
|
164
|
+
const additionalParams: Record<string, any> = {};
|
|
165
|
+
if (temperature != null) additionalParams.temperature = temperature;
|
|
166
|
+
if (topP != null) additionalParams.topP = topP;
|
|
167
|
+
if (topK != null) additionalParams.topK = topK;
|
|
168
|
+
if (minP != null) additionalParams.minP = minP;
|
|
169
|
+
if (frequencyPenalty != null) additionalParams.frequencyPenalty = frequencyPenalty;
|
|
170
|
+
if (presencePenalty != null) additionalParams.presencePenalty = presencePenalty;
|
|
171
|
+
if (seed != null) additionalParams.seed = seed;
|
|
172
|
+
if (stopSequences != null) additionalParams.stopSequences = stopSequences;
|
|
173
|
+
if (includeLogProbs != null) additionalParams.includeLogProbs = includeLogProbs;
|
|
174
|
+
if (topLogProbs != null) additionalParams.topLogProbs = topLogProbs;
|
|
175
|
+
|
|
176
|
+
// Only set additionalParameters if we have any
|
|
177
|
+
if (Object.keys(additionalParams).length > 0) {
|
|
178
|
+
promptParams.additionalParameters = additionalParams;
|
|
179
|
+
}
|
|
130
180
|
|
|
131
181
|
// Execute the prompt
|
|
132
182
|
const result = await promptRunner.ExecutePrompt(promptParams);
|