const STEP_META={phase:{label:"Phase",icon:"flag",tone:"tn-neutral"},plan:{label:"Plan",icon:"route",tone:"tn-soft"},llm_call:{label:"LLM call",icon:"auto_awesome",tone:"tn-llm"},tool_call:{label:"Tool",icon:"build",tone:"tn-tool"},decision_branch:{label:"Decision",icon:"alt_route",tone:"tn-decision"},self_critique:{label:"Self-critique",icon:"autorenew",tone:"tn-critique"}};function readSelectRunsLive(){const e=window.KIND_REGISTRY&&window.KIND_REGISTRY.selectRuns;if(!e)return{items:[],heroKpis:null,source:null};const a=e.liveData;return a&&Array.isArray(a.items)?{items:a.items,heroKpis:a.heroKpis||null,source:a.source||null}:{items:e.mockItems||e.rawRuns||[],heroKpis:e.heroKpis||null,source:null}}function readSelectAgentsLive(){const e=window.KIND_REGISTRY&&window.KIND_REGISTRY.selectAgents;if(!e)return{items:[],heroKpis:null,source:null};const a=e.liveData;return a&&Array.isArray(a.items)?{items:a.items,heroKpis:a.heroKpis||null,source:a.source||null}:{items:e.mockItems||[],heroKpis:e.heroKpis||null,source:null}}function mergeLiveRun(e){if(!e)return e;const s=readSelectRunsLive().items.find(d=>d&&(d.id===e.id||d.run_id===e.run_id));return s?{...e,...s}:e}window.readSelectRunsLive=readSelectRunsLive,window.readSelectAgentsLive=readSelectAgentsLive;function DecisionTimelineView({kind:e,items:a,onSelect:s,selectedId:d,density:r}){const c=e.trace||[],t=window.__decisionsTraceSchema||"v1",i=window.__decisionsRunStatus||"completed",l=e.detailTabs||["Decisions","Output","Logs","Costs"],u=mergeLiveRun(e.run||{}),p=React.useMemo(()=>t==="v0"?c.map(n=>({...n,step_type:"phase",alternates_considered:void 0,critique:void 0,preview_in:void 0,preview_out:void 0})):c,[c,t]),m=React.useMemo(()=>i==="running"?p.slice(0,6).map((n,o,S)=>o===S.length-1?{...n,_running:!0}:n):i==="error"?p.slice(0,5).concat([{step_id:"s-err",step_type:"tool_call",kind:"tool_call",label:"Tool \xB7 send_email \u2014 TIMEOUT",ts:99,durationMs:3e4,cost_eur:"0,000",status:"error",summary_de:"send_email lieferte 504 nach 30 s. Run abgebrochen."}]):p,[p,i]),[v,h]=React.useState(0),[f,_]=React.useState({});React.useEffect(()=>{const n={};m.forEach(o=>{o.step_type==="decision_branch"&&(n[o.step_id]=!0),o.step_type==="self_critique"&&(n[o.step_id]=!!window.__decisionsCritiqueExpanded)}),_(n)},[m,window.__decisionsCritiqueExpanded]);const[,w]=React.useState(0);React.useEffect(()=>{const n=()=>w(o=>o+1);return window.addEventListener("select-runs-live-hydrated",n),()=>window.removeEventListener("select-runs-live-hydrated",n)},[]);const[,b]=React.useState(0);React.useEffect(()=>{const n=()=>b(o=>o+1);return window.addEventListener("select-agents-live-hydrated",n),()=>window.removeEventListener("select-agents-live-hydrated",n)},[]);const g=Math.max(1,...m.map(n=>n.durationMs||0));function y(n){_(o=>({...o,[n]:!o[n]}))}const N=i==="running"?"rb-running":i==="error"?"rb-error":"rb-ok",R=i==="running"?`running \xB7 ${m.length} steps`:i==="error"?"Failed \xB7 tool timeout after 30 s":`succeeded \xB7 ${u.total_duration_label||"12.4 s"}`;return React.createElement("div",{className:"view view-decisionTimeline"},React.createElement("div",{className:`dt-runbanner ${N}`},React.createElement("span",{className:`dt-runbanner-dot ${N}`}),React.createElement("span",{className:"dt-runbanner-label mono"},R),React.createElement("span",{className:"dt-runbanner-schema mono"},"aaas-trace-",t),React.createElement(ScopeBadge,{item:u,kind:e})),React.createElement("div",{className:"dt-tabs"},l.map((n,o)=>React.createElement("button",{key:n,className:`dt-tab ${o===v?"on":""}`,onClick:()=>h(o)},n==="Decisions"&&React.createElement(MIcon,{name:"alt_route",size:14}),n==="Output"&&React.createElement(MIcon,{name:"output",size:14}),n==="Logs"&&React.createElement(MIcon,{name:"receipt_long",size:14}),n==="Costs"&&React.createElement(MIcon,{name:"payments",size:14}),React.createElement("span",null,n),n==="Decisions"&&u.decision_count&&t==="v1"?React.createElement("span",{className:"dt-tab-badge mono"},u.decision_count," \u26A1"):null))),v===0&&React.createElement("div",{className:"dt-timeline"},m.map((n,o)=>React.createElement(StepRow,{key:n.step_id,step:n,index:o,isLast:o===m.length-1,maxDur:g,isExpanded:!!f[n.step_id],onToggle:()=>y(n.step_id)}))),v===1&&React.createElement(DtOutput,{run:u,runStatus:i}),v===2&&React.createElement(DtLogs,{trace:m}),v===3&&React.createElement(DtCosts,{trace:m,run:u}))}function StepRow({step:e,index:a,isLast:s,maxDur:d,isExpanded:r,onToggle:c}){const t=STEP_META[e.step_type]||STEP_META.phase,i=e.step_type==="decision_branch",l=e.step_type==="self_critique",u=e.step_type==="llm_call",p=Math.max(4,Math.round((e.durationMs||0)/d*100));return React.createElement("div",{className:`dt-step ${t.tone} ${i||l?"dt-step-expandable":""}`},React.createElement("div",{className:"dt-rail"},React.createElement("span",{className:`dt-dot ${t.tone}`},React.createElement(MIcon,{name:t.icon,size:12})),!s&&React.createElement("span",{className:"dt-line"})),React.createElement("div",{className:"dt-body"},React.createElement("button",{className:"dt-head",onClick:i||l?c:void 0},React.createElement("span",{className:"dt-head-l"},React.createElement("span",{className:"dt-step-type mono"},t.label),React.createElement("span",{className:"dt-step-label"},e.label),i&&e.confidence!=null&&React.createElement("span",{className:"dt-conf mono",title:"Confidence"},Math.round(e.confidence*100)," %"),l&&e.critique&&React.createElement("span",{className:"dt-conf mono"},"R",e.critique.round)),React.createElement("span",{className:"dt-head-r mono"},React.createElement("span",{className:"dt-dur"},formatDur(e.durationMs)),e.tokens&&React.createElement("span",{className:"dt-tok"},"\xB7 ",e.tokens.in,"/",e.tokens.out," tok"),e.cost_eur&&React.createElement("span",{className:"dt-cost"},"\xB7 \u20AC ",e.cost_eur),(i||l)&&React.createElement(MIcon,{name:r?"expand_less":"expand_more",size:16}))),React.createElement("div",{className:"dt-latency"},React.createElement("span",{className:"dt-latency-fill",style:{width:p+"%"}})),e.summary_de&&!i&&!l&&React.createElement("div",{className:"dt-summary"},e.summary_de),u&&(e.preview_in||e.preview_out)&&React.createElement("div",{className:"dt-llm-preview mono"},e.preview_in&&React.createElement("div",{className:"dt-llm-line"},React.createElement("span",{className:"dt-llm-tag"},"IN"),React.createElement("span",null,e.preview_in)),e.preview_out&&React.createElement("div",{className:"dt-llm-line"},React.createElement("span",{className:"dt-llm-tag dt-llm-out"},"OUT"),React.createElement("span",null,e.preview_out))),i&&r&&e.alternates_considered&&React.createElement(Alternates,{chosen:e.chosen_option,alternates:e.alternates_considered}),l&&r&&e.critique&&React.createElement(Critique,{critique:e.critique})))}function Alternates({chosen:e,alternates:a}){return React.createElement("div",{className:"dt-alts"},React.createElement("div",{className:"dt-alts-head mono"},"Alternatives considered \xB7 ",a.length),a.map((s,d)=>{const r=s.label===e;return React.createElement("div",{key:d,className:`dt-alt ${r?"dt-alt-on":"dt-alt-off"}`},React.createElement("div",{className:"dt-alt-head"},React.createElement("span",{className:"dt-alt-mark"},React.createElement(MIcon,{name:r?"check":"close",size:14})),React.createElement("span",{className:"dt-alt-label mono"},s.label),s.score!=null&&React.createElement("span",{className:"dt-alt-score mono"},"Score ",s.score.toFixed(2).replace(".",",")),r&&React.createElement("span",{className:"dt-alt-chosen mono"},"CHOSEN")),React.createElement("div",{className:"dt-alt-body"},React.createElement("div",{className:"dt-alt-reasoning"},s.reasoning_de),s.why_rejected_de&&React.createElement("div",{className:"dt-alt-rejected"},React.createElement("span",{className:"mono ink-faint"},"Rejected:")," ",s.why_rejected_de)))}),React.createElement("button",{className:"dt-replay-btn",disabled:!0,title:"Phase 2 \u2014 coming Q3 2026"},React.createElement(MIcon,{name:"replay",size:14}),React.createElement("span",null,"Replay from here"),React.createElement("span",{className:"dt-soon mono"},"soon")))}function Critique({critique:e}){return React.createElement("div",{className:"dt-crit"},React.createElement("div",{className:"dt-crit-row"},React.createElement("span",{className:"dt-crit-tag mono"},"BEFORE"),React.createElement("span",{className:"dt-crit-text"},e.before)),React.createElement("div",{className:"dt-crit-row dt-crit-mid"},React.createElement("span",{className:"dt-crit-tag mono"},"CRITIQUE"),React.createElement("span",{className:"dt-crit-text"},e.critique_de)),React.createElement("div",{className:"dt-crit-row dt-crit-accepted"},React.createElement("span",{className:"dt-crit-tag mono"},"AFTER ",e.accepted?"\u2713":"\u2717"),React.createElement("span",{className:"dt-crit-text"},e.after)))}function DtOutput({run:e,runStatus:a}){return a==="running"?React.createElement("div",{className:"dt-pane"},React.createElement("div",{className:"dt-pane-head mono"},"Output \xB7 running"),React.createElement("div",{className:"dt-pending"},React.createElement("span",{className:"dt-pending-dot"}),React.createElement("span",null,"Waiting for run to finish \u2014 output appears once the status is terminal."))):a==="error"?React.createElement("div",{className:"dt-pane"},React.createElement("div",{className:"dt-pane-head mono"},"Output \xB7 failed"),React.createElement("pre",{className:"dt-pane-pre mono"},`\u2717 Run #4827 aborted

Error         TOOL_TIMEOUT
Where         send_email("demo-contact-redacted.company-x.example")
After         30 s
Retries       0 (no retry policy configured)
Suggestion    Set send_email retry-policy to 2 / 30s.
`)):React.createElement("div",{className:"dt-pane"},React.createElement("div",{className:"dt-pane-head mono"},"Final output \xB7 ",e.agent_name_de),React.createElement("pre",{className:"dt-pane-pre mono"},`\u2713 12 invoices matched \xB7 AP-Reconciliation #4827

Match strategy     fuzzy_match (confidence 0.87)
Delivery           email_summary \u2192 demo-contact-redacted.company-x.example
Tool calls         3 (db_query \xB7 write_match_results \xB7 send_email)
Self-critique      Round 1 accepted (output extended with per-match reasoning)

Email ID           msg_28a1f
Canvas update      thread_a91 (status_tile)
Run status         \u2713 succeeded
`))}function DtLogs({trace:e}){return React.createElement("div",{className:"dt-pane"},React.createElement("div",{className:"dt-pane-head mono"},"Step log \xB7 ",e.length," entries"),React.createElement("pre",{className:"dt-pane-pre mono"},e.map(a=>`[${String(a.ts).padStart(2,"0")}] ${(a.step_type||"").padEnd(15)} ${(a.label||"").padEnd(46)} ${formatDur(a.durationMs).padStart(8)}  ${a.cost_eur?"\u20AC "+a.cost_eur:"      "}  ${a.status||""}`).join(`
`)))}function DtCosts({trace:e,run:a}){const s={};e.forEach(c=>{const t=c.step_type||"other",i=parseFloat(String(c.cost_eur||"0").replace(",","."))||0;s[t]||(s[t]={count:0,sum:0}),s[t].count+=1,s[t].sum+=i});const d=Object.values(s).reduce((c,t)=>c+t.sum,0),r=Object.entries(s).sort((c,t)=>t[1].sum-c[1].sum);return React.createElement("div",{className:"dt-pane"},React.createElement("div",{className:"dt-pane-head mono"},"Cost breakdown \xB7 run total \u20AC ",a.total_cost_eur||d.toFixed(3).replace(".",",")),React.createElement("div",{className:"dt-cost-table"},React.createElement("div",{className:"dt-cost-row dt-cost-row-head mono"},React.createElement("span",null,"Step type"),React.createElement("span",{className:"right"},"Count"),React.createElement("span",{className:"right"},"Cost \u20AC"),React.createElement("span",null,"Share")),r.map(([c,t])=>{const i=d?t.sum/d*100:0,l=STEP_META[c]||{label:c};return React.createElement("div",{key:c,className:"dt-cost-row"},React.createElement("span",null,l.label),React.createElement("span",{className:"mono right"},t.count),React.createElement("span",{className:"mono right"},"\u20AC ",t.sum.toFixed(3).replace(".",",")),React.createElement("span",{className:"dt-cost-bar"},React.createElement("span",{className:"dt-cost-bar-fill",style:{width:i+"%"}})))})))}function formatDur(e){return e==null?"\u2014":e<1e3?e+" ms":(e/1e3).toFixed(1).replace(".",",")+" s"}window.VIEWS.decisionTimeline=DecisionTimelineView,window.VIEW_OPTIONS.push({value:"decisionTimeline",label:"Decisions",icon:"alt_route"});
