@miso.ai/client-sdk-ui 1.12.3-beta.5 → 1.12.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.
@@ -33,6 +33,12 @@ Object.defineProperty(exports, "SessionMaker", {
33
33
  return _sessions.default;
34
34
  }
35
35
  });
36
+ Object.defineProperty(exports, "TrackersActor", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _trackers.default;
40
+ }
41
+ });
36
42
  Object.defineProperty(exports, "ViewsActor", {
37
43
  enumerable: true,
38
44
  get: function () {
@@ -47,6 +53,7 @@ var _sessions = _interopRequireDefault(require("./sessions.js"));
47
53
  var _data = _interopRequireDefault(require("./data.js"));
48
54
  var _views = _interopRequireDefault(require("./views.js"));
49
55
  var _feedback = _interopRequireDefault(require("./feedback.js"));
56
+ var _trackers = _interopRequireDefault(require("./trackers.js"));
50
57
  var _interactions = _interopRequireDefault(require("./interactions.js"));
51
58
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
52
59
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
@@ -36,7 +36,7 @@ class Tracker {
36
36
  const {
37
37
  options
38
38
  } = this;
39
- if (!options) {
39
+ if (!options || options.active === false) {
40
40
  return;
41
41
  }
42
42
  this._syncSession();
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _constants = require("../constants.js");
8
+ var _tracker = _interopRequireDefault(require("./tracker.js"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ class TrackersActor {
11
+ constructor(hub, {
12
+ options
13
+ }) {
14
+ this._hub = hub;
15
+ this._options = options;
16
+ this._trackers = {};
17
+ }
18
+ get(role) {
19
+ if (!this._trackers[role]) {
20
+ const itemless = role === _constants.ROLE.CONTAINER;
21
+ this._trackers[role] = new _tracker.default({
22
+ hub: this._hub,
23
+ role,
24
+ itemless,
25
+ options: () => this._getTrackerOptions(role)
26
+ });
27
+ }
28
+ return this._trackers[role];
29
+ }
30
+ _getTrackerOptions(role) {
31
+ const allTrackerOptions = this._options.resolved.trackers;
32
+ return allTrackerOptions && allTrackerOptions[role] || {
33
+ active: false
34
+ };
35
+ }
36
+ }
37
+ exports.default = TrackersActor;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.WORKFLOW_CONFIGURABLE = exports.TRACKING_STATUS = exports.TRACKING_EVENT_TYPES = exports.STATUS = exports.ROLE = exports.QUESTION_SOURCE = exports.PERFORMANCE_EVENT_TYPES = exports.EVENT_TYPE = exports.DEFAULT_UNIT_ID = exports.ATTR_DATA_MISO_UNIT_ID = exports.ATTR_DATA_MISO_PRODUCT_ID = void 0;
6
+ exports.WORKFLOW_CONFIGURABLE = exports.TRACKING_STATUS = exports.TRACKING_EVENT_TYPES = exports.STATUS = exports.ROLE = exports.REQUEST_TYPE = exports.QUESTION_SOURCE = exports.PERFORMANCE_EVENT_TYPES = exports.EVENT_TYPE = exports.DEFAULT_UNIT_ID = exports.ATTR_DATA_MISO_UNIT_ID = exports.ATTR_DATA_MISO_PRODUCT_ID = void 0;
7
7
  exports.isDataRole = isDataRole;
8
8
  exports.isPerformanceEventType = isPerformanceEventType;
9
9
  exports.isProductRole = isProductRole;
@@ -100,4 +100,9 @@ const WORKFLOW_CONFIGURABLE = exports.WORKFLOW_CONFIGURABLE = Object.freeze({
100
100
  FILTERS: 'filters',
101
101
  PAGINATION: 'pagination',
102
102
  TEMPLATES: 'templates'
103
+ });
104
+ const REQUEST_TYPE = exports.REQUEST_TYPE = Object.freeze({
105
+ QUERY: 'query',
106
+ REFINE: 'refine',
107
+ MORE: 'more'
103
108
  });
@@ -4,4 +4,4 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _default = exports.default = '1.12.3-beta.5';
7
+ var _default = exports.default = '1.12.3';
@@ -236,7 +236,7 @@ class AnswerBasedWorkflow extends _base.default {
236
236
  sourceParam
237
237
  } = this._autoQuery;
238
238
  const question = value && value.question || request && request.payload && request.payload.question;
239
- const questionSource = request && request.payload && request.payload._meta && request.payload._meta.question_source;
239
+ const questionSource = request && request.payload && request.payload.metadata && request.payload.metadata.question_source;
240
240
  if (!question) {
241
241
  return; // at initial phase
242
242
  }
@@ -263,10 +263,34 @@ class AnswerBasedWorkflow extends _base.default {
263
263
  payload = (0, _processors.writeEventTargetToInteraction)(payload, args);
264
264
  return payload;
265
265
  }
266
+ _writeRequestInfoToInteraction(payload, args) {
267
+ const {
268
+ data
269
+ } = args;
270
+ if (!data) {
271
+ return payload;
272
+ }
273
+ const requestPayload = data.request && data.request.payload;
274
+ if (!requestPayload) {
275
+ return payload;
276
+ }
277
+ const {
278
+ question,
279
+ fq
280
+ } = requestPayload;
281
+ return (0, _commons.mergeInteractions)(payload, {
282
+ context: {
283
+ custom_context: {
284
+ question,
285
+ fq
286
+ }
287
+ }
288
+ });
289
+ }
266
290
  _writeAskPropertiesToInteraction(payload = {}, args) {
267
291
  const question_source = this._getQuestionSourceFromViewState(args);
268
292
  const question_id = this.questionId;
269
- return (0, _processors.mergeInteraction)(payload, {
293
+ return (0, _commons.mergeInteractions)(payload, {
270
294
  context: {
271
295
  custom_context: {
272
296
  question_source,
@@ -282,7 +306,7 @@ class AnswerBasedWorkflow extends _base.default {
282
306
  const {
283
307
  items = []
284
308
  } = args;
285
- return (0, _processors.mergeInteraction)(payload, {
309
+ return (0, _commons.mergeInteractions)(payload, {
286
310
  context: {
287
311
  custom_context: {
288
312
  urls: items.map(item => item.url),
@@ -300,7 +324,7 @@ class AnswerBasedWorkflow extends _base.default {
300
324
  const {
301
325
  payload
302
326
  } = request || {};
303
- return payload && payload._meta && payload._meta.question_source || undefined;
327
+ return payload && payload.metadata && payload.metadata.question_source || undefined;
304
328
  }
305
329
 
306
330
  // handlers //
@@ -9,8 +9,8 @@ var _answerBased = _interopRequireDefault(require("./answer-based.js"));
9
9
  var _index = require("../actor/index.js");
10
10
  var _constants = require("../constants.js");
11
11
  var _index2 = require("../layout/index.js");
12
- var _processors = require("./processors.js");
13
12
  var _index3 = require("./options/index.js");
13
+ var _processors = require("./processors.js");
14
14
  var _templates = require("../defaults/ask/templates.js");
15
15
  const _excluded = ["q", "qs", "questionId"];
16
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -147,7 +147,7 @@ class Ask extends _answerBased.default {
147
147
  question: q,
148
148
  // question, not q
149
149
  parent_question_id: parentQuestionId,
150
- _meta: Object.assign({}, options._meta, {
150
+ metadata: Object.assign({}, options.metadata, {
151
151
  question_source: qs || _constants.QUESTION_SOURCE.ORGANIC // might be null, not undefined
152
152
  })
153
153
  }));
@@ -202,7 +202,7 @@ class Ask extends _answerBased.default {
202
202
  question_id = this.questionId;
203
203
  question_source = this._getQuestionSourceFromViewState(args);
204
204
  }
205
- return (0, _processors.mergeInteraction)(payload, {
205
+ return (0, _commons.mergeInteractions)(payload, {
206
206
  context: {
207
207
  custom_context: {
208
208
  property,
@@ -82,6 +82,7 @@ class Workflow extends _commons.Component {
82
82
  options,
83
83
  workflow: this
84
84
  });
85
+ //this._trackers = new TrackersActor(hub, { options });
85
86
  this._interactions = new _index.InteractionsActor(hub, {
86
87
  client,
87
88
  options
@@ -280,7 +281,10 @@ class Workflow extends _commons.Component {
280
281
  return this._views.trackers;
281
282
  }
282
283
  _onTracker(args) {
283
- const payload = this._buildInteraction(args);
284
+ const data = this._hub.states[_index.fields.data()];
285
+ const payload = this._buildInteraction(Object.assign({}, args, {
286
+ data
287
+ }));
284
288
  this._sendInteraction(payload);
285
289
  }
286
290
  _buildInteraction(args) {
@@ -295,7 +299,9 @@ class Workflow extends _commons.Component {
295
299
  return payload;
296
300
  }
297
301
  _defaultProcessInteraction(payload, args) {
302
+ payload = (0, _processors.writeRequestMetadataToInteraction)(payload, args);
298
303
  payload = this._writeApiInfoToInteraction(payload, args);
304
+ payload = this._writeRequestInfoToInteraction(payload, args);
299
305
  payload = this._writeMisoIdToInteraction(payload, args);
300
306
  payload = (0, _processors.writeAffiliationInfoToInteraction)(payload, args);
301
307
  return payload;
@@ -305,7 +311,7 @@ class Workflow extends _commons.Component {
305
311
  group,
306
312
  name
307
313
  } = this._options.resolved.api;
308
- return (0, _processors.mergeInteraction)(payload, {
314
+ return (0, _commons.mergeInteractions)(payload, {
309
315
  context: {
310
316
  custom_context: {
311
317
  api_group: group,
@@ -314,11 +320,14 @@ class Workflow extends _commons.Component {
314
320
  }
315
321
  });
316
322
  }
323
+ _writeRequestInfoToInteraction(payload, args) {
324
+ return payload;
325
+ }
317
326
  _writeMisoIdToInteraction(payload, args) {
318
327
  // TODO: ad-hoc, try to pass info from tracker
319
328
  const state = this._hub.states[_index.fields.view(args.role)] || {};
320
329
  const miso_id = state.meta && state.meta.miso_id || undefined;
321
- return miso_id ? (0, _processors.mergeInteraction)(payload, {
330
+ return miso_id ? (0, _commons.mergeInteractions)(payload, {
322
331
  miso_id
323
332
  }) : payload;
324
333
  }
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ var _commons = require("@miso.ai/commons");
7
8
  var _answerBased = _interopRequireDefault(require("./answer-based.js"));
8
9
  var _constants = require("../constants.js");
9
10
  var _index = require("./options/index.js");
@@ -59,10 +60,10 @@ class HybridSearchAnswer extends _answerBased.default {
59
60
  qs
60
61
  } = _ref,
61
62
  payload = _objectWithoutPropertiesLoose(_ref, _excluded);
62
- return Object.assign({}, payload, {
63
- _meta: Object.assign({}, payload._meta, {
63
+ return (0, _commons.mergeApiPayloads)(payload, {
64
+ metadata: {
64
65
  question_source: qs || _constants.QUESTION_SOURCE.ORGANIC // might be null, not undefined
65
- })
66
+ }
66
67
  });
67
68
  }
68
69
 
@@ -43,15 +43,13 @@ class HybridSearchResults extends _searchBased.default {
43
43
  // get stored query from sibling
44
44
  return this._superworkflow._answer._hub.states[_index.fields.query()];
45
45
  }
46
- _buildPayload(payload) {
46
+ _buildPayload(payload, type) {
47
+ payload = super._buildPayload(payload, type);
47
48
  // borrow the work from the sibling
48
49
  payload = this._superworkflow._answer._writeQuestionSourceToPayload(payload);
49
- payload = this._writeFiltersToPayload(payload);
50
- payload = this._writePageInfoToPayload(payload);
51
50
  payload = this._writeQuestionIdToPayload(payload);
52
- return Object.assign({}, payload, {
53
- answer: false
54
- });
51
+ payload = (0, _processors.disableAnswerForNonQueryRequest)(payload, type);
52
+ return payload;
55
53
  }
56
54
  _buildOrderBy(sort) {
57
55
  if (!sort) {
@@ -61,10 +59,10 @@ class HybridSearchResults extends _searchBased.default {
61
59
  return sort.field;
62
60
  }
63
61
  _writeQuestionIdToPayload(payload) {
64
- return Object.assign({}, payload, {
65
- _meta: (0, _commons.trimObj)(Object.assign({}, payload._meta, {
62
+ return (0, _commons.mergeApiPayloads)(payload, {
63
+ metadata: {
66
64
  question_id: this._superworkflow._answer.questionId
67
- }))
65
+ }
68
66
  });
69
67
  }
70
68
 
@@ -36,17 +36,6 @@ function mergeApiOptions(...optionsList) {
36
36
  return false;
37
37
  }
38
38
  return (0, _utils.mergeOptions)(optionsList, (merged, options) => Object.assign(merged, Object.assign({}, options, {
39
- payload: mergeApiPayloads(merged.payload, options.payload)
39
+ payload: (0, _commons.mergeApiPayloads)(merged.payload, options.payload)
40
40
  })));
41
- }
42
- function mergeApiPayloads(base, overrides) {
43
- return Object.assign({}, base, overrides, mergeObjectValueIfPresent('_meta', base, overrides));
44
- }
45
- function mergeObjectValueIfPresent(key, base, overrides) {
46
- const baseValue = base && base[key];
47
- const overridesValue = overrides && overrides[key];
48
- const value = baseValue ? overridesValue ? Object.assign({}, baseValue, overridesValue) : baseValue : overridesValue;
49
- return value !== undefined ? {
50
- [key]: value
51
- } : {};
52
41
  }
@@ -5,13 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.buildBaseInteraction = buildBaseInteraction;
7
7
  exports.concatItemsFromMoreResponse = concatItemsFromMoreResponse;
8
+ exports.disableAnswerForNonQueryRequest = disableAnswerForNonQueryRequest;
8
9
  exports.getRevision = getRevision;
9
10
  exports.mappingAnswerData = mappingAnswerData;
10
11
  exports.mappingFollowUpQuestionsData = mappingFollowUpQuestionsData;
11
12
  exports.mappingReasoningData = mappingReasoningData;
12
13
  exports.mappingSortData = mappingSortData;
13
14
  exports.mappingSuggestionsData = mappingSuggestionsData;
14
- exports.mergeInteraction = mergeInteraction;
15
15
  exports.retainFacetCountsInData = retainFacetCountsInData;
16
16
  exports.writeAffiliationInfoToInteraction = writeAffiliationInfoToInteraction;
17
17
  exports.writeAnswerStageToMeta = writeAnswerStageToMeta;
@@ -24,6 +24,7 @@ exports.writeMisoIdFromSession = writeMisoIdFromSession;
24
24
  exports.writeMisoIdToMeta = writeMisoIdToMeta;
25
25
  exports.writeMisoIdToSession = writeMisoIdToSession;
26
26
  exports.writeRequestFromPreviousData = writeRequestFromPreviousData;
27
+ exports.writeRequestMetadataToInteraction = writeRequestMetadataToInteraction;
27
28
  exports.writeUnanswerableToMeta = writeUnanswerableToMeta;
28
29
  var _commons = require("@miso.ai/commons");
29
30
  var _constants = require("../constants.js");
@@ -111,6 +112,16 @@ function mappingFollowUpQuestionsData(data) {
111
112
  }));
112
113
  }
113
114
 
115
+ // payload //
116
+ function disableAnswerForNonQueryRequest(payload, type) {
117
+ if (type === _constants.REQUEST_TYPE.QUERY) {
118
+ return payload;
119
+ }
120
+ return Object.assign({}, payload, {
121
+ answer: false
122
+ });
123
+ }
124
+
114
125
  // data //
115
126
  function getRevision(data) {
116
127
  return data && data.value && data.value.revision;
@@ -392,6 +403,23 @@ function buildBaseInteraction(args) {
392
403
  function areProducts(role, items = []) {
393
404
  return (0, _constants.isProductRole)(role) || items.length > 0 && typeof items[0] === 'object' && items[0].product_id;
394
405
  }
406
+ function writeRequestMetadataToInteraction(payload, args) {
407
+ const {
408
+ data
409
+ } = args;
410
+ if (!data) {
411
+ return payload;
412
+ }
413
+ const metadata = data.request && data.request.payload && data.request.payload.metadata;
414
+ if (!metadata) {
415
+ return payload;
416
+ }
417
+ return (0, _commons.mergeInteractions)(payload, {
418
+ context: {
419
+ custom_context: metadata
420
+ }
421
+ });
422
+ }
395
423
  function writeAffiliationInfoToInteraction(payload, args) {
396
424
  if (args.role !== _constants.ROLE.AFFILIATION) {
397
425
  return payload;
@@ -401,7 +429,7 @@ function writeAffiliationInfoToInteraction(payload, args) {
401
429
  } = args;
402
430
  const channel = items[0] && items[0].channel || undefined;
403
431
  const positions = items.map(v => v.position);
404
- return mergeInteraction(payload, {
432
+ return (0, _commons.mergeInteractions)(payload, {
405
433
  context: {
406
434
  custom_context: {
407
435
  channel,
@@ -416,7 +444,7 @@ function writeEventTargetToInteraction(payload, {
416
444
  if (!event_target) {
417
445
  return payload;
418
446
  }
419
- return mergeInteraction(payload, {
447
+ return (0, _commons.mergeInteractions)(payload, {
420
448
  context: {
421
449
  custom_context: {
422
450
  event_target
@@ -424,13 +452,6 @@ function writeEventTargetToInteraction(payload, {
424
452
  }
425
453
  });
426
454
  }
427
- function mergeInteraction(base = {}, patch = {}) {
428
- return (0, _commons.trimObj)(Object.assign({}, base, patch, {
429
- context: (0, _commons.trimObj)(Object.assign({}, base.context, patch.context, {
430
- custom_context: (0, _commons.trimObj)(Object.assign({}, base.context && base.context.custom_context, patch.context && patch.context.custom_context))
431
- }))
432
- }));
433
- }
434
455
  function writeUnanswerableToMeta(data) {
435
456
  const {
436
457
  value
@@ -90,9 +90,6 @@ class SearchBasedWorkflow extends _base.default {
90
90
  this._hub.update(_index.fields.query(), args);
91
91
  }
92
92
  _query(args) {
93
- // keep track of the query args for refine and more calls
94
- this._queryArgs = args;
95
-
96
93
  // reset filters view
97
94
  this._views.filters.reset({
98
95
  silent: true
@@ -102,9 +99,11 @@ class SearchBasedWorkflow extends _base.default {
102
99
  this.restart();
103
100
 
104
101
  // payload
105
- const payload = this._buildPayload(args);
102
+ const type = _constants.REQUEST_TYPE.QUERY;
103
+ const payload = this._buildPayload(args, type);
106
104
  this._request({
107
- payload
105
+ payload,
106
+ type
108
107
  });
109
108
  }
110
109
  _refine() {
@@ -118,10 +117,12 @@ class SearchBasedWorkflow extends _base.default {
118
117
  this.restart();
119
118
 
120
119
  // payload
120
+ const type = _constants.REQUEST_TYPE.REFINE;
121
121
  const query = this._getQuery();
122
- const payload = this._buildPayload(query);
122
+ const payload = this._buildPayload(query, type);
123
123
  this._request({
124
- payload
124
+ payload,
125
+ type
125
126
  });
126
127
  }
127
128
 
@@ -140,23 +141,26 @@ class SearchBasedWorkflow extends _base.default {
140
141
  this._page++;
141
142
 
142
143
  // payload
144
+ const type = _constants.REQUEST_TYPE.MORE;
143
145
  const query = this._getQuery();
144
- let payload = this._buildPayload(query);
145
- payload = this._processPayloadForMoreRequest(payload);
146
+ const payload = this._buildPayload(query, type);
146
147
  this._request({
147
- payload
148
+ payload,
149
+ type
148
150
  });
149
151
  }
150
152
  _getQuery() {
151
- // TODO: just get from the hub
152
- return this._queryArgs;
153
+ return this._hub.states[_index.fields.query()];
153
154
  }
154
155
  _getPageSize() {
155
156
  return this._options.resolved.api.payload.rows;
156
157
  }
157
- _buildPayload(payload) {
158
+ _buildPayload(payload, type) {
158
159
  payload = this._writeFiltersToPayload(payload);
159
160
  payload = this._writePageInfoToPayload(payload);
161
+ if (type === _constants.REQUEST_TYPE.MORE) {
162
+ payload = this._processPayloadForMoreRequest(payload);
163
+ }
160
164
  return payload;
161
165
  }
162
166
  _writeFiltersToPayload(payload) {
@@ -194,7 +198,7 @@ class SearchBasedWorkflow extends _base.default {
194
198
  }
195
199
  _writePageInfoToPayload(payload) {
196
200
  return Object.assign({}, payload, {
197
- _meta: Object.assign({}, payload._meta, {
201
+ metadata: Object.assign({}, payload.metadata, {
198
202
  page: this._page
199
203
  })
200
204
  });
@@ -236,9 +240,9 @@ class SearchBasedWorkflow extends _base.default {
236
240
  return data; // the initial state
237
241
  }
238
242
  const {
239
- _meta
243
+ metadata
240
244
  } = request.payload;
241
- if (!_meta || !_meta.page) {
245
+ if (!metadata || !metadata.page) {
242
246
  return (0, _processors.writeMisoIdAsRootMisoId)(data); // not from "more" request
243
247
  }
244
248
  // concat records if it's from "more" request
@@ -267,6 +271,30 @@ class SearchBasedWorkflow extends _base.default {
267
271
  payload = this._writeRootMisoIdToInteraction(payload);
268
272
  return payload;
269
273
  }
274
+ _writeRequestInfoToInteraction(payload, args) {
275
+ const {
276
+ data
277
+ } = args;
278
+ if (!data) {
279
+ return payload;
280
+ }
281
+ const requestPayload = data.request && data.request.payload;
282
+ if (!requestPayload) {
283
+ return payload;
284
+ }
285
+ const {
286
+ q,
287
+ fq
288
+ } = requestPayload;
289
+ return (0, _commons.mergeInteractions)(payload, {
290
+ context: {
291
+ custom_context: {
292
+ q,
293
+ fq
294
+ }
295
+ }
296
+ });
297
+ }
270
298
  _writeRootMisoIdToInteraction(payload) {
271
299
  const data = this._hub.states[_index.fields.data()];
272
300
  const {
@@ -275,7 +303,7 @@ class SearchBasedWorkflow extends _base.default {
275
303
  if (!root_miso_id) {
276
304
  return payload;
277
305
  }
278
- return (0, _processors.mergeInteraction)(payload, {
306
+ return (0, _commons.mergeInteractions)(payload, {
279
307
  context: {
280
308
  custom_context: {
281
309
  root_miso_id
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _commons = require("@miso.ai/commons");
8
8
  var _base = _interopRequireDefault(require("./base.js"));
9
- var _processors = require("./processors.js");
10
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
10
  class UnitWorkflow extends _base.default {
12
11
  _initProperties(args) {
@@ -32,7 +31,7 @@ class UnitWorkflow extends _base.default {
32
31
  _writeUnitIdToInteraction(payload) {
33
32
  const unit_id = this.id;
34
33
  const unit_instance_uuid = this.uuid;
35
- return (0, _processors.mergeInteraction)(payload, {
34
+ return (0, _commons.mergeInteractions)(payload, {
36
35
  context: {
37
36
  custom_context: {
38
37
  unit_id,
package/package.json CHANGED
@@ -26,7 +26,7 @@
26
26
  "url": "https://github.com/MisoAI/miso-client-js-sdk/issues"
27
27
  },
28
28
  "dependencies": {
29
- "@miso.ai/commons": "1.12.3-beta.5"
29
+ "@miso.ai/commons": "1.12.3"
30
30
  },
31
- "version": "1.12.3-beta.5"
31
+ "version": "1.12.3"
32
32
  }
@@ -6,4 +6,5 @@ export { default as SessionMaker } from './sessions.js';
6
6
  export { default as DataActor } from './data.js';
7
7
  export { default as ViewsActor } from './views.js';
8
8
  export { default as FeedbackActor } from './feedback.js';
9
+ export { default as TrackersActor } from './trackers.js';
9
10
  export { default as InteractionsActor } from './interactions.js';
@@ -29,7 +29,7 @@ export default class Tracker {
29
29
  validateEventType(type);
30
30
 
31
31
  const { options } = this;
32
- if (!options) {
32
+ if (!options || options.active === false) {
33
33
  return;
34
34
  }
35
35
 
@@ -0,0 +1,30 @@
1
+ import { ROLE } from '../constants.js';
2
+ import Tracker from './tracker.js';
3
+
4
+ export default class TrackersActor {
5
+
6
+ constructor(hub, { options }) {
7
+ this._hub = hub;
8
+ this._options = options;
9
+ this._trackers = {};
10
+ }
11
+
12
+ get(role) {
13
+ if (!this._trackers[role]) {
14
+ const itemless = role === ROLE.CONTAINER;
15
+ this._trackers[role] = new Tracker({
16
+ hub: this._hub,
17
+ role,
18
+ itemless,
19
+ options: () => this._getTrackerOptions(role),
20
+ });
21
+ }
22
+ return this._trackers[role];
23
+ }
24
+
25
+ _getTrackerOptions(role) {
26
+ const allTrackerOptions = this._options.resolved.trackers;
27
+ return allTrackerOptions && allTrackerOptions[role] || { active: false };
28
+ }
29
+
30
+ }
package/src/constants.js CHANGED
@@ -139,3 +139,9 @@ export const WORKFLOW_CONFIGURABLE = Object.freeze({
139
139
  PAGINATION: 'pagination',
140
140
  TEMPLATES: 'templates',
141
141
  });
142
+
143
+ export const REQUEST_TYPE = Object.freeze({
144
+ QUERY: 'query',
145
+ REFINE: 'refine',
146
+ MORE: 'more',
147
+ });
package/src/version.js CHANGED
@@ -1 +1 @@
1
- export default '1.12.3-beta.5';
1
+ export default '1.12.3';
@@ -1,11 +1,11 @@
1
- import { API } from '@miso.ai/commons';
1
+ import { API, mergeInteractions } from '@miso.ai/commons';
2
2
  import Workflow from './base.js';
3
3
  import { fields, FeedbackActor } from '../actor/index.js';
4
4
  import { ROLE, STATUS, QUESTION_SOURCE } from '../constants.js';
5
5
  import { SearchBoxLayout, TextLayout, ListLayout, GalleryLayout, TypewriterLayout, FeedbackLayout, AffiliationLayout } from '../layout/index.js';
6
6
  import { processData as processAffiliationData } from '../affiliation/index.js';
7
7
  import { mergeRolesOptions, autoQuery as autoQueryFn, DEFAULT_AUTO_QUERY_PARAM, DEFAULT_TRACKER_OPTIONS } from './options/index.js';
8
- import { mappingAnswerData, mappingReasoningData, writeAnswerStageToMeta, writeEventTargetToInteraction, mergeInteraction } from './processors.js';
8
+ import { mappingAnswerData, mappingReasoningData, writeAnswerStageToMeta, writeEventTargetToInteraction } from './processors.js';
9
9
  import { enableUseLink } from './use-link.js';
10
10
  import { isTracked, markAsTracked } from '../util/trackers.js';
11
11
 
@@ -226,7 +226,7 @@ export default class AnswerBasedWorkflow extends Workflow {
226
226
  }
227
227
  const { param, sourceParam } = this._autoQuery;
228
228
  const question = (value && value.question) || (request && request.payload && request.payload.question);
229
- const questionSource = request && request.payload && request.payload._meta && request.payload._meta.question_source;
229
+ const questionSource = request && request.payload && request.payload.metadata && request.payload.metadata.question_source;
230
230
 
231
231
  if (!question) {
232
232
  return; // at initial phase
@@ -256,10 +256,30 @@ export default class AnswerBasedWorkflow extends Workflow {
256
256
  return payload;
257
257
  }
258
258
 
259
+ _writeRequestInfoToInteraction(payload, args) {
260
+ const { data } = args;
261
+ if (!data) {
262
+ return payload;
263
+ }
264
+ const requestPayload = data.request && data.request.payload;
265
+ if (!requestPayload) {
266
+ return payload;
267
+ }
268
+ const { question, fq } = requestPayload;
269
+ return mergeInteractions(payload, {
270
+ context: {
271
+ custom_context: {
272
+ question,
273
+ fq,
274
+ },
275
+ },
276
+ });
277
+ }
278
+
259
279
  _writeAskPropertiesToInteraction(payload = {}, args) {
260
280
  const question_source = this._getQuestionSourceFromViewState(args);
261
281
  const question_id = this.questionId;
262
- return mergeInteraction(payload, {
282
+ return mergeInteractions(payload, {
263
283
  context: {
264
284
  custom_context: {
265
285
  question_source,
@@ -274,7 +294,7 @@ export default class AnswerBasedWorkflow extends Workflow {
274
294
  return payload;
275
295
  }
276
296
  const { items = [] } = args;
277
- return mergeInteraction(payload, {
297
+ return mergeInteractions(payload, {
278
298
  context: {
279
299
  custom_context: {
280
300
  urls: items.map(item => item.url),
@@ -289,7 +309,7 @@ export default class AnswerBasedWorkflow extends Workflow {
289
309
  _getQuestionSourceFromViewState(args) {
290
310
  const { request } = this._hub.states[fields.view(args.role)] || {};
291
311
  const { payload } = request || {};
292
- return (payload && payload._meta && payload._meta.question_source) || undefined;
312
+ return (payload && payload.metadata && payload.metadata.question_source) || undefined;
293
313
  }
294
314
 
295
315
  // handlers //
@@ -1,9 +1,8 @@
1
- import { defineValues, trimObj, API } from '@miso.ai/commons';
1
+ import { defineValues, trimObj, API, mergeInteractions } from '@miso.ai/commons';
2
2
  import AnswerBasedWorkflow from './answer-based.js';
3
3
  import { fields } from '../actor/index.js';
4
4
  import { ROLE, STATUS, QUESTION_SOURCE } from '../constants.js';
5
5
  import { OptionListLayout, ListLayout, SearchBoxLayout, TypewriterLayout } from '../layout/index.js';
6
- import { mergeInteraction } from './processors.js';
7
6
  import { mergeRolesOptions, DEFAULT_TRACKER_OPTIONS } from './options/index.js';
8
7
  import { mappingSuggestionsData, mappingFollowUpQuestionsData } from './processors.js';
9
8
  import { followUp as followUpTemplate } from '../defaults/ask/templates.js';
@@ -138,8 +137,8 @@ export default class Ask extends AnswerBasedWorkflow {
138
137
  ...options,
139
138
  question: q, // question, not q
140
139
  parent_question_id: parentQuestionId,
141
- _meta: {
142
- ...options._meta,
140
+ metadata: {
141
+ ...options.metadata,
143
142
  question_source: qs || QUESTION_SOURCE.ORGANIC, // might be null, not undefined
144
143
  },
145
144
  });
@@ -191,7 +190,7 @@ export default class Ask extends AnswerBasedWorkflow {
191
190
  question_source = this._getQuestionSourceFromViewState(args);
192
191
  }
193
192
 
194
- return mergeInteraction(payload, {
193
+ return mergeInteractions(payload, {
195
194
  context: {
196
195
  custom_context: {
197
196
  property,
@@ -1,10 +1,18 @@
1
- import { Component, isNullLike } from '@miso.ai/commons';
2
- import { Hub, SessionMaker, DataActor, ViewsActor, InteractionsActor, fields } from '../actor/index.js';
1
+ import { Component, isNullLike, mergeInteractions } from '@miso.ai/commons';
2
+ import { Hub, SessionMaker, DataActor, ViewsActor, InteractionsActor, TrackersActor, fields } from '../actor/index.js';
3
3
  import * as sources from '../source.js';
4
4
  import { STATUS, ROLE } from '../constants.js';
5
5
  import { ContainerLayout, ErrorLayout } from '../layout/index.js';
6
6
  import { WorkflowOptions, mergeApiOptions, makeConfigurable } from './options/index.js';
7
- import { getRevision, writeRequestFromPreviousData, writeDataStatus, writeMisoIdToMeta, buildBaseInteraction, writeAffiliationInfoToInteraction, mergeInteraction } from './processors.js';
7
+ import {
8
+ getRevision,
9
+ writeRequestFromPreviousData,
10
+ writeDataStatus,
11
+ writeMisoIdToMeta,
12
+ buildBaseInteraction,
13
+ writeRequestMetadataToInteraction,
14
+ writeAffiliationInfoToInteraction,
15
+ } from './processors.js';
8
16
 
9
17
  const DEFAULT_API_OPTIONS = Object.freeze({});
10
18
 
@@ -70,6 +78,7 @@ export default class Workflow extends Component {
70
78
  this._sessions = new SessionMaker(hub);
71
79
  this._data = new DataActor(hub, { source: sources.api(client), options });
72
80
  this._views = new ViewsActor(hub, { extensions, layouts, roles, options, workflow: this });
81
+ //this._trackers = new TrackersActor(hub, { options });
73
82
  this._interactions = new InteractionsActor(hub, { client, options });
74
83
  }
75
84
 
@@ -265,7 +274,8 @@ export default class Workflow extends Component {
265
274
  }
266
275
 
267
276
  _onTracker(args) {
268
- const payload = this._buildInteraction(args);
277
+ const data = this._hub.states[fields.data()];
278
+ const payload = this._buildInteraction({ ...args, data });
269
279
  this._sendInteraction(payload);
270
280
  }
271
281
 
@@ -280,7 +290,9 @@ export default class Workflow extends Component {
280
290
  }
281
291
 
282
292
  _defaultProcessInteraction(payload, args) {
293
+ payload = writeRequestMetadataToInteraction(payload, args);
283
294
  payload = this._writeApiInfoToInteraction(payload, args);
295
+ payload = this._writeRequestInfoToInteraction(payload, args);
284
296
  payload = this._writeMisoIdToInteraction(payload, args);
285
297
  payload = writeAffiliationInfoToInteraction(payload, args);
286
298
  return payload;
@@ -288,7 +300,7 @@ export default class Workflow extends Component {
288
300
 
289
301
  _writeApiInfoToInteraction(payload) {
290
302
  const { group, name } = this._options.resolved.api;
291
- return mergeInteraction(payload, {
303
+ return mergeInteractions(payload, {
292
304
  context: {
293
305
  custom_context: {
294
306
  api_group: group,
@@ -298,11 +310,15 @@ export default class Workflow extends Component {
298
310
  });
299
311
  }
300
312
 
313
+ _writeRequestInfoToInteraction(payload, args) {
314
+ return payload;
315
+ }
316
+
301
317
  _writeMisoIdToInteraction(payload, args) {
302
318
  // TODO: ad-hoc, try to pass info from tracker
303
319
  const state = this._hub.states[fields.view(args.role)] || {};
304
320
  const miso_id = (state.meta && state.meta.miso_id) || undefined;
305
- return miso_id ? mergeInteraction(payload, { miso_id }) : payload;
321
+ return miso_id ? mergeInteractions(payload, { miso_id }) : payload;
306
322
  }
307
323
 
308
324
  _sendInteraction(payload) {
@@ -1,3 +1,4 @@
1
+ import { mergeApiPayloads } from '@miso.ai/commons';
1
2
  import AnswerBasedWorkflow from './answer-based.js';
2
3
  import { ROLE, STATUS, QUESTION_SOURCE } from '../constants.js';
3
4
  import { mergeRolesOptions } from './options/index.js';
@@ -50,13 +51,11 @@ export default class HybridSearchAnswer extends AnswerBasedWorkflow {
50
51
  }
51
52
 
52
53
  _writeQuestionSourceToPayload({ qs, ...payload } = {}) {
53
- return {
54
- ...payload,
55
- _meta: {
56
- ...payload._meta,
54
+ return mergeApiPayloads(payload, {
55
+ metadata: {
57
56
  question_source: qs || QUESTION_SOURCE.ORGANIC, // might be null, not undefined
58
57
  },
59
- };
58
+ });
60
59
  }
61
60
 
62
61
  // data //
@@ -1,8 +1,8 @@
1
- import { trimObj } from '@miso.ai/commons';
1
+ import { mergeApiPayloads } from '@miso.ai/commons';
2
2
  import SearchBasedWorkflow from './search-based.js';
3
3
  import { fields } from '../actor/index.js';
4
4
  import { ROLE } from '../constants.js';
5
- import { writeMisoIdToSession } from './processors.js';
5
+ import { writeMisoIdToSession, disableAnswerForNonQueryRequest } from './processors.js';
6
6
 
7
7
  // we want to override members, not adding to it
8
8
  const ROLES_OPTIONS = {
@@ -43,13 +43,13 @@ export default class HybridSearchResults extends SearchBasedWorkflow {
43
43
  return this._superworkflow._answer._hub.states[fields.query()];
44
44
  }
45
45
 
46
- _buildPayload(payload) {
46
+ _buildPayload(payload, type) {
47
+ payload = super._buildPayload(payload, type);
47
48
  // borrow the work from the sibling
48
49
  payload = this._superworkflow._answer._writeQuestionSourceToPayload(payload);
49
- payload = this._writeFiltersToPayload(payload);
50
- payload = this._writePageInfoToPayload(payload);
51
50
  payload = this._writeQuestionIdToPayload(payload);
52
- return { ...payload, answer: false };
51
+ payload = disableAnswerForNonQueryRequest(payload, type);
52
+ return payload;
53
53
  }
54
54
 
55
55
  _buildOrderBy(sort) {
@@ -61,13 +61,11 @@ export default class HybridSearchResults extends SearchBasedWorkflow {
61
61
  }
62
62
 
63
63
  _writeQuestionIdToPayload(payload) {
64
- return {
65
- ...payload,
66
- _meta: trimObj({
67
- ...payload._meta,
64
+ return mergeApiPayloads(payload, {
65
+ metadata: {
68
66
  question_id: this._superworkflow._answer.questionId,
69
- }),
70
- };
67
+ },
68
+ });
71
69
  }
72
70
 
73
71
  // data //
@@ -1,4 +1,4 @@
1
- import { trimObj } from '@miso.ai/commons';
1
+ import { trimObj, mergeApiPayloads } from '@miso.ai/commons';
2
2
  import { mergeOptions } from './utils.js';
3
3
 
4
4
  export function normalizeApiOptions([name, payload] = []) {
@@ -29,18 +29,3 @@ export function mergeApiOptions(...optionsList) {
29
29
  payload: mergeApiPayloads(merged.payload, options.payload),
30
30
  }));
31
31
  }
32
-
33
- function mergeApiPayloads(base, overrides) {
34
- return {
35
- ...base,
36
- ...overrides,
37
- ...mergeObjectValueIfPresent('_meta', base, overrides),
38
- };
39
- }
40
-
41
- function mergeObjectValueIfPresent(key, base, overrides) {
42
- const baseValue = base && base[key];
43
- const overridesValue = overrides && overrides[key];
44
- const value = baseValue ? (overridesValue ? { ...baseValue, ...overridesValue } : baseValue) : overridesValue;
45
- return value !== undefined ? { [key]: value } : {};
46
- }
@@ -1,5 +1,5 @@
1
- import { trimObj } from '@miso.ai/commons';
2
- import { STATUS, ROLE, EVENT_TYPE, isPerformanceEventType, isProductRole } from '../constants.js';
1
+ import { trimObj, mergeInteractions } from '@miso.ai/commons';
2
+ import { STATUS, ROLE, EVENT_TYPE, REQUEST_TYPE, isPerformanceEventType, isProductRole } from '../constants.js';
3
3
  import { fields } from '../actor/index.js';
4
4
 
5
5
  // role mappings //
@@ -61,6 +61,14 @@ export function mappingFollowUpQuestionsData(data) {
61
61
  return (data.value.followup_questions || []).map(text => ({ text }));
62
62
  }
63
63
 
64
+ // payload //
65
+ export function disableAnswerForNonQueryRequest(payload, type) {
66
+ if (type === REQUEST_TYPE.QUERY) {
67
+ return payload;
68
+ }
69
+ return { ...payload, answer: false };
70
+ }
71
+
64
72
  // data //
65
73
  export function getRevision(data) {
66
74
  return data && data.value && data.value.revision;
@@ -308,6 +316,22 @@ function areProducts(role, items = []) {
308
316
  return isProductRole(role) || (items.length > 0 && typeof items[0] === 'object' && items[0].product_id);
309
317
  }
310
318
 
319
+ export function writeRequestMetadataToInteraction(payload, args) {
320
+ const { data } = args;
321
+ if (!data) {
322
+ return payload;
323
+ }
324
+ const metadata = data.request && data.request.payload && data.request.payload.metadata;
325
+ if (!metadata) {
326
+ return payload;
327
+ }
328
+ return mergeInteractions(payload, {
329
+ context: {
330
+ custom_context: metadata,
331
+ },
332
+ });
333
+ }
334
+
311
335
  export function writeAffiliationInfoToInteraction(payload, args) {
312
336
  if (args.role !== ROLE.AFFILIATION) {
313
337
  return payload;
@@ -315,7 +339,7 @@ export function writeAffiliationInfoToInteraction(payload, args) {
315
339
  const { items } = args;
316
340
  const channel = (items[0] && items[0].channel) || undefined;
317
341
  const positions = items.map(v => v.position);
318
- return mergeInteraction(payload, {
342
+ return mergeInteractions(payload, {
319
343
  context: {
320
344
  custom_context: {
321
345
  channel,
@@ -329,7 +353,7 @@ export function writeEventTargetToInteraction(payload, { event_target } = {}) {
329
353
  if (!event_target) {
330
354
  return payload;
331
355
  }
332
- return mergeInteraction(payload, {
356
+ return mergeInteractions(payload, {
333
357
  context: {
334
358
  custom_context: {
335
359
  event_target,
@@ -338,21 +362,6 @@ export function writeEventTargetToInteraction(payload, { event_target } = {}) {
338
362
  });
339
363
  }
340
364
 
341
- export function mergeInteraction(base = {}, patch = {}) {
342
- return trimObj({
343
- ...base,
344
- ...patch,
345
- context: trimObj({
346
- ...base.context,
347
- ...patch.context,
348
- custom_context: trimObj({
349
- ...(base.context && base.context.custom_context),
350
- ...(patch.context && patch.context.custom_context),
351
- }),
352
- }),
353
- });
354
- }
355
-
356
365
  export function writeUnanswerableToMeta(data) {
357
366
  const { value } = data;
358
367
  if (!value) {
@@ -1,9 +1,9 @@
1
- import { API, asArray, trimObj } from '@miso.ai/commons';
1
+ import { API, asArray, trimObj, mergeInteractions } from '@miso.ai/commons';
2
2
  import Workflow from './base.js';
3
3
  import { fields } from '../actor/index.js';
4
- import { STATUS, ROLE, WORKFLOW_CONFIGURABLE } from '../constants.js';
4
+ import { STATUS, ROLE, WORKFLOW_CONFIGURABLE, REQUEST_TYPE } from '../constants.js';
5
5
  import { SearchBoxLayout, ListLayout, TextLayout, FacetsLayout, SelectLayout, MoreButtonLayout } from '../layout/index.js';
6
- import { mappingSortData, writeKeywordsToData, retainFacetCountsInData, writeExhaustionToData, writeMisoIdAsRootMisoId, concatItemsFromMoreResponse, mergeInteraction } from './processors.js';
6
+ import { mappingSortData, writeKeywordsToData, retainFacetCountsInData, writeExhaustionToData, writeMisoIdAsRootMisoId, concatItemsFromMoreResponse } from './processors.js';
7
7
  import { mergeRolesOptions, autoQuery as autoQueryFn, makeConfigurable, DEFAULT_TRACKER_OPTIONS } from './options/index.js';
8
8
 
9
9
  const DEFAULT_ROWS = 10;
@@ -99,9 +99,6 @@ export default class SearchBasedWorkflow extends Workflow {
99
99
  }
100
100
 
101
101
  _query(args) {
102
- // keep track of the query args for refine and more calls
103
- this._queryArgs = args;
104
-
105
102
  // reset filters view
106
103
  this._views.filters.reset({ silent: true });
107
104
 
@@ -109,9 +106,10 @@ export default class SearchBasedWorkflow extends Workflow {
109
106
  this.restart();
110
107
 
111
108
  // payload
112
- const payload = this._buildPayload(args);
109
+ const type = REQUEST_TYPE.QUERY;
110
+ const payload = this._buildPayload(args, type);
113
111
 
114
- this._request({ payload });
112
+ this._request({ payload, type });
115
113
  }
116
114
 
117
115
  _refine() {
@@ -123,10 +121,11 @@ export default class SearchBasedWorkflow extends Workflow {
123
121
  this.restart();
124
122
 
125
123
  // payload
124
+ const type = REQUEST_TYPE.REFINE;
126
125
  const query = this._getQuery();
127
- const payload = this._buildPayload(query);
126
+ const payload = this._buildPayload(query, type);
128
127
 
129
- this._request({ payload });
128
+ this._request({ payload, type });
130
129
  }
131
130
 
132
131
  // TODO: expose API
@@ -144,25 +143,27 @@ export default class SearchBasedWorkflow extends Workflow {
144
143
  this._page++;
145
144
 
146
145
  // payload
146
+ const type = REQUEST_TYPE.MORE;
147
147
  const query = this._getQuery();
148
- let payload = this._buildPayload(query);
149
- payload = this._processPayloadForMoreRequest(payload);
148
+ const payload = this._buildPayload(query, type);
150
149
 
151
- this._request({ payload });
150
+ this._request({ payload, type });
152
151
  }
153
152
 
154
153
  _getQuery() {
155
- // TODO: just get from the hub
156
- return this._queryArgs;
154
+ return this._hub.states[fields.query()];
157
155
  }
158
156
 
159
157
  _getPageSize() {
160
158
  return this._options.resolved.api.payload.rows;
161
159
  }
162
160
 
163
- _buildPayload(payload) {
161
+ _buildPayload(payload, type) {
164
162
  payload = this._writeFiltersToPayload(payload);
165
163
  payload = this._writePageInfoToPayload(payload);
164
+ if (type === REQUEST_TYPE.MORE) {
165
+ payload = this._processPayloadForMoreRequest(payload);
166
+ }
166
167
  return payload;
167
168
  }
168
169
 
@@ -203,8 +204,8 @@ export default class SearchBasedWorkflow extends Workflow {
203
204
  _writePageInfoToPayload(payload) {
204
205
  return {
205
206
  ...payload,
206
- _meta: {
207
- ...payload._meta,
207
+ metadata: {
208
+ ...payload.metadata,
208
209
  page: this._page,
209
210
  },
210
211
  };
@@ -243,8 +244,8 @@ export default class SearchBasedWorkflow extends Workflow {
243
244
  if (!request) {
244
245
  return data; // the initial state
245
246
  }
246
- const { _meta } = request.payload;
247
- if (!_meta || !_meta.page) {
247
+ const { metadata } = request.payload;
248
+ if (!metadata || !metadata.page) {
248
249
  return writeMisoIdAsRootMisoId(data); // not from "more" request
249
250
  }
250
251
  // concat records if it's from "more" request
@@ -268,13 +269,33 @@ export default class SearchBasedWorkflow extends Workflow {
268
269
  return payload;
269
270
  }
270
271
 
272
+ _writeRequestInfoToInteraction(payload, args) {
273
+ const { data } = args;
274
+ if (!data) {
275
+ return payload;
276
+ }
277
+ const requestPayload = data.request && data.request.payload;
278
+ if (!requestPayload) {
279
+ return payload;
280
+ }
281
+ const { q, fq } = requestPayload;
282
+ return mergeInteractions(payload, {
283
+ context: {
284
+ custom_context: {
285
+ q,
286
+ fq,
287
+ },
288
+ },
289
+ });
290
+ }
291
+
271
292
  _writeRootMisoIdToInteraction(payload) {
272
293
  const data = this._hub.states[fields.data()];
273
294
  const { root_miso_id } = (data && data.value) || {};
274
295
  if (!root_miso_id) {
275
296
  return payload;
276
297
  }
277
- return mergeInteraction(payload, {
298
+ return mergeInteractions(payload, {
278
299
  context: {
279
300
  custom_context: {
280
301
  root_miso_id,
@@ -1,6 +1,5 @@
1
- import { defineValues } from '@miso.ai/commons';
1
+ import { defineValues, mergeInteractions } from '@miso.ai/commons';
2
2
  import Workflow from './base.js';
3
- import { mergeInteraction } from './processors.js';
4
3
 
5
4
  export default class UnitWorkflow extends Workflow {
6
5
 
@@ -25,7 +24,7 @@ export default class UnitWorkflow extends Workflow {
25
24
  _writeUnitIdToInteraction(payload) {
26
25
  const unit_id = this.id;
27
26
  const unit_instance_uuid = this.uuid;
28
- return mergeInteraction(payload, {
27
+ return mergeInteractions(payload, {
29
28
  context: {
30
29
  custom_context: {
31
30
  unit_id,