(()=>{const u=window.React;if(!u)return;const e=u.createElement,m=u.useState,N=u.useEffect,E=u.useRef,r={bg:"var(--app-bg,#0e0e10)",surface:"var(--app-surface,#1a1a1c)",elevated:"var(--app-elevated,#2a2a2e)",rule:"var(--app-rule)",ink:"var(--app-ink,#e6e3da)",inkSoft:"var(--app-ink-soft)",inkFaint:"var(--app-ink-faint)",accent:"var(--app-accent,#00f3ff)",accentDim:"var(--app-accent-dim)",running:"var(--app-running,#00f3ff)",success:"var(--app-success,#00d4b8)",warn:"var(--app-warn,#f8d974)",fail:"var(--app-fail,#f43f6c)",mono:'var(--app-font-mono,"JetBrains Mono",SFMono-Regular,monospace)'},b={workers:[{id:"w1",name:"intake-agt",maturity:1,state:"running",currentTask:"triage inbound #4821",tp:[2,3,2,4,3,5,4,6]},{id:"w2",name:"classify-agt",maturity:1,state:"ok",currentTask:"idle \xB7 last 06:12",tp:[1,2,1,3,2,2,3,2]},{id:"w3",name:"scrape-worker-eu-west (residential-proxy pool, long name)",maturity:1,state:"blocked",currentTask:"proxy pool exhausted",tp:[3,2,1,0,0,1,0,0]},{id:"w4",name:"dedupe-agt",maturity:2,state:"running",currentTask:"dedupe 12k rows",tp:[4,5,4,6,5,7,6,8]},{id:"w5",name:"enrich-agt",maturity:2,state:"ok",currentTask:"idle",tp:[2,2,3,3,4,3,4,4]},{id:"w6",name:"summarize-agt",maturity:3,state:"running",currentTask:"summarize ep 05-27",tp:[5,6,5,7,6,8,7,9]},{id:"w7",name:"ranker-agt",maturity:3,state:"failed",currentTask:"model 504 \xB7 2 retries",tp:[6,5,4,2,0,0,1,0]},{id:"w8",name:"match-agt",maturity:3,state:"ok",currentTask:"idle \xB7 90.3% last run",tp:[7,7,8,8,7,9,8,9]},{id:"w9",name:"sales-agt",maturity:4,state:"running",currentTask:"enrich Acme Dynamics inbound",tp:[8,9,8,10,9,11,10,12]},{id:"w10",name:"gen-agt",maturity:4,state:"warn",currentTask:"rate-limited on X",tp:[9,8,7,9,6,7,8,6]},{id:"w11",name:"discovery-agt",maturity:5,state:"ok",currentTask:"AP ledger posted",tp:[10,11,10,12,11,13,12,14]},{id:"w12",name:"ops-agt",maturity:6,state:"running",currentTask:"fleet monitor \xB7 2 alerts",tp:[12,13,12,14,13,15,14,16]}],queue:[{id:"q1",task:"triage inbound #4821",worker:"intake-agt",stream:"Sales",state:"run",age:"2m 10s",attempts:1},{id:"q2",task:"dedupe residual rows (batch 7 of 9, largest partition this cycle)",worker:"dedupe-agt",stream:"Data",state:"run",age:"11m 02s",attempts:1},{id:"q3",task:"scrape vendor registry EU-west",worker:"scrape-worker-eu-west",stream:"Enrich",state:"blocked",attempts:4,age:"38m 44s",blockReason:"proxy pool exhausted \u2014 awaiting residential IP lease (429 from upstream)"},{id:"q4",task:"rank May candidates",worker:"ranker-agt",stream:"Select",state:"fail",age:"6m 30s",attempts:3},{id:"q5",task:"summarize ep 05-27",worker:"summarize-agt",stream:"Podcast",state:"run",age:"4m 12s",attempts:1},{id:"q6",task:"post AP ledger",worker:"discovery-agt",stream:"Finance",state:"ok",age:"\u2014",attempts:1},{id:"q7",task:"syndicate to X",worker:"gen-agt",stream:"Marketing",state:"warn",age:"9m 05s",attempts:2}],escalations:[{id:"e1",severity:"fail",ask:"Promote discovery-agt to F6 (full autonomy on ledger posting)",owner:"you",waiting:"2h 14m"},{id:"e2",severity:"fail",ask:"ranker-agt failed 3\xD7 \u2014 approve rollback to prior model",owner:"ops",waiting:"46m"},{id:"e3",severity:"warn",ask:"scrape-worker blocked \u2014 approve residential-proxy budget \u20AC40/mo",owner:"you",waiting:"38m"},{id:"e4",severity:"warn",ask:"gen-agt rate-limited \u2014 approve X API tier upgrade",owner:"growth",waiting:"22m"},{id:"e5",severity:"ok",ask:"Approve F3\u2192F4 promotion for match-agt",owner:"you",waiting:"12m"},{id:"e6",severity:"ok",ask:"Review dedupe-agt throughput dip",owner:"data",waiting:"5m"}],source:"seed"};function T(o){return o==="running"?r.running:o==="ok"?r.success:o==="blocked"||o==="warn"?r.warn:o==="failed"||o==="fail"?r.fail:r.inkFaint}function $(o){const n={ok:["OK",r.success],run:["LIVE",r.running],running:["LIVE",r.running],warn:["WARN",r.warn],blocked:["BLOCKED",r.warn],fail:["FAIL",r.fail],failed:["FAIL",r.fail],idle:["IDLE",r.inkFaint]}[o]||[String(o||"").toUpperCase(),r.inkFaint];return{label:n[0],color:n[1]}}function S(o,t,n,a){const s=Array.isArray(o)&&o.length?o:[0,0],i=Math.min(...s),h=Math.max(...s)-i||1,p=c=>c/(s.length-1||1)*t,f=c=>n-(c-i)/h*n,y=s.map((c,v)=>`${p(v).toFixed(1)},${f(c).toFixed(1)}`),k=y[y.length-1].split(",");return e("svg",{viewBox:`0 0 ${t} ${n}`,width:t,height:n,style:{display:"block"}},[e("polyline",{key:"ln",points:y.join(" "),fill:"none",stroke:a,strokeWidth:1.6}),e("circle",{key:"dt",cx:k[0],cy:k[1],r:2.2,fill:a})])}function F(o,t,n){const a=T(o.state),s=$(o.state);return e("div",{key:o.id,className:"fndry-card",style:{borderLeftColor:a}},[e("div",{key:"hd",className:"fndry-card-head"},[e("span",{key:"dot",className:"fndry-dot",style:{background:a,boxShadow:`0 0 8px ${a}`}}),e("span",{key:"nm",className:"fndry-card-name",title:o.name||"\u2014"},o.name||"\u2014")]),e("div",{key:"task",className:"fndry-card-task",title:o.currentTask},o.currentTask||"\u2014"),e("div",{key:"chip",className:"fndry-card-chip-row"},e("span",{className:"fndry-chip mono",style:{color:s.color,borderColor:s.color}},s.label)),e("div",{key:"spark",className:"fndry-card-spark"},S(o.tp,88,22,r.accent)),e("div",{key:"act",className:"fndry-card-actions"},[e("button",{key:"up",type:"button",className:"fndry-btn-mini",title:"Promote",onClick:t},"\u25B2"),e("button",{key:"dn",type:"button",className:"fndry-btn-mini",title:"Demote",onClick:n},"\u25BC")])])}function D(o,t,n){return e("div",{className:"fndry-board"},o.map(a=>e("div",{key:a.m,className:"fndry-col"},[e("div",{key:"hd",className:"fndry-col-head"},[e("span",{key:"l",className:"fndry-col-label"},a.label),e("span",{key:"c",className:"fndry-col-count mono"},String(a.count))]),e("div",{key:"list",className:"fndry-col-list"},a.workers.map(s=>F(s,()=>t(s),()=>n(s))))])))}function z(o){const t=Array.isArray(o)?o:[];return e("div",{className:"fndry-queue-wrap"},[e("div",{key:"hd",className:"fndry-queue-head-row"},[e("span",{key:"t"},"Task"),e("span",{key:"w"},"Worker"),e("span",{key:"s"},"Stream"),e("span",{key:"st"},"State"),e("span",{key:"a",className:"fndry-num-col"},"Age"),e("span",{key:"tr",className:"fndry-num-col"},"Tries")]),t.map(n=>{const a=$(n.state);return e("div",{key:n.id,className:"fndry-queue-row-wrap"},[e("div",{key:"row",className:"fndry-queue-row"},[e("span",{key:"t",className:"fndry-queue-task",title:n.task},n.task||"\u2014"),e("span",{key:"w",className:"mono fndry-queue-worker"},n.worker||"\u2014"),e("span",{key:"s",className:"mono fndry-queue-stream"},n.stream||"\u2014"),e("span",{key:"st",className:"fndry-chip mono",style:{color:a.color,borderColor:a.color}},a.label),e("span",{key:"a",className:"mono fndry-num-col fndry-age"},n.age||"\u2014"),e("span",{key:"tr",className:"mono fndry-num-col fndry-age"},String(n.attempts??"\u2014"))]),n.blockReason?e("div",{key:"block",className:"fndry-block-reason"},`\u2937 ${n.blockReason}`):null])})])}function q(o,t,n,a){const s=Array.isArray(o)?o:[];return e("div",{className:"fndry-esc-panel"},[e("div",{key:"hd",className:"fndry-esc-head"},[e("span",{key:"ic",className:"fndry-esc-head-ic"},"\u2691"),e("span",{key:"lb",className:"fndry-esc-head-label"},`Needs a human \xB7 ${t}`)]),e("div",{key:"list",className:"fndry-esc-list"},s.length===0?e("p",{className:"fndry-esc-empty"},"No escalations on file."):s.map(i=>{const l=i.severity==="ok"?r.success:i.severity==="warn"?r.warn:r.fail;return e("div",{key:i.id,className:"fndry-esc-row"},[e("div",{key:"top",className:"fndry-esc-row-top"},[e("span",{key:"dot",className:"fndry-esc-dot",style:{background:l,boxShadow:`0 0 8px ${l}`}}),e("div",{key:"body",className:"fndry-esc-body"},[e("div",{key:"ask",className:"fndry-esc-ask"},i.ask),e("div",{key:"meta",className:"fndry-esc-meta mono"},`${i.owner||"\u2014"} \xB7 waiting ${i.waiting||"\u2014"}`)])]),e("div",{key:"act",className:"fndry-esc-actions"},[e("button",{key:"ap",type:"button",className:"fndry-esc-approve",onClick:()=>n(i)},"Approve"),e("button",{key:"rj",type:"button",className:"fndry-esc-reject",onClick:()=>a(i)},"Reject")])])}))])}function A(o,t,n,a,s){return o?e("div",{className:"fndry-modal-backdrop",onClick:s},e("div",{className:"fndry-modal",onClick:l=>l.stopPropagation()},[e("div",{key:"body",className:"fndry-modal-body"},[e("div",{key:"verb",className:"fndry-modal-verb mono"},`Confirm \xB7 ${o.verb}`),e("div",{key:"title",className:"fndry-modal-title"},o.title),e("div",{key:"sub",className:"fndry-modal-sub"},"This is a client-side confirmation only \u2014 v1 makes no server call. Press and hold to confirm.")]),e("div",{key:"act",className:"fndry-modal-actions"},[e("button",{key:"cancel",type:"button",className:"fndry-modal-cancel",onClick:s},"Cancel"),e("button",{key:"hold",type:"button",className:"fndry-hold-btn",onMouseDown:n,onMouseUp:a,onMouseLeave:a,onTouchStart:n,onTouchEnd:a},[e("span",{key:"fill",className:"fndry-hold-fill",style:{width:t?"100%":"0%"}}),e("span",{key:"label",className:"fndry-hold-label"},`Hold to ${o.verb}`)])])])):null}const R="foundry-roster-style";function I(){if(document.getElementById(R))return;const o=`
    .foundryroster{display:flex;flex-direction:column;gap:14px;height:100%;min-height:0;font-size:14px;line-height:1.45;color:${r.ink};font-family:var(--app-font-body,"Inter",system-ui,sans-serif);overflow:auto;padding:1.5rem;}
    .foundryroster *,.foundryroster *::before,.foundryroster *::after{box-sizing:border-box;}
    .foundryroster button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0;}
    .foundryroster .mono{font-family:${r.mono};font-variant-numeric:tabular-nums;}

    .foundryroster .fndry-src{font-family:${r.mono};font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:${r.inkFaint};margin:-6px 0 0;}

    .foundryroster .fndry-tabs{display:inline-flex;gap:2px;padding:3px;border-radius:9px;border:1px solid ${r.rule};background:${r.surface};width:fit-content;}
    .foundryroster .fndry-tab{padding:5px 14px;border-radius:6px;font-family:${r.mono};font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:${r.inkFaint};}
    .foundryroster .fndry-tab.on{background:${r.accentDim};color:${r.accent};}

    .foundryroster .fndry-body{display:flex;gap:14px;align-items:flex-start;}
    .foundryroster .fndry-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:18px;}

    .foundryroster .fndry-board{display:flex;gap:12px;overflow-x:auto;padding-bottom:6px;}
    .foundryroster .fndry-col{width:220px;flex-shrink:0;display:flex;flex-direction:column;gap:10px;}
    .foundryroster .fndry-col-head{display:flex;align-items:center;justify-content:space-between;padding:0 4px;}
    .foundryroster .fndry-col-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:${r.ink};}
    .foundryroster .fndry-col-count{font-size:11px;color:${r.inkFaint};}
    .foundryroster .fndry-col-list{display:flex;flex-direction:column;gap:10px;}

    .foundryroster .fndry-card{border:1px solid ${r.rule};border-left-width:3px;border-left-style:solid;border-radius:10px;background:${r.surface};padding:12px;}
    .foundryroster .fndry-card-head{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
    .foundryroster .fndry-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
    .foundryroster .fndry-card-name{flex:1;min-width:0;font-size:12.5px;font-weight:600;color:${r.ink};white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
    .foundryroster .fndry-card-task{font-family:${r.mono};font-size:10.5px;color:${r.inkSoft};line-height:1.4;margin-bottom:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
    .foundryroster .fndry-card-chip-row{margin-bottom:8px;}
    .foundryroster .fndry-card-spark{margin-bottom:8px;}
    .foundryroster .fndry-card-actions{display:flex;gap:6px;}
    .foundryroster .fndry-btn-mini{flex:1;height:26px;border-radius:6px;border:1px solid ${r.rule};color:${r.inkSoft};font-family:${r.mono};font-size:10px;}

    .foundryroster .fndry-chip{font-size:9.5px;font-weight:700;letter-spacing:.06em;padding:2px 8px;border-radius:999px;border:1px solid;width:fit-content;display:inline-block;}

    .foundryroster .fndry-queue-wrap{border:1px solid ${r.rule};border-radius:12px;overflow:hidden;background:${r.surface};}
    .foundryroster .fndry-queue-head-row{display:grid;grid-template-columns:1fr 130px 100px 90px 70px 70px;gap:12px;padding:10px 16px;border-bottom:1px solid ${r.rule};font-size:9.5px;text-transform:uppercase;letter-spacing:.08em;color:${r.inkFaint};}
    .foundryroster .fndry-queue-row-wrap{border-bottom:1px solid ${r.rule};}
    .foundryroster .fndry-queue-row-wrap:last-child{border-bottom:0;}
    .foundryroster .fndry-queue-row{display:grid;grid-template-columns:1fr 130px 100px 90px 70px 70px;gap:12px;align-items:center;padding:11px 16px;}
    .foundryroster .fndry-queue-task{font-size:12.5px;color:${r.ink};white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
    .foundryroster .fndry-queue-worker,.foundryroster .fndry-queue-stream{font-size:11px;color:${r.inkSoft};white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
    .foundryroster .fndry-num-col{text-align:right;}
    .foundryroster .fndry-age{font-size:11px;color:${r.inkSoft};}
    .foundryroster .fndry-block-reason{padding:0 16px 11px;margin-top:-2px;font-family:${r.mono};font-size:11px;color:${r.warn};}

    .foundryroster .fndry-esc-panel{width:360px;flex-shrink:0;border:1px solid ${r.rule};border-radius:12px;background:${r.elevated};overflow:hidden;}
    .foundryroster .fndry-esc-head{padding:14px 16px;border-bottom:1px solid ${r.rule};display:flex;align-items:center;gap:8px;color:${r.ink};}
    .foundryroster .fndry-esc-head-ic{color:${r.fail};}
    .foundryroster .fndry-esc-head-label{font-family:${r.mono};font-size:11px;text-transform:uppercase;letter-spacing:.06em;}
    .foundryroster .fndry-esc-empty{padding:16px;font-size:12px;color:${r.inkFaint};margin:0;}
    .foundryroster .fndry-esc-row{padding:13px 16px;border-bottom:1px solid ${r.rule};}
    .foundryroster .fndry-esc-row:last-child{border-bottom:0;}
    .foundryroster .fndry-esc-row-top{display:flex;gap:9px;margin-bottom:10px;}
    .foundryroster .fndry-esc-dot{margin-top:5px;width:7px;height:7px;border-radius:50%;flex-shrink:0;}
    .foundryroster .fndry-esc-body{min-width:0;}
    .foundryroster .fndry-esc-ask{font-size:12.5px;color:${r.ink};line-height:1.4;}
    .foundryroster .fndry-esc-meta{font-size:10.5px;color:${r.inkFaint};margin-top:4px;}
    .foundryroster .fndry-esc-actions{display:flex;gap:8px;padding-left:16px;}
    .foundryroster .fndry-esc-approve{flex:1;height:30px;border-radius:6px;border:1px solid rgba(0,212,184,.4);color:${r.success};font-size:11px;font-weight:600;}
    .foundryroster .fndry-esc-reject{flex:1;height:30px;border-radius:6px;border:1px solid ${r.rule};color:${r.inkSoft};font-size:11px;}

    .foundryroster .fndry-modal-backdrop{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:24px;}
    .foundryroster .fndry-modal{width:min(440px,94vw);border-radius:12px;overflow:hidden;background:${r.elevated};border:1px solid ${r.rule};box-shadow:0 20px 60px rgba(0,0,0,.5);}
    .foundryroster .fndry-modal-body{padding:22px 22px 18px;}
    .foundryroster .fndry-modal-verb{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:${r.fail};margin-bottom:12px;}
    .foundryroster .fndry-modal-title{font-size:16px;font-weight:650;color:${r.ink};line-height:1.45;}
    .foundryroster .fndry-modal-sub{font-size:12.5px;color:${r.inkSoft};margin-top:10px;}
    .foundryroster .fndry-modal-actions{padding:0 22px 22px;display:flex;gap:12px;align-items:center;}
    .foundryroster .fndry-modal-cancel{height:44px;padding:0 18px;border-radius:9px;border:1px solid ${r.rule};color:${r.ink};font-weight:500;font-size:13px;}
    .foundryroster .fndry-hold-btn{flex:1;position:relative;height:44px;border-radius:9px;background:${r.fail};color:#fff;font-weight:700;font-size:13px;overflow:hidden;user-select:none;}
    .foundryroster .fndry-hold-fill{position:absolute;left:0;top:0;bottom:0;background:rgba(0,0,0,.28);transition:width 1.2s linear;}
    .foundryroster .fndry-hold-label{position:relative;z-index:1;}

    @media(max-width:1100px){.foundryroster .fndry-body{flex-direction:column;}.foundryroster .fndry-esc-panel{width:100%;}}
    `,t=document.createElement("style");t.id=R,t.textContent=o,document.head.appendChild(t)}function w(){I();const o=()=>window.KIND_REGISTRY&&window.KIND_REGISTRY.foundryRoster&&window.KIND_REGISTRY.foundryRoster.data||b,[t,n]=m(o),[a,s]=m("roster"),[i,l]=m(null),[h,p]=m(!1),f=E(null);N(()=>{const d=()=>n(o());return window.addEventListener("foundry-roster-live-hydrated",d),()=>window.removeEventListener("foundry-roster-live-hydrated",d)},[]),N(()=>()=>clearTimeout(f.current),[]);const y=Array.isArray(t&&t.workers)?t.workers:[],k=Array.isArray(t&&t.queue)?t.queue:[],c=Array.isArray(t&&t.escalations)?t.escalations:[],v=[1,2,3,4,5,6].map(d=>{const g=y.filter(K=>K.maturity===d);return{m:d,label:`F${d}`,count:g.length,workers:g}}),x=(d,g)=>l({title:d,verb:g}),C=d=>x(`Promote ${d.name} \u2192 F${Math.min(6,(d.maturity||1)+1)}`,"PROMOTE"),_=d=>x(`Demote ${d.name} \u2192 F${Math.max(1,(d.maturity||1)-1)}`,"DEMOTE"),O=d=>x(`Approve: ${d.ask}`,"APPROVE"),Y=d=>x(`Reject: ${d.ask}`,"REJECT"),M=()=>{clearTimeout(f.current),p(!1),l(null)},U=()=>{p(!0),f.current=setTimeout(()=>{console.info(`[foundry-roster] ${i?i.verb:"action"} confirmed (client-side only, no server mutation)${i?`: ${i.title}`:""}`),p(!1),l(null)},1200)},P=()=>{clearTimeout(f.current),p(!1)};return e("div",{className:"foundryroster"},[t&&t.source?e("p",{key:"src",className:"fndry-src"},`source: ${t.source}`):null,e("div",{key:"tabs",className:"fndry-tabs"},[e("button",{key:"roster",type:"button",className:`fndry-tab${a==="roster"?" on":""}`,onClick:()=>s("roster")},"Roster"),e("button",{key:"queue",type:"button",className:`fndry-tab${a==="queue"?" on":""}`,onClick:()=>s("queue")},"Queue")]),e("div",{key:"body",className:"fndry-body"},[e("div",{key:"main",className:"fndry-main"},a==="roster"?D(v,C,_):z(k)),q(c,c.length,O,Y)]),A(i,h,U,P,M)])}w.displayName="FoundryRosterView",window.FOUNDRY_ROSTER_VIEW_FN=w,window.VIEWS=window.VIEWS||{},window.VIEWS.foundryRoster=w,window.KIND_REGISTRY=window.KIND_REGISTRY||{},window.KIND_REGISTRY.foundryRoster=window.KIND_REGISTRY.foundryRoster||{id:"foundryRoster",label:"Foundry",workspaceLabel:"Worker Roster",workspaceIcon:"precision_manufacturing",description:"Worker orchestration: a maturity roster (F1-F6) with per-worker sparkline cards, the task queue each worker is draining, and the escalation inbox of items needing a human. Promote/Demote and Approve/Reject are client-side hold-to-confirm \u2014 no server mutation in this build.",defaultView:"foundryRoster",defaultDetail:"none",agentTreatment:"implicit",primaryAction:{label:"Refresh",kind:"primary",icon:"refresh"},secondaryActions:[{label:"Export",icon:"download"}],heroKpis:[{label:"Workers",value:"24",trend:"flat"},{label:"Running",value:"9",trend:"up"},{label:"Queued",value:"137",trend:"flat"},{label:"Blocked",value:"4",trend:"down"},{label:"Mean maturity",value:"F3.2",trend:"flat"},{label:"Escalations",value:"6",trend:"down"}],data:b},window.FOUNDRY_ROSTER_SEED=b})();
