@miso.ai/client-sdk-ui 1.13.2-beta.1 → 1.14.0-beta.3

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 (226) hide show
  1. package/dist/cjs/asset/svgs.js +17 -4
  2. package/dist/cjs/combo/ask/index.js +2 -2
  3. package/dist/cjs/constants.js +120 -98
  4. package/dist/cjs/defaults/ask/controls.js +1 -1
  5. package/dist/cjs/defaults/hybrid-search/answer-box.js +4 -4
  6. package/dist/cjs/defaults.js +259 -0
  7. package/dist/cjs/element/container/index.js +28 -0
  8. package/dist/cjs/element/container/miso-ask.js +3 -3
  9. package/dist/cjs/element/container/miso-conversation.js +21 -0
  10. package/dist/cjs/element/container/miso-explore.js +1 -1
  11. package/dist/cjs/element/container/miso-history.js +21 -0
  12. package/dist/cjs/element/container/miso-hybrid-search.js +1 -1
  13. package/dist/cjs/element/container/miso-message-item.js +91 -0
  14. package/dist/cjs/element/container/miso-recommendation.js +1 -1
  15. package/dist/cjs/element/container/miso-search.js +1 -1
  16. package/dist/cjs/element/container/miso-thread-item.js +91 -0
  17. package/dist/cjs/element/context/miso-follow-ups.js +1 -1
  18. package/dist/cjs/element/role/index.js +49 -0
  19. package/dist/cjs/element/role/miso-delete.js +20 -0
  20. package/dist/cjs/element/role/miso-messages.js +20 -0
  21. package/dist/cjs/element/role/miso-new-thread.js +20 -0
  22. package/dist/cjs/element/role/miso-rename.js +20 -0
  23. package/dist/cjs/element/role/miso-subscription.js +20 -0
  24. package/dist/cjs/element/role/miso-threads.js +20 -0
  25. package/dist/cjs/element/role/miso-title.js +20 -0
  26. package/dist/cjs/layout/affiliation/affiliation.js +1 -1
  27. package/dist/cjs/layout/banner/banner.js +2 -1
  28. package/dist/cjs/layout/button/button.js +170 -0
  29. package/dist/cjs/layout/button/checkbox.js +116 -0
  30. package/dist/cjs/layout/button/more-button.js +3 -3
  31. package/dist/cjs/layout/container/container.js +1 -1
  32. package/dist/cjs/layout/container/item-container.js +99 -0
  33. package/dist/cjs/layout/error/error.js +2 -1
  34. package/dist/cjs/layout/index.js +42 -0
  35. package/dist/cjs/layout/input/facets.js +4 -3
  36. package/dist/cjs/layout/input/option-list.js +3 -2
  37. package/dist/cjs/layout/input/search-box.js +50 -12
  38. package/dist/cjs/layout/input/select.js +2 -1
  39. package/dist/cjs/layout/list/cards.js +2 -1
  40. package/dist/cjs/layout/list/carousel.js +2 -1
  41. package/dist/cjs/layout/list/collection.js +13 -1
  42. package/dist/cjs/layout/list/gallery.js +2 -1
  43. package/dist/cjs/layout/list/horizontal.js +2 -1
  44. package/dist/cjs/layout/list/list.js +2 -1
  45. package/dist/cjs/layout/list/messages.js +359 -0
  46. package/dist/cjs/layout/list/threads.js +199 -0
  47. package/dist/cjs/layout/mixin/trackable.js +4 -5
  48. package/dist/cjs/layout/mixin/triggerable.js +2 -2
  49. package/dist/cjs/layout/radio/feedback.js +4 -3
  50. package/dist/cjs/layout/templates.js +97 -0
  51. package/dist/cjs/layout/text/question.js +71 -0
  52. package/dist/cjs/layout/text/text.js +2 -1
  53. package/dist/cjs/layout/text/typewriter/index.js +18 -23
  54. package/dist/cjs/plugin.js +43 -104
  55. package/dist/cjs/util/confirm.js +33 -0
  56. package/dist/cjs/util/dom.js +21 -0
  57. package/dist/cjs/util/modal.js +48 -0
  58. package/dist/cjs/util/prompt.js +47 -0
  59. package/dist/cjs/version.js +1 -1
  60. package/package.json +5 -4
  61. package/src/CLAUDE.md +51 -104
  62. package/src/asset/svgs.js +16 -3
  63. package/src/combo/ask/index.js +2 -2
  64. package/src/constants.js +39 -147
  65. package/src/defaults/ask/controls.js +1 -1
  66. package/src/defaults/hybrid-search/answer-box.js +2 -2
  67. package/src/defaults.js +174 -0
  68. package/src/element/container/index.js +4 -0
  69. package/src/element/container/miso-ask.js +3 -3
  70. package/src/element/container/miso-conversation.js +19 -0
  71. package/src/element/container/miso-explore.js +1 -1
  72. package/src/element/container/miso-history.js +19 -0
  73. package/src/element/container/miso-hybrid-search.js +1 -1
  74. package/src/element/container/miso-message-item.js +94 -0
  75. package/src/element/container/miso-recommendation.js +1 -1
  76. package/src/element/container/miso-search.js +1 -1
  77. package/src/element/container/miso-thread-item.js +94 -0
  78. package/src/element/context/miso-follow-ups.js +1 -1
  79. package/src/element/role/index.js +7 -0
  80. package/src/element/role/miso-delete.js +16 -0
  81. package/src/element/role/miso-messages.js +16 -0
  82. package/src/element/role/miso-new-thread.js +16 -0
  83. package/src/element/role/miso-rename.js +16 -0
  84. package/src/element/role/miso-subscription.js +16 -0
  85. package/src/element/role/miso-threads.js +16 -0
  86. package/src/element/role/miso-title.js +16 -0
  87. package/src/layout/affiliation/affiliation.js +2 -2
  88. package/src/layout/banner/banner.js +2 -1
  89. package/src/layout/button/button.js +152 -0
  90. package/src/layout/button/checkbox.js +92 -0
  91. package/src/layout/button/more-button.js +3 -3
  92. package/src/layout/container/container.js +2 -2
  93. package/src/layout/container/item-container.js +99 -0
  94. package/src/layout/error/error.js +2 -1
  95. package/src/layout/index.js +6 -0
  96. package/src/layout/input/facets.js +3 -2
  97. package/src/layout/input/option-list.js +3 -2
  98. package/src/layout/input/search-box.js +45 -8
  99. package/src/layout/input/select.js +2 -1
  100. package/src/layout/list/cards.js +2 -1
  101. package/src/layout/list/carousel.js +2 -1
  102. package/src/layout/list/collection.js +15 -2
  103. package/src/layout/list/gallery.js +2 -1
  104. package/src/layout/list/horizontal.js +2 -1
  105. package/src/layout/list/list.js +2 -1
  106. package/src/layout/list/messages.js +316 -0
  107. package/src/layout/list/threads.js +166 -0
  108. package/src/layout/mixin/trackable.js +2 -3
  109. package/src/layout/mixin/triggerable.js +1 -1
  110. package/src/layout/radio/feedback.js +3 -2
  111. package/src/layout/templates.js +97 -0
  112. package/src/layout/text/question.js +58 -0
  113. package/src/layout/text/text.js +2 -1
  114. package/src/layout/text/typewriter/index.js +15 -18
  115. package/src/plugin.js +31 -117
  116. package/src/util/confirm.js +28 -0
  117. package/src/util/dom.js +16 -0
  118. package/src/util/modal.js +49 -0
  119. package/src/util/prompt.js +42 -0
  120. package/src/version.js +1 -1
  121. package/dist/cjs/actor/data.js +0 -132
  122. package/dist/cjs/actor/feedback.js +0 -29
  123. package/dist/cjs/actor/fields.js +0 -57
  124. package/dist/cjs/actor/filters.js +0 -161
  125. package/dist/cjs/actor/hub.js +0 -57
  126. package/dist/cjs/actor/index.js +0 -73
  127. package/dist/cjs/actor/interactions.js +0 -36
  128. package/dist/cjs/actor/sessions.js +0 -25
  129. package/dist/cjs/actor/tracker-states.js +0 -61
  130. package/dist/cjs/actor/tracker.js +0 -109
  131. package/dist/cjs/actor/trackers.js +0 -52
  132. package/dist/cjs/actor/utils.js +0 -15
  133. package/dist/cjs/actor/view.js +0 -294
  134. package/dist/cjs/actor/views.js +0 -209
  135. package/dist/cjs/source.js +0 -27
  136. package/dist/cjs/util/proxy.js +0 -88
  137. package/dist/cjs/util/trackers.js +0 -88
  138. package/dist/cjs/workflow/affiliations.js +0 -140
  139. package/dist/cjs/workflow/answer-based.js +0 -337
  140. package/dist/cjs/workflow/ask.js +0 -319
  141. package/dist/cjs/workflow/asks.js +0 -150
  142. package/dist/cjs/workflow/autocompletable.js +0 -63
  143. package/dist/cjs/workflow/autocomplete.js +0 -120
  144. package/dist/cjs/workflow/base.js +0 -418
  145. package/dist/cjs/workflow/context.js +0 -19
  146. package/dist/cjs/workflow/explore.js +0 -210
  147. package/dist/cjs/workflow/explores.js +0 -21
  148. package/dist/cjs/workflow/hybrid-search-answer.js +0 -88
  149. package/dist/cjs/workflow/hybrid-search-views.js +0 -109
  150. package/dist/cjs/workflow/hybrid-search.js +0 -213
  151. package/dist/cjs/workflow/index.js +0 -41
  152. package/dist/cjs/workflow/options/api.js +0 -41
  153. package/dist/cjs/workflow/options/auto-query.js +0 -97
  154. package/dist/cjs/workflow/options/configurable.js +0 -45
  155. package/dist/cjs/workflow/options/data-processor.js +0 -20
  156. package/dist/cjs/workflow/options/filters.js +0 -15
  157. package/dist/cjs/workflow/options/index.js +0 -126
  158. package/dist/cjs/workflow/options/interactions.js +0 -41
  159. package/dist/cjs/workflow/options/layouts.js +0 -79
  160. package/dist/cjs/workflow/options/options.js +0 -156
  161. package/dist/cjs/workflow/options/pagination.js +0 -25
  162. package/dist/cjs/workflow/options/roles.js +0 -15
  163. package/dist/cjs/workflow/options/templates.js +0 -30
  164. package/dist/cjs/workflow/options/trackers.js +0 -83
  165. package/dist/cjs/workflow/options/utils.js +0 -33
  166. package/dist/cjs/workflow/processors.js +0 -607
  167. package/dist/cjs/workflow/recommendation.js +0 -57
  168. package/dist/cjs/workflow/recommendations.js +0 -18
  169. package/dist/cjs/workflow/search-based.js +0 -337
  170. package/dist/cjs/workflow/search.js +0 -64
  171. package/dist/cjs/workflow/unit.js +0 -57
  172. package/dist/cjs/workflow/units.js +0 -42
  173. package/dist/cjs/workflow/use-link.js +0 -49
  174. package/src/actor/data.js +0 -106
  175. package/src/actor/feedback.js +0 -28
  176. package/src/actor/fields.js +0 -51
  177. package/src/actor/filters.js +0 -149
  178. package/src/actor/hub.js +0 -47
  179. package/src/actor/index.js +0 -10
  180. package/src/actor/interactions.js +0 -32
  181. package/src/actor/sessions.js +0 -21
  182. package/src/actor/tracker-states.js +0 -57
  183. package/src/actor/tracker.js +0 -104
  184. package/src/actor/trackers.js +0 -45
  185. package/src/actor/utils.js +0 -7
  186. package/src/actor/view.js +0 -272
  187. package/src/actor/views.js +0 -224
  188. package/src/source.js +0 -17
  189. package/src/util/proxy.js +0 -81
  190. package/src/util/trackers.js +0 -84
  191. package/src/workflow/affiliations.js +0 -121
  192. package/src/workflow/answer-based.js +0 -312
  193. package/src/workflow/ask.js +0 -284
  194. package/src/workflow/asks.js +0 -143
  195. package/src/workflow/autocompletable.js +0 -67
  196. package/src/workflow/autocomplete.js +0 -114
  197. package/src/workflow/base.js +0 -396
  198. package/src/workflow/context.js +0 -16
  199. package/src/workflow/explore.js +0 -194
  200. package/src/workflow/explores.js +0 -18
  201. package/src/workflow/hybrid-search-answer.js +0 -73
  202. package/src/workflow/hybrid-search-views.js +0 -116
  203. package/src/workflow/hybrid-search.js +0 -230
  204. package/src/workflow/index.js +0 -5
  205. package/src/workflow/options/api.js +0 -31
  206. package/src/workflow/options/auto-query.js +0 -70
  207. package/src/workflow/options/configurable.js +0 -48
  208. package/src/workflow/options/data-processor.js +0 -15
  209. package/src/workflow/options/filters.js +0 -10
  210. package/src/workflow/options/index.js +0 -11
  211. package/src/workflow/options/interactions.js +0 -36
  212. package/src/workflow/options/layouts.js +0 -73
  213. package/src/workflow/options/options.js +0 -175
  214. package/src/workflow/options/pagination.js +0 -18
  215. package/src/workflow/options/roles.js +0 -12
  216. package/src/workflow/options/templates.js +0 -27
  217. package/src/workflow/options/trackers.js +0 -80
  218. package/src/workflow/options/utils.js +0 -26
  219. package/src/workflow/processors.js +0 -490
  220. package/src/workflow/recommendation.js +0 -63
  221. package/src/workflow/recommendations.js +0 -14
  222. package/src/workflow/search-based.js +0 -329
  223. package/src/workflow/search.js +0 -73
  224. package/src/workflow/unit.js +0 -51
  225. package/src/workflow/units.js +0 -43
  226. package/src/workflow/use-link.js +0 -41
@@ -1,607 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.buildBaseInteraction = buildBaseInteraction;
7
- exports.carryOverQuestionIdToData = carryOverQuestionIdToData;
8
- exports.concatItemsFromMoreResponse = concatItemsFromMoreResponse;
9
- exports.disableAnswerForNonQueryRequest = disableAnswerForNonQueryRequest;
10
- exports.getRevision = getRevision;
11
- exports.mappingAnswerData = mappingAnswerData;
12
- exports.mappingFollowUpQuestionsData = mappingFollowUpQuestionsData;
13
- exports.mappingReasoningData = mappingReasoningData;
14
- exports.mappingSortData = mappingSortData;
15
- exports.mappingSuggestionsData = mappingSuggestionsData;
16
- exports.retainFacetCountsInData = retainFacetCountsInData;
17
- exports.writeAffiliationInfoToInteraction = writeAffiliationInfoToInteraction;
18
- exports.writeAnswerClickInfoToInteraction = writeAnswerClickInfoToInteraction;
19
- exports.writeAnswerInfoToInteraction = writeAnswerInfoToInteraction;
20
- exports.writeAnswerStageToMeta = writeAnswerStageToMeta;
21
- exports.writeDataStatus = writeDataStatus;
22
- exports.writeEventTargetToInteraction = writeEventTargetToInteraction;
23
- exports.writeExhaustionToData = writeExhaustionToData;
24
- exports.writeKeywordsToData = writeKeywordsToData;
25
- exports.writeMisoIdAsRootMisoId = writeMisoIdAsRootMisoId;
26
- exports.writeMisoIdFromSession = writeMisoIdFromSession;
27
- exports.writeMisoIdToMeta = writeMisoIdToMeta;
28
- exports.writeMisoIdToSession = writeMisoIdToSession;
29
- exports.writeQuestionInfoToInteraction = writeQuestionInfoToInteraction;
30
- exports.writeQuestionSourceToPayload = writeQuestionSourceToPayload;
31
- exports.writeRequestFromPreviousData = writeRequestFromPreviousData;
32
- exports.writeRequestInfoToInteraction = writeRequestInfoToInteraction;
33
- exports.writeRequestMetadataToInteraction = writeRequestMetadataToInteraction;
34
- exports.writeSessionInfoToInteraction = writeSessionInfoToInteraction;
35
- exports.writeUnanswerableToMeta = writeUnanswerableToMeta;
36
- var _commons = require("@miso.ai/commons");
37
- var _constants = require("../constants.js");
38
- var _index = require("../actor/index.js");
39
- const _excluded = ["qs"],
40
- _excluded2 = ["role", "type", "items"];
41
- function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
42
- // role mappings //
43
- function mappingSortData(_, {
44
- hub,
45
- workflowOptions = {}
46
- } = {}) {
47
- const {
48
- sort: {
49
- options = []
50
- } = {}
51
- } = workflowOptions.filters || {};
52
- if (!options.length) {
53
- return [];
54
- }
55
- const {
56
- sort
57
- } = hub.states[_index.fields.filters()] || {};
58
- const selectedField = sort && sort.field || findDefaultSortOption(options).field;
59
- if (!selectedField) {
60
- return options;
61
- }
62
- // mark selected
63
- return options.map(option => {
64
- return Object.assign({}, option, {
65
- selected: option.field === selectedField
66
- });
67
- });
68
- }
69
- function findDefaultSortOption(options) {
70
- for (const option of options) {
71
- if (option.default) {
72
- return option;
73
- }
74
- }
75
- return options[0];
76
- }
77
- function mappingAnswerData(data) {
78
- if (!data || !data.value) {
79
- return undefined;
80
- }
81
- const {
82
- answer = '',
83
- answer_stage,
84
- finished
85
- } = data.value;
86
- return Object.freeze({
87
- value: answer,
88
- stage: answer_stage,
89
- finished: !!finished
90
- });
91
- }
92
- function mappingReasoningData(data) {
93
- if (!data || !data.value) {
94
- return undefined;
95
- }
96
- const {
97
- reasoning = '',
98
- reasoning_finished
99
- } = data.value;
100
- return Object.freeze({
101
- value: reasoning,
102
- stage: 'reasoning',
103
- finished: !!reasoning_finished
104
- });
105
- }
106
- function mappingSuggestionsData(_, {
107
- workflow
108
- } = {}) {
109
- const previous = workflow.previous;
110
- const values = previous && previous.states[_index.fields.data()].value;
111
- const value = values && (values.suggested_followup_questions || values.followup_questions || []);
112
- return value && value.map(text => ({
113
- text
114
- }));
115
- }
116
- function mappingFollowUpQuestionsData(data) {
117
- if (!data || !data.value) {
118
- return undefined;
119
- }
120
- return (data.value.followup_questions || []).map(text => ({
121
- text
122
- }));
123
- }
124
-
125
- // payload //
126
- function writeQuestionSourceToPayload(_ref = {}) {
127
- let {
128
- qs
129
- } = _ref,
130
- payload = _objectWithoutPropertiesLoose(_ref, _excluded);
131
- return (0, _commons.mergeApiPayloads)(payload, {
132
- metadata: {
133
- question_source: qs || _constants.QUESTION_SOURCE.ORGANIC // might be null, not undefined
134
- }
135
- });
136
- }
137
- function disableAnswerForNonQueryRequest(payload, type) {
138
- if (type === _constants.REQUEST_TYPE.QUERY) {
139
- return payload;
140
- }
141
- return Object.assign({}, payload, {
142
- answer: false
143
- });
144
- }
145
-
146
- // data //
147
- function getRevision(data) {
148
- return data && data.value && data.value.revision;
149
- }
150
- function writeRequestFromPreviousData(data, oldData) {
151
- // patch request in case user call updateData() without request object in custom data scenario
152
- if (!data || !data.value || data.request || !oldData || !oldData.request) {
153
- return data;
154
- }
155
- const {
156
- request
157
- } = oldData;
158
- return Object.assign({}, data, {
159
- request
160
- });
161
- }
162
- function writeDataStatus(data) {
163
- const status = getStatus(data);
164
- const ongoing = status === _constants.STATUS.READY ? data.ongoing : undefined;
165
- return (0, _commons.trimObj)(Object.assign({
166
- status,
167
- ongoing
168
- }, data)); // let orinigal data override status and ongoing
169
- }
170
- function getStatus(data) {
171
- if (!data) {
172
- return _constants.STATUS.INITIAL;
173
- }
174
- const {
175
- request,
176
- error,
177
- value
178
- } = data;
179
- return error ? _constants.STATUS.ERRONEOUS : value ? _constants.STATUS.READY : request ? _constants.STATUS.LOADING : _constants.STATUS.INITIAL;
180
- }
181
- function writeMisoIdToMeta(data) {
182
- const {
183
- value
184
- } = data;
185
- if (!value) {
186
- return data;
187
- }
188
- const {
189
- miso_id
190
- } = value;
191
- if (!miso_id) {
192
- return data;
193
- }
194
- return Object.assign({}, data, {
195
- meta: Object.assign({}, data.meta, {
196
- miso_id
197
- })
198
- });
199
- }
200
- function writeMisoIdToSession(data) {
201
- const {
202
- session,
203
- value
204
- } = data;
205
- if (!session || !value) {
206
- return;
207
- }
208
- const {
209
- miso_id
210
- } = value;
211
- if (!miso_id) {
212
- return;
213
- }
214
- session.meta.miso_id = miso_id;
215
- }
216
- function writeMisoIdFromSession(data) {
217
- const {
218
- session,
219
- value
220
- } = data;
221
- if (!session || !value) {
222
- return data;
223
- }
224
- const {
225
- meta: {
226
- miso_id
227
- } = {}
228
- } = session;
229
- if (!miso_id) {
230
- return data;
231
- }
232
- return Object.assign({}, data, {
233
- meta: Object.assign({}, data.meta, {
234
- miso_id
235
- })
236
- });
237
- }
238
- function writeKeywordsToData(data) {
239
- const {
240
- request,
241
- value
242
- } = data;
243
- // we still want the value in loading status
244
- if (!request) {
245
- return data;
246
- }
247
- const {
248
- payload
249
- } = request || {};
250
- const {
251
- q: keywords
252
- } = payload || {};
253
- if (!keywords) {
254
- return data;
255
- }
256
- return Object.assign({}, data, {
257
- value: Object.assign({}, value, {
258
- keywords
259
- })
260
- });
261
- }
262
- function writeAnswerStageToMeta(data) {
263
- const {
264
- value
265
- } = data;
266
- if (!value) {
267
- return data;
268
- }
269
- const {
270
- answer_stage
271
- } = value;
272
- if (!answer_stage) {
273
- return data;
274
- }
275
- // 1. put answer_stage to meta
276
- // 2. mark ongoing flag
277
- return Object.assign({}, data, {
278
- ongoing: !value.finished,
279
- meta: Object.assign({}, data.meta, {
280
- answer_stage
281
- })
282
- });
283
- }
284
- function retainFacetCountsInData(data, currentFacetCounts) {
285
- if (!currentFacetCounts) {
286
- return data;
287
- }
288
- const {
289
- status,
290
- value
291
- } = data;
292
- switch (status) {
293
- case _constants.STATUS.INITIAL:
294
- case _constants.STATUS.LOADING:
295
- break;
296
- default:
297
- return data;
298
- }
299
- if (value && value.facet_counts) {
300
- return data;
301
- }
302
- return Object.assign({}, data, {
303
- value: Object.assign({}, value, {
304
- facet_counts: currentFacetCounts
305
- })
306
- });
307
- }
308
- function writeMisoIdAsRootMisoId(data) {
309
- const {
310
- value
311
- } = data;
312
- if (!value) {
313
- return data;
314
- }
315
- const {
316
- miso_id
317
- } = value;
318
- if (!miso_id) {
319
- return data;
320
- }
321
- return Object.assign({}, data, {
322
- value: Object.assign({}, value, {
323
- root_miso_id: miso_id
324
- })
325
- });
326
- }
327
- function concatItemsFromMoreResponse(oldData, newData, {
328
- role = _constants.ROLE.PRODUCTS
329
- } = {}) {
330
- if (!newData.value) {
331
- return oldData;
332
- }
333
- const {
334
- [role]: oldProducts = [],
335
- facet_counts,
336
- total,
337
- root_miso_id
338
- } = oldData.value;
339
- const {
340
- [role]: newProducts = []
341
- } = newData.value;
342
- // keep old exhaustion flag, just in case
343
- // TODO
344
-
345
- // use old values of facet_counts and total, for they are affected by product_id exclusion
346
- return Object.assign({}, newData, {
347
- value: Object.assign({}, newData.value, {
348
- facet_counts,
349
- total,
350
- root_miso_id,
351
- [role]: [...oldProducts, ...newProducts]
352
- })
353
- });
354
- }
355
- function writeExhaustionToData(data, {
356
- role = _constants.ROLE.PRODUCTS
357
- } = {}) {
358
- const {
359
- status,
360
- request,
361
- value
362
- } = data;
363
- // keep track of the exhaustion state
364
- if (status !== _constants.STATUS.READY || !request || !value) {
365
- return data;
366
- }
367
- const {
368
- [role]: items
369
- } = value;
370
- if (!items) {
371
- return data;
372
- }
373
- const {
374
- rows
375
- } = request.payload;
376
- const {
377
- length
378
- } = items;
379
- const exhausted = length < rows;
380
- if (!exhausted) {
381
- return data;
382
- }
383
- return Object.assign({}, data, {
384
- meta: Object.assign({}, data.meta, {
385
- exhausted: true
386
- })
387
- });
388
- }
389
- function carryOverQuestionIdToData(data, oldData) {
390
- const {
391
- question_id
392
- } = oldData && oldData.value || {};
393
- if (!question_id) {
394
- return data;
395
- }
396
- return Object.assign({}, data, {
397
- value: Object.assign({}, data.value, {
398
- question_id
399
- })
400
- });
401
- }
402
- function writeUnanswerableToMeta(data) {
403
- const {
404
- value
405
- } = data;
406
- if (!value) {
407
- return data;
408
- }
409
- if (!value.finished || value.finish_reason !== 'success' || value.sources && value.sources.length > 0) {
410
- return data;
411
- }
412
- return Object.assign({}, data, {
413
- meta: Object.assign({}, data.meta, {
414
- unanswerable: true
415
- })
416
- });
417
- }
418
-
419
- // interactions //
420
- function buildBaseInteraction(args) {
421
- const {
422
- role,
423
- type,
424
- items
425
- } = args,
426
- rest = _objectWithoutPropertiesLoose(args, _excluded2);
427
- const payload = {
428
- type: type === 'viewable' ? 'viewable_impression' : type,
429
- context: {
430
- custom_context: (0, _commons.trimObj)({
431
- property: role
432
- })
433
- }
434
- };
435
- if ((0, _constants.isPerformanceEventType)(type)) {
436
- if (areProducts(role, items)) {
437
- payload.product_ids = (items || []).map(v => typeof v === 'string' ? v : v.product_id).filter(v => v);
438
- } else {
439
- payload.product_ids = [];
440
- payload.context.custom_context.items = (items || []).map(v => v.text || v.id || v);
441
- }
442
- }
443
- switch (type) {
444
- case _constants.EVENT_TYPE.SUBMIT:
445
- payload.context.custom_context.value = args.value;
446
- break;
447
- case _constants.EVENT_TYPE.FEEDBACK:
448
- payload.context.custom_context.value = payload.value = args.value;
449
- payload.context.custom_context.result_type = payload.result_type = args.result_type;
450
- break;
451
- case _constants.EVENT_TYPE.HEARTBEAT:
452
- payload.type = 'custom';
453
- payload.custom_action_name = 'heartbeat';
454
- break;
455
- case _constants.EVENT_TYPE.GENERIC_CLICK:
456
- payload.type = 'custom';
457
- payload.custom_action_name = 'generic_click';
458
- payload.context.custom_context.href = args.href;
459
- break;
460
- }
461
- return (0, _commons.trimObj)(payload);
462
- }
463
- function areProducts(role, items = []) {
464
- return (0, _constants.isProductRole)(role) || items.length > 0 && typeof items[0] === 'object' && items[0].product_id;
465
- }
466
- function writeSessionInfoToInteraction(payload, args) {
467
- const {
468
- session
469
- } = args && args.data || {};
470
- if (!session) {
471
- return payload;
472
- }
473
- const now = args.now || Date.now();
474
- return (0, _commons.mergeInteractions)(payload, {
475
- context: {
476
- custom_context: {
477
- session_id: session.uuid,
478
- session_elapsed: now - session.startAt,
479
- session_request_elapsed: session.meta.requestAt ? now - session.meta.requestAt : undefined
480
- }
481
- }
482
- });
483
- }
484
- function writeRequestMetadataToInteraction(payload, args) {
485
- const {
486
- data
487
- } = args;
488
- if (!data) {
489
- return payload;
490
- }
491
- const metadata = data.request && data.request.payload && data.request.payload.metadata;
492
- if (!metadata) {
493
- return payload;
494
- }
495
- return (0, _commons.mergeInteractions)(payload, {
496
- context: {
497
- custom_context: metadata
498
- }
499
- });
500
- }
501
- function writeRequestInfoToInteraction(payload, args) {
502
- const {
503
- data
504
- } = args;
505
- if (!data) {
506
- return payload;
507
- }
508
- const requestPayload = data.request && data.request.payload;
509
- if (!requestPayload) {
510
- return payload;
511
- }
512
- const {
513
- question,
514
- q,
515
- fq
516
- } = requestPayload;
517
- return (0, _commons.mergeInteractions)(payload, {
518
- context: {
519
- custom_context: {
520
- question,
521
- q,
522
- fq
523
- }
524
- }
525
- });
526
- }
527
- function writeAffiliationInfoToInteraction(payload, args) {
528
- if (args.role !== _constants.ROLE.AFFILIATION) {
529
- return payload;
530
- }
531
- const {
532
- items
533
- } = args;
534
- const channel = items[0] && items[0].channel || undefined;
535
- const positions = items.map(v => v.position);
536
- return (0, _commons.mergeInteractions)(payload, {
537
- context: {
538
- custom_context: {
539
- channel,
540
- positions
541
- }
542
- }
543
- });
544
- }
545
- function writeAnswerInfoToInteraction(payload, args) {
546
- payload = writeQuestionInfoToInteraction(payload, args);
547
- payload = writeAnswerClickInfoToInteraction(payload, args);
548
- payload = writeEventTargetToInteraction(payload, args);
549
- return payload;
550
- }
551
- function writeQuestionInfoToInteraction(payload = {}, {
552
- data
553
- } = {}) {
554
- if (!data) {
555
- return payload;
556
- }
557
- const {
558
- request = {},
559
- value = {}
560
- } = data;
561
- const {
562
- question_source
563
- } = request.payload && request.payload.metadata || {};
564
- const {
565
- question_id
566
- } = value;
567
- return (0, _commons.mergeInteractions)(payload, {
568
- context: {
569
- custom_context: {
570
- question_source,
571
- question_id
572
- }
573
- }
574
- });
575
- }
576
- function writeAnswerClickInfoToInteraction(payload, args) {
577
- if (args.role !== _constants.ROLE.ANSWER) {
578
- return payload;
579
- }
580
- const {
581
- items = []
582
- } = args;
583
- return (0, _commons.mergeInteractions)(payload, {
584
- context: {
585
- custom_context: {
586
- urls: items.map(item => item.url),
587
- texts: items.map(item => item.text),
588
- class_names: items.map(item => item.className),
589
- attributes: items.map(item => item.attributes)
590
- }
591
- }
592
- });
593
- }
594
- function writeEventTargetToInteraction(payload, {
595
- event_target
596
- } = {}) {
597
- if (!event_target) {
598
- return payload;
599
- }
600
- return (0, _commons.mergeInteractions)(payload, {
601
- context: {
602
- custom_context: {
603
- event_target
604
- }
605
- }
606
- });
607
- }
@@ -1,57 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _commons = require("@miso.ai/commons");
8
- var _unit = _interopRequireDefault(require("./unit.js"));
9
- var _index = require("../layout/index.js");
10
- var _constants = require("../constants.js");
11
- var _index2 = require("./options/index.js");
12
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
- const DEFAULT_API_OPTIONS = Object.freeze(Object.assign({}, _unit.default.DEFAULT_API_OPTIONS, {
14
- group: _commons.API.GROUP.RECOMMENDATION,
15
- name: _commons.API.NAME.USER_TO_PRODUCTS,
16
- payload: Object.assign({}, _unit.default.DEFAULT_API_OPTIONS.payload, {
17
- fl: ['*']
18
- })
19
- }));
20
- const DEFAULT_LAYOUTS = Object.freeze(Object.assign({}, _unit.default.DEFAULT_LAYOUTS, {
21
- [_constants.ROLE.PRODUCTS]: _index.ListLayout.type
22
- }));
23
- const DEFAULT_TRACKERS = Object.freeze(Object.assign({}, _unit.default.DEFAULT_TRACKERS, {
24
- [_constants.ROLE.PRODUCTS]: _index2.DEFAULT_TRACKER_OPTIONS
25
- }));
26
- const DEFAULT_OPTIONS = Object.freeze(Object.assign({}, _unit.default.DEFAULT_OPTIONS, {
27
- api: DEFAULT_API_OPTIONS,
28
- layouts: DEFAULT_LAYOUTS,
29
- trackers: DEFAULT_TRACKERS
30
- }));
31
- const ROLES_OPTIONS = (0, _index2.mergeRolesOptions)(_unit.default.ROLES_OPTIONS, {
32
- main: _constants.ROLE.PRODUCTS,
33
- members: Object.keys(DEFAULT_LAYOUTS)
34
- });
35
- class Recommendation extends _unit.default {
36
- constructor(context, id) {
37
- super({
38
- name: 'recommendation',
39
- context,
40
- roles: ROLES_OPTIONS,
41
- defaults: DEFAULT_OPTIONS,
42
- id
43
- });
44
- }
45
-
46
- // lifecycle //
47
- start() {
48
- // in recommendation workflow, start() triggers query
49
- this._request();
50
- return this;
51
- }
52
- notifyViewUpdate(role = _constants.ROLE.PRODUCTS, ...args) {
53
- super.notifyViewUpdate(role, ...args);
54
- return this;
55
- }
56
- }
57
- exports.default = Recommendation;
@@ -1,18 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _units = _interopRequireDefault(require("./units.js"));
8
- var _recommendation = _interopRequireDefault(require("./recommendation.js"));
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
- class Recommendations extends _units.default {
11
- constructor(plugin, client) {
12
- super('recommendations', plugin, client);
13
- }
14
- _create(unitId) {
15
- return new _recommendation.default(this, unitId);
16
- }
17
- }
18
- exports.default = Recommendations;