@miso.ai/client-sdk-ui 1.13.2-beta.0 → 1.14.0-beta.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.
Files changed (214) hide show
  1. package/dist/cjs/asset/svgs.js +15 -4
  2. package/dist/cjs/combo/ask/index.js +2 -2
  3. package/dist/cjs/constants.js +118 -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 +169 -0
  7. package/dist/cjs/element/container/index.js +14 -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-recommendation.js +1 -1
  14. package/dist/cjs/element/container/miso-search.js +1 -1
  15. package/dist/cjs/element/context/miso-follow-ups.js +1 -1
  16. package/dist/cjs/element/role/index.js +42 -0
  17. package/dist/cjs/element/role/miso-messages.js +20 -0
  18. package/dist/cjs/element/role/miso-new-thread.js +20 -0
  19. package/dist/cjs/element/role/miso-rename.js +20 -0
  20. package/dist/cjs/element/role/miso-subscription.js +20 -0
  21. package/dist/cjs/element/role/miso-threads.js +20 -0
  22. package/dist/cjs/element/role/miso-title.js +20 -0
  23. package/dist/cjs/layout/affiliation/affiliation.js +1 -1
  24. package/dist/cjs/layout/banner/banner.js +2 -1
  25. package/dist/cjs/layout/button/button.js +130 -0
  26. package/dist/cjs/layout/button/checkbox.js +115 -0
  27. package/dist/cjs/layout/button/more-button.js +3 -3
  28. package/dist/cjs/layout/container/container.js +1 -1
  29. package/dist/cjs/layout/error/error.js +2 -1
  30. package/dist/cjs/layout/index.js +28 -0
  31. package/dist/cjs/layout/input/facets.js +4 -3
  32. package/dist/cjs/layout/input/option-list.js +3 -2
  33. package/dist/cjs/layout/input/search-box.js +42 -9
  34. package/dist/cjs/layout/input/select.js +2 -1
  35. package/dist/cjs/layout/list/cards.js +2 -1
  36. package/dist/cjs/layout/list/carousel.js +2 -1
  37. package/dist/cjs/layout/list/collection.js +5 -0
  38. package/dist/cjs/layout/list/gallery.js +2 -1
  39. package/dist/cjs/layout/list/horizontal.js +2 -1
  40. package/dist/cjs/layout/list/list.js +2 -1
  41. package/dist/cjs/layout/list/messages.js +346 -0
  42. package/dist/cjs/layout/list/threads.js +257 -0
  43. package/dist/cjs/layout/mixin/trackable.js +4 -5
  44. package/dist/cjs/layout/mixin/triggerable.js +2 -2
  45. package/dist/cjs/layout/radio/feedback.js +4 -3
  46. package/dist/cjs/layout/templates.js +70 -0
  47. package/dist/cjs/layout/text/text.js +2 -1
  48. package/dist/cjs/layout/text/typewriter/index.js +4 -2
  49. package/dist/cjs/plugin.js +43 -104
  50. package/dist/cjs/util/confirm.js +33 -0
  51. package/dist/cjs/util/modal.js +48 -0
  52. package/dist/cjs/util/prompt.js +47 -0
  53. package/dist/cjs/version.js +1 -1
  54. package/package.json +5 -4
  55. package/src/CLAUDE.md +48 -105
  56. package/src/asset/svgs.js +14 -3
  57. package/src/combo/ask/index.js +2 -2
  58. package/src/constants.js +37 -147
  59. package/src/defaults/ask/controls.js +1 -1
  60. package/src/defaults/hybrid-search/answer-box.js +2 -2
  61. package/src/defaults.js +107 -0
  62. package/src/element/container/index.js +2 -0
  63. package/src/element/container/miso-ask.js +3 -3
  64. package/src/element/container/miso-conversation.js +19 -0
  65. package/src/element/container/miso-explore.js +1 -1
  66. package/src/element/container/miso-history.js +19 -0
  67. package/src/element/container/miso-hybrid-search.js +1 -1
  68. package/src/element/container/miso-recommendation.js +1 -1
  69. package/src/element/container/miso-search.js +1 -1
  70. package/src/element/context/miso-follow-ups.js +1 -1
  71. package/src/element/role/index.js +6 -0
  72. package/src/element/role/miso-messages.js +16 -0
  73. package/src/element/role/miso-new-thread.js +16 -0
  74. package/src/element/role/miso-rename.js +16 -0
  75. package/src/element/role/miso-subscription.js +16 -0
  76. package/src/element/role/miso-threads.js +16 -0
  77. package/src/element/role/miso-title.js +16 -0
  78. package/src/layout/affiliation/affiliation.js +2 -2
  79. package/src/layout/banner/banner.js +2 -1
  80. package/src/layout/button/button.js +116 -0
  81. package/src/layout/button/checkbox.js +91 -0
  82. package/src/layout/button/more-button.js +3 -3
  83. package/src/layout/container/container.js +2 -2
  84. package/src/layout/error/error.js +2 -1
  85. package/src/layout/index.js +4 -0
  86. package/src/layout/input/facets.js +3 -2
  87. package/src/layout/input/option-list.js +3 -2
  88. package/src/layout/input/search-box.js +41 -6
  89. package/src/layout/input/select.js +2 -1
  90. package/src/layout/list/cards.js +2 -1
  91. package/src/layout/list/carousel.js +2 -1
  92. package/src/layout/list/collection.js +6 -1
  93. package/src/layout/list/gallery.js +2 -1
  94. package/src/layout/list/horizontal.js +2 -1
  95. package/src/layout/list/list.js +2 -1
  96. package/src/layout/list/messages.js +318 -0
  97. package/src/layout/list/threads.js +206 -0
  98. package/src/layout/mixin/trackable.js +2 -3
  99. package/src/layout/mixin/triggerable.js +1 -1
  100. package/src/layout/radio/feedback.js +3 -2
  101. package/src/layout/templates.js +62 -0
  102. package/src/layout/text/text.js +2 -1
  103. package/src/layout/text/typewriter/index.js +5 -3
  104. package/src/plugin.js +31 -117
  105. package/src/util/confirm.js +28 -0
  106. package/src/util/modal.js +49 -0
  107. package/src/util/prompt.js +42 -0
  108. package/src/version.js +1 -1
  109. package/dist/cjs/actor/data.js +0 -132
  110. package/dist/cjs/actor/feedback.js +0 -29
  111. package/dist/cjs/actor/fields.js +0 -57
  112. package/dist/cjs/actor/filters.js +0 -161
  113. package/dist/cjs/actor/hub.js +0 -57
  114. package/dist/cjs/actor/index.js +0 -73
  115. package/dist/cjs/actor/interactions.js +0 -36
  116. package/dist/cjs/actor/sessions.js +0 -25
  117. package/dist/cjs/actor/tracker-states.js +0 -61
  118. package/dist/cjs/actor/tracker.js +0 -109
  119. package/dist/cjs/actor/trackers.js +0 -52
  120. package/dist/cjs/actor/utils.js +0 -15
  121. package/dist/cjs/actor/view.js +0 -294
  122. package/dist/cjs/actor/views.js +0 -209
  123. package/dist/cjs/source.js +0 -27
  124. package/dist/cjs/util/proxy.js +0 -88
  125. package/dist/cjs/util/trackers.js +0 -88
  126. package/dist/cjs/workflow/affiliations.js +0 -140
  127. package/dist/cjs/workflow/answer-based.js +0 -337
  128. package/dist/cjs/workflow/ask.js +0 -319
  129. package/dist/cjs/workflow/asks.js +0 -150
  130. package/dist/cjs/workflow/autocompletable.js +0 -63
  131. package/dist/cjs/workflow/autocomplete.js +0 -120
  132. package/dist/cjs/workflow/base.js +0 -418
  133. package/dist/cjs/workflow/context.js +0 -19
  134. package/dist/cjs/workflow/explore.js +0 -210
  135. package/dist/cjs/workflow/explores.js +0 -21
  136. package/dist/cjs/workflow/hybrid-search-answer.js +0 -88
  137. package/dist/cjs/workflow/hybrid-search-views.js +0 -109
  138. package/dist/cjs/workflow/hybrid-search.js +0 -213
  139. package/dist/cjs/workflow/index.js +0 -41
  140. package/dist/cjs/workflow/options/api.js +0 -41
  141. package/dist/cjs/workflow/options/auto-query.js +0 -97
  142. package/dist/cjs/workflow/options/configurable.js +0 -45
  143. package/dist/cjs/workflow/options/data-processor.js +0 -20
  144. package/dist/cjs/workflow/options/filters.js +0 -15
  145. package/dist/cjs/workflow/options/index.js +0 -126
  146. package/dist/cjs/workflow/options/interactions.js +0 -41
  147. package/dist/cjs/workflow/options/layouts.js +0 -79
  148. package/dist/cjs/workflow/options/options.js +0 -156
  149. package/dist/cjs/workflow/options/pagination.js +0 -25
  150. package/dist/cjs/workflow/options/roles.js +0 -15
  151. package/dist/cjs/workflow/options/templates.js +0 -30
  152. package/dist/cjs/workflow/options/trackers.js +0 -83
  153. package/dist/cjs/workflow/options/utils.js +0 -33
  154. package/dist/cjs/workflow/processors.js +0 -607
  155. package/dist/cjs/workflow/recommendation.js +0 -57
  156. package/dist/cjs/workflow/recommendations.js +0 -18
  157. package/dist/cjs/workflow/search-based.js +0 -337
  158. package/dist/cjs/workflow/search.js +0 -64
  159. package/dist/cjs/workflow/unit.js +0 -57
  160. package/dist/cjs/workflow/units.js +0 -42
  161. package/dist/cjs/workflow/use-link.js +0 -49
  162. package/src/actor/data.js +0 -106
  163. package/src/actor/feedback.js +0 -28
  164. package/src/actor/fields.js +0 -51
  165. package/src/actor/filters.js +0 -149
  166. package/src/actor/hub.js +0 -47
  167. package/src/actor/index.js +0 -10
  168. package/src/actor/interactions.js +0 -32
  169. package/src/actor/sessions.js +0 -21
  170. package/src/actor/tracker-states.js +0 -57
  171. package/src/actor/tracker.js +0 -104
  172. package/src/actor/trackers.js +0 -45
  173. package/src/actor/utils.js +0 -7
  174. package/src/actor/view.js +0 -272
  175. package/src/actor/views.js +0 -224
  176. package/src/source.js +0 -17
  177. package/src/util/proxy.js +0 -81
  178. package/src/util/trackers.js +0 -84
  179. package/src/workflow/affiliations.js +0 -121
  180. package/src/workflow/answer-based.js +0 -312
  181. package/src/workflow/ask.js +0 -284
  182. package/src/workflow/asks.js +0 -143
  183. package/src/workflow/autocompletable.js +0 -67
  184. package/src/workflow/autocomplete.js +0 -114
  185. package/src/workflow/base.js +0 -396
  186. package/src/workflow/context.js +0 -16
  187. package/src/workflow/explore.js +0 -194
  188. package/src/workflow/explores.js +0 -18
  189. package/src/workflow/hybrid-search-answer.js +0 -73
  190. package/src/workflow/hybrid-search-views.js +0 -116
  191. package/src/workflow/hybrid-search.js +0 -230
  192. package/src/workflow/index.js +0 -5
  193. package/src/workflow/options/api.js +0 -31
  194. package/src/workflow/options/auto-query.js +0 -70
  195. package/src/workflow/options/configurable.js +0 -48
  196. package/src/workflow/options/data-processor.js +0 -15
  197. package/src/workflow/options/filters.js +0 -10
  198. package/src/workflow/options/index.js +0 -11
  199. package/src/workflow/options/interactions.js +0 -36
  200. package/src/workflow/options/layouts.js +0 -73
  201. package/src/workflow/options/options.js +0 -175
  202. package/src/workflow/options/pagination.js +0 -18
  203. package/src/workflow/options/roles.js +0 -12
  204. package/src/workflow/options/templates.js +0 -27
  205. package/src/workflow/options/trackers.js +0 -80
  206. package/src/workflow/options/utils.js +0 -26
  207. package/src/workflow/processors.js +0 -490
  208. package/src/workflow/recommendation.js +0 -63
  209. package/src/workflow/recommendations.js +0 -14
  210. package/src/workflow/search-based.js +0 -329
  211. package/src/workflow/search.js +0 -73
  212. package/src/workflow/unit.js +0 -51
  213. package/src/workflow/units.js +0 -43
  214. 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;