One <Branch>, four views, one fallback. The criteria on each <Option> are what the model actually reasons about — a bare key like “chart” would give it nothing. Below minConfidence the fallback renders instead of a guess.
instructions · backticked paths scope what it readspick prop“How has revenue moved across the last seven quarters?”
// app/providers.tsx — the state every question on this page receives
<JevProvider
resolve={askJev}
scope={{ app: { product: "Northwind Analytics", user: "ana", role: "analyst", familiarity: "returning" } }}
initialAmbient={{ recent_actions: [], time_spent: "short" }}
>'use client';import { Branch, Option, type DecisionCost } from 'jev-ui';import { useState } from 'react';// … demo scaffolding — answer panel, mock series, and the four viewsexport function ChartDemo() { const [question, setQuestion] = useState(QUESTIONS[0]!); const [cost, setCost] = useState<DecisionCost | undefined>(); const { pick, ask } = usePick(); return ( <> <section className="card" data-testid="demo-live" style={{ display: 'grid', gap: 14 }}> // … the controls that drive the demo <Branch id="chart_view" ask="Which view best answers the question in `data.question` about the revenue figures in `data.series`?" ← set by the controls above data={{ question: question.text, series: SERIES }} minConfidence={0.5} pick={undefined} // every channel — the default ← set by the controls above onResolved={setCost} pending={<div data-testid="view-pending">resolving…</div>} > <Option k="line" when="The question is about a trend, a direction, or how something changed across many time periods." > <LineView /> </Option> <Option k="bars" when="The question compares a few named categories against one another at a single point in time." > <BarsView /> </Option> <Option k="table" when="The question needs exact per-row numbers, or several columns read together."> <TableView /> </Option> <Option k="stat" when="The question asks for one headline number and nothing else."> <StatView /> </Option> <Option fallback> <TableView /> </Option> </Branch> </section> // … omitted </> );}