@scout9/app 1.0.0-alpha.0.7.1 → 1.0.0-alpha.0.7.2

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.
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var spirits = require("./spirits-8ee2b3b6.cjs");
3
+ var spirits = require("./spirits-51104a4a.cjs");
4
4
  var require$$0$4 = require('util');
5
5
  var require$$0$3 = require('stream');
6
6
  var require$$1 = require('path');
@@ -35241,7 +35241,7 @@ function _loadUserPackageJson() {
35241
35241
  targetPkgUrl = isTest ? packageTestJsonUrl : packageJsonUrl;
35242
35242
  _context2.t0 = JSON;
35243
35243
  _context2.next = 10;
35244
- return fs__default["default"].readFile(new URL(targetPkgUrl, (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('dev-b1573a91.js', document.baseURI).href))), 'utf-8');
35244
+ return fs__default["default"].readFile(new URL(targetPkgUrl, (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('dev-d2f96a9d.js', document.baseURI).href))), 'utf-8');
35245
35245
  case 10:
35246
35246
  _context2.t1 = _context2.sent;
35247
35247
  pkg = _context2.t0.parse.call(_context2.t0, _context2.t1);
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var spirits = require("./spirits-8ee2b3b6.cjs");
4
- var dev = require("./dev-b1573a91.cjs");
3
+ var spirits = require("./spirits-51104a4a.cjs");
4
+ var dev = require("./dev-d2f96a9d.cjs");
5
5
  var macros = require("./macros-22b2e0b8.cjs");
6
6
  var require$$0 = require('fs');
7
7
  var require$$2$1 = require('events');
@@ -29483,7 +29483,7 @@ class Body {
29483
29483
  }
29484
29484
  const {
29485
29485
  toFormData
29486
- } = await Promise.resolve().then(function () { return require("./multipart-parser-5a398f28.cjs"); });
29486
+ } = await Promise.resolve().then(function () { return require("./multipart-parser-d0654ebb.cjs"); });
29487
29487
  return toFormData(this.body, ct);
29488
29488
  }
29489
29489
 
@@ -41884,7 +41884,7 @@ function _loadUserPackageJson() {
41884
41884
  targetPkgUrl = isTest ? packageTestJsonUrl : packageJsonUrl;
41885
41885
  _context.t0 = JSON;
41886
41886
  _context.next = 10;
41887
- return fs__default["default"].readFile(new URL(targetPkgUrl, (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('index-ee8d473f.js', document.baseURI).href))), 'utf-8');
41887
+ return fs__default["default"].readFile(new URL(targetPkgUrl, (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('index-5a88279c.js', document.baseURI).href))), 'utf-8');
41888
41888
  case 10:
41889
41889
  _context.t1 = _context.sent;
41890
41890
  pkg = _context.t0.parse.call(_context.t0, _context.t1);
@@ -43176,7 +43176,7 @@ var ProjectFiles = /*#__PURE__*/function () {
43176
43176
  return ProjectFiles;
43177
43177
  }();
43178
43178
 
43179
- var __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('index-ee8d473f.js', document.baseURI).href)));
43179
+ var __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('index-5a88279c.js', document.baseURI).href)));
43180
43180
  var __dirname$1 = path__default["default"].dirname(__filename$1);
43181
43181
  function zipDirectory(source, out) {
43182
43182
  var archive = archiver$1('tar', {
@@ -43391,7 +43391,7 @@ function _buildApp() {
43391
43391
  case 11:
43392
43392
  _context4.t0 = JSON;
43393
43393
  _context4.next = 14;
43394
- return fs__default["default"].readFile(new URL(templatePackagePath, (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('index-ee8d473f.js', document.baseURI).href))), 'utf-8');
43394
+ return fs__default["default"].readFile(new URL(templatePackagePath, (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('index-5a88279c.js', document.baseURI).href))), 'utf-8');
43395
43395
  case 14:
43396
43396
  _context4.t1 = _context4.sent;
43397
43397
  packageTemplate = _context4.t0.parse.call(_context4.t0, _context4.t1);
package/dist/index.cjs CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = require("./index-ee8d473f.cjs");
6
- var dev = require("./dev-b1573a91.cjs");
7
- require("./spirits-8ee2b3b6.cjs");
5
+ var index = require("./index-5a88279c.cjs");
6
+ var dev = require("./dev-d2f96a9d.cjs");
7
+ require("./spirits-51104a4a.cjs");
8
8
  require("./macros-22b2e0b8.cjs");
9
9
  require('fs');
10
10
  require('events');
@@ -2,9 +2,9 @@
2
2
 
3
3
  require('node:fs');
4
4
  require('node:path');
5
- var index = require("./index-ee8d473f.cjs");
6
- require("./spirits-8ee2b3b6.cjs");
7
- require("./dev-b1573a91.cjs");
5
+ var index = require("./index-5a88279c.cjs");
6
+ require("./spirits-51104a4a.cjs");
7
+ require("./dev-d2f96a9d.cjs");
8
8
  require('util');
9
9
  require('stream');
10
10
  require('path');
@@ -807,22 +807,27 @@ var Spirits = {
807
807
  _slot,
808
808
  slotId,
809
809
  _tasks2,
810
- _iterator3,
811
- _step3,
812
- instruction,
813
810
  _iterator4,
814
811
  _step4,
812
+ instruction,
813
+ _iterator5,
814
+ _step5,
815
815
  _loop,
816
816
  manualMessageObj,
817
817
  now,
818
818
  generatorInput,
819
819
  generatorPayload,
820
- agentMessages,
821
- lastAgentMessage,
822
820
  _generatorPayload$ent,
823
821
  _generatorPayload$con,
822
+ _generatorPayload$med,
823
+ agentMessages,
824
+ lastAgentMessage,
825
+ addedMessages,
824
826
  _iterator2,
825
827
  _step2,
828
+ newMessage,
829
+ _iterator3,
830
+ _step3,
826
831
  transformResponse,
827
832
  _agentMessages,
828
833
  _lastAgentMessage,
@@ -1228,10 +1233,10 @@ var Spirits = {
1228
1233
  _context2.next = 85;
1229
1234
  break;
1230
1235
  }
1231
- _iterator3 = _createForOfIteratorHelper(instructions);
1236
+ _iterator4 = _createForOfIteratorHelper(instructions);
1232
1237
  try {
1233
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
1234
- instruction = _step3.value;
1238
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
1239
+ instruction = _step4.value;
1235
1240
  if (typeof instruction === 'string') {
1236
1241
  addInstruction(instruction, previousLockAttempt);
1237
1242
  } else {
@@ -1239,9 +1244,9 @@ var Spirits = {
1239
1244
  }
1240
1245
  }
1241
1246
  } catch (err) {
1242
- _iterator3.e(err);
1247
+ _iterator4.e(err);
1243
1248
  } finally {
1244
- _iterator3.f();
1249
+ _iterator4.f();
1245
1250
  }
1246
1251
  _context2.next = 90;
1247
1252
  break;
@@ -1260,14 +1265,14 @@ var Spirits = {
1260
1265
  _context2.next = 107;
1261
1266
  break;
1262
1267
  }
1263
- _iterator4 = _createForOfIteratorHelper(removeInstructions);
1268
+ _iterator5 = _createForOfIteratorHelper(removeInstructions);
1264
1269
  _context2.prev = 92;
1265
1270
  _loop = /*#__PURE__*/_regeneratorRuntime().mark(function _loop() {
1266
1271
  var instructionId, index;
1267
1272
  return _regeneratorRuntime().wrap(function _loop$(_context) {
1268
1273
  while (1) switch (_context.prev = _context.next) {
1269
1274
  case 0:
1270
- instructionId = _step4.value;
1275
+ instructionId = _step5.value;
1271
1276
  index = messages.findIndex(function (m) {
1272
1277
  return m.id === instructionId;
1273
1278
  });
@@ -1285,9 +1290,9 @@ var Spirits = {
1285
1290
  }
1286
1291
  }, _loop);
1287
1292
  });
1288
- _iterator4.s();
1293
+ _iterator5.s();
1289
1294
  case 95:
1290
- if ((_step4 = _iterator4.n()).done) {
1295
+ if ((_step5 = _iterator5.n()).done) {
1291
1296
  _context2.next = 99;
1292
1297
  break;
1293
1298
  }
@@ -1301,10 +1306,10 @@ var Spirits = {
1301
1306
  case 101:
1302
1307
  _context2.prev = 101;
1303
1308
  _context2.t1 = _context2["catch"](92);
1304
- _iterator4.e(_context2.t1);
1309
+ _iterator5.e(_context2.t1);
1305
1310
  case 104:
1306
1311
  _context2.prev = 104;
1307
- _iterator4.f();
1312
+ _iterator5.f();
1308
1313
  return _context2.finish(104);
1309
1314
  case 107:
1310
1315
  if (!manualMessage) {
@@ -1420,8 +1425,8 @@ var Spirits = {
1420
1425
  progress('Generated response', 'failed', undefined, {
1421
1426
  error: generatorPayload.error || 'Unknown Reason'
1422
1427
  });
1423
- console.error("Locking conversation, api returned send false: ".concat(generatorPayload.message), generatorPayload.error || 'Unknown Reason');
1424
- conversation = lockConversation(conversation, 'API: ' + generatorPayload.error || 'Unknown Reason');
1428
+ console.error("Locking conversation, api returned send false: ".concat(generatorPayload.message), generatorPayload.error || generatorPayload.forwardNote || 'Unknown Reason');
1429
+ conversation = lockConversation(conversation, 'API: ' + generatorPayload.error || generatorPayload.forwardNote || 'Unknown Reason');
1425
1430
  } else {
1426
1431
  progress('Generated response', 'success', undefined, undefined);
1427
1432
  // Check if already had message
@@ -1429,19 +1434,49 @@ var Spirits = {
1429
1434
  return m.role === 'agent';
1430
1435
  });
1431
1436
  lastAgentMessage = agentMessages[agentMessages.length - 1];
1432
- if (lastAgentMessage && lastAgentMessage.content === generatorPayload.message) {
1437
+ addedMessages = [{
1438
+ id: idGenerator('agent'),
1439
+ content: generatorPayload.message,
1440
+ role: 'agent',
1441
+ time: new Date().toISOString(),
1442
+ entities: (_generatorPayload$ent = generatorPayload.entities) !== null && _generatorPayload$ent !== void 0 ? _generatorPayload$ent : [],
1443
+ context: (_generatorPayload$con = generatorPayload.context) !== null && _generatorPayload$con !== void 0 ? _generatorPayload$con : {},
1444
+ mediaUrls: (_generatorPayload$med = generatorPayload.mediaUrls) !== null && _generatorPayload$med !== void 0 ? _generatorPayload$med : []
1445
+ }].concat(_toConsumableArray(((generatorPayload === null || generatorPayload === void 0 ? void 0 : generatorPayload.addedMessages) || []).map(function (message) {
1446
+ var _message$time, _message$entities, _message$context;
1447
+ return {
1448
+ id: idGenerator('agent'),
1449
+ content: message.content,
1450
+ role: 'agent',
1451
+ time: ((_message$time = message.time) === null || _message$time === void 0 || (_message$time = _message$time.toDate()) === null || _message$time === void 0 ? void 0 : _message$time.toISOString()) || new Date().toISOString(),
1452
+ entities: (_message$entities = message.entities) !== null && _message$entities !== void 0 ? _message$entities : {},
1453
+ context: (_message$context = message.context) !== null && _message$context !== void 0 ? _message$context : {},
1454
+ mediaUrls: message.mediaUrls
1455
+ };
1456
+ }))).reduce(function (accumulator, message) {
1457
+ if (!accumulator.find(function (m) {
1458
+ return m.content === message.content;
1459
+ })) accumulator.push(message);
1460
+ return accumulator;
1461
+ }, []);
1462
+ if (lastAgentMessage && lastAgentMessage.content && addedMessages.some(function (message) {
1463
+ return message.content === lastAgentMessage.content;
1464
+ })) {
1433
1465
  // Error should not have happened
1434
1466
  conversation = lockConversation(conversation, 'Duplicate message');
1435
1467
  } else {
1436
- messages.push({
1437
- id: idGenerator('agent'),
1438
- role: 'agent',
1439
- content: generatorPayload.message,
1440
- time: new Date().toISOString(),
1441
- entities: (_generatorPayload$ent = generatorPayload.entities) !== null && _generatorPayload$ent !== void 0 ? _generatorPayload$ent : [],
1442
- context: (_generatorPayload$con = generatorPayload.context) !== null && _generatorPayload$con !== void 0 ? _generatorPayload$con : {}
1443
- });
1444
- progress('Added agent message', 'info', 'ADD_MESSAGE', messages[messages.length - 1]);
1468
+ _iterator2 = _createForOfIteratorHelper(addedMessages);
1469
+ try {
1470
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
1471
+ newMessage = _step2.value;
1472
+ messages.push(message);
1473
+ progress('Added agent message', 'info', 'ADD_MESSAGE', messages[messages.length - 1]);
1474
+ }
1475
+ } catch (err) {
1476
+ _iterator2.e(err);
1477
+ } finally {
1478
+ _iterator2.f();
1479
+ }
1445
1480
  }
1446
1481
 
1447
1482
  // Check if conversation was marked for forward (generator message still allowed to be sent)
@@ -1467,15 +1502,15 @@ var Spirits = {
1467
1502
  break;
1468
1503
  }
1469
1504
  _context2.prev = 154;
1470
- _iterator2 = _createForOfIteratorHelper(messagesToTransform);
1505
+ _iterator3 = _createForOfIteratorHelper(messagesToTransform);
1471
1506
  _context2.prev = 156;
1472
- _iterator2.s();
1507
+ _iterator3.s();
1473
1508
  case 158:
1474
- if ((_step2 = _iterator2.n()).done) {
1509
+ if ((_step3 = _iterator3.n()).done) {
1475
1510
  _context2.next = 169;
1476
1511
  break;
1477
1512
  }
1478
- _step2.value;
1513
+ _step3.value;
1479
1514
  _context2.next = 162;
1480
1515
  return transformer({
1481
1516
  message: messagesToTransform,
@@ -1513,10 +1548,10 @@ var Spirits = {
1513
1548
  case 171:
1514
1549
  _context2.prev = 171;
1515
1550
  _context2.t4 = _context2["catch"](156);
1516
- _iterator2.e(_context2.t4);
1551
+ _iterator3.e(_context2.t4);
1517
1552
  case 174:
1518
1553
  _context2.prev = 174;
1519
- _iterator2.f();
1554
+ _iterator3.f();
1520
1555
  return _context2.finish(174);
1521
1556
  case 177:
1522
1557
  _context2.next = 184;
package/dist/spirits.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var spirits = require("./spirits-8ee2b3b6.cjs");
5
+ var spirits = require("./spirits-51104a4a.cjs");
6
6
 
7
7
 
8
8
 
@@ -2,8 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var dev = require("./dev-b1573a91.cjs");
6
- require("./spirits-8ee2b3b6.cjs");
5
+ var dev = require("./dev-d2f96a9d.cjs");
6
+ require("./spirits-51104a4a.cjs");
7
7
  require('util');
8
8
  require('stream');
9
9
  require('path');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scout9/app",
3
- "version": "1.0.0-alpha.0.7.1",
3
+ "version": "1.0.0-alpha.0.7.2",
4
4
  "description": "Build and deploy your Scout9 app for SMS auto replies",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -117,7 +117,8 @@ export const Spirits = {
117
117
  * @param {(error: Error) => void} onError
118
118
  * @returns {Promise<ConversationEvent>}
119
119
  */
120
- customer: async function (input, onError = () => {}) {
120
+ customer: async function (input, onError = () => {
121
+ }) {
121
122
  const {
122
123
  customer,
123
124
  config,
@@ -433,7 +434,7 @@ export const Spirits = {
433
434
  yes: anticipate.yes,
434
435
  no: anticipate.no
435
436
  },
436
- did: anticipate.did,
437
+ did: anticipate.did
437
438
  });
438
439
  } else {
439
440
  throw new Error(`Invalid anticipate payload "${JSON.stringify(anticipate)}"`);
@@ -510,7 +511,8 @@ export const Spirits = {
510
511
  } else if (typeof instructions === 'object' && 'content' in instructions) {
511
512
  addInstruction(instructions.content, previousLockAttempt, instructions.id);
512
513
  } else {
513
- throw new Error(`SpiritsError: instructions must be a string or array or {content: "<instruction>"}, got: ${JSON.stringify(instructions)}`);
514
+ throw new Error(`SpiritsError: instructions must be a string or array or {content: "<instruction>"}, got: ${JSON.stringify(
515
+ instructions)}`);
514
516
  }
515
517
  }
516
518
 
@@ -523,7 +525,8 @@ export const Spirits = {
523
525
  messages.splice(index, 1);
524
526
  progress('Remove instruction', 'info', 'REMOVE_MESSAGE', instructionId);
525
527
  } else {
526
- console.log(`Instruction not found "${instructionId}", other ids: ${messages.map(m => `"${m.id}"`).join(', ')}`);
528
+ console.log(`Instruction not found "${instructionId}", other ids: ${messages.map(m => `"${m.id}"`)
529
+ .join(', ')}`);
527
530
  }
528
531
  }
529
532
  }
@@ -600,7 +603,7 @@ export const Spirits = {
600
603
  context,
601
604
  llm: config.llm,
602
605
  pmt: config.pmt
603
- }
606
+ };
604
607
 
605
608
  if (!!_tasks && Array.isArray(_tasks) && !!_tasks.length) {
606
609
  generatorInput.tasks = _tasks;
@@ -610,27 +613,51 @@ export const Spirits = {
610
613
  progress('Generated response', 'failed', undefined, {error: generatorPayload.error || 'Unknown Reason'});
611
614
  console.error(
612
615
  `Locking conversation, api returned send false: ${generatorPayload.message}`,
613
- generatorPayload.error || 'Unknown Reason'
616
+ generatorPayload.error || generatorPayload.forwardNote || 'Unknown Reason'
617
+ );
618
+ conversation = lockConversation(
619
+ conversation,
620
+ 'API: ' + generatorPayload.error || generatorPayload.forwardNote || 'Unknown Reason'
614
621
  );
615
- conversation = lockConversation(conversation, 'API: ' + generatorPayload.error || 'Unknown Reason');
616
622
  } else {
617
623
  progress('Generated response', 'success', undefined, undefined);
618
624
  // Check if already had message
619
625
  const agentMessages = messages.filter(m => m.role === 'agent');
620
626
  const lastAgentMessage = agentMessages[agentMessages.length - 1];
621
- if (lastAgentMessage && lastAgentMessage.content === generatorPayload.message) {
622
- // Error should not have happened
623
- conversation = lockConversation(conversation, 'Duplicate message');
624
- } else {
625
- messages.push({
627
+ const addedMessages = [
628
+ {
626
629
  id: idGenerator('agent'),
627
- role: 'agent',
628
630
  content: generatorPayload.message,
631
+ role: 'agent',
629
632
  time: new Date().toISOString(),
630
633
  entities: generatorPayload.entities ?? [],
631
- context: generatorPayload.context ?? {}
632
- });
633
- progress('Added agent message', 'info', 'ADD_MESSAGE', messages[messages.length - 1]);
634
+ context: generatorPayload.context ?? {},
635
+ mediaUrls: generatorPayload.mediaUrls ?? []
636
+ },
637
+ ...(generatorPayload?.addedMessages || [])
638
+ .map((message) => ({
639
+ id: idGenerator('agent'),
640
+ content: message.content,
641
+ role: 'agent',
642
+ time: message.time?.toDate()?.toISOString() || new Date().toISOString(),
643
+ entities: message.entities ?? {},
644
+ context: message.context ?? {},
645
+ mediaUrls: message.mediaUrls
646
+ }))
647
+ ]
648
+ .reduce((accumulator, message) => {
649
+ if (!accumulator.find(m => m.content === message.content)) accumulator.push(message);
650
+ return accumulator;
651
+ }, []);
652
+
653
+ if (lastAgentMessage && lastAgentMessage.content && addedMessages.some((message) => message.content === lastAgentMessage.content)) {
654
+ // Error should not have happened
655
+ conversation = lockConversation(conversation, 'Duplicate message');
656
+ } else {
657
+ for (const newMessage of addedMessages) {
658
+ messages.push(message);
659
+ progress('Added agent message', 'info', 'ADD_MESSAGE', messages[messages.length - 1]);
660
+ }
634
661
  }
635
662
 
636
663
  // Check if conversation was marked for forward (generator message still allowed to be sent)
@@ -688,7 +715,7 @@ export const Spirits = {
688
715
  onError(e);
689
716
  }
690
717
  } else if (messagesToTransform.length) {
691
- console.warn(`No transformer provided`)
718
+ console.warn(`No transformer provided`);
692
719
  }
693
720
  }
694
721