@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.
- package/dist/cjs/actor/index.js +7 -0
- package/dist/cjs/actor/tracker.js +1 -1
- package/dist/cjs/actor/trackers.js +37 -0
- package/dist/cjs/constants.js +6 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/workflow/answer-based.js +28 -4
- package/dist/cjs/workflow/ask.js +3 -3
- package/dist/cjs/workflow/base.js +12 -3
- package/dist/cjs/workflow/hybrid-search-answer.js +4 -3
- package/dist/cjs/workflow/hybrid-search-results.js +7 -9
- package/dist/cjs/workflow/options/api.js +1 -12
- package/dist/cjs/workflow/processors.js +31 -10
- package/dist/cjs/workflow/search-based.js +45 -17
- package/dist/cjs/workflow/unit.js +1 -2
- package/package.json +2 -2
- package/src/actor/index.js +1 -0
- package/src/actor/tracker.js +1 -1
- package/src/actor/trackers.js +30 -0
- package/src/constants.js +6 -0
- package/src/version.js +1 -1
- package/src/workflow/answer-based.js +26 -6
- package/src/workflow/ask.js +4 -5
- package/src/workflow/base.js +22 -6
- package/src/workflow/hybrid-search-answer.js +4 -5
- package/src/workflow/hybrid-search-results.js +10 -12
- package/src/workflow/options/api.js +1 -16
- package/src/workflow/processors.js +28 -19
- package/src/workflow/search-based.js +42 -21
- package/src/workflow/unit.js +2 -3
package/dist/cjs/actor/index.js
CHANGED
|
@@ -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); }
|
|
@@ -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;
|
package/dist/cjs/constants.js
CHANGED
|
@@ -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
|
});
|
package/dist/cjs/version.js
CHANGED
|
@@ -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.
|
|
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,
|
|
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,
|
|
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.
|
|
327
|
+
return payload && payload.metadata && payload.metadata.question_source || undefined;
|
|
304
328
|
}
|
|
305
329
|
|
|
306
330
|
// handlers //
|
package/dist/cjs/workflow/ask.js
CHANGED
|
@@ -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
|
-
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
63
|
-
|
|
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
|
-
|
|
53
|
-
|
|
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
|
|
65
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
243
|
+
metadata
|
|
240
244
|
} = request.payload;
|
|
241
|
-
if (!
|
|
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,
|
|
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,
|
|
34
|
+
return (0, _commons.mergeInteractions)(payload, {
|
|
36
35
|
context: {
|
|
37
36
|
custom_context: {
|
|
38
37
|
unit_id,
|
package/package.json
CHANGED
package/src/actor/index.js
CHANGED
|
@@ -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';
|
package/src/actor/tracker.js
CHANGED
|
@@ -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
package/src/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export default '1.12.3
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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.
|
|
312
|
+
return (payload && payload.metadata && payload.metadata.question_source) || undefined;
|
|
293
313
|
}
|
|
294
314
|
|
|
295
315
|
// handlers //
|
package/src/workflow/ask.js
CHANGED
|
@@ -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
|
-
|
|
142
|
-
...options.
|
|
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
|
|
193
|
+
return mergeInteractions(payload, {
|
|
195
194
|
context: {
|
|
196
195
|
custom_context: {
|
|
197
196
|
property,
|
package/src/workflow/base.js
CHANGED
|
@@ -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 {
|
|
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
|
|
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
|
|
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 ?
|
|
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
|
-
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
207
|
-
...payload.
|
|
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 {
|
|
247
|
-
if (!
|
|
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
|
|
298
|
+
return mergeInteractions(payload, {
|
|
278
299
|
context: {
|
|
279
300
|
custom_context: {
|
|
280
301
|
root_miso_id,
|
package/src/workflow/unit.js
CHANGED
|
@@ -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
|
|
27
|
+
return mergeInteractions(payload, {
|
|
29
28
|
context: {
|
|
30
29
|
custom_context: {
|
|
31
30
|
unit_id,
|