@tiledesk/tiledesk-server 2.8.5 → 2.8.7

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/CHANGELOG.md CHANGED
@@ -5,6 +5,12 @@
5
5
  🚀 IN PRODUCTION 🚀
6
6
  (https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.77)
7
7
 
8
+ # 2.8.7
9
+ - Update project update endpoint with agent chats only function
10
+
11
+ # 2.8.6
12
+ - Bug fix: token count was incremented in action preview and kb preview even with a private key in integration
13
+
8
14
  # 2.8.5
9
15
  - Restored sandbox limits for free trial plan
10
16
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tiledesk/tiledesk-server",
3
3
  "description": "The Tiledesk server module",
4
- "version": "2.8.5",
4
+ "version": "2.8.7",
5
5
  "scripts": {
6
6
  "start": "node ./bin/www",
7
7
  "pretest": "mongodb-runner start",
package/routes/kb.js CHANGED
@@ -13,6 +13,7 @@ const Sitemapper = require('sitemapper');
13
13
  var mongoose = require('mongoose');
14
14
  const faq = require('../models/faq');
15
15
  const faq_kb = require('../models/faq_kb');
16
+ let Integration = require('../models/integrations');
16
17
 
17
18
  const { MODELS_MULTIPLIER } = require('../utils/aiUtils');
18
19
 
@@ -186,20 +187,22 @@ router.post('/qa', async (req, res) => {
186
187
  }
187
188
 
188
189
  let namespaceIds = namespaces.map(namespace => namespace.id);
189
-
190
190
  if (!namespaceIds.includes(data.namespace)) {
191
191
  return res.status(403).send({ success: false, error: "Not allowed. The namespace does not belong to the current project." })
192
192
  }
193
-
193
+
194
194
  winston.debug("/qa data: ", data);
195
195
 
196
196
  if (!data.gptkey) {
197
- let gptkey = process.env.GPTKEY;
197
+ let gptkey = await getKeyFromIntegrations(project_id);
198
+ if (!gptkey) {
199
+ gptkey = process.env.GPTKEY;
200
+ publicKey = true;
201
+ }
198
202
  if (!gptkey) {
199
203
  return res.status(403).send({ success: false, error: "GPT apikey undefined" })
200
204
  }
201
205
  data.gptkey = gptkey;
202
- publicKey = true;
203
206
  }
204
207
 
205
208
  let obj = { createdAt: new Date() };
@@ -221,6 +224,10 @@ router.post('/qa', async (req, res) => {
221
224
  }
222
225
  }
223
226
 
227
+ // if (process.env.NODE_ENV === 'test') {
228
+ // return res.status(200).send({ success: true, message: "Question skipped in test environment"});
229
+ // }
230
+
224
231
  openaiService.askNamespace(data).then((resp) => {
225
232
  winston.debug("qa resp: ", resp.data);
226
233
  let answer = resp.data;
@@ -233,16 +240,18 @@ router.post('/qa', async (req, res) => {
233
240
 
234
241
  KB.findById(id, (err, resource) => {
235
242
 
236
- let multiplier = MODELS_MULTIPLIER[data.model];
237
- if (!multiplier) {
238
- multiplier = 1;
239
- winston.info("No multiplier found for AI model")
243
+ if (publicKey === true) {
244
+ let multiplier = MODELS_MULTIPLIER[data.model];
245
+ if (!multiplier) {
246
+ multiplier = 1;
247
+ winston.info("No multiplier found for AI model")
248
+ }
249
+ obj.multiplier = multiplier;
250
+ obj.tokens = answer.prompt_token_size;
251
+
252
+ let incremented_key = quoteManager.incrementTokenCount(req.project, obj);
253
+ winston.verbose("incremented_key: ", incremented_key);
240
254
  }
241
- obj.multiplier = multiplier;
242
- obj.tokens = answer.prompt_token_size;
243
-
244
- let incremented_key = quoteManager.incrementTokenCount(req.project, obj);
245
- winston.verbose("incremented_key: ", incremented_key);
246
255
 
247
256
  if (err) {
248
257
  winston.error("Unable to find resource with id " + id + " in namespace " + answer.namespace + ". The standard answer is returned.")
@@ -517,7 +526,7 @@ router.post('/namespace', async (req, res) => {
517
526
  let quoteManager = req.app.get('quote_manager');
518
527
  let limits = await quoteManager.getPlanLimits(req.project);
519
528
  let ns_limit = limits.namespace;
520
- console.log("Limit of namespaces for current plan " + ns_limit);
529
+ //console.log("Limit of namespaces for current plan " + ns_limit);
521
530
 
522
531
  if (namespaces.length >= ns_limit) {
523
532
  return res.status(403).send({ success: false, error: "Maximum number of resources reached for the current plan", plan_limit: ns_limit });
@@ -1199,6 +1208,22 @@ async function startScrape(data) {
1199
1208
  })
1200
1209
  })
1201
1210
  }
1211
+
1212
+ async function getKeyFromIntegrations(project_id) {
1213
+
1214
+ return new Promise( async (resolve) => {
1215
+
1216
+ let integration = await Integration.findOne({ id_project: project_id, name: 'openai' }).catch((err) => {
1217
+ winston.error("Unable to find openai integration for the current project " + project_id);
1218
+ resolve(null);
1219
+ })
1220
+ if (integration && integration.value && integration.value.apikey) {
1221
+ resolve(integration.value.apikey);
1222
+ } else {
1223
+ resolve(null);
1224
+ }
1225
+ })
1226
+ }
1202
1227
  /**
1203
1228
  * ****************************************
1204
1229
  * Utils Methods Section - End
package/routes/project.js CHANGED
@@ -419,6 +419,10 @@ router.put('/:projectid', [passport.authenticate(['basic', 'jwt'], { session: fa
419
419
  if (req.body["settings.automatic_idle_chats"]!=undefined) {
420
420
  update["settings.automatic_idle_chats"] = req.body["settings.automatic_idle_chats"];
421
421
  }
422
+
423
+ if (req.body["settings.current_agent_my_chats_only"]!=undefined) {
424
+ update["settings.current_agent_my_chats_only"] = req.body["settings.current_agent_my_chats_only"];
425
+ }
422
426
 
423
427
  if (req.body.widget!=undefined) {
424
428
  update.widget = req.body.widget;
package/test/kbRoute.js CHANGED
@@ -1003,6 +1003,93 @@ describe('KbRoute', () => {
1003
1003
 
1004
1004
  // }).timeout(10000)
1005
1005
 
1006
+ // Ask KB
1007
+ // it('askkb-key-from-integrations', (done) => {
1008
+
1009
+ // var email = "test-signup-" + Date.now() + "@email.com";
1010
+ // var pwd = "pwd";
1011
+
1012
+ // userService.signup(email, pwd, "Test Firstname", "Test Lastname").then((savedUser) => {
1013
+ // projectService.create("test-kb-qa", savedUser._id).then((savedProject) => {
1014
+
1015
+ // chai.request(server)
1016
+ // .post('/' + savedProject._id + "/integration/")
1017
+ // .auth(email, pwd)
1018
+ // .send({ name: "openai", value: { apikey: "sk-testkey", organization: "Testkey" } })
1019
+ // .end((err, res) => {
1020
+
1021
+ // if (err) { console.error("err: ", err) };
1022
+ // if (log) { console.log("res.body: ", res.body) };
1023
+ // console.log("Integration created..")
1024
+
1025
+ // chai.request(server)
1026
+ // .get('/' + savedProject._id + '/kb/namespace/all')
1027
+ // .auth(email, pwd)
1028
+ // .end((err, res) => {
1029
+
1030
+ // if (err) { console.error("err: ", err); }
1031
+ // if (log) { console.log("get all namespaces res.body: ", res.body); }
1032
+
1033
+ // console.log("namespace created..")
1034
+
1035
+ // chai.request(server)
1036
+ // .post('/' + savedProject._id + "/kb/qa")
1037
+ // .auth(email, pwd)
1038
+ // .send({ model: "gpt-4o", namespace: savedProject._id, question: "sample question" })
1039
+ // .end((err, res) => {
1040
+
1041
+ // if (err) { console.error("err: ", err) };
1042
+ // if (log) { console.log("res.body: ", res.body) };
1043
+ // console.log("res.body: ", res.body)
1044
+ // done();
1045
+ // })
1046
+
1047
+
1048
+ // })
1049
+
1050
+ // })
1051
+ // })
1052
+ // })
1053
+ // }).timeout(10000)
1054
+
1055
+ // Ask KB
1056
+ // it('askkb-key-from-env', (done) => {
1057
+
1058
+ // var email = "test-signup-" + Date.now() + "@email.com";
1059
+ // var pwd = "pwd";
1060
+
1061
+ // userService.signup(email, pwd, "Test Firstname", "Test Lastname").then((savedUser) => {
1062
+ // projectService.create("test-kb-qa", savedUser._id).then((savedProject) => {
1063
+
1064
+ // chai.request(server)
1065
+ // .get('/' + savedProject._id + '/kb/namespace/all')
1066
+ // .auth(email, pwd)
1067
+ // .end((err, res) => {
1068
+
1069
+ // if (err) { console.error("err: ", err); }
1070
+ // if (log) { console.log("get all namespaces res.body: ", res.body); }
1071
+
1072
+ // console.log("namespace created..")
1073
+
1074
+ // chai.request(server)
1075
+ // .post('/' + savedProject._id + "/kb/qa")
1076
+ // .auth(email, pwd)
1077
+ // .send({ model: "gpt-4o", namespace: savedProject._id, question: "sample question" })
1078
+ // .end((err, res) => {
1079
+
1080
+ // if (err) { console.error("err: ", err) };
1081
+ // if (log) { console.log("res.body: ", res.body) };
1082
+ // console.log("res.body: ", res.body)
1083
+ // done();
1084
+ // })
1085
+
1086
+
1087
+ // })
1088
+ // })
1089
+ // })
1090
+ // }).timeout(10000)
1091
+
1092
+
1006
1093
  it('webhook', (done) => {
1007
1094
 
1008
1095
  var email = "test-signup-" + Date.now() + "@email.com";