UNPKG

eve

Version:

Filesystem-first framework for durable backend AI agents that run anywhere.

1 lines 1.82 kB
import{EMPTY_LINE}from"./line-editor.js";import{initialSelectState,reduceSelect,selectValueAtCursor}from"#setup/cli/select-state.js";function keyPhase(t,n){return selectValueAtCursor(n,t.cursor)===`own-key`?{kind:`editing`,editor:EMPTY_LINE}:{kind:`inactive`}}function initialProviderPickerState(e,n){let r=initialSelectState({options:e,defaultValue:n});return{select:r,phase:keyPhase(r,e)}}function ignore(e){return{kind:`ignore`,state:e}}function transitionProviderPicker(t,i,a){if(i.type===`cancel`)return t.phase.kind!==`inactive`&&t.phase.editor.text.length>0?{kind:`clear`,state:{select:t.select,phase:{kind:`editing`,editor:EMPTY_LINE}}}:{kind:`cancel`};if(t.phase.kind===`validating`)return i.type===`validated`?i.validation.kind===`invalid`?{kind:`render`,state:{select:t.select,phase:{kind:`invalid`,editor:t.phase.editor,message:i.validation.message}}}:{kind:`settle`,result:{kind:`inline-key`,key:t.phase.key,validation:i.validation}}:ignore(t);switch(i.type){case`move`:{let e=reduceSelect(t.select,{type:i.direction},{options:a});return e===t.select?ignore(t):{kind:`render`,state:{select:e,phase:keyPhase(e,a)}}}case`edit`:return t.phase.kind===`inactive`?ignore(t):{kind:`render`,state:{select:t.select,phase:{kind:`editing`,editor:i.editor}}};case`submit`:{let e=selectValueAtCursor(a,t.select.cursor);if(e===`project`||e===`external`)return{kind:`settle`,result:{kind:e}};if(e!==`own-key`||t.phase.kind===`inactive`)return ignore(t);let n=t.phase.editor.text.trim();return n.length===0?{kind:`render`,state:{select:t.select,phase:{kind:`invalid`,editor:t.phase.editor,message:`API key cannot be empty.`}}}:{kind:`validate`,state:{select:t.select,phase:{kind:`validating`,editor:t.phase.editor,key:n}},key:n}}case`validated`:return ignore(t)}}export{initialProviderPickerState,transitionProviderPicker};