Accept stringified Ranker bridge envelopes
This commit is contained in:
@@ -520,8 +520,6 @@ function featureSetFrom(input = {}) {
|
||||
|| body.candidate_feature_set
|
||||
|| body.rankReadyFeatureSet
|
||||
|| body.rank_ready_feature_set
|
||||
|| body.buildOrderPreview
|
||||
|| body.build_order_preview
|
||||
|| envelope.featureSet
|
||||
|| envelope.feature_set
|
||||
|| envelope.candidateSet
|
||||
@@ -530,8 +528,6 @@ function featureSetFrom(input = {}) {
|
||||
|| envelope.candidate_feature_set
|
||||
|| envelope.rankReadyFeatureSet
|
||||
|| envelope.rank_ready_feature_set
|
||||
|| envelope.buildOrderPreview
|
||||
|| envelope.build_order_preview
|
||||
);
|
||||
}
|
||||
|
||||
@@ -699,14 +695,59 @@ function parseEmbeddedRankPayload(value = '') {
|
||||
|
||||
function expandEmbeddedRankPayload(body = {}) {
|
||||
const original = objectFrom(body);
|
||||
for (const key of ['payload', 'rankPayload', 'scattermindPayload', 'conceptMapJson', 'concept_map_json', 'fullReadingJson', 'full_reading_json', 'fullReading', 'full_reading', 'idea', 'ideaText', 'optionsText']) {
|
||||
const stringOnlyEmbeddedKeys = new Set([
|
||||
'rankerInput',
|
||||
'ranker_input',
|
||||
'rankerHandoff',
|
||||
'ranker_handoff',
|
||||
'rankerBridge',
|
||||
'ranker_bridge',
|
||||
'rankReady',
|
||||
'rank_ready',
|
||||
'bridge',
|
||||
'bridgePayload',
|
||||
'bridge_payload',
|
||||
'continuation',
|
||||
'continuationPlan',
|
||||
'continuation_plan',
|
||||
]);
|
||||
for (const key of [
|
||||
'payload',
|
||||
'rankPayload',
|
||||
'scattermindPayload',
|
||||
'rankerInput',
|
||||
'ranker_input',
|
||||
'rankerHandoff',
|
||||
'ranker_handoff',
|
||||
'rankerBridge',
|
||||
'ranker_bridge',
|
||||
'rankReady',
|
||||
'rank_ready',
|
||||
'bridge',
|
||||
'bridgePayload',
|
||||
'bridge_payload',
|
||||
'continuation',
|
||||
'continuationPlan',
|
||||
'continuation_plan',
|
||||
'conceptMapJson',
|
||||
'concept_map_json',
|
||||
'fullReadingJson',
|
||||
'full_reading_json',
|
||||
'fullReading',
|
||||
'full_reading',
|
||||
'idea',
|
||||
'ideaText',
|
||||
'optionsText',
|
||||
]) {
|
||||
const embedded = typeof original[key] === 'string'
|
||||
? parseEmbeddedRankPayload(original[key])
|
||||
: looksLikeRankPayload(original[key])
|
||||
: !stringOnlyEmbeddedKeys.has(key) && looksLikeRankPayload(original[key])
|
||||
? original[key]
|
||||
: null;
|
||||
if (!embedded) continue;
|
||||
const expanded = { ...original, ...embedded };
|
||||
const expanded = stringOnlyEmbeddedKeys.has(key)
|
||||
? { ...original, [key]: embedded }
|
||||
: { ...original, ...embedded };
|
||||
if (key === 'idea' && !embedded.idea && !embedded.ideaText) expanded.idea = '';
|
||||
if (key === 'optionsText' && !embedded.optionsText) expanded.optionsText = '';
|
||||
if (original.mode && !embedded.mode) expanded.mode = original.mode;
|
||||
|
||||
Reference in New Issue
Block a user