@magmamath/students-features 0.3.0 → 0.3.1-rc.1

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.
Files changed (68) hide show
  1. package/dist/commonjs/features/chatbot/index.js +7 -0
  2. package/dist/commonjs/features/chatbot/index.js.map +1 -1
  3. package/dist/commonjs/features/chatbot/model/ChatBotMessageHandler.js +80 -0
  4. package/dist/commonjs/features/chatbot/model/ChatBotMessageHandler.js.map +1 -0
  5. package/dist/commonjs/features/chatbot/model/DefaultMessageCreator.js +48 -0
  6. package/dist/commonjs/features/chatbot/model/DefaultMessageCreator.js.map +1 -0
  7. package/dist/commonjs/features/chatbot/model/ThreadItem.js +29 -0
  8. package/dist/commonjs/features/chatbot/model/ThreadItem.js.map +1 -0
  9. package/dist/commonjs/features/chatbot/model/constants.js +10 -0
  10. package/dist/commonjs/features/chatbot/model/constants.js.map +1 -0
  11. package/dist/commonjs/features/chatbot/types/model.types.js.map +1 -1
  12. package/dist/module/features/chatbot/index.js +1 -0
  13. package/dist/module/features/chatbot/index.js.map +1 -1
  14. package/dist/module/features/chatbot/model/ChatBotMessageHandler.js +75 -0
  15. package/dist/module/features/chatbot/model/ChatBotMessageHandler.js.map +1 -0
  16. package/dist/module/features/chatbot/model/DefaultMessageCreator.js +43 -0
  17. package/dist/module/features/chatbot/model/DefaultMessageCreator.js.map +1 -0
  18. package/dist/module/features/chatbot/model/ThreadItem.js +24 -0
  19. package/dist/module/features/chatbot/model/ThreadItem.js.map +1 -0
  20. package/dist/module/features/chatbot/model/constants.js +6 -0
  21. package/dist/module/features/chatbot/model/constants.js.map +1 -0
  22. package/dist/module/features/chatbot/types/model.types.js.map +1 -1
  23. package/dist/typescript/commonjs/features/chatbot/index.d.ts +1 -0
  24. package/dist/typescript/commonjs/features/chatbot/index.d.ts.map +1 -1
  25. package/dist/typescript/commonjs/features/chatbot/model/ChatBotMessageHandler.d.ts +31 -0
  26. package/dist/typescript/commonjs/features/chatbot/model/ChatBotMessageHandler.d.ts.map +1 -0
  27. package/dist/typescript/commonjs/features/chatbot/model/DefaultMessageCreator.d.ts +21 -0
  28. package/dist/typescript/commonjs/features/chatbot/model/DefaultMessageCreator.d.ts.map +1 -0
  29. package/dist/typescript/commonjs/features/chatbot/model/ThreadItem.d.ts +21 -0
  30. package/dist/typescript/commonjs/features/chatbot/model/ThreadItem.d.ts.map +1 -0
  31. package/dist/typescript/commonjs/features/chatbot/model/constants.d.ts +4 -0
  32. package/dist/typescript/commonjs/features/chatbot/model/constants.d.ts.map +1 -0
  33. package/dist/typescript/commonjs/features/chatbot/model/translation.d.ts +2 -2
  34. package/dist/typescript/commonjs/features/chatbot/model/translation.d.ts.map +1 -1
  35. package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts +15 -0
  36. package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts.map +1 -1
  37. package/dist/typescript/commonjs/features/chatbot/types/model.types.d.ts +13 -9
  38. package/dist/typescript/commonjs/features/chatbot/types/model.types.d.ts.map +1 -1
  39. package/dist/typescript/commonjs/lib/helpers/types.d.ts +1 -1
  40. package/dist/typescript/commonjs/lib/helpers/types.d.ts.map +1 -1
  41. package/dist/typescript/module/features/chatbot/index.d.ts +1 -0
  42. package/dist/typescript/module/features/chatbot/index.d.ts.map +1 -1
  43. package/dist/typescript/module/features/chatbot/model/ChatBotMessageHandler.d.ts +31 -0
  44. package/dist/typescript/module/features/chatbot/model/ChatBotMessageHandler.d.ts.map +1 -0
  45. package/dist/typescript/module/features/chatbot/model/DefaultMessageCreator.d.ts +21 -0
  46. package/dist/typescript/module/features/chatbot/model/DefaultMessageCreator.d.ts.map +1 -0
  47. package/dist/typescript/module/features/chatbot/model/ThreadItem.d.ts +21 -0
  48. package/dist/typescript/module/features/chatbot/model/ThreadItem.d.ts.map +1 -0
  49. package/dist/typescript/module/features/chatbot/model/constants.d.ts +4 -0
  50. package/dist/typescript/module/features/chatbot/model/constants.d.ts.map +1 -0
  51. package/dist/typescript/module/features/chatbot/model/translation.d.ts +2 -2
  52. package/dist/typescript/module/features/chatbot/model/translation.d.ts.map +1 -1
  53. package/dist/typescript/module/features/chatbot/types/api.types.d.ts +15 -0
  54. package/dist/typescript/module/features/chatbot/types/api.types.d.ts.map +1 -1
  55. package/dist/typescript/module/features/chatbot/types/model.types.d.ts +13 -9
  56. package/dist/typescript/module/features/chatbot/types/model.types.d.ts.map +1 -1
  57. package/dist/typescript/module/lib/helpers/types.d.ts +1 -1
  58. package/dist/typescript/module/lib/helpers/types.d.ts.map +1 -1
  59. package/package.json +1 -1
  60. package/src/features/chatbot/index.ts +1 -0
  61. package/src/features/chatbot/model/ChatBotMessageHandler.ts +106 -0
  62. package/src/features/chatbot/model/DefaultMessageCreator.ts +57 -0
  63. package/src/features/chatbot/model/ThreadItem.ts +28 -0
  64. package/src/features/chatbot/model/constants.ts +3 -0
  65. package/src/features/chatbot/model/translation.ts +2 -2
  66. package/src/features/chatbot/types/api.types.ts +18 -0
  67. package/src/features/chatbot/types/model.types.ts +15 -8
  68. package/src/lib/helpers/types.ts +1 -1
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "AudioStatus", {
9
9
  return _t2sTypes.AudioStatus;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "ChatMessageHandler", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _ChatBotMessageHandler.ChatMessageHandler;
16
+ }
17
+ });
12
18
  Object.defineProperty(exports, "Chatbot", {
13
19
  enumerable: true,
14
20
  get: function () {
@@ -31,4 +37,5 @@ var _Chatbot = require("./components/Chatbot.js");
31
37
  var _ChatBotModel = require("./model/ChatBotModel.js");
32
38
  var _t2sTypes = require("./types/t2s.types.js");
33
39
  var _modelTypes = require("./types/model.types.js");
40
+ var _ChatBotMessageHandler = require("./model/ChatBotMessageHandler.js");
34
41
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_Chatbot","require","_ChatBotModel","_t2sTypes","_modelTypes"],"sourceRoot":"../../../../src","sources":["features/chatbot/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_Chatbot","require","_ChatBotModel","_t2sTypes","_modelTypes","_ChatBotMessageHandler"],"sourceRoot":"../../../../src","sources":["features/chatbot/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAOA,IAAAI,sBAAA,GAAAJ,OAAA","ignoreList":[]}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ChatMessageHandler = void 0;
7
+ var _ThreadItem = require("./ThreadItem.js");
8
+ var _effector = require("effector/effector.umd");
9
+ var _constants = require("./constants.js");
10
+ class ChatMessageHandler {
11
+ threads = new Map();
12
+ currentKey = '';
13
+ currentBinding = null;
14
+ constructor({
15
+ drawBoardAdapter,
16
+ api,
17
+ messagesLimit = _constants.CHAT_BOT_MODEL_DEFAULTS.THREAD_MESSAGES_LIMIT,
18
+ messages
19
+ }) {
20
+ this.api = api;
21
+ this.drawBoardAdapter = drawBoardAdapter;
22
+ this.messagesLimit = messagesLimit;
23
+ this.defaultMessages = messages;
24
+ }
25
+ bindKeyStore($store) {
26
+ this.currentBinding?.();
27
+ this.currentBinding = $store.watch(value => {
28
+ this.currentKey = value;
29
+ });
30
+ return this;
31
+ }
32
+ async getThreadItem() {
33
+ const key = this.currentKey;
34
+ let threadItem = this.threads.get(key);
35
+ if (threadItem) return threadItem;
36
+ try {
37
+ const strokes = await this.drawBoardAdapter.getVisibleStrokes();
38
+ threadItem = new _ThreadItem.ThreadItem({
39
+ strokes
40
+ });
41
+ } catch {
42
+ threadItem = new _ThreadItem.ThreadItem();
43
+ }
44
+ this.threads.set(key, threadItem);
45
+ return threadItem;
46
+ }
47
+ postMessageFx = async ({
48
+ problemAnswer,
49
+ problem,
50
+ answer,
51
+ language
52
+ }) => {
53
+ const threadItem = await this.getThreadItem();
54
+ const result = await this.api.getHint({
55
+ ...threadItem.getNextHintProps(),
56
+ correctAnswer: problemAnswer,
57
+ problemDescription: problem,
58
+ userAnswer: answer,
59
+ language
60
+ });
61
+ threadItem.hints.push(result.message);
62
+ const nextOptions = threadItem.hints.length < this.messagesLimit ? [this.defaultMessages.anotherHintOption] : [];
63
+ return {
64
+ message: result.message,
65
+ options: nextOptions,
66
+ threadId: '',
67
+ endMessage: !nextOptions.length
68
+ };
69
+ };
70
+ resetThread = (0, _effector.createEffect)(({
71
+ key
72
+ }) => {
73
+ this.threads.delete(key);
74
+ });
75
+ resetAll() {
76
+ this.threads.clear();
77
+ }
78
+ }
79
+ exports.ChatMessageHandler = ChatMessageHandler;
80
+ //# sourceMappingURL=ChatBotMessageHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_ThreadItem","require","_effector","_constants","ChatMessageHandler","threads","Map","currentKey","currentBinding","constructor","drawBoardAdapter","api","messagesLimit","CHAT_BOT_MODEL_DEFAULTS","THREAD_MESSAGES_LIMIT","messages","defaultMessages","bindKeyStore","$store","watch","value","getThreadItem","key","threadItem","get","strokes","getVisibleStrokes","ThreadItem","set","postMessageFx","problemAnswer","problem","answer","language","result","getHint","getNextHintProps","correctAnswer","problemDescription","userAnswer","hints","push","message","nextOptions","length","anotherHintOption","options","threadId","endMessage","resetThread","createEffect","delete","resetAll","clear","exports"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/ChatBotMessageHandler.ts"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAEA,IAAAC,SAAA,GAAAD,OAAA;AAQA,IAAAE,UAAA,GAAAF,OAAA;AAeO,MAAMG,kBAAkB,CAAC;EAGbC,OAAO,GAAG,IAAIC,GAAG,CAAqB,CAAC;EAGhDC,UAAU,GAAG,EAAE;EACfC,cAAc,GAAwB,IAAI;EAI3CC,WAAWA,CAAC;IACjBC,gBAAgB;IAChBC,GAAG;IACHC,aAAa,GAAGC,kCAAuB,CAACC,qBAAqB;IAC7DC;EACuB,CAAC,EAAE;IAC1B,IAAI,CAACJ,GAAG,GAAGA,GAAG;IACd,IAAI,CAACD,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACE,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACI,eAAe,GAAGD,QAAQ;EACjC;EAEOE,YAAYA,CAACC,MAAqB,EAAE;IACzC,IAAI,CAACV,cAAc,GAAG,CAAC;IACvB,IAAI,CAACA,cAAc,GAAGU,MAAM,CAACC,KAAK,CAAEC,KAAK,IAAK;MAC5C,IAAI,CAACb,UAAU,GAAGa,KAAK;IACzB,CAAC,CAAC;IACF,OAAO,IAAI;EACb;EAEA,MAAcC,aAAaA,CAAA,EAAG;IAC5B,MAAMC,GAAG,GAAG,IAAI,CAACf,UAAU;IAC3B,IAAIgB,UAAU,GAAG,IAAI,CAAClB,OAAO,CAACmB,GAAG,CAACF,GAAG,CAAC;IACtC,IAAIC,UAAU,EAAE,OAAOA,UAAU;IACjC,IAAI;MACF,MAAME,OAAO,GAAG,MAAM,IAAI,CAACf,gBAAgB,CAACgB,iBAAiB,CAAC,CAAC;MAC/DH,UAAU,GAAG,IAAII,sBAAU,CAAC;QAAEF;MAAQ,CAAC,CAAC;IAC1C,CAAC,CAAC,MAAM;MACNF,UAAU,GAAG,IAAII,sBAAU,CAAC,CAAC;IAC/B;IACA,IAAI,CAACtB,OAAO,CAACuB,GAAG,CAACN,GAAG,EAAEC,UAAU,CAAC;IACjC,OAAOA,UAAU;EACnB;EAEgBM,aAAa,GAAG,MAAAA,CAAO;IACrCC,aAAa;IACbC,OAAO;IACPC,MAAM;IACNC;EACkB,CAAC,KAAmC;IACtD,MAAMV,UAAU,GAAG,MAAM,IAAI,CAACF,aAAa,CAAC,CAAC;IAE7C,MAAMa,MAAM,GAAG,MAAM,IAAI,CAACvB,GAAG,CAACwB,OAAO,CAAC;MACpC,GAAGZ,UAAU,CAACa,gBAAgB,CAAC,CAAC;MAChCC,aAAa,EAAEP,aAAa;MAC5BQ,kBAAkB,EAAEP,OAAO;MAC3BQ,UAAU,EAAEP,MAAM;MAClBC;IACF,CAAC,CAAC;IAEFV,UAAU,CAACiB,KAAK,CAACC,IAAI,CAACP,MAAM,CAACQ,OAAO,CAAC;IACrC,MAAMC,WAAW,GACfpB,UAAU,CAACiB,KAAK,CAACI,MAAM,GAAG,IAAI,CAAChC,aAAa,GAAG,CAAC,IAAI,CAACI,eAAe,CAAC6B,iBAAiB,CAAC,GAAG,EAAE;IAE9F,OAAO;MACLH,OAAO,EAAER,MAAM,CAACQ,OAAO;MACvBI,OAAO,EAAEH,WAAW;MACpBI,QAAQ,EAAE,EAAE;MACZC,UAAU,EAAE,CAACL,WAAW,CAACC;IAC3B,CAAC;EACH,CAAC;EAEMK,WAAW,GAAG,IAAAC,sBAAY,EAAC,CAAC;IAAE5B;EAAqB,CAAC,KAAK;IAC9D,IAAI,CAACjB,OAAO,CAAC8C,MAAM,CAAC7B,GAAG,CAAC;EAC1B,CAAC,CAAC;EAEK8B,QAAQA,CAAA,EAAG;IAChB,IAAI,CAAC/C,OAAO,CAACgD,KAAK,CAAC,CAAC;EACtB;AACF;AAACC,OAAA,CAAAlD,kBAAA,GAAAA,kBAAA","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DefaultMessagesCreator = void 0;
7
+ var _effector = require("effector");
8
+ class DefaultMessagesCreator {
9
+ languageChanged = (0, _effector.createEvent)();
10
+ list = new Map();
11
+ constructor({
12
+ textGetter
13
+ }) {
14
+ this.getter = textGetter;
15
+ this.languageChanged.watch(() => {
16
+ this.list.forEach((key, chatMessage) => {
17
+ if ('message' in chatMessage) {
18
+ chatMessage.message = this.getter(key);
19
+ return;
20
+ }
21
+ chatMessage.text = this.getter(key);
22
+ });
23
+ });
24
+ }
25
+ createMessage(key, {
26
+ isOwn = false
27
+ } = {}) {
28
+ const message = {
29
+ id: this.list.size.toString(),
30
+ message: this.getter(key),
31
+ threadId: '',
32
+ options: [],
33
+ isOwnMessage: isOwn
34
+ };
35
+ this.list.set(message, key);
36
+ return message;
37
+ }
38
+ createOption(key) {
39
+ const option = {
40
+ text: this.getter(key),
41
+ promptKey: ''
42
+ };
43
+ this.list.set(option, key);
44
+ return option;
45
+ }
46
+ }
47
+ exports.DefaultMessagesCreator = DefaultMessagesCreator;
48
+ //# sourceMappingURL=DefaultMessageCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_effector","require","DefaultMessagesCreator","languageChanged","createEvent","list","Map","constructor","textGetter","getter","watch","forEach","key","chatMessage","message","text","createMessage","isOwn","id","size","toString","threadId","options","isOwnMessage","set","createOption","option","promptKey","exports"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/DefaultMessageCreator.ts"],"mappings":";;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AAeO,MAAMC,sBAAsB,CAAmB;EACpCC,eAAe,GAAG,IAAAC,qBAAW,EAAC,CAAC;EAE9BC,IAAI,GAAG,IAAIC,GAAG,CAA8B,CAAC;EAG9DC,WAAWA,CAAC;IAAEC;EAA0C,CAAC,EAAE;IACzD,IAAI,CAACC,MAAM,GAAGD,UAAU;IAExB,IAAI,CAACL,eAAe,CAACO,KAAK,CAAC,MAAM;MAC/B,IAAI,CAACL,IAAI,CAACM,OAAO,CAAC,CAACC,GAAG,EAAEC,WAAW,KAAK;QACtC,IAAI,SAAS,IAAIA,WAAW,EAAE;UAC5BA,WAAW,CAACC,OAAO,GAAG,IAAI,CAACL,MAAM,CAACG,GAAG,CAAC;UACtC;QACF;QACAC,WAAW,CAACE,IAAI,GAAG,IAAI,CAACN,MAAM,CAACG,GAAG,CAAC;MACrC,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEOI,aAAaA,CAACJ,GAAM,EAAE;IAAEK,KAAK,GAAG;EAA8B,CAAC,GAAG,CAAC,CAAC,EAAE;IAC3E,MAAMH,OAAoB,GAAG;MAC3BI,EAAE,EAAE,IAAI,CAACb,IAAI,CAACc,IAAI,CAACC,QAAQ,CAAC,CAAC;MAC7BN,OAAO,EAAE,IAAI,CAACL,MAAM,CAACG,GAAG,CAAC;MACzBS,QAAQ,EAAE,EAAE;MACZC,OAAO,EAAE,EAAE;MACXC,YAAY,EAAEN;IAChB,CAAC;IACD,IAAI,CAACZ,IAAI,CAACmB,GAAG,CAACV,OAAO,EAAEF,GAAG,CAAC;IAC3B,OAAOE,OAAO;EAChB;EAEOW,YAAYA,CAACb,GAAM,EAAE;IAC1B,MAAMc,MAAkB,GAAG;MACzBX,IAAI,EAAE,IAAI,CAACN,MAAM,CAACG,GAAG,CAAC;MACtBe,SAAS,EAAE;IACb,CAAC;IACD,IAAI,CAACtB,IAAI,CAACmB,GAAG,CAACE,MAAM,EAAEd,GAAG,CAAC;IAC1B,OAAOc,MAAM;EACf;AACF;AAACE,OAAA,CAAA1B,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ThreadItem = void 0;
7
+ class ThreadItem {
8
+ hints = [];
9
+ constructor({
10
+ strokes
11
+ } = {}) {
12
+ this.strokes = strokes ?? null;
13
+ }
14
+ getNextHintProps() {
15
+ if (this.hints.length) {
16
+ return {
17
+ previousHint: this.hints[this.hints.length - 1]
18
+ };
19
+ }
20
+ if (this.strokes) {
21
+ return {
22
+ stroke: this.strokes
23
+ };
24
+ }
25
+ return {};
26
+ }
27
+ }
28
+ exports.ThreadItem = ThreadItem;
29
+ //# sourceMappingURL=ThreadItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ThreadItem","hints","constructor","strokes","getNextHintProps","length","previousHint","stroke","exports"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/ThreadItem.ts"],"mappings":";;;;;;AAMO,MAAMA,UAAU,CAAC;EAENC,KAAK,GAAa,EAAE;EAE7BC,WAAWA,CAAC;IAAEC;EAAyB,CAAC,GAAG,CAAC,CAAC,EAAE;IACpD,IAAI,CAACA,OAAO,GAAGA,OAAO,IAAI,IAAI;EAChC;EAEOC,gBAAgBA,CAAA,EAAG;IACxB,IAAI,IAAI,CAACH,KAAK,CAACI,MAAM,EAAE;MACrB,OAAO;QACLC,YAAY,EAAE,IAAI,CAACL,KAAK,CAAC,IAAI,CAACA,KAAK,CAACI,MAAM,GAAG,CAAC;MAChD,CAAC;IACH;IAEA,IAAI,IAAI,CAACF,OAAO,EAAE;MAChB,OAAO;QAAEI,MAAM,EAAE,IAAI,CAACJ;MAAQ,CAAC;IACjC;IAEA,OAAO,CAAC,CAAC;EACX;AACF;AAACK,OAAA,CAAAR,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CHAT_BOT_MODEL_DEFAULTS = void 0;
7
+ const CHAT_BOT_MODEL_DEFAULTS = exports.CHAT_BOT_MODEL_DEFAULTS = {
8
+ THREAD_MESSAGES_LIMIT: 3
9
+ };
10
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CHAT_BOT_MODEL_DEFAULTS","exports","THREAD_MESSAGES_LIMIT"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/constants.ts"],"mappings":";;;;;;AAAO,MAAMA,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,GAAG;EACrCE,qBAAqB,EAAE;AACzB,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["MessageVariant","exports"],"sourceRoot":"../../../../../src","sources":["features/chatbot/types/model.types.ts"],"mappings":";;;;;;IA6DYA,cAAc,GAAAC,OAAA,CAAAD,cAAA,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["MessageVariant","exports"],"sourceRoot":"../../../../../src","sources":["features/chatbot/types/model.types.ts"],"mappings":";;;;;;IAgEYA,cAAc,GAAAC,OAAA,CAAAD,cAAA,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA","ignoreList":[]}
@@ -4,4 +4,5 @@ export { Chatbot } from "./components/Chatbot.js";
4
4
  export { ChatbotModel } from "./model/ChatBotModel.js";
5
5
  export { AudioStatus } from "./types/t2s.types.js";
6
6
  export { MessageVariant } from "./types/model.types.js";
7
+ export { ChatMessageHandler } from "./model/ChatBotMessageHandler.js";
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Chatbot","ChatbotModel","AudioStatus","MessageVariant"],"sourceRoot":"../../../../src","sources":["features/chatbot/index.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,yBAAsB;AAC9C,SAASC,YAAY,QAAQ,yBAAsB;AACnD,SAASC,WAAW,QAA4B,sBAAmB;AACnE,SACEC,cAAc,QAIT,wBAAqB","ignoreList":[]}
1
+ {"version":3,"names":["Chatbot","ChatbotModel","AudioStatus","MessageVariant","ChatMessageHandler"],"sourceRoot":"../../../../src","sources":["features/chatbot/index.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,yBAAsB;AAC9C,SAASC,YAAY,QAAQ,yBAAsB;AACnD,SAASC,WAAW,QAA4B,sBAAmB;AACnE,SACEC,cAAc,QAIT,wBAAqB;AAE5B,SAASC,kBAAkB,QAAQ,kCAA+B","ignoreList":[]}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ import { ThreadItem } from "./ThreadItem.js";
4
+ import { createEffect } from 'effector/effector.umd';
5
+ import { CHAT_BOT_MODEL_DEFAULTS } from "./constants.js";
6
+ export class ChatMessageHandler {
7
+ threads = new Map();
8
+ currentKey = '';
9
+ currentBinding = null;
10
+ constructor({
11
+ drawBoardAdapter,
12
+ api,
13
+ messagesLimit = CHAT_BOT_MODEL_DEFAULTS.THREAD_MESSAGES_LIMIT,
14
+ messages
15
+ }) {
16
+ this.api = api;
17
+ this.drawBoardAdapter = drawBoardAdapter;
18
+ this.messagesLimit = messagesLimit;
19
+ this.defaultMessages = messages;
20
+ }
21
+ bindKeyStore($store) {
22
+ this.currentBinding?.();
23
+ this.currentBinding = $store.watch(value => {
24
+ this.currentKey = value;
25
+ });
26
+ return this;
27
+ }
28
+ async getThreadItem() {
29
+ const key = this.currentKey;
30
+ let threadItem = this.threads.get(key);
31
+ if (threadItem) return threadItem;
32
+ try {
33
+ const strokes = await this.drawBoardAdapter.getVisibleStrokes();
34
+ threadItem = new ThreadItem({
35
+ strokes
36
+ });
37
+ } catch {
38
+ threadItem = new ThreadItem();
39
+ }
40
+ this.threads.set(key, threadItem);
41
+ return threadItem;
42
+ }
43
+ postMessageFx = async ({
44
+ problemAnswer,
45
+ problem,
46
+ answer,
47
+ language
48
+ }) => {
49
+ const threadItem = await this.getThreadItem();
50
+ const result = await this.api.getHint({
51
+ ...threadItem.getNextHintProps(),
52
+ correctAnswer: problemAnswer,
53
+ problemDescription: problem,
54
+ userAnswer: answer,
55
+ language
56
+ });
57
+ threadItem.hints.push(result.message);
58
+ const nextOptions = threadItem.hints.length < this.messagesLimit ? [this.defaultMessages.anotherHintOption] : [];
59
+ return {
60
+ message: result.message,
61
+ options: nextOptions,
62
+ threadId: '',
63
+ endMessage: !nextOptions.length
64
+ };
65
+ };
66
+ resetThread = createEffect(({
67
+ key
68
+ }) => {
69
+ this.threads.delete(key);
70
+ });
71
+ resetAll() {
72
+ this.threads.clear();
73
+ }
74
+ }
75
+ //# sourceMappingURL=ChatBotMessageHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ThreadItem","createEffect","CHAT_BOT_MODEL_DEFAULTS","ChatMessageHandler","threads","Map","currentKey","currentBinding","constructor","drawBoardAdapter","api","messagesLimit","THREAD_MESSAGES_LIMIT","messages","defaultMessages","bindKeyStore","$store","watch","value","getThreadItem","key","threadItem","get","strokes","getVisibleStrokes","set","postMessageFx","problemAnswer","problem","answer","language","result","getHint","getNextHintProps","correctAnswer","problemDescription","userAnswer","hints","push","message","nextOptions","length","anotherHintOption","options","threadId","endMessage","resetThread","delete","resetAll","clear"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/ChatBotMessageHandler.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,iBAAc;AAEzC,SAASC,YAAY,QAAQ,uBAAuB;AAQpD,SAASC,uBAAuB,QAAQ,gBAAa;AAerD,OAAO,MAAMC,kBAAkB,CAAC;EAGbC,OAAO,GAAG,IAAIC,GAAG,CAAqB,CAAC;EAGhDC,UAAU,GAAG,EAAE;EACfC,cAAc,GAAwB,IAAI;EAI3CC,WAAWA,CAAC;IACjBC,gBAAgB;IAChBC,GAAG;IACHC,aAAa,GAAGT,uBAAuB,CAACU,qBAAqB;IAC7DC;EACuB,CAAC,EAAE;IAC1B,IAAI,CAACH,GAAG,GAAGA,GAAG;IACd,IAAI,CAACD,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACE,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACG,eAAe,GAAGD,QAAQ;EACjC;EAEOE,YAAYA,CAACC,MAAqB,EAAE;IACzC,IAAI,CAACT,cAAc,GAAG,CAAC;IACvB,IAAI,CAACA,cAAc,GAAGS,MAAM,CAACC,KAAK,CAAEC,KAAK,IAAK;MAC5C,IAAI,CAACZ,UAAU,GAAGY,KAAK;IACzB,CAAC,CAAC;IACF,OAAO,IAAI;EACb;EAEA,MAAcC,aAAaA,CAAA,EAAG;IAC5B,MAAMC,GAAG,GAAG,IAAI,CAACd,UAAU;IAC3B,IAAIe,UAAU,GAAG,IAAI,CAACjB,OAAO,CAACkB,GAAG,CAACF,GAAG,CAAC;IACtC,IAAIC,UAAU,EAAE,OAAOA,UAAU;IACjC,IAAI;MACF,MAAME,OAAO,GAAG,MAAM,IAAI,CAACd,gBAAgB,CAACe,iBAAiB,CAAC,CAAC;MAC/DH,UAAU,GAAG,IAAIrB,UAAU,CAAC;QAAEuB;MAAQ,CAAC,CAAC;IAC1C,CAAC,CAAC,MAAM;MACNF,UAAU,GAAG,IAAIrB,UAAU,CAAC,CAAC;IAC/B;IACA,IAAI,CAACI,OAAO,CAACqB,GAAG,CAACL,GAAG,EAAEC,UAAU,CAAC;IACjC,OAAOA,UAAU;EACnB;EAEgBK,aAAa,GAAG,MAAAA,CAAO;IACrCC,aAAa;IACbC,OAAO;IACPC,MAAM;IACNC;EACkB,CAAC,KAAmC;IACtD,MAAMT,UAAU,GAAG,MAAM,IAAI,CAACF,aAAa,CAAC,CAAC;IAE7C,MAAMY,MAAM,GAAG,MAAM,IAAI,CAACrB,GAAG,CAACsB,OAAO,CAAC;MACpC,GAAGX,UAAU,CAACY,gBAAgB,CAAC,CAAC;MAChCC,aAAa,EAAEP,aAAa;MAC5BQ,kBAAkB,EAAEP,OAAO;MAC3BQ,UAAU,EAAEP,MAAM;MAClBC;IACF,CAAC,CAAC;IAEFT,UAAU,CAACgB,KAAK,CAACC,IAAI,CAACP,MAAM,CAACQ,OAAO,CAAC;IACrC,MAAMC,WAAW,GACfnB,UAAU,CAACgB,KAAK,CAACI,MAAM,GAAG,IAAI,CAAC9B,aAAa,GAAG,CAAC,IAAI,CAACG,eAAe,CAAC4B,iBAAiB,CAAC,GAAG,EAAE;IAE9F,OAAO;MACLH,OAAO,EAAER,MAAM,CAACQ,OAAO;MACvBI,OAAO,EAAEH,WAAW;MACpBI,QAAQ,EAAE,EAAE;MACZC,UAAU,EAAE,CAACL,WAAW,CAACC;IAC3B,CAAC;EACH,CAAC;EAEMK,WAAW,GAAG7C,YAAY,CAAC,CAAC;IAAEmB;EAAqB,CAAC,KAAK;IAC9D,IAAI,CAAChB,OAAO,CAAC2C,MAAM,CAAC3B,GAAG,CAAC;EAC1B,CAAC,CAAC;EAEK4B,QAAQA,CAAA,EAAG;IAChB,IAAI,CAAC5C,OAAO,CAAC6C,KAAK,CAAC,CAAC;EACtB;AACF","ignoreList":[]}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ import { createEvent } from 'effector';
4
+ export class DefaultMessagesCreator {
5
+ languageChanged = createEvent();
6
+ list = new Map();
7
+ constructor({
8
+ textGetter
9
+ }) {
10
+ this.getter = textGetter;
11
+ this.languageChanged.watch(() => {
12
+ this.list.forEach((key, chatMessage) => {
13
+ if ('message' in chatMessage) {
14
+ chatMessage.message = this.getter(key);
15
+ return;
16
+ }
17
+ chatMessage.text = this.getter(key);
18
+ });
19
+ });
20
+ }
21
+ createMessage(key, {
22
+ isOwn = false
23
+ } = {}) {
24
+ const message = {
25
+ id: this.list.size.toString(),
26
+ message: this.getter(key),
27
+ threadId: '',
28
+ options: [],
29
+ isOwnMessage: isOwn
30
+ };
31
+ this.list.set(message, key);
32
+ return message;
33
+ }
34
+ createOption(key) {
35
+ const option = {
36
+ text: this.getter(key),
37
+ promptKey: ''
38
+ };
39
+ this.list.set(option, key);
40
+ return option;
41
+ }
42
+ }
43
+ //# sourceMappingURL=DefaultMessageCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createEvent","DefaultMessagesCreator","languageChanged","list","Map","constructor","textGetter","getter","watch","forEach","key","chatMessage","message","text","createMessage","isOwn","id","size","toString","threadId","options","isOwnMessage","set","createOption","option","promptKey"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/DefaultMessageCreator.ts"],"mappings":";;AACA,SAASA,WAAW,QAAQ,UAAU;AAetC,OAAO,MAAMC,sBAAsB,CAAmB;EACpCC,eAAe,GAAGF,WAAW,CAAC,CAAC;EAE9BG,IAAI,GAAG,IAAIC,GAAG,CAA8B,CAAC;EAG9DC,WAAWA,CAAC;IAAEC;EAA0C,CAAC,EAAE;IACzD,IAAI,CAACC,MAAM,GAAGD,UAAU;IAExB,IAAI,CAACJ,eAAe,CAACM,KAAK,CAAC,MAAM;MAC/B,IAAI,CAACL,IAAI,CAACM,OAAO,CAAC,CAACC,GAAG,EAAEC,WAAW,KAAK;QACtC,IAAI,SAAS,IAAIA,WAAW,EAAE;UAC5BA,WAAW,CAACC,OAAO,GAAG,IAAI,CAACL,MAAM,CAACG,GAAG,CAAC;UACtC;QACF;QACAC,WAAW,CAACE,IAAI,GAAG,IAAI,CAACN,MAAM,CAACG,GAAG,CAAC;MACrC,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEOI,aAAaA,CAACJ,GAAM,EAAE;IAAEK,KAAK,GAAG;EAA8B,CAAC,GAAG,CAAC,CAAC,EAAE;IAC3E,MAAMH,OAAoB,GAAG;MAC3BI,EAAE,EAAE,IAAI,CAACb,IAAI,CAACc,IAAI,CAACC,QAAQ,CAAC,CAAC;MAC7BN,OAAO,EAAE,IAAI,CAACL,MAAM,CAACG,GAAG,CAAC;MACzBS,QAAQ,EAAE,EAAE;MACZC,OAAO,EAAE,EAAE;MACXC,YAAY,EAAEN;IAChB,CAAC;IACD,IAAI,CAACZ,IAAI,CAACmB,GAAG,CAACV,OAAO,EAAEF,GAAG,CAAC;IAC3B,OAAOE,OAAO;EAChB;EAEOW,YAAYA,CAACb,GAAM,EAAE;IAC1B,MAAMc,MAAkB,GAAG;MACzBX,IAAI,EAAE,IAAI,CAACN,MAAM,CAACG,GAAG,CAAC;MACtBe,SAAS,EAAE;IACb,CAAC;IACD,IAAI,CAACtB,IAAI,CAACmB,GAAG,CAACE,MAAM,EAAEd,GAAG,CAAC;IAC1B,OAAOc,MAAM;EACf;AACF","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ export class ThreadItem {
4
+ hints = [];
5
+ constructor({
6
+ strokes
7
+ } = {}) {
8
+ this.strokes = strokes ?? null;
9
+ }
10
+ getNextHintProps() {
11
+ if (this.hints.length) {
12
+ return {
13
+ previousHint: this.hints[this.hints.length - 1]
14
+ };
15
+ }
16
+ if (this.strokes) {
17
+ return {
18
+ stroke: this.strokes
19
+ };
20
+ }
21
+ return {};
22
+ }
23
+ }
24
+ //# sourceMappingURL=ThreadItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ThreadItem","hints","constructor","strokes","getNextHintProps","length","previousHint","stroke"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/ThreadItem.ts"],"mappings":";;AAMA,OAAO,MAAMA,UAAU,CAAC;EAENC,KAAK,GAAa,EAAE;EAE7BC,WAAWA,CAAC;IAAEC;EAAyB,CAAC,GAAG,CAAC,CAAC,EAAE;IACpD,IAAI,CAACA,OAAO,GAAGA,OAAO,IAAI,IAAI;EAChC;EAEOC,gBAAgBA,CAAA,EAAG;IACxB,IAAI,IAAI,CAACH,KAAK,CAACI,MAAM,EAAE;MACrB,OAAO;QACLC,YAAY,EAAE,IAAI,CAACL,KAAK,CAAC,IAAI,CAACA,KAAK,CAACI,MAAM,GAAG,CAAC;MAChD,CAAC;IACH;IAEA,IAAI,IAAI,CAACF,OAAO,EAAE;MAChB,OAAO;QAAEI,MAAM,EAAE,IAAI,CAACJ;MAAQ,CAAC;IACjC;IAEA,OAAO,CAAC,CAAC;EACX;AACF","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ export const CHAT_BOT_MODEL_DEFAULTS = {
4
+ THREAD_MESSAGES_LIMIT: 3
5
+ };
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CHAT_BOT_MODEL_DEFAULTS","THREAD_MESSAGES_LIMIT"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/constants.ts"],"mappings":";;AAAA,OAAO,MAAMA,uBAAuB,GAAG;EACrCC,qBAAqB,EAAE;AACzB,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["MessageVariant"],"sourceRoot":"../../../../../src","sources":["features/chatbot/types/model.types.ts"],"mappings":";;AA6DA,WAAYA,cAAc,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["MessageVariant"],"sourceRoot":"../../../../../src","sources":["features/chatbot/types/model.types.ts"],"mappings":";;AAgEA,WAAYA,cAAc,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA","ignoreList":[]}
@@ -3,4 +3,5 @@ export { ChatbotModel } from './model/ChatBotModel';
3
3
  export { AudioStatus, type AudioProvider } from './types/t2s.types';
4
4
  export { MessageVariant, type ConversationMessage, type ChatbotRenderer, type ChatbotModelProps, } from './types/model.types';
5
5
  export type { PostMessageResponse, ChatAnswer } from './types/api.types';
6
+ export { ChatMessageHandler } from './model/ChatBotMessageHandler';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/chatbot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/chatbot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA"}
@@ -0,0 +1,31 @@
1
+ import { Store } from 'effector';
2
+ import { ChatHintPayload, ChatHintResponse, PostMessagePayload, PostMessageResponse } from '../types/api.types';
3
+ import { ChatbotMessages, IChatDrawBoardAdapter } from '../types/model.types';
4
+ type ChatMessageHandlerProps = {
5
+ messagesLimit?: number;
6
+ messages: ChatbotMessages;
7
+ drawBoardAdapter: IChatDrawBoardAdapter;
8
+ api: {
9
+ getHint: (props: ChatHintPayload) => Promise<ChatHintResponse>;
10
+ };
11
+ };
12
+ type ResetCacheProps = {
13
+ key: string;
14
+ };
15
+ export declare class ChatMessageHandler {
16
+ private readonly api;
17
+ private readonly drawBoardAdapter;
18
+ private readonly threads;
19
+ private readonly messagesLimit;
20
+ private currentKey;
21
+ private currentBinding;
22
+ private readonly defaultMessages;
23
+ constructor({ drawBoardAdapter, api, messagesLimit, messages, }: ChatMessageHandlerProps);
24
+ bindKeyStore($store: Store<string>): this;
25
+ private getThreadItem;
26
+ readonly postMessageFx: ({ problemAnswer, problem, answer, language, }: PostMessagePayload) => Promise<PostMessageResponse>;
27
+ resetThread: import("effector/effector.umd").Effect<ResetCacheProps, void, Error>;
28
+ resetAll(): void;
29
+ }
30
+ export {};
31
+ //# sourceMappingURL=ChatBotMessageHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatBotMessageHandler.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/model/ChatBotMessageHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAG7E,KAAK,uBAAuB,GAAG;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,eAAe,CAAA;IACzB,gBAAgB,EAAE,qBAAqB,CAAA;IACvC,GAAG,EAAE;QACH,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;KAC/D,CAAA;CACF,CAAA;AAED,KAAK,eAAe,GAAG;IACrB,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAA;IACpB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuB;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IAExD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAA;IAC9B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,cAAc,CAA4B;IAElD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAA;gBAEb,EACjB,gBAAgB,EAChB,GAAG,EACH,aAA6D,EAC7D,QAAQ,GACT,EAAE,uBAAuB;IAOnB,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YAQ3B,aAAa;IAc3B,SAAgB,aAAa,kDAK1B,kBAAkB,KAAG,OAAO,CAAC,mBAAmB,CAAC,CAqBnD;IAEM,WAAW,uEAEhB;IAEK,QAAQ;CAGhB"}
@@ -0,0 +1,21 @@
1
+ import { ChatAnswer, PostMessageResponse } from '../types/api.types';
2
+ type ChatMessage = PostMessageResponse & {
3
+ id: string;
4
+ isOwnMessage: boolean;
5
+ };
6
+ type DefaultMessageSettings = {
7
+ isOwn?: boolean;
8
+ };
9
+ type DefaultMessageCreatorProps<K extends string> = {
10
+ textGetter: (key: K) => string;
11
+ };
12
+ export declare class DefaultMessagesCreator<K extends string> {
13
+ readonly languageChanged: import("effector").EventCallable<void>;
14
+ private readonly list;
15
+ private readonly getter;
16
+ constructor({ textGetter }: DefaultMessageCreatorProps<K>);
17
+ createMessage(key: K, { isOwn }?: DefaultMessageSettings): ChatMessage;
18
+ createOption(key: K): ChatAnswer;
19
+ }
20
+ export {};
21
+ //# sourceMappingURL=DefaultMessageCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultMessageCreator.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/model/DefaultMessageCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAGpE,KAAK,WAAW,GAAG,mBAAmB,GAAG;IACvC,EAAE,EAAE,MAAM,CAAA;IACV,YAAY,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,KAAK,sBAAsB,GAAG;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,KAAK,0BAA0B,CAAC,CAAC,SAAS,MAAM,IAAI;IAClD,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAA;CAC/B,CAAA;AAED,qBAAa,sBAAsB,CAAC,CAAC,SAAS,MAAM;IAClD,SAAgB,eAAe,yCAAgB;IAE/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyC;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAA;gBAEX,EAAE,UAAU,EAAE,EAAE,0BAA0B,CAAC,CAAC,CAAC;IAclD,aAAa,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,KAAa,EAAE,GAAE,sBAA2B;IAYpE,YAAY,CAAC,GAAG,EAAE,CAAC;CAQ3B"}
@@ -0,0 +1,21 @@
1
+ import { Stroke } from '../types/api.types';
2
+ type ThreadItemProps = {
3
+ strokes?: Stroke[] | null;
4
+ };
5
+ export declare class ThreadItem {
6
+ readonly strokes: Stroke[] | null;
7
+ readonly hints: string[];
8
+ constructor({ strokes }?: ThreadItemProps);
9
+ getNextHintProps(): {
10
+ previousHint: string;
11
+ stroke?: undefined;
12
+ } | {
13
+ stroke: Stroke[];
14
+ previousHint?: undefined;
15
+ } | {
16
+ previousHint?: undefined;
17
+ stroke?: undefined;
18
+ };
19
+ }
20
+ export {};
21
+ //# sourceMappingURL=ThreadItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadItem.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/model/ThreadItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,KAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;CAC1B,CAAA;AAED,qBAAa,UAAU;IACrB,SAAgB,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACxC,SAAgB,KAAK,EAAE,MAAM,EAAE,CAAK;gBAEjB,EAAE,OAAO,EAAE,GAAE,eAAoB;IAI7C,gBAAgB;;;;;;;;;;CAaxB"}
@@ -0,0 +1,4 @@
1
+ export declare const CHAT_BOT_MODEL_DEFAULTS: {
2
+ THREAD_MESSAGES_LIMIT: number;
3
+ };
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/model/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB;;CAEnC,CAAA"}
@@ -1,13 +1,13 @@
1
1
  import { EventCallable, Store } from 'effector';
2
2
  import { TranslateMessageFxProps } from '../types/translation.types';
3
- import { ChatbotModelProps, ConversationMessage } from '../types/model.types';
3
+ import { ChatbotMessages, ConversationMessage } from '../types/model.types';
4
4
  import { GetAlternativesResponse } from '../types/api.types';
5
5
  import { ChatbotAPI } from './api';
6
6
  import { EntityFieldStore } from '../../../lib/effector/createEntityFieldStore';
7
7
  type ChatbotTranslationProps = {
8
8
  api: ChatbotAPI;
9
9
  $key: Store<string>;
10
- defaultMessages: ChatbotModelProps['messages'];
10
+ defaultMessages: ChatbotMessages;
11
11
  messagesModel: EntityFieldStore<ConversationMessage[]>;
12
12
  alternativesModel: {
13
13
  set: EventCallable<GetAlternativesResponse | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"translation.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/model/translation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,aAAa,EAAmB,KAAK,EAAE,MAAM,UAAU,CAAA;AACnG,OAAO,EAGL,uBAAuB,EAExB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AAO/E,KAAK,uBAAuB,GAAG;IAC7B,GAAG,EAAE,UAAU,CAAA;IACf,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACnB,eAAe,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAA;IAC9C,aAAa,EAAE,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,CAAA;IACtD,iBAAiB,EAAE;QACjB,GAAG,EAAE,aAAa,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAA;QAClD,MAAM,EAAE,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAA;KAC9C,CAAA;CACF,CAAA;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAA;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA;IACrB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAA;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAA;IAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAA;IAElC,QAAQ,CAAC,eAAe,yBAAyB;IACjD,QAAQ,CAAC,aAAa,4CAAuC;IAE7D,QAAQ,CAAC,sBAAsB;;qCAAA;gBAEnB,EACV,GAAG,EACH,IAAI,EACJ,eAAe,EACf,aAAa,EACb,iBAAiB,GAClB,EAAE,uBAAuB;IAmB1B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,sBAAsB;YAShB,gBAAgB;IAmB9B,OAAO,CAAC,4BAA4B;IAIpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAkDhC;IAED,SAAgB,mBAAmB,mFA0BlC;IAEM,KAAK;CAGb"}
1
+ {"version":3,"file":"translation.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/model/translation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,aAAa,EAAmB,KAAK,EAAE,MAAM,UAAU,CAAA;AACnG,OAAO,EAGL,uBAAuB,EAExB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AAO/E,KAAK,uBAAuB,GAAG;IAC7B,GAAG,EAAE,UAAU,CAAA;IACf,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACnB,eAAe,EAAE,eAAe,CAAA;IAChC,aAAa,EAAE,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,CAAA;IACtD,iBAAiB,EAAE;QACjB,GAAG,EAAE,aAAa,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAA;QAClD,MAAM,EAAE,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAA;KAC9C,CAAA;CACF,CAAA;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAA;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA;IACrB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAA;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAA;IAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAA;IAElC,QAAQ,CAAC,eAAe,yBAAyB;IACjD,QAAQ,CAAC,aAAa,4CAAuC;IAE7D,QAAQ,CAAC,sBAAsB;;qCAAA;gBAEnB,EACV,GAAG,EACH,IAAI,EACJ,eAAe,EACf,aAAa,EACb,iBAAiB,GAClB,EAAE,uBAAuB;IAmB1B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,sBAAsB;YAShB,gBAAgB;IAmB9B,OAAO,CAAC,4BAA4B;IAIpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAkDhC;IAED,SAAgB,mBAAmB,mFA0BlC;IAEM,KAAK;CAGb"}
@@ -63,4 +63,19 @@ export type GoogleText2SpeechPayload = {
63
63
  export type GoogleText2SpeechResponse = string | undefined | {
64
64
  audioContent?: string;
65
65
  };
66
+ export type Stroke = {
67
+ x: number[];
68
+ y: number[];
69
+ };
70
+ export type ChatHintPayload = {
71
+ problemDescription: string;
72
+ correctAnswer: string[];
73
+ userAnswer?: string | string[];
74
+ stroke?: Stroke[];
75
+ previousHint?: string;
76
+ language: string;
77
+ };
78
+ export type ChatHintResponse = {
79
+ message: string;
80
+ };
66
81
  //# sourceMappingURL=api.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.types.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/types/api.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,cAAc,EAAE,MAAM,CAAA;IACtB,oBAAoB,EAAE,MAAM,CAAA;CAC7B,GAAG,IAAI,CAAA;AAER,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,EAAE;QACP,OAAO,EAAE,UAAU,EAAE,CAAA;QACrB,KAAK,EAAE,UAAU,EAAE,CAAA;KACpB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,cAAc,EAAE;QAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE;QACJ,YAAY,EAAE;YAAE,cAAc,EAAE,MAAM,CAAC;YAAC,sBAAsB,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAC3E,CAAA;CACF,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAA;QACpB,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,WAAW,EAAE;QACX,aAAa,EAAE,MAAM,CAAA;QACrB,KAAK,EAAE,MAAM,CAAA;QACb,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,SAAS,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA"}
1
+ {"version":3,"file":"api.types.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/types/api.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,cAAc,EAAE,MAAM,CAAA;IACtB,oBAAoB,EAAE,MAAM,CAAA;CAC7B,GAAG,IAAI,CAAA;AAER,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,EAAE;QACP,OAAO,EAAE,UAAU,EAAE,CAAA;QACrB,KAAK,EAAE,UAAU,EAAE,CAAA;KACpB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,cAAc,EAAE;QAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE;QACJ,YAAY,EAAE;YAAE,cAAc,EAAE,MAAM,CAAC;YAAC,sBAAsB,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAC3E,CAAA;CACF,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAA;QACpB,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,WAAW,EAAE;QACX,aAAa,EAAE,MAAM,CAAA;QACrB,KAAK,EAAE,MAAM,CAAA;QACb,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,SAAS,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtF,MAAM,MAAM,MAAM,GAAG;IACnB,CAAC,EAAE,MAAM,EAAE,CAAA;IACX,CAAC,EAAE,MAAM,EAAE,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import type { Store } from 'effector';
2
- import { GetAlternativesResponse, PostMessagePayload, PostMessageResponse, GoogleTranslatePayload, GoogleTranslateResponse, GoogleText2SpeechPayload, GoogleText2SpeechResponse, ChatAnswer, GetAlternativesPayload } from './api.types';
3
- import { AccomplishTo } from '../../../lib/helpers/types';
2
+ import { GetAlternativesResponse, PostMessagePayload, PostMessageResponse, GoogleTranslatePayload, GoogleTranslateResponse, GoogleText2SpeechPayload, GoogleText2SpeechResponse, ChatAnswer, GetAlternativesPayload, Stroke } from './api.types';
3
+ import { ExtendWithOptional } from '../../../lib/helpers/types';
4
4
  export type ConversationMessage = {
5
5
  id: string;
6
6
  message: string;
@@ -10,6 +10,12 @@ export type ConversationMessage = {
10
10
  translatedMessage?: string;
11
11
  endMessage?: boolean;
12
12
  };
13
+ export type ChatbotMessages = {
14
+ error: ConversationMessage;
15
+ start: ConversationMessage;
16
+ endMessage: ConversationMessage;
17
+ anotherHintOption: ChatAnswer;
18
+ };
13
19
  export type ChatbotModelProps = {
14
20
  $key?: Store<string>;
15
21
  api: {
@@ -18,12 +24,7 @@ export type ChatbotModelProps = {
18
24
  postTranslateText: (props: GoogleTranslatePayload) => Promise<GoogleTranslateResponse>;
19
25
  postTextToSpeech: (props: GoogleText2SpeechPayload) => Promise<GoogleText2SpeechResponse>;
20
26
  };
21
- messages: {
22
- error: ConversationMessage;
23
- start: ConversationMessage;
24
- endMessage: ConversationMessage;
25
- anotherHintOption: ChatAnswer;
26
- };
27
+ messages: ChatbotMessages;
27
28
  };
28
29
  export type SendHelpParams = {
29
30
  payload: PostMessagePayload;
@@ -51,5 +52,8 @@ export type ChatbotRenderer = {
51
52
  variant: MessageVariant;
52
53
  withTextToSpeech: boolean;
53
54
  };
54
- export type CreateMessageResponse = AccomplishTo<PostMessageResponse, ConversationMessage>;
55
+ export type CreateMessageResponse = ExtendWithOptional<PostMessageResponse, ConversationMessage>;
56
+ export type IChatDrawBoardAdapter = {
57
+ getVisibleStrokes(): Promise<Stroke[] | null>;
58
+ };
55
59
  //# sourceMappingURL=model.types.d.ts.map