@fork-api/chat-sdk 0.1.183 → 0.1.185

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import*as sr from'react';import sr__default,{createContext,useState,useRef,useEffect,useCallback,Fragment as Fragment$1,useMemo,startTransition,Children,useContext,isValidElement}from'react';import*as Ws from'react-dom';import {createPortal}from'react-dom';import*as Js from'react/jsx-runtime';import {jsx,Fragment,jsxs}from'react/jsx-runtime';import*as Vs from'react/jsx-dev-runtime';import {ChevronLeft,ChevronDown,Check,PictureInPicture,PictureInPicture2,X,MoreHorizontal,MousePointer2,BadgeCheck,Undo2,RotateCcw,ImagePlus,Mic,ArrowUp,Loader2,AlertCircle,Sparkles,Package,Wrench,MessageSquare,Code,Terminal,FileSearch,Pencil}from'lucide-react';var bt="__FORK_SHARED__";function Gn(){var t,n,r,o;let e=globalThis;return e[bt]||(e[bt]={}),(t=e[bt]).react||(t.react=sr),(n=e[bt])["react-dom"]||(n["react-dom"]=Ws),(r=e[bt])["react/jsx-runtime"]||(r["react/jsx-runtime"]=Js),(o=e[bt])["react/jsx-dev-runtime"]||(o["react/jsx-dev-runtime"]=Vs),e[bt]}function Yn(e){return Object.assign(Gn(),e)}var fo=false,Zn=null,Qn=null;function po(e,t,n){fo=e,Zn=t,Qn=n;}function fe(){if(!fo)return {};let e={};return Zn&&(e["X-Fork-App-Id"]=Zn),Qn&&(e["X-Fork-Container-Id"]=Qn),e}async function er(e){let t=new URLSearchParams({app:e.appId,user:e.userId});e.containerId&&t.set("containerId",e.containerId);let n=`${e.baseUrl}/api/v1/manifest?${t.toString()}`,r={Authorization:`Bearer ${e.apiKey}`,"X-Fork-App-Id":e.appId,"X-Fork-User-Id":e.userId,...e.extraHeaders??{}};e.userHash&&(r["X-Fork-User-Hash"]=e.userHash),e.userJwt&&(r["X-Fork-User-Jwt"]=e.userJwt),e.previous?.etag&&(r["If-None-Match"]=e.previous.etag);let o=await fetch(n,{headers:r,signal:e.signal});if(o.status===304)return null;if(!o.ok)throw new Error(`manifest ${o.status} ${o.statusText}`);let i=await o.json(),a={};for(let[l,d]of Object.entries(i.modules)){let S=d.moduleUrl??d.bundleUrl??null,A=d.legacyModuleUrl??d.legacyBundleUrl??null;a[l]={forkId:d.forkId,moduleUrl:S,legacyModuleUrl:A,bundleUrl:d.bundleUrl??S,legacyBundleUrl:d.legacyBundleUrl??A,cssUrls:d.cssUrls??[],integrity:d.integrity,metadata:d.metadata,highlightHint:d.highlightHint,buildId:d.buildId,updatedAt:d.updatedAt};}return {containerId:i.containerId,forksPaused:!!i.forksPaused,slots:i.slots,modules:a,generatedAt:i.generatedAt,etag:o.headers.get("ETag")??void 0}}var Xs="fork:manifest:v1";function tr(e,t,n){return `${Xs}:${e}:${t}:${n}`}function qs(e,t,n){if(typeof window>"u")return null;try{let r=window.localStorage.getItem(tr(e,t,n));return r?JSON.parse(r):null}catch{return null}}function Gs(e,t,n,r){if(!(typeof window>"u"))try{window.localStorage.setItem(tr(e,t,n),JSON.stringify(r));}catch{}}function Ys(e,t,n){if(!(typeof window>"u"))try{window.localStorage.removeItem(tr(e,t,n));}catch{}}function Zs(e,t){if(!e||!t)return e!==t;if(e.containerId!==t.containerId||!!e.forksPaused!=!!t.forksPaused)return true;let n=Object.entries(e.slots),r=Object.entries(t.slots);if(n.length!==r.length)return true;for(let[a,l]of n){let d=t.slots[a];if(!d||d.forkId!==l.forkId||d.buildId!==l.buildId)return true}let o=Object.entries(e.modules),i=Object.entries(t.modules);if(o.length!==i.length)return true;for(let[a,l]of o){let d=t.modules[a];if(!d||d.forkId!==l.forkId||d.buildId!==l.buildId)return true}return false}var En={isAdmin:false,actingUserId:null,containerId:null,containerName:null,containers:[]},ho=createContext(null),ti=12e3,ni=45e3,go="fork:activity:v1",ri=new Set(["pending","running","building"]),oi="Setting up environment";function Be(e){return ri.has(e)}function si(e,t){return t?.targetId?t:e.boundaryId?{targetKind:"module",targetId:e.boundaryId}:e.slotId?{targetKind:"slot",targetId:e.slotId}:null}function ii(e,t){let n=si(e,t);if(!n)return null;let r=new Date().toISOString();return {id:e.id,status:e.status,targetKind:n.targetKind,targetId:n.targetId,summary:e.summary??null,estimateMinutes:e.estimateMinutes??null,createdAt:e.createdAt||r,updatedAt:e.completedAt||r,completedAt:e.completedAt??null}}function mo(e){return {id:e.id,status:e.status,targetKind:e.targetKind,targetId:e.targetId,summary:e.summary??null,estimateMinutes:e.estimateMinutes??null,promptCount:e.promptCount,messageCount:e.messageCount,isActive:e.isActive,createdAt:e.createdAt,updatedAt:e.updatedAt,completedAt:e.completedAt??null}}function In(e,t){let n=typeof t.summary=="string"&&t.summary.trim()?t.summary.trim():void 0,r=typeof e?.summary=="string"&&e.summary.trim()?e.summary.trim():void 0,o=typeof t.estimateMinutes=="number"&&Number.isFinite(t.estimateMinutes)?t.estimateMinutes:void 0,i=typeof e?.estimateMinutes=="number"&&Number.isFinite(e.estimateMinutes)?e.estimateMinutes:void 0;return {...e,...t,summary:n??r??null,estimateMinutes:o??i??null,latestMessage:t.latestMessage??e?.latestMessage??null,unread:t.unread??e?.unread??false}}function Xt(e){return `${e.id}:${e.completedAt||e.updatedAt}`}function vt(e){if(typeof window>"u")return new Set;try{let t=window.localStorage.getItem(e);if(!t)return new Set;let n=JSON.parse(t);return Array.isArray(n)?new Set(n.filter(r=>typeof r=="string")):new Set}catch{return new Set}}function wt(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(e,JSON.stringify([...t].slice(-200)));}catch{}}function ai(e){if(e.estimateMinutes)return `~${e.estimateMinutes}m`}function li(e){let t=e.data&&typeof e.data=="object"?e.data:{};if(e.type==="status"){let n=typeof t.status=="string"?t.status:"running",r=typeof t.summary=="string"?t.summary:void 0;return {status:n,latestMessage:Be(n)?"Building":void 0,summary:r,estimateMinutes:typeof t.estimateMinutes=="number"?t.estimateMinutes:void 0,updatedAt:e.timestamp}}return e.type==="tool_use"?{status:"running",latestMessage:"Building",updatedAt:e.timestamp}:e.type==="build_start"?{status:"building",latestMessage:"Building",updatedAt:e.timestamp}:e.type==="build_complete"?{status:"building",latestMessage:"Building",updatedAt:e.timestamp}:e.type==="complete"?{status:"complete",summary:typeof t.summary=="string"?t.summary:void 0,estimateMinutes:typeof t.estimateMinutes=="number"?t.estimateMinutes:void 0,latestMessage:"Fork ready",completedAt:e.timestamp,updatedAt:e.timestamp}:e.type==="error"||e.type==="build_error"?{status:"error",latestMessage:typeof t.error=="string"?t.error:typeof t.message=="string"?t.message:"Fork failed",updatedAt:e.timestamp}:{updatedAt:e.timestamp}}function ci(e){let t=e.filter(o=>Be(o.status)),n=e.filter(o=>o.status==="complete"&&o.unread),r=[...e].sort((o,i)=>Date.parse(i.updatedAt)-Date.parse(o.updatedAt))[0]??null;if(t.length>1)return {state:"running",label:`${t.length} forks running`,count:t.length,runningCount:t.length,unreadCompletedCount:n.length,latest:t[0]};if(t.length===1){let o=t[0],i=!!(typeof o.summary=="string"&&o.summary.trim());return {state:"running",label:i?o.summary.trim():oi,detail:i?ai(o):void 0,count:1,runningCount:1,unreadCompletedCount:n.length,latest:o}}if(n.length>1)return {state:"complete",label:`${n.length} forks ready`,count:n.length,runningCount:0,unreadCompletedCount:n.length,latest:n[0]};if(n.length===1){let o=n[0];return {state:"complete",label:o.summary||"Fork ready",count:1,runningCount:0,unreadCompletedCount:1,latest:o}}return {state:r?.status==="error"?"error":"idle",label:"Fork",count:0,runningCount:0,unreadCompletedCount:0,latest:r}}function nr(e,t){if(!t)return t;try{return new URL(t,`${e.replace(/\/+$/,"")}/`).toString()}catch{return t}}function di(e,t,n,r){let o={};for(let[i,a]of Object.entries(t.slots)){let l=a.bundleUrl??a.legacyBundleUrl;l&&(o[i]={id:a.forkId,userId:n,prompt:"",status:"complete",slotId:i,appId:r,bundleUrl:nr(e,l),revealPending:a.revealPending===true,createdAt:a.updatedAt,completedAt:a.updatedAt});}return o}function ui(e,t){let n={};for(let[r,o]of Object.entries(t.modules)){let i=o.moduleUrl??o.legacyModuleUrl??o.bundleUrl??"";i&&(n[r]={id:o.forkId,boundaryId:r,moduleUrl:nr(e,i),cssUrls:(o.cssUrls??[]).map(a=>nr(e,a)),integrity:o.integrity,metadata:o.metadata,highlightHint:o.highlightHint,createdAt:o.updatedAt});}return n}function fi(e){let{apiKey:t,baseUrl:n,children:r,appId:o,shared:i}=e,a="userId"in e?e.userId:void 0,l="userHash"in e?e.userHash:void 0,d="userJwt"in e?e.userJwt:void 0,S="authUrl"in e?e.authUrl:void 0,[A,h]=useState({}),[C,N]=useState(a?{userId:a,userHash:l,userJwt:d}:null),[R,p]=useState(!!a),[u,$]=useState(En),[F,m]=useState(false),[L,U]=useState(false),[D,P]=useState({}),[H,B]=useState(!o),[z,_]=useState(0),[x,O]=useState(null),[V,X]=useState(false),[Y,G]=useState([]),[Z,re]=useState(()=>typeof document>"u"?true:document.visibilityState!=="hidden"),pe=useRef(new Map),oe=useRef(new Map),[ye,te]=useState(0),f=useRef(new Set),b=useRef(new Map),E=useRef(void 0),c=useRef(new Map),y=useRef([]),I=useRef(new Set),K=useRef(false);Gn(),useEffect(()=>{if(!o||!C?.userId||!(C.userHash||C.userJwt)){$(En),m(true);return}let g=false;m(false);let v=new URLSearchParams({app:o});return fetch(`${n}/api/v1/admin/containers?${v.toString()}`,{headers:{Authorization:`Bearer ${t}`,"X-Fork-App-Id":o,"X-Fork-User-Id":C.userId,...C.userHash?{"X-Fork-User-Hash":C.userHash}:{},...C.userJwt?{"X-Fork-User-Jwt":C.userJwt}:{}}}).then(async M=>M.status===403||!M.ok?null:M.json()).then(M=>{if(g)return;if(!M){$(En),m(true);return}let ee=Array.isArray(M.containers)?M.containers:[],ue=M.currentContainerId??null,le=ee.find(de=>de.id===ue)?.name??null;$({isAdmin:true,actingUserId:typeof M.actingUserId=="string"?M.actingUserId:null,containerId:ue,containerName:le,containers:ee}),m(true);}).catch(()=>{g||($(En),m(true));}),()=>{g=true;}},[t,o,C?.userHash,C?.userJwt,C?.userId,n]),useEffect(()=>{po(u.isAdmin,o??null,u.containerId);},[u.isAdmin,u.containerId,o]);let Q=useCallback((g,v)=>{$(M=>{if(!M.isAdmin)return M;let ee=M.containers.find(de=>de.id===g),ue=v??ee?.name??null,le=ee?M.containers.map(de=>({...de,isPrimary:de.id===g})):[{id:g,name:ue??"New container",isPrimary:true,forkCount:0},...M.containers.map(de=>({...de,isPrimary:false}))];return {...M,containerId:g,containerName:ue,containers:le}}),U(false);},[]);i&&E.current!==i&&(Yn(i),E.current=i),useEffect(()=>{S&&(p(false),fetch(S,{credentials:"include"}).then(g=>{if(!g.ok)throw new Error(`Auth endpoint returned ${g.status}`);return g.json()}).then(g=>{if(!g.userId||typeof g.userId!="string")throw new Error("authUrl response must include userId");N({userId:g.userId,userHash:typeof g.userHash=="string"?g.userHash:void 0,userJwt:typeof g.userJwt=="string"?g.userJwt:void 0});}).catch(g=>{console.error("[ForkProvider] Failed to fetch user identity from authUrl:",g.message);}).finally(()=>{p(true);}));},[S]),useEffect(()=>{!S&&a&&(N({userId:a,userHash:l,userJwt:d}),p(true));},[a,l,d,S]);let J=C?.userId??"",ae=C?.userHash,ct=C?.userJwt,ke=!!o,Le=useCallback(async()=>{if(!ke){O(null),X(false),P({}),B(true),_(v=>v+1);return}if(!R){B(false);return}if(!J||!o){O(null),X(false),h({}),P({}),B(true),_(v=>v+1);return}B(false);let g=u.isAdmin?u.containerId:null;if(u.isAdmin&&L){X(true),h({}),P({}),_(v=>v+1),B(true);return}try{let v=await er({baseUrl:n,apiKey:t,appId:o,userId:J,userHash:ae,userJwt:ct,containerId:g??void 0});v&&(O(v.containerId),X(u.isAdmin?!1:!!v.forksPaused),h(di(n,v,J,o)),P(ui(n,v)));}catch(v){console.error("[ForkProvider] Failed to fetch fork manifest:",v.message),O(null),X(false),h({}),P({});}finally{_(v=>v+1),B(true);}},[t,o,n,R,ke,ae,ct,J,u.isAdmin,u.containerId,L]);useEffect(()=>{if(!J||o)return;let g=new URLSearchParams({userId:J});ae&&g.set("userHash",ae),fetch(`${n}/api/v1/forks/active?${g.toString()}`,{headers:{Authorization:`Bearer ${t}`,...fe()}}).then(v=>{if(!v.ok)throw new Error(`${v.status}`);return v.json()}).then(v=>{v&&typeof v=="object"&&h(v);}).catch(()=>{});},[t,o,J,ae,n]),useEffect(()=>{Le();},[Le]);let un=useCallback(async g=>{if(o){if(u.isAdmin){U(g),X(g),g?(h({}),P({}),_(v=>v+1)):await Le();return}if(J){X(g),g&&(h({}),P({}),_(v=>v+1));try{let v=await fetch(`${n}/api/v1/containers/primary/paused`,{method:"PUT",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json","X-Fork-App-Id":o},body:JSON.stringify({appId:o,paused:g,userId:J,userHash:ae})});if(!v.ok)throw new Error(`${v.status}`);g||await Le();}catch(v){console.error("[ForkProvider] Failed to persist fork pause state:",v?.message??v),Le().catch(()=>{});}}}},[t,o,n,Le,u.isAdmin,ae,J]),$e=useCallback((g,v)=>{h(M=>({...M,[g]:v}));},[]),fn=useCallback(g=>{h(v=>{let M={...v};return delete M[g],M});},[]),At=useCallback(g=>{f.current.add(g);},[]),dt=useCallback(g=>f.current.has(g)?(f.current.delete(g),true):false,[]),ut=useCallback(g=>{if(g.slotId&&h(M=>{let ee=M[g.slotId];return !ee||ee.id!==g.id||!ee.revealPending?M:{...M,[g.slotId]:{...ee,revealPending:false}}}),u.isAdmin||!J)return;let v={Authorization:`Bearer ${t}`,"Content-Type":"application/json","X-Fork-User-Id":J};ae&&(v["X-Fork-User-Hash"]=ae),fetch(`${n}/api/v1/forks/reveals`,{method:"POST",headers:v,body:JSON.stringify({forkId:g.id,userId:J,userHash:ae})}).catch(()=>{});},[t,n,u.isAdmin,ae,J]),tt=useCallback((g,v)=>{b.current.set(g,v);},[]),Rt=useCallback((g,v)=>b.current.get(g)!==v?false:(b.current.delete(g),true),[]),Et=useCallback(g=>{if(!o)return;let v=JSON.stringify(g);pe.current.get(g.id)===v||oe.current.get(g.id)?.signature===v||(oe.current.set(g.id,{boundary:g,signature:v}),te(ee=>ee+1));},[o]);useEffect(()=>{if(!o||oe.current.size===0)return;let g=setTimeout(()=>{let v=Array.from(oe.current.values());v.length!==0&&fetch(`${n}/api/v1/boundaries`,{method:"POST",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json"},body:JSON.stringify({appId:o,boundaries:v.map(M=>M.boundary)})}).then(M=>{if(!M.ok)throw new Error(`${M.status}`)}).then(()=>{for(let M of v)oe.current.get(M.boundary.id)?.signature===M.signature&&(oe.current.delete(M.boundary.id),pe.current.set(M.boundary.id,M.signature));}).catch(M=>{console.error("[ForkProvider] Failed to register module boundaries:",M.message);});},50);return ()=>{clearTimeout(g);}},[t,o,n,ye]);let pn=useCallback(g=>D[g],[D]),It=u.isAdmin?`admin:${u.actingUserId??"op"}`:J,ft=`${t}:${o||"no-app"}:${x||"no-container"}:${It||"anonymous"}`,gn=u.isAdmin?`op:${u.actingUserId??"op"}`:J,pt=`${t}:${o||"no-app"}:${gn||"anonymous"}`,Ee=`${go}:seen:${ft}`,Ie=`${go}:tracked:${ft}`;useEffect(()=>{y.current=Y;},[Y]);let mn=useCallback(()=>{let g={Authorization:`Bearer ${t}`,...fe()};return o&&(g["X-Fork-App-Id"]=o),J&&(g["X-Fork-User-Id"]=J),ae&&(g["X-Fork-User-Hash"]=ae),g},[t,o,ae,J]);useEffect(()=>{if(typeof window>"u")return;let g=window.__FORK_RUNTIME__,v={dataFetch:async(M,ee,ue="POST")=>{if(!o||!x)throw new Error("Fork data is unavailable until appId and containerId are resolved");let le=typeof M=="string"&&M.startsWith("/")?M:`/${String(M||"")}`,de=le.startsWith("/api/v1/data")?le:`/api/v1/data${le}`,se=ue.toUpperCase(),Fe=new URL(`${n}${de}`),we={Authorization:`Bearer ${t}`,"Content-Type":"application/json","X-Fork-App-Id":o,...fe()};J&&(we["X-Fork-User-Id"]=J),ae&&(we["X-Fork-User-Hash"]=ae);let Se={method:se,headers:we};se==="GET"?(Fe.searchParams.set("appId",o),Fe.searchParams.set("containerId",x)):Se.body=JSON.stringify({appId:o,containerId:x,...ee&&typeof ee=="object"?ee:{}});let me=await fetch(Fe.toString(),Se),he=await me.json().catch(()=>({}));if(!me.ok)throw new Error(typeof he?.error=="string"?he.error:`Fork data API ${me.status}`);return he}};return window.__FORK_RUNTIME__=v,()=>{window.__FORK_RUNTIME__===v&&(window.__FORK_RUNTIME__=g);}},[t,o,n,x,ae,J]);let ze=useCallback(async()=>{if(!x||!F)return;let g=new URLSearchParams({container_id:x}),v=await fetch(`${n}/api/v1/forks?${g.toString()}`,{headers:mn()}).catch(()=>null);if(!v||!v.ok)return;let M=await v.json().catch(()=>({})),ee=Array.isArray(M.forks)?M.forks:[],ue=vt(Ee),le=vt(Ie),de=false,se=new Map(y.current.map(we=>[we.id,we])),Fe=[];for(let we of ee){let Se=mo(we);Be(Se.status)&&!le.has(Se.id)&&(le.add(Se.id),de=true);let me=se.get(Se.id),he=me?Be(me.status):false,Ae=Xt(Se);Se.status==="complete"&&(le.has(Se.id)||he)&&!ue.has(Ae)&&!I.current.has(Ae)&&!me?.unread&&(K.current||le.has(Se.id)||he)&&(I.current.add(Ae),Fe.push(Se));}if(G(we=>{let Se=new Map(we.map(be=>[be.id,be])),me=new Set,he=new Map;for(let be of ee){let Me=mo(be);me.add(Me.id);let Xe=Se.get(Me.id),Pe=Xe?Be(Xe.status):false,jt=Xt(Me),zt=Me.status==="complete"&&(le.has(Me.id)||Pe)&&!ue.has(jt),nt=In(Xe,{...Me,unread:zt});he.set(Me.id,nt);}for(let be of we)me.has(be.id)||(Be(be.status)||be.unread)&&he.set(be.id,be);let Ae=[...he.values()].sort((be,Me)=>Date.parse(Me.updatedAt)-Date.parse(be.updatedAt));return y.current=Ae,Ae}),de&&wt(Ie,le),Fe.length>0){for(let we of Fe)we.targetKind==="module"&&tt(we.targetId,we.id);Le().catch(()=>{});}K.current=true;},[Ee,Ie,F,n,mn,x,Le,tt]),Dt=useCallback((g,v)=>{let M=ii(g,v);if(!M)return;let ee=g.containerId??g._containerId;if(ee&&!x&&O(ee),Be(M.status)){let de=vt(Ie);de.has(M.id)||(de.add(M.id),wt(Ie,de)),X(false),u.isAdmin&&U(false);}let ue=new Map(y.current.map(de=>[de.id,de]));ue.set(M.id,In(ue.get(M.id),M));let le=[...ue.values()].sort((de,se)=>Date.parse(se.updatedAt)-Date.parse(de.updatedAt));y.current=le,G(le);},[Ie,t,o,x,u.isAdmin]),Ve=useCallback((g,v)=>{let M=li(v),ee=vt(Ee),ue=vt(Ie),le=y.current.find(me=>me.id===g),de=le?Be(le.status):false;M.status&&Be(M.status)&&!ue.has(g)&&(ue.add(g),wt(Ie,ue));let se=le?In(le,{...le,...M}):null,Fe=se?Xt(se):null,we=!!(se&&se.status==="complete"&&(ue.has(g)||de)&&Fe&&!ee.has(Fe)&&!I.current.has(Fe)&&!le?.unread),Se=v.type==="complete"&&le?.targetKind==="module"?le.targetId:null;if(G(me=>{let he=me.find(Pe=>Pe.id===g);if(!he)return me;let Ae=In(he,{...he,...M}),be=Ae.status==="complete"&&(ue.has(g)||Be(he.status))&&!ee.has(Xt(Ae)),Me={...Ae,unread:be},Xe=me.map(Pe=>Pe.id===g?Me:Pe).sort((Pe,jt)=>Date.parse(jt.updatedAt)-Date.parse(Pe.updatedAt));return y.current=Xe,Xe}),we&&se&&Fe&&I.current.add(Fe),v.type==="complete"){let me=v.data&&typeof v.data=="object"?v.data:{},he=typeof me.boundaryId=="string"?me.boundaryId:Se;he&&tt(he,g),Le().catch(()=>{});}},[Ee,Ie,Le,tt]),Te=useCallback(g=>{let v=vt(Ee),M=vt(Ie),ee=false,ue=false;for(let le of y.current){if(le.status!=="complete"||g&&le.id!==g)continue;let de=Xt(le);v.has(de)||(v.add(de),ee=true),M.delete(le.id)&&(ue=true);}G(le=>{let de=le.map(se=>se.status!=="complete"||g&&se.id!==g?se:{...se,unread:false});return y.current=de,de}),ee&&wt(Ee,v),ue&&wt(Ie,M);},[Ee,Ie]);useEffect(()=>{K.current=false,I.current.clear(),G([]);for(let g of c.current.values())g.close();c.current.clear(),x&&ze();},[x,ze]),useEffect(()=>{if(typeof document>"u")return;let g=()=>{let v=document.visibilityState!=="hidden";re(v),v&&x&&ze();};return document.addEventListener("visibilitychange",g),window.addEventListener("focus",g),window.addEventListener("online",g),()=>{document.removeEventListener("visibilitychange",g),window.removeEventListener("focus",g),window.removeEventListener("online",g);}},[x,ze]),useEffect(()=>{let g=Y.filter(ee=>Be(ee.status));if(!x||g.length===0)return;let v=Z?ti:ni,M=window.setInterval(()=>{ze();},v);return ()=>window.clearInterval(M)},[x,Z,Y,ze]),useEffect(()=>{for(let g of c.current.values())g.close();c.current.clear();},[t,n,u.containerId,ae,J]),useEffect(()=>{let g=new Set(Y.filter(v=>Be(v.status)).map(v=>v.id));for(let[v,M]of c.current.entries())g.has(v)||(M.close(),c.current.delete(v));for(let v of g){if(c.current.has(v))continue;let M=new URLSearchParams({key:t});J&&M.set("userId",J),ae&&M.set("userHash",ae),u.isAdmin&&u.containerId&&M.set("containerId",u.containerId);let ee=new EventSource(`${n}/api/v1/forks/${v}/events?${M.toString()}`);ee.onmessage=ue=>{try{Ve(v,JSON.parse(ue.data));}catch{}},ee.onerror=()=>{ee.close(),c.current.delete(v);},c.current.set(v,ee);}},[t,n,Y,u.isAdmin,u.containerId,Ve,ae,J]),useEffect(()=>()=>{for(let g of c.current.values())g.close();c.current.clear();},[]);let gt=ci(Y),mt=useCallback(async()=>{if(!J)throw new Error("Reset requires a resolved user identity.");let g=new URLSearchParams({userId:J});ae&&g.set("userHash",ae);let v={Authorization:`Bearer ${t}`,...fe()};o&&(v["X-Fork-App-Id"]=o);let M=await fetch(`${n}/api/v1/forks/all?${g.toString()}`,{method:"DELETE",headers:v});if(!M.ok){let ue=await M.json().catch(()=>({}));throw new Error(ue.error||`API error: ${M.status}`)}let ee=await M.json().catch(()=>({}));return h({}),P({}),B(true),_(ue=>ue+1),G([]),I.current.clear(),wt(Ee,new Set),wt(Ie,new Set),f.current.clear(),b.current.clear(),ee},[Ee,Ie,t,o,n,ae,J]);return jsx(ho.Provider,{value:{apiKey:t,userId:J,userHash:ae,baseUrl:n,appId:o,forks:A,moduleOverridesEnabled:ke,moduleManifestReady:H,moduleManifestVersion:z,currentContainerId:x,forksPaused:V,setForksPaused:un,forkActivities:Y,activitySummary:gt,adminContext:u,setAdminContainer:Q,trackForkActivity:Dt,recordForkActivityEvent:Ve,markForkActivitySeen:Te,refreshForkActivities:ze,setSlotFork:$e,clearSlotFork:fn,skipAnimationForSlot:At,shouldSkipAnimation:dt,markRevealSeen:ut,queueBoundaryAnimation:tt,consumeBoundaryAnimation:Rt,registerBoundary:Et,getBoundaryOverride:pn,refreshModuleManifest:Le,resetAllForks:mt,highlightScope:pt},children:r})}function Ce(){let e=useContext(ho);if(!e)throw new Error("useForkContext must be used within <ForkProvider>");return e}function Cn(e){return Ce().forks[e]}var qt=class{constructor(t){this.values=new Map;this.snapshots=new Map;this.listeners=new Map;this.eventHandlers=new Map;this.slotId=t,window.__FORK_BRIDGE__||(window.__FORK_BRIDGE__={}),window.__FORK_BRIDGE__[t]=this;}set(t,n){let r=this.values.get(t);if(Object.is(r,n))return;if(r!==void 0&&n!==null&&r!==null&&typeof r=="object"&&typeof n=="object")try{if(JSON.stringify(r)===JSON.stringify(n))return}catch{}this.values.set(t,n),this.snapshots.set(t,n);let o=this.listeners.get(t);o&&o.forEach(i=>i());}get(t){return this.values.get(t)}getSnapshot(t){return this.snapshots.get(t)}subscribe(t,n){return this.listeners.has(t)||this.listeners.set(t,new Set),this.listeners.get(t).add(n),()=>{this.listeners.get(t)?.delete(n);}}useValue(t){let n=window.__FORK_REACT__;return n?.useSyncExternalStore?n.useSyncExternalStore(r=>this.subscribe(t,r),()=>this.getSnapshot(t)):(console.warn("[ForkBridge] React.useSyncExternalStore not available, returning static value"),this.values.get(t))}emit(t,...n){let r=this.eventHandlers.get(t);r&&r.forEach(o=>o(...n));}on(t,n){return this.eventHandlers.has(t)||this.eventHandlers.set(t,new Set),this.eventHandlers.get(t).add(n),()=>{this.eventHandlers.get(t)?.delete(n);}}destroy(){this.listeners.clear(),this.eventHandlers.clear(),this.values.clear(),this.snapshots.clear();let t=window.__FORK_BRIDGE__;t&&delete t[this.slotId];}};var rr=new Set;function ir(e,t){let n;try{n=Children.only(e);}catch{let o=Children.count(e);throw new Error(`<ForkSlot slotId="${t}"> must wrap exactly one React component, got ${o} children. Wrap your slot's contents in a single named component, e.g. <ForkSlot slotId="${t}"><MyShell ...props /></ForkSlot>.`)}let r=n.type;if(typeof r=="string")throw new Error(`<ForkSlot slotId="${t}"> child must be a React component (function or class), not an HTML element <${r}>. Wrap your slot's contents in a single named component, e.g. <ForkSlot slotId="${t}"><MyShell ...props /></ForkSlot>.`);if(typeof r=="symbol")throw new Error(`<ForkSlot slotId="${t}"> child must be a single React component, not a fragment or special React element. Wrap your slot's contents in a single named component, e.g. <ForkSlot slotId="${t}"><MyShell ...props /></ForkSlot>.`);return n}var ko=new Set;function bo(e){let t=[],n=e.querySelectorAll("*");for(let r of n){if(!(r instanceof HTMLElement))continue;let o=r.getBoundingClientRect();if(o.width<10||o.height<10||["SCRIPT","STYLE","META","LINK"].includes(r.tagName))continue;let i=getComputedStyle(r),a=parseFloat(i.borderTopLeftRadius)||0;t.push({tag:r.tagName,className:r.className||"",text:(r.textContent||"").slice(0,50).trim(),rect:o,borderRadius:a});}return t}function yi(e,t){let n=[];for(let r of t)if(!e.find(i=>i.tag===r.tag&&i.className===r.className&&Math.abs(i.rect.top-r.rect.top)<20&&Math.abs(i.rect.left-r.rect.left)<20)&&!n.some(a=>r.rect.top>=a.rect.top&&r.rect.left>=a.rect.left&&r.rect.right<=a.rect.right&&r.rect.bottom<=a.rect.bottom)){for(let a=n.length-1;a>=0;a--){let l=n[a];l.rect.top>=r.rect.top&&l.rect.left>=r.rect.left&&l.rect.right<=r.rect.right&&l.rect.bottom<=r.rect.bottom&&n.splice(a,1);}n.push({rect:r.rect,borderRadius:r.borderRadius});}return n}function ki(e,t){let n=[];for(let r of e)if(!t.find(i=>i.tag===r.tag&&i.className===r.className&&Math.abs(i.rect.top-r.rect.top)<20&&Math.abs(i.rect.left-r.rect.left)<20)&&!n.some(a=>r.rect.top>=a.rect.top&&r.rect.left>=a.rect.left&&r.rect.right<=a.rect.right&&r.rect.bottom<=a.rect.bottom)){for(let a=n.length-1;a>=0;a--){let l=n[a];l.rect.top>=r.rect.top&&l.rect.left>=r.rect.left&&l.rect.right<=r.rect.right&&l.rect.bottom<=r.rect.bottom&&n.splice(a,1);}n.push({rect:r.rect,borderRadius:r.borderRadius});}return n}function wo(e,t,n,r,o){return o=Math.max(0,Math.min(o,n/2,r/2)),o===0?`M ${e} ${t} L ${e+n} ${t} L ${e+n} ${t+r} L ${e} ${t+r} Z`:[`M ${e+o} ${t}`,`L ${e+n-o} ${t}`,`A ${o} ${o} 0 0 1 ${e+n} ${t+o}`,`L ${e+n} ${t+r-o}`,`A ${o} ${o} 0 0 1 ${e+n-o} ${t+r}`,`L ${e+o} ${t+r}`,`A ${o} ${o} 0 0 1 ${e} ${t+r-o}`,`L ${e} ${t+o}`,`A ${o} ${o} 0 0 1 ${e+o} ${t}`,"Z"].join(" ")}function vo(e){let t="http://www.w3.org/2000/svg",n=document.createElement("div");n.setAttribute("data-fork-highlights","true"),n.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;";let r=document.createElementNS(t,"svg");r.setAttribute("width","100%"),r.setAttribute("height","100%"),r.style.cssText="position:absolute;top:0;left:0;overflow:visible;";let o=document.createElementNS(t,"defs");r.appendChild(o);let i=[];for(let A=0;A<e.length;A++){let{rect:h,borderRadius:C}=e[A],N=h.left-.5,R=h.top-.5,p=h.width+1,u=h.height+1,$=Math.min(C+.5,p/2,u/2),F=wo(N,R,p,u,$),m=`__fork-glow-${A}`,L=document.createElementNS(t,"filter");L.setAttribute("id",m),L.setAttribute("x","-100%"),L.setAttribute("y","-100%"),L.setAttribute("width","300%"),L.setAttribute("height","300%");let U=document.createElementNS(t,"feGaussianBlur");U.setAttribute("in","SourceGraphic"),U.setAttribute("stdDeviation","8"),L.appendChild(U),o.appendChild(L);let D=`__fork-mask-${A}`,P=document.createElementNS(t,"mask");P.setAttribute("id",D),P.setAttribute("maskUnits","userSpaceOnUse"),P.setAttribute("x",String(N-200)),P.setAttribute("y",String(R-200)),P.setAttribute("width",String(p+400)),P.setAttribute("height",String(u+400));let H=document.createElementNS(t,"rect");H.setAttribute("x",String(N-200)),H.setAttribute("y",String(R-200)),H.setAttribute("width",String(p+400)),H.setAttribute("height",String(u+400)),H.setAttribute("fill","white"),P.appendChild(H);let B=document.createElementNS(t,"path");B.setAttribute("d",F),B.setAttribute("fill","black"),P.appendChild(B),o.appendChild(P);let z=document.createElementNS(t,"g");z.setAttribute("mask",`url(#${D})`),z.setAttribute("opacity","0");let _=document.createElementNS(t,"g");_.setAttribute("filter",`url(#${m})`);let x=document.createElementNS(t,"path");x.setAttribute("d",F),x.setAttribute("fill","none"),x.setAttribute("stroke","rgba(150, 185, 220, 0.6)"),x.setAttribute("stroke-width","6"),x.setAttribute("stroke-linecap","round"),_.appendChild(x),z.appendChild(_),r.appendChild(z);let O=document.createElementNS(t,"path");O.setAttribute("d",F),O.setAttribute("fill","none"),O.setAttribute("stroke","rgba(150, 185, 220, 0.35)"),O.setAttribute("stroke-width","2"),O.setAttribute("stroke-linecap","round"),O.setAttribute("opacity","0"),r.appendChild(O),i.push(x,O),x.__group=z;}n.appendChild(r),document.body.appendChild(n);let a=[];for(let A=0;A<i.length;A+=2){let h=i[A],C=i[A+1],N=h.__group,R=C.getTotalLength(),p=h.getTotalLength();if(R<=0)continue;let u=R*.35;C.setAttribute("stroke-dasharray",`${u} ${R-u}`),C.setAttribute("stroke-dashoffset","0"),a.push(C.animate([{strokeDashoffset:0,opacity:0,offset:0},{strokeDashoffset:-0.2*R,opacity:.92,offset:.06},{strokeDashoffset:-2*R,opacity:.92,offset:.92},{strokeDashoffset:-2.25*R,opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));let $=p*.35;h.setAttribute("stroke-dasharray",`${$} ${p-$}`),h.setAttribute("stroke-dashoffset","0"),a.push(h.animate([{strokeDashoffset:0,offset:0},{strokeDashoffset:-0.2*p,offset:.06},{strokeDashoffset:-2*p,offset:.92},{strokeDashoffset:-2.25*p,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"})),a.push(N.animate([{opacity:0,offset:0},{opacity:.92,offset:.06},{opacity:.92,offset:.92},{opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));}let l=false,d=()=>{if(l)return;l=true,clearTimeout(S);for(let h of a)try{h.cancel();}catch{}let A=n.animate([{opacity:1},{opacity:0}],{duration:400,fill:"forwards"});A.onfinish=()=>n.remove(),window.removeEventListener("click",d);},S=setTimeout(d,14500);return setTimeout(()=>{l||window.addEventListener("click",d);},500),d}function bi(e){let t="http://www.w3.org/2000/svg",n=document.createElement("div");n.setAttribute("data-fork-removed","true"),n.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;";let r=document.createElementNS(t,"svg");r.setAttribute("width","100%"),r.setAttribute("height","100%"),r.style.cssText="position:absolute;top:0;left:0;overflow:visible;";let o=document.createElementNS(t,"defs"),i=document.createElementNS(t,"filter");i.setAttribute("id","__fork-removed-shadow"),i.setAttribute("x","-10%"),i.setAttribute("y","-10%"),i.setAttribute("width","120%"),i.setAttribute("height","120%");let a=document.createElementNS(t,"feDropShadow");a.setAttribute("dx","0"),a.setAttribute("dy","1"),a.setAttribute("stdDeviation","2"),a.setAttribute("flood-color","rgba(0,0,0,0.15)"),i.appendChild(a),o.appendChild(i),r.appendChild(o);for(let{rect:l,borderRadius:d}of e){let S=l.left,A=l.top,h=l.width,C=l.height,N=Math.min(d,h/2,C/2),R=wo(S,A,h,C,N),p=document.createElementNS(t,"path");p.setAttribute("d",R),p.setAttribute("fill","none"),p.setAttribute("stroke","rgba(120, 125, 135, 0.6)"),p.setAttribute("stroke-width","1.5"),p.setAttribute("stroke-dasharray","8 4"),p.setAttribute("stroke-linecap","round"),p.setAttribute("filter","url(#__fork-removed-shadow)"),p.setAttribute("opacity","0"),r.appendChild(p),p.animate([{opacity:0,offset:0},{opacity:.6,offset:.08},{opacity:.05,offset:.45},{opacity:.6,offset:.85},{opacity:.05,offset:1}],{duration:5e3,easing:"ease-in-out",fill:"forwards"});}return n.appendChild(r),document.body.appendChild(n),n}function vi(e,t){if(e===t)return true;let n=Object.keys(e);if(n.length!==Object.keys(t).length)return false;for(let r of n)if(!Object.is(e[r],t[r]))return false;return true}var wi=sr__default.memo(function({component:t,containerRef:n,wrapperStyle:r,hostProps:o}){return jsx("div",{ref:n,style:r,children:jsx(t,{...o})})},(e,t)=>e.component===t.component&&vi(e.hostProps,t.hostProps)),or=class extends sr__default.Component{constructor(t){super(t),this.state={hasError:false};}static getDerivedStateFromError(){return {hasError:true}}componentDidCatch(t){console.error(`[Fork:${this.props.slotId}] fork render failed`,t);}componentDidUpdate(t){t.resetKey!==this.props.resetKey&&this.state.hasError&&this.setState({hasError:false});}render(){return this.state.hasError?this.props.fallback:this.props.children}};function So({slotId:e,children:t,githubRepo:n,shared:r,events:o,entityBindings:i}){ir(t,e);let a=Cn(e),{baseUrl:l,apiKey:d,appId:S,shouldSkipAnimation:A,markRevealSeen:h}=Ce(),[C,N]=useState(null),R=useRef(null),p=useRef(null),u=useRef(null),$=useRef(false),F=useRef(null),m=useRef(null),L=!!(r||o),U=useRef(null);L&&!U.current&&(U.current=new qt(e));let D=useRef(o);if(D.current=o,useEffect(()=>{if(L)return ()=>{U.current?.destroy(),U.current=null;}},[L,e]),L&&U.current&&r)for(let[_,x]of Object.entries(r))U.current.set(_,x);useEffect(()=>{if(!L)return;U.current||(U.current=new qt(e));let _=U.current,x=Object.keys(D.current||{}).map(O=>_.on(O,(...V)=>D.current?.[O]?.(...V)));return ()=>x.forEach(O=>O())},[L,e]),useEffect(()=>{if(ko.has(e))return;ko.add(e);let _={id:e,appId:S,label:e,eventsShape:"{ navigate?: string }",currentLayout:"",githubRepo:n,mode:"direct",sharedKeys:r?Object.keys(r):[],eventNames:o?Object.keys(o):[],propsShape:"",callbackNames:[],entityBindings:i||{}};fetch(`${l}/api/v1/slots`,{method:"POST",headers:{Authorization:`Bearer ${d}`,"Content-Type":"application/json"},body:JSON.stringify(_)}).catch(()=>{});},[e,l,d,n,S,i]);let P=a?.id||null;useEffect(()=>{if(a?.bundleUrl,R.current,p.current,!a?.bundleUrl||!P){return}let _=`${l}${a.bundleUrl.replace("bundle.js","component.js")}`,x=a.revealPending===true&&!rr.has(P),O=A(e),V=!O&&x;if(a.revealPending,O&&x&&(rr.add(P),h(a)),V&&p.current){let re=bo(p.current);u.current=re,$.current=true,`${e}${re.length}`;}window.__FORK_REACT__=sr__default,window.__FORK_REACT_DOM__=Ws,window.__FORK_REACT_JSX__=Js;let X=Date.now(),Y=`${l}${a.bundleUrl.replace("bundle.js","component.css")}?t=${X}`,G=document.createElement("link");G.rel="stylesheet",G.href=Y,G.dataset.forkSlot=e,document.head.appendChild(G);let Z=document.createElement("script");return Z.src=_+"?t="+X,Z.onload=()=>{let re=window.__FORK_EXPORT__;if(re?.default){if(p.current&&u.current&&$.current){let pe=p.current.getBoundingClientRect(),oe=p.current.cloneNode(true);oe.setAttribute("data-fork-clone-overlay","true"),oe.style.position="fixed",oe.style.top=`${pe.top}px`,oe.style.left=`${pe.left}px`,oe.style.width=`${pe.width}px`,oe.style.height=`${pe.height}px`,oe.style.flex="none",oe.style.minHeight="auto",oe.style.zIndex="9998",oe.style.pointerEvents="none",oe.style.overflow="hidden";let ye=getComputedStyle(p.current).backgroundColor;oe.style.backgroundColor=ye&&ye!=="rgba(0, 0, 0, 0)"&&ye!=="transparent"?ye:getComputedStyle(document.body).backgroundColor||"#ffffff",document.body.appendChild(oe);let te=p.current.querySelectorAll("*"),f=oe.querySelectorAll("*");for(let b=0;b<te.length;b++)te[b].scrollTop!==0&&(f[b].scrollTop=te[b].scrollTop),te[b].scrollLeft!==0&&(f[b].scrollLeft=te[b].scrollLeft);F.current=oe;}N(()=>re.default),R.current=P;}else console.error(`[Fork:${e}] component.js loaded but no default export found`);window.__FORK_EXPORT__=void 0;},Z.onerror=()=>{console.error(`[Fork:${e}] failed to load component.js`);},document.head.appendChild(Z),()=>{Z.remove(),G.remove(),m.current&&(clearTimeout(m.current),m.current=null),F.current&&(F.current.remove(),F.current=null);}},[P,l,e]),useEffect(()=>{if(!$.current||!C||!p.current){`${e}${$.current}`,p.current;return}let _=u.current;if(!_){return}requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!p.current)return;let x=bo(p.current),O=yi(_,x),V=ki(_,x),X=F.current;if(`${e}${O.length}${V.length}`,V.length>0&&X){let Y=bi(V);m.current=setTimeout(()=>{m.current=null;let G=400;X.animate([{opacity:1},{opacity:0}],{duration:G,fill:"forwards"}),Y.animate([{opacity:1},{opacity:0}],{duration:G,fill:"forwards"}),setTimeout(()=>{X.remove(),Y.remove(),F.current=null,O.length>0&&(vo(O));},G);},3500);}else X&&(X.remove(),F.current=null),O.length>0&&(vo(O));u.current=null,$.current=false,a&&P&&(rr.add(P),h(a),`${e}`);});});},[C]);let H={flex:1,minHeight:0,display:"flex",flexDirection:"column"};if(!a||a.status!=="complete"||!a.bundleUrl)return jsx("div",{ref:p,style:H,children:t});if(!C)return jsx("div",{ref:p,style:H,children:t});let z=t?.props??{};return jsx(or,{slotId:e,resetKey:P,fallback:jsx("div",{ref:p,style:H,children:t}),children:jsx(wi,{component:C,containerRef:p,wrapperStyle:H,hostProps:z})})}var Fo=new Set;function Fi(e){return `{ ${Object.entries(e).map(([n,r])=>r==null?`${n}: unknown`:Array.isArray(r)?`${n}: ${r.length>0?typeof r[0]:"unknown"}[]`:`${n}: ${typeof r}`).join("; ")} }`}function Ao(e,t=new Set){return Children.forEach(e,n=>{if(!isValidElement(n))return;let r=n.props;for(let[o,i]of Object.entries(r))typeof i=="function"&&/^on[A-Z]/.test(o)&&t.add(o);r.children&&Ao(r.children,t);}),t}function Ai({slotId:e,props:t,children:n,allowedFetches:r,entityBindings:o,githubRepo:i,callbacks:a,mode:l="iframe",shared:d,events:S}){if(ir(n,e),l==="direct")return jsx(So,{slotId:e,githubRepo:i,shared:d,events:S,entityBindings:o,children:n});let A=Cn(e),{baseUrl:h,apiKey:C,appId:N,userId:R,userHash:p,currentContainerId:u}=Ce(),$=useRef(null),F=useRef(false),m=useRef(null),L=useRef(a);L.current=a;let U=useRef(t);U.current=t;let D=useRef(r);D.current=r,useEffect(()=>{if(typeof process<"u")return;let z=Ao(n),_=new Set(a?Object.keys(a):[]),x=[...z].filter(O=>!_.has(O));x.length>0&&console.error(`[ForkSlot:${e}] Missing bridged callbacks! The following callback props are used by children but not passed to ForkSlot's \`callbacks\` prop:
2
- `+x.map(O=>` - ${O}`).join(`
3
- `)+"\n\nThe forked component will not be able to call these. Add them to the `callbacks` prop of <ForkSlot>.");},[e,n,a]),useEffect(()=>{Fo.has(e)||(Fo.add(e),fetch(`${h}/api/v1/slots`,{method:"POST",headers:{Authorization:`Bearer ${C}`,"Content-Type":"application/json"},body:JSON.stringify({id:e,appId:N,label:e,propsShape:t?Fi(t):"",eventsShape:"{ navigate?: string }",currentLayout:"",githubRepo:i,callbackNames:a?Object.keys(a):[],mode:l||"iframe",entityBindings:o||{}})}).catch(()=>{}));},[e,h,C,i,N,o]);let P=useCallback(z=>{let _=$.current;if(_?.contentWindow&&F.current){let x=L.current?Object.keys(L.current):[];_.contentWindow.postMessage({type:"slot:props",props:z,callbackNames:x},"*"),m.current=null;}else m.current=z;},[]),H=useCallback((z,_)=>{let x=D.current;return !x||x.length===0?false:x.some(O=>{let[V,X]=O.split(" "),Y=_.split("?")[0];return z.toUpperCase()===V.toUpperCase()&&Y.startsWith(X)})},[]);if(useEffect(()=>{if(!A?.bundleUrl)return;let z=async _=>{if(_.source===$.current?.contentWindow){if(_.data?.type==="slot:ready")F.current=true,$.current?.contentWindow?.postMessage({type:"slot:allowed-fetches",paths:D.current||[]},"*"),D.current,m.current?P(m.current):P(U.current||{});else if(_.data?.type==="slot:event"){let x=_.data.event;x?.navigate&&(window.location.hash=x.navigate);}else if(_.data?.type==="slot:clipboard-write")navigator.clipboard.writeText(_.data.text).catch(x=>{console.warn(`[ForkSlot:${e}] clipboard write failed:`,x.message);});else if(_.data?.type==="slot:callback"){let{name:x,args:O}=_.data,V=L.current?.[x];V?(V(...O||[])):console.warn(`[ForkSlot:${e}] unknown callback: ${x}`);}else if(_.data?.type==="slot:fetch"){let{id:x,method:O,url:V,body:X}=_.data,Y=$.current?.contentWindow;if(!Y)return;let G=O||"GET";if(!H(G,V)){console.warn(`[ForkSlot:${e}] BLOCKED fetch #${x}: ${G} ${V} \u2014 not in allowedFetches`),Y.postMessage({type:"slot:fetch-response",id:x,error:`Fetch not allowed: ${G} ${V}`},"*");return}try{let Z={method:G};X&&G!=="GET"&&(Z.headers={"Content-Type":"application/json"},Z.body=JSON.stringify(X));let re=await fetch(V,Z),pe=await re.json();`${e}${x}${re.status}`,Y.postMessage({type:"slot:fetch-response",id:x,data:pe,status:re.status},"*");}catch(Z){console.error(`[ForkSlot:${e}] fetch #${x} failed:`,Z.message),Y.postMessage({type:"slot:fetch-response",id:x,error:Z.message},"*");}}else if(_.data?.type==="slot:fork-data"){let{id:x,path:O,method:V,body:X}=_.data,Y=$.current?.contentWindow;if(!Y)return;if(!u||!N){Y.postMessage({type:"slot:fork-data-response",id:x,error:"Fork data is unavailable until appId and containerId are resolved"},"*");return}let G=typeof O=="string"&&O.startsWith("/")?O:`/${String(O||"")}`,Z=G.startsWith("/api/v1/data")?G:`/api/v1/data${G}`;try{let re={Authorization:`Bearer ${C}`,"Content-Type":"application/json","X-Fork-App-Id":N,...fe()};R&&(re["X-Fork-User-Id"]=R),p&&(re["X-Fork-User-Hash"]=p);let pe=typeof V=="string"?V.toUpperCase():"POST",oe=new URL(`${h}${Z}`),ye={method:pe,headers:re};pe==="GET"?(oe.searchParams.set("appId",N),oe.searchParams.set("containerId",u)):ye.body=JSON.stringify({appId:N,containerId:u,...X&&typeof X=="object"?X:{}});let te=await fetch(oe.toString(),ye),f=await te.json().catch(()=>({}));if(!te.ok){let b=typeof f?.error=="string"?f.error:`Fork data API ${te.status}`;Y.postMessage({type:"slot:fork-data-response",id:x,error:b,status:te.status},"*");return}Y.postMessage({type:"slot:fork-data-response",id:x,data:f,status:te.status},"*");}catch(re){Y.postMessage({type:"slot:fork-data-response",id:x,error:re.message},"*");}}}};return window.addEventListener("message",z),()=>{window.removeEventListener("message",z),F.current=false;}},[A?.bundleUrl,e,P,H,u,N,C,h,p,R]),useEffect(()=>{A?.bundleUrl&&F.current&&P(t||{});},[t,A?.bundleUrl,P]),!A||A.status!=="complete"||!A.bundleUrl)return `${e}${A?.status||"none"}${A?.bundleUrl||"none"}`,jsx(Fragment,{children:n});`${e}${A.bundleUrl}`;let B=`${h}${A.bundleUrl.replace("/bundle.js","/host")}`;return jsx("iframe",{ref:$,src:B,sandbox:"allow-scripts allow-same-origin allow-forms allow-clipboard-write",title:`Forked ${e}`,style:{width:"100%",border:"none",flex:1,minHeight:0}})}function $n({style:e={width:20,height:20},...t}){return jsxs("svg",{viewBox:"320 95 270 345",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:e,...t,children:[jsx("path",{stroke:"currentColor",strokeWidth:"30",strokeLinejoin:"round",strokeLinecap:"round",d:"M357.789 145.428c0-16.186 13.121-29.307 29.307-29.307 7.773 0 15.227 3.088 20.723 8.584 5.496 5.496 8.584 12.95 8.584 20.723 0 16.186-13.121 29.307-29.307 29.307s-29.307-13.121-29.307-29.307z"}),jsx("path",{stroke:"currentColor",strokeWidth:"30",strokeLinejoin:"round",strokeLinecap:"round",d:"M387.096 174.735v188"}),jsx("path",{stroke:"currentColor",strokeWidth:"30",strokeLinejoin:"round",strokeLinecap:"round",d:"M357.789 394.572c0-16.186 13.121-29.307 29.307-29.307 7.773 0 15.227 3.088 20.723 8.584 5.496 5.496 8.584 12.95 8.584 20.723 0 16.186-13.121 29.307-29.307 29.307s-29.307-13.121-29.307-29.307z"}),jsx("path",{stroke:"currentColor",strokeWidth:"30",strokeLinejoin:"round",strokeLinecap:"round",d:"M388.739 319c10.168-6.317 43.997-26.932 61.009-37.9 17.012-10.968 31.758-19.978 41.064-27.91 9.305-7.931 11.782-14.213 14.767-19.679 2.985-5.465 3.014-8.99 3.141-13.114.128-4.124-.999-8.178-2.377-11.632-1.378-3.454-3.563-6.55-5.889-9.094-2.326-2.543-4.98-4.679-8.066-6.167-3.085-1.488-6.624-2.601-10.448-2.76-3.823-.159-8.624.2-12.495 1.806-3.871 1.607-8.047 4.68-10.732 7.835-2.685 3.156-4.446 7.448-5.378 11.099-.932 3.651-.742 7.485-.213 10.807.528 3.322 1.864 6.46 3.386 9.123 1.523 2.663 3.543 4.843 5.75 6.854 2.207 2.011 4.38 3.914 7.491 5.214 3.111 1.3 6.57 2.808 11.178 2.584 4.607-.225 9.363-.471 16.466-3.932 7.103-3.46 16.076-5.382 26.154-16.831 10.077-11.449 28.593-43.219 34.312-51.862"}),jsx("path",{fill:"currentColor",stroke:"currentColor",strokeWidth:"1",strokeLinejoin:"round",d:"M527.117 162.547L570.487 134.368Q577.196 130.009 577.624 137.997L580.39 189.69Q580.818 197.678 573.69 194.047L527.536 170.538Q520.408 166.907 527.117 162.547Z"})]})}var Ro=5600,lr=2147483002;function Ti(e){return !e||e.state!=="complete"||!e.latest?null:`${e.latest.id}:${e.latest.completedAt??e.latest.updatedAt}`}function $i(){return typeof document>"u"?false:!!document.querySelector("[data-fork-clone-overlay], [data-fork-removed], [data-fork-highlights]")}function cr(e,t){let n=Math.min(e.length,t?26:34)*7.4,r=t?Math.min(t.length,24)*6.8+10:0;return Math.round(Math.min(390,Math.max(116,56+n+r)))}function Mi(e,t=false){return e?.state==="complete"&&e.unreadCompletedCount>0?e.unreadCompletedCount>1?`${e.unreadCompletedCount} forks ready`:`${e.label} ready`:t?"Fork update ready":void 0}function dr({onClick:e,hasNotification:t=false,activity:n}){let[r,o]=useState(false),[i,a]=useState(false),[l,d]=useState(null),[S,A]=useState(null),[h,C]=useState(null),N=useRef(0),R=r?48:40,p=Ti(n),u=!!(p&&n?.state==="complete"&&n.unreadCompletedCount>0),$=u?p:S?.key??null,F=!!(n&&n.state==="running"&&n.runningCount>0),m=!!($&&$!==l&&(u||S)),L=F||m,U=u?n?.label:S?.label,D=m?"Built":n?.label??"Fork this app",P=m?U:n?.detail,H=cr(n?.label??"Fork this app",n?.detail),B=cr(D,P),z=m?Math.min(420,Math.max(326,B,S?.width??0,N.current+40)):B,_=m?46:40,x=L?[D,P].filter(Boolean).join(" "):Mi(n,t)??"Fork this app",O=L?`${D}:${P??""}`:"idle",V=(t||n?.state==="complete"&&n.unreadCompletedCount>0)&&!L;useEffect(()=>{if(typeof document>"u")return;let te=document.createElement("div");return te.setAttribute("data-fork-button-host","true"),te.style.position="relative",te.style.zIndex=String(lr),document.body.appendChild(te),C(te),()=>{te.remove(),C(null);}},[]),useEffect(()=>{F&&(N.current=H);},[H,F]),useEffect(()=>{!u||!p||!n?.label||A(te=>{if(te?.key===p)return te;let f=Math.min(420,Math.max(326,cr("Built",n.label),N.current+40));return {key:p,label:n.label,width:f,startedAt:Date.now()}});},[n?.label,p,u]),useEffect(()=>{n&&n.unreadCompletedCount===0&&n.state!=="running"&&A(null);},[n,n?.state,n?.unreadCompletedCount]),useEffect(()=>{if(!$||!m||$===l)return;let te,f=S?.key===$?S.startedAt:Date.now(),b=()=>{let E=Date.now()-f;if(E>=Ro&&!$i()||E>=Ro*3){d($);return}te=window.setTimeout(b,250);};return te=window.setTimeout(b,250),()=>{te!==void 0&&window.clearTimeout(te);}},[$,l,S?.key,S?.startedAt,m]);let X=L?{position:"fixed",bottom:24,right:24,zIndex:lr,width:`min(${z}px, calc(100vw - 32px))`,height:_,minWidth:0,maxWidth:"calc(100vw - 32px)",borderRadius:m?12:999,backgroundColor:r?"#ffffff":"rgba(255, 255, 255, 0.92)",border:"1px solid rgba(148, 163, 184, 0.42)",display:"inline-flex",alignItems:"center",justifyContent:m?"flex-start":"center",gap:m?10:8,color:"#111827",boxShadow:r?"0 12px 24px -16px rgba(15, 23, 42, 0.45), 0 4px 10px -6px rgba(15, 23, 42, 0.25)":"0 10px 20px -18px rgba(15, 23, 42, 0.35), 0 2px 7px -5px rgba(15, 23, 42, 0.18)",transform:i?"scale(0.98)":"scale(1)",transition:"width 320ms cubic-bezier(0.16, 1, 0.3, 1), height 320ms cubic-bezier(0.16, 1, 0.3, 1), border-radius 320ms cubic-bezier(0.16, 1, 0.3, 1), transform 180ms ease, box-shadow 180ms ease, background-color 180ms ease, border-color 180ms ease",cursor:"pointer",padding:m?"0 16px 0 14px":"0 13px 0 11px",margin:0,outline:"none",boxSizing:"border-box",fontFamily:'Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif'}:{position:"fixed",bottom:24,right:24,zIndex:lr,width:R,height:R,borderRadius:"50%",backgroundColor:r?"rgba(255, 255, 255, 1)":"rgba(255, 255, 255, 0.3)",border:r?"1px solid rgba(156, 163, 175, 1)":"1px solid rgba(156, 163, 175, 0.3)",display:"flex",alignItems:"center",justifyContent:"center",color:r?"#111827":"rgba(17, 24, 39, 0.5)",boxShadow:r?"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)":"0 1px 2px 0 rgba(0, 0, 0, 0.05)",transform:i?"scale(0.95)":"scale(1)",transition:"width 320ms cubic-bezier(0.16, 1, 0.3, 1), height 320ms cubic-bezier(0.16, 1, 0.3, 1), border-radius 320ms cubic-bezier(0.16, 1, 0.3, 1), transform 180ms ease, box-shadow 180ms ease, background-color 180ms ease, border-color 180ms ease, color 180ms ease",cursor:"pointer",padding:0,margin:0,outline:"none",boxSizing:"border-box"},Y={minWidth:0,maxWidth:F?286:m?82:P?116:238,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:13,fontWeight:650,lineHeight:"16px",letterSpacing:0},G={minWidth:0,maxWidth:m?278:void 0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flexShrink:m?1:0,color:"#64748b",fontSize:F?13:12,fontWeight:650,lineHeight:"16px",letterSpacing:0},Z={minWidth:0,flex:m?1:void 0,display:"inline-flex",alignItems:"center",justifyContent:m?"flex-start":void 0,gap:8,animation:"__forkButtonTextSwap 220ms ease-out"},re={width:8,height:8,borderRadius:"50%",backgroundColor:n?.state==="complete"?"#16a34a":"#ef4444",boxShadow:n?.state==="complete"?"0 0 0 3px rgba(22, 163, 74, 0.14)":"none",animation:m?"__forkButtonBuiltDot 420ms ease-out":void 0,flexShrink:0},ye=jsxs(Fragment,{children:[jsx("style",{children:`
1
+ import*as ar from'react';import ar__default,{createContext,useState,useRef,useEffect,useCallback,Fragment as Fragment$1,useMemo,startTransition,Children,useContext,isValidElement}from'react';import*as Vs from'react-dom';import {createPortal}from'react-dom';import*as Xs from'react/jsx-runtime';import {jsx,Fragment,jsxs}from'react/jsx-runtime';import*as qs from'react/jsx-dev-runtime';import {ChevronLeft,ChevronDown,Check,PictureInPicture,PictureInPicture2,X,MoreHorizontal,MousePointer2,BadgeCheck,Undo2,RotateCcw,ImagePlus,Mic,ArrowUp,Loader2,AlertCircle,Sparkles,Package,Wrench,MessageSquare,Code,Terminal,FileSearch,Pencil}from'lucide-react';var wt="__FORK_SHARED__";function Zn(){var t,n,r,o;let e=globalThis;return e[wt]||(e[wt]={}),(t=e[wt]).react||(t.react=ar),(n=e[wt])["react-dom"]||(n["react-dom"]=Vs),(r=e[wt])["react/jsx-runtime"]||(r["react/jsx-runtime"]=Xs),(o=e[wt])["react/jsx-dev-runtime"]||(o["react/jsx-dev-runtime"]=qs),e[wt]}function Qn(e){return Object.assign(Zn(),e)}var go=false,er=null,tr=null;function mo(e,t,n){go=e,er=t,tr=n;}function ue(){if(!go)return {};let e={};return er&&(e["X-Fork-App-Id"]=er),tr&&(e["X-Fork-Container-Id"]=tr),e}async function nr(e){let t=new URLSearchParams({app:e.appId,user:e.userId});e.containerId&&t.set("containerId",e.containerId);let n=`${e.baseUrl}/api/v1/manifest?${t.toString()}`,r={Authorization:`Bearer ${e.apiKey}`,"X-Fork-App-Id":e.appId,"X-Fork-User-Id":e.userId,...e.extraHeaders??{}};e.userHash&&(r["X-Fork-User-Hash"]=e.userHash),e.userJwt&&(r["X-Fork-User-Jwt"]=e.userJwt),e.previous?.etag&&(r["If-None-Match"]=e.previous.etag);let o=await fetch(n,{headers:r,signal:e.signal});if(o.status===304)return null;if(!o.ok)throw new Error(`manifest ${o.status} ${o.statusText}`);let i=await o.json(),a={};for(let[l,u]of Object.entries(i.modules)){let w=u.moduleUrl??u.bundleUrl??null,A=u.legacyModuleUrl??u.legacyBundleUrl??null;a[l]={forkId:u.forkId,moduleUrl:w,legacyModuleUrl:A,bundleUrl:u.bundleUrl??w,legacyBundleUrl:u.legacyBundleUrl??A,cssUrls:u.cssUrls??[],integrity:u.integrity,metadata:u.metadata,highlightHint:u.highlightHint,buildId:u.buildId,updatedAt:u.updatedAt};}return {containerId:i.containerId,forksPaused:!!i.forksPaused,slots:i.slots,modules:a,generatedAt:i.generatedAt,etag:o.headers.get("ETag")??void 0}}var Gs="fork:manifest:v1";function rr(e,t,n){return `${Gs}:${e}:${t}:${n}`}function Ys(e,t,n){if(typeof window>"u")return null;try{let r=window.localStorage.getItem(rr(e,t,n));return r?JSON.parse(r):null}catch{return null}}function Zs(e,t,n,r){if(!(typeof window>"u"))try{window.localStorage.setItem(rr(e,t,n),JSON.stringify(r));}catch{}}function Qs(e,t,n){if(!(typeof window>"u"))try{window.localStorage.removeItem(rr(e,t,n));}catch{}}function ei(e,t){if(!e||!t)return e!==t;if(e.containerId!==t.containerId||!!e.forksPaused!=!!t.forksPaused)return true;let n=Object.entries(e.slots),r=Object.entries(t.slots);if(n.length!==r.length)return true;for(let[a,l]of n){let u=t.slots[a];if(!u||u.forkId!==l.forkId||u.buildId!==l.buildId)return true}let o=Object.entries(e.modules),i=Object.entries(t.modules);if(o.length!==i.length)return true;for(let[a,l]of o){let u=t.modules[a];if(!u||u.forkId!==l.forkId||u.buildId!==l.buildId)return true}return false}var In={isAdmin:false,actingUserId:null,containerId:null,containerName:null,containers:[]},ko=createContext(null),ri=12e3,oi=45e3,ho="fork:activity:v1",si=new Set(["pending","running","building"]),ii="Setting up environment";function je(e){return si.has(e)}function ai(e,t){return t?.targetId?t:e.boundaryId?{targetKind:"module",targetId:e.boundaryId}:e.slotId?{targetKind:"slot",targetId:e.slotId}:null}function li(e,t){let n=ai(e,t);if(!n)return null;let r=new Date().toISOString();return {id:e.id,status:e.status,targetKind:n.targetKind,targetId:n.targetId,summary:e.summary??null,estimateMinutes:e.estimateMinutes??null,createdAt:e.createdAt||r,updatedAt:e.completedAt||r,completedAt:e.completedAt??null}}function yo(e){return {id:e.id,status:e.status,targetKind:e.targetKind,targetId:e.targetId,summary:e.summary??null,estimateMinutes:e.estimateMinutes??null,promptCount:e.promptCount,messageCount:e.messageCount,isActive:e.isActive,createdAt:e.createdAt,updatedAt:e.updatedAt,completedAt:e.completedAt??null,lastFeatureCompletedAt:e.lastFeatureCompletedAt??null}}function En(e,t){let n=typeof t.summary=="string"&&t.summary.trim()?t.summary.trim():void 0,r=typeof e?.summary=="string"&&e.summary.trim()?e.summary.trim():void 0,o=typeof t.estimateMinutes=="number"&&Number.isFinite(t.estimateMinutes)?t.estimateMinutes:void 0,i=typeof e?.estimateMinutes=="number"&&Number.isFinite(e.estimateMinutes)?e.estimateMinutes:void 0;return {...e,...t,summary:n??r??null,estimateMinutes:o??i??null,latestMessage:t.latestMessage??e?.latestMessage??null,unread:t.unread??e?.unread??false}}function Zt(e){return `${e.id}:${e.lastFeatureCompletedAt||e.completedAt||e.updatedAt}`}function St(e){if(typeof window>"u")return new Set;try{let t=window.localStorage.getItem(e);if(!t)return new Set;let n=JSON.parse(t);return Array.isArray(n)?new Set(n.filter(r=>typeof r=="string")):new Set}catch{return new Set}}function xt(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(e,JSON.stringify([...t].slice(-200)));}catch{}}function ci(e){if(e.estimateMinutes)return `~${e.estimateMinutes}m`}function di(e){let t=e.data&&typeof e.data=="object"?e.data:{};if(e.type==="status"){let n=typeof t.status=="string"?t.status:"running",r=typeof t.summary=="string"?t.summary:void 0;return {status:n,latestMessage:je(n)?"Building":void 0,summary:r,estimateMinutes:typeof t.estimateMinutes=="number"?t.estimateMinutes:void 0,updatedAt:e.timestamp}}return e.type==="tool_use"?{status:"running",latestMessage:"Building",updatedAt:e.timestamp}:e.type==="build_start"?{status:"building",latestMessage:"Building",updatedAt:e.timestamp}:e.type==="build_complete"?{status:"building",latestMessage:"Building",updatedAt:e.timestamp}:e.type==="complete"?{status:"complete",summary:typeof t.summary=="string"?t.summary:void 0,estimateMinutes:typeof t.estimateMinutes=="number"?t.estimateMinutes:void 0,latestMessage:"Fork ready",completedAt:e.timestamp,updatedAt:e.timestamp}:e.type==="error"||e.type==="build_error"?{status:"error",latestMessage:typeof t.error=="string"?t.error:typeof t.message=="string"?t.message:"Fork failed",updatedAt:e.timestamp}:{updatedAt:e.timestamp}}function ui(e){let t=e.filter(o=>je(o.status)),n=e.filter(o=>o.status==="complete"&&o.unread),r=[...e].sort((o,i)=>Date.parse(i.updatedAt)-Date.parse(o.updatedAt))[0]??null;if(t.length>1)return {state:"running",label:`${t.length} forks running`,count:t.length,runningCount:t.length,unreadCompletedCount:n.length,latest:t[0]};if(t.length===1){let o=t[0],i=!!(typeof o.summary=="string"&&o.summary.trim());return {state:"running",label:i?o.summary.trim():ii,detail:i?ci(o):void 0,count:1,runningCount:1,unreadCompletedCount:n.length,latest:o}}if(n.length>1)return {state:"complete",label:`${n.length} forks ready`,count:n.length,runningCount:0,unreadCompletedCount:n.length,latest:n[0]};if(n.length===1){let o=n[0];return {state:"complete",label:o.summary||"Fork ready",count:1,runningCount:0,unreadCompletedCount:1,latest:o}}return {state:r?.status==="error"?"error":"idle",label:"Fork",count:0,runningCount:0,unreadCompletedCount:0,latest:r}}function or(e,t){if(!t)return t;try{return new URL(t,`${e.replace(/\/+$/,"")}/`).toString()}catch{return t}}function fi(e,t,n,r){let o={};for(let[i,a]of Object.entries(t.slots)){let l=a.bundleUrl??a.legacyBundleUrl;l&&(o[i]={id:a.forkId,userId:n,prompt:"",status:"complete",slotId:i,appId:r,bundleUrl:or(e,l),revealPending:a.revealPending===true,createdAt:a.updatedAt,completedAt:a.updatedAt});}return o}function pi(e,t){let n={};for(let[r,o]of Object.entries(t.modules)){let i=o.moduleUrl??o.legacyModuleUrl??o.bundleUrl??"";i&&(n[r]={id:o.forkId,boundaryId:r,moduleUrl:or(e,i),cssUrls:(o.cssUrls??[]).map(a=>or(e,a)),integrity:o.integrity,metadata:o.metadata,highlightHint:o.highlightHint,createdAt:o.updatedAt});}return n}function gi(e){let{apiKey:t,baseUrl:n,children:r,appId:o,shared:i}=e,a="userId"in e?e.userId:void 0,l="userHash"in e?e.userHash:void 0,u="userJwt"in e?e.userJwt:void 0,w="authUrl"in e?e.authUrl:void 0,[A,b]=useState({}),[I,O]=useState(a?{userId:a,userHash:l,userJwt:u}:null),[R,p]=useState(!!a),[f,T]=useState(In),[x,k]=useState(false),[L,N]=useState(false),[K,_]=useState({}),[H,j]=useState(!o),[W,M]=useState(0),[S,U]=useState(null),[X,V]=useState(false),[Q,Z]=useState([]),[ee,fe]=useState(()=>typeof document>"u"?true:document.visibilityState!=="hidden"),de=useRef(new Map),oe=useRef(new Map),[me,te]=useState(0),pe=useRef(new Set),d=useRef(new Map),E=useRef(void 0),h=useRef(new Map),c=useRef([]),g=useRef(new Set),$=useRef(false);Zn(),useEffect(()=>{if(!o||!I?.userId||!(I.userHash||I.userJwt)){T(In),k(true);return}let m=false;k(false);let F=new URLSearchParams({app:o});return fetch(`${n}/api/v1/admin/containers?${F.toString()}`,{headers:{Authorization:`Bearer ${t}`,"X-Fork-App-Id":o,"X-Fork-User-Id":I.userId,...I.userHash?{"X-Fork-User-Hash":I.userHash}:{},...I.userJwt?{"X-Fork-User-Jwt":I.userJwt}:{}}}).then(async P=>P.status===403||!P.ok?null:P.json()).then(P=>{if(m)return;if(!P){T(In),k(true);return}let G=Array.isArray(P.containers)?P.containers:[],ie=P.currentContainerId??null,ae=G.find(ce=>ce.id===ie)?.name??null;T({isAdmin:true,actingUserId:typeof P.actingUserId=="string"?P.actingUserId:null,containerId:ie,containerName:ae,containers:G}),k(true);}).catch(()=>{m||(T(In),k(true));}),()=>{m=true;}},[t,o,I?.userHash,I?.userJwt,I?.userId,n]),useEffect(()=>{mo(f.isAdmin,o??null,f.containerId);},[f.isAdmin,f.containerId,o]);let B=useCallback((m,F)=>{T(P=>{if(!P.isAdmin)return P;let G=P.containers.find(ce=>ce.id===m),ie=F??G?.name??null,ae=G?P.containers.map(ce=>({...ce,isPrimary:ce.id===m})):[{id:m,name:ie??"New container",isPrimary:true,forkCount:0},...P.containers.map(ce=>({...ce,isPrimary:false}))];return {...P,containerId:m,containerName:ie,containers:ae}}),N(false);},[]);i&&E.current!==i&&(Qn(i),E.current=i),useEffect(()=>{w&&(p(false),fetch(w,{credentials:"include"}).then(m=>{if(!m.ok)throw new Error(`Auth endpoint returned ${m.status}`);return m.json()}).then(m=>{if(!m.userId||typeof m.userId!="string")throw new Error("authUrl response must include userId");O({userId:m.userId,userHash:typeof m.userHash=="string"?m.userHash:void 0,userJwt:typeof m.userJwt=="string"?m.userJwt:void 0});}).catch(m=>{console.error("[ForkProvider] Failed to fetch user identity from authUrl:",m.message);}).finally(()=>{p(true);}));},[w]),useEffect(()=>{!w&&a&&(O({userId:a,userHash:l,userJwt:u}),p(true));},[a,l,u,w]);let D=I?.userId??"",Y=I?.userHash,ft=I?.userJwt,ve=!!o,Pe=useCallback(async()=>{if(!ve){U(null),V(false),_({}),j(true),M(F=>F+1);return}if(!R){j(false);return}if(!D||!o){U(null),V(false),b({}),_({}),j(true),M(F=>F+1);return}j(false);let m=f.isAdmin?f.containerId:null;if(f.isAdmin&&L){V(true),b({}),_({}),M(F=>F+1),j(true);return}try{let F=await nr({baseUrl:n,apiKey:t,appId:o,userId:D,userHash:Y,userJwt:ft,containerId:m??void 0});F&&(U(F.containerId),V(f.isAdmin?!1:!!F.forksPaused),b(fi(n,F,D,o)),_(pi(n,F)));}catch(F){console.error("[ForkProvider] Failed to fetch fork manifest:",F.message),U(null),V(false),b({}),_({});}finally{M(F=>F+1),j(true);}},[t,o,n,R,ve,Y,ft,D,f.isAdmin,f.containerId,L]);useEffect(()=>{if(!D||o)return;let m=new URLSearchParams({userId:D});Y&&m.set("userHash",Y),fetch(`${n}/api/v1/forks/active?${m.toString()}`,{headers:{Authorization:`Bearer ${t}`,...ue()}}).then(F=>{if(!F.ok)throw new Error(`${F.status}`);return F.json()}).then(F=>{F&&typeof F=="object"&&b(F);}).catch(()=>{});},[t,o,D,Y,n]),useEffect(()=>{Pe();},[Pe]);let gn=useCallback(async m=>{if(o){if(f.isAdmin){N(m),V(m),m?(b({}),_({}),M(F=>F+1)):await Pe();return}if(D){V(m),m&&(b({}),_({}),M(F=>F+1));try{let F=await fetch(`${n}/api/v1/containers/primary/paused`,{method:"PUT",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json","X-Fork-App-Id":o},body:JSON.stringify({appId:o,paused:m,userId:D,userHash:Y})});if(!F.ok)throw new Error(`${F.status}`);m||await Pe();}catch(F){console.error("[ForkProvider] Failed to persist fork pause state:",F?.message??F),Pe().catch(()=>{});}}}},[t,o,n,Pe,f.isAdmin,Y,D]),Ce=useCallback((m,F)=>{b(P=>({...P,[m]:F}));},[]),mn=useCallback(m=>{b(F=>{let P={...F};return delete P[m],P});},[]),tt=useCallback(m=>{pe.current.add(m);},[]),pt=useCallback(m=>pe.current.has(m)?(pe.current.delete(m),true):false,[]),gt=useCallback(m=>{if(m.slotId&&b(P=>{let G=P[m.slotId];return !G||G.id!==m.id||!G.revealPending?P:{...P,[m.slotId]:{...G,revealPending:false}}}),f.isAdmin||!D)return;let F={Authorization:`Bearer ${t}`,"Content-Type":"application/json","X-Fork-User-Id":D};Y&&(F["X-Fork-User-Hash"]=Y),fetch(`${n}/api/v1/forks/reveals`,{method:"POST",headers:F,body:JSON.stringify({forkId:m.id,userId:D,userHash:Y})}).catch(()=>{});},[t,n,f.isAdmin,Y,D]),nt=useCallback((m,F)=>{d.current.set(m,F);},[]),mt=useCallback((m,F)=>d.current.get(m)!==F?false:(d.current.delete(m),true),[]),Fe=useCallback(m=>{if(!o)return;let F=JSON.stringify(m);de.current.get(m.id)===F||oe.current.get(m.id)?.signature===F||(oe.current.set(m.id,{boundary:m,signature:F}),te(G=>G+1));},[o]);useEffect(()=>{if(!o||oe.current.size===0)return;let m=setTimeout(()=>{let F=Array.from(oe.current.values());F.length!==0&&fetch(`${n}/api/v1/boundaries`,{method:"POST",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json"},body:JSON.stringify({appId:o,boundaries:F.map(P=>P.boundary)})}).then(P=>{if(!P.ok)throw new Error(`${P.status}`)}).then(()=>{for(let P of F)oe.current.get(P.boundary.id)?.signature===P.signature&&(oe.current.delete(P.boundary.id),de.current.set(P.boundary.id,P.signature));}).catch(P=>{console.error("[ForkProvider] Failed to register module boundaries:",P.message);});},50);return ()=>{clearTimeout(m);}},[t,o,n,me]);let Et=useCallback(m=>K[m],[K]),Ge=f.isAdmin?`admin:${f.actingUserId??"op"}`:D,Kt=`${t}:${o||"no-app"}:${S||"no-container"}:${Ge||"anonymous"}`,Ct=f.isAdmin?`op:${f.actingUserId??"op"}`:D,Tt=`${t}:${o||"no-app"}:${Ct||"anonymous"}`,Ne=`${ho}:seen:${Kt}`,we=`${ho}:tracked:${Kt}`;useEffect(()=>{c.current=Q;},[Q]);let Je=useCallback(()=>{let m={Authorization:`Bearer ${t}`,...ue()};return o&&(m["X-Fork-App-Id"]=o),D&&(m["X-Fork-User-Id"]=D),Y&&(m["X-Fork-User-Hash"]=Y),m},[t,o,Y,D]);useEffect(()=>{if(typeof window>"u")return;let m=window.__FORK_RUNTIME__,F={dataFetch:async(P,G,ie="POST")=>{if(!o||!S)throw new Error("Fork data is unavailable until appId and containerId are resolved");let ae=typeof P=="string"&&P.startsWith("/")?P:`/${String(P||"")}`,ce=ae.startsWith("/api/v1/data")?ae:`/api/v1/data${ae}`,Se=ie.toUpperCase(),$e=new URL(`${n}${ce}`),le={Authorization:`Bearer ${t}`,"Content-Type":"application/json","X-Fork-App-Id":o,...ue()};D&&(le["X-Fork-User-Id"]=D),Y&&(le["X-Fork-User-Hash"]=Y);let he={method:Se,headers:le};Se==="GET"?($e.searchParams.set("appId",o),$e.searchParams.set("containerId",S)):he.body=JSON.stringify({appId:o,containerId:S,...G&&typeof G=="object"?G:{}});let ye=await fetch($e.toString(),he),ke=await ye.json().catch(()=>({}));if(!ye.ok)throw new Error(typeof ke?.error=="string"?ke.error:`Fork data API ${ye.status}`);return ke}};return window.__FORK_RUNTIME__=F,()=>{window.__FORK_RUNTIME__===F&&(window.__FORK_RUNTIME__=m);}},[t,o,n,S,Y,D]);let Ve=useCallback(async()=>{if(!S||!x)return;let m=new URLSearchParams({container_id:S}),F=await fetch(`${n}/api/v1/forks?${m.toString()}`,{headers:Je()}).catch(()=>null);if(!F||!F.ok)return;let P=await F.json().catch(()=>({})),G=Array.isArray(P.forks)?P.forks:[],ie=St(Ne),ae=St(we),ce=false,Se=new Map(c.current.map(le=>[le.id,le])),$e=[];for(let le of G){let he=yo(le);je(he.status)&&!ae.has(he.id)&&(ae.add(he.id),ce=true);let ye=Se.get(he.id),ke=ye?je(ye.status):false,_e=Zt(he);he.status==="complete"&&(ae.has(he.id)||ke)&&!ie.has(_e)&&!g.current.has(_e)&&!ye?.unread&&($.current||ae.has(he.id)||ke)&&(g.current.add(_e),$e.push(he));}if(Z(le=>{let he=new Map(le.map(xe=>[xe.id,xe])),ye=new Set,ke=new Map;for(let xe of G){let Ae=yo(xe);ye.add(Ae.id);let Be=he.get(Ae.id),De=Be?je(Be.status):false,Mt=Zt(Ae),rt=Ae.status==="complete"&&(ae.has(Ae.id)||De)&&!ie.has(Mt),Kn=En(Be,{...Ae,unread:rt});ke.set(Ae.id,Kn);}for(let xe of le)ye.has(xe.id)||(je(xe.status)||xe.unread)&&ke.set(xe.id,xe);let _e=[...ke.values()].sort((xe,Ae)=>Date.parse(Ae.updatedAt)-Date.parse(xe.updatedAt));return c.current=_e,_e}),ce&&xt(we,ae),$e.length>0){for(let le of $e)le.targetKind==="module"&&nt(le.targetId,le.id);Pe().catch(()=>{});}$.current=true;},[Ne,we,x,n,Je,S,Pe,nt]),zn=useCallback((m,F)=>{let P=li(m,F);if(!P)return;let G=m.containerId??m._containerId;if(G&&!S&&U(G),je(P.status)){let ce=St(we);ce.has(P.id)||(ce.add(P.id),xt(we,ce)),V(false),f.isAdmin&&N(false);}let ie=new Map(c.current.map(ce=>[ce.id,ce]));ie.set(P.id,En(ie.get(P.id),P));let ae=[...ie.values()].sort((ce,Se)=>Date.parse(Se.updatedAt)-Date.parse(ce.updatedAt));c.current=ae,Z(ae);},[we,t,o,S,f.isAdmin]),$t=useCallback((m,F)=>{let P=di(F),G=St(Ne),ie=St(we),ae=c.current.find(ye=>ye.id===m),ce=ae?je(ae.status):false;P.status&&je(P.status)&&!ie.has(m)&&(ie.add(m),xt(we,ie));let Se=ae?En(ae,{...ae,...P}):null,$e=Se?Zt(Se):null,le=!!(Se&&Se.status==="complete"&&(ie.has(m)||ce)&&$e&&!G.has($e)&&!g.current.has($e)&&!ae?.unread),he=F.type==="complete"&&ae?.targetKind==="module"?ae.targetId:null;if(Z(ye=>{let ke=ye.find(De=>De.id===m);if(!ke)return ye;let _e=En(ke,{...ke,...P}),xe=_e.status==="complete"&&(ie.has(m)||je(ke.status))&&!G.has(Zt(_e)),Ae={..._e,unread:xe},Be=ye.map(De=>De.id===m?Ae:De).sort((De,Mt)=>Date.parse(Mt.updatedAt)-Date.parse(De.updatedAt));return c.current=Be,Be}),le&&Se&&$e&&g.current.add($e),F.type==="complete"){let ye=F.data&&typeof F.data=="object"?F.data:{},ke=typeof ye.boundaryId=="string"?ye.boundaryId:he;ke&&nt(ke,m),Pe().catch(()=>{});}},[Ne,we,Pe,nt]),Wt=useCallback(m=>{let F=St(Ne),P=St(we),G=false,ie=false;for(let ae of c.current){if(ae.status!=="complete"||m&&ae.id!==m)continue;let ce=Zt(ae);F.has(ce)||(F.add(ce),G=true),P.delete(ae.id)&&(ie=true);}Z(ae=>{let ce=ae.map(Se=>Se.status!=="complete"||m&&Se.id!==m?Se:{...Se,unread:false});return c.current=ce,ce}),G&&xt(Ne,F),ie&&xt(we,P);},[Ne,we]);useEffect(()=>{$.current=false,g.current.clear(),Z([]);for(let m of h.current.values())m.close();h.current.clear(),S&&Ve();},[S,Ve]),useEffect(()=>{if(typeof document>"u")return;let m=()=>{let F=document.visibilityState!=="hidden";fe(F),F&&S&&Ve();};return document.addEventListener("visibilitychange",m),window.addEventListener("focus",m),window.addEventListener("online",m),()=>{document.removeEventListener("visibilitychange",m),window.removeEventListener("focus",m),window.removeEventListener("online",m);}},[S,Ve]),useEffect(()=>{let m=Q.filter(G=>je(G.status));if(!S||m.length===0)return;let F=ee?ri:oi,P=window.setInterval(()=>{Ve();},F);return ()=>window.clearInterval(P)},[S,ee,Q,Ve]),useEffect(()=>{for(let m of h.current.values())m.close();h.current.clear();},[t,n,f.containerId,Y,D]),useEffect(()=>{let m=new Set(Q.filter(F=>je(F.status)).map(F=>F.id));for(let[F,P]of h.current.entries())m.has(F)||(P.close(),h.current.delete(F));for(let F of m){if(h.current.has(F))continue;let P=new URLSearchParams({key:t});D&&P.set("userId",D),Y&&P.set("userHash",Y),f.isAdmin&&f.containerId&&P.set("containerId",f.containerId);let G=new EventSource(`${n}/api/v1/forks/${F}/events?${P.toString()}`);G.onmessage=ie=>{try{$t(F,JSON.parse(ie.data));}catch{}},G.onerror=()=>{G.close(),h.current.delete(F);},h.current.set(F,G);}},[t,n,Q,f.isAdmin,f.containerId,$t,Y,D]),useEffect(()=>()=>{for(let m of h.current.values())m.close();h.current.clear();},[]);let ht=ui(Q),Te=useCallback(async()=>{if(!D)throw new Error("Reset requires a resolved user identity.");let m=new URLSearchParams({userId:D});Y&&m.set("userHash",Y);let F={Authorization:`Bearer ${t}`,...ue()};o&&(F["X-Fork-App-Id"]=o);let P=await fetch(`${n}/api/v1/forks/all?${m.toString()}`,{method:"DELETE",headers:F});if(!P.ok){let ie=await P.json().catch(()=>({}));throw new Error(ie.error||`API error: ${P.status}`)}let G=await P.json().catch(()=>({}));return b({}),_({}),j(true),M(ie=>ie+1),Z([]),g.current.clear(),xt(Ne,new Set),xt(we,new Set),pe.current.clear(),d.current.clear(),G},[Ne,we,t,o,n,Y,D]);return jsx(ko.Provider,{value:{apiKey:t,userId:D,userHash:Y,baseUrl:n,appId:o,forks:A,moduleOverridesEnabled:ve,moduleManifestReady:H,moduleManifestVersion:W,currentContainerId:S,forksPaused:X,setForksPaused:gn,forkActivities:Q,activitySummary:ht,adminContext:f,setAdminContainer:B,trackForkActivity:zn,recordForkActivityEvent:$t,markForkActivitySeen:Wt,refreshForkActivities:Ve,setSlotFork:Ce,clearSlotFork:mn,skipAnimationForSlot:tt,shouldSkipAnimation:pt,markRevealSeen:gt,queueBoundaryAnimation:nt,consumeBoundaryAnimation:mt,registerBoundary:Fe,getBoundaryOverride:Et,refreshModuleManifest:Pe,resetAllForks:Te,highlightScope:Tt},children:r})}function Ee(){let e=useContext(ko);if(!e)throw new Error("useForkContext must be used within <ForkProvider>");return e}function Cn(e){return Ee().forks[e]}var Qt=class{constructor(t){this.values=new Map;this.snapshots=new Map;this.listeners=new Map;this.eventHandlers=new Map;this.slotId=t,window.__FORK_BRIDGE__||(window.__FORK_BRIDGE__={}),window.__FORK_BRIDGE__[t]=this;}set(t,n){let r=this.values.get(t);if(Object.is(r,n))return;if(r!==void 0&&n!==null&&r!==null&&typeof r=="object"&&typeof n=="object")try{if(JSON.stringify(r)===JSON.stringify(n))return}catch{}this.values.set(t,n),this.snapshots.set(t,n);let o=this.listeners.get(t);o&&o.forEach(i=>i());}get(t){return this.values.get(t)}getSnapshot(t){return this.snapshots.get(t)}subscribe(t,n){return this.listeners.has(t)||this.listeners.set(t,new Set),this.listeners.get(t).add(n),()=>{this.listeners.get(t)?.delete(n);}}useValue(t){let n=window.__FORK_REACT__;return n?.useSyncExternalStore?n.useSyncExternalStore(r=>this.subscribe(t,r),()=>this.getSnapshot(t)):(console.warn("[ForkBridge] React.useSyncExternalStore not available, returning static value"),this.values.get(t))}emit(t,...n){let r=this.eventHandlers.get(t);r&&r.forEach(o=>o(...n));}on(t,n){return this.eventHandlers.has(t)||this.eventHandlers.set(t,new Set),this.eventHandlers.get(t).add(n),()=>{this.eventHandlers.get(t)?.delete(n);}}destroy(){this.listeners.clear(),this.eventHandlers.clear(),this.values.clear(),this.snapshots.clear();let t=window.__FORK_BRIDGE__;t&&delete t[this.slotId];}};var sr=new Set;function lr(e,t){let n;try{n=Children.only(e);}catch{let o=Children.count(e);throw new Error(`<ForkSlot slotId="${t}"> must wrap exactly one React component, got ${o} children. Wrap your slot's contents in a single named component, e.g. <ForkSlot slotId="${t}"><MyShell ...props /></ForkSlot>.`)}let r=n.type;if(typeof r=="string")throw new Error(`<ForkSlot slotId="${t}"> child must be a React component (function or class), not an HTML element <${r}>. Wrap your slot's contents in a single named component, e.g. <ForkSlot slotId="${t}"><MyShell ...props /></ForkSlot>.`);if(typeof r=="symbol")throw new Error(`<ForkSlot slotId="${t}"> child must be a single React component, not a fragment or special React element. Wrap your slot's contents in a single named component, e.g. <ForkSlot slotId="${t}"><MyShell ...props /></ForkSlot>.`);return n}var vo=new Set;function wo(e){let t=[],n=e.querySelectorAll("*");for(let r of n){if(!(r instanceof HTMLElement))continue;let o=r.getBoundingClientRect();if(o.width<10||o.height<10||["SCRIPT","STYLE","META","LINK"].includes(r.tagName))continue;let i=getComputedStyle(r),a=parseFloat(i.borderTopLeftRadius)||0;t.push({tag:r.tagName,className:r.className||"",text:(r.textContent||"").slice(0,50).trim(),rect:o,borderRadius:a});}return t}function bi(e,t){let n=[];for(let r of t)if(!e.find(i=>i.tag===r.tag&&i.className===r.className&&Math.abs(i.rect.top-r.rect.top)<20&&Math.abs(i.rect.left-r.rect.left)<20)&&!n.some(a=>r.rect.top>=a.rect.top&&r.rect.left>=a.rect.left&&r.rect.right<=a.rect.right&&r.rect.bottom<=a.rect.bottom)){for(let a=n.length-1;a>=0;a--){let l=n[a];l.rect.top>=r.rect.top&&l.rect.left>=r.rect.left&&l.rect.right<=r.rect.right&&l.rect.bottom<=r.rect.bottom&&n.splice(a,1);}n.push({rect:r.rect,borderRadius:r.borderRadius});}return n}function vi(e,t){let n=[];for(let r of e)if(!t.find(i=>i.tag===r.tag&&i.className===r.className&&Math.abs(i.rect.top-r.rect.top)<20&&Math.abs(i.rect.left-r.rect.left)<20)&&!n.some(a=>r.rect.top>=a.rect.top&&r.rect.left>=a.rect.left&&r.rect.right<=a.rect.right&&r.rect.bottom<=a.rect.bottom)){for(let a=n.length-1;a>=0;a--){let l=n[a];l.rect.top>=r.rect.top&&l.rect.left>=r.rect.left&&l.rect.right<=r.rect.right&&l.rect.bottom<=r.rect.bottom&&n.splice(a,1);}n.push({rect:r.rect,borderRadius:r.borderRadius});}return n}function xo(e,t,n,r,o){return o=Math.max(0,Math.min(o,n/2,r/2)),o===0?`M ${e} ${t} L ${e+n} ${t} L ${e+n} ${t+r} L ${e} ${t+r} Z`:[`M ${e+o} ${t}`,`L ${e+n-o} ${t}`,`A ${o} ${o} 0 0 1 ${e+n} ${t+o}`,`L ${e+n} ${t+r-o}`,`A ${o} ${o} 0 0 1 ${e+n-o} ${t+r}`,`L ${e+o} ${t+r}`,`A ${o} ${o} 0 0 1 ${e} ${t+r-o}`,`L ${e} ${t+o}`,`A ${o} ${o} 0 0 1 ${e+o} ${t}`,"Z"].join(" ")}function So(e){let t="http://www.w3.org/2000/svg",n=document.createElement("div");n.setAttribute("data-fork-highlights","true"),n.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;";let r=document.createElementNS(t,"svg");r.setAttribute("width","100%"),r.setAttribute("height","100%"),r.style.cssText="position:absolute;top:0;left:0;overflow:visible;";let o=document.createElementNS(t,"defs");r.appendChild(o);let i=[];for(let A=0;A<e.length;A++){let{rect:b,borderRadius:I}=e[A],O=b.left-.5,R=b.top-.5,p=b.width+1,f=b.height+1,T=Math.min(I+.5,p/2,f/2),x=xo(O,R,p,f,T),k=`__fork-glow-${A}`,L=document.createElementNS(t,"filter");L.setAttribute("id",k),L.setAttribute("x","-100%"),L.setAttribute("y","-100%"),L.setAttribute("width","300%"),L.setAttribute("height","300%");let N=document.createElementNS(t,"feGaussianBlur");N.setAttribute("in","SourceGraphic"),N.setAttribute("stdDeviation","8"),L.appendChild(N),o.appendChild(L);let K=`__fork-mask-${A}`,_=document.createElementNS(t,"mask");_.setAttribute("id",K),_.setAttribute("maskUnits","userSpaceOnUse"),_.setAttribute("x",String(O-200)),_.setAttribute("y",String(R-200)),_.setAttribute("width",String(p+400)),_.setAttribute("height",String(f+400));let H=document.createElementNS(t,"rect");H.setAttribute("x",String(O-200)),H.setAttribute("y",String(R-200)),H.setAttribute("width",String(p+400)),H.setAttribute("height",String(f+400)),H.setAttribute("fill","white"),_.appendChild(H);let j=document.createElementNS(t,"path");j.setAttribute("d",x),j.setAttribute("fill","black"),_.appendChild(j),o.appendChild(_);let W=document.createElementNS(t,"g");W.setAttribute("mask",`url(#${K})`),W.setAttribute("opacity","0");let M=document.createElementNS(t,"g");M.setAttribute("filter",`url(#${k})`);let S=document.createElementNS(t,"path");S.setAttribute("d",x),S.setAttribute("fill","none"),S.setAttribute("stroke","rgba(150, 185, 220, 0.6)"),S.setAttribute("stroke-width","6"),S.setAttribute("stroke-linecap","round"),M.appendChild(S),W.appendChild(M),r.appendChild(W);let U=document.createElementNS(t,"path");U.setAttribute("d",x),U.setAttribute("fill","none"),U.setAttribute("stroke","rgba(150, 185, 220, 0.35)"),U.setAttribute("stroke-width","2"),U.setAttribute("stroke-linecap","round"),U.setAttribute("opacity","0"),r.appendChild(U),i.push(S,U),S.__group=W;}n.appendChild(r),document.body.appendChild(n);let a=[];for(let A=0;A<i.length;A+=2){let b=i[A],I=i[A+1],O=b.__group,R=I.getTotalLength(),p=b.getTotalLength();if(R<=0)continue;let f=R*.35;I.setAttribute("stroke-dasharray",`${f} ${R-f}`),I.setAttribute("stroke-dashoffset","0"),a.push(I.animate([{strokeDashoffset:0,opacity:0,offset:0},{strokeDashoffset:-0.2*R,opacity:.92,offset:.06},{strokeDashoffset:-2*R,opacity:.92,offset:.92},{strokeDashoffset:-2.25*R,opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));let T=p*.35;b.setAttribute("stroke-dasharray",`${T} ${p-T}`),b.setAttribute("stroke-dashoffset","0"),a.push(b.animate([{strokeDashoffset:0,offset:0},{strokeDashoffset:-0.2*p,offset:.06},{strokeDashoffset:-2*p,offset:.92},{strokeDashoffset:-2.25*p,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"})),a.push(O.animate([{opacity:0,offset:0},{opacity:.92,offset:.06},{opacity:.92,offset:.92},{opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));}let l=false,u=()=>{if(l)return;l=true,clearTimeout(w);for(let b of a)try{b.cancel();}catch{}let A=n.animate([{opacity:1},{opacity:0}],{duration:400,fill:"forwards"});A.onfinish=()=>n.remove(),window.removeEventListener("click",u);},w=setTimeout(u,14500);return setTimeout(()=>{l||window.addEventListener("click",u);},500),u}function wi(e){let t="http://www.w3.org/2000/svg",n=document.createElement("div");n.setAttribute("data-fork-removed","true"),n.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;";let r=document.createElementNS(t,"svg");r.setAttribute("width","100%"),r.setAttribute("height","100%"),r.style.cssText="position:absolute;top:0;left:0;overflow:visible;";let o=document.createElementNS(t,"defs"),i=document.createElementNS(t,"filter");i.setAttribute("id","__fork-removed-shadow"),i.setAttribute("x","-10%"),i.setAttribute("y","-10%"),i.setAttribute("width","120%"),i.setAttribute("height","120%");let a=document.createElementNS(t,"feDropShadow");a.setAttribute("dx","0"),a.setAttribute("dy","1"),a.setAttribute("stdDeviation","2"),a.setAttribute("flood-color","rgba(0,0,0,0.15)"),i.appendChild(a),o.appendChild(i),r.appendChild(o);for(let{rect:l,borderRadius:u}of e){let w=l.left,A=l.top,b=l.width,I=l.height,O=Math.min(u,b/2,I/2),R=xo(w,A,b,I,O),p=document.createElementNS(t,"path");p.setAttribute("d",R),p.setAttribute("fill","none"),p.setAttribute("stroke","rgba(120, 125, 135, 0.6)"),p.setAttribute("stroke-width","1.5"),p.setAttribute("stroke-dasharray","8 4"),p.setAttribute("stroke-linecap","round"),p.setAttribute("filter","url(#__fork-removed-shadow)"),p.setAttribute("opacity","0"),r.appendChild(p),p.animate([{opacity:0,offset:0},{opacity:.6,offset:.08},{opacity:.05,offset:.45},{opacity:.6,offset:.85},{opacity:.05,offset:1}],{duration:5e3,easing:"ease-in-out",fill:"forwards"});}return n.appendChild(r),document.body.appendChild(n),n}function Si(e,t){if(e===t)return true;let n=Object.keys(e);if(n.length!==Object.keys(t).length)return false;for(let r of n)if(!Object.is(e[r],t[r]))return false;return true}var xi=ar__default.memo(function({component:t,containerRef:n,wrapperStyle:r,hostProps:o}){return jsx("div",{ref:n,style:r,children:jsx(t,{...o})})},(e,t)=>e.component===t.component&&Si(e.hostProps,t.hostProps)),ir=class extends ar__default.Component{constructor(t){super(t),this.state={hasError:false};}static getDerivedStateFromError(){return {hasError:true}}componentDidCatch(t){console.error(`[Fork:${this.props.slotId}] fork render failed`,t);}componentDidUpdate(t){t.resetKey!==this.props.resetKey&&this.state.hasError&&this.setState({hasError:false});}render(){return this.state.hasError?this.props.fallback:this.props.children}};function Fo({slotId:e,children:t,githubRepo:n,shared:r,events:o,entityBindings:i}){lr(t,e);let a=Cn(e),{baseUrl:l,apiKey:u,appId:w,shouldSkipAnimation:A,markRevealSeen:b}=Ee(),[I,O]=useState(null),R=useRef(null),p=useRef(null),f=useRef(null),T=useRef(false),x=useRef(null),k=useRef(null),L=!!(r||o),N=useRef(null);L&&!N.current&&(N.current=new Qt(e));let K=useRef(o);if(K.current=o,useEffect(()=>{if(L)return ()=>{N.current?.destroy(),N.current=null;}},[L,e]),L&&N.current&&r)for(let[M,S]of Object.entries(r))N.current.set(M,S);useEffect(()=>{if(!L)return;N.current||(N.current=new Qt(e));let M=N.current,S=Object.keys(K.current||{}).map(U=>M.on(U,(...X)=>K.current?.[U]?.(...X)));return ()=>S.forEach(U=>U())},[L,e]),useEffect(()=>{if(vo.has(e))return;vo.add(e);let M={id:e,appId:w,label:e,eventsShape:"{ navigate?: string }",currentLayout:"",githubRepo:n,mode:"direct",sharedKeys:r?Object.keys(r):[],eventNames:o?Object.keys(o):[],propsShape:"",callbackNames:[],entityBindings:i||{}};fetch(`${l}/api/v1/slots`,{method:"POST",headers:{Authorization:`Bearer ${u}`,"Content-Type":"application/json"},body:JSON.stringify(M)}).catch(()=>{});},[e,l,u,n,w,i]);let _=a?.id||null;useEffect(()=>{if(a?.bundleUrl,R.current,p.current,!a?.bundleUrl||!_){return}let M=`${l}${a.bundleUrl.replace("bundle.js","component.js")}`,S=a.revealPending===true&&!sr.has(_),U=A(e),X=!U&&S;if(a.revealPending,U&&S&&(sr.add(_),b(a)),X&&p.current){let fe=wo(p.current);f.current=fe,T.current=true,`${e}${fe.length}`;}window.__FORK_REACT__=ar__default,window.__FORK_REACT_DOM__=Vs,window.__FORK_REACT_JSX__=Xs;let V=Date.now(),Q=`${l}${a.bundleUrl.replace("bundle.js","component.css")}?t=${V}`,Z=document.createElement("link");Z.rel="stylesheet",Z.href=Q,Z.dataset.forkSlot=e,document.head.appendChild(Z);let ee=document.createElement("script");return ee.src=M+"?t="+V,ee.onload=()=>{let fe=window.__FORK_EXPORT__;if(fe?.default){if(p.current&&f.current&&T.current){let de=p.current.getBoundingClientRect(),oe=p.current.cloneNode(true);oe.setAttribute("data-fork-clone-overlay","true"),oe.style.position="fixed",oe.style.top=`${de.top}px`,oe.style.left=`${de.left}px`,oe.style.width=`${de.width}px`,oe.style.height=`${de.height}px`,oe.style.flex="none",oe.style.minHeight="auto",oe.style.zIndex="9998",oe.style.pointerEvents="none",oe.style.overflow="hidden";let me=getComputedStyle(p.current).backgroundColor;oe.style.backgroundColor=me&&me!=="rgba(0, 0, 0, 0)"&&me!=="transparent"?me:getComputedStyle(document.body).backgroundColor||"#ffffff",document.body.appendChild(oe);let te=p.current.querySelectorAll("*"),pe=oe.querySelectorAll("*");for(let d=0;d<te.length;d++)te[d].scrollTop!==0&&(pe[d].scrollTop=te[d].scrollTop),te[d].scrollLeft!==0&&(pe[d].scrollLeft=te[d].scrollLeft);x.current=oe;}O(()=>fe.default),R.current=_;}else console.error(`[Fork:${e}] component.js loaded but no default export found`);window.__FORK_EXPORT__=void 0;},ee.onerror=()=>{console.error(`[Fork:${e}] failed to load component.js`);},document.head.appendChild(ee),()=>{ee.remove(),Z.remove(),k.current&&(clearTimeout(k.current),k.current=null),x.current&&(x.current.remove(),x.current=null);}},[_,l,e]),useEffect(()=>{if(!T.current||!I||!p.current){`${e}${T.current}`,p.current;return}let M=f.current;if(!M){return}requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!p.current)return;let S=wo(p.current),U=bi(M,S),X=vi(M,S),V=x.current;if(`${e}${U.length}${X.length}`,X.length>0&&V){let Q=wi(X);k.current=setTimeout(()=>{k.current=null;let Z=400;V.animate([{opacity:1},{opacity:0}],{duration:Z,fill:"forwards"}),Q.animate([{opacity:1},{opacity:0}],{duration:Z,fill:"forwards"}),setTimeout(()=>{V.remove(),Q.remove(),x.current=null,U.length>0&&(So(U));},Z);},3500);}else V&&(V.remove(),x.current=null),U.length>0&&(So(U));f.current=null,T.current=false,a&&_&&(sr.add(_),b(a),`${e}`);});});},[I]);let H={flex:1,minHeight:0,display:"flex",flexDirection:"column"};if(!a||a.status!=="complete"||!a.bundleUrl)return jsx("div",{ref:p,style:H,children:t});if(!I)return jsx("div",{ref:p,style:H,children:t});let W=t?.props??{};return jsx(ir,{slotId:e,resetKey:_,fallback:jsx("div",{ref:p,style:H,children:t}),children:jsx(xi,{component:I,containerRef:p,wrapperStyle:H,hostProps:W})})}var Ro=new Set;function Ri(e){return `{ ${Object.entries(e).map(([n,r])=>r==null?`${n}: unknown`:Array.isArray(r)?`${n}: ${r.length>0?typeof r[0]:"unknown"}[]`:`${n}: ${typeof r}`).join("; ")} }`}function Io(e,t=new Set){return Children.forEach(e,n=>{if(!isValidElement(n))return;let r=n.props;for(let[o,i]of Object.entries(r))typeof i=="function"&&/^on[A-Z]/.test(o)&&t.add(o);r.children&&Io(r.children,t);}),t}function Ii({slotId:e,props:t,children:n,allowedFetches:r,entityBindings:o,githubRepo:i,callbacks:a,mode:l="iframe",shared:u,events:w}){if(lr(n,e),l==="direct")return jsx(Fo,{slotId:e,githubRepo:i,shared:u,events:w,entityBindings:o,children:n});let A=Cn(e),{baseUrl:b,apiKey:I,appId:O,userId:R,userHash:p,currentContainerId:f}=Ee(),T=useRef(null),x=useRef(false),k=useRef(null),L=useRef(a);L.current=a;let N=useRef(t);N.current=t;let K=useRef(r);K.current=r,useEffect(()=>{if(typeof process<"u")return;let W=Io(n),M=new Set(a?Object.keys(a):[]),S=[...W].filter(U=>!M.has(U));S.length>0&&console.error(`[ForkSlot:${e}] Missing bridged callbacks! The following callback props are used by children but not passed to ForkSlot's \`callbacks\` prop:
2
+ `+S.map(U=>` - ${U}`).join(`
3
+ `)+"\n\nThe forked component will not be able to call these. Add them to the `callbacks` prop of <ForkSlot>.");},[e,n,a]),useEffect(()=>{Ro.has(e)||(Ro.add(e),fetch(`${b}/api/v1/slots`,{method:"POST",headers:{Authorization:`Bearer ${I}`,"Content-Type":"application/json"},body:JSON.stringify({id:e,appId:O,label:e,propsShape:t?Ri(t):"",eventsShape:"{ navigate?: string }",currentLayout:"",githubRepo:i,callbackNames:a?Object.keys(a):[],mode:l||"iframe",entityBindings:o||{}})}).catch(()=>{}));},[e,b,I,i,O,o]);let _=useCallback(W=>{let M=T.current;if(M?.contentWindow&&x.current){let S=L.current?Object.keys(L.current):[];M.contentWindow.postMessage({type:"slot:props",props:W,callbackNames:S},"*"),k.current=null;}else k.current=W;},[]),H=useCallback((W,M)=>{let S=K.current;return !S||S.length===0?false:S.some(U=>{let[X,V]=U.split(" "),Q=M.split("?")[0];return W.toUpperCase()===X.toUpperCase()&&Q.startsWith(V)})},[]);if(useEffect(()=>{if(!A?.bundleUrl)return;let W=async M=>{if(M.source===T.current?.contentWindow){if(M.data?.type==="slot:ready")x.current=true,T.current?.contentWindow?.postMessage({type:"slot:allowed-fetches",paths:K.current||[]},"*"),K.current,k.current?_(k.current):_(N.current||{});else if(M.data?.type==="slot:event"){let S=M.data.event;S?.navigate&&(window.location.hash=S.navigate);}else if(M.data?.type==="slot:clipboard-write")navigator.clipboard.writeText(M.data.text).catch(S=>{console.warn(`[ForkSlot:${e}] clipboard write failed:`,S.message);});else if(M.data?.type==="slot:callback"){let{name:S,args:U}=M.data,X=L.current?.[S];X?(X(...U||[])):console.warn(`[ForkSlot:${e}] unknown callback: ${S}`);}else if(M.data?.type==="slot:fetch"){let{id:S,method:U,url:X,body:V}=M.data,Q=T.current?.contentWindow;if(!Q)return;let Z=U||"GET";if(!H(Z,X)){console.warn(`[ForkSlot:${e}] BLOCKED fetch #${S}: ${Z} ${X} \u2014 not in allowedFetches`),Q.postMessage({type:"slot:fetch-response",id:S,error:`Fetch not allowed: ${Z} ${X}`},"*");return}try{let ee={method:Z};V&&Z!=="GET"&&(ee.headers={"Content-Type":"application/json"},ee.body=JSON.stringify(V));let fe=await fetch(X,ee),de=await fe.json();`${e}${S}${fe.status}`,Q.postMessage({type:"slot:fetch-response",id:S,data:de,status:fe.status},"*");}catch(ee){console.error(`[ForkSlot:${e}] fetch #${S} failed:`,ee.message),Q.postMessage({type:"slot:fetch-response",id:S,error:ee.message},"*");}}else if(M.data?.type==="slot:fork-data"){let{id:S,path:U,method:X,body:V}=M.data,Q=T.current?.contentWindow;if(!Q)return;if(!f||!O){Q.postMessage({type:"slot:fork-data-response",id:S,error:"Fork data is unavailable until appId and containerId are resolved"},"*");return}let Z=typeof U=="string"&&U.startsWith("/")?U:`/${String(U||"")}`,ee=Z.startsWith("/api/v1/data")?Z:`/api/v1/data${Z}`;try{let fe={Authorization:`Bearer ${I}`,"Content-Type":"application/json","X-Fork-App-Id":O,...ue()};R&&(fe["X-Fork-User-Id"]=R),p&&(fe["X-Fork-User-Hash"]=p);let de=typeof X=="string"?X.toUpperCase():"POST",oe=new URL(`${b}${ee}`),me={method:de,headers:fe};de==="GET"?(oe.searchParams.set("appId",O),oe.searchParams.set("containerId",f)):me.body=JSON.stringify({appId:O,containerId:f,...V&&typeof V=="object"?V:{}});let te=await fetch(oe.toString(),me),pe=await te.json().catch(()=>({}));if(!te.ok){let d=typeof pe?.error=="string"?pe.error:`Fork data API ${te.status}`;Q.postMessage({type:"slot:fork-data-response",id:S,error:d,status:te.status},"*");return}Q.postMessage({type:"slot:fork-data-response",id:S,data:pe,status:te.status},"*");}catch(fe){Q.postMessage({type:"slot:fork-data-response",id:S,error:fe.message},"*");}}}};return window.addEventListener("message",W),()=>{window.removeEventListener("message",W),x.current=false;}},[A?.bundleUrl,e,_,H,f,O,I,b,p,R]),useEffect(()=>{A?.bundleUrl&&x.current&&_(t||{});},[t,A?.bundleUrl,_]),!A||A.status!=="complete"||!A.bundleUrl)return `${e}${A?.status||"none"}${A?.bundleUrl||"none"}`,jsx(Fragment,{children:n});`${e}${A.bundleUrl}`;let j=`${b}${A.bundleUrl.replace("/bundle.js","/host")}`;return jsx("iframe",{ref:T,src:j,sandbox:"allow-scripts allow-same-origin allow-forms allow-clipboard-write",title:`Forked ${e}`,style:{width:"100%",border:"none",flex:1,minHeight:0}})}function $n({style:e={width:20,height:20},...t}){return jsxs("svg",{viewBox:"320 95 270 345",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:e,...t,children:[jsx("path",{stroke:"currentColor",strokeWidth:"30",strokeLinejoin:"round",strokeLinecap:"round",d:"M357.789 145.428c0-16.186 13.121-29.307 29.307-29.307 7.773 0 15.227 3.088 20.723 8.584 5.496 5.496 8.584 12.95 8.584 20.723 0 16.186-13.121 29.307-29.307 29.307s-29.307-13.121-29.307-29.307z"}),jsx("path",{stroke:"currentColor",strokeWidth:"30",strokeLinejoin:"round",strokeLinecap:"round",d:"M387.096 174.735v188"}),jsx("path",{stroke:"currentColor",strokeWidth:"30",strokeLinejoin:"round",strokeLinecap:"round",d:"M357.789 394.572c0-16.186 13.121-29.307 29.307-29.307 7.773 0 15.227 3.088 20.723 8.584 5.496 5.496 8.584 12.95 8.584 20.723 0 16.186-13.121 29.307-29.307 29.307s-29.307-13.121-29.307-29.307z"}),jsx("path",{stroke:"currentColor",strokeWidth:"30",strokeLinejoin:"round",strokeLinecap:"round",d:"M388.739 319c10.168-6.317 43.997-26.932 61.009-37.9 17.012-10.968 31.758-19.978 41.064-27.91 9.305-7.931 11.782-14.213 14.767-19.679 2.985-5.465 3.014-8.99 3.141-13.114.128-4.124-.999-8.178-2.377-11.632-1.378-3.454-3.563-6.55-5.889-9.094-2.326-2.543-4.98-4.679-8.066-6.167-3.085-1.488-6.624-2.601-10.448-2.76-3.823-.159-8.624.2-12.495 1.806-3.871 1.607-8.047 4.68-10.732 7.835-2.685 3.156-4.446 7.448-5.378 11.099-.932 3.651-.742 7.485-.213 10.807.528 3.322 1.864 6.46 3.386 9.123 1.523 2.663 3.543 4.843 5.75 6.854 2.207 2.011 4.38 3.914 7.491 5.214 3.111 1.3 6.57 2.808 11.178 2.584 4.607-.225 9.363-.471 16.466-3.932 7.103-3.46 16.076-5.382 26.154-16.831 10.077-11.449 28.593-43.219 34.312-51.862"}),jsx("path",{fill:"currentColor",stroke:"currentColor",strokeWidth:"1",strokeLinejoin:"round",d:"M527.117 162.547L570.487 134.368Q577.196 130.009 577.624 137.997L580.39 189.69Q580.818 197.678 573.69 194.047L527.536 170.538Q520.408 166.907 527.117 162.547Z"})]})}var Eo=5600,dr=2147483002;function Mi(e){return !e||e.state!=="complete"||!e.latest?null:`${e.latest.id}:${e.latest.completedAt??e.latest.updatedAt}`}function Pi(){return typeof document>"u"?false:!!document.querySelector("[data-fork-clone-overlay], [data-fork-removed], [data-fork-highlights]")}function ur(e,t){let n=Math.min(e.length,t?26:34)*7.4,r=t?Math.min(t.length,24)*6.8+10:0;return Math.round(Math.min(390,Math.max(116,56+n+r)))}function _i(e,t=false){return e?.state==="complete"&&e.unreadCompletedCount>0?e.unreadCompletedCount>1?`${e.unreadCompletedCount} forks ready`:`${e.label} ready`:t?"Fork update ready":void 0}function fr({onClick:e,hasNotification:t=false,activity:n}){let[r,o]=useState(false),[i,a]=useState(false),[l,u]=useState(null),[w,A]=useState(null),[b,I]=useState(null),O=useRef(0),R=r?48:40,p=Mi(n),f=!!(p&&n?.state==="complete"&&n.unreadCompletedCount>0),T=f?p:w?.key??null,x=!!(n&&n.state==="running"&&n.runningCount>0),k=!!(T&&T!==l&&(f||w)),L=x||k,N=f?n?.label:w?.label,K=k?"Built":n?.label??"Fork this app",_=k?N:n?.detail,H=ur(n?.label??"Fork this app",n?.detail),j=ur(K,_),W=k?Math.min(420,Math.max(326,j,w?.width??0,O.current+40)):j,M=k?46:40,S=L?[K,_].filter(Boolean).join(" "):_i(n,t)??"Fork this app",U=L?`${K}:${_??""}`:"idle",X=(t||n?.state==="complete"&&n.unreadCompletedCount>0)&&!L;useEffect(()=>{if(typeof document>"u")return;let te=document.createElement("div");return te.setAttribute("data-fork-button-host","true"),te.style.position="relative",te.style.zIndex=String(dr),document.body.appendChild(te),I(te),()=>{te.remove(),I(null);}},[]),useEffect(()=>{x&&(O.current=H);},[H,x]),useEffect(()=>{!f||!p||!n?.label||A(te=>{if(te?.key===p)return te;let pe=Math.min(420,Math.max(326,ur("Built",n.label),O.current+40));return {key:p,label:n.label,width:pe,startedAt:Date.now()}});},[n?.label,p,f]),useEffect(()=>{n&&n.unreadCompletedCount===0&&n.state!=="running"&&A(null);},[n,n?.state,n?.unreadCompletedCount]),useEffect(()=>{if(!T||!k||T===l)return;let te,pe=w?.key===T?w.startedAt:Date.now(),d=()=>{let E=Date.now()-pe;if(E>=Eo&&!Pi()||E>=Eo*3){u(T);return}te=window.setTimeout(d,250);};return te=window.setTimeout(d,250),()=>{te!==void 0&&window.clearTimeout(te);}},[T,l,w?.key,w?.startedAt,k]);let V=L?{position:"fixed",bottom:24,right:24,zIndex:dr,width:`min(${W}px, calc(100vw - 32px))`,height:M,minWidth:0,maxWidth:"calc(100vw - 32px)",borderRadius:k?12:999,backgroundColor:r?"#ffffff":"rgba(255, 255, 255, 0.92)",border:"1px solid rgba(148, 163, 184, 0.42)",display:"inline-flex",alignItems:"center",justifyContent:k?"flex-start":"center",gap:k?10:8,color:"#111827",boxShadow:r?"0 12px 24px -16px rgba(15, 23, 42, 0.45), 0 4px 10px -6px rgba(15, 23, 42, 0.25)":"0 10px 20px -18px rgba(15, 23, 42, 0.35), 0 2px 7px -5px rgba(15, 23, 42, 0.18)",transform:i?"scale(0.98)":"scale(1)",transition:"width 320ms cubic-bezier(0.16, 1, 0.3, 1), height 320ms cubic-bezier(0.16, 1, 0.3, 1), border-radius 320ms cubic-bezier(0.16, 1, 0.3, 1), transform 180ms ease, box-shadow 180ms ease, background-color 180ms ease, border-color 180ms ease",cursor:"pointer",padding:k?"0 16px 0 14px":"0 13px 0 11px",margin:0,outline:"none",boxSizing:"border-box",fontFamily:'Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif'}:{position:"fixed",bottom:24,right:24,zIndex:dr,width:R,height:R,borderRadius:"50%",backgroundColor:r?"rgba(255, 255, 255, 1)":"rgba(255, 255, 255, 0.3)",border:r?"1px solid rgba(156, 163, 175, 1)":"1px solid rgba(156, 163, 175, 0.3)",display:"flex",alignItems:"center",justifyContent:"center",color:r?"#111827":"rgba(17, 24, 39, 0.5)",boxShadow:r?"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)":"0 1px 2px 0 rgba(0, 0, 0, 0.05)",transform:i?"scale(0.95)":"scale(1)",transition:"width 320ms cubic-bezier(0.16, 1, 0.3, 1), height 320ms cubic-bezier(0.16, 1, 0.3, 1), border-radius 320ms cubic-bezier(0.16, 1, 0.3, 1), transform 180ms ease, box-shadow 180ms ease, background-color 180ms ease, border-color 180ms ease, color 180ms ease",cursor:"pointer",padding:0,margin:0,outline:"none",boxSizing:"border-box"},Q={minWidth:0,maxWidth:x?286:k?82:_?116:238,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:13,fontWeight:650,lineHeight:"16px",letterSpacing:0},Z={minWidth:0,maxWidth:k?278:void 0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flexShrink:k?1:0,color:"#64748b",fontSize:x?13:12,fontWeight:650,lineHeight:"16px",letterSpacing:0},ee={minWidth:0,flex:k?1:void 0,display:"inline-flex",alignItems:"center",justifyContent:k?"flex-start":void 0,gap:8,animation:"__forkButtonTextSwap 220ms ease-out"},fe={width:8,height:8,borderRadius:"50%",backgroundColor:n?.state==="complete"?"#16a34a":"#ef4444",boxShadow:n?.state==="complete"?"0 0 0 3px rgba(22, 163, 74, 0.14)":"none",animation:k?"__forkButtonBuiltDot 420ms ease-out":void 0,flexShrink:0},me=jsxs(Fragment,{children:[jsx("style",{children:`
4
4
  @keyframes __forkButtonSpin { to { transform: rotate(360deg); } }
5
5
  @keyframes __forkButtonTextSwap {
6
6
  from { opacity: 0; transform: translateY(2px); }
@@ -15,7 +15,7 @@ import*as sr from'react';import sr__default,{createContext,useState,useRef,useEf
15
15
  70% { opacity: 1; transform: scale(1.18); }
16
16
  100% { opacity: 1; transform: scale(1); }
17
17
  }
18
- `}),jsxs("button",{onClick:e,onMouseEnter:()=>o(true),onMouseLeave:()=>{o(false),a(false);},onMouseDown:()=>a(true),onMouseUp:()=>a(false),style:X,title:x,"aria-label":x,children:[L&&n?jsxs(Fragment,{children:[F?jsx("span",{"aria-hidden":true,style:{width:14,height:14,borderRadius:"50%",border:"2px solid rgba(17, 24, 39, 0.18)",borderTopColor:"#111827",animation:"__forkButtonSpin 780ms linear infinite",flexShrink:0,boxSizing:"border-box"}}):jsx("span",{"aria-hidden":true,style:re}),jsxs("span",{style:Z,children:[jsx("span",{style:Y,children:D}),P&&jsx("span",{style:G,children:P})]},O)]}):jsx($n,{style:{width:24,height:24,animation:"__forkButtonLogoIn 220ms ease-out"}}),V&&jsx("span",{"aria-hidden":true,style:{position:"absolute",top:2,right:2,width:10,height:10,borderRadius:"50%",backgroundColor:"#111827",border:"2px solid #ffffff",boxSizing:"border-box",pointerEvents:"none"}})]})]});return h?createPortal(ye,h):ye}var Bi={status:Loader2,agent_message:MessageSquare,tool_use:Wrench,build_start:Package,build_complete:Check,build_error:AlertCircle,complete:Sparkles,error:AlertCircle},Di={status:"#60a5fa",agent_message:"#a0a0a0",tool_use:"#fbbf24",build_start:"#c084fc",build_complete:"#6b7280",build_error:"#f87171",complete:"#6b7280",error:"#f87171"},ji={read:FileSearch,write:Pencil,search:FileSearch,shell:Terminal,build:Package},zi={read:"#60a5fa",write:"#fbbf24",search:"#60a5fa",shell:"#a78bfa",build:"#c084fc"};function fr(e){let t=e.data;switch(e.type){case "status":return `${t.message||t.status||"..."}`;case "agent_message":{let n=String(t.content||"");return /failed:/i.test(n)&&(n.includes("ENOENT")||n.includes("{")||n.includes("/Users/"))?"Adapting approach...":n}case "tool_use":return String(t.label||"Working on it");case "build_start":return "Bundling your component...";case "build_complete":return "Build complete!";case "build_error":return `Build failed: ${t.error}`;case "complete":return "Your fork is ready!";case "error":return `Error: ${t.error}`;default:return JSON.stringify(t)}}function Po({events:e}){let t=useRef(null);return useEffect(()=>{t.current&&(t.current.scrollTop=t.current.scrollHeight);},[e]),jsxs(Fragment,{children:[jsx("style",{children:`
18
+ `}),jsxs("button",{onClick:e,onMouseEnter:()=>o(true),onMouseLeave:()=>{o(false),a(false);},onMouseDown:()=>a(true),onMouseUp:()=>a(false),style:V,title:S,"aria-label":S,children:[L&&n?jsxs(Fragment,{children:[x?jsx("span",{"aria-hidden":true,style:{width:14,height:14,borderRadius:"50%",border:"2px solid rgba(17, 24, 39, 0.18)",borderTopColor:"#111827",animation:"__forkButtonSpin 780ms linear infinite",flexShrink:0,boxSizing:"border-box"}}):jsx("span",{"aria-hidden":true,style:fe}),jsxs("span",{style:ee,children:[jsx("span",{style:Q,children:K}),_&&jsx("span",{style:Z,children:_})]},U)]}):jsx($n,{style:{width:24,height:24,animation:"__forkButtonLogoIn 220ms ease-out"}}),X&&jsx("span",{"aria-hidden":true,style:{position:"absolute",top:2,right:2,width:10,height:10,borderRadius:"50%",backgroundColor:"#111827",border:"2px solid #ffffff",boxSizing:"border-box",pointerEvents:"none"}})]})]});return b?createPortal(me,b):me}var ji={status:Loader2,agent_message:MessageSquare,tool_use:Wrench,build_start:Package,build_complete:Check,build_error:AlertCircle,complete:Sparkles,error:AlertCircle},zi={status:"#60a5fa",agent_message:"#a0a0a0",tool_use:"#fbbf24",build_start:"#c084fc",build_complete:"#6b7280",build_error:"#f87171",complete:"#6b7280",error:"#f87171"},Ki={read:FileSearch,write:Pencil,search:FileSearch,shell:Terminal,build:Package},Wi={read:"#60a5fa",write:"#fbbf24",search:"#60a5fa",shell:"#a78bfa",build:"#c084fc"};function gr(e){let t=e.data;switch(e.type){case "status":return `${t.message||t.status||"..."}`;case "agent_message":{let n=String(t.content||"");return /failed:/i.test(n)&&(n.includes("ENOENT")||n.includes("{")||n.includes("/Users/"))?"Adapting approach...":n}case "tool_use":return String(t.label||"Working on it");case "build_start":return "Bundling your component...";case "build_complete":return "Build complete!";case "build_error":return `Build failed: ${t.error}`;case "complete":return "Your fork is ready!";case "error":return `Error: ${t.error}`;default:return JSON.stringify(t)}}function Lo({events:e}){let t=useRef(null);return useEffect(()=>{t.current&&(t.current.scrollTop=t.current.scrollHeight);},[e]),jsxs(Fragment,{children:[jsx("style",{children:`
19
19
  @keyframes __fork-spin {
20
20
  from { transform: rotate(0deg); }
21
21
  to { transform: rotate(360deg); }
@@ -33,8 +33,8 @@ import*as sr from'react';import sr__default,{createContext,useState,useRef,useEf
33
33
  .__fork-stream::-webkit-scrollbar-thumb:hover {
34
34
  background: rgba(255, 255, 255, 0.3);
35
35
  }
36
- `}),jsxs("div",{className:"__fork-stream",ref:t,style:{scrollbarWidth:"thin",scrollbarColor:"rgba(255, 255, 255, 0.15) transparent",backgroundColor:"#1a1a2e",borderRadius:"8px",padding:"12px",fontFamily:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",fontSize:"11px",maxHeight:"300px",overflowY:"auto",boxSizing:"border-box"},children:[e.length===0&&jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",color:"#6b7280",fontSize:"11px"},children:[jsx(Loader2,{style:{width:"12px",height:"12px",animation:"__fork-spin 1s linear infinite",flexShrink:0}}),"Connecting to agent..."]}),e.map((n,r)=>{let o=r===e.length-1,i=n.type==="complete"||n.type==="error"||n.type==="build_complete"||n.type==="build_error",a=o&&!i&&(n.type==="status"||n.type==="tool_use"||n.type==="build_start"),l=Bi[n.type]||Code,d=Di[n.type]||"#9ca3af";if(n.type==="tool_use"){let S=String(n.data.category||"");l=ji[S]||Wrench,d=zi[S]||"#fbbf24";}return a?l=Loader2:!o&&n.type==="status"&&(l=Check,d="#4ade80"),jsxs("div",{style:{display:"flex",gap:"6px",marginBottom:"6px",lineHeight:1.625},children:[jsx(l,{style:{width:"12px",height:"12px",marginTop:"2px",flexShrink:0,color:d,...a?{animation:"__fork-spin 1s linear infinite"}:{}}}),jsx("span",{style:{color:o&&!i?"#d1d5db":"#6b7280",wordBreak:"break-all"},children:fr(n)})]},r)})]})]})}var Wi=0;function Ji(e){let t=/^data:([^;,]+);base64,(.+)$/.exec(e);return t?{mediaType:t[1],data:t[2]}:null}function Vi(e){return new Promise((t,n)=>{let r=URL.createObjectURL(e),o=new Image;o.onload=()=>{URL.revokeObjectURL(r),t(o);},o.onerror=()=>{URL.revokeObjectURL(r),n(new Error("Failed to decode image"));},o.src=r;})}async function _o(e){if(!e.type.startsWith("image/"))return null;let t;try{t=await Vi(e);}catch{return null}let{naturalWidth:n,naturalHeight:r}=t;if(!n||!r)return null;let o=Math.min(1,1568/Math.max(n,r)),i=document.createElement("canvas");i.width=Math.max(1,Math.round(n*o)),i.height=Math.max(1,Math.round(r*o));let a=i.getContext("2d");if(!a)return null;a.fillStyle="#ffffff",a.fillRect(0,0,i.width,i.height),a.drawImage(t,0,0,i.width,i.height);let l=i.toDataURL("image/png");l.length>2e6&&(l=i.toDataURL("image/jpeg",.85));let d=Ji(l);return d?{id:`img-${++Wi}-${Date.now().toString(36)}`,dataUrl:l,mediaType:d.mediaType,data:d.data}:null}function Lo(e){let t=e.clipboardData?.items;if(!t)return [];let n=[];for(let r=0;r<t.length;r++){let o=t[r];if(o.kind==="file"&&o.type.startsWith("image/")){let i=o.getAsFile();i&&n.push(i);}}return n}var Xi="rgba(59, 130, 246, 0.16)",qi="1px solid #3b82f6";function Gi(e){let t=e;for(;t;){if(t.hasAttribute("data-fork-panel-host")||t.hasAttribute("data-fork-button-host")||t.hasAttribute("data-fork-picker-overlay"))return true;let n=t.getRootNode();t=t.parentElement??(n instanceof ShadowRoot?n.host:null);}return false}function Ho(e){let t=Object.keys(e).find(o=>o.startsWith("__reactFiber$")||o.startsWith("__reactInternalInstance$"));if(!t)return;let n=e[t],r=0;for(;n&&r<30;){let o=n.type;if(typeof o=="function"){let i=o.displayName||o.name;if(i&&!/^(styled|ForwardRef|Anonymous)/.test(i))return i}else if(typeof o=="object"&&o!==null){let i=o.displayName||o.render?.displayName||o.render?.name;if(i)return i}n=n.return,r++;}}function Yi(e){let t=[],n=e,r=0;for(;n&&n!==document.body&&r<6;){let o=n.tagName.toLowerCase();if(n.id){t.unshift(`#${CSS.escape(n.id)}`);break}let i=Array.from(n.classList).filter(a=>!/[[\]:]/.test(a)).slice(0,2);if(i.length>0)o+="."+i.map(a=>CSS.escape(a)).join(".");else if(n.parentElement){let a=Array.from(n.parentElement.children).filter(l=>l.tagName===n.tagName);a.length>1&&(o+=`:nth-of-type(${a.indexOf(n)+1})`);}t.unshift(o),n=n.parentElement,r++;}return t.join(" > ")}function Zi(e){let t=e.outerHTML;if(t.length>2e3){let n=t.indexOf(">");n>-1&&n<1900?t=t.slice(0,2e3)+`
37
- <!-- \u2026truncated\u2026 -->`:t=t.slice(0,2e3);}return t}function Qi(e){let t=e.getBoundingClientRect(),n=(e.textContent??"").replace(/\s+/g," ").trim(),r={tag:e.tagName.toLowerCase(),selector:Yi(e),html:Zi(e),rect:{x:Math.round(t.x),y:Math.round(t.y),width:Math.round(t.width),height:Math.round(t.height)}};e.id&&(r.id=e.id);let o=Array.from(e.classList).slice(0,10);o.length>0&&(r.classes=o),n&&(r.text=n.slice(0,300));let i=Ho(e);return i&&(r.componentName=i),r}function Ln(e){let t=e.tag;if(e.id)t+=`#${e.id}`;else if(e.classes?.length)t+=`.${e.classes.slice(0,2).join(".")}`;else if(e.componentName)return `<${e.componentName}>`;return t.length>36?t.slice(0,35)+"\u2026":t}function Oo(e){let t=document.createElement("div");t.setAttribute("data-fork-picker-overlay",""),t.style.cssText=["position: fixed","inset: 0","pointer-events: none","z-index: 2147483001"].join(";");let n=document.createElement("div");n.style.cssText=["position: fixed","display: none",`background: ${Xi}`,`border: ${qi}`,"border-radius: 2px","pointer-events: none","box-sizing: border-box","transition: all 40ms linear"].join(";");let r=document.createElement("div");r.style.cssText=["position: fixed","display: none","background: #1f2937","color: #ffffff","font: 500 11px/1.4 ui-sans-serif, system-ui, sans-serif","padding: 3px 8px","border-radius: 6px","pointer-events: none","white-space: nowrap","box-shadow: 0 2px 8px rgba(0,0,0,0.25)"].join(";"),t.appendChild(n),t.appendChild(r),document.body.appendChild(t);let o=document.createElement("style");o.textContent="*, * > * { cursor: crosshair !important; }",document.head.appendChild(o);let i=null,a=false,l=()=>{i=null,n.style.display="none",r.style.display="none";},d=u=>{let $=u.getBoundingClientRect();n.style.display="block",n.style.left=`${$.left}px`,n.style.top=`${$.top}px`,n.style.width=`${$.width}px`,n.style.height=`${$.height}px`;let F=Ho(u),m=u.tagName.toLowerCase();u.id?m+=`#${u.id}`:u.classList.length>0&&(m+=`.${Array.from(u.classList).slice(0,2).join(".")}`),m.length>42&&(m=m.slice(0,41)+"\u2026"),r.textContent=F?`${m} \xB7 ${F} \xB7 ${Math.round($.width)}\xD7${Math.round($.height)}`:`${m} \xB7 ${Math.round($.width)}\xD7${Math.round($.height)}`,r.style.display="block";let L=$.top>=30?$.top-26:Math.max(4,$.top+4);r.style.top=`${L}px`,r.style.left=`${Math.max(4,Math.min($.left,window.innerWidth-320))}px`;},S=(u,$)=>{let F=document.elementFromPoint(u,$);return !F||F===document.documentElement||F===document.body||Gi(F)?null:F},A=u=>{let $=S(u.clientX,u.clientY);if(!$){l();return}$!==i&&(i=$,d($));},h=()=>{i&&d(i);},C=u=>{let $=S(u.clientX,u.clientY);if(!$)return;u.preventDefault(),u.stopPropagation();let F=Qi($);p(),e.onPick(F);},N=u=>{S(u.clientX,u.clientY)&&(u.preventDefault(),u.stopPropagation());},R=u=>{u.key==="Escape"&&(u.preventDefault(),u.stopPropagation(),p(),e.onCancel());};function p(){a||(a=true,document.removeEventListener("mousemove",A,true),document.removeEventListener("click",C,true),document.removeEventListener("mousedown",N,true),document.removeEventListener("mouseup",N,true),document.removeEventListener("keydown",R,true),document.removeEventListener("scroll",h,true),window.removeEventListener("resize",h),t.remove(),o.remove());}return document.addEventListener("mousemove",A,true),document.addEventListener("click",C,true),document.addEventListener("mousedown",N,true),document.addEventListener("mouseup",N,true),document.addEventListener("keydown",R,true),document.addEventListener("scroll",h,true),window.addEventListener("resize",h),{stop:p}}function No(){if(typeof window>"u")return null;let e=window;return e.SpeechRecognition||e.webkitSpeechRecognition||null}function Uo(){return No()!==null}function Bo(e){let t=No();if(!t)return null;let n=true,r="",o=null,i=0,a=0,l=()=>{let d=new t;d.lang=typeof navigator<"u"&&navigator.language||"en-US",d.continuous=true,d.interimResults=true,d.onresult=S=>{let A="";for(let h=S.resultIndex;h<S.results.length;h++){let C=S.results[h],N=C[0]?.transcript??"";C.isFinal?r+=N:A+=N;}n&&e.onText(r,A);},d.onerror=S=>{let A=String(S?.error??"");if(A==="no-speech"||A==="aborted")return;n=false;let h=A==="not-allowed"||A==="service-not-allowed"?"not-allowed":A==="network"?"network":"other";e.onError(h);},d.onend=()=>{if(!n)return;let S=Date.now();if(S-i<1e3){if(a++,a>2){n=false,e.onError("other");return}}else a=0;i=S;try{d.start();}catch{try{l();}catch{n=false,e.onError("other");}}},o=d,d.start();};try{l();}catch{return null}return {stop:()=>{n=false;try{o?.stop();}catch{}}}}var zo=35,ua="Setting up environment",fa="Built Custom Feature",gr=360,en=380;function mr(e){let t=Date.parse(e);if(Number.isNaN(t))return "";let n=Math.max(1,Math.round((Date.now()-t)/1e3));if(n<60)return `${n}s`;let r=Math.round(n/60);if(r<60)return `${r}m`;let o=Math.round(r/60);return o<24?`${o}h`:`${Math.round(o/24)}d`}function pa(e){return e.length<=zo?e:e.slice(0,zo-3).trimEnd()+"..."}function ga({events:e}){let[t,n]=useState("Setting up environment..."),[r,o]=useState(true),i=useRef(t),a=useRef(false);return useEffect(()=>{if(!a.current){for(let d of e)if(d.type==="status"&&String(d.data.message||"").includes("Agent started")){a.current=true;break}}let l="Setting up environment...";if(a.current)for(let d=e.length-1;d>=0;d--){let S=e[d];if(S.type==="tool_use"||S.type==="build_start"||S.type==="build_complete"){l=pa(fr(S));break}}if(l!==i.current){o(false);let d=setTimeout(()=>{n(l),i.current=l,o(true);},200);return ()=>clearTimeout(d)}},[e]),jsx("span",{style:{fontSize:12.5,color:"#334155",fontWeight:600,opacity:r?1:0,transition:"opacity 0.2s ease",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0},children:t})}function ma({children:e}){let[t,n]=useState(null);return useEffect(()=>{if(typeof document>"u")return;let r=document.createElement("div");r.setAttribute("data-fork-panel-host",""),r.style.cssText="all: initial;",document.body.appendChild(r);let o=r.attachShadow({mode:"open"});return n(o),()=>{r.remove();}},[]),t?createPortal(e,t):null}function Nn({state:e,fork:t,events:n,error:r,runs:o={},slotId:i,targetId:a,targetLabel:l,historyMode:d="slot",onSubmit:S,onUndo:A,onPlanRevert:h,onRevert:C,onSetForkDisabled:N,onRenameFork:R,onClose:p,baseUrl:u,apiKey:$,userId:F,userHash:m,appId:L,embedded:U=false,completeVariant:D="bubble"}){let[P,H]=useState(""),[B,z]=useState([]),[_,x]=useState(false),[O,V]=useState(false),[X$1,Y]=useState(false),[G,Z]=useState(false),[re,pe]=useState(false),[oe,ye]=useState(false),[te,f]=useState(false),[b,E]=useState(false),[c,y]=useState(false),[I,K]=useState(null),[Q,J]=useState(null),[ae,ct]=useState(null),[ke,Le]=useState(false),[un,$e]=useState(null),[fn,At]=useState(0),[dt,ut]=useState(null),[tt,Rt]=useState(null),[Et,pn]=useState(false),[It,ft]=useState(null),[gn,pt]=useState(""),[Ee,Ie]=useState(false),[mn,ze]=useState(false),[Dt,Ve]=useState([]),[Te,gt]=useState(null),[mt,g]=useState(false),[v,M]=useState(false),[ee,ue]=useState(false),[le,de]=useState(null),[se,Fe]=useState(null),[we,Se]=useState(false),[me,he]=useState(false),[Ae,be]=useState(""),Me=useRef(null),[Xe,Pe]=useState(null),[jt,zt]=useState(false),[nt,$r]=useState(null),[Ct,hn]=useState([]),[vs,ws]=useState(0),[ce,qe]=useState(null),[Ke,Ge]=useState(false),rt=useRef(false),Tt=useRef(null),yn=useRef(null),[ot,zn]=useState([]),[ht,Kn]=useState(null),[yt,kn]=useState(false),$t=useRef(null),[Mt,Wn]=useState(false),Kt=useRef(null),Mr=useRef(""),[Pr,_r]=useState(null),Pt=useRef(null),Lr=useRef(null),[Ss,Hr]=useState(false),[xs,Or]=useState(false),[Fs,Nr]=useState(false),[As,Ur]=useState(null),{resetAllForks:Rs,adminContext:De,setAdminContainer:Es,currentContainerId:Br,forksPaused:_t,setForksPaused:Is,forkActivities:Dr,markForkActivitySeen:jr}=Ce(),bn=De.containerId??Br,vn=!!(De.isAdmin&&jt),Cs=!!(De.containerId??Br),[zr,Kr]=useState(false),je=nt!==null,Wr=useRef(p);useEffect(()=>{Wr.current=p;});let Jn=useRef(null),wn=useRef(false),Jr=typeof window<"u"&&"documentPictureInPicture"in window,Ts=async()=>{if(!(!Jr||je))try{let s=await window.documentPictureInPicture.requestWindow({width:gr,height:640});s.document.body.style.margin="0",s.document.body.style.padding="0",s.document.body.style.height="100vh",s.document.body.style.overflow="hidden",s.document.body.style.background="#ffffff";try{let w=document.adoptedStyleSheets??[];w.length>0&&(s.document.adoptedStyleSheets=[...w]);}catch{}s.addEventListener("pagehide",()=>{Jn.current=null,$r(null),wn.current||Wr.current(),wn.current=!1;},{once:!0}),Jn.current=s,$r(s);}catch(s){console.warn("[Fork] PiP open failed:",s);}},$s=()=>{nt&&(wn.current=true,nt.close());};useEffect(()=>()=>{wn.current=true,Jn.current?.close();},[]);let Wt=a??i??"";(l||Wt).replace(/[-_]+/g," ").replace(/\b\w/g,s=>s.toUpperCase());let Sn=useRef(""),Jt=()=>{let s={Authorization:`Bearer ${$}`,...fe()};return L&&(s["X-Fork-App-Id"]=L),F&&(s["X-Fork-User-Id"]=F),m&&(s["X-Fork-User-Hash"]=m),s},Lt=U?true:O&&!X$1,Vt=ce?o[ce]??null:null,Vn=ce?Ct.find(s=>s.id===ce)??null:null,Ms=Vn?(s=>s==="pending"||s==="running"||s==="building")(Vn.status):false,We=ce?Vt?.state??(Ms?"running":null):Ke?e:null,Ht=ce?Vt?.events??[]:Ke?n:[],Ps=ce?Vt?.state==="error"?Vt.error:null:Ke&&e==="error"?r:null,Xn=ce?Vt?.fork??null:Ke?t:null,_s=Object.values(o).filter(s=>s.state!=="running").length,Vr=ce?!!Dr.find(s=>s.id===ce)?.unread:false;useEffect(()=>{ce&&Vr&&jr(ce);},[ce,Vr,jr]);let Ls=Ht.find(s=>{let w=s.data;return s.type==="status"&&w.summary})?.data?.summary||Xn?.summary||ua,kt=Ht.find(s=>{let w=s.data;return (s.type==="status"||s.type==="complete")&&typeof w?.estimateMinutes=="number"})?.data?.estimateMinutes??Xn?.estimateMinutes;useEffect(()=>{if(d==="none"){x(true);return}if(!u||!$)return;if(!ce){z([]),x(true);return}let s=new AbortController;return fetch(`${u}/api/v1/forks/${encodeURIComponent(ce)}/messages`,{headers:Jt(),signal:s.signal}).then(w=>w.ok?w.json():[]).then(w=>{if(s.signal.aborted)return;let T=[];for(let j of w){let ie=j.forkId??ce,ve={promptId:j.promptId??null,promptKind:j.promptKind??null,reverted:!!j.reverted};if(j.role==="user"){let Ye=(j.attachments??[]).filter(He=>He&&typeof He.mediaType=="string"&&typeof He.data=="string").map(He=>({dataUrl:`data:${He.mediaType};base64,${He.data}`}));T.push({type:"user",text:j.content,forkId:ie,timestamp:j.timestamp,attachments:Ye.length>0?Ye:void 0,selectedElement:j.selectedElement?{label:Ln(j.selectedElement)}:void 0,...ve});}else T.push({type:"applied",text:j.content,forkId:ie,timestamp:j.timestamp,...ve});}z(T),x(true);}).catch(()=>{s.signal.aborted||x(true);}),()=>{s.abort();}},[$,L,u,d,ce,De.containerId,m,F,t?.id,t?.completedAt,fn]),useEffect(()=>{if(d==="none"||!u||!$||!mt)return;if(!Te){hn([]);return}let s=new AbortController,w=new URLSearchParams({container_id:Te});return fetch(`${u}/api/v1/forks?${w.toString()}`,{headers:Jt(),signal:s.signal}).then(T=>T.ok?T.json():{forks:[]}).then(T=>{s.signal.aborted||hn(T.forks??[]);}).catch(()=>{}),()=>{s.abort();}},[$,L,u,d,Te,mt,t?.id,t?.completedAt,_s,vs,De.containerId,m,F,fn]),useEffect(()=>{e==="complete"&&E(false);},[e]);let Xr=Ct.some(s=>s.status==="pending"||s.status==="running"||s.status==="building");useEffect(()=>{if(!Xr||!u||!$||!Te)return;let s=new URLSearchParams({container_id:Te}),w=Jt(),j=setInterval(async()=>{try{let ie=await fetch(`${u}/api/v1/forks?${s.toString()}`,{headers:w});if(!ie.ok)return;let ve=await ie.json();hn(ve.forks??[]);}catch{}},3e3);return ()=>clearInterval(j)},[Xr,u,$,L,Te]),useEffect(()=>{if(U&&d==="none"){Ve([]),gt(null),g(true),zt(false);return}if(De.isAdmin){Pe(null),Ve(De.containers.map(s=>({id:s.id,name:s.name,createdAt:"",hasAccess:true,isPrimary:s.isPrimary}))),gt(De.containerId??null),zt(true),g(true);return}bn?(Ve([{id:bn,name:"Primary container",createdAt:""}]),gt(bn)):(Ve([]),gt(null)),g(true),zt(false);},[$,bn,u,U,d,De.isAdmin,De.containerId,De.containers]);let xn=useRef(void 0);useEffect(()=>{if(mt){if(xn.current===void 0){xn.current=Te;return}xn.current!==Te&&(xn.current=Te,z([]),x(false));}},[Te,mt]);let Fn=useRef(null);useEffect(()=>{if(!v)return;let s=T=>{if(!Fn.current)return;let j=typeof T.composedPath=="function"?T.composedPath():[];Fn.current.contains(T.target)||j.includes(Fn.current)||M(false);},w=T=>{T.key==="Escape"&&M(false);};return document.addEventListener("mousedown",s,true),document.addEventListener("keydown",w,true),()=>{document.removeEventListener("mousedown",s,true),document.removeEventListener("keydown",w,true);}},[v]),useEffect(()=>{if(U||!Lt||X$1||je||yt)return;let s=w=>{(typeof w.composedPath=="function"?w.composedPath():[]).some(ie=>ie instanceof Element&&ie.hasAttribute("data-fork-panel-host"))||(Y(true),V(false),setTimeout(()=>p(),en));};return document.addEventListener("mousedown",s,true),()=>{document.removeEventListener("mousedown",s,true);}},[U,Lt,X$1,je,yt,p]),useEffect(()=>{v||(he(false),be(""));},[v]),useEffect(()=>{me&&(Me.current?.focus(),Me.current?.select());},[me]),useEffect(()=>{if(U)return;let s=requestAnimationFrame(()=>V(true));return ()=>cancelAnimationFrame(s)},[U]),useEffect(()=>{let s=U||je;if((s||Lt)&&(e==="prompting"||e==="complete")){let w=setTimeout(()=>Tt.current?.focus(),s?100:en+100);return ()=>clearTimeout(w)}},[Lt,U,je,e]);let qr=useRef(new Set);useEffect(()=>{for(let s of Object.values(o)){if(s.state!=="complete"||s.events.length===0)continue;let w=`${s.forkId}:${s.fork.completedAt??""}`;if(qr.current.has(w))continue;qr.current.add(w);let j=s.events.find(ie=>ie.type==="complete")?.data?.summary||s.fork.summary||fa;z(ie=>{let ve=[...ie].reverse().find(Ye=>Ye.forkId===s.forkId);return ve?.type==="applied"&&ve.text===j?ie:[...ie,{type:"applied",text:j,forkId:s.forkId,timestamp:s.fork.completedAt??new Date().toISOString()}]});}},[o]),useEffect(()=>{We==="complete"&&Sn.current&&(H(""),setTimeout(()=>Tt.current?.focus(),200));},[We]),useEffect(()=>{yn.current&&(yn.current.scrollTop=yn.current.scrollHeight);},[B,e]),useEffect(()=>{let s=Tt.current;s&&(s.style.height="auto",s.style.height=Math.min(s.scrollHeight,160)+"px");},[P]);let st=s=>{_r(s),Pt.current&&clearTimeout(Pt.current),Pt.current=setTimeout(()=>{Pt.current=null,_r(null);},3200);},Gr=async s=>{if(s.length===0)return;let w=4-ot.length;if(w<=0){st(`Up to ${4} images per prompt`);return}s.length>w&&st(`Up to ${4} images per prompt`);let j=(await Promise.all(s.slice(0,w).map(_o))).filter(ie=>ie!==null);j.length!==0&&(zn(ie=>[...ie,...j].slice(0,4)),Tt.current?.focus());},Yr=()=>{$t.current?.stop(),$t.current=null,kn(false);},Hs=()=>{if(yt){Yr();return}kn(true),st("Click an element on the page \xB7 Esc to cancel"),$t.current=Oo({onPick:s=>{$t.current=null,kn(false),Kn(s),Tt.current?.focus();},onCancel:()=>{$t.current=null,kn(false);}});},Zr=()=>{Kt.current?.stop(),Kt.current=null,Wn(false);},Os=()=>{if(Mt){Zr();return}if(!Uo()){st("Voice input is coming soon for this browser");return}let s=P.length>0&&!P.endsWith(" ")?P+" ":P;Mr.current=s;let w=Bo({onText:(T,j)=>{H(Mr.current+T+j);},onError:T=>{Kt.current=null,Wn(false),st(T==="not-allowed"?"Microphone access is blocked":T==="network"?"Voice input is coming soon for this browser":"Voice input stopped");}});if(!w){st("Voice input is coming soon for this browser");return}Kt.current=w,Wn(true);};useEffect(()=>()=>{$t.current?.stop(),Kt.current?.stop(),Pt.current&&clearTimeout(Pt.current);},[]);let Ot=!!(P.trim()||ot.length>0),Qr=()=>{if(!Ot)return;Mt&&Zr(),yt&&Yr();let s=P.trim()||"See the attached screenshot.";Sn.current=s;let w={};ot.length>0&&(w.attachments=ot.map(({mediaType:j,data:ie})=>({mediaType:j,data:ie}))),ht&&(w.selectedElement=ht);let T=Ke||!ce;T?(w.forceNew=true,rt.current=true,Ke||Ge(true)):w.forkId=ce,T||z(j=>[...j,{type:"user",text:s,forkId:ce,attachments:ot.length>0?ot.map(ie=>({dataUrl:ie.dataUrl})):void 0,selectedElement:ht?{label:Ln(ht)}:void 0}]),S(s,Wt,Te,w),H(""),zn([]),Kn(null);};useEffect(()=>{if(rt.current){if(e==="error"){rt.current=false;return}t?.id&&(qe(t.id),Ge(false),rt.current=false);}},[t?.id,e]);let eo=useRef(new Set);useEffect(()=>{t?.id&&(rt.current||e!=="running"&&e!=="complete"||eo.current.has(t.id)||(eo.current.add(t.id),qe(s=>s??t.id),Ge(false)));},[t?.id,e]);let to=s=>{Es(s.container.id,s.container.name),gt(s.container.id),Ve(w=>{let T=w.filter(j=>j.id!==s.container.id);return [{...s.container,isPrimary:true,hasAccess:true},...T.map(j=>({...j,isPrimary:false}))]}),qe(null),Ge(false),rt.current=false,z([]),x(false),Sn.current="";},Ns=async s=>{if(!(!vn||se)){Fe(s),Pe(null);try{let w=await fetch(`${u}/api/v1/admin/containers/${encodeURIComponent(s)}/primary`,{method:"POST",headers:Jt()});if(!w.ok){let T=await w.json().catch(()=>({}));throw new Error(T.error||`API error: ${w.status}`)}to(await w.json()),M(!1);}catch(w){Pe(w instanceof Error?w.message:String(w));}finally{Fe(null);}}},no=async s=>{if(!vn||se)return;let w=s.trim();if(w){Fe("__new__"),Pe(null);try{let T=await fetch(`${u}/api/v1/admin/containers`,{method:"POST",headers:{...Jt(),"Content-Type":"application/json"},body:JSON.stringify({name:w})});if(!T.ok){let j=await T.json().catch(()=>({}));throw new Error(j.error||`API error: ${T.status}`)}to(await T.json()),he(!1),be(""),M(!1);}catch(T){Pe(T instanceof Error?T.message:String(T));}finally{Fe(null);}}},ro=async()=>{if(!(!A||c||!Wt)){y(true);try{(await A(Wt,ce))?.removed?(z([]),qe(null),Ge(!1),rt.current=!1):z(w=>{let T=[...w];return T.length>=2&&T[T.length-1]?.type==="applied"?T.splice(-2,2):T.length>=1&&T[T.length-1]?.type==="applied"&&T.splice(-1,1),T}),ws(w=>w+1);}catch{}finally{y(false);}}},oo=async(s,w)=>{if(!h||!s.forkId||!s.promptId||ke)return;let T=s.forkId,j=s.promptId;$e(null),ct(j),J({forkId:T,promptId:j,mode:w,scope:"step",plan:null});try{let ie=await h(T,j,w);J(ve=>ve&&ve.forkId===T&&ve.promptId===j&&ve.mode===w?{...ve,plan:ie}:ve);}catch(ie){$e(ie instanceof Error?ie.message:String(ie)),J(ve=>ve&&ve.forkId===T&&ve.promptId===j?null:ve);}finally{ct(null);}},Us=async s=>{if(!(!h||ke)){ut(null),$e(null),ct(s),J({forkId:s,mode:"remove_step",scope:"fork",plan:null});try{let w=await h(s,void 0,"remove_step");J(T=>T&&T.forkId===s&&T.scope==="fork"?{...T,plan:w}:T);}catch(w){let T=w instanceof Error?w.message:String(w);Rt(s),$e(/not found/i.test(T)?`Error: ${T} for this fork`:`Error: ${T}`),J(j=>j&&j.forkId===s?null:j);}finally{ct(null);}}},so=async()=>{if(!(!R||!It||Ee)){Ie(true),$e(null);try{await R(It,gn.trim()),ft(null),pt(""),At(s=>s+1);}catch(s){$e(s instanceof Error?s.message:String(s));}finally{Ie(false);}}},Bs=async(s,w)=>{if(!(!N||Et)){ut(null),$e(null),Rt(null),pn(true);try{await N(s,w),At(T=>T+1);}catch(T){let j=T instanceof Error?T.message:String(T);Rt(s),/not found/i.test(j)?($e("Error: this fork no longer exists \u2014 refreshing the list."),setTimeout(()=>{Rt(null),$e(null),At(ie=>ie+1);},1800)):$e(`Error: ${j}`);}finally{pn(false);}}},io=async s=>{if(!(!C||!Q?.plan||ke)){Le(true),$e(null);try{let w=await C({forkId:Q.forkId,promptId:Q.promptId,mode:Q.mode,strategy:s});J(null),w.agentic?(Ge(!1),qe(w.fork.id)):w.removed&&(z([]),qe(null)),At(T=>T+1);}catch(w){$e(w instanceof Error?w.message:String(w));}finally{Le(false);}}},ao=()=>{if(U){p();return}if(je){nt?.close();return}Y(true),V(false),setTimeout(()=>p(),en);},Ds=U||je?{position:"relative",width:"100%",height:"100%",background:"#ffffff",display:"flex",flexDirection:"column",fontFamily:'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'}:{position:"fixed",top:0,right:0,bottom:0,zIndex:2147483e3,width:gr,maxWidth:"100vw",background:"#ffffff",boxShadow:Lt?"-12px 0 32px -16px rgba(0, 0, 0, 0.18), -2px 0 8px -2px rgba(0, 0, 0, 0.06)":"none",borderLeft:"1px solid rgba(0, 0, 0, 0.08)",transform:Lt?"translateX(0)":"translateX(100%)",transition:`transform ${en}ms cubic-bezier(0.22, 1, 0.36, 1), box-shadow ${en}ms ease`,display:"flex",flexDirection:"column",fontFamily:'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'},lo=Dt.find(s=>s.id===Te)?.name??(mt?"Fork":"Loading..."),js=[...Ct].sort((s,w)=>+!!s.disabledAt-+!!w.disabledAt),Nt=Ke?[]:ce?B.filter(s=>s.forkId===ce||s.forkId==null):B,Ut=Q?.scope==="fork",Je=Q?.plan??null,co=Q?jsxs("div",{style:{animation:"__fork-expand-in 0.22s cubic-bezier(0.22, 1, 0.36, 1)",overflow:"hidden",background:"#f9fafb",border:"1px solid #f3f4f6",borderRadius:10,padding:"10px 12px"},children:[jsx("div",{style:{fontSize:13,fontWeight:600,color:"#111827",textAlign:"center"},children:Q.mode==="revert_to"?"Go Back to This Point?":Ut?"Delete This Fork?":"Remove This Change?"}),Je?jsxs(Fragment,{children:[jsxs("div",{style:{fontSize:12,color:"#6b7280",marginTop:3,lineHeight:1.5,textAlign:"center"},children:[Q.mode==="revert_to"?`${Je.removes.length} later change${Je.removes.length===1?"":"s"} will be discarded.`:Je.laterSteps.length>0?`${Je.laterSteps.length} later change${Je.laterSteps.length===1?" was":"s were"} built on top of ${Ut?"this fork":"this one"}.`:Ut?"Deleting it is instant and cannot be undone.":"This is the latest change; removing it is instant.",Je.busy&&" A run is in progress \u2014 try again once it finishes."]}),jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flexWrap:"wrap",gap:8,marginTop:10},children:[Je.strategies.some(s=>s.id==="keep_later")&&jsx("button",{onClick:()=>io("keep_later"),disabled:ke,style:{padding:"5px 12px",fontSize:12,fontWeight:500,borderRadius:7,border:"none",background:"#eef2ff",color:"#4338ca",cursor:ke?"default":"pointer",opacity:ke?.5:1,transition:"background 0.12s"},onMouseEnter:s=>s.currentTarget.style.background="#e0e7ff",onMouseLeave:s=>s.currentTarget.style.background="#eef2ff",children:`Keep them (~${Je.strategies.find(s=>s.id==="keep_later")?.estimateMinutes??2}m)`}),jsx("button",{onClick:()=>{J(null),$e(null);},disabled:ke,style:{padding:"5px 12px",fontSize:12,fontWeight:500,borderRadius:7,border:"none",background:"#f3f4f6",color:"#374151",cursor:ke?"default":"pointer",transition:"background 0.12s"},onMouseEnter:s=>s.currentTarget.style.background="#e5e7eb",onMouseLeave:s=>s.currentTarget.style.background="#f3f4f6",children:"Cancel"}),jsx("button",{onClick:()=>io("discard_later"),disabled:ke,style:{padding:"5px 12px",fontSize:12,fontWeight:500,borderRadius:7,border:"none",background:"#fef2f2",color:"#b91c1c",cursor:ke?"default":"pointer",opacity:ke?.5:1,transition:"background 0.12s"},onMouseEnter:s=>s.currentTarget.style.background="#fee2e2",onMouseLeave:s=>s.currentTarget.style.background="#fef2f2",children:Q.mode==="revert_to"?"Go back to here":Je.laterSteps.length>0?Ut?"Delete all":"Remove all":Ut?"Delete":"Remove"})]})]}):jsx("div",{style:{fontSize:12,color:"#9ca3af",fontStyle:"italic",marginTop:4,textAlign:"center",animation:"__fork-pulse 1.2s ease-in-out infinite"},children:Q.mode==="revert_to"?"Evaluating undo...":Ut?"Evaluating delete...":"Evaluating remove..."})]}):null,An=un?jsx("div",{style:{animation:"__fork-expand-in 0.22s cubic-bezier(0.22, 1, 0.36, 1)",marginTop:8,fontSize:12,color:"#b91c1c",background:"#fef2f2",border:"1px solid #fecaca",borderRadius:8,padding:"6px 10px"},children:un}):null,qn=jsxs(Fragment,{children:[jsx("style",{children:`
36
+ `}),jsxs("div",{className:"__fork-stream",ref:t,style:{scrollbarWidth:"thin",scrollbarColor:"rgba(255, 255, 255, 0.15) transparent",backgroundColor:"#1a1a2e",borderRadius:"8px",padding:"12px",fontFamily:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",fontSize:"11px",maxHeight:"300px",overflowY:"auto",boxSizing:"border-box"},children:[e.length===0&&jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",color:"#6b7280",fontSize:"11px"},children:[jsx(Loader2,{style:{width:"12px",height:"12px",animation:"__fork-spin 1s linear infinite",flexShrink:0}}),"Connecting to agent..."]}),e.map((n,r)=>{let o=r===e.length-1,i=n.type==="complete"||n.type==="error"||n.type==="build_complete"||n.type==="build_error",a=o&&!i&&(n.type==="status"||n.type==="tool_use"||n.type==="build_start"),l=ji[n.type]||Code,u=zi[n.type]||"#9ca3af";if(n.type==="tool_use"){let w=String(n.data.category||"");l=Ki[w]||Wrench,u=Wi[w]||"#fbbf24";}return a?l=Loader2:!o&&n.type==="status"&&(l=Check,u="#4ade80"),jsxs("div",{style:{display:"flex",gap:"6px",marginBottom:"6px",lineHeight:1.625},children:[jsx(l,{style:{width:"12px",height:"12px",marginTop:"2px",flexShrink:0,color:u,...a?{animation:"__fork-spin 1s linear infinite"}:{}}}),jsx("span",{style:{color:o&&!i?"#d1d5db":"#6b7280",wordBreak:"break-all"},children:gr(n)})]},r)})]})]})}var Vi=0;function Xi(e){let t=/^data:([^;,]+);base64,(.+)$/.exec(e);return t?{mediaType:t[1],data:t[2]}:null}function qi(e){return new Promise((t,n)=>{let r=URL.createObjectURL(e),o=new Image;o.onload=()=>{URL.revokeObjectURL(r),t(o);},o.onerror=()=>{URL.revokeObjectURL(r),n(new Error("Failed to decode image"));},o.src=r;})}async function Ho(e){if(!e.type.startsWith("image/"))return null;let t;try{t=await qi(e);}catch{return null}let{naturalWidth:n,naturalHeight:r}=t;if(!n||!r)return null;let o=Math.min(1,1568/Math.max(n,r)),i=document.createElement("canvas");i.width=Math.max(1,Math.round(n*o)),i.height=Math.max(1,Math.round(r*o));let a=i.getContext("2d");if(!a)return null;a.fillStyle="#ffffff",a.fillRect(0,0,i.width,i.height),a.drawImage(t,0,0,i.width,i.height);let l=i.toDataURL("image/png");l.length>2e6&&(l=i.toDataURL("image/jpeg",.85));let u=Xi(l);return u?{id:`img-${++Vi}-${Date.now().toString(36)}`,dataUrl:l,mediaType:u.mediaType,data:u.data}:null}function Oo(e){let t=e.clipboardData?.items;if(!t)return [];let n=[];for(let r=0;r<t.length;r++){let o=t[r];if(o.kind==="file"&&o.type.startsWith("image/")){let i=o.getAsFile();i&&n.push(i);}}return n}var Gi="rgba(59, 130, 246, 0.16)",Yi="1px solid #3b82f6";function Zi(e){let t=e;for(;t;){if(t.hasAttribute("data-fork-panel-host")||t.hasAttribute("data-fork-button-host")||t.hasAttribute("data-fork-picker-overlay"))return true;let n=t.getRootNode();t=t.parentElement??(n instanceof ShadowRoot?n.host:null);}return false}function Uo(e){let t=Object.keys(e).find(o=>o.startsWith("__reactFiber$")||o.startsWith("__reactInternalInstance$"));if(!t)return;let n=e[t],r=0;for(;n&&r<30;){let o=n.type;if(typeof o=="function"){let i=o.displayName||o.name;if(i&&!/^(styled|ForwardRef|Anonymous)/.test(i))return i}else if(typeof o=="object"&&o!==null){let i=o.displayName||o.render?.displayName||o.render?.name;if(i)return i}n=n.return,r++;}}function Qi(e){let t=[],n=e,r=0;for(;n&&n!==document.body&&r<6;){let o=n.tagName.toLowerCase();if(n.id){t.unshift(`#${CSS.escape(n.id)}`);break}let i=Array.from(n.classList).filter(a=>!/[[\]:]/.test(a)).slice(0,2);if(i.length>0)o+="."+i.map(a=>CSS.escape(a)).join(".");else if(n.parentElement){let a=Array.from(n.parentElement.children).filter(l=>l.tagName===n.tagName);a.length>1&&(o+=`:nth-of-type(${a.indexOf(n)+1})`);}t.unshift(o),n=n.parentElement,r++;}return t.join(" > ")}function ea(e){let t=e.outerHTML;if(t.length>2e3){let n=t.indexOf(">");n>-1&&n<1900?t=t.slice(0,2e3)+`
37
+ <!-- \u2026truncated\u2026 -->`:t=t.slice(0,2e3);}return t}function ta(e){let t=e.getBoundingClientRect(),n=(e.textContent??"").replace(/\s+/g," ").trim(),r={tag:e.tagName.toLowerCase(),selector:Qi(e),html:ea(e),rect:{x:Math.round(t.x),y:Math.round(t.y),width:Math.round(t.width),height:Math.round(t.height)}};e.id&&(r.id=e.id);let o=Array.from(e.classList).slice(0,10);o.length>0&&(r.classes=o),n&&(r.text=n.slice(0,300));let i=Uo(e);return i&&(r.componentName=i),r}function Ln(e){let t=e.tag;if(e.id)t+=`#${e.id}`;else if(e.classes?.length)t+=`.${e.classes.slice(0,2).join(".")}`;else if(e.componentName)return `<${e.componentName}>`;return t.length>36?t.slice(0,35)+"\u2026":t}function No(e){let t=document.createElement("div");t.setAttribute("data-fork-picker-overlay",""),t.style.cssText=["position: fixed","inset: 0","pointer-events: none","z-index: 2147483001"].join(";");let n=document.createElement("div");n.style.cssText=["position: fixed","display: none",`background: ${Gi}`,`border: ${Yi}`,"border-radius: 2px","pointer-events: none","box-sizing: border-box","transition: all 40ms linear"].join(";");let r=document.createElement("div");r.style.cssText=["position: fixed","display: none","background: #1f2937","color: #ffffff","font: 500 11px/1.4 ui-sans-serif, system-ui, sans-serif","padding: 3px 8px","border-radius: 6px","pointer-events: none","white-space: nowrap","box-shadow: 0 2px 8px rgba(0,0,0,0.25)"].join(";"),t.appendChild(n),t.appendChild(r),document.body.appendChild(t);let o=document.createElement("style");o.textContent="*, * > * { cursor: crosshair !important; }",document.head.appendChild(o);let i=null,a=false,l=()=>{i=null,n.style.display="none",r.style.display="none";},u=f=>{let T=f.getBoundingClientRect();n.style.display="block",n.style.left=`${T.left}px`,n.style.top=`${T.top}px`,n.style.width=`${T.width}px`,n.style.height=`${T.height}px`;let x=Uo(f),k=f.tagName.toLowerCase();f.id?k+=`#${f.id}`:f.classList.length>0&&(k+=`.${Array.from(f.classList).slice(0,2).join(".")}`),k.length>42&&(k=k.slice(0,41)+"\u2026"),r.textContent=x?`${k} \xB7 ${x} \xB7 ${Math.round(T.width)}\xD7${Math.round(T.height)}`:`${k} \xB7 ${Math.round(T.width)}\xD7${Math.round(T.height)}`,r.style.display="block";let L=T.top>=30?T.top-26:Math.max(4,T.top+4);r.style.top=`${L}px`,r.style.left=`${Math.max(4,Math.min(T.left,window.innerWidth-320))}px`;},w=(f,T)=>{let x=document.elementFromPoint(f,T);return !x||x===document.documentElement||x===document.body||Zi(x)?null:x},A=f=>{let T=w(f.clientX,f.clientY);if(!T){l();return}T!==i&&(i=T,u(T));},b=()=>{i&&u(i);},I=f=>{let T=w(f.clientX,f.clientY);if(!T)return;f.preventDefault(),f.stopPropagation();let x=ta(T);p(),e.onPick(x);},O=f=>{w(f.clientX,f.clientY)&&(f.preventDefault(),f.stopPropagation());},R=f=>{f.key==="Escape"&&(f.preventDefault(),f.stopPropagation(),p(),e.onCancel());};function p(){a||(a=true,document.removeEventListener("mousemove",A,true),document.removeEventListener("click",I,true),document.removeEventListener("mousedown",O,true),document.removeEventListener("mouseup",O,true),document.removeEventListener("keydown",R,true),document.removeEventListener("scroll",b,true),window.removeEventListener("resize",b),t.remove(),o.remove());}return document.addEventListener("mousemove",A,true),document.addEventListener("click",I,true),document.addEventListener("mousedown",O,true),document.addEventListener("mouseup",O,true),document.addEventListener("keydown",R,true),document.addEventListener("scroll",b,true),window.addEventListener("resize",b),{stop:p}}function Bo(){if(typeof window>"u")return null;let e=window;return e.SpeechRecognition||e.webkitSpeechRecognition||null}function Do(){return Bo()!==null}function jo(e){let t=Bo();if(!t)return null;let n=true,r="",o=null,i=0,a=0,l=()=>{let u=new t;u.lang=typeof navigator<"u"&&navigator.language||"en-US",u.continuous=true,u.interimResults=true,u.onresult=w=>{let A="";for(let b=w.resultIndex;b<w.results.length;b++){let I=w.results[b],O=I[0]?.transcript??"";I.isFinal?r+=O:A+=O;}n&&e.onText(r,A);},u.onerror=w=>{let A=String(w?.error??"");if(A==="no-speech"||A==="aborted")return;n=false;let b=A==="not-allowed"||A==="service-not-allowed"?"not-allowed":A==="network"?"network":"other";e.onError(b);},u.onend=()=>{if(!n)return;let w=Date.now();if(w-i<1e3){if(a++,a>2){n=false,e.onError("other");return}}else a=0;i=w;try{u.start();}catch{try{l();}catch{n=false,e.onError("other");}}},o=u,u.start();};try{l();}catch{return null}return {stop:()=>{n=false;try{o?.stop();}catch{}}}}var Wo=35,pa="Setting up environment",ga="Built Custom Feature",hr=360,on=380;function yr(e){let t=Date.parse(e);if(Number.isNaN(t))return "";let n=Math.max(1,Math.round((Date.now()-t)/1e3));if(n<60)return `${n}s`;let r=Math.round(n/60);if(r<60)return `${r}m`;let o=Math.round(r/60);return o<24?`${o}h`:`${Math.round(o/24)}d`}function ma(e){return e.length<=Wo?e:e.slice(0,Wo-3).trimEnd()+"..."}function ha({events:e}){let[t,n]=useState("Setting up environment..."),[r,o]=useState(true),i=useRef(t),a=useRef(false);return useEffect(()=>{if(!a.current){for(let u of e)if(u.type==="status"&&String(u.data.message||"").includes("Agent started")){a.current=true;break}}let l="Setting up environment...";if(a.current)for(let u=e.length-1;u>=0;u--){let w=e[u];if(w.type==="tool_use"||w.type==="build_start"||w.type==="build_complete"){l=ma(gr(w));break}}if(l!==i.current){o(false);let u=setTimeout(()=>{n(l),i.current=l,o(true);},200);return ()=>clearTimeout(u)}},[e]),jsx("span",{style:{fontSize:12.5,color:"#334155",fontWeight:600,opacity:r?1:0,transition:"opacity 0.2s ease",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0},children:t})}function ya({children:e}){let[t,n]=useState(null);return useEffect(()=>{if(typeof document>"u")return;let r=document.createElement("div");r.setAttribute("data-fork-panel-host",""),r.style.cssText="all: initial;",document.body.appendChild(r);let o=r.attachShadow({mode:"open"});return n(o),()=>{r.remove();}},[]),t?createPortal(e,t):null}function Un({state:e,fork:t,events:n,error:r,runs:o={},slotId:i,targetId:a,targetLabel:l,historyMode:u="slot",onSubmit:w,onUndo:A,onPlanRevert:b,onRevert:I,onSetForkDisabled:O,onRenameFork:R,onClose:p,baseUrl:f,apiKey:T,userId:x,userHash:k,appId:L,embedded:N=false,completeVariant:K="bubble"}){let[_,H]=useState(""),[j,W]=useState([]),[M,S]=useState(false),[U,X$1]=useState(false),[V,Q]=useState(false),[Z,ee]=useState(false),[fe,de]=useState(false),[oe,me]=useState(false),[te,pe]=useState(false),[d,E]=useState(false),[h,c]=useState(false),[g,$]=useState(null),[B,D]=useState(null),[Y,ft]=useState(null),[ve,Pe]=useState(false),[gn,Ce]=useState(null),[mn,tt]=useState(0),[pt,gt]=useState(null),[nt,mt]=useState(null),[Fe,Et]=useState(null),[Ge,Kt]=useState(false),[Ct,Tt]=useState(null),[Ne,we]=useState(""),[Je,Ve]=useState(false),[zn,$t]=useState(false),[Wt,ht]=useState([]),[Te,m]=useState(null),[F,P]=useState(false),[G,ie]=useState(false),[ae,ce]=useState(false),[Se,$e]=useState(null),[le,he]=useState(null),[ye,ke]=useState(false),[_e,xe]=useState(false),[Ae,Be]=useState(""),De=useRef(null),[Mt,rt]=useState(null),[Kn,Wn]=useState(false),[Pt,Pr]=useState(null),[Jt,hn]=useState([]),[Ss,xs]=useState(0),[re,ot]=useState(null),[Xe,st]=useState(false),it=useRef(false),_t=useRef(null),yn=useRef(null),[at,Jn]=useState([]),[yt,Vn]=useState(null),[kt,kn]=useState(false),Lt=useRef(null),[Ht,Xn]=useState(false),Vt=useRef(null),_r=useRef(""),[Lr,Hr]=useState(null),Ot=useRef(null),Or=useRef(null),[Fs,Ur]=useState(false),[As,Nr]=useState(false),[Rs,Br]=useState(false),[Is,Dr]=useState(null),{resetAllForks:Es,adminContext:ze,setAdminContainer:Cs,currentContainerId:jr,forksPaused:Ut,setForksPaused:Ts,forkActivities:zr,markForkActivitySeen:Kr}=Ee(),bn=ze.containerId??jr,vn=!!(ze.isAdmin&&Kn),$s=!!(ze.containerId??jr),[Wr,Jr]=useState(false),Ke=Pt!==null,Vr=useRef(p);useEffect(()=>{Vr.current=p;});let qn=useRef(null),wn=useRef(false),Xr=typeof window<"u"&&"documentPictureInPicture"in window,Ms=async()=>{if(!(!Xr||Ke))try{let s=await window.documentPictureInPicture.requestWindow({width:hr,height:640});s.document.body.style.margin="0",s.document.body.style.padding="0",s.document.body.style.height="100vh",s.document.body.style.overflow="hidden",s.document.body.style.background="#ffffff";try{let v=document.adoptedStyleSheets??[];v.length>0&&(s.document.adoptedStyleSheets=[...v]);}catch{}s.addEventListener("pagehide",()=>{qn.current=null,Pr(null),wn.current||Vr.current(),wn.current=!1;},{once:!0}),qn.current=s,Pr(s);}catch(s){console.warn("[Fork] PiP open failed:",s);}},Ps=()=>{Pt&&(wn.current=true,Pt.close());};useEffect(()=>()=>{wn.current=true,qn.current?.close();},[]);let Xt=a??i??"";(l||Xt).replace(/[-_]+/g," ").replace(/\b\w/g,s=>s.toUpperCase());let Sn=useRef(""),qt=()=>{let s={Authorization:`Bearer ${T}`,...ue()};return L&&(s["X-Fork-App-Id"]=L),x&&(s["X-Fork-User-Id"]=x),k&&(s["X-Fork-User-Hash"]=k),s},Nt=N?true:U&&!V,Gt=re?o[re]??null:null,Yt=re?Jt.find(s=>s.id===re)??null:null,_s=Yt?(s=>s==="pending"||s==="running"||s==="building")(Yt.status):false,qe=re?Gt?.state??(_s?"running":null):Xe?e:null,Bt=re?Gt?.events??[]:Xe?n:[],Ls=re?Gt?.state==="error"?Gt.error:null:Xe&&e==="error"?r:null,Gn=re?Gt?.fork??null:Xe?t:null,Hs=Object.values(o).filter(s=>s.state!=="running").length,qr=re?!!zr.find(s=>s.id===re)?.unread:false;useEffect(()=>{re&&qr&&Kr(re);},[re,qr,Kr]);let Os=Bt.find(s=>{let v=s.data;return s.type==="status"&&v.summary})?.data?.summary||Gn?.summary||pa,bt=Bt.find(s=>{let v=s.data;return (s.type==="status"||s.type==="complete")&&typeof v?.estimateMinutes=="number"})?.data?.estimateMinutes??Gn?.estimateMinutes;useEffect(()=>{if(u==="none"){S(true);return}if(!f||!T)return;if(!re){W([]),S(true);return}let s=new AbortController;return fetch(`${f}/api/v1/forks/${encodeURIComponent(re)}/messages`,{headers:qt(),signal:s.signal}).then(v=>v.ok?v.json():[]).then(v=>{if(s.signal.aborted)return;let C=[];for(let z of v){let se=z.forkId??re,be={promptId:z.promptId??null,promptKind:z.promptKind??null,reverted:!!z.reverted};if(z.role==="user"){let Ye=(z.attachments??[]).filter(Le=>Le&&typeof Le.mediaType=="string"&&typeof Le.data=="string").map(Le=>({dataUrl:`data:${Le.mediaType};base64,${Le.data}`}));C.push({type:"user",text:z.content,forkId:se,timestamp:z.timestamp,attachments:Ye.length>0?Ye:void 0,selectedElement:z.selectedElement?{label:Ln(z.selectedElement)}:void 0,...be});}else C.push({type:"applied",text:z.content,forkId:se,timestamp:z.timestamp,...be});}W(C),S(true);}).catch(()=>{s.signal.aborted||S(true);}),()=>{s.abort();}},[T,L,f,u,re,ze.containerId,k,x,t?.id,t?.completedAt,mn]),useEffect(()=>{if(u==="none"||!f||!T||!F)return;if(!Te){hn([]);return}let s=new AbortController,v=new URLSearchParams({container_id:Te});return fetch(`${f}/api/v1/forks?${v.toString()}`,{headers:qt(),signal:s.signal}).then(C=>C.ok?C.json():{forks:[]}).then(C=>{s.signal.aborted||hn(C.forks??[]);}).catch(()=>{}),()=>{s.abort();}},[T,L,f,u,Te,F,t?.id,t?.completedAt,Hs,Ss,ze.containerId,k,x,mn]),useEffect(()=>{e==="complete"&&E(false);},[e]);let Gr=Jt.some(s=>s.status==="pending"||s.status==="running"||s.status==="building");useEffect(()=>{if(!Gr||!f||!T||!Te)return;let s=new URLSearchParams({container_id:Te}),v=qt(),z=setInterval(async()=>{try{let se=await fetch(`${f}/api/v1/forks?${s.toString()}`,{headers:v});if(!se.ok)return;let be=await se.json();hn(be.forks??[]);}catch{}},3e3);return ()=>clearInterval(z)},[Gr,f,T,L,Te]),useEffect(()=>{if(N&&u==="none"){ht([]),m(null),P(true),Wn(false);return}if(ze.isAdmin){rt(null),ht(ze.containers.map(s=>({id:s.id,name:s.name,createdAt:"",hasAccess:true,isPrimary:s.isPrimary}))),m(ze.containerId??null),Wn(true),P(true);return}bn?(ht([{id:bn,name:"Primary container",createdAt:""}]),m(bn)):(ht([]),m(null)),P(true),Wn(false);},[T,bn,f,N,u,ze.isAdmin,ze.containerId,ze.containers]);let xn=useRef(void 0);useEffect(()=>{if(F){if(xn.current===void 0){xn.current=Te;return}xn.current!==Te&&(xn.current=Te,W([]),S(false));}},[Te,F]);let Fn=useRef(null);useEffect(()=>{if(!G)return;let s=C=>{if(!Fn.current)return;let z=typeof C.composedPath=="function"?C.composedPath():[];Fn.current.contains(C.target)||z.includes(Fn.current)||ie(false);},v=C=>{C.key==="Escape"&&ie(false);};return document.addEventListener("mousedown",s,true),document.addEventListener("keydown",v,true),()=>{document.removeEventListener("mousedown",s,true),document.removeEventListener("keydown",v,true);}},[G]),useEffect(()=>{if(N||!Nt||V||Ke||kt)return;let s=v=>{(typeof v.composedPath=="function"?v.composedPath():[]).some(se=>se instanceof Element&&se.hasAttribute("data-fork-panel-host"))||(Q(true),X$1(false),setTimeout(()=>p(),on));};return document.addEventListener("mousedown",s,true),()=>{document.removeEventListener("mousedown",s,true);}},[N,Nt,V,Ke,kt,p]),useEffect(()=>{G||(xe(false),Be(""));},[G]),useEffect(()=>{_e&&(De.current?.focus(),De.current?.select());},[_e]),useEffect(()=>{if(N)return;let s=requestAnimationFrame(()=>X$1(true));return ()=>cancelAnimationFrame(s)},[N]),useEffect(()=>{let s=N||Ke;if((s||Nt)&&(e==="prompting"||e==="complete")){let v=setTimeout(()=>_t.current?.focus(),s?100:on+100);return ()=>clearTimeout(v)}},[Nt,N,Ke,e]);let Yr=useRef(new Set);useEffect(()=>{for(let s of Object.values(o)){if(s.state!=="complete"||s.events.length===0)continue;let v=`${s.forkId}:${s.fork.completedAt??""}`;if(Yr.current.has(v))continue;Yr.current.add(v);let z=s.events.find(se=>se.type==="complete")?.data?.summary||s.fork.summary||ga;W(se=>{let be=[...se].reverse().find(Ye=>Ye.forkId===s.forkId);return be?.type==="applied"&&be.text===z?se:[...se,{type:"applied",text:z,forkId:s.forkId,timestamp:s.fork.completedAt??new Date().toISOString()}]});}},[o]),useEffect(()=>{qe==="complete"&&Sn.current&&(H(""),setTimeout(()=>_t.current?.focus(),200));},[qe]),useEffect(()=>{yn.current&&(yn.current.scrollTop=yn.current.scrollHeight);},[j,e]),useEffect(()=>{let s=_t.current;s&&(s.style.height="auto",s.style.height=Math.min(s.scrollHeight,160)+"px");},[_]);let lt=s=>{Hr(s),Ot.current&&clearTimeout(Ot.current),Ot.current=setTimeout(()=>{Ot.current=null,Hr(null);},3200);},Zr=async s=>{if(s.length===0)return;let v=4-at.length;if(v<=0){lt(`Up to ${4} images per prompt`);return}s.length>v&&lt(`Up to ${4} images per prompt`);let z=(await Promise.all(s.slice(0,v).map(Ho))).filter(se=>se!==null);z.length!==0&&(Jn(se=>[...se,...z].slice(0,4)),_t.current?.focus());},Qr=()=>{Lt.current?.stop(),Lt.current=null,kn(false);},Us=()=>{if(kt){Qr();return}kn(true),lt("Click an element on the page \xB7 Esc to cancel"),Lt.current=No({onPick:s=>{Lt.current=null,kn(false),Vn(s),_t.current?.focus();},onCancel:()=>{Lt.current=null,kn(false);}});},eo=()=>{Vt.current?.stop(),Vt.current=null,Xn(false);},Ns=()=>{if(Ht){eo();return}if(!Do()){lt("Voice input is coming soon for this browser");return}let s=_.length>0&&!_.endsWith(" ")?_+" ":_;_r.current=s;let v=jo({onText:(C,z)=>{H(_r.current+C+z);},onError:C=>{Vt.current=null,Xn(false),lt(C==="not-allowed"?"Microphone access is blocked":C==="network"?"Voice input is coming soon for this browser":"Voice input stopped");}});if(!v){lt("Voice input is coming soon for this browser");return}Vt.current=v,Xn(true);};useEffect(()=>()=>{Lt.current?.stop(),Vt.current?.stop(),Ot.current&&clearTimeout(Ot.current);},[]);let Dt=!!(_.trim()||at.length>0),to=()=>{if(!Dt)return;Ht&&eo(),kt&&Qr();let s=_.trim()||"See the attached screenshot.";Sn.current=s;let v={};at.length>0&&(v.attachments=at.map(({mediaType:z,data:se})=>({mediaType:z,data:se}))),yt&&(v.selectedElement=yt);let C=Xe||!re;C?(v.forceNew=true,it.current=true,Xe||st(true)):v.forkId=re,C||W(z=>[...z,{type:"user",text:s,forkId:re,attachments:at.length>0?at.map(se=>({dataUrl:se.dataUrl})):void 0,selectedElement:yt?{label:Ln(yt)}:void 0}]),w(s,Xt,Te,v),H(""),Jn([]),Vn(null);};useEffect(()=>{if(it.current){if(e==="error"){it.current=false;return}t?.id&&(ot(t.id),st(false),it.current=false);}},[t?.id,e]);let no=useRef(new Set);useEffect(()=>{t?.id&&(it.current||e!=="running"&&e!=="complete"||no.current.has(t.id)||(no.current.add(t.id),ot(s=>s??t.id),st(false)));},[t?.id,e]);let ro=s=>{Cs(s.container.id,s.container.name),m(s.container.id),ht(v=>{let C=v.filter(z=>z.id!==s.container.id);return [{...s.container,isPrimary:true,hasAccess:true},...C.map(z=>({...z,isPrimary:false}))]}),ot(null),st(false),it.current=false,W([]),S(false),Sn.current="";},Bs=async s=>{if(!(!vn||le)){he(s),rt(null);try{let v=await fetch(`${f}/api/v1/admin/containers/${encodeURIComponent(s)}/primary`,{method:"POST",headers:qt()});if(!v.ok){let C=await v.json().catch(()=>({}));throw new Error(C.error||`API error: ${v.status}`)}ro(await v.json()),ie(!1);}catch(v){rt(v instanceof Error?v.message:String(v));}finally{he(null);}}},oo=async s=>{if(!vn||le)return;let v=s.trim();if(v){he("__new__"),rt(null);try{let C=await fetch(`${f}/api/v1/admin/containers`,{method:"POST",headers:{...qt(),"Content-Type":"application/json"},body:JSON.stringify({name:v})});if(!C.ok){let z=await C.json().catch(()=>({}));throw new Error(z.error||`API error: ${C.status}`)}ro(await C.json()),xe(!1),Be(""),ie(!1);}catch(C){rt(C instanceof Error?C.message:String(C));}finally{he(null);}}},so=async()=>{if(!(!A||h||!Xt)){c(true);try{(await A(Xt,re))?.removed?(W([]),ot(null),st(!1),it.current=!1):W(v=>{let C=[...v];return C.length>=2&&C[C.length-1]?.type==="applied"?C.splice(-2,2):C.length>=1&&C[C.length-1]?.type==="applied"&&C.splice(-1,1),C}),xs(v=>v+1);}catch{}finally{c(false);}}},Ds=async(s,v)=>{if(!b||!s.forkId||!s.promptId||ve)return;let C=s.forkId,z=s.promptId;Ce(null),ft(z),D({forkId:C,promptId:z,mode:v,scope:"step",plan:null});try{let se=await b(C,z,v);D(be=>be&&be.forkId===C&&be.promptId===z&&be.mode===v?{...be,plan:se}:be);}catch(se){Ce(se instanceof Error?se.message:String(se)),D(be=>be&&be.forkId===C&&be.promptId===z?null:be);}finally{ft(null);}},js=async s=>{if(!(!b||ve)){gt(null),Ce(null),ft(s),D({forkId:s,mode:"remove_step",scope:"fork",plan:null});try{let v=await b(s,void 0,"remove_step");D(C=>C&&C.forkId===s&&C.scope==="fork"?{...C,plan:v}:C);}catch(v){let C=v instanceof Error?v.message:String(v);mt(s),Ce(/not found/i.test(C)?`Error: ${C} for this fork`:`Error: ${C}`),D(z=>z&&z.forkId===s?null:z);}finally{ft(null);}}};useEffect(()=>{if(!Fe)return;let s=o[Fe.tipId]?.state;s==="complete"?(Et(null),tt(v=>v+1)):s==="error"&&(mt(Fe.forkId),Ce(`Error: couldn't ${Fe.kind==="disable"?"disable":Fe.kind==="enable"?"re-enable":"remove"} this fork \u2014 ${o[Fe.tipId]?.error??"the rewrite failed"}. Nothing was changed.`),Et(null),tt(v=>v+1));},[o,Fe]);let io=async()=>{if(!(!R||!Ct||Je)){Ve(true),Ce(null);try{await R(Ct,Ne.trim()),Tt(null),we(""),tt(s=>s+1);}catch(s){Ce(s instanceof Error?s.message:String(s));}finally{Ve(false);}}},ao=async(s,v)=>{if(!(!O||Ge)){gt(null),Ce(null),mt(null),Kt(true);try{let C=await O(s,v);C?.agentic&&C?.fork?.id?Et({forkId:s,tipId:C.fork.id,kind:v?"disable":"enable"}):tt(z=>z+1);}catch(C){let z=C instanceof Error?C.message:String(C);mt(s),/not found/i.test(z)?(Ce("Error: this fork no longer exists \u2014 refreshing the list."),setTimeout(()=>{mt(null),Ce(null),tt(se=>se+1);},1800)):Ce(`Error: ${z}`);}finally{Kt(false);}}},lo=async s=>{if(!(!I||!B?.plan||ve)){Pe(true),Ce(null);try{let v=await I({forkId:B.forkId,promptId:B.promptId,mode:B.mode,strategy:s}),C=B;D(null),v.agentic?Et({forkId:C.forkId,tipId:v.fork.id,kind:"delete"}):v.removed&&(W([]),ot(null)),tt(z=>z+1);}catch(v){Ce(v instanceof Error?v.message:String(v));}finally{Pe(false);}}},co=()=>{if(N){p();return}if(Ke){Pt?.close();return}Q(true),X$1(false),setTimeout(()=>p(),on);},zs=N||Ke?{position:"relative",width:"100%",height:"100%",background:"#ffffff",display:"flex",flexDirection:"column",fontFamily:'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'}:{position:"fixed",top:0,right:0,bottom:0,zIndex:2147483e3,width:hr,maxWidth:"100vw",background:"#ffffff",boxShadow:Nt?"-12px 0 32px -16px rgba(0, 0, 0, 0.18), -2px 0 8px -2px rgba(0, 0, 0, 0.06)":"none",borderLeft:"1px solid rgba(0, 0, 0, 0.08)",transform:Nt?"translateX(0)":"translateX(100%)",transition:`transform ${on}ms cubic-bezier(0.22, 1, 0.36, 1), box-shadow ${on}ms ease`,display:"flex",flexDirection:"column",fontFamily:'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'},uo=Wt.find(s=>s.id===Te)?.name??(F?"Fork":"Loading..."),Ks=[...Jt].sort((s,v)=>+!!s.disabledAt-+!!v.disabledAt),jt=Xe?[]:re?j.filter(s=>s.forkId===re||s.forkId==null):j,vt=B?.scope==="fork",We=B?.plan??null,fo=B?jsxs("div",{style:{animation:"__fork-expand-in 0.22s cubic-bezier(0.22, 1, 0.36, 1)",overflow:"hidden",background:"#f9fafb",border:"1px solid #f3f4f6",borderRadius:10,padding:"10px 12px"},children:[jsx("div",{style:{fontSize:13,fontWeight:600,color:"#111827",textAlign:"center"},children:B.mode==="revert_to"?"Go Back to This Point?":vt?"Delete This Fork?":"Remove This Change?"}),We?jsxs(Fragment,{children:[jsxs("div",{style:{fontSize:12,color:"#6b7280",marginTop:3,lineHeight:1.5,textAlign:"center"},children:[B.mode==="revert_to"?`${We.removes.length} later change${We.removes.length===1?"":"s"} will be discarded.`:We.laterSteps.length>0?`${We.laterSteps.length} later change${We.laterSteps.length===1?" was":"s were"} built on top of ${vt?"this fork":"this one"}.`:vt?"Deleting it is instant and cannot be undone.":"This is the latest change; removing it is instant.",We.busy&&" A run is in progress \u2014 try again once it finishes."]}),jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flexWrap:"wrap",gap:8,marginTop:10},children:[jsx("button",{onClick:()=>{D(null),Ce(null);},disabled:ve,style:{padding:"5px 12px",fontSize:12,fontWeight:500,borderRadius:7,border:"none",background:"#f3f4f6",color:"#374151",cursor:ve?"default":"pointer",transition:"background 0.12s"},onMouseEnter:s=>s.currentTarget.style.background="#e5e7eb",onMouseLeave:s=>s.currentTarget.style.background="#f3f4f6",children:"Cancel"}),We.strategies.some(s=>s.id==="keep_later")&&jsx("button",{onClick:()=>lo("keep_later"),disabled:ve,title:"The AI rewrites the later forks' code so their features survive without this one",style:{padding:"5px 12px",fontSize:12,fontWeight:500,borderRadius:7,border:"none",background:"#eef2ff",color:"#4338ca",cursor:ve?"default":"pointer",opacity:ve?.5:1,transition:"background 0.12s"},onMouseEnter:s=>s.currentTarget.style.background="#e0e7ff",onMouseLeave:s=>s.currentTarget.style.background="#eef2ff",children:`${vt?"Delete This Fork":"Remove This Change"} (~${We.strategies.find(s=>s.id==="keep_later")?.estimateMinutes??2}m)`}),jsx("button",{onClick:()=>lo("discard_later"),disabled:ve,title:We.laterSteps.length>0?"Instant \u2014 also removes everything built on top of this":"Instant",style:{padding:"5px 12px",fontSize:12,fontWeight:500,borderRadius:7,border:"none",background:"#fef2f2",color:"#b91c1c",cursor:ve?"default":"pointer",opacity:ve?.5:1,transition:"background 0.12s"},onMouseEnter:s=>s.currentTarget.style.background="#fee2e2",onMouseLeave:s=>s.currentTarget.style.background="#fef2f2",children:B.mode==="revert_to"?"Go Back to Here":We.laterSteps.length>0?vt?"Delete All Related":"Remove All Related":vt?"Delete":"Remove"})]})]}):jsx("div",{style:{fontSize:12,color:"#9ca3af",fontStyle:"italic",marginTop:4,textAlign:"center",animation:"__fork-pulse 1.2s ease-in-out infinite"},children:B.mode==="revert_to"?"Evaluating undo...":vt?"Evaluating delete...":"Evaluating remove..."})]}):null,An=gn?jsx("div",{style:{animation:"__fork-expand-in 0.22s cubic-bezier(0.22, 1, 0.36, 1)",marginTop:8,fontSize:12,color:"#b91c1c",background:"#fef2f2",border:"1px solid #fecaca",borderRadius:8,padding:"6px 10px"},children:gn}):null,Yn=jsxs(Fragment,{children:[jsx("style",{children:`
38
38
  @keyframes __fork-pulse {
39
39
  0%, 100% { opacity: 1; }
40
40
  50% { opacity: 0.5; }
@@ -60,9 +60,9 @@ import*as sr from'react';import sr__default,{createContext,useState,useRef,useEf
60
60
  scrollbar-width: thin;
61
61
  scrollbar-color: rgba(0, 0, 0, 0.12) transparent;
62
62
  }
63
- `}),jsxs("div",{className:"__fork-panel",style:Ds,children:[jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0 16px",height:54,boxSizing:"border-box",borderBottom:"1px solid rgba(229, 231, 235, 0.8)",flexShrink:0},children:[jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0,flex:1},children:[ce||Ke?jsxs(Fragment,{children:[jsx("button",{onClick:()=>{qe(null),Ge(false),rt.current=false;},style:{width:30,height:30,borderRadius:9,background:"#ffffff",border:"1px solid #e5e7eb",color:"#111827",cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",padding:0,flexShrink:0,transition:"background 0.12s, border-color 0.12s"},onMouseEnter:s=>{s.currentTarget.style.background="#f9fafb",s.currentTarget.style.borderColor="#d1d5db";},onMouseLeave:s=>{s.currentTarget.style.background="#ffffff",s.currentTarget.style.borderColor="#e5e7eb";},title:"Back to all forks",children:jsx(ChevronLeft,{style:{width:15,height:15}})}),(()=>{let s=ce?o[ce]:void 0,T=(s?s.events.find(j=>{let ie=j.data;return j.type==="status"&&ie.summary})?.data?.summary??s.fork.summary:void 0)||Vn?.summary||"New Feature";return jsx("span",{style:{fontSize:13.5,fontWeight:700,color:"#111827",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0},title:T,children:T})})()]}):jsxs(Fragment,{children:[jsx("span",{onDoubleClick:async s=>{if(s.stopPropagation(),!mn&&confirm("Kill all forks in this container?")){ze(true);try{let w=await Rs();`${w?.deleted??0}`,hn([]),qe(null),Ge(!1),H("");}catch(w){console.error("[Fork] Reset failed:",w);}finally{ze(false);}}},style:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:4,margin:-4,cursor:"pointer",flexShrink:0},children:jsx($n,{style:{width:16,height:16,color:"#111827",pointerEvents:"none"}})}),We==="running"?jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:Ls}):Dt.length===0&&!vn?jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:"Fork"}):vn?jsxs("div",{ref:Fn,style:{position:"relative",minWidth:0,display:"inline-flex"},children:[jsxs("button",{type:"button",onClick:()=>{M(s=>!s);},onMouseEnter:()=>ue(true),onMouseLeave:()=>ue(false),"aria-haspopup":"menu","aria-expanded":v,style:{display:"inline-flex",alignItems:"center",gap:4,padding:"3px 6px",border:"1px solid transparent",borderRadius:6,background:ee||v?"#f3f4f6":"transparent",fontSize:13,fontWeight:600,color:"#111827",fontFamily:"inherit",cursor:"pointer",maxWidth:180,minWidth:0,transition:"background-color 0.12s"},children:[jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:lo}),jsx(ChevronDown,{style:{width:12,height:12,color:"#6b7280",flexShrink:0,transform:v?"rotate(180deg)":void 0,transition:"transform 0.15s"}})]}),v&&jsxs("div",{role:"menu",style:{position:"absolute",top:"calc(100% + 4px)",left:0,minWidth:200,maxWidth:260,background:"#ffffff",border:"1px solid #e5e7eb",borderRadius:8,boxShadow:"0 4px 12px rgba(0,0,0,0.08), 0 1px 3px rgba(0,0,0,0.06)",padding:4,zIndex:2147483001},children:[Dt.map(s=>{let w=s.id===Te,T=le===s.id,j=se===s.id;return jsxs("button",{type:"button",role:"menuitem",onMouseEnter:()=>de(s.id),onMouseLeave:()=>de(null),onClick:()=>{s.id!==Te&&Ns(s.id);},disabled:!!se,style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"6px 8px",border:"none",background:T?"#f3f4f6":"transparent",borderRadius:4,fontSize:13,fontFamily:"inherit",color:"#111827",cursor:se?"default":"pointer",textAlign:"left",fontWeight:w?600:400,opacity:se&&!j?.55:1},children:[jsx("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:14,height:14,color:"#111827",flexShrink:0},children:w&&jsx(Check,{style:{width:12,height:12}})}),jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:j?"Switching...":s.name})]},s.id)}),jsx("div",{style:{height:1,background:"#e5e7eb",margin:"4px 0"}}),me?jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"4px 4px"},children:[jsx("input",{ref:Me,type:"text",value:Ae,placeholder:"Container name",disabled:se==="__new__",onChange:s=>be(s.target.value),onKeyDown:s=>{s.key==="Enter"?(s.preventDefault(),no(Ae)):s.key==="Escape"&&(s.preventDefault(),s.stopPropagation(),he(false),be(""));},style:{flex:1,minWidth:0,padding:"5px 8px",border:"1px solid #d1d5db",borderRadius:4,fontSize:13,fontFamily:"inherit",color:"#111827",background:"#ffffff",outline:"none"},onFocus:s=>{s.currentTarget.style.borderColor="#111827",s.currentTarget.style.boxShadow="0 0 0 2px rgba(17,24,39,0.15)";},onBlur:s=>{s.currentTarget.style.borderColor="#d1d5db",s.currentTarget.style.boxShadow="none";}}),jsx("button",{type:"button",onClick:()=>{no(Ae);},disabled:!Ae.trim()||se==="__new__",title:"Create",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:26,height:26,border:"none",borderRadius:4,background:!Ae.trim()||se==="__new__"?"#e5e7eb":"#111827",color:!Ae.trim()||se==="__new__"?"#9ca3af":"#ffffff",cursor:!Ae.trim()||se==="__new__"?"default":"pointer",flexShrink:0},children:se==="__new__"?jsx("span",{style:{width:10,height:10,border:"1.5px solid currentColor",borderTopColor:"transparent",borderRadius:"50%",animation:"__fork-spin 0.7s linear infinite"}}):jsx(Check,{style:{width:12,height:12}})})]}):jsx("button",{type:"button",role:"menuitem",onMouseEnter:()=>Se(true),onMouseLeave:()=>Se(false),onClick:()=>{se||(Pe(null),be(""),he(true));},disabled:!!se,style:{display:"flex",alignItems:"center",width:"100%",padding:"6px 8px",border:"none",background:we?"#f3f4f6":"transparent",borderRadius:4,fontSize:13,fontFamily:"inherit",color:"#111827",cursor:se?"default":"pointer",textAlign:"left",opacity:se&&se!=="__new__"?.55:1},children:"+ New container"}),Xe&&jsx("div",{style:{padding:"6px 8px",fontSize:11,lineHeight:1.35,color:"#b91c1c"},children:Xe})]})]}):jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:lo})]}),We==="running"&&jsx("span",{title:kt?`Estimated ~${kt} min`:"Estimating\u2026",style:{fontSize:10,fontWeight:600,color:kt?"#111827":"#9ca3af",backgroundColor:kt?"rgba(17, 24, 39, 0.08)":"rgba(156, 163, 175, 0.12)",padding:"1px 6px",borderRadius:999,flexShrink:0,fontVariantNumeric:"tabular-nums",animation:kt?void 0:"__fork-pulse 1.4s ease-in-out infinite",minWidth:28,textAlign:"center"},children:kt?`~${kt}m`:"~ m"})]}),jsxs("div",{style:{display:"flex",alignItems:"center",gap:2,flexShrink:0},children:[Cs&&!ce&&jsx("button",{type:"button",role:"switch","aria-checked":!_t,"aria-label":_t?"Turn Fork back on":"Turn Fork off",title:_t?"Fork is off \u2014 you're seeing the original app. Turn it back on. Only affects you.":"Turn Fork off to see the original app. Only affects you.",onClick:()=>{Is(!_t);},onMouseEnter:()=>Kr(true),onMouseLeave:()=>Kr(false),style:{position:"relative",width:26,height:15,borderRadius:999,border:"none",padding:0,marginRight:6,flexShrink:0,cursor:"pointer",backgroundColor:_t?zr?"#9ca3af":"#d1d5db":zr?"#374151":"#111827",transition:"background-color 0.18s ease",outline:"none",boxSizing:"border-box"},children:jsx("span",{"aria-hidden":true,style:{position:"absolute",top:2,left:_t?2:13,width:11,height:11,borderRadius:"50%",backgroundColor:"#ffffff",boxShadow:"0 1px 2px rgba(15, 23, 42, 0.25)",transition:"left 0.18s cubic-bezier(0.16, 1, 0.3, 1)"}})}),!U&&jsxs(Fragment,{children:[Jr&&jsx("button",{onClick:je?$s:Ts,onMouseEnter:()=>pe(true),onMouseLeave:()=>pe(false),title:je?"Redock to sidebar":"Pop out into window",style:{padding:6,borderRadius:6,color:re?"#4b5563":"#9ca3af",backgroundColor:re?"#f3f4f6":"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"background-color 0.15s, color 0.15s"},children:je?jsx(PictureInPicture,{style:{width:16,height:16}}):jsx(PictureInPicture2,{style:{width:16,height:16}})}),jsx("button",{onClick:ao,onMouseEnter:()=>Z(true),onMouseLeave:()=>Z(false),style:{padding:6,borderRadius:6,color:G?"#4b5563":"#9ca3af",backgroundColor:G?"#f3f4f6":"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"background-color 0.15s, color 0.15s"},children:jsx(X,{style:{width:16,height:16}})})]})]})]}),jsxs("div",{ref:yn,style:{flex:1,overflowY:"auto",minHeight:0,display:"flex",flexDirection:"column"},children:[dt&&jsx("div",{onClick:()=>ut(null),style:{position:"fixed",inset:0,zIndex:10}}),!ce&&!Ke&&jsxs("div",{style:{display:"flex",flexDirection:"column"},children:[Ct.length===0&&jsx("div",{style:{padding:"24px 20px",textAlign:"center",fontSize:13,color:"#6b7280"},children:"No forks yet. Describe a feature below to start one."}),Ct.length>0&&jsx("div",{style:{display:"flex",flexDirection:"column"},children:js.map((s,w)=>{let T=o[s.id],j=T?T.events.find(ne=>{let zs=ne.data;return ne.type==="status"&&zs.summary})?.data?.summary??T.fork.summary:void 0,ie=s.customName||j||s.summary||"Untitled fork",ve=!!Dr.find(ne=>ne.id===s.id)?.unread,Ye=o[s.id]?.state??s.status,He=Ye==="running"||Ye==="building"||Ye==="pending",Rn=!!s.revertedAt,uo=!!s.disabledAt;return jsxs(Fragment$1,{children:[jsxs("div",{style:{position:"relative"},children:[It===s.id?jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"10px 16px"},children:[jsx("input",{autoFocus:true,value:gn,disabled:Ee,onChange:ne=>pt(ne.target.value),onKeyDown:ne=>{ne.key==="Enter"&&so(),ne.key==="Escape"&&(ft(null),pt(""));},style:{flex:1,fontSize:13.5,fontWeight:600,color:"#111827",border:"1px solid #d1d5db",borderRadius:6,padding:"5px 8px",outline:"none",fontFamily:"inherit",minWidth:0}}),jsx("button",{onClick:so,disabled:Ee,style:{padding:"4px 10px",fontSize:12,fontWeight:500,borderRadius:6,border:"1px solid #e5e7eb",background:"#111827",color:"#ffffff",cursor:Ee?"default":"pointer",opacity:Ee?.5:1,flexShrink:0},children:"Save"}),jsx("button",{onClick:()=>{ft(null),pt("");},disabled:Ee,style:{padding:"4px 8px",fontSize:12,fontWeight:500,borderRadius:6,border:"none",background:"transparent",color:"#6b7280",cursor:Ee?"default":"pointer",flexShrink:0},children:"Cancel"})]}):jsxs("button",{onClick:()=>{Ge(false),qe(s.id);},style:{textAlign:"left",padding:"12px 72px 12px 16px",background:"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"flex-start",gap:8,width:"100%",transition:"background 0.12s",fontFamily:"inherit"},onMouseEnter:ne=>{ne.currentTarget.style.background="#fafafa";},onMouseLeave:ne=>{ne.currentTarget.style.background="transparent";},children:[ve&&jsx("span",{"aria-label":"Not viewed yet",title:"Not viewed yet",style:{width:7,height:7,borderRadius:"50%",backgroundColor:"#111827",flexShrink:0,marginTop:5}}),jsxs("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:5,alignItems:"flex-start"},children:[jsx("span",{style:{fontSize:13.5,fontWeight:600,color:Rn||uo?"#9ca3af":"#111827",textDecoration:Rn?"line-through":"none",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},children:ie}),jsx("span",{style:{fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, "Liberation Mono", "Courier New", monospace',fontSize:10,color:"#9ca3af",background:"#f8f9fa",borderRadius:5,padding:"1px 6px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%",boxSizing:"border-box"},children:s.targetId})]}),Rn&&jsx("span",{style:{fontSize:10,fontWeight:600,color:"#9ca3af",border:"1px solid #e5e7eb",borderRadius:4,padding:"1px 5px",flexShrink:0,alignSelf:"center"},children:"removed"}),uo&&!Rn&&jsx("span",{style:{fontSize:10,fontWeight:600,color:"#6b7280",background:"#f3f4f6",border:"1px solid #e5e7eb",borderRadius:5,padding:"3px 8px",flexShrink:0,alignSelf:"center"},children:"disabled"}),He&&jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:5,background:"#fff7ed",border:"1px solid #fed7aa",color:"#c2410c",borderRadius:999,padding:"2px 9px",fontSize:11,fontWeight:600,flexShrink:0},children:[jsx("span",{style:{width:6,height:6,borderRadius:"50%",background:"#f59e0b",animation:"__fork-pulse 1.4s ease-in-out infinite"}}),"Running"]}),Ye==="error"&&jsx("span",{style:{display:"inline-flex",alignItems:"center",gap:5,background:"#fef2f2",border:"1px solid #fecaca",color:"#b91c1c",borderRadius:999,padding:"2px 9px",fontSize:11,fontWeight:600,flexShrink:0},children:"Failed"})]}),It!==s.id&&jsxs("div",{style:{position:"absolute",top:0,bottom:0,right:10,display:"flex",alignItems:"center",gap:8,pointerEvents:"none"},children:[jsx("span",{style:{fontSize:11.5,color:"#9ca3af",flexShrink:0},children:mr(s.updatedAt)}),jsx("button",{"aria-label":"Fork actions",onClick:ne=>{ne.stopPropagation(),ut(dt===s.id?null:s.id);},style:{padding:4,borderRadius:6,border:"none",background:dt===s.id?"#f3f4f6":"transparent",color:"#9ca3af",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"auto"},onMouseEnter:ne=>{ne.currentTarget.style.background="#f3f4f6",ne.currentTarget.style.color="#4b5563";},onMouseLeave:ne=>{dt!==s.id&&(ne.currentTarget.style.background="transparent"),ne.currentTarget.style.color="#9ca3af";},children:jsx(MoreHorizontal,{style:{width:15,height:15}})})]}),dt===s.id&&jsxs("div",{style:{position:"absolute",top:32,right:8,zIndex:20,background:"#ffffff",border:"1px solid #e5e7eb",borderRadius:8,boxShadow:"0 8px 24px rgba(0,0,0,0.10)",padding:4,minWidth:130,display:"flex",flexDirection:"column"},children:[R&&jsx("button",{onClick:ne=>{ne.stopPropagation(),ut(null),ft(s.id),pt(s.customName??ie);},style:{padding:"6px 10px",fontSize:12,fontWeight:500,textAlign:"left",border:"none",borderRadius:6,background:"transparent",color:"#111827",cursor:"pointer"},onMouseEnter:ne=>ne.currentTarget.style.background="#f3f4f6",onMouseLeave:ne=>ne.currentTarget.style.background="transparent",children:"Rename"}),N&&jsx("button",{onClick:ne=>{ne.stopPropagation(),Bs(s.id,!s.disabledAt);},disabled:Et||He,style:{padding:"6px 10px",fontSize:12,fontWeight:500,textAlign:"left",border:"none",borderRadius:6,background:"transparent",color:"#111827",cursor:Et||He?"default":"pointer",opacity:Et||He?.5:1},onMouseEnter:ne=>ne.currentTarget.style.background="#f3f4f6",onMouseLeave:ne=>ne.currentTarget.style.background="transparent",children:s.disabledAt?"Enable":"Disable"}),h&&C&&jsx("button",{onClick:ne=>{ne.stopPropagation(),Us(s.id);},disabled:ke||ae!==null||He,style:{padding:"6px 10px",fontSize:12,fontWeight:500,textAlign:"left",border:"none",borderRadius:6,background:"transparent",color:"#b91c1c",cursor:ke||ae||He?"default":"pointer",opacity:ke||ae||He?.5:1},onMouseEnter:ne=>ne.currentTarget.style.background="#fef2f2",onMouseLeave:ne=>ne.currentTarget.style.background="transparent",children:"Delete"})]})]}),(Q?.forkId===s.id||tt===s.id)&&!ce&&jsxs("div",{style:{padding:"2px 16px 12px 16px"},children:[co,An]}),w<Ct.length-1&&jsx("div",{style:{height:1,background:"#f3f4f6",margin:"0 16px",flexShrink:0}})]},s.id)})}),!Q&&!tt&&An&&jsx("div",{style:{padding:"0 16px 12px 16px"},children:An})]}),ce&&Nt.length>0&&jsxs("div",{style:{margin:"16px 16px 0 16px"},children:[Nt.map((s,w)=>jsx("div",{style:{marginBottom:w<Nt.length-1?12:0},children:s.type==="user"?jsx("div",{style:{display:"flex",justifyContent:"flex-end"},children:jsxs("div",{style:{backgroundColor:"#f3f4f6",borderRadius:12,padding:"10px 14px",fontSize:13,color:s.reverted?"#9ca3af":"#374151",textDecoration:s.reverted?"line-through":"none",lineHeight:1.5,maxWidth:"85%"},children:[s.attachments&&s.attachments.length>0&&jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:4,marginBottom:6},children:s.attachments.map((T,j)=>jsx("img",{src:T.dataUrl,alt:"attachment",style:{maxWidth:150,maxHeight:110,borderRadius:8,border:"1px solid #e5e7eb",display:"block",objectFit:"cover"}},j))}),s.selectedElement&&jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:4,background:"#eef2ff",border:"1px solid #c7d2fe",color:"#4338ca",borderRadius:999,padding:"2px 8px",fontSize:10.5,fontWeight:500,marginRight:6,maxWidth:"100%"},children:[jsx(MousePointer2,{style:{width:10,height:10,flexShrink:0}}),jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},children:s.selectedElement.label})]}),s.text]})}):D==="item"&&w===Nt.length-1?jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:12,padding:12,borderRadius:8,border:"1px solid #e4e4e7",background:"#ffffff"},children:[jsx("div",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,flexShrink:0,borderRadius:6,background:"#f4f4f5",color:"#0a0a0a"},children:jsx(BadgeCheck,{style:{width:16,height:16}})}),jsxs("div",{style:{display:"flex",flexDirection:"column",gap:2,flex:1,minWidth:0},children:[jsx("div",{style:{fontSize:13,fontWeight:500,color:"#0a0a0a",lineHeight:1.3},children:"Feature applied"}),jsx("div",{style:{fontSize:13,color:"#71717a",lineHeight:1.4},children:s.text})]}),A&&We!=="running"&&jsx("button",{onClick:T=>{T.stopPropagation(),ro();},disabled:c,style:{padding:"4px 10px",fontSize:12,fontWeight:500,borderRadius:6,border:"1px solid #e4e4e7",background:"#ffffff",color:"#0a0a0a",cursor:c?"default":"pointer",opacity:c?.4:1,height:28,flexShrink:0},children:"Undo"})]}):jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:8,background:"#ffffff",border:"1px solid #e5e7eb",borderRadius:10,boxShadow:"0 1px 2px rgba(0, 0, 0, 0.03)",padding:"9px 12px",maxWidth:"90%",boxSizing:"border-box"},children:[jsx("span",{style:{width:7,height:7,borderRadius:"50%",background:"#94a3b8",flexShrink:0}}),jsx("span",{style:{fontSize:12.5,fontWeight:600,color:s.reverted?"#9ca3af":"#334155",textDecoration:s.reverted?"line-through":"none",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:s.text}),s.reverted&&jsx("span",{style:{fontSize:10,fontWeight:600,color:"#9ca3af",border:"1px solid #e5e7eb",borderRadius:4,padding:"1px 5px",flexShrink:0},children:"removed"}),s.timestamp&&jsx("span",{style:{fontSize:11,color:"#9ca3af",flexShrink:0},children:mr(s.timestamp)}),h&&C&&s.promptId&&!s.reverted&&w!==Nt.length-1&&We!=="running"&&jsxs("span",{style:{display:"inline-flex",gap:4,flexShrink:0},children:[jsx("button",{onClick:T=>{T.stopPropagation(),oo(s,"revert_to");},disabled:ke||ae!==null,title:"Go back to this point \u2014 discard every later change",style:{padding:"1px 6px",fontSize:10,fontWeight:500,borderRadius:4,border:"1px solid #e5e7eb",background:"#ffffff",color:"#6b7280",cursor:ke||ae?"default":"pointer",opacity:ae===s.promptId?.5:1},children:"To here"}),jsx("button",{onClick:T=>{T.stopPropagation(),oo(s,"remove_step");},disabled:ke||ae!==null,title:"Remove this change (choose what happens to later ones)",style:{padding:"1px 6px",fontSize:10,fontWeight:500,borderRadius:4,border:"1px solid #e5e7eb",background:"#ffffff",color:"#b91c1c",cursor:ke||ae?"default":"pointer",opacity:ae===s.promptId?.5:1},children:"Remove"})]}),A&&w===Nt.length-1&&We!=="running"&&jsxs("button",{onClick:T=>{T.stopPropagation(),ro();},onMouseEnter:()=>K(w),onMouseLeave:()=>K(null),disabled:c,style:{position:"relative",padding:2,borderRadius:4,border:"none",background:I===w?"rgba(0,0,0,0.06)":"transparent",color:I===w?"#6b7280":"#d1d5db",cursor:c?"default":"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"color 0.15s, background 0.15s",opacity:c?.4:1,flexShrink:0},children:[jsx(Undo2,{style:{width:12,height:12}}),I===w&&jsx("span",{style:{position:"absolute",bottom:"calc(100% + 4px)",right:0,fontSize:10,fontWeight:500,color:"#fff",background:"#374151",borderRadius:4,padding:"2px 6px",whiteSpace:"nowrap",pointerEvents:"none",lineHeight:"16px"},children:"Undo"})]})]})},w)),co,An]}),We==="running"&&jsx("div",{style:{margin:"12px 16px 0 16px"},children:jsxs("div",{onClick:()=>E(!b),style:{background:"#ffffff",border:"1px solid #e5e7eb",borderRadius:10,boxShadow:"0 1px 2px rgba(0, 0, 0, 0.03)",overflow:"hidden",cursor:"pointer",transition:"all 0.3s cubic-bezier(0.22, 1, 0.36, 1)"},children:[jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"9px 12px"},children:[jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[jsx("span",{style:{width:7,height:7,borderRadius:"50%",background:"#f59e0b",flexShrink:0,animation:"__fork-pulse 1.4s ease-in-out infinite"}}),jsx(ga,{events:Ht},ce??"__compose__")]}),jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,flexShrink:0,marginLeft:8},children:[Ht[0]?.timestamp&&jsx("span",{style:{fontSize:11,color:"#9ca3af"},children:mr(Ht[0].timestamp)}),jsx("div",{style:{color:"#9ca3af",transition:"transform 0.2s ease",transform:b?"rotate(180deg)":"rotate(0deg)",display:"flex"},children:jsx(ChevronDown,{style:{width:14,height:14}})})]})]}),jsx("div",{style:{maxHeight:b?320:0,opacity:b?1:0,transition:"max-height 0.35s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.25s ease",overflow:"hidden"},children:jsx("div",{style:{background:"#1a1a2e",borderTop:"1px solid #e5e7eb",maxHeight:320,overflowY:"auto"},children:jsx(Po,{events:Ht},ce??"__compose__")})})]})}),We==="error"&&jsxs("div",{style:{padding:"20px 16px",textAlign:"center"},children:[jsx("div",{style:{width:36,height:36,backgroundColor:"#fef2f2",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto 10px auto"},children:jsx(X,{style:{width:18,height:18,color:"#ef4444"}})}),jsx("p",{style:{fontSize:12,color:"#6b7280",marginBottom:10,maxWidth:260,margin:"0 auto 10px auto"},children:Ps??r}),jsxs("button",{onClick:()=>{let s=Xn?.prompt||Sn.current;s&&S(s,Wt);},onMouseEnter:()=>f(true),onMouseLeave:()=>f(false),style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 12px",borderRadius:8,fontSize:12,fontWeight:500,color:"#111827",backgroundColor:te?"#e5e7eb":"#f3f4f6",border:"none",cursor:"pointer",transition:"background-color 0.15s",fontFamily:"inherit"},children:[jsx(RotateCcw,{style:{width:12,height:12}})," Try Again"]})]})]}),!(ce?We==="running":Ke&&e==="running")&&jsxs("div",{style:{padding:"8px 12px 12px 12px",flexShrink:0,position:"relative"},children:[Pr&&jsx("div",{style:{position:"absolute",top:-42,left:"50%",transform:"translateX(-50%)",background:"#111827",color:"#ffffff",fontSize:12,fontWeight:500,padding:"7px 14px",borderRadius:999,boxShadow:"0 4px 16px rgba(0, 0, 0, 0.22)",whiteSpace:"nowrap",maxWidth:gr-32,overflow:"hidden",textOverflow:"ellipsis",pointerEvents:"none",zIndex:5},children:Pr}),jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6,borderRadius:14,padding:"10px 10px 8px 12px",background:"#ffffff",border:"1px solid #e5e7eb",boxShadow:"0 1px 2px rgba(0, 0, 0, 0.03)"},children:[(ot.length>0||ht)&&jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:6,alignItems:"center"},children:[ot.map(s=>jsxs("div",{onMouseEnter:()=>Ur(s.id),onMouseLeave:()=>Ur(null),style:{position:"relative",width:44,height:44,borderRadius:8,overflow:"hidden",border:"1px solid #e5e7eb",flexShrink:0},children:[jsx("img",{src:s.dataUrl,alt:"attachment",style:{width:"100%",height:"100%",objectFit:"cover",display:"block"}}),jsx("button",{onClick:()=>zn(w=>w.filter(T=>T.id!==s.id)),title:"Remove image",style:{position:"absolute",top:2,right:2,width:15,height:15,borderRadius:"50%",background:"rgba(17, 24, 39, 0.78)",color:"#ffffff",border:"none",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",padding:0,opacity:As===s.id?1:.6,transition:"opacity 0.12s"},children:jsx(X,{style:{width:9,height:9}})})]},s.id)),ht&&jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:5,background:"#eef2ff",border:"1px solid #c7d2fe",color:"#4338ca",borderRadius:999,padding:"4px 6px 4px 9px",fontSize:11,fontWeight:500,maxWidth:"100%",minWidth:0},children:[jsx(MousePointer2,{style:{width:11,height:11,flexShrink:0}}),jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},children:Ln(ht)}),jsx("button",{onClick:()=>Kn(null),title:"Remove element context",style:{width:14,height:14,borderRadius:"50%",background:"transparent",color:"#6366f1",border:"none",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",padding:0,flexShrink:0},children:jsx(X,{style:{width:10,height:10}})})]})]}),jsx("textarea",{ref:Tt,value:P,onChange:s=>H(s.target.value),onPaste:s=>{let w=Lo(s.nativeEvent);w.length>0&&(s.preventDefault(),Gr(w));},onKeyDown:s=>{s.key==="Enter"&&!s.shiftKey&&(s.preventDefault(),Qr()),s.key==="Escape"&&!U&&ao();},placeholder:ce?"Iterate on this feature...":"Start building a new Fork...",rows:1,style:{width:"100%",backgroundColor:"transparent",fontSize:13,color:"#111827",border:"none",outline:"none",padding:0,fontFamily:"inherit",resize:"none",lineHeight:1.5,maxHeight:160,overflow:"auto",boxSizing:"border-box"}}),jsxs("div",{style:{display:"flex",alignItems:"center",gap:2},children:[jsx("button",{onClick:()=>Lr.current?.click(),onMouseEnter:()=>Hr(true),onMouseLeave:()=>Hr(false),title:"Attach an image",style:{width:28,height:28,borderRadius:8,display:"flex",alignItems:"center",justifyContent:"center",background:Ss?"rgba(0, 0, 0, 0.05)":"transparent",color:"#6b7280",border:"none",cursor:"pointer",padding:0,flexShrink:0,transition:"background 0.12s"},children:jsx(ImagePlus,{style:{width:16,height:16}})}),jsx("button",{onClick:Hs,onMouseEnter:()=>Or(true),onMouseLeave:()=>Or(false),title:yt?"Cancel element selection":"Select an element on the page",style:{width:28,height:28,borderRadius:8,display:"flex",alignItems:"center",justifyContent:"center",background:yt?"#eef2ff":xs?"rgba(0, 0, 0, 0.05)":"transparent",color:yt?"#4f46e5":"#6b7280",border:"none",cursor:"pointer",padding:0,flexShrink:0,transition:"background 0.12s, color 0.12s"},children:jsx(MousePointer2,{style:{width:16,height:16}})}),jsx("div",{style:{flex:1}}),jsx("button",{onClick:Os,onMouseEnter:()=>Nr(true),onMouseLeave:()=>Nr(false),title:Mt?"Stop voice input":"Voice input",style:{width:28,height:28,borderRadius:8,display:"flex",alignItems:"center",justifyContent:"center",background:Mt?"#fef2f2":Fs?"rgba(0, 0, 0, 0.05)":"transparent",color:Mt?"#dc2626":"#6b7280",border:"none",cursor:"pointer",padding:0,flexShrink:0,transition:"background 0.12s, color 0.12s",animation:Mt?"__fork-pulse 1.4s ease-in-out infinite":void 0},children:jsx(Mic,{style:{width:16,height:16}})}),jsx("button",{onClick:Qr,disabled:!Ot,onMouseEnter:()=>ye(true),onMouseLeave:()=>ye(false),title:"Send",style:{width:28,height:28,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",color:"#ffffff",opacity:Ot?1:.35,transform:oe&&Ot?"scale(1.08)":"scale(1)",background:Ot?"#111827":"rgba(0, 0, 0, 0.12)",border:"none",cursor:Ot?"pointer":"default",flexShrink:0,transition:"transform 0.15s, opacity 0.15s, background 0.15s",padding:0,marginLeft:4},children:jsx(ArrowUp,{style:{width:14,height:14}})})]})]}),jsx("input",{ref:Lr,type:"file",accept:"image/*",multiple:true,style:{display:"none"},onChange:s=>{let w=Array.from(s.target.files??[]);s.target.value="",Gr(w);}})]})]})]});return U?qn:je&&nt?createPortal(qn,nt.document.body):jsx(ma,{children:qn})}function Wo(e){if("target"in e&&e.target)return e.target;if("boundaryId"in e&&e.boundaryId)return {type:"boundary",id:e.boundaryId,title:e.title};if("slotId"in e&&e.slotId)return {type:"slot",id:e.slotId,title:e.title??e.slotLabel};throw new Error("Fork chat target requires either target, slotId, or boundaryId.")}function hr(e){let{apiKey:t,userId:n,userHash:r,baseUrl:o,appId:i,adminContext:a,refreshModuleManifest:l,queueBoundaryAnimation:d,trackForkActivity:S,recordForkActivityEvent:A}=Ce(),[h,C]=useState({}),[N,R]=useState(null),[p,u]=useState("idle"),[$,F]=useState(false),[m,L]=useState(null),U=useRef(new Map),D=useCallback((f,b)=>{C(E=>{let y=E[f]??{forkId:f,state:"running",fork:b.fork,events:[],error:null};return {...E,[f]:{...y,...b}}});},[]),P=useCallback((f,b)=>{C(E=>{let c=E[f];return c?{...E,[f]:{...c,events:[...c.events,b]}}:E});},[]),H=useCallback(f=>{let b=U.current.get(f);b&&(b.close(),U.current.delete(f));},[]),B=useCallback(()=>{u("prompting"),L(null),F(false),R(null);},[]),z=useCallback(()=>{u("idle"),F(false),L(null),R(null);for(let f of U.current.values())f.close();U.current.clear(),C({});},[]),_=useCallback((f,b)=>{H(f.id);let E=new URLSearchParams({key:t});n&&E.set("userId",n),r&&E.set("userHash",r),a.isAdmin&&a.containerId&&E.set("containerId",a.containerId);let c=new EventSource(`${o}/api/v1/forks/${f.id}/events?${E.toString()}`);U.current.set(f.id,c),c.onmessage=y=>{try{let I=JSON.parse(y.data);if(A(f.id,I),P(f.id,I),I.type==="complete"){let K=I.data;d(b,f.id),l().catch(()=>{}).finally(()=>{let Q={...f,status:"complete",moduleUrl:K.moduleUrl,cssUrls:K.cssUrls,summary:K.summary,completedAt:new Date().toISOString()};D(f.id,{state:"complete",fork:Q}),H(f.id);});}else if(I.type==="error"){let K=I.data;D(f.id,{state:"error",error:K.error||"Unknown error"}),H(f.id);}}catch{}},c.onerror=()=>{let y={Authorization:`Bearer ${t}`,...fe()};n&&(y["X-Fork-User-Id"]=n),r&&(y["X-Fork-User-Hash"]=r),fetch(`${o}/api/v1/forks/${f.id}`,{headers:y}).then(I=>I.json()).then(I=>{I.status==="complete"?(d(b,I.id),l().catch(()=>{}),D(f.id,{state:"complete",fork:I})):I.status==="error"?D(f.id,{state:"error",fork:I,error:I.error||"Fork generation failed"}):D(f.id,{fork:I});}).catch(()=>{D(f.id,{state:"error",error:"Connection lost"});}),H(f.id);};},[a.containerId,a.isAdmin,t,P,o,H,d,A,l,D,r,n]),x=useCallback(async(f,b,E)=>{try{if(!i)throw new Error("ForkProvider requires appId for module boundary prompts.");F(!0),L(null),R(null);let c;if(E?.forkId){let y={prompt:f};n&&(y.userId=n),r&&(y.userHash=r),E?.attachments?.length&&(y.attachments=E.attachments),E?.selectedElement&&(y.selectedElement=E.selectedElement);let I=await fetch(`${o}/api/v1/forks/${encodeURIComponent(E.forkId)}/prompts`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`,...fe()},body:JSON.stringify(y)});if(!I.ok){let K=await I.json().catch(()=>({}));throw new Error(K.error||`API error: ${I.status}`)}c=await I.json();}else {let y={userId:n,prompt:f,boundaryId:e,appId:i};b?y.containerId=b:a.isAdmin&&a.containerId&&(y.containerId=a.containerId),r&&(y.userHash=r),E?.forceNew&&(y.force_new=!0),E?.attachments?.length&&(y.attachments=E.attachments),E?.selectedElement&&(y.selectedElement=E.selectedElement);let I=await fetch(`${o}/api/v1/forks`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`,...fe()},body:JSON.stringify(y)});if(!I.ok){let K=await I.json().catch(()=>({}));throw new Error(K.error||`API error: ${I.status}`)}c=await I.json();}C(y=>({...y,[c.id]:{forkId:c.id,state:"running",fork:c,events:[],error:null}})),R(c.id),F(!1),S(c,{targetKind:"module",targetId:e}),_(c,c.boundaryId??e);}catch(c){L(c.message),F(false);}},[a.containerId,a.isAdmin,t,i,o,e,_,S,r,n]),O=useCallback(async f=>{try{let b={Authorization:`Bearer ${t}`,...fe()};n&&(b["X-Fork-User-Id"]=n),r&&(b["X-Fork-User-Hash"]=r);let E=await fetch(`${o}/api/v1/forks/${f}`,{headers:b});if(!E.ok)return;let c=await E.json(),y=c.boundaryId??e;if(S(c,{targetKind:"module",targetId:y}),c.status==="complete"){C(I=>({...I,[c.id]:{forkId:c.id,state:"complete",fork:c,events:[],error:null}})),R(c.id);return}if(c.status==="error"){C(I=>({...I,[c.id]:{forkId:c.id,state:"error",fork:c,events:[],error:c.error||"Fork generation failed"}})),R(c.id);return}if(c.status!=="pending"&&c.status!=="running"&&c.status!=="building")return;C(I=>({...I,[c.id]:{forkId:c.id,state:"running",fork:c,events:[],error:null}})),R(c.id),_(c,y);}catch{}},[t,o,e,_,S,r,n]),V=useCallback(async f=>{try{if(!i)throw new Error("ForkProvider requires appId for boundary undo.");let b={userId:n,boundaryId:e,appId:i};r&&(b.userHash=r),f&&(b.fork_id=f);let E=await fetch(`${o}/api/v1/forks/undo`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(b)});if(!E.ok){let y=await E.json().catch(()=>({}));throw new Error(y.error||`API error: ${E.status}`)}let c=await E.json();if(await l().catch(()=>{}),c.removed)C(y=>{let I={};for(let[K,Q]of Object.entries(y))(Q.fork.boundaryId??e)!==e&&(I[K]=Q);return I}),R(null),u("prompting");else if(c.fork){let y=c.fork;D(y.id,{state:"complete",fork:y}),R(y.id);}return c}catch(b){throw L(b.message),b}},[t,i,o,e,l,D,r,n]),X=useCallback(async(f,b,E="remove_step")=>{let c={Authorization:`Bearer ${t}`,...fe()};n&&(c["X-Fork-User-Id"]=n),r&&(c["X-Fork-User-Hash"]=r);let y=new URLSearchParams({mode:E});b&&y.set("prompt_id",b);let I=await fetch(`${o}/api/v1/forks/${encodeURIComponent(f)}/revert-plan?${y.toString()}`,{headers:c});if(!I.ok){let K=await I.json().catch(()=>({}));throw new Error(K.error||`API error: ${I.status}`)}return I.json()},[t,o,r,n]),Y=useCallback(async f=>{try{let b={userId:n,mode:f.mode,strategy:f.strategy};f.promptId&&(b.prompt_id=f.promptId),r&&(b.userHash=r);let E=await fetch(`${o}/api/v1/forks/${encodeURIComponent(f.forkId)}/revert`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`,...fe()},body:JSON.stringify(b)});if(!E.ok){let y=await E.json().catch(()=>({}));throw new Error(y.error||`API error: ${E.status}`)}let c=await E.json();return c.agentic?(await O(c.fork.id),c):(await l().catch(()=>{}),c.removed?(C(y=>{let I={};for(let[K,Q]of Object.entries(y))(Q.fork.boundaryId??e)!==e&&(I[K]=Q);return I}),R(null),u("prompting")):c.fork&&(D(c.fork.id,{state:"complete",fork:c.fork}),R(c.fork.id)),c)}catch(b){throw L(b.message),b}},[O,t,o,e,l,D,r,n]),G=useCallback(async(f,b)=>{let E={userId:n,name:b};r&&(E.userHash=r);let c=await fetch(`${o}/api/v1/forks/${encodeURIComponent(f)}/name`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`,...fe()},body:JSON.stringify(E)});if(!c.ok){let y=await c.json().catch(()=>({}));throw new Error(y.error||`API error: ${c.status}`)}return c.json()},[t,o,r,n]),Z=useCallback(async(f,b)=>{let E={userId:n,disabled:b};r&&(E.userHash=r);let c=await fetch(`${o}/api/v1/forks/${encodeURIComponent(f)}/disabled`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`,...fe()},body:JSON.stringify(E)});if(!c.ok){let I=await c.json().catch(()=>({}));throw new Error(I.error||`API error: ${c.status}`)}let y=await c.json();return await l().catch(()=>{}),y},[t,o,l,r,n]),re=N?h[N]??null:null,pe=$?"running":m?"error":re?re.state:p,oe=re?.fork??null,ye=re?.events??[],te=m??re?.error??null;return {state:pe,fork:oe,events:ye,error:te,runs:h,open:B,close:z,startFork:x,undoFork:V,planRevert:X,revertFork:Y,setForkDisabled:Z,renameFork:G,adoptRunningFork:O}}var ka=0;function Xo(e){let{state:t,fork:n,events:r,error:o,runs:i,open:a,close:l,startFork:d,undoFork:S,planRevert:A,revertFork:h,setForkDisabled:C,renameFork:N,adoptRunningFork:R}=hr(e),[p,u]=useState(false),$=useRef(null),F=useRef(t),m=useCallback(()=>{$.current!==null&&(clearTimeout($.current),$.current=null);},[]),L=useCallback(()=>{m(),u(true),a();},[m,a]),U=useCallback(()=>{m(),u(false),l();},[m,l]),D=useCallback(async H=>{m(),u(true),await R(H);},[R,m]),P=Object.values(i).filter(H=>H.state==="running").length;return useEffect(()=>{let H=F.current;F.current=t,t==="complete"&&H==="running"&&p&&P===0&&(m(),$.current=setTimeout(()=>{$.current=null,u(false),l();},ka)),(t==="running"||t==="prompting")&&m();},[t,p,P,m,l]),useEffect(()=>m,[m]),{state:t,fork:n,events:r,error:o,runs:i,isOpen:p,open:L,close:U,submit:d,undo:S,planRevert:A,revertFork:h,setForkDisabled:C,renameFork:N,adoptRunningFork:D}}function yr(){let{apiKey:e,userId:t,userHash:n,baseUrl:r,adminContext:o,setSlotFork:i,clearSlotFork:a,skipAnimationForSlot:l,trackForkActivity:d,recordForkActivityEvent:S,refreshModuleManifest:A}=Ce(),[h,C]=useState({}),[N,R]=useState(null),[p,u]=useState("idle"),[$,F]=useState(false),[m,L]=useState(null),U=useRef(new Map),D=useCallback((f,b)=>{C(E=>{let y=E[f]??{forkId:f,state:"running",fork:b.fork,events:[],error:null};return {...E,[f]:{...y,...b}}});},[]),P=useCallback((f,b)=>{C(E=>{let c=E[f];return c?{...E,[f]:{...c,events:[...c.events,b]}}:E});},[]),H=useCallback(f=>{let b=U.current.get(f);b&&(b.close(),U.current.delete(f));},[]),B=useCallback(()=>{u("prompting"),L(null),F(false),R(null);},[]),z=useCallback(()=>{u("idle"),F(false),L(null),R(null);for(let f of U.current.values())f.close();U.current.clear(),C({});},[]),_=useCallback((f,b)=>{H(f.id);let E=new URLSearchParams({key:e});t&&E.set("userId",t),n&&E.set("userHash",n),o.isAdmin&&o.containerId&&E.set("containerId",o.containerId);let c=new EventSource(`${r}/api/v1/forks/${f.id}/events?${E.toString()}`);U.current.set(f.id,c),c.onmessage=y=>{try{let I=JSON.parse(y.data);if(S(f.id,I),P(f.id,I),I.type==="complete"){let K=I.data,Q={...f,status:"complete",bundleUrl:K.bundleUrl,summary:K.summary,revealPending:!0,completedAt:new Date().toISOString()};D(f.id,{state:"complete",fork:Q});let J=b??f.slotId;J&&K.bundleUrl&&i(J,Q),H(f.id);}else if(I.type==="error"){let K=I.data;D(f.id,{state:"error",error:K.error||"Unknown error"}),H(f.id);}}catch{}},c.onerror=()=>{let y={Authorization:`Bearer ${e}`,...fe()};t&&(y["X-Fork-User-Id"]=t),n&&(y["X-Fork-User-Hash"]=n),fetch(`${r}/api/v1/forks/${f.id}`,{headers:y}).then(I=>I.json()).then(I=>{if(I.status==="complete"){D(f.id,{state:"complete",fork:{...I,revealPending:true}});let K=b??I.slotId;K&&I.bundleUrl&&i(K,{...I,revealPending:true});}else I.status==="error"?D(f.id,{state:"error",fork:I,error:I.error||"Fork generation failed"}):D(f.id,{fork:I});}).catch(()=>{D(f.id,{state:"error",error:"Connection lost"});}),H(f.id);};},[o.containerId,o.isAdmin,e,P,r,H,S,i,D,n,t]),x=useCallback(async(f,b,E,c)=>{try{F(!0),L(null),R(null);let y;if(c?.forkId){let K={prompt:f};t&&(K.userId=t),n&&(K.userHash=n),c?.attachments?.length&&(K.attachments=c.attachments),c?.selectedElement&&(K.selectedElement=c.selectedElement);let Q=await fetch(`${r}/api/v1/forks/${encodeURIComponent(c.forkId)}/prompts`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,...fe()},body:JSON.stringify(K)});if(!Q.ok){let J=await Q.json().catch(()=>({}));throw new Error(J.error||`API error: ${Q.status}`)}y=await Q.json();}else {let K={userId:t,prompt:f};b&&(K.slotId=b),E?K.containerId=E:o.isAdmin&&o.containerId&&(K.containerId=o.containerId),n&&(K.userHash=n),c?.forceNew&&(K.force_new=!0),c?.attachments?.length&&(K.attachments=c.attachments),c?.selectedElement&&(K.selectedElement=c.selectedElement);let Q=await fetch(`${r}/api/v1/forks`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,...fe()},body:JSON.stringify(K)});if(!Q.ok){let J=await Q.json().catch(()=>({}));throw new Error(J.error||`API error: ${Q.status}`)}y=await Q.json();}C(K=>({...K,[y.id]:{forkId:y.id,state:"running",fork:y,events:[],error:null}})),R(y.id),F(!1);let I=b??y.slotId;I&&d(y,{targetKind:"slot",targetId:I}),_(y,b);}catch(y){L(y.message),F(false);}},[o.containerId,o.isAdmin,e,r,_,d,n,t]),O=useCallback(async f=>{try{let b={Authorization:`Bearer ${e}`,...fe()};t&&(b["X-Fork-User-Id"]=t),n&&(b["X-Fork-User-Hash"]=n);let E=await fetch(`${r}/api/v1/forks/${f}`,{headers:b});if(!E.ok)return;let c=await E.json();if(c.slotId&&d(c,{targetKind:"slot",targetId:c.slotId}),c.status==="complete"){C(y=>({...y,[c.id]:{forkId:c.id,state:"complete",fork:c,events:[],error:null}})),R(c.id);return}if(c.status==="error"){C(y=>({...y,[c.id]:{forkId:c.id,state:"error",fork:c,events:[],error:c.error||"Fork generation failed"}})),R(c.id);return}if(c.status!=="pending"&&c.status!=="running"&&c.status!=="building")return;C(y=>({...y,[c.id]:{forkId:c.id,state:"running",fork:c,events:[],error:null}})),R(c.id),_(c,c.slotId);}catch{}},[e,r,_,d,n,t]),V=useCallback(async(f,b)=>{try{let E={userId:t,slotId:f};n&&(E.userHash=n),b&&(E.fork_id=b);let c=await fetch(`${r}/api/v1/forks/undo`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify(E)});if(!c.ok){let I=await c.json().catch(()=>({}));throw new Error(I.error||`API error: ${c.status}`)}let y=await c.json();if(l(f),y.removed)a(f),C(I=>{let K={};for(let[Q,J]of Object.entries(I))J.fork.slotId!==f&&(K[Q]=J);return K}),R(null),u("prompting");else if(y.fork){i(f,y.fork);let I=y.fork;D(I.id,{state:"complete",fork:I});}return y}catch(E){throw L(E.message),E}},[e,t,n,r,a,i,l,D]),X=useCallback(async(f,b,E="remove_step")=>{let c={Authorization:`Bearer ${e}`,...fe()};t&&(c["X-Fork-User-Id"]=t),n&&(c["X-Fork-User-Hash"]=n);let y=new URLSearchParams({mode:E});b&&y.set("prompt_id",b);let I=await fetch(`${r}/api/v1/forks/${encodeURIComponent(f)}/revert-plan?${y.toString()}`,{headers:c});if(!I.ok){let K=await I.json().catch(()=>({}));throw new Error(K.error||`API error: ${I.status}`)}return I.json()},[e,r,n,t]),Y=useCallback(async(f,b)=>{try{let E={userId:t,mode:b.mode,strategy:b.strategy};b.promptId&&(E.prompt_id=b.promptId),n&&(E.userHash=n);let c=await fetch(`${r}/api/v1/forks/${encodeURIComponent(b.forkId)}/revert`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,...fe()},body:JSON.stringify(E)});if(!c.ok){let I=await c.json().catch(()=>({}));throw new Error(I.error||`API error: ${c.status}`)}let y=await c.json();return y.agentic?(await O(y.fork.id),y):(l(f),y.removed?(a(f),C(I=>{let K={};for(let[Q,J]of Object.entries(I))J.fork.slotId!==f&&(K[Q]=J);return K}),R(null),u("prompting")):y.fork&&(i(f,y.fork),D(y.fork.id,{state:"complete",fork:y.fork})),y)}catch(E){throw L(E.message),E}},[O,e,r,a,i,l,D,n,t]),G=useCallback(async(f,b)=>{let E={userId:t,name:b};n&&(E.userHash=n);let c=await fetch(`${r}/api/v1/forks/${encodeURIComponent(f)}/name`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,...fe()},body:JSON.stringify(E)});if(!c.ok){let y=await c.json().catch(()=>({}));throw new Error(y.error||`API error: ${c.status}`)}return c.json()},[e,r,n,t]),Z=useCallback(async(f,b)=>{let E={userId:t,disabled:b};n&&(E.userHash=n);let c=await fetch(`${r}/api/v1/forks/${encodeURIComponent(f)}/disabled`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,...fe()},body:JSON.stringify(E)});if(!c.ok){let I=await c.json().catch(()=>({}));throw new Error(I.error||`API error: ${c.status}`)}let y=await c.json();return await A().catch(()=>{}),y},[e,r,A,n,t]),re=N?h[N]??null:null,pe=$?"running":m?"error":re?re.state:p,oe=re?.fork??null,ye=re?.events??[],te=m??re?.error??null;return {state:pe,fork:oe,events:ye,error:te,runs:h,open:B,close:z,startFork:x,undoFork:V,planRevert:X,revertFork:Y,setForkDisabled:Z,renameFork:G,adoptRunningFork:O}}var wa=0;function Yo(){let{state:e,fork:t,events:n,error:r,runs:o,open:i,close:a,startFork:l,undoFork:d,planRevert:S,revertFork:A,setForkDisabled:h,renameFork:C,adoptRunningFork:N}=yr(),[R,p]=useState(false),u=useRef(null),$=useRef(e),F=useCallback(()=>{u.current!==null&&(clearTimeout(u.current),u.current=null);},[]),m=useCallback(()=>{F(),p(true),i();},[F,i]),L=useCallback(()=>{F(),p(false),a();},[F,a]),U=useCallback(async P=>{F(),p(true),await N(P);},[N,F]),D=Object.values(o).filter(P=>P.state==="running").length;return useEffect(()=>{let P=$.current;$.current=e,e==="complete"&&P==="running"&&R&&D===0&&(F(),u.current=setTimeout(()=>{u.current=null,p(false),a();},wa)),(e==="running"||e==="prompting")&&F();},[e,R,D,F,a]),useEffect(()=>F,[F]),{state:e,fork:t,events:n,error:r,runs:o,isOpen:R,open:m,close:L,submit:l,undo:d,planRevert:S,revertFork:A,setForkDisabled:h,renameFork:C,adoptRunningFork:U}}var Sa=new Set(["pending","running","building"]);function kr(e){let t=Wo(e),n=Yo(),r=Xo(t.type==="boundary"?t.id:""),{baseUrl:o,apiKey:i,userId:a,userHash:l,appId:d,activitySummary:S,forkActivities:A}=Ce(),h=t.type==="slot"?n:r,C=t.type==="slot"?"slot":"boundary",N=t.id,R=t.title,p=t.type==="slot"?"slot":"module",u=A.find(B=>B.targetKind===p&&B.targetId===t.id&&Sa.has(B.status)),$=A.find(B=>B.targetKind===p&&B.targetId===t.id&&B.status==="complete"&&B.unread),F=useCallback(()=>{let B=u??$;if(B){h.adoptRunningFork(B.id);return}h.open();},[h,u,$]),m=useCallback((B,z,_,x)=>t.type==="slot"?n.submit(B,z??t.id,_,x):r.submit(B,_,x),[r,n,t]),L=useCallback((B,z)=>t.type==="slot"?n.undo(B??t.id,z):r.undo(z),[r,n,t]),U=useCallback((B,z,_="remove_step")=>t.type==="slot"?n.planRevert(B,z,_):r.planRevert(B,z,_),[r,n,t]),D=useCallback(B=>t.type==="slot"?n.revertFork(t.id,B):r.revertFork(B),[r,n,t]),P=useCallback((B,z)=>t.type==="slot"?n.setForkDisabled(B,z):r.setForkDisabled(B,z),[r,n,t]),H=useCallback((B,z)=>t.type==="slot"?n.renameFork(B,z):r.renameFork(B,z),[r,n,t]);return {...h,open:F,target:t,targetId:N,targetLabel:R,historyMode:C,submit:m,undo:L,planRevert:U,revert:D,buttonProps:{onClick:F,hasNotification:S.unreadCompletedCount>0,activity:S},panelProps:{state:h.state,fork:h.fork,events:h.events,error:h.error,runs:h.runs,...t.type==="slot"?{slotId:N,targetLabel:R,historyMode:C}:{targetId:N,targetLabel:R,historyMode:C},onSubmit:m,onUndo:L,onPlanRevert:U,onRevert:D,onSetForkDisabled:P,onRenameFork:H,onClose:h.close,baseUrl:o,apiKey:i,userId:a,userHash:l,appId:d}}}function on(e){let{embedded:t,completeVariant:n}=e,r=kr(e);return t?jsx(Nn,{...r.panelProps,embedded:true,completeVariant:n}):r.isOpen?jsx(Nn,{...r.panelProps,completeVariant:n}):jsx(dr,{...r.buttonProps})}function xa({boundaryId:e,title:t}){return jsx(on,{boundaryId:e,title:t})}function vr(e){let t=Array.from(e.children).filter(r=>r instanceof HTMLElement);return t.length===1?t[0]:getComputedStyle(e).display==="contents"?null:e}function Zo(e){let t=e.getBoundingClientRect(),n=e.cloneNode(true);n.setAttribute("data-fork-clone-overlay","true"),n.style.position="fixed",n.style.top=`${t.top}px`,n.style.left=`${t.left}px`,n.style.width=`${t.width}px`,n.style.height=`${t.height}px`,n.style.flex="none",n.style.minHeight="auto",n.style.zIndex="9998",n.style.pointerEvents="none",n.style.overflow="hidden";let r=getComputedStyle(e).backgroundColor;n.style.backgroundColor=r&&r!=="rgba(0, 0, 0, 0)"&&r!=="transparent"?r:getComputedStyle(document.body).backgroundColor||"#ffffff",document.body.appendChild(n);let o=e.querySelectorAll("*"),i=n.querySelectorAll("*");for(let a=0;a<o.length;a+=1)o[a].scrollTop!==0&&(i[a].scrollTop=o[a].scrollTop),o[a].scrollLeft!==0&&(i[a].scrollLeft=o[a].scrollLeft);return n}function wr(e){let t=[],n=e.querySelectorAll("*");for(let r of n){if(!(r instanceof HTMLElement))continue;let o=r.getBoundingClientRect();if(o.width<10||o.height<10||["SCRIPT","STYLE","META","LINK"].includes(r.tagName))continue;let i=getComputedStyle(r),a=parseFloat(i.borderTopLeftRadius)||0;t.push({tag:r.tagName,className:r.className||"",text:(r.textContent||"").slice(0,50).trim(),rect:o,borderRadius:a});}return t}function Qo(e,t){let n=[];for(let r of t)if(!(e.find(a=>a.tag===r.tag&&a.className===r.className&&Math.abs(a.rect.top-r.rect.top)<20&&Math.abs(a.rect.left-r.rect.left)<20)||n.some(a=>r.rect.top>=a.rect.top&&r.rect.left>=a.rect.left&&r.rect.right<=a.rect.right&&r.rect.bottom<=a.rect.bottom))){for(let a=n.length-1;a>=0;a-=1){let l=n[a];l.rect.top>=r.rect.top&&l.rect.left>=r.rect.left&&l.rect.right<=r.rect.right&&l.rect.bottom<=r.rect.bottom&&n.splice(a,1);}n.push({rect:r.rect,borderRadius:r.borderRadius});}return n}function es(e,t){let n=[];for(let r of e)if(!(t.find(a=>a.tag===r.tag&&a.className===r.className&&Math.abs(a.rect.top-r.rect.top)<20&&Math.abs(a.rect.left-r.rect.left)<20)||n.some(a=>r.rect.top>=a.rect.top&&r.rect.left>=a.rect.left&&r.rect.right<=a.rect.right&&r.rect.bottom<=a.rect.bottom))){for(let a=n.length-1;a>=0;a-=1){let l=n[a];l.rect.top>=r.rect.top&&l.rect.left>=r.rect.left&&l.rect.right<=r.rect.right&&l.rect.bottom<=r.rect.bottom&&n.splice(a,1);}n.push({rect:r.rect,borderRadius:r.borderRadius});}return n}function ts(e,t,n,r,o){let i=Math.max(0,Math.min(o,n/2,r/2));return i===0?`M ${e} ${t} L ${e+n} ${t} L ${e+n} ${t+r} L ${e} ${t+r} Z`:[`M ${e+i} ${t}`,`L ${e+n-i} ${t}`,`A ${i} ${i} 0 0 1 ${e+n} ${t+i}`,`L ${e+n} ${t+r-i}`,`A ${i} ${i} 0 0 1 ${e+n-i} ${t+r}`,`L ${e+i} ${t+r}`,`A ${i} ${i} 0 0 1 ${e} ${t+r-i}`,`L ${e} ${t+i}`,`A ${i} ${i} 0 0 1 ${e+i} ${t}`,"Z"].join(" ")}function Sr(e){let t="http://www.w3.org/2000/svg",n=document.createElement("div");n.setAttribute("data-fork-highlights","true"),n.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;";let r=document.createElementNS(t,"svg");r.setAttribute("width","100%"),r.setAttribute("height","100%"),r.style.cssText="position:absolute;top:0;left:0;overflow:visible;";let o=document.createElementNS(t,"defs");r.appendChild(o);let i=[];for(let A=0;A<e.length;A+=1){let{rect:h,borderRadius:C}=e[A],N=h.left-.5,R=h.top-.5,p=h.width+1,u=h.height+1,$=Math.min(C+.5,p/2,u/2),F=ts(N,R,p,u,$),m=`__fork-glow-${A}`,L=document.createElementNS(t,"filter");L.setAttribute("id",m),L.setAttribute("x","-100%"),L.setAttribute("y","-100%"),L.setAttribute("width","300%"),L.setAttribute("height","300%");let U=document.createElementNS(t,"feGaussianBlur");U.setAttribute("in","SourceGraphic"),U.setAttribute("stdDeviation","8"),L.appendChild(U),o.appendChild(L);let D=`__fork-mask-${A}`,P=document.createElementNS(t,"mask");P.setAttribute("id",D),P.setAttribute("maskUnits","userSpaceOnUse"),P.setAttribute("x",String(N-200)),P.setAttribute("y",String(R-200)),P.setAttribute("width",String(p+400)),P.setAttribute("height",String(u+400));let H=document.createElementNS(t,"rect");H.setAttribute("x",String(N-200)),H.setAttribute("y",String(R-200)),H.setAttribute("width",String(p+400)),H.setAttribute("height",String(u+400)),H.setAttribute("fill","white"),P.appendChild(H);let B=document.createElementNS(t,"path");B.setAttribute("d",F),B.setAttribute("fill","black"),P.appendChild(B),o.appendChild(P);let z=document.createElementNS(t,"g");z.setAttribute("mask",`url(#${D})`),z.setAttribute("opacity","0");let _=document.createElementNS(t,"g");_.setAttribute("filter",`url(#${m})`);let x=document.createElementNS(t,"path");x.setAttribute("d",F),x.setAttribute("fill","none"),x.setAttribute("stroke","rgba(150, 185, 220, 0.6)"),x.setAttribute("stroke-width","6"),x.setAttribute("stroke-linecap","round"),_.appendChild(x),z.appendChild(_),r.appendChild(z);let O=document.createElementNS(t,"path");O.setAttribute("d",F),O.setAttribute("fill","none"),O.setAttribute("stroke","rgba(150, 185, 220, 0.35)"),O.setAttribute("stroke-width","2"),O.setAttribute("stroke-linecap","round"),O.setAttribute("opacity","0"),r.appendChild(O),i.push(x,O),x.__group=z;}n.appendChild(r),document.body.appendChild(n);let a=[];for(let A=0;A<i.length;A+=2){let h=i[A],C=i[A+1],N=h.__group;if(!N)continue;let R=C.getTotalLength(),p=h.getTotalLength();if(R<=0)continue;let u=R*.35;C.setAttribute("stroke-dasharray",`${u} ${R-u}`),C.setAttribute("stroke-dashoffset","0"),a.push(C.animate([{strokeDashoffset:0,opacity:0,offset:0},{strokeDashoffset:-0.2*R,opacity:.92,offset:.06},{strokeDashoffset:-2*R,opacity:.92,offset:.92},{strokeDashoffset:-2.25*R,opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));let $=p*.35;h.setAttribute("stroke-dasharray",`${$} ${p-$}`),h.setAttribute("stroke-dashoffset","0"),a.push(h.animate([{strokeDashoffset:0,offset:0},{strokeDashoffset:-0.2*p,offset:.06},{strokeDashoffset:-2*p,offset:.92},{strokeDashoffset:-2.25*p,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"})),a.push(N.animate([{opacity:0,offset:0},{opacity:.92,offset:.06},{opacity:.92,offset:.92},{opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));}let l=false,d=()=>{if(l)return;l=true,clearTimeout(S);for(let h of a)try{h.cancel();}catch{}let A=n.animate([{opacity:1},{opacity:0}],{duration:400,fill:"forwards"});A.onfinish=()=>n.remove(),window.removeEventListener("click",d);},S=setTimeout(d,14500);return setTimeout(()=>{l||window.addEventListener("click",d);},500),d}function ns(e){let t="http://www.w3.org/2000/svg",n=document.createElement("div");n.setAttribute("data-fork-removed","true"),n.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;";let r=document.createElementNS(t,"svg");r.setAttribute("width","100%"),r.setAttribute("height","100%"),r.style.cssText="position:absolute;top:0;left:0;overflow:visible;";let o=document.createElementNS(t,"defs"),i=document.createElementNS(t,"filter");i.setAttribute("id","__fork-removed-shadow"),i.setAttribute("x","-10%"),i.setAttribute("y","-10%"),i.setAttribute("width","120%"),i.setAttribute("height","120%");let a=document.createElementNS(t,"feDropShadow");a.setAttribute("dx","0"),a.setAttribute("dy","1"),a.setAttribute("stdDeviation","2"),a.setAttribute("flood-color","rgba(0,0,0,0.15)"),i.appendChild(a),o.appendChild(i),r.appendChild(o);for(let{rect:l,borderRadius:d}of e){let S=document.createElementNS(t,"path");S.setAttribute("d",ts(l.left,l.top,l.width,l.height,d)),S.setAttribute("fill","none"),S.setAttribute("stroke","rgba(120, 125, 135, 0.6)"),S.setAttribute("stroke-width","1.5"),S.setAttribute("stroke-dasharray","8 4"),S.setAttribute("stroke-linecap","round"),S.setAttribute("filter","url(#__fork-removed-shadow)"),S.setAttribute("opacity","0"),r.appendChild(S),S.animate([{opacity:0,offset:0},{opacity:.6,offset:.08},{opacity:.05,offset:.45},{opacity:.6,offset:.85},{opacity:.05,offset:1}],{duration:5e3,easing:"ease-in-out",fill:"forwards"});}return n.appendChild(r),document.body.appendChild(n),n}function ss(e,t){if(Aa(t.selector))return os(e,t);let r=os(e,t);if(r)return r;try{let i=document.querySelector(t.selector);if(i instanceof HTMLElement&&i!==e&&e.contains(i))return i}catch{}if(rs(t.selector))try{let i=e.querySelector(t.selector);if(i instanceof HTMLElement&&i!==e)return i}catch{}if(t.textHint){let i=t.textHint.trim();if(i){let a=Fr(e,A=>A===i);if(a)return a;let l=i.toLowerCase(),d=Fr(e,A=>A.toLowerCase()===l);if(d)return d;let S=Fr(e,A=>A.toLowerCase().includes(l));if(S)return S}}let o=Ra(t.selector);if(o&&o!==t.selector&&rs(o))try{let i=e.querySelector(o);if(i instanceof HTMLElement&&i!==e)return i}catch{}return null}function rs(e){let t=e.split(/\s+|>|~|\+/),n=t[t.length-1]??"";return /[#\[]|:not\(|:nth-/.test(n)}function os(e,t){let n=Array.from(e.querySelectorAll("[data-fork-new]"));if(n.length===0)return null;let r=xr(t.label),o=xr(t.textHint);return n.find(a=>{let l=xr(a.getAttribute("data-fork-new"));return !!l&&(l===r||l===o)})??null}function Aa(e){return e.trim()==="[data-fork-new]"}function xr(e){return e?.trim().replace(/\s+/g," ").toLowerCase()||null}function Ra(e){return e.replace(/\[class[\*~|^$]?=("[^"]*"|'[^']*'|[^\]]+)\]/g,"").replace(/\.[A-Za-z_][\w-]*/g,"").replace(/\s+/g," ").trim()}function Fr(e,t){let n=null,r=1/0,o=e.querySelectorAll("*");for(let i of o){let a=i.textContent?.trim();if(!a||!t(a))continue;let l=i.getBoundingClientRect();if(l.width<4||l.height<4)continue;let d=l.width*l.height;d<r&&(n=i,r=d);}return n}var Ar=2147483600,Ea=1600,Ia=3e4,Ca=300,at=10;function Ta(e){let n=getComputedStyle(e).borderTopLeftRadius;if(!n)return 4;if(n.endsWith("%")){let a=parseFloat(n);if(!Number.isFinite(a)||a<=0)return 4;let l=e.getBoundingClientRect(),d=Math.min(l.width,l.height);return Math.max(4,a/100*d)}let r=parseFloat(n);if(!Number.isFinite(r)||r<=0)return 4;let o=e.getBoundingClientRect(),i=Math.min(o.width,o.height)/2;return r>=i?i:Math.min(r,16)}function $a(e,t,n,r){let i=window.innerWidth,a=window.innerHeight,l=e;l==="top"&&t.top<r+at+8?l="bottom":l==="bottom"&&a-t.bottom<r+at+8?l="top":l==="left"&&t.left<n+at+8?l="right":l==="right"&&i-t.right<n+at+8&&(l="left");let d=0,S=0;return l==="top"?(d=t.top-r-at,S=t.left+t.width/2-n/2):l==="bottom"?(d=t.bottom+at,S=t.left+t.width/2-n/2):l==="left"?(d=t.top+t.height/2-r/2,S=t.left-n-at):(d=t.top+t.height/2-r/2,S=t.right+at),S=Math.max(8,Math.min(S,i-n-8)),d=Math.max(8,Math.min(d,a-r-8)),{top:d,left:S,placement:l}}function Ma(e){let t=document.createElement("div");t.setAttribute("data-fork-highlight-outline","true"),t.style.cssText=["position:fixed","pointer-events:none",`z-index:${Ar}`,"border:1.5px solid rgba(59,130,246,0.85)","box-sizing:border-box","opacity:0","transition:opacity 200ms ease-out"].join(";");let n=document.createElement("div");n.setAttribute("data-fork-highlight-glow","true"),n.style.cssText=["position:fixed","pointer-events:none",`z-index:${Ar-1}`,"box-sizing:border-box","border:1px solid rgba(59,130,246,0.36)","box-shadow:0 0 0 4px rgba(59,130,246,0.16), 0 0 18px 2px rgba(59,130,246,0.31)","opacity:0","transition:opacity 200ms ease-out"].join(";");let r=document.createElement("div");return r.setAttribute("data-fork-highlight-tooltip","true"),r.style.cssText=["position:fixed","pointer-events:none",`z-index:${Ar+1}`,"padding:6px 10px","font:500 12px/1.2 -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif","color:#ffffff","background:linear-gradient(135deg,#64748b,#475569)","border-radius:999px","box-shadow:0 4px 14px rgba(71,85,105,0.31),0 1px 2px rgba(0,0,0,0.1)","white-space:nowrap","opacity:0","transform:translateY(-2px)","transition:opacity 200ms ease-out, transform 200ms ease-out"].join(";"),r.textContent=`New: ${e}`,{outline:t,glow:n,tooltip:r}}function Pa(){if(document.getElementById("__fork-highlight-keyframes"))return;let e=document.createElement("style");e.id="__fork-highlight-keyframes",e.textContent=`
63
+ `}),jsxs("div",{className:"__fork-panel",style:zs,children:[jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0 16px",height:54,boxSizing:"border-box",borderBottom:"1px solid rgba(229, 231, 235, 0.8)",flexShrink:0},children:[jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0,flex:1},children:[re||Xe?jsxs(Fragment,{children:[jsx("button",{onClick:()=>{ot(null),st(false),it.current=false;},style:{width:30,height:30,borderRadius:9,background:"#ffffff",border:"1px solid #e5e7eb",color:"#111827",cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",padding:0,flexShrink:0,transition:"background 0.12s, border-color 0.12s"},onMouseEnter:s=>{s.currentTarget.style.background="#f9fafb",s.currentTarget.style.borderColor="#d1d5db";},onMouseLeave:s=>{s.currentTarget.style.background="#ffffff",s.currentTarget.style.borderColor="#e5e7eb";},title:"Back to all forks",children:jsx(ChevronLeft,{style:{width:15,height:15}})}),(()=>{let s=re?o[re]:void 0,C=(s?s.events.find(z=>{let se=z.data;return z.type==="status"&&se.summary})?.data?.summary??s.fork.summary:void 0)||Yt?.summary||"New Feature";return jsx("span",{style:{fontSize:13.5,fontWeight:700,color:"#111827",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0},title:C,children:C})})()]}):jsxs(Fragment,{children:[jsx("span",{onDoubleClick:async s=>{if(s.stopPropagation(),!zn&&confirm("Kill all forks in this container?")){$t(true);try{let v=await Es();`${v?.deleted??0}`,hn([]),ot(null),st(!1),H("");}catch(v){console.error("[Fork] Reset failed:",v);}finally{$t(false);}}},style:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:4,margin:-4,cursor:"pointer",flexShrink:0},children:jsx($n,{style:{width:16,height:16,color:"#111827",pointerEvents:"none"}})}),qe==="running"?jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:Os}):Wt.length===0&&!vn?jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:"Fork"}):vn?jsxs("div",{ref:Fn,style:{position:"relative",minWidth:0,display:"inline-flex"},children:[jsxs("button",{type:"button",onClick:()=>{ie(s=>!s);},onMouseEnter:()=>ce(true),onMouseLeave:()=>ce(false),"aria-haspopup":"menu","aria-expanded":G,style:{display:"inline-flex",alignItems:"center",gap:4,padding:"3px 6px",border:"1px solid transparent",borderRadius:6,background:ae||G?"#f3f4f6":"transparent",fontSize:13,fontWeight:600,color:"#111827",fontFamily:"inherit",cursor:"pointer",maxWidth:180,minWidth:0,transition:"background-color 0.12s"},children:[jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:uo}),jsx(ChevronDown,{style:{width:12,height:12,color:"#6b7280",flexShrink:0,transform:G?"rotate(180deg)":void 0,transition:"transform 0.15s"}})]}),G&&jsxs("div",{role:"menu",style:{position:"absolute",top:"calc(100% + 4px)",left:0,minWidth:200,maxWidth:260,background:"#ffffff",border:"1px solid #e5e7eb",borderRadius:8,boxShadow:"0 4px 12px rgba(0,0,0,0.08), 0 1px 3px rgba(0,0,0,0.06)",padding:4,zIndex:2147483001},children:[Wt.map(s=>{let v=s.id===Te,C=Se===s.id,z=le===s.id;return jsxs("button",{type:"button",role:"menuitem",onMouseEnter:()=>$e(s.id),onMouseLeave:()=>$e(null),onClick:()=>{s.id!==Te&&Bs(s.id);},disabled:!!le,style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"6px 8px",border:"none",background:C?"#f3f4f6":"transparent",borderRadius:4,fontSize:13,fontFamily:"inherit",color:"#111827",cursor:le?"default":"pointer",textAlign:"left",fontWeight:v?600:400,opacity:le&&!z?.55:1},children:[jsx("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:14,height:14,color:"#111827",flexShrink:0},children:v&&jsx(Check,{style:{width:12,height:12}})}),jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:z?"Switching...":s.name})]},s.id)}),jsx("div",{style:{height:1,background:"#e5e7eb",margin:"4px 0"}}),_e?jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"4px 4px"},children:[jsx("input",{ref:De,type:"text",value:Ae,placeholder:"Container name",disabled:le==="__new__",onChange:s=>Be(s.target.value),onKeyDown:s=>{s.key==="Enter"?(s.preventDefault(),oo(Ae)):s.key==="Escape"&&(s.preventDefault(),s.stopPropagation(),xe(false),Be(""));},style:{flex:1,minWidth:0,padding:"5px 8px",border:"1px solid #d1d5db",borderRadius:4,fontSize:13,fontFamily:"inherit",color:"#111827",background:"#ffffff",outline:"none"},onFocus:s=>{s.currentTarget.style.borderColor="#111827",s.currentTarget.style.boxShadow="0 0 0 2px rgba(17,24,39,0.15)";},onBlur:s=>{s.currentTarget.style.borderColor="#d1d5db",s.currentTarget.style.boxShadow="none";}}),jsx("button",{type:"button",onClick:()=>{oo(Ae);},disabled:!Ae.trim()||le==="__new__",title:"Create",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:26,height:26,border:"none",borderRadius:4,background:!Ae.trim()||le==="__new__"?"#e5e7eb":"#111827",color:!Ae.trim()||le==="__new__"?"#9ca3af":"#ffffff",cursor:!Ae.trim()||le==="__new__"?"default":"pointer",flexShrink:0},children:le==="__new__"?jsx("span",{style:{width:10,height:10,border:"1.5px solid currentColor",borderTopColor:"transparent",borderRadius:"50%",animation:"__fork-spin 0.7s linear infinite"}}):jsx(Check,{style:{width:12,height:12}})})]}):jsx("button",{type:"button",role:"menuitem",onMouseEnter:()=>ke(true),onMouseLeave:()=>ke(false),onClick:()=>{le||(rt(null),Be(""),xe(true));},disabled:!!le,style:{display:"flex",alignItems:"center",width:"100%",padding:"6px 8px",border:"none",background:ye?"#f3f4f6":"transparent",borderRadius:4,fontSize:13,fontFamily:"inherit",color:"#111827",cursor:le?"default":"pointer",textAlign:"left",opacity:le&&le!=="__new__"?.55:1},children:"+ New container"}),Mt&&jsx("div",{style:{padding:"6px 8px",fontSize:11,lineHeight:1.35,color:"#b91c1c"},children:Mt})]})]}):jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:uo})]}),qe==="running"&&jsx("span",{title:bt?`Estimated ~${bt} min`:"Estimating\u2026",style:{fontSize:10,fontWeight:600,color:bt?"#111827":"#9ca3af",backgroundColor:bt?"rgba(17, 24, 39, 0.08)":"rgba(156, 163, 175, 0.12)",padding:"1px 6px",borderRadius:999,flexShrink:0,fontVariantNumeric:"tabular-nums",animation:bt?void 0:"__fork-pulse 1.4s ease-in-out infinite",minWidth:28,textAlign:"center"},children:bt?`~${bt}m`:"~ m"})]}),jsxs("div",{style:{display:"flex",alignItems:"center",gap:2,flexShrink:0},children:[$s&&!re&&jsx("button",{type:"button",role:"switch","aria-checked":!Ut,"aria-label":Ut?"Turn Fork back on":"Turn Fork off",title:Ut?"Fork is off \u2014 you're seeing the original app. Turn it back on. Only affects you.":"Turn Fork off to see the original app. Only affects you.",onClick:()=>{Ts(!Ut);},onMouseEnter:()=>Jr(true),onMouseLeave:()=>Jr(false),style:{position:"relative",width:26,height:15,borderRadius:999,border:"none",padding:0,marginRight:6,flexShrink:0,cursor:"pointer",backgroundColor:Ut?Wr?"#9ca3af":"#d1d5db":Wr?"#374151":"#111827",transition:"background-color 0.18s ease",outline:"none",boxSizing:"border-box"},children:jsx("span",{"aria-hidden":true,style:{position:"absolute",top:2,left:Ut?2:13,width:11,height:11,borderRadius:"50%",backgroundColor:"#ffffff",boxShadow:"0 1px 2px rgba(15, 23, 42, 0.25)",transition:"left 0.18s cubic-bezier(0.16, 1, 0.3, 1)"}})}),!N&&jsxs(Fragment,{children:[Xr&&jsx("button",{onClick:Ke?Ps:Ms,onMouseEnter:()=>de(true),onMouseLeave:()=>de(false),title:Ke?"Redock to sidebar":"Pop out into window",style:{padding:6,borderRadius:6,color:fe?"#4b5563":"#9ca3af",backgroundColor:fe?"#f3f4f6":"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"background-color 0.15s, color 0.15s"},children:Ke?jsx(PictureInPicture,{style:{width:16,height:16}}):jsx(PictureInPicture2,{style:{width:16,height:16}})}),jsx("button",{onClick:co,onMouseEnter:()=>ee(true),onMouseLeave:()=>ee(false),style:{padding:6,borderRadius:6,color:Z?"#4b5563":"#9ca3af",backgroundColor:Z?"#f3f4f6":"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"background-color 0.15s, color 0.15s"},children:jsx(X,{style:{width:16,height:16}})})]})]})]}),jsxs("div",{ref:yn,style:{flex:1,overflowY:"auto",minHeight:0,display:"flex",flexDirection:"column"},children:[pt&&jsx("div",{onClick:()=>gt(null),style:{position:"fixed",inset:0,zIndex:10}}),!re&&!Xe&&jsxs("div",{style:{display:"flex",flexDirection:"column"},children:[Jt.length===0&&jsx("div",{style:{padding:"24px 20px",textAlign:"center",fontSize:13,color:"#6b7280"},children:"No forks yet. Describe a feature below to start one."}),Jt.length>0&&jsx("div",{style:{display:"flex",flexDirection:"column"},children:Ks.map((s,v)=>{let C=o[s.id],z=C?C.events.find(ne=>{let Ws=ne.data;return ne.type==="status"&&Ws.summary})?.data?.summary??C.fork.summary:void 0,se=s.customName||z||s.summary||"Untitled fork",be=!!zr.find(ne=>ne.id===s.id)?.unread,Ye=o[s.id]?.state??s.status,Le=Ye==="running"||Ye==="building"||Ye==="pending",Rn=!!s.revertedAt,po=!!s.disabledAt;return jsxs(Fragment$1,{children:[jsxs("div",{style:{position:"relative"},children:[Ct===s.id?jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"10px 16px"},children:[jsx("input",{autoFocus:true,value:Ne,disabled:Je,onChange:ne=>we(ne.target.value),onKeyDown:ne=>{ne.key==="Enter"&&io(),ne.key==="Escape"&&(Tt(null),we(""));},style:{flex:1,fontSize:13.5,fontWeight:600,color:"#111827",border:"1px solid #d1d5db",borderRadius:6,padding:"5px 8px",outline:"none",fontFamily:"inherit",minWidth:0}}),jsx("button",{onClick:io,disabled:Je,style:{padding:"4px 10px",fontSize:12,fontWeight:500,borderRadius:6,border:"1px solid #e5e7eb",background:"#111827",color:"#ffffff",cursor:Je?"default":"pointer",opacity:Je?.5:1,flexShrink:0},children:"Save"}),jsx("button",{onClick:()=>{Tt(null),we("");},disabled:Je,style:{padding:"4px 8px",fontSize:12,fontWeight:500,borderRadius:6,border:"none",background:"transparent",color:"#6b7280",cursor:Je?"default":"pointer",flexShrink:0},children:"Cancel"})]}):jsxs("button",{onClick:()=>{st(false),ot(s.id);},style:{textAlign:"left",padding:"12px 72px 12px 16px",background:"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"flex-start",gap:8,width:"100%",transition:"background 0.12s",fontFamily:"inherit"},onMouseEnter:ne=>{ne.currentTarget.style.background="#fafafa";},onMouseLeave:ne=>{ne.currentTarget.style.background="transparent";},children:[be&&jsx("span",{"aria-label":"Not viewed yet",title:"Not viewed yet",style:{width:7,height:7,borderRadius:"50%",backgroundColor:"#111827",flexShrink:0,marginTop:5}}),jsxs("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:5,alignItems:"flex-start"},children:[jsx("span",{style:{fontSize:13.5,fontWeight:600,color:Rn||po?"#9ca3af":"#111827",textDecoration:Rn?"line-through":"none",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},children:se}),jsx("span",{style:{fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, "Liberation Mono", "Courier New", monospace',fontSize:10,color:"#9ca3af",background:"#f8f9fa",borderRadius:5,padding:"1px 6px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%",boxSizing:"border-box"},children:s.targetId})]}),Rn&&jsx("span",{style:{fontSize:10,fontWeight:600,color:"#9ca3af",border:"1px solid #e5e7eb",borderRadius:5,padding:"3px 8px",flexShrink:0,alignSelf:"center"},children:"removed"}),po&&!Rn&&jsx("span",{style:{fontSize:10,fontWeight:600,color:"#6b7280",background:"#f3f4f6",border:"1px solid #e5e7eb",borderRadius:5,padding:"3px 8px",flexShrink:0,alignSelf:"center"},children:"disabled"}),Fe?.forkId===s.id&&jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:5,background:"#f3f4f6",border:"1px solid #e5e7eb",color:"#374151",borderRadius:5,padding:"3px 8px",fontSize:10,fontWeight:600,flexShrink:0,alignSelf:"center"},children:[jsx("svg",{width:"9",height:"9",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",style:{animation:"__fork-spin 2s linear infinite"},children:jsx("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})}),Fe.kind==="disable"?"Disabling":Fe.kind==="enable"?"Enabling":"Removing"]}),Le&&jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:5,background:"#fff7ed",border:"1px solid #fed7aa",color:"#c2410c",borderRadius:5,padding:"3px 8px",fontSize:10,fontWeight:600,flexShrink:0,alignSelf:"center"},children:[jsx("span",{style:{width:6,height:6,borderRadius:"50%",background:"#f59e0b",animation:"__fork-pulse 1.4s ease-in-out infinite"}}),"Running"]}),Ye==="error"&&jsx("span",{style:{display:"inline-flex",alignItems:"center",gap:5,background:"#fef2f2",border:"1px solid #fecaca",color:"#b91c1c",borderRadius:5,padding:"3px 8px",fontSize:10,fontWeight:600,flexShrink:0,alignSelf:"center"},children:"Failed"})]}),Ct!==s.id&&jsxs("div",{style:{position:"absolute",top:0,bottom:0,right:10,display:"flex",alignItems:"center",gap:8,pointerEvents:"none"},children:[jsx("span",{style:{fontSize:11.5,color:"#9ca3af",flexShrink:0},children:yr(s.updatedAt)}),jsx("button",{"aria-label":"Fork actions",onClick:ne=>{ne.stopPropagation(),gt(pt===s.id?null:s.id);},style:{padding:4,borderRadius:6,border:"none",background:pt===s.id?"#f3f4f6":"transparent",color:"#9ca3af",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"auto"},onMouseEnter:ne=>{ne.currentTarget.style.background="#f3f4f6",ne.currentTarget.style.color="#4b5563";},onMouseLeave:ne=>{pt!==s.id&&(ne.currentTarget.style.background="transparent"),ne.currentTarget.style.color="#9ca3af";},children:jsx(MoreHorizontal,{style:{width:15,height:15}})})]}),pt===s.id&&jsxs("div",{style:{position:"absolute",top:32,right:8,zIndex:20,background:"#ffffff",border:"1px solid #e5e7eb",borderRadius:8,boxShadow:"0 8px 24px rgba(0,0,0,0.10)",padding:4,minWidth:130,display:"flex",flexDirection:"column"},children:[R&&jsx("button",{onClick:ne=>{ne.stopPropagation(),gt(null),Tt(s.id),we(s.customName??se);},style:{padding:"6px 10px",fontSize:12,fontWeight:500,textAlign:"left",border:"none",borderRadius:6,background:"transparent",color:"#111827",cursor:"pointer"},onMouseEnter:ne=>ne.currentTarget.style.background="#f3f4f6",onMouseLeave:ne=>ne.currentTarget.style.background="transparent",children:"Rename"}),O&&jsx("button",{onClick:ne=>{ne.stopPropagation(),ao(s.id,!s.disabledAt);},disabled:Ge||Le,style:{padding:"6px 10px",fontSize:12,fontWeight:500,textAlign:"left",border:"none",borderRadius:6,background:"transparent",color:"#111827",cursor:Ge||Le?"default":"pointer",opacity:Ge||Le?.5:1},onMouseEnter:ne=>ne.currentTarget.style.background="#f3f4f6",onMouseLeave:ne=>ne.currentTarget.style.background="transparent",children:s.disabledAt?"Enable":"Disable"}),b&&I&&jsx("button",{onClick:ne=>{ne.stopPropagation(),js(s.id);},disabled:ve||Y!==null||Le,style:{padding:"6px 10px",fontSize:12,fontWeight:500,textAlign:"left",border:"none",borderRadius:6,background:"transparent",color:"#b91c1c",cursor:ve||Y||Le?"default":"pointer",opacity:ve||Y||Le?.5:1},onMouseEnter:ne=>ne.currentTarget.style.background="#fef2f2",onMouseLeave:ne=>ne.currentTarget.style.background="transparent",children:"Delete"})]})]}),(B?.forkId===s.id||nt===s.id||Fe?.forkId===s.id)&&!re&&jsxs("div",{style:{padding:"2px 16px 12px 16px"},children:[fo,An]}),jsx("div",{style:{height:1,background:"#f3f4f6",margin:"0 16px",flexShrink:0}})]},s.id)})}),!B&&!nt&&An&&jsx("div",{style:{padding:"0 16px 12px 16px"},children:An})]}),re&&jt.length>0&&jsxs("div",{style:{margin:"16px 16px 0 16px"},children:[jt.map((s,v)=>jsx("div",{style:{marginBottom:v<jt.length-1?12:0},children:s.type==="user"?jsx("div",{style:{display:"flex",justifyContent:"flex-end"},children:jsxs("div",{style:{backgroundColor:"#f3f4f6",borderRadius:12,padding:"10px 14px",fontSize:13,color:s.reverted?"#9ca3af":"#374151",textDecoration:s.reverted?"line-through":"none",lineHeight:1.5,maxWidth:"85%"},children:[s.attachments&&s.attachments.length>0&&jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:4,marginBottom:6},children:s.attachments.map((C,z)=>jsx("img",{src:C.dataUrl,alt:"attachment",style:{maxWidth:150,maxHeight:110,borderRadius:8,border:"1px solid #e5e7eb",display:"block",objectFit:"cover"}},z))}),s.selectedElement&&jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:4,background:"#eef2ff",border:"1px solid #c7d2fe",color:"#4338ca",borderRadius:999,padding:"2px 8px",fontSize:10.5,fontWeight:500,marginRight:6,maxWidth:"100%"},children:[jsx(MousePointer2,{style:{width:10,height:10,flexShrink:0}}),jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},children:s.selectedElement.label})]}),s.text]})}):K==="item"&&v===jt.length-1?jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:12,padding:12,borderRadius:8,border:"1px solid #e4e4e7",background:"#ffffff"},children:[jsx("div",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,flexShrink:0,borderRadius:6,background:"#f4f4f5",color:"#0a0a0a"},children:jsx(BadgeCheck,{style:{width:16,height:16}})}),jsxs("div",{style:{display:"flex",flexDirection:"column",gap:2,flex:1,minWidth:0},children:[jsx("div",{style:{fontSize:13,fontWeight:500,color:"#0a0a0a",lineHeight:1.3},children:"Feature applied"}),jsx("div",{style:{fontSize:13,color:"#71717a",lineHeight:1.4},children:s.text})]}),A&&qe!=="running"&&jsx("button",{onClick:C=>{C.stopPropagation(),so();},disabled:h,style:{padding:"4px 10px",fontSize:12,fontWeight:500,borderRadius:6,border:"1px solid #e4e4e7",background:"#ffffff",color:"#0a0a0a",cursor:h?"default":"pointer",opacity:h?.4:1,height:28,flexShrink:0},children:"Undo"})]}):jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:8,background:"#ffffff",border:"1px solid #e5e7eb",borderRadius:10,boxShadow:"0 1px 2px rgba(0, 0, 0, 0.03)",padding:"9px 12px",maxWidth:"90%",boxSizing:"border-box"},children:[jsx("span",{style:{width:7,height:7,borderRadius:"50%",background:"#94a3b8",flexShrink:0}}),jsx("span",{style:{fontSize:12.5,fontWeight:600,color:s.reverted?"#9ca3af":"#334155",textDecoration:s.reverted?"line-through":"none",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:s.text}),s.reverted&&jsx("span",{style:{fontSize:10,fontWeight:600,color:"#9ca3af",border:"1px solid #e5e7eb",borderRadius:5,padding:"3px 8px",flexShrink:0},children:"removed"}),s.timestamp&&jsx("span",{style:{fontSize:11,color:"#9ca3af",flexShrink:0},children:yr(s.timestamp)}),b&&I&&s.promptId&&!s.reverted&&v!==jt.length-1&&qe!=="running"&&jsx("span",{style:{display:"inline-flex",gap:4,flexShrink:0},children:jsx("button",{onClick:C=>{C.stopPropagation(),Ds(s,"revert_to");},disabled:ve||Y!==null,title:"Go back to this point \u2014 discard every later change",style:{padding:"1px 6px",fontSize:10,fontWeight:500,borderRadius:4,border:"1px solid #e5e7eb",background:"#ffffff",color:"#6b7280",cursor:ve||Y?"default":"pointer",opacity:Y===s.promptId?.5:1},children:"To here"})}),A&&v===jt.length-1&&qe!=="running"&&jsxs("button",{onClick:C=>{C.stopPropagation(),so();},onMouseEnter:()=>$(v),onMouseLeave:()=>$(null),disabled:h,style:{position:"relative",padding:2,borderRadius:4,border:"none",background:g===v?"rgba(0,0,0,0.06)":"transparent",color:g===v?"#6b7280":"#d1d5db",cursor:h?"default":"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"color 0.15s, background 0.15s",opacity:h?.4:1,flexShrink:0},children:[jsx(Undo2,{style:{width:12,height:12}}),g===v&&jsx("span",{style:{position:"absolute",bottom:"calc(100% + 4px)",right:0,fontSize:10,fontWeight:500,color:"#fff",background:"#374151",borderRadius:4,padding:"2px 6px",whiteSpace:"nowrap",pointerEvents:"none",lineHeight:"16px"},children:"Undo"})]})]})},v)),(Fe?.forkId===re||Yt?.disabledAt)&&jsx("div",{style:{marginTop:24,background:"#f9fafb",border:"1px solid #f3f4f6",borderRadius:10,padding:"10px 12px",textAlign:"center"},children:Fe?.forkId===re?jsxs(Fragment,{children:[jsx("div",{style:{fontSize:13,fontWeight:600,color:"#111827"},children:Fe.kind==="disable"?"Disabling This Fork":Fe.kind==="enable"?"Re-enabling This Fork":"Removing This Fork"}),jsx("div",{style:{fontSize:12,color:"#9ca3af",fontStyle:"italic",marginTop:3,animation:"__fork-pulse 1.2s ease-in-out infinite"},children:Fe.kind==="disable"?"The agent is removing this change from the app (~2m). You can re-enable it later.":Fe.kind==="enable"?"The agent is restoring this change (~2m).":"The agent is removing this change while keeping later work (~2m)."})]}):jsxs(Fragment,{children:[jsx("div",{style:{fontSize:13,fontWeight:600,color:"#111827"},children:"This Fork Is Disabled"}),jsx("div",{style:{fontSize:12,color:"#6b7280",marginTop:3,lineHeight:1.5},children:"Its change has been removed from the app."}),jsx("button",{onClick:()=>re&&ao(re,false),disabled:Ge,style:{marginTop:8,padding:"5px 14px",fontSize:12,fontWeight:500,borderRadius:7,border:"1px solid #e5e7eb",background:"#ffffff",color:"#111827",cursor:Ge?"default":"pointer",opacity:Ge?.5:1,transition:"background 0.12s"},onMouseEnter:s=>s.currentTarget.style.background="#f9fafb",onMouseLeave:s=>s.currentTarget.style.background="#ffffff",children:"Enable"})]})}),fo,An]}),qe==="running"&&jsx("div",{style:{margin:"12px 16px 0 16px"},children:jsxs("div",{onClick:()=>E(!d),style:{background:"#ffffff",border:"1px solid #e5e7eb",borderRadius:10,boxShadow:"0 1px 2px rgba(0, 0, 0, 0.03)",overflow:"hidden",cursor:"pointer",transition:"all 0.3s cubic-bezier(0.22, 1, 0.36, 1)"},children:[jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"9px 12px"},children:[jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[jsx("span",{style:{width:7,height:7,borderRadius:"50%",background:"#f59e0b",flexShrink:0,animation:"__fork-pulse 1.4s ease-in-out infinite"}}),jsx(ha,{events:Bt},re??"__compose__")]}),jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,flexShrink:0,marginLeft:8},children:[Bt[0]?.timestamp&&jsx("span",{style:{fontSize:11,color:"#9ca3af"},children:yr(Bt[0].timestamp)}),jsx("div",{style:{color:"#9ca3af",transition:"transform 0.2s ease",transform:d?"rotate(180deg)":"rotate(0deg)",display:"flex"},children:jsx(ChevronDown,{style:{width:14,height:14}})})]})]}),jsx("div",{style:{maxHeight:d?320:0,opacity:d?1:0,transition:"max-height 0.35s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.25s ease",overflow:"hidden"},children:jsx("div",{style:{background:"#1a1a2e",borderTop:"1px solid #e5e7eb",maxHeight:320,overflowY:"auto"},children:jsx(Lo,{events:Bt},re??"__compose__")})})]})}),qe==="error"&&jsxs("div",{style:{padding:"20px 16px",textAlign:"center"},children:[jsx("div",{style:{width:36,height:36,backgroundColor:"#fef2f2",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto 10px auto"},children:jsx(X,{style:{width:18,height:18,color:"#ef4444"}})}),jsx("p",{style:{fontSize:12,color:"#6b7280",marginBottom:10,maxWidth:260,margin:"0 auto 10px auto"},children:Ls??r}),jsxs("button",{onClick:()=>{let s=Gn?.prompt||Sn.current;s&&w(s,Xt);},onMouseEnter:()=>pe(true),onMouseLeave:()=>pe(false),style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 12px",borderRadius:8,fontSize:12,fontWeight:500,color:"#111827",backgroundColor:te?"#e5e7eb":"#f3f4f6",border:"none",cursor:"pointer",transition:"background-color 0.15s",fontFamily:"inherit"},children:[jsx(RotateCcw,{style:{width:12,height:12}})," Try Again"]})]})]}),!(re?qe==="running"||Yt?.disabledAt:Xe&&e==="running")&&jsxs("div",{style:{padding:"8px 12px 12px 12px",flexShrink:0,position:"relative"},children:[Lr&&jsx("div",{style:{position:"absolute",top:-42,left:"50%",transform:"translateX(-50%)",background:"#111827",color:"#ffffff",fontSize:12,fontWeight:500,padding:"7px 14px",borderRadius:999,boxShadow:"0 4px 16px rgba(0, 0, 0, 0.22)",whiteSpace:"nowrap",maxWidth:hr-32,overflow:"hidden",textOverflow:"ellipsis",pointerEvents:"none",zIndex:5},children:Lr}),jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6,borderRadius:14,padding:"10px 10px 8px 12px",background:"#ffffff",border:"1px solid #e5e7eb",boxShadow:"0 1px 2px rgba(0, 0, 0, 0.03)"},children:[(at.length>0||yt)&&jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:6,alignItems:"center"},children:[at.map(s=>jsxs("div",{onMouseEnter:()=>Dr(s.id),onMouseLeave:()=>Dr(null),style:{position:"relative",width:44,height:44,borderRadius:8,overflow:"hidden",border:"1px solid #e5e7eb",flexShrink:0},children:[jsx("img",{src:s.dataUrl,alt:"attachment",style:{width:"100%",height:"100%",objectFit:"cover",display:"block"}}),jsx("button",{onClick:()=>Jn(v=>v.filter(C=>C.id!==s.id)),title:"Remove image",style:{position:"absolute",top:2,right:2,width:15,height:15,borderRadius:"50%",background:"rgba(17, 24, 39, 0.78)",color:"#ffffff",border:"none",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",padding:0,opacity:Is===s.id?1:.6,transition:"opacity 0.12s"},children:jsx(X,{style:{width:9,height:9}})})]},s.id)),yt&&jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:5,background:"#eef2ff",border:"1px solid #c7d2fe",color:"#4338ca",borderRadius:999,padding:"4px 6px 4px 9px",fontSize:11,fontWeight:500,maxWidth:"100%",minWidth:0},children:[jsx(MousePointer2,{style:{width:11,height:11,flexShrink:0}}),jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},children:Ln(yt)}),jsx("button",{onClick:()=>Vn(null),title:"Remove element context",style:{width:14,height:14,borderRadius:"50%",background:"transparent",color:"#6366f1",border:"none",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",padding:0,flexShrink:0},children:jsx(X,{style:{width:10,height:10}})})]})]}),jsx("textarea",{ref:_t,value:_,onChange:s=>H(s.target.value),onPaste:s=>{let v=Oo(s.nativeEvent);v.length>0&&(s.preventDefault(),Zr(v));},onKeyDown:s=>{s.key==="Enter"&&!s.shiftKey&&(s.preventDefault(),to()),s.key==="Escape"&&!N&&co();},placeholder:re?"Iterate on this feature...":"Start building a new Fork...",rows:1,style:{width:"100%",backgroundColor:"transparent",fontSize:13,color:"#111827",border:"none",outline:"none",padding:0,fontFamily:"inherit",resize:"none",lineHeight:1.5,maxHeight:160,overflow:"auto",boxSizing:"border-box"}}),jsxs("div",{style:{display:"flex",alignItems:"center",gap:2},children:[jsx("button",{onClick:()=>Or.current?.click(),onMouseEnter:()=>Ur(true),onMouseLeave:()=>Ur(false),title:"Attach an image",style:{width:28,height:28,borderRadius:8,display:"flex",alignItems:"center",justifyContent:"center",background:Fs?"rgba(0, 0, 0, 0.05)":"transparent",color:"#6b7280",border:"none",cursor:"pointer",padding:0,flexShrink:0,transition:"background 0.12s"},children:jsx(ImagePlus,{style:{width:16,height:16}})}),jsx("button",{onClick:Us,onMouseEnter:()=>Nr(true),onMouseLeave:()=>Nr(false),title:kt?"Cancel element selection":"Select an element on the page",style:{width:28,height:28,borderRadius:8,display:"flex",alignItems:"center",justifyContent:"center",background:kt?"#eef2ff":As?"rgba(0, 0, 0, 0.05)":"transparent",color:kt?"#4f46e5":"#6b7280",border:"none",cursor:"pointer",padding:0,flexShrink:0,transition:"background 0.12s, color 0.12s"},children:jsx(MousePointer2,{style:{width:16,height:16}})}),jsx("div",{style:{flex:1}}),jsx("button",{onClick:Ns,onMouseEnter:()=>Br(true),onMouseLeave:()=>Br(false),title:Ht?"Stop voice input":"Voice input",style:{width:28,height:28,borderRadius:8,display:"flex",alignItems:"center",justifyContent:"center",background:Ht?"#fef2f2":Rs?"rgba(0, 0, 0, 0.05)":"transparent",color:Ht?"#dc2626":"#6b7280",border:"none",cursor:"pointer",padding:0,flexShrink:0,transition:"background 0.12s, color 0.12s",animation:Ht?"__fork-pulse 1.4s ease-in-out infinite":void 0},children:jsx(Mic,{style:{width:16,height:16}})}),jsx("button",{onClick:to,disabled:!Dt,onMouseEnter:()=>me(true),onMouseLeave:()=>me(false),title:"Send",style:{width:28,height:28,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",color:"#ffffff",opacity:Dt?1:.35,transform:oe&&Dt?"scale(1.08)":"scale(1)",background:Dt?"#111827":"rgba(0, 0, 0, 0.12)",border:"none",cursor:Dt?"pointer":"default",flexShrink:0,transition:"transform 0.15s, opacity 0.15s, background 0.15s",padding:0,marginLeft:4},children:jsx(ArrowUp,{style:{width:14,height:14}})})]})]}),jsx("input",{ref:Or,type:"file",accept:"image/*",multiple:true,style:{display:"none"},onChange:s=>{let v=Array.from(s.target.files??[]);s.target.value="",Zr(v);}})]})]})]});return N?Yn:Ke&&Pt?createPortal(Yn,Pt.document.body):jsx(ya,{children:Yn})}function Vo(e){if("target"in e&&e.target)return e.target;if("boundaryId"in e&&e.boundaryId)return {type:"boundary",id:e.boundaryId,title:e.title};if("slotId"in e&&e.slotId)return {type:"slot",id:e.slotId,title:e.title??e.slotLabel};throw new Error("Fork chat target requires either target, slotId, or boundaryId.")}function kr(e){let{apiKey:t,userId:n,userHash:r,baseUrl:o,appId:i,adminContext:a,refreshModuleManifest:l,queueBoundaryAnimation:u,trackForkActivity:w,recordForkActivityEvent:A}=Ee(),[b,I]=useState({}),[O,R]=useState(null),[p,f]=useState("idle"),[T,x]=useState(false),[k,L]=useState(null),N=useRef(new Map),K=useCallback((d,E)=>{I(h=>{let g=h[d]??{forkId:d,state:"running",fork:E.fork,events:[],error:null};return {...h,[d]:{...g,...E}}});},[]),_=useCallback((d,E)=>{I(h=>{let c=h[d];return c?{...h,[d]:{...c,events:[...c.events,E]}}:h});},[]),H=useCallback(d=>{let E=N.current.get(d);E&&(E.close(),N.current.delete(d));},[]),j=useCallback(()=>{f("prompting"),L(null),x(false),R(null);},[]),W=useCallback(()=>{f("idle"),x(false),L(null),R(null);for(let d of N.current.values())d.close();N.current.clear(),I({});},[]),M=useCallback((d,E)=>{H(d.id);let h=new URLSearchParams({key:t});n&&h.set("userId",n),r&&h.set("userHash",r),a.isAdmin&&a.containerId&&h.set("containerId",a.containerId);let c=new EventSource(`${o}/api/v1/forks/${d.id}/events?${h.toString()}`);N.current.set(d.id,c),c.onmessage=g=>{try{let $=JSON.parse(g.data);if(A(d.id,$),_(d.id,$),$.type==="complete"){let B=$.data;u(E,d.id),l().catch(()=>{}).finally(()=>{let D={...d,status:"complete",moduleUrl:B.moduleUrl,cssUrls:B.cssUrls,summary:B.summary,completedAt:new Date().toISOString()};K(d.id,{state:"complete",fork:D}),H(d.id);});}else if($.type==="error"){let B=$.data;K(d.id,{state:"error",error:B.error||"Unknown error"}),H(d.id);}}catch{}},c.onerror=()=>{let g={Authorization:`Bearer ${t}`,...ue()};n&&(g["X-Fork-User-Id"]=n),r&&(g["X-Fork-User-Hash"]=r),fetch(`${o}/api/v1/forks/${d.id}`,{headers:g}).then($=>$.json()).then($=>{$.status==="complete"?(u(E,$.id),l().catch(()=>{}),K(d.id,{state:"complete",fork:$})):$.status==="error"?K(d.id,{state:"error",fork:$,error:$.error||"Fork generation failed"}):K(d.id,{fork:$});}).catch(()=>{K(d.id,{state:"error",error:"Connection lost"});}),H(d.id);};},[a.containerId,a.isAdmin,t,_,o,H,u,A,l,K,r,n]),S=useCallback(async(d,E,h)=>{try{if(!i)throw new Error("ForkProvider requires appId for module boundary prompts.");x(!0),L(null),R(null);let c;if(h?.forkId){let g={prompt:d};n&&(g.userId=n),r&&(g.userHash=r),h?.attachments?.length&&(g.attachments=h.attachments),h?.selectedElement&&(g.selectedElement=h.selectedElement);let $=await fetch(`${o}/api/v1/forks/${encodeURIComponent(h.forkId)}/prompts`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`,...ue()},body:JSON.stringify(g)});if(!$.ok){let B=await $.json().catch(()=>({}));throw new Error(B.error||`API error: ${$.status}`)}c=await $.json();}else {let g={userId:n,prompt:d,boundaryId:e,appId:i};E?g.containerId=E:a.isAdmin&&a.containerId&&(g.containerId=a.containerId),r&&(g.userHash=r),h?.forceNew&&(g.force_new=!0),h?.attachments?.length&&(g.attachments=h.attachments),h?.selectedElement&&(g.selectedElement=h.selectedElement);let $=await fetch(`${o}/api/v1/forks`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`,...ue()},body:JSON.stringify(g)});if(!$.ok){let B=await $.json().catch(()=>({}));throw new Error(B.error||`API error: ${$.status}`)}c=await $.json();}I(g=>({...g,[c.id]:{forkId:c.id,state:"running",fork:c,events:[],error:null}})),R(c.id),x(!1),w(c,{targetKind:"module",targetId:e}),M(c,c.boundaryId??e);}catch(c){L(c.message),x(false);}},[a.containerId,a.isAdmin,t,i,o,e,M,w,r,n]),U=useCallback(async d=>{try{let E={Authorization:`Bearer ${t}`,...ue()};n&&(E["X-Fork-User-Id"]=n),r&&(E["X-Fork-User-Hash"]=r);let h=await fetch(`${o}/api/v1/forks/${d}`,{headers:E});if(!h.ok)return;let c=await h.json(),g=c.boundaryId??e;if(w(c,{targetKind:"module",targetId:g}),c.status==="complete"){I($=>({...$,[c.id]:{forkId:c.id,state:"complete",fork:c,events:[],error:null}})),R(c.id);return}if(c.status==="error"){I($=>({...$,[c.id]:{forkId:c.id,state:"error",fork:c,events:[],error:c.error||"Fork generation failed"}})),R(c.id);return}if(c.status!=="pending"&&c.status!=="running"&&c.status!=="building")return;I($=>({...$,[c.id]:{forkId:c.id,state:"running",fork:c,events:[],error:null}})),R(c.id),M(c,g);}catch{}},[t,o,e,M,w,r,n]),X=useCallback(async d=>{try{if(!i)throw new Error("ForkProvider requires appId for boundary undo.");let E={userId:n,boundaryId:e,appId:i};r&&(E.userHash=r),d&&(E.fork_id=d);let h=await fetch(`${o}/api/v1/forks/undo`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(E)});if(!h.ok){let g=await h.json().catch(()=>({}));throw new Error(g.error||`API error: ${h.status}`)}let c=await h.json();if(await l().catch(()=>{}),c.removed)I(g=>{let $={};for(let[B,D]of Object.entries(g))(D.fork.boundaryId??e)!==e&&($[B]=D);return $}),R(null),f("prompting");else if(c.fork){let g=c.fork;K(g.id,{state:"complete",fork:g}),R(g.id);}return c}catch(E){throw L(E.message),E}},[t,i,o,e,l,K,r,n]),V=useCallback(async d=>{try{let E={Authorization:`Bearer ${t}`,...ue()};n&&(E["X-Fork-User-Id"]=n),r&&(E["X-Fork-User-Hash"]=r);let h=await fetch(`${o}/api/v1/forks/${d}`,{headers:E});if(!h.ok)return;let c=await h.json();I(g=>({...g,[c.id]:{forkId:c.id,state:"running",fork:c,events:[],error:null}})),M(c,c.boundaryId??e);}catch{}},[t,o,e,M,r,n]),Q=useCallback(async(d,E,h="remove_step")=>{let c={Authorization:`Bearer ${t}`,...ue()};n&&(c["X-Fork-User-Id"]=n),r&&(c["X-Fork-User-Hash"]=r);let g=new URLSearchParams({mode:h});E&&g.set("prompt_id",E);let $=await fetch(`${o}/api/v1/forks/${encodeURIComponent(d)}/revert-plan?${g.toString()}`,{headers:c});if(!$.ok){let B=await $.json().catch(()=>({}));throw new Error(B.error||`API error: ${$.status}`)}return $.json()},[t,o,r,n]),Z=useCallback(async d=>{try{let E={userId:n,mode:d.mode,strategy:d.strategy};d.promptId&&(E.prompt_id=d.promptId),r&&(E.userHash=r);let h=await fetch(`${o}/api/v1/forks/${encodeURIComponent(d.forkId)}/revert`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`,...ue()},body:JSON.stringify(E)});if(!h.ok){let g=await h.json().catch(()=>({}));throw new Error(g.error||`API error: ${h.status}`)}let c=await h.json();return c.agentic?(await V(c.fork.id),c):(await l().catch(()=>{}),c.removed?(I(g=>{let $={};for(let[B,D]of Object.entries(g))(D.fork.boundaryId??e)!==e&&($[B]=D);return $}),R(null),f("prompting")):c.fork&&(K(c.fork.id,{state:"complete",fork:c.fork}),R(c.fork.id)),c)}catch(E){throw L(E.message),E}},[V,t,o,e,l,K,r,n]),ee=useCallback(async(d,E)=>{let h={userId:n,name:E};r&&(h.userHash=r);let c=await fetch(`${o}/api/v1/forks/${encodeURIComponent(d)}/name`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`,...ue()},body:JSON.stringify(h)});if(!c.ok){let g=await c.json().catch(()=>({}));throw new Error(g.error||`API error: ${c.status}`)}return c.json()},[t,o,r,n]),fe=useCallback(async(d,E)=>{let h={userId:n,disabled:E};r&&(h.userHash=r);let c=await fetch(`${o}/api/v1/forks/${encodeURIComponent(d)}/disabled`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`,...ue()},body:JSON.stringify(h)});if(!c.ok){let $=await c.json().catch(()=>({}));throw new Error($.error||`API error: ${c.status}`)}let g=await c.json();return g?.agentic&&g?.fork?.id?(await V(g.fork.id),g):(await l().catch(()=>{}),g)},[U,t,o,l,r,n]),de=O?b[O]??null:null,oe=T?"running":k?"error":de?de.state:p,me=de?.fork??null,te=de?.events??[],pe=k??de?.error??null;return {state:oe,fork:me,events:te,error:pe,runs:b,open:j,close:W,startFork:S,undoFork:X,planRevert:Q,revertFork:Z,setForkDisabled:fe,renameFork:ee,adoptRunningFork:U}}var va=0;function Go(e){let{state:t,fork:n,events:r,error:o,runs:i,open:a,close:l,startFork:u,undoFork:w,planRevert:A,revertFork:b,setForkDisabled:I,renameFork:O,adoptRunningFork:R}=kr(e),[p,f]=useState(false),T=useRef(null),x=useRef(t),k=useCallback(()=>{T.current!==null&&(clearTimeout(T.current),T.current=null);},[]),L=useCallback(()=>{k(),f(true),a();},[k,a]),N=useCallback(()=>{k(),f(false),l();},[k,l]),K=useCallback(async H=>{k(),f(true),await R(H);},[R,k]),_=Object.values(i).filter(H=>H.state==="running").length;return useEffect(()=>{let H=x.current;x.current=t,t==="complete"&&H==="running"&&p&&_===0&&(k(),T.current=setTimeout(()=>{T.current=null,f(false),l();},va)),(t==="running"||t==="prompting")&&k();},[t,p,_,k,l]),useEffect(()=>k,[k]),{state:t,fork:n,events:r,error:o,runs:i,isOpen:p,open:L,close:N,submit:u,undo:w,planRevert:A,revertFork:b,setForkDisabled:I,renameFork:O,adoptRunningFork:K}}function br(){let{apiKey:e,userId:t,userHash:n,baseUrl:r,adminContext:o,setSlotFork:i,clearSlotFork:a,skipAnimationForSlot:l,trackForkActivity:u,recordForkActivityEvent:w,refreshModuleManifest:A}=Ee(),[b,I]=useState({}),[O,R]=useState(null),[p,f]=useState("idle"),[T,x]=useState(false),[k,L]=useState(null),N=useRef(new Map),K=useCallback((d,E)=>{I(h=>{let g=h[d]??{forkId:d,state:"running",fork:E.fork,events:[],error:null};return {...h,[d]:{...g,...E}}});},[]),_=useCallback((d,E)=>{I(h=>{let c=h[d];return c?{...h,[d]:{...c,events:[...c.events,E]}}:h});},[]),H=useCallback(d=>{let E=N.current.get(d);E&&(E.close(),N.current.delete(d));},[]),j=useCallback(()=>{f("prompting"),L(null),x(false),R(null);},[]),W=useCallback(()=>{f("idle"),x(false),L(null),R(null);for(let d of N.current.values())d.close();N.current.clear(),I({});},[]),M=useCallback((d,E)=>{H(d.id);let h=new URLSearchParams({key:e});t&&h.set("userId",t),n&&h.set("userHash",n),o.isAdmin&&o.containerId&&h.set("containerId",o.containerId);let c=new EventSource(`${r}/api/v1/forks/${d.id}/events?${h.toString()}`);N.current.set(d.id,c),c.onmessage=g=>{try{let $=JSON.parse(g.data);if(w(d.id,$),_(d.id,$),$.type==="complete"){let B=$.data,D={...d,status:"complete",bundleUrl:B.bundleUrl,summary:B.summary,revealPending:!0,completedAt:new Date().toISOString()};K(d.id,{state:"complete",fork:D});let Y=E??d.slotId;Y&&B.bundleUrl&&i(Y,D),H(d.id);}else if($.type==="error"){let B=$.data;K(d.id,{state:"error",error:B.error||"Unknown error"}),H(d.id);}}catch{}},c.onerror=()=>{let g={Authorization:`Bearer ${e}`,...ue()};t&&(g["X-Fork-User-Id"]=t),n&&(g["X-Fork-User-Hash"]=n),fetch(`${r}/api/v1/forks/${d.id}`,{headers:g}).then($=>$.json()).then($=>{if($.status==="complete"){K(d.id,{state:"complete",fork:{...$,revealPending:true}});let B=E??$.slotId;B&&$.bundleUrl&&i(B,{...$,revealPending:true});}else $.status==="error"?K(d.id,{state:"error",fork:$,error:$.error||"Fork generation failed"}):K(d.id,{fork:$});}).catch(()=>{K(d.id,{state:"error",error:"Connection lost"});}),H(d.id);};},[o.containerId,o.isAdmin,e,_,r,H,w,i,K,n,t]),S=useCallback(async(d,E,h,c)=>{try{x(!0),L(null),R(null);let g;if(c?.forkId){let B={prompt:d};t&&(B.userId=t),n&&(B.userHash=n),c?.attachments?.length&&(B.attachments=c.attachments),c?.selectedElement&&(B.selectedElement=c.selectedElement);let D=await fetch(`${r}/api/v1/forks/${encodeURIComponent(c.forkId)}/prompts`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,...ue()},body:JSON.stringify(B)});if(!D.ok){let Y=await D.json().catch(()=>({}));throw new Error(Y.error||`API error: ${D.status}`)}g=await D.json();}else {let B={userId:t,prompt:d};E&&(B.slotId=E),h?B.containerId=h:o.isAdmin&&o.containerId&&(B.containerId=o.containerId),n&&(B.userHash=n),c?.forceNew&&(B.force_new=!0),c?.attachments?.length&&(B.attachments=c.attachments),c?.selectedElement&&(B.selectedElement=c.selectedElement);let D=await fetch(`${r}/api/v1/forks`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,...ue()},body:JSON.stringify(B)});if(!D.ok){let Y=await D.json().catch(()=>({}));throw new Error(Y.error||`API error: ${D.status}`)}g=await D.json();}I(B=>({...B,[g.id]:{forkId:g.id,state:"running",fork:g,events:[],error:null}})),R(g.id),x(!1);let $=E??g.slotId;$&&u(g,{targetKind:"slot",targetId:$}),M(g,E);}catch(g){L(g.message),x(false);}},[o.containerId,o.isAdmin,e,r,M,u,n,t]),U=useCallback(async d=>{try{let E={Authorization:`Bearer ${e}`,...ue()};t&&(E["X-Fork-User-Id"]=t),n&&(E["X-Fork-User-Hash"]=n);let h=await fetch(`${r}/api/v1/forks/${d}`,{headers:E});if(!h.ok)return;let c=await h.json();if(c.slotId&&u(c,{targetKind:"slot",targetId:c.slotId}),c.status==="complete"){I(g=>({...g,[c.id]:{forkId:c.id,state:"complete",fork:c,events:[],error:null}})),R(c.id);return}if(c.status==="error"){I(g=>({...g,[c.id]:{forkId:c.id,state:"error",fork:c,events:[],error:c.error||"Fork generation failed"}})),R(c.id);return}if(c.status!=="pending"&&c.status!=="running"&&c.status!=="building")return;I(g=>({...g,[c.id]:{forkId:c.id,state:"running",fork:c,events:[],error:null}})),R(c.id),M(c,c.slotId);}catch{}},[e,r,M,u,n,t]),X=useCallback(async(d,E)=>{try{let h={userId:t,slotId:d};n&&(h.userHash=n),E&&(h.fork_id=E);let c=await fetch(`${r}/api/v1/forks/undo`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify(h)});if(!c.ok){let $=await c.json().catch(()=>({}));throw new Error($.error||`API error: ${c.status}`)}let g=await c.json();if(l(d),g.removed)a(d),I($=>{let B={};for(let[D,Y]of Object.entries($))Y.fork.slotId!==d&&(B[D]=Y);return B}),R(null),f("prompting");else if(g.fork){i(d,g.fork);let $=g.fork;K($.id,{state:"complete",fork:$});}return g}catch(h){throw L(h.message),h}},[e,t,n,r,a,i,l,K]),V=useCallback(async d=>{try{let E={Authorization:`Bearer ${e}`,...ue()};t&&(E["X-Fork-User-Id"]=t),n&&(E["X-Fork-User-Hash"]=n);let h=await fetch(`${r}/api/v1/forks/${d}`,{headers:E});if(!h.ok)return;let c=await h.json();I(g=>({...g,[c.id]:{forkId:c.id,state:"running",fork:c,events:[],error:null}})),M(c,c.slotId);}catch{}},[e,r,M,n,t]),Q=useCallback(async(d,E,h="remove_step")=>{let c={Authorization:`Bearer ${e}`,...ue()};t&&(c["X-Fork-User-Id"]=t),n&&(c["X-Fork-User-Hash"]=n);let g=new URLSearchParams({mode:h});E&&g.set("prompt_id",E);let $=await fetch(`${r}/api/v1/forks/${encodeURIComponent(d)}/revert-plan?${g.toString()}`,{headers:c});if(!$.ok){let B=await $.json().catch(()=>({}));throw new Error(B.error||`API error: ${$.status}`)}return $.json()},[e,r,n,t]),Z=useCallback(async(d,E)=>{try{let h={userId:t,mode:E.mode,strategy:E.strategy};E.promptId&&(h.prompt_id=E.promptId),n&&(h.userHash=n);let c=await fetch(`${r}/api/v1/forks/${encodeURIComponent(E.forkId)}/revert`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,...ue()},body:JSON.stringify(h)});if(!c.ok){let $=await c.json().catch(()=>({}));throw new Error($.error||`API error: ${c.status}`)}let g=await c.json();return g.agentic?(await V(g.fork.id),g):(l(d),g.removed?(a(d),I($=>{let B={};for(let[D,Y]of Object.entries($))Y.fork.slotId!==d&&(B[D]=Y);return B}),R(null),f("prompting")):g.fork&&(i(d,g.fork),K(g.fork.id,{state:"complete",fork:g.fork})),g)}catch(h){throw L(h.message),h}},[V,e,r,a,i,l,K,n,t]),ee=useCallback(async(d,E)=>{let h={userId:t,name:E};n&&(h.userHash=n);let c=await fetch(`${r}/api/v1/forks/${encodeURIComponent(d)}/name`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,...ue()},body:JSON.stringify(h)});if(!c.ok){let g=await c.json().catch(()=>({}));throw new Error(g.error||`API error: ${c.status}`)}return c.json()},[e,r,n,t]),fe=useCallback(async(d,E)=>{let h={userId:t,disabled:E};n&&(h.userHash=n);let c=await fetch(`${r}/api/v1/forks/${encodeURIComponent(d)}/disabled`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,...ue()},body:JSON.stringify(h)});if(!c.ok){let $=await c.json().catch(()=>({}));throw new Error($.error||`API error: ${c.status}`)}let g=await c.json();return g?.agentic&&g?.fork?.id?(await V(g.fork.id),g):(await A().catch(()=>{}),g)},[U,e,r,A,n,t]),de=O?b[O]??null:null,oe=T?"running":k?"error":de?de.state:p,me=de?.fork??null,te=de?.events??[],pe=k??de?.error??null;return {state:oe,fork:me,events:te,error:pe,runs:b,open:j,close:W,startFork:S,undoFork:X,planRevert:Q,revertFork:Z,setForkDisabled:fe,renameFork:ee,adoptRunningFork:U}}var xa=0;function Qo(){let{state:e,fork:t,events:n,error:r,runs:o,open:i,close:a,startFork:l,undoFork:u,planRevert:w,revertFork:A,setForkDisabled:b,renameFork:I,adoptRunningFork:O}=br(),[R,p]=useState(false),f=useRef(null),T=useRef(e),x=useCallback(()=>{f.current!==null&&(clearTimeout(f.current),f.current=null);},[]),k=useCallback(()=>{x(),p(true),i();},[x,i]),L=useCallback(()=>{x(),p(false),a();},[x,a]),N=useCallback(async _=>{x(),p(true),await O(_);},[O,x]),K=Object.values(o).filter(_=>_.state==="running").length;return useEffect(()=>{let _=T.current;T.current=e,e==="complete"&&_==="running"&&R&&K===0&&(x(),f.current=setTimeout(()=>{f.current=null,p(false),a();},xa)),(e==="running"||e==="prompting")&&x();},[e,R,K,x,a]),useEffect(()=>x,[x]),{state:e,fork:t,events:n,error:r,runs:o,isOpen:R,open:k,close:L,submit:l,undo:u,planRevert:w,revertFork:A,setForkDisabled:b,renameFork:I,adoptRunningFork:N}}var Fa=new Set(["pending","running","building"]);function vr(e){let t=Vo(e),n=Qo(),r=Go(t.type==="boundary"?t.id:""),{baseUrl:o,apiKey:i,userId:a,userHash:l,appId:u,activitySummary:w,forkActivities:A}=Ee(),b=t.type==="slot"?n:r,I=t.type==="slot"?"slot":"boundary",O=t.id,R=t.title,p=t.type==="slot"?"slot":"module",f=A.find(j=>j.targetKind===p&&j.targetId===t.id&&Fa.has(j.status)),T=A.find(j=>j.targetKind===p&&j.targetId===t.id&&j.status==="complete"&&j.unread),x=useCallback(()=>{let j=f??T;if(j){b.adoptRunningFork(j.id);return}b.open();},[b,f,T]),k=useCallback((j,W,M,S)=>t.type==="slot"?n.submit(j,W??t.id,M,S):r.submit(j,M,S),[r,n,t]),L=useCallback((j,W)=>t.type==="slot"?n.undo(j??t.id,W):r.undo(W),[r,n,t]),N=useCallback((j,W,M="remove_step")=>t.type==="slot"?n.planRevert(j,W,M):r.planRevert(j,W,M),[r,n,t]),K=useCallback(j=>t.type==="slot"?n.revertFork(t.id,j):r.revertFork(j),[r,n,t]),_=useCallback((j,W)=>t.type==="slot"?n.setForkDisabled(j,W):r.setForkDisabled(j,W),[r,n,t]),H=useCallback((j,W)=>t.type==="slot"?n.renameFork(j,W):r.renameFork(j,W),[r,n,t]);return {...b,open:x,target:t,targetId:O,targetLabel:R,historyMode:I,submit:k,undo:L,planRevert:N,revert:K,buttonProps:{onClick:x,hasNotification:w.unreadCompletedCount>0,activity:w},panelProps:{state:b.state,fork:b.fork,events:b.events,error:b.error,runs:b.runs,...t.type==="slot"?{slotId:O,targetLabel:R,historyMode:I}:{targetId:O,targetLabel:R,historyMode:I},onSubmit:k,onUndo:L,onPlanRevert:N,onRevert:K,onSetForkDisabled:_,onRenameFork:H,onClose:b.close,baseUrl:o,apiKey:i,userId:a,userHash:l,appId:u}}}function ln(e){let{embedded:t,completeVariant:n}=e,r=vr(e);return t?jsx(Un,{...r.panelProps,embedded:true,completeVariant:n}):r.isOpen?jsx(Un,{...r.panelProps,completeVariant:n}):jsx(fr,{...r.buttonProps})}function Aa({boundaryId:e,title:t}){return jsx(ln,{boundaryId:e,title:t})}function Sr(e){let t=Array.from(e.children).filter(r=>r instanceof HTMLElement);return t.length===1?t[0]:getComputedStyle(e).display==="contents"?null:e}function es(e){let t=e.getBoundingClientRect(),n=e.cloneNode(true);n.setAttribute("data-fork-clone-overlay","true"),n.style.position="fixed",n.style.top=`${t.top}px`,n.style.left=`${t.left}px`,n.style.width=`${t.width}px`,n.style.height=`${t.height}px`,n.style.flex="none",n.style.minHeight="auto",n.style.zIndex="9998",n.style.pointerEvents="none",n.style.overflow="hidden";let r=getComputedStyle(e).backgroundColor;n.style.backgroundColor=r&&r!=="rgba(0, 0, 0, 0)"&&r!=="transparent"?r:getComputedStyle(document.body).backgroundColor||"#ffffff",document.body.appendChild(n);let o=e.querySelectorAll("*"),i=n.querySelectorAll("*");for(let a=0;a<o.length;a+=1)o[a].scrollTop!==0&&(i[a].scrollTop=o[a].scrollTop),o[a].scrollLeft!==0&&(i[a].scrollLeft=o[a].scrollLeft);return n}function xr(e){let t=[],n=e.querySelectorAll("*");for(let r of n){if(!(r instanceof HTMLElement))continue;let o=r.getBoundingClientRect();if(o.width<10||o.height<10||["SCRIPT","STYLE","META","LINK"].includes(r.tagName))continue;let i=getComputedStyle(r),a=parseFloat(i.borderTopLeftRadius)||0;t.push({tag:r.tagName,className:r.className||"",text:(r.textContent||"").slice(0,50).trim(),rect:o,borderRadius:a});}return t}function ts(e,t){let n=[];for(let r of t)if(!(e.find(a=>a.tag===r.tag&&a.className===r.className&&Math.abs(a.rect.top-r.rect.top)<20&&Math.abs(a.rect.left-r.rect.left)<20)||n.some(a=>r.rect.top>=a.rect.top&&r.rect.left>=a.rect.left&&r.rect.right<=a.rect.right&&r.rect.bottom<=a.rect.bottom))){for(let a=n.length-1;a>=0;a-=1){let l=n[a];l.rect.top>=r.rect.top&&l.rect.left>=r.rect.left&&l.rect.right<=r.rect.right&&l.rect.bottom<=r.rect.bottom&&n.splice(a,1);}n.push({rect:r.rect,borderRadius:r.borderRadius});}return n}function ns(e,t){let n=[];for(let r of e)if(!(t.find(a=>a.tag===r.tag&&a.className===r.className&&Math.abs(a.rect.top-r.rect.top)<20&&Math.abs(a.rect.left-r.rect.left)<20)||n.some(a=>r.rect.top>=a.rect.top&&r.rect.left>=a.rect.left&&r.rect.right<=a.rect.right&&r.rect.bottom<=a.rect.bottom))){for(let a=n.length-1;a>=0;a-=1){let l=n[a];l.rect.top>=r.rect.top&&l.rect.left>=r.rect.left&&l.rect.right<=r.rect.right&&l.rect.bottom<=r.rect.bottom&&n.splice(a,1);}n.push({rect:r.rect,borderRadius:r.borderRadius});}return n}function rs(e,t,n,r,o){let i=Math.max(0,Math.min(o,n/2,r/2));return i===0?`M ${e} ${t} L ${e+n} ${t} L ${e+n} ${t+r} L ${e} ${t+r} Z`:[`M ${e+i} ${t}`,`L ${e+n-i} ${t}`,`A ${i} ${i} 0 0 1 ${e+n} ${t+i}`,`L ${e+n} ${t+r-i}`,`A ${i} ${i} 0 0 1 ${e+n-i} ${t+r}`,`L ${e+i} ${t+r}`,`A ${i} ${i} 0 0 1 ${e} ${t+r-i}`,`L ${e} ${t+i}`,`A ${i} ${i} 0 0 1 ${e+i} ${t}`,"Z"].join(" ")}function Fr(e){let t="http://www.w3.org/2000/svg",n=document.createElement("div");n.setAttribute("data-fork-highlights","true"),n.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;";let r=document.createElementNS(t,"svg");r.setAttribute("width","100%"),r.setAttribute("height","100%"),r.style.cssText="position:absolute;top:0;left:0;overflow:visible;";let o=document.createElementNS(t,"defs");r.appendChild(o);let i=[];for(let A=0;A<e.length;A+=1){let{rect:b,borderRadius:I}=e[A],O=b.left-.5,R=b.top-.5,p=b.width+1,f=b.height+1,T=Math.min(I+.5,p/2,f/2),x=rs(O,R,p,f,T),k=`__fork-glow-${A}`,L=document.createElementNS(t,"filter");L.setAttribute("id",k),L.setAttribute("x","-100%"),L.setAttribute("y","-100%"),L.setAttribute("width","300%"),L.setAttribute("height","300%");let N=document.createElementNS(t,"feGaussianBlur");N.setAttribute("in","SourceGraphic"),N.setAttribute("stdDeviation","8"),L.appendChild(N),o.appendChild(L);let K=`__fork-mask-${A}`,_=document.createElementNS(t,"mask");_.setAttribute("id",K),_.setAttribute("maskUnits","userSpaceOnUse"),_.setAttribute("x",String(O-200)),_.setAttribute("y",String(R-200)),_.setAttribute("width",String(p+400)),_.setAttribute("height",String(f+400));let H=document.createElementNS(t,"rect");H.setAttribute("x",String(O-200)),H.setAttribute("y",String(R-200)),H.setAttribute("width",String(p+400)),H.setAttribute("height",String(f+400)),H.setAttribute("fill","white"),_.appendChild(H);let j=document.createElementNS(t,"path");j.setAttribute("d",x),j.setAttribute("fill","black"),_.appendChild(j),o.appendChild(_);let W=document.createElementNS(t,"g");W.setAttribute("mask",`url(#${K})`),W.setAttribute("opacity","0");let M=document.createElementNS(t,"g");M.setAttribute("filter",`url(#${k})`);let S=document.createElementNS(t,"path");S.setAttribute("d",x),S.setAttribute("fill","none"),S.setAttribute("stroke","rgba(150, 185, 220, 0.6)"),S.setAttribute("stroke-width","6"),S.setAttribute("stroke-linecap","round"),M.appendChild(S),W.appendChild(M),r.appendChild(W);let U=document.createElementNS(t,"path");U.setAttribute("d",x),U.setAttribute("fill","none"),U.setAttribute("stroke","rgba(150, 185, 220, 0.35)"),U.setAttribute("stroke-width","2"),U.setAttribute("stroke-linecap","round"),U.setAttribute("opacity","0"),r.appendChild(U),i.push(S,U),S.__group=W;}n.appendChild(r),document.body.appendChild(n);let a=[];for(let A=0;A<i.length;A+=2){let b=i[A],I=i[A+1],O=b.__group;if(!O)continue;let R=I.getTotalLength(),p=b.getTotalLength();if(R<=0)continue;let f=R*.35;I.setAttribute("stroke-dasharray",`${f} ${R-f}`),I.setAttribute("stroke-dashoffset","0"),a.push(I.animate([{strokeDashoffset:0,opacity:0,offset:0},{strokeDashoffset:-0.2*R,opacity:.92,offset:.06},{strokeDashoffset:-2*R,opacity:.92,offset:.92},{strokeDashoffset:-2.25*R,opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));let T=p*.35;b.setAttribute("stroke-dasharray",`${T} ${p-T}`),b.setAttribute("stroke-dashoffset","0"),a.push(b.animate([{strokeDashoffset:0,offset:0},{strokeDashoffset:-0.2*p,offset:.06},{strokeDashoffset:-2*p,offset:.92},{strokeDashoffset:-2.25*p,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"})),a.push(O.animate([{opacity:0,offset:0},{opacity:.92,offset:.06},{opacity:.92,offset:.92},{opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));}let l=false,u=()=>{if(l)return;l=true,clearTimeout(w);for(let b of a)try{b.cancel();}catch{}let A=n.animate([{opacity:1},{opacity:0}],{duration:400,fill:"forwards"});A.onfinish=()=>n.remove(),window.removeEventListener("click",u);},w=setTimeout(u,14500);return setTimeout(()=>{l||window.addEventListener("click",u);},500),u}function os(e){let t="http://www.w3.org/2000/svg",n=document.createElement("div");n.setAttribute("data-fork-removed","true"),n.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;";let r=document.createElementNS(t,"svg");r.setAttribute("width","100%"),r.setAttribute("height","100%"),r.style.cssText="position:absolute;top:0;left:0;overflow:visible;";let o=document.createElementNS(t,"defs"),i=document.createElementNS(t,"filter");i.setAttribute("id","__fork-removed-shadow"),i.setAttribute("x","-10%"),i.setAttribute("y","-10%"),i.setAttribute("width","120%"),i.setAttribute("height","120%");let a=document.createElementNS(t,"feDropShadow");a.setAttribute("dx","0"),a.setAttribute("dy","1"),a.setAttribute("stdDeviation","2"),a.setAttribute("flood-color","rgba(0,0,0,0.15)"),i.appendChild(a),o.appendChild(i),r.appendChild(o);for(let{rect:l,borderRadius:u}of e){let w=document.createElementNS(t,"path");w.setAttribute("d",rs(l.left,l.top,l.width,l.height,u)),w.setAttribute("fill","none"),w.setAttribute("stroke","rgba(120, 125, 135, 0.6)"),w.setAttribute("stroke-width","1.5"),w.setAttribute("stroke-dasharray","8 4"),w.setAttribute("stroke-linecap","round"),w.setAttribute("filter","url(#__fork-removed-shadow)"),w.setAttribute("opacity","0"),r.appendChild(w),w.animate([{opacity:0,offset:0},{opacity:.6,offset:.08},{opacity:.05,offset:.45},{opacity:.6,offset:.85},{opacity:.05,offset:1}],{duration:5e3,easing:"ease-in-out",fill:"forwards"});}return n.appendChild(r),document.body.appendChild(n),n}function as(e,t){if(Ia(t.selector))return is(e,t);let r=is(e,t);if(r)return r;try{let i=document.querySelector(t.selector);if(i instanceof HTMLElement&&i!==e&&e.contains(i))return i}catch{}if(ss(t.selector))try{let i=e.querySelector(t.selector);if(i instanceof HTMLElement&&i!==e)return i}catch{}if(t.textHint){let i=t.textHint.trim();if(i){let a=Rr(e,A=>A===i);if(a)return a;let l=i.toLowerCase(),u=Rr(e,A=>A.toLowerCase()===l);if(u)return u;let w=Rr(e,A=>A.toLowerCase().includes(l));if(w)return w}}let o=Ea(t.selector);if(o&&o!==t.selector&&ss(o))try{let i=e.querySelector(o);if(i instanceof HTMLElement&&i!==e)return i}catch{}return null}function ss(e){let t=e.split(/\s+|>|~|\+/),n=t[t.length-1]??"";return /[#\[]|:not\(|:nth-/.test(n)}function is(e,t){let n=Array.from(e.querySelectorAll("[data-fork-new]"));if(n.length===0)return null;let r=Ar(t.label),o=Ar(t.textHint);return n.find(a=>{let l=Ar(a.getAttribute("data-fork-new"));return !!l&&(l===r||l===o)})??null}function Ia(e){return e.trim()==="[data-fork-new]"}function Ar(e){return e?.trim().replace(/\s+/g," ").toLowerCase()||null}function Ea(e){return e.replace(/\[class[\*~|^$]?=("[^"]*"|'[^']*'|[^\]]+)\]/g,"").replace(/\.[A-Za-z_][\w-]*/g,"").replace(/\s+/g," ").trim()}function Rr(e,t){let n=null,r=1/0,o=e.querySelectorAll("*");for(let i of o){let a=i.textContent?.trim();if(!a||!t(a))continue;let l=i.getBoundingClientRect();if(l.width<4||l.height<4)continue;let u=l.width*l.height;u<r&&(n=i,r=u);}return n}var Ir=2147483600,Ca=1600,Ta=3e4,$a=300,dt=10;function Ma(e){let n=getComputedStyle(e).borderTopLeftRadius;if(!n)return 4;if(n.endsWith("%")){let a=parseFloat(n);if(!Number.isFinite(a)||a<=0)return 4;let l=e.getBoundingClientRect(),u=Math.min(l.width,l.height);return Math.max(4,a/100*u)}let r=parseFloat(n);if(!Number.isFinite(r)||r<=0)return 4;let o=e.getBoundingClientRect(),i=Math.min(o.width,o.height)/2;return r>=i?i:Math.min(r,16)}function Pa(e,t,n,r){let i=window.innerWidth,a=window.innerHeight,l=e;l==="top"&&t.top<r+dt+8?l="bottom":l==="bottom"&&a-t.bottom<r+dt+8?l="top":l==="left"&&t.left<n+dt+8?l="right":l==="right"&&i-t.right<n+dt+8&&(l="left");let u=0,w=0;return l==="top"?(u=t.top-r-dt,w=t.left+t.width/2-n/2):l==="bottom"?(u=t.bottom+dt,w=t.left+t.width/2-n/2):l==="left"?(u=t.top+t.height/2-r/2,w=t.left-n-dt):(u=t.top+t.height/2-r/2,w=t.right+dt),w=Math.max(8,Math.min(w,i-n-8)),u=Math.max(8,Math.min(u,a-r-8)),{top:u,left:w,placement:l}}function _a(e){let t=document.createElement("div");t.setAttribute("data-fork-highlight-outline","true"),t.style.cssText=["position:fixed","pointer-events:none",`z-index:${Ir}`,"border:1.5px solid rgba(59,130,246,0.85)","box-sizing:border-box","opacity:0","transition:opacity 200ms ease-out"].join(";");let n=document.createElement("div");n.setAttribute("data-fork-highlight-glow","true"),n.style.cssText=["position:fixed","pointer-events:none",`z-index:${Ir-1}`,"box-sizing:border-box","border:1px solid rgba(59,130,246,0.36)","box-shadow:0 0 0 4px rgba(59,130,246,0.16), 0 0 18px 2px rgba(59,130,246,0.31)","opacity:0","transition:opacity 200ms ease-out"].join(";");let r=document.createElement("div");return r.setAttribute("data-fork-highlight-tooltip","true"),r.style.cssText=["position:fixed","pointer-events:none",`z-index:${Ir+1}`,"padding:6px 10px","font:500 12px/1.2 -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif","color:#ffffff","background:linear-gradient(135deg,#64748b,#475569)","border-radius:999px","box-shadow:0 4px 14px rgba(71,85,105,0.31),0 1px 2px rgba(0,0,0,0.1)","white-space:nowrap","opacity:0","transform:translateY(-2px)","transition:opacity 200ms ease-out, transform 200ms ease-out"].join(";"),r.textContent=`New: ${e}`,{outline:t,glow:n,tooltip:r}}function La(){if(document.getElementById("__fork-highlight-keyframes"))return;let e=document.createElement("style");e.id="__fork-highlight-keyframes",e.textContent=`
64
64
  @keyframes __fork-highlight-pulse {
65
65
  0%, 100% { box-shadow: 0 0 0 3px rgba(59,130,246,0.11), 0 0 12px 1px rgba(59,130,246,0.22); }
66
66
  50% { box-shadow: 0 0 0 6px rgba(59,130,246,0.25), 0 0 22px 4px rgba(59,130,246,0.49); }
67
67
  }
68
- `,document.head.appendChild(e);}function is(e,t,n="top"){Pa();let{outline:r,glow:o,tooltip:i}=Ma(t),a=Ta(e);r.style.borderRadius=`${a}px`,o.style.borderRadius=`${a+1}px`,o.style.animation=`__fork-highlight-pulse ${Ea}ms ease-in-out infinite`,document.body.append(o,r,i);let l=()=>{let p=e.getBoundingClientRect();if(p.width===0&&p.height===0)return;r.style.top=`${p.top}px`,r.style.left=`${p.left}px`,r.style.width=`${p.width}px`,r.style.height=`${p.height}px`,o.style.top=`${p.top-1}px`,o.style.left=`${p.left-1}px`,o.style.width=`${p.width+2}px`,o.style.height=`${p.height+2}px`;let u=i.getBoundingClientRect(),$=u.width||i.offsetWidth||80,F=u.height||i.offsetHeight||26,m=$a(n,p,$,F);i.style.top=`${m.top}px`,i.style.left=`${m.left}px`;};l(),requestAnimationFrame(()=>{r.style.opacity="1",o.style.opacity="1",i.style.opacity="1",i.style.transform="translateY(0)",requestAnimationFrame(l);});let d=false,S=new ResizeObserver(l);S.observe(e);let A=()=>l(),h=()=>l();window.addEventListener("scroll",A,true),window.addEventListener("resize",h);let C=()=>{d||(d=true,clearTimeout(R),S.disconnect(),window.removeEventListener("scroll",A,true),window.removeEventListener("resize",h),window.removeEventListener("click",N,true),r.style.opacity="0",o.style.opacity="0",i.style.opacity="0",i.style.transform="translateY(-2px)",setTimeout(()=>{r.remove(),o.remove(),i.remove();},Ca));},N=()=>C();setTimeout(()=>{d||window.addEventListener("click",N,{once:true,capture:true});},250);let R=setTimeout(C,Ia);return C}var _a="fork:highlight:v1:seen";function as(e){return `${_a}:${e}`}function ls(e){if(typeof window>"u")return new Set;try{let t=window.localStorage.getItem(e);if(!t)return new Set;let n=JSON.parse(t);return Array.isArray(n)?new Set(n.filter(r=>typeof r=="string")):new Set}catch{return new Set}}function La(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(e,JSON.stringify([...t].slice(-200)));}catch{}}var cs=new Set;function ds(e,t,n){return `${n}::${e}:${t}`}function Rr(e,t,n){let r=ds(e,t,n);return cs.has(r)?true:ls(as(n)).has(`${e}:${t}`)}function us(e,t,n){let r=ds(e,t,n);cs.add(r);let o=as(n),i=`${e}:${t}`,a=ls(o);a.has(i)||(a.add(i),La(o,a));}var ln=new Map,cn=new Map,Er=new Map;function Oa(e){for(let t of e)cn.set(t,(cn.get(t)??0)+1);}function Na(e){if(!(typeof document>"u"))for(let t of e){let n=(cn.get(t)??0)-1;if(n>0){cn.set(t,n);continue}cn.delete(t),ln.delete(t);let r=document.querySelector(`link[data-fork-override-href="${CSS.escape(t)}"]`);r&&r.remove();}}function Ua(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown module override error")}function ps(e){let t=e.getBoundingClientRect();if(t.width<=0||t.height<=0)return false;let n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight;return t.bottom>0&&t.right>0&&t.top<r&&t.left<n}function gs(e,t){let n=(t?e[t]:void 0)??e.default;if(typeof n!="function"){let r=t||"default";throw new Error(`Fork boundary module is missing a React component export: ${r}`)}return n}function Ba(e){if(!e||typeof document>"u")return Promise.resolve();let t=ln.get(e);if(t)return t;let n=document.querySelector(`link[data-fork-override-href="${e}"]`);if(n instanceof HTMLLinkElement){let o=n.sheet?Promise.resolve():new Promise((i,a)=>{let l=()=>{n.removeEventListener("load",l),n.removeEventListener("error",d),i();},d=()=>{n.removeEventListener("load",l),n.removeEventListener("error",d),a(new Error(`Failed to load boundary stylesheet: ${e}`));};n.addEventListener("load",l,{once:true}),n.addEventListener("error",d,{once:true});});return ln.set(e,o),o}let r=new Promise((o,i)=>{let a=document.createElement("link");a.rel="stylesheet",a.href=e,a.setAttribute("data-fork-override-href",e),a.onload=()=>o(),a.onerror=()=>{a.remove(),i(new Error(`Failed to load boundary stylesheet: ${e}`));},document.head.appendChild(a);}).catch(o=>{throw ln.delete(e),o});return ln.set(e,r),r}var an=null;function Da(){if(an)return an;try{an=new Function("u","return import(/*webpackIgnore:true*//*@vite-ignore*/u)");}catch{an=e=>import(/*webpackIgnore:true*//*@vite-ignore*/e);}return an}function ja(e){let t=Er.get(e);if(t)return t;let n=Da()(e).catch(r=>{throw Er.delete(e),r});return Er.set(e,n),n}async function za(e,t,n){if(e)try{await Promise.all(e.cssUrls.map(i=>Ba(i)));let o=await ja(e.moduleUrl);return gs(o,n)}catch(o){console.error(`[Fork] Failed to load override for boundary "${e.boundaryId}", falling back to original module.`,o);}let r=await t();return gs(r,n)}function Ka(e){function t(n){let{appId:r,moduleOverridesEnabled:o,moduleManifestReady:i,moduleManifestVersion:a,registerBoundary:l,getBoundaryOverride:d,consumeBoundaryAnimation:S,highlightScope:A}=Ce(),[h,C]=useState(null),[N,R]=useState(null),p=useRef(null),u=useRef(null),$=useRef(null),F=useRef(false),m=useRef(null),L=useRef(null),U=useRef(null),D=useRef(false),P=useRef(false),H=d(e.id),B=H?`override:${H.id}`:"original",z=e.editorMetadata?JSON.stringify(e.editorMetadata):void 0;if(useEffect(()=>()=>{L.current&&(clearTimeout(L.current),L.current=null),m.current&&(m.current.remove(),m.current=null),U.current&&(U.current(),U.current=null);},[]),useEffect(()=>{l({id:e.id,exportName:e.exportName,editorMetadata:e.editorMetadata});},[r,l,e.id,e.exportName,z]),useEffect(()=>{let _=H?.cssUrls??[];if(_.length!==0)return Oa(_),()=>Na(_)},[H?.cssUrls.join("|")]),useEffect(()=>{if(o&&!i&&!h||u.current===B&&h)return;let _=false;return R(null),za(H,e.original,e.exportName).then(x=>{if(_)return;let O=H?.id?S(e.id,H.id):false;if(D.current=O,O&&p.current){let V=vr(p.current);if(V){let X=wr(V);X.length>0&&($.current=X,F.current=true,L.current&&(clearTimeout(L.current),L.current=null),m.current&&m.current.remove(),m.current=Zo(V));}}u.current=B,startTransition(()=>{C(()=>x);});}).catch(x=>{_||R(Ua(x));}),()=>{_=true;}},[S,B,o,i,a,H?.id,H?.moduleUrl,H?.integrity,H?.cssUrls.join("|"),e.exportName,e.original,h]),useEffect(()=>{if(!h||!p.current)return;let _=false,x=null,O=()=>{if(_||!p.current)return false;let V=H?.highlightHint,X=H?.id,Y=H?.createdAt?String(H.createdAt):"";if(!V||!X||Rr(X,Y,A))return false;let G=Array.from(p.current.querySelectorAll("[data-fork-new]"));G.length,G.map(re=>re.getAttribute("data-fork-new")),V.label,V.textHint,V.selector;let Z=ss(p.current,V);return Z?.tagName,Z?.getAttribute("data-fork-new"),Z?.getAttribute("aria-label"),Z?.textContent?.trim().slice(0,60),!Z||!ps(Z)?(Z&&ps(Z),Z?.getBoundingClientRect(),false):(us(X,Y,A),m.current&&(m.current.remove(),m.current=null),U.current&&U.current(),U.current=is(Z,V.label,V.position??"top"),true)};return requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(_||!p.current)return;let V=D.current,X=!P.current;P.current=true;let Y=V||X,G=Y?O():false;if(Y&&!G&&H?.highlightHint&&H?.id&&!Rr(H.id,String(H.createdAt??""),A)){let E=[150,400,800],c=0,y=()=>{if(_||c>=E.length)return;let I=E[c];c+=1,x=setTimeout(()=>{if(O()){G=true;return}y();},I);};y();}let Z=F.current,re=!!H?.highlightHint,pe=$.current;if($.current=null,F.current=false,G||re||!Z){m.current&&(m.current.remove(),m.current=null);return}let oe=vr(p.current);if(!pe||!oe){m.current&&(m.current.remove(),m.current=null);return}let ye=wr(oe),te=Qo(pe,ye),f=es(pe,ye),b=m.current;if(f.length>0&&b){let E=ns(f);L.current=setTimeout(()=>{L.current=null;let c=400;b.animate([{opacity:1},{opacity:0}],{duration:c,fill:"forwards"}),E.animate([{opacity:1},{opacity:0}],{duration:c,fill:"forwards"}),setTimeout(()=>{b.remove(),E.remove(),m.current===b&&(m.current=null),te.length>0&&Sr(te);},c);},3500);}else b&&(b.remove(),m.current===b&&(m.current=null)),te.length>0&&Sr(te);});}),()=>{_=true,x!==null&&(clearTimeout(x),x=null);}},[h,H?.id,H?.createdAt,H?.highlightHint,A]),N)throw N;return h?jsx("div",{ref:p,"data-fork-boundary":e.id,style:{display:"contents"},children:jsx(h,{...n})}):jsx(Fragment,{children:e.loading??null})}return t.displayName=`ForkBoundary(${e.id})`,t}function Ja({slotId:e,title:t,slotLabel:n}){return jsx(on,{slotId:e,title:t,slotLabel:n})}function qa(e){return e.replace(/\/+$/,"")}function Ga(e){return {namespace:e.namespace||"default",type:e.type,id:e.id}}function dn(e,t="value"){let n=Ga(e);return `${n.namespace}:${n.type}:${n.id}:${t}`}function Cr(e){if(Array.isArray(e))return e.map(Cr);if(!e||typeof e!="object")return e;let t=e,n={};for(let r of Object.keys(t).sort())n[r]=Cr(t[r]);return n}function ks(e){return JSON.stringify(Cr(e))}function ms(e){let t={Authorization:`Bearer ${e.apiKey}`,"Content-Type":"application/json","X-Fork-App-Id":e.appId,...e.extraHeaders??{}};return e.userId&&(t["X-Fork-User-Id"]=e.userId),e.userHash&&(t["X-Fork-User-Hash"]=e.userHash),t}async function hs(e){let t=await e.json().catch(()=>({}));if(!e.ok){let n=typeof t.error=="string"?t.error:`Fork data API ${e.status}`;throw new Error(n)}return t}function bs(e){let t=qa(e.baseUrl),n={appId:e.appId,containerId:e.containerId},r=async(i,a)=>{let l=a&&typeof a=="object"&&!Array.isArray(a)?a:{},d=await fetch(`${t}/api/v1/data${i}`,{method:"POST",headers:ms(e),body:JSON.stringify({...n,...l})});return hs(d)},o=async(i,a)=>{let l=new URLSearchParams({appId:e.appId,containerId:e.containerId});for(let[S,A]of Object.entries(a))A&&l.set(S,A);let d=await fetch(`${t}/api/v1/data${i}?${l.toString()}`,{headers:ms(e)});return hs(d)};return {listFeatures(){return o("/features",{})},ensureFeature(i){return r("/features",i)},queryValues(i){return r("/values/query",i)},setValues(i){return r("/values",i)},listOptions(i){return o("/options",{featureId:i.featureId,featureKey:i.featureKey,includeArchived:i.includeArchived?"true":void 0})},setOptions(i){return r("/options",i)},ensureLlmJobs(i){return r("/llm/ensure",i)},queryLlmJobs(i){return r("/llm/jobs/query",i)}}}function jn(e){let{apiKey:t,appId:n,baseUrl:r,currentContainerId:o,userHash:i,userId:a}=Ce(),l=e||o;return useMemo(()=>{if(!n||!l)return null;let d=fe();return bs({apiKey:t,appId:n,baseUrl:r,containerId:l,userId:a,userHash:i,extraHeaders:d})},[t,n,r,l,i,a])}function Ya(e){let t=jn(e.containerId),[n,r]=useState(null),[o,i]=useState([]),[a,l]=useState(false),[d,S]=useState(null),A=ks({featureId:e.featureId,featureKey:e.featureKey,entities:e.entities,valueKeys:e.valueKeys,enabled:e.enabled!==false}),h=useCallback(async()=>{if(!(!t||e.enabled===false)&&!(!e.featureId&&!e.featureKey)){l(true);try{let R=await t.queryValues({featureId:e.featureId,featureKey:e.featureKey,entities:e.entities,valueKeys:e.valueKeys});r(R.feature),i(R.values),S(null);}catch(R){S(R instanceof Error?R:new Error(String(R)));}finally{l(false);}}},[t,A]);useEffect(()=>{h();},[h]),useEffect(()=>{if(!e.pollMs||e.pollMs<=0)return;let R=setInterval(()=>{h();},e.pollMs);return ()=>clearInterval(R)},[e.pollMs,h]);let C=useMemo(()=>new Map(o.map(R=>[dn(R.entity,R.valueKey),R])),[o]),N=useCallback((R,p="value")=>C.get(dn(R,p))??null,[C]);return {feature:n,values:o,byKey:C,getValue:N,loading:a,error:d,refresh:h}}function Za(e){let t=jn(e),n=useCallback(async i=>{if(!t)throw new Error("Fork data is unavailable until appId and containerId are resolved");return t.ensureFeature(i)},[t]),r=useCallback(async i=>{if(!t)throw new Error("Fork data is unavailable until appId and containerId are resolved");return t.setValues(i)},[t]),o=useCallback(async i=>{if(!t)throw new Error("Fork data is unavailable until appId and containerId are resolved");return t.setOptions(i)},[t]);return {client:t,ensureFeature:n,setValues:r,setOptions:o}}function ys(e){return e.some(t=>t.status==="queued"||t.status==="running")}function Qa(e){let t=jn(e.containerId),[n,r]=useState(null),[o,i]=useState([]),[a,l]=useState([]),[d,S]=useState(false),[A,h]=useState(null),C=useRef(""),N=ks({featureId:e.featureId,featureKey:e.featureKey,kind:e.kind,config:e.config,forkId:e.forkId,targetKind:e.targetKind,targetId:e.targetId,operation:e.operation,model:e.model,prompt:e.prompt,system:e.system,promptHash:e.promptHash,outputFormat:e.outputFormat,maxTokens:e.maxTokens,temperature:e.temperature,force:e.force,jobs:e.jobs,enabled:e.enabled!==false}),R=useCallback(async()=>{if(!(!t||e.enabled===false)&&!(!e.featureId&&!e.featureKey)&&!(!e.jobs||e.jobs.length===0)){S(true);try{let F=await t.ensureLlmJobs(e);C.current=N,r(F.feature),i(F.jobs),l(F.values),h(null);}catch(F){h(F instanceof Error?F:new Error(String(F)));}finally{S(false);}}},[t,N]),p=useCallback(async()=>{if(!t)return;let F=o.map(m=>m.id);try{if(F.length>0){let m=await t.queryLlmJobs({jobIds:F});i(m.jobs);}if(e.featureId||e.featureKey){let m=await t.queryValues({featureId:e.featureId,featureKey:e.featureKey,entities:e.jobs.map(L=>L.entity),valueKeys:Array.from(new Set(e.jobs.map(L=>L.valueKey||"value")))});r(m.feature),l(m.values);}h(null);}catch(m){h(m instanceof Error?m:new Error(String(m)));}},[t,o,N]);useEffect(()=>{C.current!==N&&R();},[R,N]),useEffect(()=>{let F=e.pollMs??3e3;if(F<=0||!ys(o))return;let m=setInterval(()=>{p();},F);return ()=>clearInterval(m)},[e.pollMs,o,p]);let u=useMemo(()=>new Map(a.map(F=>[dn(F.entity,F.valueKey),F])),[a]),$=useCallback((F,m="value")=>u.get(dn(F,m))??null,[u]);return {feature:n,jobs:o,values:a,byKey:u,getValue:$,loading:d,error:A,ensure:R,refresh:p,running:ys(o)}}export{xa as ForkBoundaryUI,dr as ForkButton,on as ForkChatInterface,Nn as ForkPanel,fi as ForkProvider,Ai as ForkSlot,Ja as ForkUI,Ys as clearCachedManifest,bs as createForkDataClient,dn as forkEntityValueKey,Ka as forkable,er as loadManifest,Zs as manifestDiffers,qs as readCachedManifest,Yn as registerForkShared,hr as useBoundaryFork,yr as useFork,kr as useForkChatPanel,jn as useForkDataClient,Za as useForkDataMutation,Ya as useForkFeatureValues,Qa as useForkLlmJobs,Gs as writeCachedManifest};
68
+ `,document.head.appendChild(e);}function ls(e,t,n="top"){La();let{outline:r,glow:o,tooltip:i}=_a(t),a=Ma(e);r.style.borderRadius=`${a}px`,o.style.borderRadius=`${a+1}px`,o.style.animation=`__fork-highlight-pulse ${Ca}ms ease-in-out infinite`,document.body.append(o,r,i);let l=()=>{let p=e.getBoundingClientRect();if(p.width===0&&p.height===0)return;r.style.top=`${p.top}px`,r.style.left=`${p.left}px`,r.style.width=`${p.width}px`,r.style.height=`${p.height}px`,o.style.top=`${p.top-1}px`,o.style.left=`${p.left-1}px`,o.style.width=`${p.width+2}px`,o.style.height=`${p.height+2}px`;let f=i.getBoundingClientRect(),T=f.width||i.offsetWidth||80,x=f.height||i.offsetHeight||26,k=Pa(n,p,T,x);i.style.top=`${k.top}px`,i.style.left=`${k.left}px`;};l(),requestAnimationFrame(()=>{r.style.opacity="1",o.style.opacity="1",i.style.opacity="1",i.style.transform="translateY(0)",requestAnimationFrame(l);});let u=false,w=new ResizeObserver(l);w.observe(e);let A=()=>l(),b=()=>l();window.addEventListener("scroll",A,true),window.addEventListener("resize",b);let I=()=>{u||(u=true,clearTimeout(R),w.disconnect(),window.removeEventListener("scroll",A,true),window.removeEventListener("resize",b),window.removeEventListener("click",O,true),r.style.opacity="0",o.style.opacity="0",i.style.opacity="0",i.style.transform="translateY(-2px)",setTimeout(()=>{r.remove(),o.remove(),i.remove();},$a));},O=()=>I();setTimeout(()=>{u||window.addEventListener("click",O,{once:true,capture:true});},250);let R=setTimeout(I,Ta);return I}var Ha="fork:highlight:v1:seen";function cs(e){return `${Ha}:${e}`}function ds(e){if(typeof window>"u")return new Set;try{let t=window.localStorage.getItem(e);if(!t)return new Set;let n=JSON.parse(t);return Array.isArray(n)?new Set(n.filter(r=>typeof r=="string")):new Set}catch{return new Set}}function Oa(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(e,JSON.stringify([...t].slice(-200)));}catch{}}var us=new Set;function fs(e,t,n){return `${n}::${e}:${t}`}function Er(e,t,n){let r=fs(e,t,n);return us.has(r)?true:ds(cs(n)).has(`${e}:${t}`)}function ps(e,t,n){let r=fs(e,t,n);us.add(r);let o=cs(n),i=`${e}:${t}`,a=ds(o);a.has(i)||(a.add(i),Oa(o,a));}var un=new Map,fn=new Map,Cr=new Map;function Na(e){for(let t of e)fn.set(t,(fn.get(t)??0)+1);}function Ba(e){if(!(typeof document>"u"))for(let t of e){let n=(fn.get(t)??0)-1;if(n>0){fn.set(t,n);continue}fn.delete(t),un.delete(t);let r=document.querySelector(`link[data-fork-override-href="${CSS.escape(t)}"]`);r&&r.remove();}}function Da(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown module override error")}function ms(e){let t=e.getBoundingClientRect();if(t.width<=0||t.height<=0)return false;let n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight;return t.bottom>0&&t.right>0&&t.top<r&&t.left<n}function hs(e,t){let n=(t?e[t]:void 0)??e.default;if(typeof n!="function"){let r=t||"default";throw new Error(`Fork boundary module is missing a React component export: ${r}`)}return n}function ja(e){if(!e||typeof document>"u")return Promise.resolve();let t=un.get(e);if(t)return t;let n=document.querySelector(`link[data-fork-override-href="${e}"]`);if(n instanceof HTMLLinkElement){let o=n.sheet?Promise.resolve():new Promise((i,a)=>{let l=()=>{n.removeEventListener("load",l),n.removeEventListener("error",u),i();},u=()=>{n.removeEventListener("load",l),n.removeEventListener("error",u),a(new Error(`Failed to load boundary stylesheet: ${e}`));};n.addEventListener("load",l,{once:true}),n.addEventListener("error",u,{once:true});});return un.set(e,o),o}let r=new Promise((o,i)=>{let a=document.createElement("link");a.rel="stylesheet",a.href=e,a.setAttribute("data-fork-override-href",e),a.onload=()=>o(),a.onerror=()=>{a.remove(),i(new Error(`Failed to load boundary stylesheet: ${e}`));},document.head.appendChild(a);}).catch(o=>{throw un.delete(e),o});return un.set(e,r),r}var dn=null;function za(){if(dn)return dn;try{dn=new Function("u","return import(/*webpackIgnore:true*//*@vite-ignore*/u)");}catch{dn=e=>import(/*webpackIgnore:true*//*@vite-ignore*/e);}return dn}function Ka(e){let t=Cr.get(e);if(t)return t;let n=za()(e).catch(r=>{throw Cr.delete(e),r});return Cr.set(e,n),n}async function Wa(e,t,n){if(e)try{await Promise.all(e.cssUrls.map(i=>ja(i)));let o=await Ka(e.moduleUrl);return hs(o,n)}catch(o){console.error(`[Fork] Failed to load override for boundary "${e.boundaryId}", falling back to original module.`,o);}let r=await t();return hs(r,n)}function Ja(e){function t(n){let{appId:r,moduleOverridesEnabled:o,moduleManifestReady:i,moduleManifestVersion:a,registerBoundary:l,getBoundaryOverride:u,consumeBoundaryAnimation:w,highlightScope:A}=Ee(),[b,I]=useState(null),[O,R]=useState(null),p=useRef(null),f=useRef(null),T=useRef(null),x=useRef(false),k=useRef(null),L=useRef(null),N=useRef(null),K=useRef(false),_=useRef(false),H=u(e.id),j=H?`override:${H.id}`:"original",W=e.editorMetadata?JSON.stringify(e.editorMetadata):void 0;if(useEffect(()=>()=>{L.current&&(clearTimeout(L.current),L.current=null),k.current&&(k.current.remove(),k.current=null),N.current&&(N.current(),N.current=null);},[]),useEffect(()=>{l({id:e.id,exportName:e.exportName,editorMetadata:e.editorMetadata});},[r,l,e.id,e.exportName,W]),useEffect(()=>{let M=H?.cssUrls??[];if(M.length!==0)return Na(M),()=>Ba(M)},[H?.cssUrls.join("|")]),useEffect(()=>{if(o&&!i&&!b||f.current===j&&b)return;let M=false;return R(null),Wa(H,e.original,e.exportName).then(S=>{if(M)return;let U=H?.id?w(e.id,H.id):false;if(K.current=U,U&&p.current){let X=Sr(p.current);if(X){let V=xr(X);V.length>0&&(T.current=V,x.current=true,L.current&&(clearTimeout(L.current),L.current=null),k.current&&k.current.remove(),k.current=es(X));}}f.current=j,startTransition(()=>{I(()=>S);});}).catch(S=>{M||R(Da(S));}),()=>{M=true;}},[w,j,o,i,a,H?.id,H?.moduleUrl,H?.integrity,H?.cssUrls.join("|"),e.exportName,e.original,b]),useEffect(()=>{if(!b||!p.current)return;let M=false,S=null,U=()=>{if(M||!p.current)return false;let X=H?.highlightHint,V=H?.id,Q=H?.createdAt?String(H.createdAt):"";if(!X||!V||Er(V,Q,A))return false;let Z=Array.from(p.current.querySelectorAll("[data-fork-new]"));Z.length,Z.map(fe=>fe.getAttribute("data-fork-new")),X.label,X.textHint,X.selector;let ee=as(p.current,X);return ee?.tagName,ee?.getAttribute("data-fork-new"),ee?.getAttribute("aria-label"),ee?.textContent?.trim().slice(0,60),!ee||!ms(ee)?(ee&&ms(ee),ee?.getBoundingClientRect(),false):(ps(V,Q,A),k.current&&(k.current.remove(),k.current=null),N.current&&N.current(),N.current=ls(ee,X.label,X.position??"top"),true)};return requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(M||!p.current)return;let X=K.current,V=!_.current;_.current=true;let Q=X||V,Z=Q?U():false;if(Q&&!Z&&H?.highlightHint&&H?.id&&!Er(H.id,String(H.createdAt??""),A)){let E=[150,400,800],h=0,c=()=>{if(M||h>=E.length)return;let g=E[h];h+=1,S=setTimeout(()=>{if(U()){Z=true;return}c();},g);};c();}let ee=x.current,fe=!!H?.highlightHint,de=T.current;if(T.current=null,x.current=false,Z||fe||!ee){k.current&&(k.current.remove(),k.current=null);return}let oe=Sr(p.current);if(!de||!oe){k.current&&(k.current.remove(),k.current=null);return}let me=xr(oe),te=ts(de,me),pe=ns(de,me),d=k.current;if(pe.length>0&&d){let E=os(pe);L.current=setTimeout(()=>{L.current=null;let h=400;d.animate([{opacity:1},{opacity:0}],{duration:h,fill:"forwards"}),E.animate([{opacity:1},{opacity:0}],{duration:h,fill:"forwards"}),setTimeout(()=>{d.remove(),E.remove(),k.current===d&&(k.current=null),te.length>0&&Fr(te);},h);},3500);}else d&&(d.remove(),k.current===d&&(k.current=null)),te.length>0&&Fr(te);});}),()=>{M=true,S!==null&&(clearTimeout(S),S=null);}},[b,H?.id,H?.createdAt,H?.highlightHint,A]),O)throw O;return b?jsx("div",{ref:p,"data-fork-boundary":e.id,style:{display:"contents"},children:jsx(b,{...n})}):jsx(Fragment,{children:e.loading??null})}return t.displayName=`ForkBoundary(${e.id})`,t}function Xa({slotId:e,title:t,slotLabel:n}){return jsx(ln,{slotId:e,title:t,slotLabel:n})}function Ya(e){return e.replace(/\/+$/,"")}function Za(e){return {namespace:e.namespace||"default",type:e.type,id:e.id}}function pn(e,t="value"){let n=Za(e);return `${n.namespace}:${n.type}:${n.id}:${t}`}function $r(e){if(Array.isArray(e))return e.map($r);if(!e||typeof e!="object")return e;let t=e,n={};for(let r of Object.keys(t).sort())n[r]=$r(t[r]);return n}function vs(e){return JSON.stringify($r(e))}function ys(e){let t={Authorization:`Bearer ${e.apiKey}`,"Content-Type":"application/json","X-Fork-App-Id":e.appId,...e.extraHeaders??{}};return e.userId&&(t["X-Fork-User-Id"]=e.userId),e.userHash&&(t["X-Fork-User-Hash"]=e.userHash),t}async function ks(e){let t=await e.json().catch(()=>({}));if(!e.ok){let n=typeof t.error=="string"?t.error:`Fork data API ${e.status}`;throw new Error(n)}return t}function ws(e){let t=Ya(e.baseUrl),n={appId:e.appId,containerId:e.containerId},r=async(i,a)=>{let l=a&&typeof a=="object"&&!Array.isArray(a)?a:{},u=await fetch(`${t}/api/v1/data${i}`,{method:"POST",headers:ys(e),body:JSON.stringify({...n,...l})});return ks(u)},o=async(i,a)=>{let l=new URLSearchParams({appId:e.appId,containerId:e.containerId});for(let[w,A]of Object.entries(a))A&&l.set(w,A);let u=await fetch(`${t}/api/v1/data${i}?${l.toString()}`,{headers:ys(e)});return ks(u)};return {listFeatures(){return o("/features",{})},ensureFeature(i){return r("/features",i)},queryValues(i){return r("/values/query",i)},setValues(i){return r("/values",i)},listOptions(i){return o("/options",{featureId:i.featureId,featureKey:i.featureKey,includeArchived:i.includeArchived?"true":void 0})},setOptions(i){return r("/options",i)},ensureLlmJobs(i){return r("/llm/ensure",i)},queryLlmJobs(i){return r("/llm/jobs/query",i)}}}function jn(e){let{apiKey:t,appId:n,baseUrl:r,currentContainerId:o,userHash:i,userId:a}=Ee(),l=e||o;return useMemo(()=>{if(!n||!l)return null;let u=ue();return ws({apiKey:t,appId:n,baseUrl:r,containerId:l,userId:a,userHash:i,extraHeaders:u})},[t,n,r,l,i,a])}function Qa(e){let t=jn(e.containerId),[n,r]=useState(null),[o,i]=useState([]),[a,l]=useState(false),[u,w]=useState(null),A=vs({featureId:e.featureId,featureKey:e.featureKey,entities:e.entities,valueKeys:e.valueKeys,enabled:e.enabled!==false}),b=useCallback(async()=>{if(!(!t||e.enabled===false)&&!(!e.featureId&&!e.featureKey)){l(true);try{let R=await t.queryValues({featureId:e.featureId,featureKey:e.featureKey,entities:e.entities,valueKeys:e.valueKeys});r(R.feature),i(R.values),w(null);}catch(R){w(R instanceof Error?R:new Error(String(R)));}finally{l(false);}}},[t,A]);useEffect(()=>{b();},[b]),useEffect(()=>{if(!e.pollMs||e.pollMs<=0)return;let R=setInterval(()=>{b();},e.pollMs);return ()=>clearInterval(R)},[e.pollMs,b]);let I=useMemo(()=>new Map(o.map(R=>[pn(R.entity,R.valueKey),R])),[o]),O=useCallback((R,p="value")=>I.get(pn(R,p))??null,[I]);return {feature:n,values:o,byKey:I,getValue:O,loading:a,error:u,refresh:b}}function el(e){let t=jn(e),n=useCallback(async i=>{if(!t)throw new Error("Fork data is unavailable until appId and containerId are resolved");return t.ensureFeature(i)},[t]),r=useCallback(async i=>{if(!t)throw new Error("Fork data is unavailable until appId and containerId are resolved");return t.setValues(i)},[t]),o=useCallback(async i=>{if(!t)throw new Error("Fork data is unavailable until appId and containerId are resolved");return t.setOptions(i)},[t]);return {client:t,ensureFeature:n,setValues:r,setOptions:o}}function bs(e){return e.some(t=>t.status==="queued"||t.status==="running")}function tl(e){let t=jn(e.containerId),[n,r]=useState(null),[o,i]=useState([]),[a,l]=useState([]),[u,w]=useState(false),[A,b]=useState(null),I=useRef(""),O=vs({featureId:e.featureId,featureKey:e.featureKey,kind:e.kind,config:e.config,forkId:e.forkId,targetKind:e.targetKind,targetId:e.targetId,operation:e.operation,model:e.model,prompt:e.prompt,system:e.system,promptHash:e.promptHash,outputFormat:e.outputFormat,maxTokens:e.maxTokens,temperature:e.temperature,force:e.force,jobs:e.jobs,enabled:e.enabled!==false}),R=useCallback(async()=>{if(!(!t||e.enabled===false)&&!(!e.featureId&&!e.featureKey)&&!(!e.jobs||e.jobs.length===0)){w(true);try{let x=await t.ensureLlmJobs(e);I.current=O,r(x.feature),i(x.jobs),l(x.values),b(null);}catch(x){b(x instanceof Error?x:new Error(String(x)));}finally{w(false);}}},[t,O]),p=useCallback(async()=>{if(!t)return;let x=o.map(k=>k.id);try{if(x.length>0){let k=await t.queryLlmJobs({jobIds:x});i(k.jobs);}if(e.featureId||e.featureKey){let k=await t.queryValues({featureId:e.featureId,featureKey:e.featureKey,entities:e.jobs.map(L=>L.entity),valueKeys:Array.from(new Set(e.jobs.map(L=>L.valueKey||"value")))});r(k.feature),l(k.values);}b(null);}catch(k){b(k instanceof Error?k:new Error(String(k)));}},[t,o,O]);useEffect(()=>{I.current!==O&&R();},[R,O]),useEffect(()=>{let x=e.pollMs??3e3;if(x<=0||!bs(o))return;let k=setInterval(()=>{p();},x);return ()=>clearInterval(k)},[e.pollMs,o,p]);let f=useMemo(()=>new Map(a.map(x=>[pn(x.entity,x.valueKey),x])),[a]),T=useCallback((x,k="value")=>f.get(pn(x,k))??null,[f]);return {feature:n,jobs:o,values:a,byKey:f,getValue:T,loading:u,error:A,ensure:R,refresh:p,running:bs(o)}}export{Aa as ForkBoundaryUI,fr as ForkButton,ln as ForkChatInterface,Un as ForkPanel,gi as ForkProvider,Ii as ForkSlot,Xa as ForkUI,Qs as clearCachedManifest,ws as createForkDataClient,pn as forkEntityValueKey,Ja as forkable,nr as loadManifest,ei as manifestDiffers,Ys as readCachedManifest,Qn as registerForkShared,kr as useBoundaryFork,br as useFork,vr as useForkChatPanel,jn as useForkDataClient,el as useForkDataMutation,Qa as useForkFeatureValues,tl as useForkLlmJobs,Zs as writeCachedManifest};