@memberjunction/server 0.9.161 → 0.9.162

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/build.log.json CHANGED
@@ -187,5 +187,8 @@
187
187
  },
188
188
  {
189
189
  "buildTime": "2024-02-11T16:32:43.0086118-06:00"
190
+ },
191
+ {
192
+ "buildTime": "2024-02-12T08:39:50.4075465-06:00"
190
193
  }
191
194
  ]
package/dist/config.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.loadConfig = exports.configInfo = exports.configFile = exports.mj_core_schema = exports.auth0ClientSecret = exports.auth0WebClientID = exports.auth0Domain = exports.userEmailMap = exports.websiteRunFromPackage = exports.enableIntrospection = exports.tenantID = exports.webClientID = exports.graphqlRootPath = exports.graphqlPort = exports.dbTrustServerCertificate = exports.dbInstanceName = exports.dbDatabase = exports.dbPassword = exports.dbUsername = exports.dbPort = exports.dbHost = exports.nodeEnv = void 0;
6
+ exports.loadConfig = exports.configInfo = exports.configFile = exports.mj_core_schema = exports.auth0ClientSecret = exports.auth0WebClientID = exports.auth0Domain = exports.___skipAPIOrgId = exports.___skipAPIurl = exports.userEmailMap = exports.websiteRunFromPackage = exports.enableIntrospection = exports.tenantID = exports.webClientID = exports.graphqlRootPath = exports.graphqlPort = exports.dbTrustServerCertificate = exports.dbInstanceName = exports.dbDatabase = exports.dbPassword = exports.dbUsername = exports.dbPort = exports.dbHost = exports.nodeEnv = void 0;
7
7
  const env_var_1 = __importDefault(require("env-var"));
8
8
  const fs_1 = __importDefault(require("fs"));
9
9
  const path_1 = __importDefault(require("path"));
@@ -23,6 +23,8 @@ exports.tenantID = env_var_1.default.get('TENANT_ID').asString();
23
23
  exports.enableIntrospection = env_var_1.default.get('ENABLE_INTROSPECTION').default('false').asBool();
24
24
  exports.websiteRunFromPackage = env_var_1.default.get('WEBSITE_RUN_FROM_PACKAGE').asIntPositive();
25
25
  exports.userEmailMap = env_var_1.default.get('USER_EMAIL_MAP').default('{}').asJsonObject();
26
+ exports.___skipAPIurl = env_var_1.default.get('ASK_SKIP_API_URL').required().asString();
27
+ exports.___skipAPIOrgId = env_var_1.default.get('ASK_SKIP_ORGANIZATION_ID').required().asString();
26
28
  exports.auth0Domain = env_var_1.default.get('AUTH0_DOMAIN').asString();
27
29
  exports.auth0WebClientID = env_var_1.default.get('AUTH0_CLIENT_ID').asString();
28
30
  exports.auth0ClientSecret = env_var_1.default.get('AUTH0_CLIENT_SECRET').asString();
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,18 @@ const zlib_1 = __importDefault(require("zlib"));
26
26
  const util_1 = require("util");
27
27
  const gzip = (0, util_1.promisify)(zlib_1.default.gzip);
28
28
  const PushStatusResolver_1 = require("../generic/PushStatusResolver");
29
- const ___skipAPIurl = 'http://localhost:8000';
29
+ const config_1 = require("../config");
30
+ const type_graphql_2 = require("type-graphql");
31
+ var SkipResponsePhase;
32
+ (function (SkipResponsePhase) {
33
+ SkipResponsePhase["ClarifyingQuestion"] = "clarifying_question";
34
+ SkipResponsePhase["DataRequest"] = "data_request";
35
+ SkipResponsePhase["AnalysisComplete"] = "analysis_complete";
36
+ })(SkipResponsePhase || (SkipResponsePhase = {}));
37
+ (0, type_graphql_2.registerEnumType)(SkipResponsePhase, {
38
+ name: "SkipResponsePhase",
39
+ description: "The phase of the respons: clarifying_question, data_request, or analysis_complete",
40
+ });
30
41
  let AskSkipResultType = class AskSkipResultType {
31
42
  };
32
43
  exports.AskSkipResultType = AskSkipResultType;
@@ -38,6 +49,10 @@ __decorate([
38
49
  (0, type_graphql_1.Field)(() => String),
39
50
  __metadata("design:type", String)
40
51
  ], AskSkipResultType.prototype, "Status", void 0);
52
+ __decorate([
53
+ (0, type_graphql_1.Field)(() => SkipResponsePhase),
54
+ __metadata("design:type", String)
55
+ ], AskSkipResultType.prototype, "ResponsePhase", void 0);
41
56
  __decorate([
42
57
  (0, type_graphql_1.Field)(() => String),
43
58
  __metadata("design:type", String)
@@ -87,7 +102,7 @@ let AskSkipResolver = AskSkipResolver_1 = class AskSkipResolver {
87
102
  convoDetailEntity.Role = 'User';
88
103
  convoDetailEntity.Set('Sequence', 1);
89
104
  await convoDetailEntity.Save();
90
- const OrganizationId = process.env.BOT_SCHEMA_ORGANIZATION_ID;
105
+ const OrganizationId = config_1.___skipAPIOrgId;
91
106
  const dataContext = new skip_types_1.SkipDataContext();
92
107
  dataContext.Items.push({
93
108
  Type: 'view',
@@ -119,7 +134,7 @@ let AskSkipResolver = AskSkipResolver_1 = class AskSkipResolver {
119
134
  }
120
135
  async HandleSkipRequest(input, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, md, convoEntity, convoDetailEntity) {
121
136
  const compressedPayload = await gzip(Buffer.from(JSON.stringify(input)));
122
- const response = await axios_1.default.post(___skipAPIurl, compressedPayload, {
137
+ const response = await axios_1.default.post(config_1.___skipAPIurl, compressedPayload, {
123
138
  headers: {
124
139
  'Content-Type': 'application/json',
125
140
  'Content-Encoding': 'gzip'
@@ -127,42 +142,15 @@ let AskSkipResolver = AskSkipResolver_1 = class AskSkipResolver {
127
142
  });
128
143
  if (response.status === 200) {
129
144
  const apiResponse = response.data;
130
- let sUserMessage = '';
131
- switch (apiResponse.responsePhase) {
132
- case 'data_request':
133
- sUserMessage = 'We need to gather some more data, I will do that next and update you soon.';
134
- break;
135
- case 'analysis_complete':
136
- sUserMessage = 'I have completed the analysis, the results will be available momentarily.';
137
- break;
138
- case 'clarifying_question':
139
- sUserMessage = 'I have a clarifying question for you, please see review our chat so you can provide me a little more info.';
140
- break;
141
- }
142
- pubSub.publish(PushStatusResolver_1.PUSH_STATUS_UPDATES_TOPIC, {
143
- message: JSON.stringify({
144
- type: 'AskSkip',
145
- status: 'OK',
146
- message: sUserMessage,
147
- }),
148
- sessionId: userPayload.sessionId,
149
- });
145
+ this.PublishApiResponseUserUpdateMessage(apiResponse, userPayload, pubSub);
150
146
  if (apiResponse.responsePhase === 'data_request') {
151
147
  return await this.HandleDataRequestPhase(input, apiResponse, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, convoEntity, convoDetailEntity);
152
148
  }
153
149
  else if (apiResponse.responsePhase === 'clarifying_question') {
154
- throw new Error('Clarifying question not implemented yet');
150
+ return await this.HandleClarifyingQuestionPhase(input, apiResponse, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, convoEntity, convoDetailEntity);
155
151
  }
156
152
  else {
157
- const { AIMessageConversationDetailID } = await this.FinishConversationAndNotifyUser(apiResponse, md, user, convoEntity, pubSub, userPayload);
158
- return {
159
- Success: true,
160
- Status: 'OK',
161
- ConversationId: ConversationId,
162
- UserMessageConversationDetailId: convoDetailEntity.ID,
163
- AIMessageConversationDetailId: AIMessageConversationDetailID,
164
- Result: JSON.stringify(response.data)
165
- };
153
+ return await this.HandleAnalysisComplete(input, apiResponse, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, convoEntity, convoDetailEntity);
166
154
  }
167
155
  }
168
156
  else {
@@ -178,53 +166,136 @@ let AskSkipResolver = AskSkipResolver_1 = class AskSkipResolver {
178
166
  Success: false,
179
167
  Status: 'Error',
180
168
  Result: `User Question ${UserQuestion} didn't work!`,
169
+ ResponsePhase: SkipResponsePhase.AnalysisComplete,
181
170
  ConversationId: ConversationId,
182
171
  UserMessageConversationDetailId: 0,
183
172
  AIMessageConversationDetailId: 0,
184
173
  };
185
174
  }
186
175
  }
176
+ async PublishApiResponseUserUpdateMessage(apiResponse, userPayload, pubSub) {
177
+ let sUserMessage = '';
178
+ switch (apiResponse.responsePhase) {
179
+ case 'data_request':
180
+ sUserMessage = 'We need to gather some more data, I will do that next and update you soon.';
181
+ break;
182
+ case 'analysis_complete':
183
+ sUserMessage = 'I have completed the analysis, the results will be available momentarily.';
184
+ break;
185
+ case 'clarifying_question':
186
+ sUserMessage = 'I have a clarifying question for you, please see review our chat so you can provide me a little more info.';
187
+ break;
188
+ }
189
+ pubSub.publish(PushStatusResolver_1.PUSH_STATUS_UPDATES_TOPIC, {
190
+ message: JSON.stringify({
191
+ type: 'AskSkip',
192
+ status: 'OK',
193
+ message: sUserMessage,
194
+ }),
195
+ sessionId: userPayload.sessionId,
196
+ });
197
+ }
198
+ async HandleAnalysisComplete(apiRequest, apiResponse, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, convoEntity, convoDetailEntity) {
199
+ const md = new core_1.Metadata();
200
+ const { AIMessageConversationDetailID } = await this.FinishConversationAndNotifyUser(apiResponse, md, user, convoEntity, pubSub, userPayload);
201
+ return {
202
+ Success: true,
203
+ Status: 'OK',
204
+ ResponsePhase: SkipResponsePhase.AnalysisComplete,
205
+ ConversationId: ConversationId,
206
+ UserMessageConversationDetailId: convoDetailEntity.ID,
207
+ AIMessageConversationDetailId: AIMessageConversationDetailID,
208
+ Result: JSON.stringify(apiResponse)
209
+ };
210
+ }
211
+ async HandleClarifyingQuestionPhase(apiRequest, apiResponse, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, convoEntity, convoDetailEntity) {
212
+ const md = new core_1.Metadata();
213
+ const convoDetailEntityAI = await md.GetEntityObject('Conversation Details', user);
214
+ convoDetailEntityAI.NewRecord();
215
+ convoDetailEntityAI.ConversationID = ConversationId;
216
+ convoDetailEntityAI.Message = apiResponse.clarifyingQuestion;
217
+ convoDetailEntityAI.Role = 'AI';
218
+ if (await convoDetailEntityAI.Save()) {
219
+ return {
220
+ Success: true,
221
+ Status: 'OK',
222
+ ResponsePhase: SkipResponsePhase.ClarifyingQuestion,
223
+ ConversationId: ConversationId,
224
+ UserMessageConversationDetailId: convoDetailEntity.ID,
225
+ AIMessageConversationDetailId: convoDetailEntityAI.ID,
226
+ Result: JSON.stringify(apiResponse)
227
+ };
228
+ }
229
+ else {
230
+ return {
231
+ Success: false,
232
+ Status: 'Error',
233
+ ResponsePhase: SkipResponsePhase.ClarifyingQuestion,
234
+ ConversationId: ConversationId,
235
+ UserMessageConversationDetailId: convoDetailEntity.ID,
236
+ AIMessageConversationDetailId: 0,
237
+ Result: JSON.stringify(apiResponse)
238
+ };
239
+ }
240
+ }
187
241
  async HandleDataRequestPhase(apiRequest, apiResponse, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, convoEntity, convoDetailEntity) {
188
242
  try {
189
243
  const md = new core_1.Metadata();
244
+ const executionErrors = [];
190
245
  for (const dr of apiResponse.dataRequest) {
191
- switch (dr.type) {
192
- case "sql":
193
- const sql = dr.text;
194
- const result = await dataSource.query(sql);
195
- if (!result)
196
- throw new Error(`Error running SQL: ${sql}`);
197
- const item = new skip_types_1.SkipDataContextItem();
198
- item.Type = 'sql';
199
- item.Data = result;
200
- item.RecordName = dr.text;
201
- item.AdditionalDescription = dr.description;
202
- apiRequest.dataContext.Items.push(item);
203
- break;
204
- case "stored_query":
205
- const queryName = dr.text;
206
- const query = md.Queries.find((q) => q.Name === queryName);
207
- if (query) {
208
- const rq = new core_1.RunQuery();
209
- const result = await rq.RunQuery({ QueryID: query.ID }, user);
210
- if (result && result.Success) {
211
- const item = new skip_types_1.SkipDataContextItem();
212
- item.Type = 'query';
213
- item.Data = result.Results;
214
- item.RecordID = query.ID;
215
- item.RecordName = query.Name;
216
- item.AdditionalDescription = dr.description;
217
- apiRequest.dataContext.Items.push(item);
246
+ try {
247
+ switch (dr.type) {
248
+ case "sql":
249
+ const sql = dr.text;
250
+ const result = await dataSource.query(sql);
251
+ if (!result)
252
+ throw new Error(`Error running SQL: ${sql}`);
253
+ const item = new skip_types_1.SkipDataContextItem();
254
+ item.Type = 'sql';
255
+ item.Data = result;
256
+ item.RecordName = dr.text;
257
+ item.AdditionalDescription = dr.description;
258
+ apiRequest.dataContext.Items.push(item);
259
+ break;
260
+ case "stored_query":
261
+ const queryName = dr.text;
262
+ const query = md.Queries.find((q) => q.Name === queryName);
263
+ if (query) {
264
+ const rq = new core_1.RunQuery();
265
+ const result = await rq.RunQuery({ QueryID: query.ID }, user);
266
+ if (result && result.Success) {
267
+ const item = new skip_types_1.SkipDataContextItem();
268
+ item.Type = 'query';
269
+ item.Data = result.Results;
270
+ item.RecordID = query.ID;
271
+ item.RecordName = query.Name;
272
+ item.AdditionalDescription = dr.description;
273
+ apiRequest.dataContext.Items.push(item);
274
+ }
275
+ else
276
+ throw new Error(`Error running query ${queryName}`);
218
277
  }
219
278
  else
220
- throw new Error(`Error running query ${queryName}`);
221
- }
222
- else
223
- throw new Error(`Query ${queryName} not found.`);
224
- break;
279
+ throw new Error(`Query ${queryName} not found.`);
280
+ break;
281
+ }
282
+ }
283
+ catch (e) {
284
+ (0, core_1.LogError)(e);
285
+ executionErrors.push({ error: e, dataRequest: dr });
225
286
  }
226
287
  }
227
- apiRequest.requestPhase = 'data_gathering_response';
288
+ if (executionErrors.length > 0) {
289
+ (0, core_1.LogStatus)(`Execution errors for Skip data request occured, sending those errors back to the Skip API to get new instructions.`);
290
+ apiRequest.requestPhase = 'data_gathering_failure';
291
+ apiRequest.messages.push({
292
+ content: 'I had some trouble gathering the data, please see the chat for more details.',
293
+ role: 'user'
294
+ });
295
+ }
296
+ else {
297
+ apiRequest.requestPhase = 'data_gathering_response';
298
+ }
228
299
  return this.HandleSkipRequest(apiRequest, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, md, convoEntity, convoDetailEntity);
229
300
  }
230
301
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"AskSkipResolver.js","sourceRoot":"","sources":["../../src/resolvers/AskSkipResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AskSkipResolver.js","sourceRoot":"","sources":["../../src/resolvers/AskSkipResolver.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/server",
3
- "version": "0.9.161",
3
+ "version": "0.9.162",
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",
@@ -28,7 +28,7 @@
28
28
  "@memberjunction/global": "^0.9.132",
29
29
  "@memberjunction/queue": "^0.9.139",
30
30
  "@memberjunction/sqlserver-dataprovider": "^0.9.150",
31
- "@memberjunction/skip-types": "^0.9.12",
31
+ "@memberjunction/skip-types": "^0.9.13",
32
32
  "@types/cors": "^2.8.13",
33
33
  "@types/jsonwebtoken": "^8.5.9",
34
34
  "@types/node": "^18.11.14",
package/src/config.ts CHANGED
@@ -23,6 +23,10 @@ export const enableIntrospection = env.get('ENABLE_INTROSPECTION').default('fals
23
23
  export const websiteRunFromPackage = env.get('WEBSITE_RUN_FROM_PACKAGE').asIntPositive();
24
24
  export const userEmailMap = env.get('USER_EMAIL_MAP').default('{}').asJsonObject() as Record<string, string>;
25
25
 
26
+ export const ___skipAPIurl = env.get('ASK_SKIP_API_URL').required().asString();
27
+ export const ___skipAPIOrgId = env.get('ASK_SKIP_ORGANIZATION_ID').required().asString();
28
+
29
+
26
30
  export const auth0Domain = env.get('AUTH0_DOMAIN').asString();
27
31
  export const auth0WebClientID = env.get('AUTH0_CLIENT_ID').asString();
28
32
  export const auth0ClientSecret = env.get('AUTH0_CLIENT_SECRET').asString();
@@ -1,8 +1,8 @@
1
1
  import { Arg, Ctx, Field, Int, ObjectType, PubSub, PubSubEngine, Query, Resolver } from 'type-graphql';
2
- import { LogError, Metadata, RunQuery, RunQueryParams, RunView, UserInfo } from '@memberjunction/core';
2
+ import { LogError, LogStatus, Metadata, RunQuery, RunQueryParams, RunView, UserInfo } from '@memberjunction/core';
3
3
  import { AppContext, UserPayload } from '../types';
4
4
  import { UserCache } from '@memberjunction/sqlserver-dataprovider';
5
- import { SkipDataContext, SkipDataContextItem, SkipAPIRequest, SkipAPIResponse, SkipMessage, SkipAPIAnalysisCompleteResponse, SkipAPIDataRequestResponse } from '@memberjunction/skip-types';
5
+ import { SkipDataContext, SkipDataContextItem, SkipAPIRequest, SkipAPIResponse, SkipMessage, SkipAPIAnalysisCompleteResponse, SkipAPIDataRequestResponse, SkipAPIClarifyingQuestionResponse } from '@memberjunction/skip-types';
6
6
  import axios from 'axios';
7
7
  import zlib from 'zlib';
8
8
  import { promisify } from 'util';
@@ -12,13 +12,23 @@ const gzip = promisify(zlib.gzip);
12
12
  import { PUSH_STATUS_UPDATES_TOPIC } from '../generic/PushStatusResolver';
13
13
  import { ConversationDetailEntity, ConversationEntity, UserNotificationEntity, UserViewEntityExtended } from '@memberjunction/core-entities';
14
14
  import { DataSource } from 'typeorm';
15
+ import { ___skipAPIOrgId, ___skipAPIurl } from '../config';
15
16
 
16
17
 
17
- const ___skipAPIurl = 'http://localhost:8000'
18
- // const url = process.env.BOT_EXTERNAL_API_URL;
19
- // TEMP - call the separate server, we'll move this to real skip server soon!!!!!
18
+ import { registerEnumType } from "type-graphql";
20
19
 
21
20
 
21
+ enum SkipResponsePhase {
22
+ ClarifyingQuestion = "clarifying_question",
23
+ DataRequest = "data_request",
24
+ AnalysisComplete = "analysis_complete",
25
+ }
26
+
27
+ registerEnumType(SkipResponsePhase, {
28
+ name: "SkipResponsePhase",
29
+ description: "The phase of the respons: clarifying_question, data_request, or analysis_complete",
30
+ });
31
+
22
32
 
23
33
  @ObjectType()
24
34
  export class AskSkipResultType {
@@ -28,6 +38,9 @@ export class AskSkipResultType {
28
38
  @Field(() => String)
29
39
  Status: string; // required
30
40
 
41
+ @Field(() => SkipResponsePhase)
42
+ ResponsePhase: SkipResponsePhase;
43
+
31
44
  @Field(() => String)
32
45
  Result: string;
33
46
 
@@ -83,7 +96,7 @@ export class AskSkipResolver {
83
96
  await convoDetailEntity.Save();
84
97
 
85
98
  //const OrganizationId = 2 //HG 8/1/2023 TODO: Pull this from an environment variable
86
- const OrganizationId = process.env.BOT_SCHEMA_ORGANIZATION_ID;
99
+ const OrganizationId = ___skipAPIOrgId;
87
100
  const dataContext: SkipDataContext = new SkipDataContext();
88
101
  dataContext.Items.push(
89
102
  {
@@ -143,28 +156,7 @@ export class AskSkipResolver {
143
156
 
144
157
  if (response.status === 200) {
145
158
  const apiResponse = <SkipAPIResponse>response.data;
146
- let sUserMessage: string = '';
147
- switch (apiResponse.responsePhase) {
148
- case 'data_request':
149
- sUserMessage = 'We need to gather some more data, I will do that next and update you soon.';
150
- break;
151
- case 'analysis_complete':
152
- sUserMessage = 'I have completed the analysis, the results will be available momentarily.';
153
- break;
154
- case 'clarifying_question':
155
- sUserMessage = 'I have a clarifying question for you, please see review our chat so you can provide me a little more info.';
156
- break;
157
- }
158
-
159
- // update the UI
160
- pubSub.publish(PUSH_STATUS_UPDATES_TOPIC, {
161
- message: JSON.stringify({
162
- type: 'AskSkip',
163
- status: 'OK',
164
- message: sUserMessage,
165
- }),
166
- sessionId: userPayload.sessionId,
167
- });
159
+ this.PublishApiResponseUserUpdateMessage(apiResponse, userPayload, pubSub);
168
160
 
169
161
  // now, based on the result type, we will either wait for the next phase or we will process the results
170
162
  if (apiResponse.responsePhase === 'data_request') {
@@ -172,22 +164,10 @@ export class AskSkipResolver {
172
164
  }
173
165
  else if (apiResponse.responsePhase === 'clarifying_question') {
174
166
  // need to send the request back to the user for a clarifying question
175
- // TO-DO implement this
176
- throw new Error('Clarifying question not implemented yet');
167
+ return await this.HandleClarifyingQuestionPhase(input, <SkipAPIClarifyingQuestionResponse>apiResponse, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, convoEntity, convoDetailEntity);
177
168
  }
178
169
  else { // apiResponse.responsePhase === 'analysis_complete'
179
- // analysis is complete
180
- // all done, wrap things up
181
- const {AIMessageConversationDetailID} = await this.FinishConversationAndNotifyUser(apiResponse, md, user, convoEntity, pubSub, userPayload);
182
-
183
- return {
184
- Success: true,
185
- Status: 'OK',
186
- ConversationId: ConversationId,
187
- UserMessageConversationDetailId: convoDetailEntity.ID,
188
- AIMessageConversationDetailId: AIMessageConversationDetailID,
189
- Result: JSON.stringify(response.data)
190
- };
170
+ return await this.HandleAnalysisComplete(input, <SkipAPIAnalysisCompleteResponse>apiResponse, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, convoEntity, convoDetailEntity);
191
171
  }
192
172
  }
193
173
  else {
@@ -204,6 +184,7 @@ export class AskSkipResolver {
204
184
  Success: false,
205
185
  Status: 'Error',
206
186
  Result: `User Question ${UserQuestion} didn't work!`,
187
+ ResponsePhase: SkipResponsePhase.AnalysisComplete,
207
188
  ConversationId: ConversationId,
208
189
  UserMessageConversationDetailId: 0,
209
190
  AIMessageConversationDetailId: 0,
@@ -211,52 +192,146 @@ export class AskSkipResolver {
211
192
  }
212
193
  }
213
194
 
195
+ protected async PublishApiResponseUserUpdateMessage(apiResponse: SkipAPIResponse, userPayload: UserPayload, pubSub: PubSubEngine) {
196
+ let sUserMessage: string = '';
197
+ switch (apiResponse.responsePhase) {
198
+ case 'data_request':
199
+ sUserMessage = 'We need to gather some more data, I will do that next and update you soon.';
200
+ break;
201
+ case 'analysis_complete':
202
+ sUserMessage = 'I have completed the analysis, the results will be available momentarily.';
203
+ break;
204
+ case 'clarifying_question':
205
+ sUserMessage = 'I have a clarifying question for you, please see review our chat so you can provide me a little more info.';
206
+ break;
207
+ }
208
+
209
+ // update the UI
210
+ pubSub.publish(PUSH_STATUS_UPDATES_TOPIC, {
211
+ message: JSON.stringify({
212
+ type: 'AskSkip',
213
+ status: 'OK',
214
+ message: sUserMessage,
215
+ }),
216
+ sessionId: userPayload.sessionId,
217
+ });
218
+ }
219
+
220
+ protected async HandleAnalysisComplete(apiRequest: SkipAPIRequest, apiResponse: SkipAPIAnalysisCompleteResponse, UserQuestion: string, user: UserInfo, dataSource: DataSource,
221
+ ConversationId: number, userPayload: UserPayload, pubSub: PubSubEngine, convoEntity: ConversationEntity, convoDetailEntity: ConversationDetailEntity): Promise<AskSkipResultType> {
222
+ // analysis is complete
223
+ // all done, wrap things up
224
+ const md = new Metadata();
225
+ const {AIMessageConversationDetailID} = await this.FinishConversationAndNotifyUser(apiResponse, md, user, convoEntity, pubSub, userPayload);
226
+
227
+ return {
228
+ Success: true,
229
+ Status: 'OK',
230
+ ResponsePhase: SkipResponsePhase.AnalysisComplete,
231
+ ConversationId: ConversationId,
232
+ UserMessageConversationDetailId: convoDetailEntity.ID,
233
+ AIMessageConversationDetailId: AIMessageConversationDetailID,
234
+ Result: JSON.stringify(apiResponse)
235
+ };
236
+ }
237
+
238
+ protected async HandleClarifyingQuestionPhase(apiRequest: SkipAPIRequest, apiResponse: SkipAPIClarifyingQuestionResponse, UserQuestion: string, user: UserInfo, dataSource: DataSource,
239
+ ConversationId: number, userPayload: UserPayload, pubSub: PubSubEngine, convoEntity: ConversationEntity, convoDetailEntity: ConversationDetailEntity): Promise<AskSkipResultType> {
240
+ // need to create a message here in the COnversation and then pass that id below
241
+ const md = new Metadata();
242
+ const convoDetailEntityAI = <ConversationDetailEntity>await md.GetEntityObject('Conversation Details', user);
243
+ convoDetailEntityAI.NewRecord();
244
+ convoDetailEntityAI.ConversationID = ConversationId;
245
+ convoDetailEntityAI.Message = apiResponse.clarifyingQuestion;
246
+ convoDetailEntityAI.Role = 'AI';
247
+ if (await convoDetailEntityAI.Save()) {
248
+ return {
249
+ Success: true,
250
+ Status: 'OK',
251
+ ResponsePhase: SkipResponsePhase.ClarifyingQuestion,
252
+ ConversationId: ConversationId,
253
+ UserMessageConversationDetailId: convoDetailEntity.ID,
254
+ AIMessageConversationDetailId: convoDetailEntityAI.ID,
255
+ Result: JSON.stringify(apiResponse)
256
+ };
257
+ }
258
+ else {
259
+ return {
260
+ Success: false,
261
+ Status: 'Error',
262
+ ResponsePhase: SkipResponsePhase.ClarifyingQuestion,
263
+ ConversationId: ConversationId,
264
+ UserMessageConversationDetailId: convoDetailEntity.ID,
265
+ AIMessageConversationDetailId: 0,
266
+ Result: JSON.stringify(apiResponse)
267
+ };
268
+ }
269
+ }
270
+
214
271
  protected async HandleDataRequestPhase(apiRequest: SkipAPIRequest, apiResponse: SkipAPIDataRequestResponse, UserQuestion: string, user: UserInfo, dataSource: DataSource,
215
272
  ConversationId: number, userPayload: UserPayload, pubSub: PubSubEngine, convoEntity: ConversationEntity, convoDetailEntity: ConversationDetailEntity): Promise<AskSkipResultType> {
216
273
  // our job in this method is to go through each of the data requests from the Skip API, get the data, and then go back to the Skip API again and to the next phase
217
274
  try {
218
275
  const md = new Metadata();
276
+ const executionErrors = [];
277
+
219
278
  for (const dr of apiResponse.dataRequest) {
220
- switch (dr.type) {
221
- case "sql":
222
- const sql = dr.text;
223
- const result = await dataSource.query(sql);
224
- if (!result)
225
- throw new Error(`Error running SQL: ${sql}`);
226
-
227
- const item = new SkipDataContextItem();
228
- item.Type = 'sql';
229
- item.Data = result;
230
- item.RecordName = dr.text;
231
- item.AdditionalDescription = dr.description;
232
- apiRequest.dataContext.Items.push(item);
233
- break;
234
- case "stored_query":
235
- const queryName = dr.text;
236
- const query = md.Queries.find((q) => q.Name === queryName);
237
- if (query) {
238
- const rq = new RunQuery();
239
- const result = await rq.RunQuery({QueryID: query.ID}, user)
240
- if (result && result.Success) {
241
- const item = new SkipDataContextItem();
242
- item.Type = 'query';
243
- item.Data = result.Results;
244
- item.RecordID = query.ID;
245
- item.RecordName = query.Name;
246
- item.AdditionalDescription = dr.description;
247
- apiRequest.dataContext.Items.push(item);
279
+ try {
280
+ switch (dr.type) {
281
+ case "sql":
282
+ const sql = dr.text;
283
+ const result = await dataSource.query(sql);
284
+ if (!result)
285
+ throw new Error(`Error running SQL: ${sql}`);
286
+
287
+ const item = new SkipDataContextItem();
288
+ item.Type = 'sql';
289
+ item.Data = result;
290
+ item.RecordName = dr.text;
291
+ item.AdditionalDescription = dr.description;
292
+ apiRequest.dataContext.Items.push(item);
293
+ break;
294
+ case "stored_query":
295
+ const queryName = dr.text;
296
+ const query = md.Queries.find((q) => q.Name === queryName);
297
+ if (query) {
298
+ const rq = new RunQuery();
299
+ const result = await rq.RunQuery({QueryID: query.ID}, user)
300
+ if (result && result.Success) {
301
+ const item = new SkipDataContextItem();
302
+ item.Type = 'query';
303
+ item.Data = result.Results;
304
+ item.RecordID = query.ID;
305
+ item.RecordName = query.Name;
306
+ item.AdditionalDescription = dr.description;
307
+ apiRequest.dataContext.Items.push(item);
308
+ }
309
+ else
310
+ throw new Error(`Error running query ${queryName}`);
248
311
  }
249
312
  else
250
- throw new Error(`Error running query ${queryName}`);
251
- }
252
- else
253
- throw new Error(`Query ${queryName} not found.`);
254
- break;
313
+ throw new Error(`Query ${queryName} not found.`);
314
+ break;
315
+ }
316
+ }
317
+ catch (e) {
318
+ LogError(e);
319
+ executionErrors.push({error: e, dataRequest: dr});
255
320
  }
256
321
  }
257
322
 
323
+ if (executionErrors.length > 0) {
324
+ LogStatus(`Execution errors for Skip data request occured, sending those errors back to the Skip API to get new instructions.`);
325
+ apiRequest.requestPhase = 'data_gathering_failure';
326
+ apiRequest.messages.push({
327
+ content: 'I had some trouble gathering the data, please see the chat for more details.',
328
+ role: 'user' // use user role becuase to the Skip API what we send it is "user"
329
+ });
330
+ }
331
+ else {
332
+ apiRequest.requestPhase = 'data_gathering_response';
333
+ }
258
334
  // we have all of the data now, add it to the data context and then submit it back to the Skip API
259
- apiRequest.requestPhase = 'data_gathering_response';
260
335
  return this.HandleSkipRequest(apiRequest, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, md, convoEntity, convoDetailEntity);
261
336
  }
262
337
  catch (e) {