@memberjunction/server 0.9.161 → 0.9.163

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,11 @@
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"
193
+ },
194
+ {
195
+ "buildTime": "2024-02-13T15:17:17.0419907-06:00"
190
196
  }
191
197
  ]
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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"}
@@ -43,7 +43,6 @@ __decorate([
43
43
  (0, type_graphql_1.Subscription)(() => PushStatusNotification, {
44
44
  topics: exports.PUSH_STATUS_UPDATES_TOPIC,
45
45
  filter: ({ payload, args, context }) => {
46
- console.log('context', context);
47
46
  return payload.sessionId === args.sessionId;
48
47
  },
49
48
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"PushStatusResolver.js","sourceRoot":"","sources":["../../src/generic/PushStatusResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+CAA4G;AAE/F,QAAA,yBAAyB,GAAG,qBAAqB,CAAC;AAGxD,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;CASlC,CAAA;AATY,wDAAsB;AAEjC;IADC,IAAA,oBAAK,EAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uDACvB;AAGjB;IADC,IAAA,oBAAK,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC;8BAChB,IAAI;oDAAC;AAGZ;IADC,IAAA,oBAAK,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAE,CAAC;;yDACF;iCARR,sBAAsB;IADlC,IAAA,yBAAU,GAAE;GACA,sBAAsB,CASlC;AAYM,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAQ7B,aAAa,CACH,EAAE,OAAO,EAAiC,EAClB,SAAiB;QAEjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC;CACF,CAAA;AAdY,gDAAkB;AAQ7B;IAPC,IAAA,2BAAY,EAAC,GAAG,EAAE,CAAC,sBAAsB,EAAE;QAC1C,MAAM,EAAE,iCAAyB;QACjC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAsF,EAAE,EAAE;YACzH,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAChC,OAAO,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC;QAC9C,CAAC;KACF,CAAC;IAEC,WAAA,IAAA,mBAAI,GAAE,CAAA;IACN,WAAA,IAAA,kBAAG,EAAC,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;;;oCAC9B,sBAAsB;uDAExB;6BAbU,kBAAkB;IAD9B,IAAA,uBAAQ,GAAE;GACE,kBAAkB,CAc9B"}
1
+ {"version":3,"file":"PushStatusResolver.js","sourceRoot":"","sources":["../../src/generic/PushStatusResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+CAA4G;AAE/F,QAAA,yBAAyB,GAAG,qBAAqB,CAAC;AAGxD,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;CASlC,CAAA;AATY,wDAAsB;AAEjC;IADC,IAAA,oBAAK,EAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uDACvB;AAGjB;IADC,IAAA,oBAAK,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC;8BAChB,IAAI;oDAAC;AAGZ;IADC,IAAA,oBAAK,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAE,CAAC;;yDACF;iCARR,sBAAsB;IADlC,IAAA,yBAAU,GAAE;GACA,sBAAsB,CASlC;AAYM,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAO7B,aAAa,CACH,EAAE,OAAO,EAAiC,EAClB,SAAiB;QAEjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC;CACF,CAAA;AAbY,gDAAkB;AAO7B;IANC,IAAA,2BAAY,EAAC,GAAG,EAAE,CAAC,sBAAsB,EAAE;QAC1C,MAAM,EAAE,iCAAyB;QACjC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAsF,EAAE,EAAE;YACzH,OAAO,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC;QAC9C,CAAC;KACF,CAAC;IAEC,WAAA,IAAA,mBAAI,GAAE,CAAA;IACN,WAAA,IAAA,kBAAG,EAAC,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;;;oCAC9B,sBAAsB;uDAExB;6BAZU,kBAAkB;IAD9B,IAAA,uBAAQ,GAAE;GACE,kBAAkB,CAa9B"}
@@ -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)
@@ -74,8 +89,9 @@ let AskSkipResolver = AskSkipResolver_1 = class AskSkipResolver {
74
89
  else
75
90
  throw new Error(`Creating a new conversation failed`);
76
91
  }
77
- else
92
+ else {
78
93
  throw new Error(`User ${userPayload.email} not found in UserCache`);
94
+ }
79
95
  }
80
96
  else {
81
97
  await convoEntity.Load(ConversationId);
@@ -87,19 +103,14 @@ let AskSkipResolver = AskSkipResolver_1 = class AskSkipResolver {
87
103
  convoDetailEntity.Role = 'User';
88
104
  convoDetailEntity.Set('Sequence', 1);
89
105
  await convoDetailEntity.Save();
90
- const OrganizationId = process.env.BOT_SCHEMA_ORGANIZATION_ID;
106
+ const OrganizationId = config_1.___skipAPIOrgId;
91
107
  const dataContext = new skip_types_1.SkipDataContext();
92
108
  dataContext.Items.push({
93
109
  Type: 'view',
94
110
  RecordID: ViewId,
95
111
  Data: await this.getViewData(ViewId, user),
96
112
  });
97
- const messages = [
98
- {
99
- content: UserQuestion,
100
- role: 'user'
101
- }
102
- ];
113
+ const messages = await this.LoadConversationDetailsIntoSkipMessages(dataSource, convoEntity.ID, AskSkipResolver_1._maxHistoricalMessages);
103
114
  const input = {
104
115
  messages: messages,
105
116
  conversationID: ConversationId.toString(),
@@ -117,9 +128,54 @@ let AskSkipResolver = AskSkipResolver_1 = class AskSkipResolver {
117
128
  });
118
129
  return this.HandleSkipRequest(input, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, md, convoEntity, convoDetailEntity);
119
130
  }
131
+ async LoadConversationDetailsIntoSkipMessages(dataSource, ConversationId, maxHistoricalMessages) {
132
+ try {
133
+ const md = new core_1.Metadata();
134
+ const e = md.Entities.find((e) => e.Name === 'Conversation Details');
135
+ const sql = `SELECT
136
+ ${maxHistoricalMessages ? 'TOP ' + maxHistoricalMessages : ''} ID, Message, Role, CreatedAt
137
+ FROM
138
+ ${e.SchemaName}.${e.BaseView}
139
+ WHERE
140
+ ConversationID = ${ConversationId}
141
+ ORDER
142
+ BY CreatedAt DESC`;
143
+ const result = await dataSource.query(sql);
144
+ if (!result)
145
+ throw new Error(`Error running SQL: ${sql}`);
146
+ else {
147
+ const returnData = result.sort((a, b) => {
148
+ const aDate = new Date(a.CreatedAt);
149
+ const bDate = new Date(b.CreatedAt);
150
+ return aDate.getTime() - bDate.getTime();
151
+ });
152
+ return returnData.map((r) => {
153
+ const skipRole = this.MapDBRoleToSkipRole(r.Role);
154
+ const m = {
155
+ content: skipRole === 'system' ? (r.Message.length > 5000 ? "PARTIAL CONTENT: " + r.Message.substring(0, 5000) : r.Message) : r.Message,
156
+ role: skipRole,
157
+ };
158
+ return m;
159
+ });
160
+ }
161
+ }
162
+ catch (e) {
163
+ (0, core_1.LogError)(e);
164
+ throw e;
165
+ }
166
+ }
167
+ MapDBRoleToSkipRole(role) {
168
+ switch (role.trim().toLowerCase()) {
169
+ case 'ai':
170
+ return 'system';
171
+ default:
172
+ return 'user';
173
+ }
174
+ }
120
175
  async HandleSkipRequest(input, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, md, convoEntity, convoDetailEntity) {
176
+ (0, core_1.LogStatus)(`Sending request to Skip API: ${config_1.___skipAPIurl}`);
121
177
  const compressedPayload = await gzip(Buffer.from(JSON.stringify(input)));
122
- const response = await axios_1.default.post(___skipAPIurl, compressedPayload, {
178
+ const response = await axios_1.default.post(config_1.___skipAPIurl, compressedPayload, {
123
179
  headers: {
124
180
  'Content-Type': 'application/json',
125
181
  'Content-Encoding': 'gzip'
@@ -127,42 +183,19 @@ let AskSkipResolver = AskSkipResolver_1 = class AskSkipResolver {
127
183
  });
128
184
  if (response.status === 200) {
129
185
  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
- });
186
+ (0, core_1.LogStatus)(` Skip API response: ${apiResponse.responsePhase}`);
187
+ this.PublishApiResponseUserUpdateMessage(apiResponse, userPayload, pubSub);
150
188
  if (apiResponse.responsePhase === 'data_request') {
151
189
  return await this.HandleDataRequestPhase(input, apiResponse, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, convoEntity, convoDetailEntity);
152
190
  }
153
191
  else if (apiResponse.responsePhase === 'clarifying_question') {
154
- throw new Error('Clarifying question not implemented yet');
192
+ return await this.HandleClarifyingQuestionPhase(input, apiResponse, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, convoEntity, convoDetailEntity);
193
+ }
194
+ else if (apiResponse.responsePhase === 'analysis_complete') {
195
+ return await this.HandleAnalysisComplete(input, apiResponse, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, convoEntity, convoDetailEntity);
155
196
  }
156
197
  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
- };
198
+ throw new Error(`Unknown Skip API response phase: ${apiResponse.responsePhase}`);
166
199
  }
167
200
  }
168
201
  else {
@@ -178,53 +211,160 @@ let AskSkipResolver = AskSkipResolver_1 = class AskSkipResolver {
178
211
  Success: false,
179
212
  Status: 'Error',
180
213
  Result: `User Question ${UserQuestion} didn't work!`,
214
+ ResponsePhase: SkipResponsePhase.AnalysisComplete,
181
215
  ConversationId: ConversationId,
182
216
  UserMessageConversationDetailId: 0,
183
217
  AIMessageConversationDetailId: 0,
184
218
  };
185
219
  }
186
220
  }
221
+ async PublishApiResponseUserUpdateMessage(apiResponse, userPayload, pubSub) {
222
+ let sUserMessage = '';
223
+ switch (apiResponse.responsePhase) {
224
+ case 'data_request':
225
+ sUserMessage = 'We need to gather some more data, I will do that next and update you soon.';
226
+ break;
227
+ case 'analysis_complete':
228
+ sUserMessage = 'I have completed the analysis, the results will be available momentarily.';
229
+ break;
230
+ case 'clarifying_question':
231
+ sUserMessage = 'I have a clarifying question for you, please see review our chat so you can provide me a little more info.';
232
+ break;
233
+ }
234
+ pubSub.publish(PushStatusResolver_1.PUSH_STATUS_UPDATES_TOPIC, {
235
+ message: JSON.stringify({
236
+ type: 'AskSkip',
237
+ status: 'OK',
238
+ message: sUserMessage,
239
+ }),
240
+ sessionId: userPayload.sessionId,
241
+ });
242
+ }
243
+ async HandleAnalysisComplete(apiRequest, apiResponse, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, convoEntity, convoDetailEntity) {
244
+ const md = new core_1.Metadata();
245
+ const { AIMessageConversationDetailID } = await this.FinishConversationAndNotifyUser(apiResponse, md, user, convoEntity, pubSub, userPayload);
246
+ return {
247
+ Success: true,
248
+ Status: 'OK',
249
+ ResponsePhase: SkipResponsePhase.AnalysisComplete,
250
+ ConversationId: ConversationId,
251
+ UserMessageConversationDetailId: convoDetailEntity.ID,
252
+ AIMessageConversationDetailId: AIMessageConversationDetailID,
253
+ Result: JSON.stringify(apiResponse)
254
+ };
255
+ }
256
+ async HandleClarifyingQuestionPhase(apiRequest, apiResponse, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, convoEntity, convoDetailEntity) {
257
+ const md = new core_1.Metadata();
258
+ const convoDetailEntityAI = await md.GetEntityObject('Conversation Details', user);
259
+ convoDetailEntityAI.NewRecord();
260
+ convoDetailEntityAI.ConversationID = ConversationId;
261
+ convoDetailEntityAI.Message = apiResponse.clarifyingQuestion;
262
+ convoDetailEntityAI.Role = 'AI';
263
+ if (await convoDetailEntityAI.Save()) {
264
+ return {
265
+ Success: true,
266
+ Status: 'OK',
267
+ ResponsePhase: SkipResponsePhase.ClarifyingQuestion,
268
+ ConversationId: ConversationId,
269
+ UserMessageConversationDetailId: convoDetailEntity.ID,
270
+ AIMessageConversationDetailId: convoDetailEntityAI.ID,
271
+ Result: JSON.stringify(apiResponse)
272
+ };
273
+ }
274
+ else {
275
+ return {
276
+ Success: false,
277
+ Status: 'Error',
278
+ ResponsePhase: SkipResponsePhase.ClarifyingQuestion,
279
+ ConversationId: ConversationId,
280
+ UserMessageConversationDetailId: convoDetailEntity.ID,
281
+ AIMessageConversationDetailId: convoDetailEntityAI.ID,
282
+ Result: JSON.stringify(apiResponse)
283
+ };
284
+ }
285
+ }
187
286
  async HandleDataRequestPhase(apiRequest, apiResponse, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, convoEntity, convoDetailEntity) {
188
287
  try {
288
+ const _maxDataGatheringRetries = 5;
289
+ const _dataGatheringFailureHeaderMessage = '***DATA GATHERING FAILURE***';
189
290
  const md = new core_1.Metadata();
291
+ const executionErrors = [];
292
+ apiRequest.messages.push({
293
+ content: `Skip API Requested Data as shown below
294
+ ${JSON.stringify(apiResponse.dataRequest)}`,
295
+ role: 'system'
296
+ });
190
297
  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);
298
+ try {
299
+ switch (dr.type) {
300
+ case "sql":
301
+ const sql = dr.text;
302
+ const result = await dataSource.query(sql);
303
+ if (!result)
304
+ throw new Error(`Error running SQL: ${sql}`);
305
+ const item = new skip_types_1.SkipDataContextItem();
306
+ item.Type = 'sql';
307
+ item.Data = result;
308
+ item.RecordName = dr.text;
309
+ item.AdditionalDescription = dr.description;
310
+ apiRequest.dataContext.Items.push(item);
311
+ break;
312
+ case "stored_query":
313
+ const queryName = dr.text;
314
+ const query = md.Queries.find((q) => q.Name === queryName);
315
+ if (query) {
316
+ const rq = new core_1.RunQuery();
317
+ const result = await rq.RunQuery({ QueryID: query.ID }, user);
318
+ if (result && result.Success) {
319
+ const item = new skip_types_1.SkipDataContextItem();
320
+ item.Type = 'query';
321
+ item.Data = result.Results;
322
+ item.RecordID = query.ID;
323
+ item.RecordName = query.Name;
324
+ item.AdditionalDescription = dr.description;
325
+ apiRequest.dataContext.Items.push(item);
326
+ }
327
+ else
328
+ throw new Error(`Error running query ${queryName}`);
218
329
  }
219
330
  else
220
- throw new Error(`Error running query ${queryName}`);
221
- }
222
- else
223
- throw new Error(`Query ${queryName} not found.`);
224
- break;
331
+ throw new Error(`Query ${queryName} not found.`);
332
+ break;
333
+ }
334
+ }
335
+ catch (e) {
336
+ (0, core_1.LogError)(e);
337
+ executionErrors.push({ dataRequest: dr, errorMessage: e && e.message ? e.message : e.toString() });
338
+ }
339
+ }
340
+ if (executionErrors.length > 0) {
341
+ const dataGatheringFailedAttemptCount = apiRequest.messages.filter((m) => m.content.includes(_dataGatheringFailureHeaderMessage)).length + 1;
342
+ if (dataGatheringFailedAttemptCount > _maxDataGatheringRetries) {
343
+ (0, core_1.LogStatus)(`Execution errors for Skip data request occured, and we have exceeded the max retries${_maxDataGatheringRetries}, sending errors back to the user.`);
344
+ return {
345
+ Success: false,
346
+ Status: 'Error gathering data and we have exceedded the max retries. Try again later and Skip might be able to handle this request.',
347
+ ResponsePhase: SkipResponsePhase.DataRequest,
348
+ ConversationId: ConversationId,
349
+ UserMessageConversationDetailId: convoDetailEntity.ID,
350
+ AIMessageConversationDetailId: 0,
351
+ Result: JSON.stringify(apiResponse)
352
+ };
225
353
  }
354
+ else {
355
+ (0, core_1.LogStatus)(`Execution errors for Skip data request occured, sending those errors back to the Skip API to get new instructions.`);
356
+ apiRequest.requestPhase = 'data_gathering_failure';
357
+ apiRequest.messages.push({
358
+ content: `${_dataGatheringFailureHeaderMessage} #${dataGatheringFailedAttemptCount} of ${_maxDataGatheringRetries} attempts to gather data failed. Errors:
359
+ ${JSON.stringify(executionErrors)}
360
+ `,
361
+ role: 'user'
362
+ });
363
+ }
364
+ }
365
+ else {
366
+ apiRequest.requestPhase = 'data_gathering_response';
226
367
  }
227
- apiRequest.requestPhase = 'data_gathering_response';
228
368
  return this.HandleSkipRequest(apiRequest, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, md, convoEntity, convoDetailEntity);
229
369
  }
230
370
  catch (e) {
@@ -283,6 +423,7 @@ let AskSkipResolver = AskSkipResolver_1 = class AskSkipResolver {
283
423
  };
284
424
  exports.AskSkipResolver = AskSkipResolver;
285
425
  AskSkipResolver._defaultNewChatName = 'New Chat';
426
+ AskSkipResolver._maxHistoricalMessages = 8;
286
427
  __decorate([
287
428
  (0, type_graphql_1.Query)(() => AskSkipResultType),
288
429
  __param(0, (0, type_graphql_1.Arg)('UserQuestion', () => String)),
@@ -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.163",
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.14",
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();
@@ -28,7 +28,6 @@ export class PushStatusResolver {
28
28
  @Subscription(() => PushStatusNotification, {
29
29
  topics: PUSH_STATUS_UPDATES_TOPIC,
30
30
  filter: ({ payload, args, context }: ResolverFilterData<PushStatusNotificationPayload, PushStatusNotificationArgs, any>) => {
31
- console.log('context', context);
32
31
  return payload.sessionId === args.sessionId;
33
32
  },
34
33
  })
@@ -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
 
@@ -45,6 +58,7 @@ export class AskSkipResultType {
45
58
  @Resolver(AskSkipResultType)
46
59
  export class AskSkipResolver {
47
60
  private static _defaultNewChatName = 'New Chat';
61
+ private static _maxHistoricalMessages = 8;
48
62
 
49
63
 
50
64
  @Query(() => AskSkipResultType)
@@ -66,9 +80,14 @@ export class AskSkipResolver {
66
80
  if (user) {
67
81
  convoEntity.UserID = user.ID;
68
82
  convoEntity.Name = AskSkipResolver._defaultNewChatName;
69
- if (await convoEntity.Save()) ConversationId = convoEntity.ID;
70
- else throw new Error(`Creating a new conversation failed`);
71
- } else throw new Error(`User ${userPayload.email} not found in UserCache`);
83
+ if (await convoEntity.Save())
84
+ ConversationId = convoEntity.ID;
85
+ else
86
+ throw new Error(`Creating a new conversation failed`);
87
+ }
88
+ else {
89
+ throw new Error(`User ${userPayload.email} not found in UserCache`);
90
+ }
72
91
  } else {
73
92
  await convoEntity.Load(ConversationId); // load the existing conversation, will need it later
74
93
  }
@@ -83,7 +102,7 @@ export class AskSkipResolver {
83
102
  await convoDetailEntity.Save();
84
103
 
85
104
  //const OrganizationId = 2 //HG 8/1/2023 TODO: Pull this from an environment variable
86
- const OrganizationId = process.env.BOT_SCHEMA_ORGANIZATION_ID;
105
+ const OrganizationId = ___skipAPIOrgId;
87
106
  const dataContext: SkipDataContext = new SkipDataContext();
88
107
  dataContext.Items.push(
89
108
  {
@@ -93,12 +112,8 @@ export class AskSkipResolver {
93
112
  } as SkipDataContextItem
94
113
  );
95
114
 
96
- const messages: SkipMessage[] = [
97
- {
98
- content: UserQuestion,
99
- role: 'user'
100
- }
101
- ];
115
+ // now load up the messages. We will load up ALL of the messages for this conversation, and then pass them to the Skip API
116
+ const messages: SkipMessage[] = await this.LoadConversationDetailsIntoSkipMessages(dataSource, convoEntity.ID, AskSkipResolver._maxHistoricalMessages);
102
117
 
103
118
  const input: SkipAPIRequest = {
104
119
  messages: messages,
@@ -120,10 +135,65 @@ export class AskSkipResolver {
120
135
  return this.HandleSkipRequest(input, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, md, convoEntity, convoDetailEntity);
121
136
  }
122
137
 
138
+ protected async LoadConversationDetailsIntoSkipMessages(dataSource: DataSource, ConversationId: number, maxHistoricalMessages?: number): Promise<SkipMessage[]> {
139
+ try {
140
+ // load up all the conversation details from the database server
141
+ const md = new Metadata();
142
+ const e = md.Entities.find((e) => e.Name === 'Conversation Details');
143
+ const sql = `SELECT
144
+ ${maxHistoricalMessages ? 'TOP ' + maxHistoricalMessages : ''} ID, Message, Role, CreatedAt
145
+ FROM
146
+ ${e.SchemaName}.${e.BaseView}
147
+ WHERE
148
+ ConversationID = ${ConversationId}
149
+ ORDER
150
+ BY CreatedAt DESC`;
151
+ const result = await dataSource.query(sql);
152
+ if (!result)
153
+ throw new Error(`Error running SQL: ${sql}`);
154
+ else {
155
+ // first, let's sort the result array into a local variable called returnData and in that we will sort by CreatedAt in ASCENDING order so we have the right chronological order
156
+ // the reason we're doing a LOCAL sort here is because in the SQL query above, we're sorting in DESCENDING order so we can use the TOP clause to limit the number of records and get the
157
+ // N most recent records. We want to sort in ASCENDING order because we want to send the messages to the Skip API in the order they were created.
158
+ const returnData = result.sort((a: any, b: any) => {
159
+ const aDate = new Date(a.CreatedAt);
160
+ const bDate = new Date(b.CreatedAt);
161
+ return aDate.getTime() - bDate.getTime();
162
+ });
163
+
164
+ // now, we will map the returnData into an array of SkipMessages
165
+ return returnData.map((r: ConversationDetailEntity) => {
166
+ // we want to limit the # of characters in the message to 5000, rough approximation for 1000 words/tokens
167
+ // but we only do that for system messages
168
+ const skipRole = this.MapDBRoleToSkipRole(r.Role);
169
+ const m: SkipMessage = {
170
+ content: skipRole === 'system' ? (r.Message.length > 5000 ? "PARTIAL CONTENT: " + r.Message.substring(0, 5000) : r.Message) : r.Message,
171
+ role: skipRole,
172
+ };
173
+ return m;
174
+ });
175
+ }
176
+ }
177
+ catch (e) {
178
+ LogError(e);
179
+ throw e;
180
+ }
181
+ }
182
+
183
+ protected MapDBRoleToSkipRole(role: string): "user" | "system" {
184
+ switch (role.trim().toLowerCase()) {
185
+ case 'ai':
186
+ return 'system';
187
+ default:
188
+ return 'user';
189
+ }
190
+ }
123
191
 
124
192
  protected async HandleSkipRequest(input: SkipAPIRequest, UserQuestion: string, user: UserInfo, dataSource: DataSource,
125
193
  ConversationId: number, userPayload: UserPayload, pubSub: PubSubEngine, md: Metadata,
126
194
  convoEntity: ConversationEntity, convoDetailEntity: ConversationDetailEntity): Promise<AskSkipResultType> {
195
+ LogStatus(`Sending request to Skip API: ${___skipAPIurl}`)
196
+
127
197
  // Convert JSON payload to a Buffer and compress it
128
198
  const compressedPayload = await gzip(Buffer.from(JSON.stringify(input)));
129
199
 
@@ -135,36 +205,10 @@ export class AskSkipResolver {
135
205
  }
136
206
  });
137
207
 
138
- // const response = await axios({
139
- // method: 'post',
140
- // url: ___skipAPIurl,
141
- // data: input,
142
- // });
143
-
144
208
  if (response.status === 200) {
145
209
  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
- });
210
+ LogStatus(` Skip API response: ${apiResponse.responsePhase}`)
211
+ this.PublishApiResponseUserUpdateMessage(apiResponse, userPayload, pubSub);
168
212
 
169
213
  // now, based on the result type, we will either wait for the next phase or we will process the results
170
214
  if (apiResponse.responsePhase === 'data_request') {
@@ -172,22 +216,14 @@ export class AskSkipResolver {
172
216
  }
173
217
  else if (apiResponse.responsePhase === 'clarifying_question') {
174
218
  // 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');
219
+ return await this.HandleClarifyingQuestionPhase(input, <SkipAPIClarifyingQuestionResponse>apiResponse, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, convoEntity, convoDetailEntity);
220
+ }
221
+ else if (apiResponse.responsePhase === 'analysis_complete') {
222
+ return await this.HandleAnalysisComplete(input, <SkipAPIAnalysisCompleteResponse>apiResponse, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, convoEntity, convoDetailEntity);
177
223
  }
178
- 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
- };
224
+ else {
225
+ // unknown response phase
226
+ throw new Error(`Unknown Skip API response phase: ${apiResponse.responsePhase}`);
191
227
  }
192
228
  }
193
229
  else {
@@ -204,6 +240,7 @@ export class AskSkipResolver {
204
240
  Success: false,
205
241
  Status: 'Error',
206
242
  Result: `User Question ${UserQuestion} didn't work!`,
243
+ ResponsePhase: SkipResponsePhase.AnalysisComplete,
207
244
  ConversationId: ConversationId,
208
245
  UserMessageConversationDetailId: 0,
209
246
  AIMessageConversationDetailId: 0,
@@ -211,52 +248,173 @@ export class AskSkipResolver {
211
248
  }
212
249
  }
213
250
 
251
+ protected async PublishApiResponseUserUpdateMessage(apiResponse: SkipAPIResponse, userPayload: UserPayload, pubSub: PubSubEngine) {
252
+ let sUserMessage: string = '';
253
+ switch (apiResponse.responsePhase) {
254
+ case 'data_request':
255
+ sUserMessage = 'We need to gather some more data, I will do that next and update you soon.';
256
+ break;
257
+ case 'analysis_complete':
258
+ sUserMessage = 'I have completed the analysis, the results will be available momentarily.';
259
+ break;
260
+ case 'clarifying_question':
261
+ sUserMessage = 'I have a clarifying question for you, please see review our chat so you can provide me a little more info.';
262
+ break;
263
+ }
264
+
265
+ // update the UI
266
+ pubSub.publish(PUSH_STATUS_UPDATES_TOPIC, {
267
+ message: JSON.stringify({
268
+ type: 'AskSkip',
269
+ status: 'OK',
270
+ message: sUserMessage,
271
+ }),
272
+ sessionId: userPayload.sessionId,
273
+ });
274
+ }
275
+
276
+ protected async HandleAnalysisComplete(apiRequest: SkipAPIRequest, apiResponse: SkipAPIAnalysisCompleteResponse, UserQuestion: string, user: UserInfo, dataSource: DataSource,
277
+ ConversationId: number, userPayload: UserPayload, pubSub: PubSubEngine, convoEntity: ConversationEntity, convoDetailEntity: ConversationDetailEntity): Promise<AskSkipResultType> {
278
+ // analysis is complete
279
+ // all done, wrap things up
280
+ const md = new Metadata();
281
+ const {AIMessageConversationDetailID} = await this.FinishConversationAndNotifyUser(apiResponse, md, user, convoEntity, pubSub, userPayload);
282
+
283
+ return {
284
+ Success: true,
285
+ Status: 'OK',
286
+ ResponsePhase: SkipResponsePhase.AnalysisComplete,
287
+ ConversationId: ConversationId,
288
+ UserMessageConversationDetailId: convoDetailEntity.ID,
289
+ AIMessageConversationDetailId: AIMessageConversationDetailID,
290
+ Result: JSON.stringify(apiResponse)
291
+ };
292
+ }
293
+
294
+ protected async HandleClarifyingQuestionPhase(apiRequest: SkipAPIRequest, apiResponse: SkipAPIClarifyingQuestionResponse, UserQuestion: string, user: UserInfo, dataSource: DataSource,
295
+ ConversationId: number, userPayload: UserPayload, pubSub: PubSubEngine, convoEntity: ConversationEntity, convoDetailEntity: ConversationDetailEntity): Promise<AskSkipResultType> {
296
+ // need to create a message here in the COnversation and then pass that id below
297
+ const md = new Metadata();
298
+ const convoDetailEntityAI = <ConversationDetailEntity>await md.GetEntityObject('Conversation Details', user);
299
+ convoDetailEntityAI.NewRecord();
300
+ convoDetailEntityAI.ConversationID = ConversationId;
301
+ convoDetailEntityAI.Message = apiResponse.clarifyingQuestion;
302
+ convoDetailEntityAI.Role = 'AI';
303
+ if (await convoDetailEntityAI.Save()) {
304
+ return {
305
+ Success: true,
306
+ Status: 'OK',
307
+ ResponsePhase: SkipResponsePhase.ClarifyingQuestion,
308
+ ConversationId: ConversationId,
309
+ UserMessageConversationDetailId: convoDetailEntity.ID,
310
+ AIMessageConversationDetailId: convoDetailEntityAI.ID,
311
+ Result: JSON.stringify(apiResponse)
312
+ };
313
+ }
314
+ else {
315
+ return {
316
+ Success: false,
317
+ Status: 'Error',
318
+ ResponsePhase: SkipResponsePhase.ClarifyingQuestion,
319
+ ConversationId: ConversationId,
320
+ UserMessageConversationDetailId: convoDetailEntity.ID,
321
+ AIMessageConversationDetailId: convoDetailEntityAI.ID,
322
+ Result: JSON.stringify(apiResponse)
323
+ };
324
+ }
325
+ }
326
+
214
327
  protected async HandleDataRequestPhase(apiRequest: SkipAPIRequest, apiResponse: SkipAPIDataRequestResponse, UserQuestion: string, user: UserInfo, dataSource: DataSource,
215
328
  ConversationId: number, userPayload: UserPayload, pubSub: PubSubEngine, convoEntity: ConversationEntity, convoDetailEntity: ConversationDetailEntity): Promise<AskSkipResultType> {
216
329
  // 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
330
  try {
331
+ const _maxDataGatheringRetries = 5;
332
+ const _dataGatheringFailureHeaderMessage = '***DATA GATHERING FAILURE***';
218
333
  const md = new Metadata();
334
+ const executionErrors = [];
335
+
336
+ // first, in this situation we want to add a message to our apiRequest so that it is part of the message history with the server
337
+ apiRequest.messages.push({
338
+ content: `Skip API Requested Data as shown below
339
+ ${JSON.stringify(apiResponse.dataRequest)}`,
340
+ role: 'system' // user role of system because this came from Skip, we are simplifying the message for the next round if we need to send it back
341
+ });
342
+
219
343
  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);
344
+ try {
345
+ switch (dr.type) {
346
+ case "sql":
347
+ const sql = dr.text;
348
+ const result = await dataSource.query(sql);
349
+ if (!result)
350
+ throw new Error(`Error running SQL: ${sql}`);
351
+
352
+ const item = new SkipDataContextItem();
353
+ item.Type = 'sql';
354
+ item.Data = result;
355
+ item.RecordName = dr.text;
356
+ item.AdditionalDescription = dr.description;
357
+ apiRequest.dataContext.Items.push(item);
358
+ break;
359
+ case "stored_query":
360
+ const queryName = dr.text;
361
+ const query = md.Queries.find((q) => q.Name === queryName);
362
+ if (query) {
363
+ const rq = new RunQuery();
364
+ const result = await rq.RunQuery({QueryID: query.ID}, user)
365
+ if (result && result.Success) {
366
+ const item = new SkipDataContextItem();
367
+ item.Type = 'query';
368
+ item.Data = result.Results;
369
+ item.RecordID = query.ID;
370
+ item.RecordName = query.Name;
371
+ item.AdditionalDescription = dr.description;
372
+ apiRequest.dataContext.Items.push(item);
373
+ }
374
+ else
375
+ throw new Error(`Error running query ${queryName}`);
248
376
  }
249
377
  else
250
- throw new Error(`Error running query ${queryName}`);
251
- }
252
- else
253
- throw new Error(`Query ${queryName} not found.`);
254
- break;
378
+ throw new Error(`Query ${queryName} not found.`);
379
+ break;
380
+ }
381
+ }
382
+ catch (e) {
383
+ LogError(e);
384
+ executionErrors.push({dataRequest: dr, errorMessage: e && e.message ? e.message : e.toString()});
255
385
  }
256
386
  }
257
387
 
388
+ if (executionErrors.length > 0) {
389
+ const dataGatheringFailedAttemptCount = apiRequest.messages.filter((m) => m.content.includes(_dataGatheringFailureHeaderMessage)).length + 1;
390
+ if (dataGatheringFailedAttemptCount > _maxDataGatheringRetries) {
391
+ // we have exceeded the max retries, so in this case we do NOT go back to Skip, instead we just send the errors back to the user
392
+ LogStatus(`Execution errors for Skip data request occured, and we have exceeded the max retries${_maxDataGatheringRetries}, sending errors back to the user.`);
393
+ return {
394
+ Success: false,
395
+ Status: 'Error gathering data and we have exceedded the max retries. Try again later and Skip might be able to handle this request.',
396
+ ResponsePhase: SkipResponsePhase.DataRequest,
397
+ ConversationId: ConversationId,
398
+ UserMessageConversationDetailId: convoDetailEntity.ID,
399
+ AIMessageConversationDetailId: 0,
400
+ Result: JSON.stringify(apiResponse)
401
+ };
402
+ }
403
+ else {
404
+ LogStatus(`Execution errors for Skip data request occured, sending those errors back to the Skip API to get new instructions.`);
405
+ apiRequest.requestPhase = 'data_gathering_failure';
406
+ apiRequest.messages.push({
407
+ content: `${_dataGatheringFailureHeaderMessage} #${dataGatheringFailedAttemptCount} of ${_maxDataGatheringRetries} attempts to gather data failed. Errors:
408
+ ${JSON.stringify(executionErrors)}
409
+ `,
410
+ role: 'user' // use user role becuase to the Skip API what we send it is "user"
411
+ });
412
+ }
413
+ }
414
+ else {
415
+ apiRequest.requestPhase = 'data_gathering_response';
416
+ }
258
417
  // 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
418
  return this.HandleSkipRequest(apiRequest, UserQuestion, user, dataSource, ConversationId, userPayload, pubSub, md, convoEntity, convoDetailEntity);
261
419
  }
262
420
  catch (e) {