eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.23 kB
JavaScript
import{optionById,requiredOptionId}from"./question-options.js";function selectedValue(e,t){let n=optionById(e,t);if(n!==void 0)return n.value;let r=e.options.map(e=>e.id).join(`, `);throw Error(`Invalid answer for "${e.key}": ${String(t)}. Expected one of: ${r}.`)}async function renderEditableQuestion(e,t){let n=requiredOptionId(t,t.editable.value,`configured editable value`),r=t.options.map(e=>({value:e.id,label:e.label,hint:e.hint,featured:e.featured})),i=t.recommended===void 0?void 0:requiredOptionId(t,t.recommended,`recommendation`);if(e.selectEditable!==void 0){let a=await e.selectEditable({message:t.message,options:r,initialValue:i,editable:{value:n,defaultValue:t.editable.recommended,formatHint:e=>`${t.editable.label}: ${e}`,validate:e=>t.editable.validate?.(e)??void 0}}),o=selectedValue(t,a.value);return o===t.editable.value?{value:o,text:a.kind===`edited`?a.text.trim():t.editable.recommended.trim()}:{value:o}}let a=selectedValue(t,await e.select({message:t.message,options:r,initialValue:i}));return a===t.editable.value?{value:a,text:(await e.text({message:t.editable.label,defaultValue:t.editable.recommended,validate:e=>t.editable.validate?.(e)??void 0})).trim()}:{value:a}}export{renderEditableQuestion};