@fork-api/chat-sdk 0.1.182 → 0.1.184

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.cjs CHANGED
@@ -1,6 +1,6 @@
1
- 'use strict';var Pn=require('react'),as=require('react-dom'),ls=require('react/jsx-runtime'),cs=require('react/jsx-dev-runtime'),lucideReact=require('lucide-react');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var Pn__namespace=/*#__PURE__*/_interopNamespace(Pn);var as__namespace=/*#__PURE__*/_interopNamespace(as);var ls__namespace=/*#__PURE__*/_interopNamespace(ls);var cs__namespace=/*#__PURE__*/_interopNamespace(cs);var rt="__FORK_SHARED__";function xn(){var t,n,r,o;let e=globalThis;return e[rt]||(e[rt]={}),(t=e[rt]).react||(t.react=Pn__namespace),(n=e[rt])["react-dom"]||(n["react-dom"]=as__namespace),(r=e[rt])["react/jsx-runtime"]||(r["react/jsx-runtime"]=ls__namespace),(o=e[rt])["react/jsx-dev-runtime"]||(o["react/jsx-dev-runtime"]=cs__namespace),e[rt]}function An(e){return Object.assign(xn(),e)}var Tr=false,En=null,Rn=null;function $r(e,t,n){Tr=e,En=t,Rn=n;}function pe(){if(!Tr)return {};let e={};return En&&(e["X-Fork-App-Id"]=En),Rn&&(e["X-Fork-Container-Id"]=Rn),e}async function In(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 s=await o.json(),i={};for(let[l,u]of Object.entries(s.modules)){let h=u.moduleUrl??u.bundleUrl??null,b=u.legacyModuleUrl??u.legacyBundleUrl??null;i[l]={forkId:u.forkId,moduleUrl:h,legacyModuleUrl:b,bundleUrl:u.bundleUrl??h,legacyBundleUrl:u.legacyBundleUrl??b,cssUrls:u.cssUrls??[],integrity:u.integrity,metadata:u.metadata,highlightHint:u.highlightHint,buildId:u.buildId,updatedAt:u.updatedAt};}return {containerId:s.containerId,forksPaused:!!s.forksPaused,slots:s.slots,modules:i,generatedAt:s.generatedAt,etag:o.headers.get("ETag")??void 0}}var us="fork:manifest:v1";function Cn(e,t,n){return `${us}:${e}:${t}:${n}`}function ds(e,t,n){if(typeof window>"u")return null;try{let r=window.localStorage.getItem(Cn(e,t,n));return r?JSON.parse(r):null}catch{return null}}function fs(e,t,n,r){if(!(typeof window>"u"))try{window.localStorage.setItem(Cn(e,t,n),JSON.stringify(r));}catch{}}function ps(e,t,n){if(!(typeof window>"u"))try{window.localStorage.removeItem(Cn(e,t,n));}catch{}}function ms(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[i,l]of n){let u=t.slots[i];if(!u||u.forkId!==l.forkId||u.buildId!==l.buildId)return true}let o=Object.entries(e.modules),s=Object.entries(t.modules);if(o.length!==s.length)return true;for(let[i,l]of o){let u=t.modules[i];if(!u||u.forkId!==l.forkId||u.buildId!==l.buildId)return true}return false}var Zt={isAdmin:false,actingUserId:null,containerId:null,containerName:null,containers:[]},Lr=Pn.createContext(null),ys=12e3,ks=45e3,Pr="fork:activity:v1",bs=new Set(["pending","running","building"]),ws="Setting up environment";function _e(e){return bs.has(e)}function vs(e,t){return t?.targetId?t:e.boundaryId?{targetKind:"module",targetId:e.boundaryId}:e.slotId?{targetKind:"slot",targetId:e.slotId}:null}function Ss(e,t){let n=vs(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 _r(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 Qt(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,s=typeof e?.estimateMinutes=="number"&&Number.isFinite(e.estimateMinutes)?e.estimateMinutes:void 0;return {...e,...t,summary:n??r??null,estimateMinutes:o??s??null,latestMessage:t.latestMessage??e?.latestMessage??null,unread:t.unread??e?.unread??false}}function At(e){return `${e.id}:${e.completedAt||e.updatedAt}`}function ot(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 st(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(e,JSON.stringify([...t].slice(-200)));}catch{}}function Fs(e){if(e.estimateMinutes)return `~${e.estimateMinutes}m`}function xs(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:_e(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 As(e){let t=e.filter(o=>_e(o.status)),n=e.filter(o=>o.status==="complete"&&o.unread),r=[...e].sort((o,s)=>Date.parse(s.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],s=!!(typeof o.summary=="string"&&o.summary.trim());return {state:"running",label:s?o.summary.trim():ws,detail:s?Fs(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 Mn(e,t){if(!t)return t;try{return new URL(t,`${e.replace(/\/+$/,"")}/`).toString()}catch{return t}}function Es(e,t,n,r){let o={};for(let[s,i]of Object.entries(t.slots)){let l=i.bundleUrl??i.legacyBundleUrl;l&&(o[s]={id:i.forkId,userId:n,prompt:"",status:"complete",slotId:s,appId:r,bundleUrl:Mn(e,l),revealPending:i.revealPending===true,createdAt:i.updatedAt,completedAt:i.updatedAt});}return o}function Rs(e,t){let n={};for(let[r,o]of Object.entries(t.modules)){let s=o.moduleUrl??o.legacyModuleUrl??o.bundleUrl??"";s&&(n[r]={id:o.forkId,boundaryId:r,moduleUrl:Mn(e,s),cssUrls:(o.cssUrls??[]).map(i=>Mn(e,i)),integrity:o.integrity,metadata:o.metadata,highlightHint:o.highlightHint,createdAt:o.updatedAt});}return n}function Is(e){let{apiKey:t,baseUrl:n,children:r,appId:o,shared:s}=e,i="userId"in e?e.userId:void 0,l="userHash"in e?e.userHash:void 0,u="userJwt"in e?e.userJwt:void 0,h="authUrl"in e?e.authUrl:void 0,[b,d]=Pn.useState({}),[k,R]=Pn.useState(i?{userId:i,userHash:l,userJwt:u}:null),[v,f]=Pn.useState(!!i),[g,S]=Pn.useState(Zt),[I,m]=Pn.useState(false),[P,L]=Pn.useState(false),[j,O]=Pn.useState({}),[N,oe]=Pn.useState(!o),[Y,_]=Pn.useState(0),[F,H]=Pn.useState(null),[D,K]=Pn.useState(false),[V,W]=Pn.useState([]),[X,U]=Pn.useState(()=>typeof document>"u"?true:document.visibilityState!=="hidden"),C=Pn.useRef(new Map),M=Pn.useRef(new Map),[w,p]=Pn.useState(0),$=Pn.useRef(new Set),x=Pn.useRef(new Map),q=Pn.useRef(void 0),re=Pn.useRef(new Map),Ae=Pn.useRef([]),Te=Pn.useRef(new Set),Ue=Pn.useRef(false);xn(),Pn.useEffect(()=>{if(!o||!k?.userId||!(k.userHash||k.userJwt)){S(Zt),m(true);return}let c=false;m(false);let y=new URLSearchParams({app:o});return fetch(`${n}/api/v1/admin/containers?${y.toString()}`,{headers:{Authorization:`Bearer ${t}`,"X-Fork-App-Id":o,"X-Fork-User-Id":k.userId,...k.userHash?{"X-Fork-User-Hash":k.userHash}:{},...k.userJwt?{"X-Fork-User-Jwt":k.userJwt}:{}}}).then(async A=>A.status===403||!A.ok?null:A.json()).then(A=>{if(c)return;if(!A){S(Zt),m(true);return}let z=Array.isArray(A.containers)?A.containers:[],Q=A.currentContainerId??null,Z=z.find(ne=>ne.id===Q)?.name??null;S({isAdmin:true,actingUserId:typeof A.actingUserId=="string"?A.actingUserId:null,containerId:Q,containerName:Z,containers:z}),m(true);}).catch(()=>{c||(S(Zt),m(true));}),()=>{c=true;}},[t,o,k?.userHash,k?.userJwt,k?.userId,n]),Pn.useEffect(()=>{$r(g.isAdmin,o??null,g.containerId);},[g.isAdmin,g.containerId,o]);let Se=Pn.useCallback((c,y)=>{S(A=>{if(!A.isAdmin)return A;let z=A.containers.find(ne=>ne.id===c),Q=y??z?.name??null,Z=z?A.containers.map(ne=>({...ne,isPrimary:ne.id===c})):[{id:c,name:Q??"New container",isPrimary:true,forkCount:0},...A.containers.map(ne=>({...ne,isPrimary:false}))];return {...A,containerId:c,containerName:Q,containers:Z}}),L(false);},[]);s&&q.current!==s&&(An(s),q.current=s),Pn.useEffect(()=>{h&&(f(false),fetch(h,{credentials:"include"}).then(c=>{if(!c.ok)throw new Error(`Auth endpoint returned ${c.status}`);return c.json()}).then(c=>{if(!c.userId||typeof c.userId!="string")throw new Error("authUrl response must include userId");R({userId:c.userId,userHash:typeof c.userHash=="string"?c.userHash:void 0,userJwt:typeof c.userJwt=="string"?c.userJwt:void 0});}).catch(c=>{console.error("[ForkProvider] Failed to fetch user identity from authUrl:",c.message);}).finally(()=>{f(true);}));},[h]),Pn.useEffect(()=>{!h&&i&&(R({userId:i,userHash:l,userJwt:u}),f(true));},[i,l,u,h]);let te=k?.userId??"",se=k?.userHash,lt=k?.userJwt,$e=!!o,ke=Pn.useCallback(async()=>{if(!$e){H(null),K(false),O({}),oe(true),_(y=>y+1);return}if(!v){oe(false);return}if(!te||!o){H(null),K(false),d({}),O({}),oe(true),_(y=>y+1);return}oe(false);let c=g.isAdmin?g.containerId:null;if(g.isAdmin&&P){K(true),d({}),O({}),_(y=>y+1),oe(true);return}try{let y=await In({baseUrl:n,apiKey:t,appId:o,userId:te,userHash:se,userJwt:lt,containerId:c??void 0});y&&(H(y.containerId),K(g.isAdmin?!1:!!y.forksPaused),d(Es(n,y,te,o)),O(Rs(n,y)));}catch(y){console.error("[ForkProvider] Failed to fetch fork manifest:",y.message),H(null),K(false),d({}),O({});}finally{_(y=>y+1),oe(true);}},[t,o,n,v,$e,se,lt,te,g.isAdmin,g.containerId,P]);Pn.useEffect(()=>{if(!te||o)return;let c=new URLSearchParams({userId:te});se&&c.set("userHash",se),fetch(`${n}/api/v1/forks/active?${c.toString()}`,{headers:{Authorization:`Bearer ${t}`,...pe()}}).then(y=>{if(!y.ok)throw new Error(`${y.status}`);return y.json()}).then(y=>{y&&typeof y=="object"&&d(y);}).catch(()=>{});},[t,o,te,se,n]),Pn.useEffect(()=>{ke();},[ke]);let hn=Pn.useCallback(async c=>{if(o){if(g.isAdmin){L(c),K(c),c?(d({}),O({}),_(y=>y+1)):await ke();return}if(te){K(c),c&&(d({}),O({}),_(y=>y+1));try{let y=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:c,userId:te,userHash:se})});if(!y.ok)throw new Error(`${y.status}`);c||await ke();}catch(y){console.error("[ForkProvider] Failed to persist fork pause state:",y?.message??y),ke().catch(()=>{});}}}},[t,o,n,ke,g.isAdmin,se,te]),Bt=Pn.useCallback((c,y)=>{d(A=>({...A,[c]:y}));},[]),yn=Pn.useCallback(c=>{d(y=>{let A={...y};return delete A[c],A});},[]),Dt=Pn.useCallback(c=>{$.current.add(c);},[]),ge=Pn.useCallback(c=>$.current.has(c)?($.current.delete(c),true):false,[]),ct=Pn.useCallback(c=>{if(c.slotId&&d(A=>{let z=A[c.slotId];return !z||z.id!==c.id||!z.revealPending?A:{...A,[c.slotId]:{...z,revealPending:false}}}),g.isAdmin||!te)return;let y={Authorization:`Bearer ${t}`,"Content-Type":"application/json","X-Fork-User-Id":te};se&&(y["X-Fork-User-Hash"]=se),fetch(`${n}/api/v1/forks/reveals`,{method:"POST",headers:y,body:JSON.stringify({forkId:c.id,userId:te,userHash:se})}).catch(()=>{});},[t,n,g.isAdmin,se,te]),tt=Pn.useCallback((c,y)=>{x.current.set(c,y);},[]),jt=Pn.useCallback((c,y)=>x.current.get(c)!==y?false:(x.current.delete(c),true),[]),bt=Pn.useCallback(c=>{if(!o)return;let y=JSON.stringify(c);C.current.get(c.id)===y||M.current.get(c.id)?.signature===y||(M.current.set(c.id,{boundary:c,signature:y}),p(z=>z+1));},[o]);Pn.useEffect(()=>{if(!o||M.current.size===0)return;let c=setTimeout(()=>{let y=Array.from(M.current.values());y.length!==0&&fetch(`${n}/api/v1/boundaries`,{method:"POST",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json"},body:JSON.stringify({appId:o,boundaries:y.map(A=>A.boundary)})}).then(A=>{if(!A.ok)throw new Error(`${A.status}`)}).then(()=>{for(let A of y)M.current.get(A.boundary.id)?.signature===A.signature&&(M.current.delete(A.boundary.id),C.current.set(A.boundary.id,A.signature));}).catch(A=>{console.error("[ForkProvider] Failed to register module boundaries:",A.message);});},50);return ()=>{clearTimeout(c);}},[t,o,n,w]);let ut=Pn.useCallback(c=>j[c],[j]),Be=g.isAdmin?`admin:${g.actingUserId??"op"}`:te,Xe=`${t}:${o||"no-app"}:${F||"no-container"}:${Be||"anonymous"}`,wt=g.isAdmin?`op:${g.actingUserId??"op"}`:te,Kt=`${t}:${o||"no-app"}:${wt||"anonymous"}`,Fe=`${Pr}:seen:${Xe}`,xe=`${Pr}:tracked:${Xe}`;Pn.useEffect(()=>{Ae.current=V;},[V]);let dt=Pn.useCallback(()=>{let c={Authorization:`Bearer ${t}`,...pe()};return o&&(c["X-Fork-App-Id"]=o),te&&(c["X-Fork-User-Id"]=te),se&&(c["X-Fork-User-Hash"]=se),c},[t,o,se,te]);Pn.useEffect(()=>{if(typeof window>"u")return;let c=window.__FORK_RUNTIME__,y={dataFetch:async(A,z,Q="POST")=>{if(!o||!F)throw new Error("Fork data is unavailable until appId and containerId are resolved");let Z=typeof A=="string"&&A.startsWith("/")?A:`/${String(A||"")}`,ne=Z.startsWith("/api/v1/data")?Z:`/api/v1/data${Z}`,ie=Q.toUpperCase(),be=new URL(`${n}${ne}`),ce={Authorization:`Bearer ${t}`,"Content-Type":"application/json","X-Fork-App-Id":o,...pe()};te&&(ce["X-Fork-User-Id"]=te),se&&(ce["X-Fork-User-Hash"]=se);let me={method:ie,headers:ce};ie==="GET"?(be.searchParams.set("appId",o),be.searchParams.set("containerId",F)):me.body=JSON.stringify({appId:o,containerId:F,...z&&typeof z=="object"?z:{}});let ae=await fetch(be.toString(),me),de=await ae.json().catch(()=>({}));if(!ae.ok)throw new Error(typeof de?.error=="string"?de.error:`Fork data API ${ae.status}`);return de}};return window.__FORK_RUNTIME__=y,()=>{window.__FORK_RUNTIME__===y&&(window.__FORK_RUNTIME__=c);}},[t,o,n,F,se,te]);let Ie=Pn.useCallback(async()=>{if(!F||!I)return;let c=new URLSearchParams({container_id:F}),y=await fetch(`${n}/api/v1/forks?${c.toString()}`,{headers:dt()}).catch(()=>null);if(!y||!y.ok)return;let A=await y.json().catch(()=>({})),z=Array.isArray(A.forks)?A.forks:[],Q=ot(Fe),Z=ot(xe),ne=false,ie=new Map(Ae.current.map(ce=>[ce.id,ce])),be=[];for(let ce of z){let me=_r(ce);_e(me.status)&&!Z.has(me.id)&&(Z.add(me.id),ne=true);let ae=ie.get(me.id),de=ae?_e(ae.status):false,we=At(me);me.status==="complete"&&(Z.has(me.id)||de)&&!Q.has(we)&&!Te.current.has(we)&&!ae?.unread&&(Ue.current||Z.has(me.id)||de)&&(Te.current.add(we),be.push(me));}if(W(ce=>{let me=new Map(ce.map(fe=>[fe.id,fe])),ae=new Set,de=new Map;for(let fe of z){let Ee=_r(fe);ae.add(Ee.id);let Pe=me.get(Ee.id),Le=Pe?_e(Pe.status):false,pt=At(Ee),Wt=Ee.status==="complete"&&(Z.has(Ee.id)||Le)&&!Q.has(pt),qe=Qt(Pe,{...Ee,unread:Wt});de.set(Ee.id,qe);}for(let fe of ce)ae.has(fe.id)||(_e(fe.status)||fe.unread)&&de.set(fe.id,fe);let we=[...de.values()].sort((fe,Ee)=>Date.parse(Ee.updatedAt)-Date.parse(fe.updatedAt));return Ae.current=we,we}),ne&&st(xe,Z),be.length>0){for(let ce of be)ce.targetKind==="module"&&tt(ce.targetId,ce.id);ke().catch(()=>{});}Ue.current=true;},[Fe,xe,I,n,dt,F,ke,tt]),zt=Pn.useCallback((c,y)=>{let A=Ss(c,y);if(!A)return;let z=c.containerId??c._containerId;if(z&&!F&&H(z),_e(A.status)){let ne=ot(xe);ne.has(A.id)||(ne.add(A.id),st(xe,ne)),K(false),g.isAdmin&&L(false);}let Q=new Map(Ae.current.map(ne=>[ne.id,ne]));Q.set(A.id,Qt(Q.get(A.id),A));let Z=[...Q.values()].sort((ne,ie)=>Date.parse(ie.updatedAt)-Date.parse(ne.updatedAt));Ae.current=Z,W(Z);},[xe,t,o,F,g.isAdmin]),Ne=Pn.useCallback((c,y)=>{let A=xs(y),z=ot(Fe),Q=ot(xe),Z=Ae.current.find(ae=>ae.id===c),ne=Z?_e(Z.status):false;A.status&&_e(A.status)&&!Q.has(c)&&(Q.add(c),st(xe,Q));let ie=Z?Qt(Z,{...Z,...A}):null,be=ie?At(ie):null,ce=!!(ie&&ie.status==="complete"&&(Q.has(c)||ne)&&be&&!z.has(be)&&!Te.current.has(be)&&!Z?.unread),me=y.type==="complete"&&Z?.targetKind==="module"?Z.targetId:null;if(W(ae=>{let de=ae.find(Le=>Le.id===c);if(!de)return ae;let we=Qt(de,{...de,...A}),fe=we.status==="complete"&&(Q.has(c)||_e(de.status))&&!z.has(At(we)),Ee={...we,unread:fe},Pe=ae.map(Le=>Le.id===c?Ee:Le).sort((Le,pt)=>Date.parse(pt.updatedAt)-Date.parse(Le.updatedAt));return Ae.current=Pe,Pe}),ce&&ie&&be&&Te.current.add(be),y.type==="complete"){let ae=y.data&&typeof y.data=="object"?y.data:{},de=typeof ae.boundaryId=="string"?ae.boundaryId:me;de&&tt(de,c),ke().catch(()=>{});}},[Fe,xe,ke,tt]),ft=Pn.useCallback(c=>{let y=ot(Fe),A=ot(xe),z=false,Q=false;for(let Z of Ae.current){if(Z.status!=="complete"||c&&Z.id!==c)continue;let ne=At(Z);y.has(ne)||(y.add(ne),z=true),A.delete(Z.id)&&(Q=true);}W(Z=>{let ne=Z.map(ie=>ie.status!=="complete"||c&&ie.id!==c?ie:{...ie,unread:false});return Ae.current=ne,ne}),z&&st(Fe,y),Q&&st(xe,A);},[Fe,xe]);Pn.useEffect(()=>{Ue.current=false,Te.current.clear(),W([]);for(let c of re.current.values())c.close();re.current.clear(),F&&Ie();},[F,Ie]),Pn.useEffect(()=>{if(typeof document>"u")return;let c=()=>{let y=document.visibilityState!=="hidden";U(y),y&&F&&Ie();};return document.addEventListener("visibilitychange",c),window.addEventListener("focus",c),window.addEventListener("online",c),()=>{document.removeEventListener("visibilitychange",c),window.removeEventListener("focus",c),window.removeEventListener("online",c);}},[F,Ie]),Pn.useEffect(()=>{let c=V.filter(z=>_e(z.status));if(!F||c.length===0)return;let y=X?ys:ks,A=window.setInterval(()=>{Ie();},y);return ()=>window.clearInterval(A)},[F,X,V,Ie]),Pn.useEffect(()=>{for(let c of re.current.values())c.close();re.current.clear();},[t,n,g.containerId,se,te]),Pn.useEffect(()=>{let c=new Set(V.filter(y=>_e(y.status)).map(y=>y.id));for(let[y,A]of re.current.entries())c.has(y)||(A.close(),re.current.delete(y));for(let y of c){if(re.current.has(y))continue;let A=new URLSearchParams({key:t});te&&A.set("userId",te),se&&A.set("userHash",se),g.isAdmin&&g.containerId&&A.set("containerId",g.containerId);let z=new EventSource(`${n}/api/v1/forks/${y}/events?${A.toString()}`);z.onmessage=Q=>{try{Ne(y,JSON.parse(Q.data));}catch{}},z.onerror=()=>{z.close(),re.current.delete(y);},re.current.set(y,z);}},[t,n,V,g.isAdmin,g.containerId,Ne,se,te]),Pn.useEffect(()=>()=>{for(let c of re.current.values())c.close();re.current.clear();},[]);let kn=As(V),bn=Pn.useCallback(async()=>{if(!te)throw new Error("Reset requires a resolved user identity.");let c=new URLSearchParams({userId:te});se&&c.set("userHash",se);let y={Authorization:`Bearer ${t}`,...pe()};o&&(y["X-Fork-App-Id"]=o);let A=await fetch(`${n}/api/v1/forks/all?${c.toString()}`,{method:"DELETE",headers:y});if(!A.ok){let Q=await A.json().catch(()=>({}));throw new Error(Q.error||`API error: ${A.status}`)}let z=await A.json().catch(()=>({}));return d({}),O({}),oe(true),_(Q=>Q+1),W([]),Te.current.clear(),st(Fe,new Set),st(xe,new Set),$.current.clear(),x.current.clear(),z},[Fe,xe,t,o,n,se,te]);return ls.jsx(Lr.Provider,{value:{apiKey:t,userId:te,userHash:se,baseUrl:n,appId:o,forks:b,moduleOverridesEnabled:$e,moduleManifestReady:N,moduleManifestVersion:Y,currentContainerId:F,forksPaused:D,setForksPaused:hn,forkActivities:V,activitySummary:kn,adminContext:g,setAdminContainer:Se,trackForkActivity:zt,recordForkActivityEvent:Ne,markForkActivitySeen:ft,refreshForkActivities:Ie,setSlotFork:Bt,clearSlotFork:yn,skipAnimationForSlot:Dt,shouldSkipAnimation:ge,markRevealSeen:ct,queueBoundaryAnimation:tt,consumeBoundaryAnimation:jt,registerBoundary:bt,getBoundaryOverride:ut,refreshModuleManifest:ke,resetAllForks:bn,highlightScope:Kt},children:r})}function ve(){let e=Pn.useContext(Lr);if(!e)throw new Error("useForkContext must be used within <ForkProvider>");return e}function en(e){return ve().forks[e]}var Et=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(s=>s());}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 Tn=new Set;function _n(e,t){let n;try{n=Pn.Children.only(e);}catch{let o=Pn.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 Or=new Set;function Nr(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 s=getComputedStyle(r),i=parseFloat(s.borderTopLeftRadius)||0;t.push({tag:r.tagName,className:r.className||"",text:(r.textContent||"").slice(0,50).trim(),rect:o,borderRadius:i});}return t}function Ps(e,t){let n=[];for(let r of t)if(!e.find(s=>s.tag===r.tag&&s.className===r.className&&Math.abs(s.rect.top-r.rect.top)<20&&Math.abs(s.rect.left-r.rect.left)<20)&&!n.some(i=>r.rect.top>=i.rect.top&&r.rect.left>=i.rect.left&&r.rect.right<=i.rect.right&&r.rect.bottom<=i.rect.bottom)){for(let i=n.length-1;i>=0;i--){let l=n[i];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(i,1);}n.push({rect:r.rect,borderRadius:r.borderRadius});}return n}function _s(e,t){let n=[];for(let r of e)if(!t.find(s=>s.tag===r.tag&&s.className===r.className&&Math.abs(s.rect.top-r.rect.top)<20&&Math.abs(s.rect.left-r.rect.left)<20)&&!n.some(i=>r.rect.top>=i.rect.top&&r.rect.left>=i.rect.left&&r.rect.right<=i.rect.right&&r.rect.bottom<=i.rect.bottom)){for(let i=n.length-1;i>=0;i--){let l=n[i];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(i,1);}n.push({rect:r.rect,borderRadius:r.borderRadius});}return n}function Br(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 Ur(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 s=[];for(let b=0;b<e.length;b++){let{rect:d,borderRadius:k}=e[b],R=d.left-.5,v=d.top-.5,f=d.width+1,g=d.height+1,S=Math.min(k+.5,f/2,g/2),I=Br(R,v,f,g,S),m=`__fork-glow-${b}`,P=document.createElementNS(t,"filter");P.setAttribute("id",m),P.setAttribute("x","-100%"),P.setAttribute("y","-100%"),P.setAttribute("width","300%"),P.setAttribute("height","300%");let L=document.createElementNS(t,"feGaussianBlur");L.setAttribute("in","SourceGraphic"),L.setAttribute("stdDeviation","8"),P.appendChild(L),o.appendChild(P);let j=`__fork-mask-${b}`,O=document.createElementNS(t,"mask");O.setAttribute("id",j),O.setAttribute("maskUnits","userSpaceOnUse"),O.setAttribute("x",String(R-200)),O.setAttribute("y",String(v-200)),O.setAttribute("width",String(f+400)),O.setAttribute("height",String(g+400));let N=document.createElementNS(t,"rect");N.setAttribute("x",String(R-200)),N.setAttribute("y",String(v-200)),N.setAttribute("width",String(f+400)),N.setAttribute("height",String(g+400)),N.setAttribute("fill","white"),O.appendChild(N);let oe=document.createElementNS(t,"path");oe.setAttribute("d",I),oe.setAttribute("fill","black"),O.appendChild(oe),o.appendChild(O);let Y=document.createElementNS(t,"g");Y.setAttribute("mask",`url(#${j})`),Y.setAttribute("opacity","0");let _=document.createElementNS(t,"g");_.setAttribute("filter",`url(#${m})`);let F=document.createElementNS(t,"path");F.setAttribute("d",I),F.setAttribute("fill","none"),F.setAttribute("stroke","rgba(150, 185, 220, 0.6)"),F.setAttribute("stroke-width","6"),F.setAttribute("stroke-linecap","round"),_.appendChild(F),Y.appendChild(_),r.appendChild(Y);let H=document.createElementNS(t,"path");H.setAttribute("d",I),H.setAttribute("fill","none"),H.setAttribute("stroke","rgba(150, 185, 220, 0.35)"),H.setAttribute("stroke-width","2"),H.setAttribute("stroke-linecap","round"),H.setAttribute("opacity","0"),r.appendChild(H),s.push(F,H),F.__group=Y;}n.appendChild(r),document.body.appendChild(n);let i=[];for(let b=0;b<s.length;b+=2){let d=s[b],k=s[b+1],R=d.__group,v=k.getTotalLength(),f=d.getTotalLength();if(v<=0)continue;let g=v*.35;k.setAttribute("stroke-dasharray",`${g} ${v-g}`),k.setAttribute("stroke-dashoffset","0"),i.push(k.animate([{strokeDashoffset:0,opacity:0,offset:0},{strokeDashoffset:-0.2*v,opacity:.92,offset:.06},{strokeDashoffset:-2*v,opacity:.92,offset:.92},{strokeDashoffset:-2.25*v,opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));let S=f*.35;d.setAttribute("stroke-dasharray",`${S} ${f-S}`),d.setAttribute("stroke-dashoffset","0"),i.push(d.animate([{strokeDashoffset:0,offset:0},{strokeDashoffset:-0.2*f,offset:.06},{strokeDashoffset:-2*f,offset:.92},{strokeDashoffset:-2.25*f,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"})),i.push(R.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(h);for(let d of i)try{d.cancel();}catch{}let b=n.animate([{opacity:1},{opacity:0}],{duration:400,fill:"forwards"});b.onfinish=()=>n.remove(),window.removeEventListener("click",u);},h=setTimeout(u,14500);return setTimeout(()=>{l||window.addEventListener("click",u);},500),u}function Ls(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"),s=document.createElementNS(t,"filter");s.setAttribute("id","__fork-removed-shadow"),s.setAttribute("x","-10%"),s.setAttribute("y","-10%"),s.setAttribute("width","120%"),s.setAttribute("height","120%");let i=document.createElementNS(t,"feDropShadow");i.setAttribute("dx","0"),i.setAttribute("dy","1"),i.setAttribute("stdDeviation","2"),i.setAttribute("flood-color","rgba(0,0,0,0.15)"),s.appendChild(i),o.appendChild(s),r.appendChild(o);for(let{rect:l,borderRadius:u}of e){let h=l.left,b=l.top,d=l.width,k=l.height,R=Math.min(u,d/2,k/2),v=Br(h,b,d,k,R),f=document.createElementNS(t,"path");f.setAttribute("d",v),f.setAttribute("fill","none"),f.setAttribute("stroke","rgba(120, 125, 135, 0.6)"),f.setAttribute("stroke-width","1.5"),f.setAttribute("stroke-dasharray","8 4"),f.setAttribute("stroke-linecap","round"),f.setAttribute("filter","url(#__fork-removed-shadow)"),f.setAttribute("opacity","0"),r.appendChild(f),f.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 Hs(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 Os=Pn__namespace.default.memo(function({component:t,containerRef:n,wrapperStyle:r,hostProps:o}){return ls.jsx("div",{ref:n,style:r,children:ls.jsx(t,{...o})})},(e,t)=>e.component===t.component&&Hs(e.hostProps,t.hostProps)),$n=class extends Pn__namespace.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 Dr({slotId:e,children:t,githubRepo:n,shared:r,events:o,entityBindings:s}){_n(t,e);let i=en(e),{baseUrl:l,apiKey:u,appId:h,shouldSkipAnimation:b,markRevealSeen:d}=ve(),[k,R]=Pn.useState(null),v=Pn.useRef(null),f=Pn.useRef(null),g=Pn.useRef(null),S=Pn.useRef(false),I=Pn.useRef(null),m=Pn.useRef(null),P=!!(r||o),L=Pn.useRef(null);P&&!L.current&&(L.current=new Et(e));let j=Pn.useRef(o);if(j.current=o,Pn.useEffect(()=>{if(P)return ()=>{L.current?.destroy(),L.current=null;}},[P,e]),P&&L.current&&r)for(let[_,F]of Object.entries(r))L.current.set(_,F);Pn.useEffect(()=>{if(!P)return;L.current||(L.current=new Et(e));let _=L.current,F=Object.keys(j.current||{}).map(H=>_.on(H,(...D)=>j.current?.[H]?.(...D)));return ()=>F.forEach(H=>H())},[P,e]),Pn.useEffect(()=>{if(Or.has(e))return;Or.add(e);let _={id:e,appId:h,label:e,eventsShape:"{ navigate?: string }",currentLayout:"",githubRepo:n,mode:"direct",sharedKeys:r?Object.keys(r):[],eventNames:o?Object.keys(o):[],propsShape:"",callbackNames:[],entityBindings:s||{}};fetch(`${l}/api/v1/slots`,{method:"POST",headers:{Authorization:`Bearer ${u}`,"Content-Type":"application/json"},body:JSON.stringify(_)}).catch(()=>{});},[e,l,u,n,h,s]);let O=i?.id||null;Pn.useEffect(()=>{if(i?.bundleUrl,v.current,f.current,!i?.bundleUrl||!O){return}let _=`${l}${i.bundleUrl.replace("bundle.js","component.js")}`,F=i.revealPending===true&&!Tn.has(O),H=b(e),D=!H&&F;if(i.revealPending,H&&F&&(Tn.add(O),d(i)),D&&f.current){let U=Nr(f.current);g.current=U,S.current=true,`${e}${U.length}`;}window.__FORK_REACT__=Pn__namespace.default,window.__FORK_REACT_DOM__=as__namespace,window.__FORK_REACT_JSX__=ls__namespace;let K=Date.now(),V=`${l}${i.bundleUrl.replace("bundle.js","component.css")}?t=${K}`,W=document.createElement("link");W.rel="stylesheet",W.href=V,W.dataset.forkSlot=e,document.head.appendChild(W);let X=document.createElement("script");return X.src=_+"?t="+K,X.onload=()=>{let U=window.__FORK_EXPORT__;if(U?.default){if(f.current&&g.current&&S.current){let C=f.current.getBoundingClientRect(),M=f.current.cloneNode(true);M.setAttribute("data-fork-clone-overlay","true"),M.style.position="fixed",M.style.top=`${C.top}px`,M.style.left=`${C.left}px`,M.style.width=`${C.width}px`,M.style.height=`${C.height}px`,M.style.flex="none",M.style.minHeight="auto",M.style.zIndex="9998",M.style.pointerEvents="none",M.style.overflow="hidden";let w=getComputedStyle(f.current).backgroundColor;M.style.backgroundColor=w&&w!=="rgba(0, 0, 0, 0)"&&w!=="transparent"?w:getComputedStyle(document.body).backgroundColor||"#ffffff",document.body.appendChild(M);let p=f.current.querySelectorAll("*"),$=M.querySelectorAll("*");for(let x=0;x<p.length;x++)p[x].scrollTop!==0&&($[x].scrollTop=p[x].scrollTop),p[x].scrollLeft!==0&&($[x].scrollLeft=p[x].scrollLeft);I.current=M;}R(()=>U.default),v.current=O;}else console.error(`[Fork:${e}] component.js loaded but no default export found`);window.__FORK_EXPORT__=void 0;},X.onerror=()=>{console.error(`[Fork:${e}] failed to load component.js`);},document.head.appendChild(X),()=>{X.remove(),W.remove(),m.current&&(clearTimeout(m.current),m.current=null),I.current&&(I.current.remove(),I.current=null);}},[O,l,e]),Pn.useEffect(()=>{if(!S.current||!k||!f.current){`${e}${S.current}`,f.current;return}let _=g.current;if(!_){return}requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!f.current)return;let F=Nr(f.current),H=Ps(_,F),D=_s(_,F),K=I.current;if(`${e}${H.length}${D.length}`,D.length>0&&K){let V=Ls(D);m.current=setTimeout(()=>{m.current=null;let W=400;K.animate([{opacity:1},{opacity:0}],{duration:W,fill:"forwards"}),V.animate([{opacity:1},{opacity:0}],{duration:W,fill:"forwards"}),setTimeout(()=>{K.remove(),V.remove(),I.current=null,H.length>0&&(Ur(H));},W);},3500);}else K&&(K.remove(),I.current=null),H.length>0&&(Ur(H));g.current=null,S.current=false,i&&O&&(Tn.add(O),d(i),`${e}`);});});},[k]);let N={flex:1,minHeight:0,display:"flex",flexDirection:"column"};if(!i||i.status!=="complete"||!i.bundleUrl)return ls.jsx("div",{ref:f,style:N,children:t});if(!k)return ls.jsx("div",{ref:f,style:N,children:t});let Y=t?.props??{};return ls.jsx($n,{slotId:e,resetKey:O,fallback:ls.jsx("div",{ref:f,style:N,children:t}),children:ls.jsx(Os,{component:k,containerRef:f,wrapperStyle:N,hostProps:Y})})}var Kr=new Set;function Bs(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 zr(e,t=new Set){return Pn.Children.forEach(e,n=>{if(!Pn.isValidElement(n))return;let r=n.props;for(let[o,s]of Object.entries(r))typeof s=="function"&&/^on[A-Z]/.test(o)&&t.add(o);r.children&&zr(r.children,t);}),t}function Ds({slotId:e,props:t,children:n,allowedFetches:r,entityBindings:o,githubRepo:s,callbacks:i,mode:l="iframe",shared:u,events:h}){if(_n(n,e),l==="direct")return ls.jsx(Dr,{slotId:e,githubRepo:s,shared:u,events:h,entityBindings:o,children:n});let b=en(e),{baseUrl:d,apiKey:k,appId:R,userId:v,userHash:f,currentContainerId:g}=ve(),S=Pn.useRef(null),I=Pn.useRef(false),m=Pn.useRef(null),P=Pn.useRef(i);P.current=i;let L=Pn.useRef(t);L.current=t;let j=Pn.useRef(r);j.current=r,Pn.useEffect(()=>{if(typeof process<"u")return;let Y=zr(n),_=new Set(i?Object.keys(i):[]),F=[...Y].filter(H=>!_.has(H));F.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
- `+F.map(H=>` - ${H}`).join(`
3
- `)+"\n\nThe forked component will not be able to call these. Add them to the `callbacks` prop of <ForkSlot>.");},[e,n,i]),Pn.useEffect(()=>{Kr.has(e)||(Kr.add(e),fetch(`${d}/api/v1/slots`,{method:"POST",headers:{Authorization:`Bearer ${k}`,"Content-Type":"application/json"},body:JSON.stringify({id:e,appId:R,label:e,propsShape:t?Bs(t):"",eventsShape:"{ navigate?: string }",currentLayout:"",githubRepo:s,callbackNames:i?Object.keys(i):[],mode:l||"iframe",entityBindings:o||{}})}).catch(()=>{}));},[e,d,k,s,R,o]);let O=Pn.useCallback(Y=>{let _=S.current;if(_?.contentWindow&&I.current){let F=P.current?Object.keys(P.current):[];_.contentWindow.postMessage({type:"slot:props",props:Y,callbackNames:F},"*"),m.current=null;}else m.current=Y;},[]),N=Pn.useCallback((Y,_)=>{let F=j.current;return !F||F.length===0?false:F.some(H=>{let[D,K]=H.split(" "),V=_.split("?")[0];return Y.toUpperCase()===D.toUpperCase()&&V.startsWith(K)})},[]);if(Pn.useEffect(()=>{if(!b?.bundleUrl)return;let Y=async _=>{if(_.source===S.current?.contentWindow){if(_.data?.type==="slot:ready")I.current=true,S.current?.contentWindow?.postMessage({type:"slot:allowed-fetches",paths:j.current||[]},"*"),j.current,m.current?O(m.current):O(L.current||{});else if(_.data?.type==="slot:event"){let F=_.data.event;F?.navigate&&(window.location.hash=F.navigate);}else if(_.data?.type==="slot:clipboard-write")navigator.clipboard.writeText(_.data.text).catch(F=>{console.warn(`[ForkSlot:${e}] clipboard write failed:`,F.message);});else if(_.data?.type==="slot:callback"){let{name:F,args:H}=_.data,D=P.current?.[F];D?(D(...H||[])):console.warn(`[ForkSlot:${e}] unknown callback: ${F}`);}else if(_.data?.type==="slot:fetch"){let{id:F,method:H,url:D,body:K}=_.data,V=S.current?.contentWindow;if(!V)return;let W=H||"GET";if(!N(W,D)){console.warn(`[ForkSlot:${e}] BLOCKED fetch #${F}: ${W} ${D} \u2014 not in allowedFetches`),V.postMessage({type:"slot:fetch-response",id:F,error:`Fetch not allowed: ${W} ${D}`},"*");return}try{let X={method:W};K&&W!=="GET"&&(X.headers={"Content-Type":"application/json"},X.body=JSON.stringify(K));let U=await fetch(D,X),C=await U.json();`${e}${F}${U.status}`,V.postMessage({type:"slot:fetch-response",id:F,data:C,status:U.status},"*");}catch(X){console.error(`[ForkSlot:${e}] fetch #${F} failed:`,X.message),V.postMessage({type:"slot:fetch-response",id:F,error:X.message},"*");}}else if(_.data?.type==="slot:fork-data"){let{id:F,path:H,method:D,body:K}=_.data,V=S.current?.contentWindow;if(!V)return;if(!g||!R){V.postMessage({type:"slot:fork-data-response",id:F,error:"Fork data is unavailable until appId and containerId are resolved"},"*");return}let W=typeof H=="string"&&H.startsWith("/")?H:`/${String(H||"")}`,X=W.startsWith("/api/v1/data")?W:`/api/v1/data${W}`;try{let U={Authorization:`Bearer ${k}`,"Content-Type":"application/json","X-Fork-App-Id":R,...pe()};v&&(U["X-Fork-User-Id"]=v),f&&(U["X-Fork-User-Hash"]=f);let C=typeof D=="string"?D.toUpperCase():"POST",M=new URL(`${d}${X}`),w={method:C,headers:U};C==="GET"?(M.searchParams.set("appId",R),M.searchParams.set("containerId",g)):w.body=JSON.stringify({appId:R,containerId:g,...K&&typeof K=="object"?K:{}});let p=await fetch(M.toString(),w),$=await p.json().catch(()=>({}));if(!p.ok){let x=typeof $?.error=="string"?$.error:`Fork data API ${p.status}`;V.postMessage({type:"slot:fork-data-response",id:F,error:x,status:p.status},"*");return}V.postMessage({type:"slot:fork-data-response",id:F,data:$,status:p.status},"*");}catch(U){V.postMessage({type:"slot:fork-data-response",id:F,error:U.message},"*");}}}};return window.addEventListener("message",Y),()=>{window.removeEventListener("message",Y),I.current=false;}},[b?.bundleUrl,e,O,N,g,R,k,d,f,v]),Pn.useEffect(()=>{b?.bundleUrl&&I.current&&O(t||{});},[t,b?.bundleUrl,O]),!b||b.status!=="complete"||!b.bundleUrl)return `${e}${b?.status||"none"}${b?.bundleUrl||"none"}`,ls.jsx(ls.Fragment,{children:n});`${e}${b.bundleUrl}`;let oe=`${d}${b.bundleUrl.replace("/bundle.js","/host")}`;return ls.jsx("iframe",{ref:S,src:oe,sandbox:"allow-scripts allow-same-origin allow-forms allow-clipboard-write",title:`Forked ${e}`,style:{width:"100%",border:"none",flex:1,minHeight:0}})}function nn({style:e={width:20,height:20},...t}){return ls.jsxs("svg",{viewBox:"320 95 270 345",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:e,...t,children:[ls.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"}),ls.jsx("path",{stroke:"currentColor",strokeWidth:"30",strokeLinejoin:"round",strokeLinecap:"round",d:"M387.096 174.735v188"}),ls.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"}),ls.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"}),ls.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 Wr=5600,Hn=2147483002;function Js(e){return !e||e.state!=="complete"||!e.latest?null:`${e.latest.id}:${e.latest.completedAt??e.latest.updatedAt}`}function Vs(){return typeof document>"u"?false:!!document.querySelector("[data-fork-clone-overlay], [data-fork-removed], [data-fork-highlights]")}function On(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 Xs(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 Nn({onClick:e,hasNotification:t=false,activity:n}){let[r,o]=Pn.useState(false),[s,i]=Pn.useState(false),[l,u]=Pn.useState(null),[h,b]=Pn.useState(null),[d,k]=Pn.useState(null),R=Pn.useRef(0),v=r?48:40,f=Js(n),g=!!(f&&n?.state==="complete"&&n.unreadCompletedCount>0),S=g?f:h?.key??null,I=!!(n&&n.state==="running"&&n.runningCount>0),m=!!(S&&S!==l&&(g||h)),P=I||m,L=g?n?.label:h?.label,j=m?"Built":n?.label??"Fork this app",O=m?L:n?.detail,N=On(n?.label??"Fork this app",n?.detail),oe=On(j,O),Y=m?Math.min(420,Math.max(326,oe,h?.width??0,R.current+40)):oe,_=m?46:40,F=P?[j,O].filter(Boolean).join(" "):Xs(n,t)??"Fork this app",H=P?`${j}:${O??""}`:"idle",D=(t||n?.state==="complete"&&n.unreadCompletedCount>0)&&!P;Pn.useEffect(()=>{if(typeof document>"u")return;let p=document.createElement("div");return p.setAttribute("data-fork-button-host","true"),p.style.position="relative",p.style.zIndex=String(Hn),document.body.appendChild(p),k(p),()=>{p.remove(),k(null);}},[]),Pn.useEffect(()=>{I&&(R.current=N);},[N,I]),Pn.useEffect(()=>{!g||!f||!n?.label||b(p=>{if(p?.key===f)return p;let $=Math.min(420,Math.max(326,On("Built",n.label),R.current+40));return {key:f,label:n.label,width:$,startedAt:Date.now()}});},[n?.label,f,g]),Pn.useEffect(()=>{n&&n.unreadCompletedCount===0&&n.state!=="running"&&b(null);},[n,n?.state,n?.unreadCompletedCount]),Pn.useEffect(()=>{if(!S||!m||S===l)return;let p,$=h?.key===S?h.startedAt:Date.now(),x=()=>{let q=Date.now()-$;if(q>=Wr&&!Vs()||q>=Wr*3){u(S);return}p=window.setTimeout(x,250);};return p=window.setTimeout(x,250),()=>{p!==void 0&&window.clearTimeout(p);}},[S,l,h?.key,h?.startedAt,m]);let K=P?{position:"fixed",bottom:24,right:24,zIndex:Hn,width:`min(${Y}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:s?"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:Hn,width:v,height:v,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:s?"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"},V={minWidth:0,maxWidth:I?286:m?82:O?116:238,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:13,fontWeight:650,lineHeight:"16px",letterSpacing:0},W={minWidth:0,maxWidth:m?278:void 0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flexShrink:m?1:0,color:"#64748b",fontSize:I?13:12,fontWeight:650,lineHeight:"16px",letterSpacing:0},X={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"},U={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},w=ls.jsxs(ls.Fragment,{children:[ls.jsx("style",{children:`
1
+ 'use strict';var ar=require('react'),Vs=require('react-dom'),Xs=require('react/jsx-runtime'),qs=require('react/jsx-dev-runtime'),lucideReact=require('lucide-react');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var ar__namespace=/*#__PURE__*/_interopNamespace(ar);var Vs__namespace=/*#__PURE__*/_interopNamespace(Vs);var Xs__namespace=/*#__PURE__*/_interopNamespace(Xs);var qs__namespace=/*#__PURE__*/_interopNamespace(qs);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__namespace),(n=e[wt])["react-dom"]||(n["react-dom"]=Vs__namespace),(r=e[wt])["react/jsx-runtime"]||(r["react/jsx-runtime"]=Xs__namespace),(o=e[wt])["react/jsx-dev-runtime"]||(o["react/jsx-dev-runtime"]=qs__namespace),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 En={isAdmin:false,actingUserId:null,containerId:null,containerName:null,containers:[]},ko=ar.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}}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 Zt(e){return `${e.id}:${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]=ar.useState({}),[E,U]=ar.useState(a?{userId:a,userHash:l,userJwt:u}:null),[R,p]=ar.useState(!!a),[f,T]=ar.useState(En),[x,k]=ar.useState(false),[L,N]=ar.useState(false),[K,_]=ar.useState({}),[H,j]=ar.useState(!o),[W,M]=ar.useState(0),[S,O]=ar.useState(null),[V,q]=ar.useState(false),[Q,Z]=ar.useState([]),[ee,fe]=ar.useState(()=>typeof document>"u"?true:document.visibilityState!=="hidden"),de=ar.useRef(new Map),oe=ar.useRef(new Map),[me,te]=ar.useState(0),pe=ar.useRef(new Set),d=ar.useRef(new Map),I=ar.useRef(void 0),h=ar.useRef(new Map),c=ar.useRef([]),g=ar.useRef(new Set),$=ar.useRef(false);Zn(),ar.useEffect(()=>{if(!o||!E?.userId||!(E.userHash||E.userJwt)){T(En),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":E.userId,...E.userHash?{"X-Fork-User-Hash":E.userHash}:{},...E.userJwt?{"X-Fork-User-Jwt":E.userJwt}:{}}}).then(async P=>P.status===403||!P.ok?null:P.json()).then(P=>{if(m)return;if(!P){T(En),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(En),k(true));}),()=>{m=true;}},[t,o,E?.userHash,E?.userJwt,E?.userId,n]),ar.useEffect(()=>{mo(f.isAdmin,o??null,f.containerId);},[f.isAdmin,f.containerId,o]);let B=ar.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&&I.current!==i&&(Qn(i),I.current=i),ar.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");U({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]),ar.useEffect(()=>{!w&&a&&(U({userId:a,userHash:l,userJwt:u}),p(true));},[a,l,u,w]);let D=E?.userId??"",Y=E?.userHash,ft=E?.userJwt,ve=!!o,Pe=ar.useCallback(async()=>{if(!ve){O(null),q(false),_({}),j(true),M(F=>F+1);return}if(!R){j(false);return}if(!D||!o){O(null),q(false),b({}),_({}),j(true),M(F=>F+1);return}j(false);let m=f.isAdmin?f.containerId:null;if(f.isAdmin&&L){q(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&&(O(F.containerId),q(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),O(null),q(false),b({}),_({});}finally{M(F=>F+1),j(true);}},[t,o,n,R,ve,Y,ft,D,f.isAdmin,f.containerId,L]);ar.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]),ar.useEffect(()=>{Pe();},[Pe]);let gn=ar.useCallback(async m=>{if(o){if(f.isAdmin){N(m),q(m),m?(b({}),_({}),M(F=>F+1)):await Pe();return}if(D){q(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]),Ie=ar.useCallback((m,F)=>{b(P=>({...P,[m]:F}));},[]),mn=ar.useCallback(m=>{b(F=>{let P={...F};return delete P[m],P});},[]),rt=ar.useCallback(m=>{pe.current.add(m);},[]),pt=ar.useCallback(m=>pe.current.has(m)?(pe.current.delete(m),true):false,[]),gt=ar.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]),ot=ar.useCallback((m,F)=>{d.current.set(m,F);},[]),mt=ar.useCallback((m,F)=>d.current.get(m)!==F?false:(d.current.delete(m),true),[]),$e=ar.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]);ar.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 Kt=ar.useCallback(m=>K[m],[K]),Ge=f.isAdmin?`admin:${f.actingUserId??"op"}`:D,Wt=`${t}:${o||"no-app"}:${S||"no-container"}:${Ge||"anonymous"}`,It=f.isAdmin?`op:${f.actingUserId??"op"}`:D,Ct=`${t}:${o||"no-app"}:${It||"anonymous"}`,Ne=`${ho}:seen:${Wt}`,we=`${ho}:tracked:${Wt}`;ar.useEffect(()=>{c.current=Q;},[Q]);let Je=ar.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]);ar.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(),Te=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"?(Te.searchParams.set("appId",o),Te.searchParams.set("containerId",S)):he.body=JSON.stringify({appId:o,containerId:S,...G&&typeof G=="object"?G:{}});let ye=await fetch(Te.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=ar.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])),Te=[];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),Te.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 Fe=yo(xe);ye.add(Fe.id);let Be=he.get(Fe.id),De=Be?je(Be.status):false,$t=Zt(Fe),st=Fe.status==="complete"&&(ae.has(Fe.id)||De)&&!ie.has($t),Kn=In(Be,{...Fe,unread:st});ke.set(Fe.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,Fe)=>Date.parse(Fe.updatedAt)-Date.parse(xe.updatedAt));return c.current=_e,_e}),ce&&xt(we,ae),Te.length>0){for(let le of Te)le.targetKind==="module"&&ot(le.targetId,le.id);Pe().catch(()=>{});}$.current=true;},[Ne,we,x,n,Je,S,Pe,ot]),zn=ar.useCallback((m,F)=>{let P=li(m,F);if(!P)return;let G=m.containerId??m._containerId;if(G&&!S&&O(G),je(P.status)){let ce=St(we);ce.has(P.id)||(ce.add(P.id),xt(we,ce)),q(false),f.isAdmin&&N(false);}let ie=new Map(c.current.map(ce=>[ce.id,ce]));ie.set(P.id,In(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]),Tt=ar.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?In(ae,{...ae,...P}):null,Te=Se?Zt(Se):null,le=!!(Se&&Se.status==="complete"&&(ie.has(m)||ce)&&Te&&!G.has(Te)&&!g.current.has(Te)&&!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=In(ke,{...ke,...P}),xe=_e.status==="complete"&&(ie.has(m)||je(ke.status))&&!G.has(Zt(_e)),Fe={..._e,unread:xe},Be=ye.map(De=>De.id===m?Fe:De).sort((De,$t)=>Date.parse($t.updatedAt)-Date.parse(De.updatedAt));return c.current=Be,Be}),le&&Se&&Te&&g.current.add(Te),F.type==="complete"){let ye=F.data&&typeof F.data=="object"?F.data:{},ke=typeof ye.boundaryId=="string"?ye.boundaryId:he;ke&&ot(ke,m),Pe().catch(()=>{});}},[Ne,we,Pe,ot]),Jt=ar.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]);ar.useEffect(()=>{$.current=false,g.current.clear(),Z([]);for(let m of h.current.values())m.close();h.current.clear(),S&&Ve();},[S,Ve]),ar.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]),ar.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]),ar.useEffect(()=>{for(let m of h.current.values())m.close();h.current.clear();},[t,n,f.containerId,Y,D]),ar.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{Tt(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,Tt,Y,D]),ar.useEffect(()=>()=>{for(let m of h.current.values())m.close();h.current.clear();},[]);let ht=ui(Q),Ce=ar.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 Xs.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:V,setForksPaused:gn,forkActivities:Q,activitySummary:ht,adminContext:f,setAdminContainer:B,trackForkActivity:zn,recordForkActivityEvent:Tt,markForkActivitySeen:Jt,refreshForkActivities:Ve,setSlotFork:Ie,clearSlotFork:mn,skipAnimationForSlot:rt,shouldSkipAnimation:pt,markRevealSeen:gt,queueBoundaryAnimation:ot,consumeBoundaryAnimation:mt,registerBoundary:$e,getBoundaryOverride:Kt,refreshModuleManifest:Pe,resetAllForks:Ce,highlightScope:Ct},children:r})}function Ee(){let e=ar.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=ar.Children.only(e);}catch{let o=ar.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:E}=e[A],U=b.left-.5,R=b.top-.5,p=b.width+1,f=b.height+1,T=Math.min(E+.5,p/2,f/2),x=xo(U,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(U-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(U-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 O=document.createElementNS(t,"path");O.setAttribute("d",x),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(S,O),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],E=i[A+1],U=b.__group,R=E.getTotalLength(),p=b.getTotalLength();if(R<=0)continue;let f=R*.35;E.setAttribute("stroke-dasharray",`${f} ${R-f}`),E.setAttribute("stroke-dashoffset","0"),a.push(E.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(U.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,E=l.height,U=Math.min(u,b/2,E/2),R=xo(w,A,b,E,U),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__namespace.default.memo(function({component:t,containerRef:n,wrapperStyle:r,hostProps:o}){return Xs.jsx("div",{ref:n,style:r,children:Xs.jsx(t,{...o})})},(e,t)=>e.component===t.component&&Si(e.hostProps,t.hostProps)),ir=class extends ar__namespace.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(),[E,U]=ar.useState(null),R=ar.useRef(null),p=ar.useRef(null),f=ar.useRef(null),T=ar.useRef(false),x=ar.useRef(null),k=ar.useRef(null),L=!!(r||o),N=ar.useRef(null);L&&!N.current&&(N.current=new Qt(e));let K=ar.useRef(o);if(K.current=o,ar.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);ar.useEffect(()=>{if(!L)return;N.current||(N.current=new Qt(e));let M=N.current,S=Object.keys(K.current||{}).map(O=>M.on(O,(...V)=>K.current?.[O]?.(...V)));return ()=>S.forEach(O=>O())},[L,e]),ar.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;ar.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(_),O=A(e),V=!O&&S;if(a.revealPending,O&&S&&(sr.add(_),b(a)),V&&p.current){let fe=wo(p.current);f.current=fe,T.current=true,`${e}${fe.length}`;}window.__FORK_REACT__=ar__namespace.default,window.__FORK_REACT_DOM__=Vs__namespace,window.__FORK_REACT_JSX__=Xs__namespace;let q=Date.now(),Q=`${l}${a.bundleUrl.replace("bundle.js","component.css")}?t=${q}`,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="+q,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;}U(()=>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]),ar.useEffect(()=>{if(!T.current||!E||!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),O=bi(M,S),V=vi(M,S),q=x.current;if(`${e}${O.length}${V.length}`,V.length>0&&q){let Q=wi(V);k.current=setTimeout(()=>{k.current=null;let Z=400;q.animate([{opacity:1},{opacity:0}],{duration:Z,fill:"forwards"}),Q.animate([{opacity:1},{opacity:0}],{duration:Z,fill:"forwards"}),setTimeout(()=>{q.remove(),Q.remove(),x.current=null,O.length>0&&(So(O));},Z);},3500);}else q&&(q.remove(),x.current=null),O.length>0&&(So(O));f.current=null,T.current=false,a&&_&&(sr.add(_),b(a),`${e}`);});});},[E]);let H={flex:1,minHeight:0,display:"flex",flexDirection:"column"};if(!a||a.status!=="complete"||!a.bundleUrl)return Xs.jsx("div",{ref:p,style:H,children:t});if(!E)return Xs.jsx("div",{ref:p,style:H,children:t});let W=t?.props??{};return Xs.jsx(ir,{slotId:e,resetKey:_,fallback:Xs.jsx("div",{ref:p,style:H,children:t}),children:Xs.jsx(xi,{component:E,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 Eo(e,t=new Set){return ar.Children.forEach(e,n=>{if(!ar.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&&Eo(r.children,t);}),t}function Ei({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 Xs.jsx(Fo,{slotId:e,githubRepo:i,shared:u,events:w,entityBindings:o,children:n});let A=Cn(e),{baseUrl:b,apiKey:E,appId:U,userId:R,userHash:p,currentContainerId:f}=Ee(),T=ar.useRef(null),x=ar.useRef(false),k=ar.useRef(null),L=ar.useRef(a);L.current=a;let N=ar.useRef(t);N.current=t;let K=ar.useRef(r);K.current=r,ar.useEffect(()=>{if(typeof process<"u")return;let W=Eo(n),M=new Set(a?Object.keys(a):[]),S=[...W].filter(O=>!M.has(O));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(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]),ar.useEffect(()=>{Ro.has(e)||(Ro.add(e),fetch(`${b}/api/v1/slots`,{method:"POST",headers:{Authorization:`Bearer ${E}`,"Content-Type":"application/json"},body:JSON.stringify({id:e,appId:U,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,E,i,U,o]);let _=ar.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=ar.useCallback((W,M)=>{let S=K.current;return !S||S.length===0?false:S.some(O=>{let[V,q]=O.split(" "),Q=M.split("?")[0];return W.toUpperCase()===V.toUpperCase()&&Q.startsWith(q)})},[]);if(ar.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:O}=M.data,V=L.current?.[S];V?(V(...O||[])):console.warn(`[ForkSlot:${e}] unknown callback: ${S}`);}else if(M.data?.type==="slot:fetch"){let{id:S,method:O,url:V,body:q}=M.data,Q=T.current?.contentWindow;if(!Q)return;let Z=O||"GET";if(!H(Z,V)){console.warn(`[ForkSlot:${e}] BLOCKED fetch #${S}: ${Z} ${V} \u2014 not in allowedFetches`),Q.postMessage({type:"slot:fetch-response",id:S,error:`Fetch not allowed: ${Z} ${V}`},"*");return}try{let ee={method:Z};q&&Z!=="GET"&&(ee.headers={"Content-Type":"application/json"},ee.body=JSON.stringify(q));let fe=await fetch(V,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:O,method:V,body:q}=M.data,Q=T.current?.contentWindow;if(!Q)return;if(!f||!U){Q.postMessage({type:"slot:fork-data-response",id:S,error:"Fork data is unavailable until appId and containerId are resolved"},"*");return}let Z=typeof O=="string"&&O.startsWith("/")?O:`/${String(O||"")}`,ee=Z.startsWith("/api/v1/data")?Z:`/api/v1/data${Z}`;try{let fe={Authorization:`Bearer ${E}`,"Content-Type":"application/json","X-Fork-App-Id":U,...ue()};R&&(fe["X-Fork-User-Id"]=R),p&&(fe["X-Fork-User-Hash"]=p);let de=typeof V=="string"?V.toUpperCase():"POST",oe=new URL(`${b}${ee}`),me={method:de,headers:fe};de==="GET"?(oe.searchParams.set("appId",U),oe.searchParams.set("containerId",f)):me.body=JSON.stringify({appId:U,containerId:f,...q&&typeof q=="object"?q:{}});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,U,E,b,p,R]),ar.useEffect(()=>{A?.bundleUrl&&x.current&&_(t||{});},[t,A?.bundleUrl,_]),!A||A.status!=="complete"||!A.bundleUrl)return `${e}${A?.status||"none"}${A?.bundleUrl||"none"}`,Xs.jsx(Xs.Fragment,{children:n});`${e}${A.bundleUrl}`;let j=`${b}${A.bundleUrl.replace("/bundle.js","/host")}`;return Xs.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 Xs.jsxs("svg",{viewBox:"320 95 270 345",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:e,...t,children:[Xs.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"}),Xs.jsx("path",{stroke:"currentColor",strokeWidth:"30",strokeLinejoin:"round",strokeLinecap:"round",d:"M387.096 174.735v188"}),Xs.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"}),Xs.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"}),Xs.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 Io=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]=ar.useState(false),[i,a]=ar.useState(false),[l,u]=ar.useState(null),[w,A]=ar.useState(null),[b,E]=ar.useState(null),U=ar.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,U.current+40)):j,M=k?46:40,S=L?[K,_].filter(Boolean).join(" "):_i(n,t)??"Fork this app",O=L?`${K}:${_??""}`:"idle",V=(t||n?.state==="complete"&&n.unreadCompletedCount>0)&&!L;ar.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),E(te),()=>{te.remove(),E(null);}},[]),ar.useEffect(()=>{x&&(U.current=H);},[H,x]),ar.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),U.current+40));return {key:p,label:n.label,width:pe,startedAt:Date.now()}});},[n?.label,p,f]),ar.useEffect(()=>{n&&n.unreadCompletedCount===0&&n.state!=="running"&&A(null);},[n,n?.state,n?.unreadCompletedCount]),ar.useEffect(()=>{if(!T||!k||T===l)return;let te,pe=w?.key===T?w.startedAt:Date.now(),d=()=>{let I=Date.now()-pe;if(I>=Io&&!Pi()||I>=Io*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 q=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=Xs.jsxs(Xs.Fragment,{children:[Xs.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 @@
15
15
  70% { opacity: 1; transform: scale(1.18); }
16
16
  100% { opacity: 1; transform: scale(1); }
17
17
  }
18
- `}),ls.jsxs("button",{onClick:e,onMouseEnter:()=>o(true),onMouseLeave:()=>{o(false),i(false);},onMouseDown:()=>i(true),onMouseUp:()=>i(false),style:K,title:F,"aria-label":F,children:[P&&n?ls.jsxs(ls.Fragment,{children:[I?ls.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"}}):ls.jsx("span",{"aria-hidden":true,style:U}),ls.jsxs("span",{style:X,children:[ls.jsx("span",{style:V,children:j}),O&&ls.jsx("span",{style:W,children:O})]},H)]}):ls.jsx(nn,{style:{width:24,height:24,animation:"__forkButtonLogoIn 220ms ease-out"}}),D&&ls.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 d?as.createPortal(w,d):w}var ni={status:lucideReact.Loader2,agent_message:lucideReact.MessageSquare,tool_use:lucideReact.Wrench,build_start:lucideReact.Package,build_complete:lucideReact.Check,build_error:lucideReact.AlertCircle,complete:lucideReact.Sparkles,error:lucideReact.AlertCircle},ri={status:"#60a5fa",agent_message:"#a0a0a0",tool_use:"#fbbf24",build_start:"#c084fc",build_complete:"#6b7280",build_error:"#f87171",complete:"#6b7280",error:"#f87171"},oi={read:lucideReact.FileSearch,write:lucideReact.Pencil,search:lucideReact.FileSearch,shell:lucideReact.Terminal,build:lucideReact.Package},si={read:"#60a5fa",write:"#fbbf24",search:"#60a5fa",shell:"#a78bfa",build:"#c084fc"};function Bn(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 Zr({events:e}){let t=Pn.useRef(null);return Pn.useEffect(()=>{t.current&&(t.current.scrollTop=t.current.scrollHeight);},[e]),ls.jsxs(ls.Fragment,{children:[ls.jsx("style",{children:`
18
+ `}),Xs.jsxs("button",{onClick:e,onMouseEnter:()=>o(true),onMouseLeave:()=>{o(false),a(false);},onMouseDown:()=>a(true),onMouseUp:()=>a(false),style:q,title:S,"aria-label":S,children:[L&&n?Xs.jsxs(Xs.Fragment,{children:[x?Xs.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"}}):Xs.jsx("span",{"aria-hidden":true,style:fe}),Xs.jsxs("span",{style:ee,children:[Xs.jsx("span",{style:Q,children:K}),_&&Xs.jsx("span",{style:Z,children:_})]},O)]}):Xs.jsx($n,{style:{width:24,height:24,animation:"__forkButtonLogoIn 220ms ease-out"}}),V&&Xs.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?Vs.createPortal(me,b):me}var ji={status:lucideReact.Loader2,agent_message:lucideReact.MessageSquare,tool_use:lucideReact.Wrench,build_start:lucideReact.Package,build_complete:lucideReact.Check,build_error:lucideReact.AlertCircle,complete:lucideReact.Sparkles,error:lucideReact.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:lucideReact.FileSearch,write:lucideReact.Pencil,search:lucideReact.FileSearch,shell:lucideReact.Terminal,build:lucideReact.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=ar.useRef(null);return ar.useEffect(()=>{t.current&&(t.current.scrollTop=t.current.scrollHeight);},[e]),Xs.jsxs(Xs.Fragment,{children:[Xs.jsx("style",{children:`
19
19
  @keyframes __fork-spin {
20
20
  from { transform: rotate(0deg); }
21
21
  to { transform: rotate(360deg); }
@@ -33,8 +33,8 @@
33
33
  .__fork-stream::-webkit-scrollbar-thumb:hover {
34
34
  background: rgba(255, 255, 255, 0.3);
35
35
  }
36
- `}),ls.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&&ls.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",color:"#6b7280",fontSize:"11px"},children:[ls.jsx(lucideReact.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,s=n.type==="complete"||n.type==="error"||n.type==="build_complete"||n.type==="build_error",i=o&&!s&&(n.type==="status"||n.type==="tool_use"||n.type==="build_start"),l=ni[n.type]||lucideReact.Code,u=ri[n.type]||"#9ca3af";if(n.type==="tool_use"){let h=String(n.data.category||"");l=oi[h]||lucideReact.Wrench,u=si[h]||"#fbbf24";}return i?l=lucideReact.Loader2:!o&&n.type==="status"&&(l=lucideReact.Check,u="#4ade80"),ls.jsxs("div",{style:{display:"flex",gap:"6px",marginBottom:"6px",lineHeight:1.625},children:[ls.jsx(l,{style:{width:"12px",height:"12px",marginTop:"2px",flexShrink:0,color:u,...i?{animation:"__fork-spin 1s linear infinite"}:{}}}),ls.jsx("span",{style:{color:o&&!s?"#d1d5db":"#6b7280",wordBreak:"break-all"},children:Bn(n)})]},r)})]})]})}var ai=0;function li(e){let t=/^data:([^;,]+);base64,(.+)$/.exec(e);return t?{mediaType:t[1],data:t[2]}:null}function ci(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 Qr(e){if(!e.type.startsWith("image/"))return null;let t;try{t=await ci(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)),s=document.createElement("canvas");s.width=Math.max(1,Math.round(n*o)),s.height=Math.max(1,Math.round(r*o));let i=s.getContext("2d");if(!i)return null;i.fillStyle="#ffffff",i.fillRect(0,0,s.width,s.height),i.drawImage(t,0,0,s.width,s.height);let l=s.toDataURL("image/png");l.length>2e6&&(l=s.toDataURL("image/jpeg",.85));let u=li(l);return u?{id:`img-${++ai}-${Date.now().toString(36)}`,dataUrl:l,mediaType:u.mediaType,data:u.data}:null}function eo(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 s=o.getAsFile();s&&n.push(s);}}return n}var ui="rgba(59, 130, 246, 0.16)",di="1px solid #3b82f6";function fi(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 to(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 s=o.displayName||o.name;if(s&&!/^(styled|ForwardRef|Anonymous)/.test(s))return s}else if(typeof o=="object"&&o!==null){let s=o.displayName||o.render?.displayName||o.render?.name;if(s)return s}n=n.return,r++;}}function pi(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 s=Array.from(n.classList).filter(i=>!/[[\]:]/.test(i)).slice(0,2);if(s.length>0)o+="."+s.map(i=>CSS.escape(i)).join(".");else if(n.parentElement){let i=Array.from(n.parentElement.children).filter(l=>l.tagName===n.tagName);i.length>1&&(o+=`:nth-of-type(${i.indexOf(n)+1})`);}t.unshift(o),n=n.parentElement,r++;}return t.join(" > ")}function mi(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 gi(e){let t=e.getBoundingClientRect(),n=(e.textContent??"").replace(/\s+/g," ").trim(),r={tag:e.tagName.toLowerCase(),selector:pi(e),html:mi(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 s=to(e);return s&&(r.componentName=s),r}function an(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: ${ui}`,`border: ${di}`,"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 s=null,i=false,l=()=>{s=null,n.style.display="none",r.style.display="none";},u=g=>{let S=g.getBoundingClientRect();n.style.display="block",n.style.left=`${S.left}px`,n.style.top=`${S.top}px`,n.style.width=`${S.width}px`,n.style.height=`${S.height}px`;let I=to(g),m=g.tagName.toLowerCase();g.id?m+=`#${g.id}`:g.classList.length>0&&(m+=`.${Array.from(g.classList).slice(0,2).join(".")}`),m.length>42&&(m=m.slice(0,41)+"\u2026"),r.textContent=I?`${m} \xB7 ${I} \xB7 ${Math.round(S.width)}\xD7${Math.round(S.height)}`:`${m} \xB7 ${Math.round(S.width)}\xD7${Math.round(S.height)}`,r.style.display="block";let P=S.top>=30?S.top-26:Math.max(4,S.top+4);r.style.top=`${P}px`,r.style.left=`${Math.max(4,Math.min(S.left,window.innerWidth-320))}px`;},h=(g,S)=>{let I=document.elementFromPoint(g,S);return !I||I===document.documentElement||I===document.body||fi(I)?null:I},b=g=>{let S=h(g.clientX,g.clientY);if(!S){l();return}S!==s&&(s=S,u(S));},d=()=>{s&&u(s);},k=g=>{let S=h(g.clientX,g.clientY);if(!S)return;g.preventDefault(),g.stopPropagation();let I=gi(S);f(),e.onPick(I);},R=g=>{h(g.clientX,g.clientY)&&(g.preventDefault(),g.stopPropagation());},v=g=>{g.key==="Escape"&&(g.preventDefault(),g.stopPropagation(),f(),e.onCancel());};function f(){i||(i=true,document.removeEventListener("mousemove",b,true),document.removeEventListener("click",k,true),document.removeEventListener("mousedown",R,true),document.removeEventListener("mouseup",R,true),document.removeEventListener("keydown",v,true),document.removeEventListener("scroll",d,true),window.removeEventListener("resize",d),t.remove(),o.remove());}return document.addEventListener("mousemove",b,true),document.addEventListener("click",k,true),document.addEventListener("mousedown",R,true),document.addEventListener("mouseup",R,true),document.addEventListener("keydown",v,true),document.addEventListener("scroll",d,true),window.addEventListener("resize",d),{stop:f}}function ro(){if(typeof window>"u")return null;let e=window;return e.SpeechRecognition||e.webkitSpeechRecognition||null}function oo(){return ro()!==null}function so(e){let t=ro();if(!t)return null;let n=true,r="",o=null,s=0,i=0,l=()=>{let u=new t;u.lang=typeof navigator<"u"&&navigator.language||"en-US",u.continuous=true,u.interimResults=true,u.onresult=h=>{let b="";for(let d=h.resultIndex;d<h.results.length;d++){let k=h.results[d],R=k[0]?.transcript??"";k.isFinal?r+=R:b+=R;}n&&e.onText(r,b);},u.onerror=h=>{let b=String(h?.error??"");if(b==="no-speech"||b==="aborted")return;n=false;let d=b==="not-allowed"||b==="service-not-allowed"?"not-allowed":b==="network"?"network":"other";e.onError(d);},u.onend=()=>{if(!n)return;let h=Date.now();if(h-s<1e3){if(i++,i>2){n=false,e.onError("other");return}}else i=0;s=h;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 lo=35,Ei="Setting up environment",Ri="Built Custom Feature",jn=360,Tt=380;function Kn(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 Ii(e){return e.length<=lo?e:e.slice(0,lo-3).trimEnd()+"..."}function Ci({events:e}){let[t,n]=Pn.useState("Setting up environment..."),[r,o]=Pn.useState(true),s=Pn.useRef(t),i=Pn.useRef(false);return Pn.useEffect(()=>{if(!i.current){for(let u of e)if(u.type==="status"&&String(u.data.message||"").includes("Agent started")){i.current=true;break}}let l="Setting up environment...";if(i.current)for(let u=e.length-1;u>=0;u--){let h=e[u];if(h.type==="tool_use"||h.type==="build_start"||h.type==="build_complete"){l=Ii(Bn(h));break}}if(l!==s.current){o(false);let u=setTimeout(()=>{n(l),s.current=l,o(true);},200);return ()=>clearTimeout(u)}},[e]),ls.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 Mi({children:e}){let[t,n]=Pn.useState(null);return Pn.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?as.createPortal(e,t):null}function dn({state:e,fork:t,events:n,error:r,runs:o={},slotId:s,targetId:i,targetLabel:l,historyMode:u="slot",onSubmit:h,onUndo:b,onClose:d,baseUrl:k,apiKey:R,userId:v,userHash:f,appId:g,embedded:S=false,completeVariant:I="bubble"}){let[m,P]=Pn.useState(""),[L,j]=Pn.useState([]),[O,N]=Pn.useState(false),[oe,Y]=Pn.useState(false),[_,F]=Pn.useState(false),[H,D]=Pn.useState(false),[K,V]=Pn.useState(false),[W,X]=Pn.useState(false),[U,C]=Pn.useState(false),[M,w]=Pn.useState(false),[p,$]=Pn.useState(false),[x,q]=Pn.useState(null),[re,Ae]=Pn.useState(false),[Te,Ue]=Pn.useState([]),[Se,te]=Pn.useState(null),[se,lt]=Pn.useState(false),[$e,ke]=Pn.useState(false),[hn,Bt]=Pn.useState(false),[yn,Dt]=Pn.useState(null),[ge,ct]=Pn.useState(null),[tt,jt]=Pn.useState(false),[bt,ut]=Pn.useState(false),[Be,Xe]=Pn.useState(""),wt=Pn.useRef(null),[Kt,Fe]=Pn.useState(null),[xe,dt]=Pn.useState(false),[Ie,zt]=Pn.useState(null),[Ne,ft]=Pn.useState([]),[kn,bn]=Pn.useState(0),[c,y]=Pn.useState(null),[A,z]=Pn.useState(false),Q=Pn.useRef(false),Z=Pn.useRef(null),ne=Pn.useRef(null),[ie,be]=Pn.useState([]),[ce,me]=Pn.useState(null),[ae,de]=Pn.useState(false),we=Pn.useRef(null),[fe,Ee]=Pn.useState(false),Pe=Pn.useRef(null),Le=Pn.useRef(""),[pt,Wt]=Pn.useState(null),qe=Pn.useRef(null),ir=Pn.useRef(null),[Bo,ar]=Pn.useState(false),[Do,lr]=Pn.useState(false),[jo,cr]=Pn.useState(false),[Ko,ur]=Pn.useState(null),{resetAllForks:zo,adminContext:He,setAdminContainer:Wo,currentContainerId:dr,forksPaused:mt,setForksPaused:Jo,forkActivities:fr,markForkActivitySeen:pr}=ve(),Jt=He.containerId??dr,Vt=!!(He.isAdmin&&xe),Vo=!!(He.containerId??dr),[mr,gr]=Pn.useState(false),Oe=Ie!==null,hr=Pn.useRef(d);Pn.useEffect(()=>{hr.current=d;});let wn=Pn.useRef(null),Xt=Pn.useRef(false),yr=typeof window<"u"&&"documentPictureInPicture"in window,Xo=async()=>{if(!(!yr||Oe))try{let a=await window.documentPictureInPicture.requestWindow({width:jn,height:640});a.document.body.style.margin="0",a.document.body.style.padding="0",a.document.body.style.height="100vh",a.document.body.style.overflow="hidden",a.document.body.style.background="#ffffff";try{let T=document.adoptedStyleSheets??[];T.length>0&&(a.document.adoptedStyleSheets=[...T]);}catch{}a.addEventListener("pagehide",()=>{wn.current=null,zt(null),Xt.current||hr.current(),Xt.current=!1;},{once:!0}),wn.current=a,zt(a);}catch(a){console.warn("[Fork] PiP open failed:",a);}},qo=()=>{Ie&&(Xt.current=true,Ie.close());};Pn.useEffect(()=>()=>{Xt.current=true,wn.current?.close();},[]);let vt=i??s??"";(l||vt).replace(/[-_]+/g," ").replace(/\b\w/g,a=>a.toUpperCase());let qt=Pn.useRef(""),St=()=>{let a={Authorization:`Bearer ${R}`,...pe()};return g&&(a["X-Fork-App-Id"]=g),v&&(a["X-Fork-User-Id"]=v),f&&(a["X-Fork-User-Hash"]=f),a},gt=S?true:oe&&!_,Ft=c?o[c]??null:null,vn=c?Ne.find(a=>a.id===c)??null:null,Go=vn?(a=>a==="pending"||a==="running"||a==="building")(vn.status):false,De=c?Ft?.state??(Go?"running":null):A?e:null,ht=c?Ft?.events??[]:A?n:[],Yo=c?Ft?.state==="error"?Ft.error:null:A&&e==="error"?r:null,Sn=c?Ft?.fork??null:A?t:null,Zo=Object.values(o).filter(a=>a.state!=="running").length,kr=c?!!fr.find(a=>a.id===c)?.unread:false;Pn.useEffect(()=>{c&&kr&&pr(c);},[c,kr,pr]);let Qo=ht.find(a=>{let T=a.data;return a.type==="status"&&T.summary})?.data?.summary||Sn?.summary||Ei,nt=ht.find(a=>{let T=a.data;return (a.type==="status"||a.type==="complete")&&typeof T?.estimateMinutes=="number"})?.data?.estimateMinutes??Sn?.estimateMinutes;Pn.useEffect(()=>{if(u==="none"){N(true);return}if(!k||!R)return;if(!c){j([]),N(true);return}let a=new AbortController;return fetch(`${k}/api/v1/forks/${encodeURIComponent(c)}/messages`,{headers:St(),signal:a.signal}).then(T=>T.ok?T.json():[]).then(T=>{if(a.signal.aborted)return;let B=[];for(let G of T){let le=G.forkId??c;if(G.role==="user"){let je=(G.attachments??[]).filter(Me=>Me&&typeof Me.mediaType=="string"&&typeof Me.data=="string").map(Me=>({dataUrl:`data:${Me.mediaType};base64,${Me.data}`}));B.push({type:"user",text:G.content,forkId:le,timestamp:G.timestamp,attachments:je.length>0?je:void 0,selectedElement:G.selectedElement?{label:an(G.selectedElement)}:void 0});}else B.push({type:"applied",text:G.content,forkId:le,timestamp:G.timestamp});}j(B),N(true);}).catch(()=>{a.signal.aborted||N(true);}),()=>{a.abort();}},[R,g,k,u,c,He.containerId,f,v,t?.id,t?.completedAt]),Pn.useEffect(()=>{if(u==="none"||!k||!R||!se)return;if(!Se){ft([]);return}let a=new AbortController,T=new URLSearchParams({container_id:Se});return fetch(`${k}/api/v1/forks?${T.toString()}`,{headers:St(),signal:a.signal}).then(B=>B.ok?B.json():{forks:[]}).then(B=>{a.signal.aborted||ft(B.forks??[]);}).catch(()=>{}),()=>{a.abort();}},[R,g,k,u,Se,se,t?.id,t?.completedAt,Zo,kn,He.containerId,f,v]),Pn.useEffect(()=>{e==="complete"&&w(false);},[e]);let br=Ne.some(a=>a.status==="pending"||a.status==="running"||a.status==="building");Pn.useEffect(()=>{if(!br||!k||!R||!Se)return;let a=new URLSearchParams({container_id:Se}),T=St(),G=setInterval(async()=>{try{let le=await fetch(`${k}/api/v1/forks?${a.toString()}`,{headers:T});if(!le.ok)return;let je=await le.json();ft(je.forks??[]);}catch{}},3e3);return ()=>clearInterval(G)},[br,k,R,g,Se]),Pn.useEffect(()=>{if(S&&u==="none"){Ue([]),te(null),lt(true),dt(false);return}if(He.isAdmin){Fe(null),Ue(He.containers.map(a=>({id:a.id,name:a.name,createdAt:"",hasAccess:true,isPrimary:a.isPrimary}))),te(He.containerId??null),dt(true),lt(true);return}Jt?(Ue([{id:Jt,name:"Primary container",createdAt:""}]),te(Jt)):(Ue([]),te(null)),lt(true),dt(false);},[R,Jt,k,S,u,He.isAdmin,He.containerId,He.containers]);let Gt=Pn.useRef(void 0);Pn.useEffect(()=>{if(se){if(Gt.current===void 0){Gt.current=Se;return}Gt.current!==Se&&(Gt.current=Se,j([]),N(false));}},[Se,se]);let Yt=Pn.useRef(null);Pn.useEffect(()=>{if(!$e)return;let a=B=>{if(!Yt.current)return;let G=typeof B.composedPath=="function"?B.composedPath():[];Yt.current.contains(B.target)||G.includes(Yt.current)||ke(false);},T=B=>{B.key==="Escape"&&ke(false);};return document.addEventListener("mousedown",a,true),document.addEventListener("keydown",T,true),()=>{document.removeEventListener("mousedown",a,true),document.removeEventListener("keydown",T,true);}},[$e]),Pn.useEffect(()=>{if(S||!gt||_||Oe||ae)return;let a=T=>{(typeof T.composedPath=="function"?T.composedPath():[]).some(le=>le instanceof Element&&le.hasAttribute("data-fork-panel-host"))||(F(true),Y(false),setTimeout(()=>d(),Tt));};return document.addEventListener("mousedown",a,true),()=>{document.removeEventListener("mousedown",a,true);}},[S,gt,_,Oe,ae,d]),Pn.useEffect(()=>{$e||(ut(false),Xe(""));},[$e]),Pn.useEffect(()=>{bt&&(wt.current?.focus(),wt.current?.select());},[bt]),Pn.useEffect(()=>{if(S)return;let a=requestAnimationFrame(()=>Y(true));return ()=>cancelAnimationFrame(a)},[S]),Pn.useEffect(()=>{let a=S||Oe;if((a||gt)&&(e==="prompting"||e==="complete")){let T=setTimeout(()=>Z.current?.focus(),a?100:Tt+100);return ()=>clearTimeout(T)}},[gt,S,Oe,e]);let wr=Pn.useRef(new Set);Pn.useEffect(()=>{for(let a of Object.values(o)){if(a.state!=="complete"||a.events.length===0)continue;let T=`${a.forkId}:${a.fork.completedAt??""}`;if(wr.current.has(T))continue;wr.current.add(T);let G=a.events.find(le=>le.type==="complete")?.data?.summary||a.fork.summary||Ri;j(le=>{let je=[...le].reverse().find(Me=>Me.forkId===a.forkId);return je?.type==="applied"&&je.text===G?le:[...le,{type:"applied",text:G,forkId:a.forkId,timestamp:a.fork.completedAt??new Date().toISOString()}]});}},[o]),Pn.useEffect(()=>{De==="complete"&&qt.current&&(P(""),setTimeout(()=>Z.current?.focus(),200));},[De]),Pn.useEffect(()=>{ne.current&&(ne.current.scrollTop=ne.current.scrollHeight);},[L,e]),Pn.useEffect(()=>{let a=Z.current;a&&(a.style.height="auto",a.style.height=Math.min(a.scrollHeight,160)+"px");},[m]);let Ge=a=>{Wt(a),qe.current&&clearTimeout(qe.current),qe.current=setTimeout(()=>{qe.current=null,Wt(null);},3200);},vr=async a=>{if(a.length===0)return;let T=4-ie.length;if(T<=0){Ge(`Up to ${4} images per prompt`);return}a.length>T&&Ge(`Up to ${4} images per prompt`);let G=(await Promise.all(a.slice(0,T).map(Qr))).filter(le=>le!==null);G.length!==0&&(be(le=>[...le,...G].slice(0,4)),Z.current?.focus());},Sr=()=>{we.current?.stop(),we.current=null,de(false);},es=()=>{if(ae){Sr();return}de(true),Ge("Click an element on the page \xB7 Esc to cancel"),we.current=no({onPick:a=>{we.current=null,de(false),me(a),Z.current?.focus();},onCancel:()=>{we.current=null,de(false);}});},Fr=()=>{Pe.current?.stop(),Pe.current=null,Ee(false);},ts=()=>{if(fe){Fr();return}if(!oo()){Ge("Voice input is coming soon for this browser");return}let a=m.length>0&&!m.endsWith(" ")?m+" ":m;Le.current=a;let T=so({onText:(B,G)=>{P(Le.current+B+G);},onError:B=>{Pe.current=null,Ee(false),Ge(B==="not-allowed"?"Microphone access is blocked":B==="network"?"Voice input is coming soon for this browser":"Voice input stopped");}});if(!T){Ge("Voice input is coming soon for this browser");return}Pe.current=T,Ee(true);};Pn.useEffect(()=>()=>{we.current?.stop(),Pe.current?.stop(),qe.current&&clearTimeout(qe.current);},[]);let yt=!!(m.trim()||ie.length>0),xr=()=>{if(!yt)return;fe&&Fr(),ae&&Sr();let a=m.trim()||"See the attached screenshot.";qt.current=a;let T={};ie.length>0&&(T.attachments=ie.map(({mediaType:G,data:le})=>({mediaType:G,data:le}))),ce&&(T.selectedElement=ce);let B=A||!c;B?(T.forceNew=true,Q.current=true,A||z(true)):T.forkId=c,B||j(G=>[...G,{type:"user",text:a,forkId:c,attachments:ie.length>0?ie.map(le=>({dataUrl:le.dataUrl})):void 0,selectedElement:ce?{label:an(ce)}:void 0}]),h(a,vt,Se,T),P(""),be([]),me(null);};Pn.useEffect(()=>{if(Q.current){if(e==="error"){Q.current=false;return}t?.id&&(y(t.id),z(false),Q.current=false);}},[t?.id,e]);let Ar=Pn.useRef(new Set);Pn.useEffect(()=>{t?.id&&(Q.current||e!=="running"&&e!=="complete"||Ar.current.has(t.id)||(Ar.current.add(t.id),y(a=>a??t.id),z(false)));},[t?.id,e]);let Er=a=>{Wo(a.container.id,a.container.name),te(a.container.id),Ue(T=>{let B=T.filter(G=>G.id!==a.container.id);return [{...a.container,isPrimary:true,hasAccess:true},...B.map(G=>({...G,isPrimary:false}))]}),y(null),z(false),Q.current=false,j([]),N(false),qt.current="";},ns=async a=>{if(!(!Vt||ge)){ct(a),Fe(null);try{let T=await fetch(`${k}/api/v1/admin/containers/${encodeURIComponent(a)}/primary`,{method:"POST",headers:St()});if(!T.ok){let B=await T.json().catch(()=>({}));throw new Error(B.error||`API error: ${T.status}`)}Er(await T.json()),ke(!1);}catch(T){Fe(T instanceof Error?T.message:String(T));}finally{ct(null);}}},Rr=async a=>{if(!Vt||ge)return;let T=a.trim();if(T){ct("__new__"),Fe(null);try{let B=await fetch(`${k}/api/v1/admin/containers`,{method:"POST",headers:{...St(),"Content-Type":"application/json"},body:JSON.stringify({name:T})});if(!B.ok){let G=await B.json().catch(()=>({}));throw new Error(G.error||`API error: ${B.status}`)}Er(await B.json()),ut(!1),Xe(""),ke(!1);}catch(B){Fe(B instanceof Error?B.message:String(B));}finally{ct(null);}}},Ir=async()=>{if(!(!b||p||!vt)){$(true);try{(await b(vt,c))?.removed?(j([]),y(null),z(!1),Q.current=!1):j(T=>{let B=[...T];return B.length>=2&&B[B.length-1]?.type==="applied"?B.splice(-2,2):B.length>=1&&B[B.length-1]?.type==="applied"&&B.splice(-1,1),B}),bn(T=>T+1);}catch{}finally{$(false);}}},Cr=()=>{if(S){d();return}if(Oe){Ie?.close();return}F(true),Y(false),setTimeout(()=>d(),Tt);},rs=S||Oe?{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:jn,maxWidth:"100vw",background:"#ffffff",boxShadow:gt?"-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:gt?"translateX(0)":"translateX(100%)",transition:`transform ${Tt}ms cubic-bezier(0.22, 1, 0.36, 1), box-shadow ${Tt}ms ease`,display:"flex",flexDirection:"column",fontFamily:'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'},Mr=Te.find(a=>a.id===Se)?.name??(se?"Fork":"Loading..."),xt=A?[]:c?L.filter(a=>a.forkId===c||a.forkId==null):L,Fn=ls.jsxs(ls.Fragment,{children:[ls.jsx("style",{children:`
36
+ `}),Xs.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&&Xs.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",color:"#6b7280",fontSize:"11px"},children:[Xs.jsx(lucideReact.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]||lucideReact.Code,u=zi[n.type]||"#9ca3af";if(n.type==="tool_use"){let w=String(n.data.category||"");l=Ki[w]||lucideReact.Wrench,u=Wi[w]||"#fbbf24";}return a?l=lucideReact.Loader2:!o&&n.type==="status"&&(l=lucideReact.Check,u="#4ade80"),Xs.jsxs("div",{style:{display:"flex",gap:"6px",marginBottom:"6px",lineHeight:1.625},children:[Xs.jsx(l,{style:{width:"12px",height:"12px",marginTop:"2px",flexShrink:0,color:u,...a?{animation:"__fork-spin 1s linear infinite"}:{}}}),Xs.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);},E=f=>{let T=w(f.clientX,f.clientY);if(!T)return;f.preventDefault(),f.stopPropagation();let x=ta(T);p(),e.onPick(x);},U=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",E,true),document.removeEventListener("mousedown",U,true),document.removeEventListener("mouseup",U,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",E,true),document.addEventListener("mousedown",U,true),document.addEventListener("mouseup",U,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 E=w.results[b],U=E[0]?.transcript??"";E.isFinal?r+=U:A+=U;}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]=ar.useState("Setting up environment..."),[r,o]=ar.useState(true),i=ar.useRef(t),a=ar.useRef(false);return ar.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]),Xs.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]=ar.useState(null);return ar.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?Vs.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:E,onSetForkDisabled:U,onRenameFork:R,onClose:p,baseUrl:f,apiKey:T,userId:x,userHash:k,appId:L,embedded:N=false,completeVariant:K="bubble"}){let[_,H]=ar.useState(""),[j,W]=ar.useState([]),[M,S]=ar.useState(false),[O,V]=ar.useState(false),[q,Q]=ar.useState(false),[Z,ee]=ar.useState(false),[fe,de]=ar.useState(false),[oe,me]=ar.useState(false),[te,pe]=ar.useState(false),[d,I]=ar.useState(false),[h,c]=ar.useState(false),[g,$]=ar.useState(null),[B,D]=ar.useState(null),[Y,ft]=ar.useState(null),[ve,Pe]=ar.useState(false),[gn,Ie]=ar.useState(null),[mn,rt]=ar.useState(0),[pt,gt]=ar.useState(null),[ot,mt]=ar.useState(null),[$e,Kt]=ar.useState(null),[Ge,Wt]=ar.useState(false),[It,Ct]=ar.useState(null),[Ne,we]=ar.useState(""),[Je,Ve]=ar.useState(false),[zn,Tt]=ar.useState(false),[Jt,ht]=ar.useState([]),[Ce,m]=ar.useState(null),[F,P]=ar.useState(false),[G,ie]=ar.useState(false),[ae,ce]=ar.useState(false),[Se,Te]=ar.useState(null),[le,he]=ar.useState(null),[ye,ke]=ar.useState(false),[_e,xe]=ar.useState(false),[Fe,Be]=ar.useState(""),De=ar.useRef(null),[$t,st]=ar.useState(null),[Kn,Wn]=ar.useState(false),[Mt,Pr]=ar.useState(null),[Pt,hn]=ar.useState([]),[Ss,xs]=ar.useState(0),[re,Ye]=ar.useState(null),[Xe,Ze]=ar.useState(false),it=ar.useRef(false),_t=ar.useRef(null),yn=ar.useRef(null),[at,Jn]=ar.useState([]),[yt,Vn]=ar.useState(null),[kt,kn]=ar.useState(false),Lt=ar.useRef(null),[Ht,Xn]=ar.useState(false),Vt=ar.useRef(null),_r=ar.useRef(""),[Lr,Hr]=ar.useState(null),Ot=ar.useRef(null),Or=ar.useRef(null),[Fs,Ur]=ar.useState(false),[As,Nr]=ar.useState(false),[Rs,Br]=ar.useState(false),[Es,Dr]=ar.useState(null),{resetAllForks:Is,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]=ar.useState(false),Ke=Mt!==null,Vr=ar.useRef(p);ar.useEffect(()=>{Vr.current=p;});let qn=ar.useRef(null),wn=ar.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=()=>{Mt&&(wn.current=true,Mt.close());};ar.useEffect(()=>()=>{wn.current=true,qn.current?.close();},[]);let Xt=a??i??"";(l||Xt).replace(/[-_]+/g," ").replace(/\b\w/g,s=>s.toUpperCase());let Sn=ar.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:O&&!q,Gt=re?o[re]??null:null,Yt=re?Pt.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;ar.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;ar.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 Qe=(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:Qe.length>0?Qe: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]),ar.useEffect(()=>{if(u==="none"||!f||!T||!F)return;if(!Ce){hn([]);return}let s=new AbortController,v=new URLSearchParams({container_id:Ce});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,Ce,F,t?.id,t?.completedAt,Hs,Ss,ze.containerId,k,x,mn]),ar.useEffect(()=>{e==="complete"&&I(false);},[e]);let Gr=Pt.some(s=>s.status==="pending"||s.status==="running"||s.status==="building");ar.useEffect(()=>{if(!Gr||!f||!T||!Ce)return;let s=new URLSearchParams({container_id:Ce}),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,Ce]),ar.useEffect(()=>{if(N&&u==="none"){ht([]),m(null),P(true),Wn(false);return}if(ze.isAdmin){st(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=ar.useRef(void 0);ar.useEffect(()=>{if(F){if(xn.current===void 0){xn.current=Ce;return}xn.current!==Ce&&(xn.current=Ce,W([]),S(false));}},[Ce,F]);let Fn=ar.useRef(null);ar.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]),ar.useEffect(()=>{if(N||!Nt||q||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),V(false),setTimeout(()=>p(),on));};return document.addEventListener("mousedown",s,true),()=>{document.removeEventListener("mousedown",s,true);}},[N,Nt,q,Ke,kt,p]),ar.useEffect(()=>{G||(xe(false),Be(""));},[G]),ar.useEffect(()=>{_e&&(De.current?.focus(),De.current?.select());},[_e]),ar.useEffect(()=>{if(N)return;let s=requestAnimationFrame(()=>V(true));return ()=>cancelAnimationFrame(s)},[N]),ar.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=ar.useRef(new Set);ar.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(Qe=>Qe.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]),ar.useEffect(()=>{qe==="complete"&&Sn.current&&(H(""),setTimeout(()=>_t.current?.focus(),200));},[qe]),ar.useEffect(()=>{yn.current&&(yn.current.scrollTop=yn.current.scrollHeight);},[j,e]),ar.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);};ar.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||Ze(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,Ce,v),H(""),Jn([]),Vn(null);};ar.useEffect(()=>{if(it.current){if(e==="error"){it.current=false;return}t?.id&&(Ye(t.id),Ze(false),it.current=false);}},[t?.id,e]);let no=ar.useRef(new Set);ar.useEffect(()=>{t?.id&&(it.current||e!=="running"&&e!=="complete"||no.current.has(t.id)||(no.current.add(t.id),Ye(s=>s??t.id),Ze(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}))]}),Ye(null),Ze(false),it.current=false,W([]),S(false),Sn.current="";},Bs=async s=>{if(!(!vn||le)){he(s),st(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){st(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__"),st(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){st(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([]),Ye(null),Ze(!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;Ie(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){Ie(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),Ie(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),Ie(/not found/i.test(C)?`Error: ${C} for this fork`:`Error: ${C}`),D(z=>z&&z.forkId===s?null:z);}finally{ft(null);}}};ar.useEffect(()=>{if(!$e)return;let s=o[$e.tipId]?.state;s==="complete"?(Kt(null),rt(v=>v+1)):s==="error"&&(mt($e.forkId),Ie(`Error: couldn't ${$e.disabling?"disable":"re-enable"} this fork \u2014 ${o[$e.tipId]?.error??"the rewrite failed"}. Nothing was changed.`),Kt(null),rt(v=>v+1));},[o,$e]);let io=async()=>{if(!(!R||!It||Je)){Ve(true),Ie(null);try{await R(It,Ne.trim()),Ct(null),we(""),rt(s=>s+1);}catch(s){Ie(s instanceof Error?s.message:String(s));}finally{Ve(false);}}},ao=async(s,v)=>{if(!(!U||Ge)){gt(null),Ie(null),mt(null),Wt(true);try{let C=await U(s,v);C?.agentic&&C?.fork?.id?Kt({forkId:s,tipId:C.fork.id,disabling:v}):rt(z=>z+1);}catch(C){let z=C instanceof Error?C.message:String(C);mt(s),/not found/i.test(z)?(Ie("Error: this fork no longer exists \u2014 refreshing the list."),setTimeout(()=>{mt(null),Ie(null),rt(se=>se+1);},1800)):Ie(`Error: ${z}`);}finally{Wt(false);}}},lo=async s=>{if(!(!E||!B?.plan||ve)){Pe(true),Ie(null);try{let v=await E({forkId:B.forkId,promptId:B.promptId,mode:B.mode,strategy:s});D(null),v.agentic?(Ze(!1),Ye(v.fork.id)):v.removed&&(W([]),Ye(null)),rt(C=>C+1);}catch(v){Ie(v instanceof Error?v.message:String(v));}finally{Pe(false);}}},co=()=>{if(N){p();return}if(Ke){Mt?.close();return}Q(true),V(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=Jt.find(s=>s.id===Ce)?.name??(F?"Fork":"Loading..."),Ks=[...Pt].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?Xs.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:[Xs.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?Xs.jsxs(Xs.Fragment,{children:[Xs.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."]}),Xs.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flexWrap:"wrap",gap:8,marginTop:10},children:[Xs.jsx("button",{onClick:()=>{D(null),Ie(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")&&Xs.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)`}),Xs.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"})]})]}):Xs.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?Xs.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=Xs.jsxs(Xs.Fragment,{children:[Xs.jsx("style",{children:`
38
38
  @keyframes __fork-pulse {
39
39
  0%, 100% { opacity: 1; }
40
40
  50% { opacity: 0.5; }
@@ -43,6 +43,10 @@
43
43
  from { transform: rotate(0deg); }
44
44
  to { transform: rotate(360deg); }
45
45
  }
46
+ @keyframes __fork-expand-in {
47
+ from { opacity: 0; max-height: 0; transform: translateY(-4px); }
48
+ to { opacity: 1; max-height: 220px; transform: none; }
49
+ }
46
50
  .__fork-panel ::-webkit-scrollbar { width: 2px; }
47
51
  .__fork-panel ::-webkit-scrollbar-track { background: transparent; }
48
52
  .__fork-panel ::-webkit-scrollbar-thumb {
@@ -56,9 +60,9 @@
56
60
  scrollbar-width: thin;
57
61
  scrollbar-color: rgba(0, 0, 0, 0.12) transparent;
58
62
  }
59
- `}),ls.jsxs("div",{className:"__fork-panel",style:rs,children:[ls.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:[ls.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0,flex:1},children:[c||A?ls.jsxs(ls.Fragment,{children:[ls.jsx("button",{onClick:()=>{y(null),z(false),Q.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:a=>{a.currentTarget.style.background="#f9fafb",a.currentTarget.style.borderColor="#d1d5db";},onMouseLeave:a=>{a.currentTarget.style.background="#ffffff",a.currentTarget.style.borderColor="#e5e7eb";},title:"Back to all forks",children:ls.jsx(lucideReact.ChevronLeft,{style:{width:15,height:15}})}),(()=>{let a=c?o[c]:void 0,B=(a?a.events.find(G=>{let le=G.data;return G.type==="status"&&le.summary})?.data?.summary??a.fork.summary:void 0)||vn?.summary||"New Feature";return ls.jsx("span",{style:{fontSize:13.5,fontWeight:700,color:"#111827",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0},title:B,children:B})})()]}):ls.jsxs(ls.Fragment,{children:[ls.jsx("span",{onDoubleClick:async a=>{if(a.stopPropagation(),!re&&confirm("Kill all forks in this container?")){Ae(true);try{let T=await zo();`${T?.deleted??0}`,ft([]),y(null),z(!1),P("");}catch(T){console.error("[Fork] Reset failed:",T);}finally{Ae(false);}}},style:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:4,margin:-4,cursor:"pointer",flexShrink:0},children:ls.jsx(nn,{style:{width:16,height:16,color:"#111827",pointerEvents:"none"}})}),De==="running"?ls.jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:Qo}):Te.length===0&&!Vt?ls.jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:"Fork"}):Vt?ls.jsxs("div",{ref:Yt,style:{position:"relative",minWidth:0,display:"inline-flex"},children:[ls.jsxs("button",{type:"button",onClick:()=>{ke(a=>!a);},onMouseEnter:()=>Bt(true),onMouseLeave:()=>Bt(false),"aria-haspopup":"menu","aria-expanded":$e,style:{display:"inline-flex",alignItems:"center",gap:4,padding:"3px 6px",border:"1px solid transparent",borderRadius:6,background:hn||$e?"#f3f4f6":"transparent",fontSize:13,fontWeight:600,color:"#111827",fontFamily:"inherit",cursor:"pointer",maxWidth:180,minWidth:0,transition:"background-color 0.12s"},children:[ls.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:Mr}),ls.jsx(lucideReact.ChevronDown,{style:{width:12,height:12,color:"#6b7280",flexShrink:0,transform:$e?"rotate(180deg)":void 0,transition:"transform 0.15s"}})]}),$e&&ls.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:[Te.map(a=>{let T=a.id===Se,B=yn===a.id,G=ge===a.id;return ls.jsxs("button",{type:"button",role:"menuitem",onMouseEnter:()=>Dt(a.id),onMouseLeave:()=>Dt(null),onClick:()=>{a.id!==Se&&ns(a.id);},disabled:!!ge,style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"6px 8px",border:"none",background:B?"#f3f4f6":"transparent",borderRadius:4,fontSize:13,fontFamily:"inherit",color:"#111827",cursor:ge?"default":"pointer",textAlign:"left",fontWeight:T?600:400,opacity:ge&&!G?.55:1},children:[ls.jsx("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:14,height:14,color:"#111827",flexShrink:0},children:T&&ls.jsx(lucideReact.Check,{style:{width:12,height:12}})}),ls.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:G?"Switching...":a.name})]},a.id)}),ls.jsx("div",{style:{height:1,background:"#e5e7eb",margin:"4px 0"}}),bt?ls.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"4px 4px"},children:[ls.jsx("input",{ref:wt,type:"text",value:Be,placeholder:"Container name",disabled:ge==="__new__",onChange:a=>Xe(a.target.value),onKeyDown:a=>{a.key==="Enter"?(a.preventDefault(),Rr(Be)):a.key==="Escape"&&(a.preventDefault(),a.stopPropagation(),ut(false),Xe(""));},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:a=>{a.currentTarget.style.borderColor="#111827",a.currentTarget.style.boxShadow="0 0 0 2px rgba(17,24,39,0.15)";},onBlur:a=>{a.currentTarget.style.borderColor="#d1d5db",a.currentTarget.style.boxShadow="none";}}),ls.jsx("button",{type:"button",onClick:()=>{Rr(Be);},disabled:!Be.trim()||ge==="__new__",title:"Create",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:26,height:26,border:"none",borderRadius:4,background:!Be.trim()||ge==="__new__"?"#e5e7eb":"#111827",color:!Be.trim()||ge==="__new__"?"#9ca3af":"#ffffff",cursor:!Be.trim()||ge==="__new__"?"default":"pointer",flexShrink:0},children:ge==="__new__"?ls.jsx("span",{style:{width:10,height:10,border:"1.5px solid currentColor",borderTopColor:"transparent",borderRadius:"50%",animation:"__fork-spin 0.7s linear infinite"}}):ls.jsx(lucideReact.Check,{style:{width:12,height:12}})})]}):ls.jsx("button",{type:"button",role:"menuitem",onMouseEnter:()=>jt(true),onMouseLeave:()=>jt(false),onClick:()=>{ge||(Fe(null),Xe(""),ut(true));},disabled:!!ge,style:{display:"flex",alignItems:"center",width:"100%",padding:"6px 8px",border:"none",background:tt?"#f3f4f6":"transparent",borderRadius:4,fontSize:13,fontFamily:"inherit",color:"#111827",cursor:ge?"default":"pointer",textAlign:"left",opacity:ge&&ge!=="__new__"?.55:1},children:"+ New container"}),Kt&&ls.jsx("div",{style:{padding:"6px 8px",fontSize:11,lineHeight:1.35,color:"#b91c1c"},children:Kt})]})]}):ls.jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:Mr})]}),De==="running"&&ls.jsx("span",{title:nt?`Estimated ~${nt} min`:"Estimating\u2026",style:{fontSize:10,fontWeight:600,color:nt?"#111827":"#9ca3af",backgroundColor:nt?"rgba(17, 24, 39, 0.08)":"rgba(156, 163, 175, 0.12)",padding:"1px 6px",borderRadius:999,flexShrink:0,fontVariantNumeric:"tabular-nums",animation:nt?void 0:"__fork-pulse 1.4s ease-in-out infinite",minWidth:28,textAlign:"center"},children:nt?`~${nt}m`:"~ m"})]}),ls.jsxs("div",{style:{display:"flex",alignItems:"center",gap:2,flexShrink:0},children:[Vo&&ls.jsx("button",{type:"button",role:"switch","aria-checked":!mt,"aria-label":mt?"Turn Fork back on":"Turn Fork off",title:mt?"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:()=>{Jo(!mt);},onMouseEnter:()=>gr(true),onMouseLeave:()=>gr(false),style:{position:"relative",width:26,height:15,borderRadius:999,border:"none",padding:0,marginRight:6,flexShrink:0,cursor:"pointer",backgroundColor:mt?mr?"#9ca3af":"#d1d5db":mr?"#374151":"#111827",transition:"background-color 0.18s ease",outline:"none",boxSizing:"border-box"},children:ls.jsx("span",{"aria-hidden":true,style:{position:"absolute",top:2,left:mt?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)"}})}),!S&&ls.jsxs(ls.Fragment,{children:[yr&&ls.jsx("button",{onClick:Oe?qo:Xo,onMouseEnter:()=>V(true),onMouseLeave:()=>V(false),title:Oe?"Redock to sidebar":"Pop out into window",style:{padding:6,borderRadius:6,color:K?"#4b5563":"#9ca3af",backgroundColor:K?"#f3f4f6":"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"background-color 0.15s, color 0.15s"},children:Oe?ls.jsx(lucideReact.PictureInPicture,{style:{width:16,height:16}}):ls.jsx(lucideReact.PictureInPicture2,{style:{width:16,height:16}})}),ls.jsx("button",{onClick:Cr,onMouseEnter:()=>D(true),onMouseLeave:()=>D(false),style:{padding:6,borderRadius:6,color:H?"#4b5563":"#9ca3af",backgroundColor:H?"#f3f4f6":"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"background-color 0.15s, color 0.15s"},children:ls.jsx(lucideReact.X,{style:{width:16,height:16}})})]})]})]}),ls.jsxs("div",{ref:ne,style:{flex:1,overflowY:"auto",minHeight:0,display:"flex",flexDirection:"column"},children:[!c&&!A&&ls.jsxs("div",{style:{display:"flex",flexDirection:"column"},children:[Ne.length===0&&ls.jsx("div",{style:{padding:"24px 20px",textAlign:"center",fontSize:13,color:"#6b7280"},children:"No forks yet. Describe a feature below to start one."}),Ne.length>0&&ls.jsx("div",{style:{display:"flex",flexDirection:"column"},children:Ne.map((a,T)=>{let B=o[a.id],le=(B?B.events.find(Ye=>{let ss=Ye.data;return Ye.type==="status"&&ss.summary})?.data?.summary??B.fork.summary:void 0)||a.summary||"Untitled fork",je=!!fr.find(Ye=>Ye.id===a.id)?.unread,Me=o[a.id]?.state??a.status,os=Me==="running"||Me==="building"||Me==="pending";return ls.jsxs(Pn.Fragment,{children:[ls.jsxs("button",{onClick:()=>{z(false),y(a.id);},style:{textAlign:"left",padding:"12px 16px",background:"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"flex-start",gap:8,width:"100%",transition:"background 0.12s",fontFamily:"inherit"},onMouseEnter:Ye=>{Ye.currentTarget.style.background="#fafafa";},onMouseLeave:Ye=>{Ye.currentTarget.style.background="transparent";},children:[je&&ls.jsx("span",{"aria-label":"Not viewed yet",title:"Not viewed yet",style:{width:7,height:7,borderRadius:"50%",backgroundColor:"#111827",flexShrink:0,marginTop:5}}),ls.jsxs("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:5,alignItems:"flex-start"},children:[ls.jsx("span",{style:{fontSize:13.5,fontWeight:600,color:"#111827",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},children:le}),ls.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:a.targetId})]}),os&&ls.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:[ls.jsx("span",{style:{width:6,height:6,borderRadius:"50%",background:"#f59e0b",animation:"__fork-pulse 1.4s ease-in-out infinite"}}),"Running"]}),Me==="error"&&ls.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"}),ls.jsx("span",{style:{fontSize:11.5,color:"#9ca3af",flexShrink:0,marginTop:2},children:Kn(a.updatedAt)})]}),T<Ne.length-1&&ls.jsx("div",{style:{height:1,background:"#f3f4f6",margin:"0 16px",flexShrink:0}})]},a.id)})})]}),c&&xt.length>0&&ls.jsx("div",{style:{margin:"16px 16px 0 16px"},children:xt.map((a,T)=>ls.jsx("div",{style:{marginBottom:T<xt.length-1?12:0},children:a.type==="user"?ls.jsx("div",{style:{display:"flex",justifyContent:"flex-end"},children:ls.jsxs("div",{style:{backgroundColor:"#f3f4f6",borderRadius:12,padding:"10px 14px",fontSize:13,color:"#374151",lineHeight:1.5,maxWidth:"85%"},children:[a.attachments&&a.attachments.length>0&&ls.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:4,marginBottom:6},children:a.attachments.map((B,G)=>ls.jsx("img",{src:B.dataUrl,alt:"attachment",style:{maxWidth:150,maxHeight:110,borderRadius:8,border:"1px solid #e5e7eb",display:"block",objectFit:"cover"}},G))}),a.selectedElement&&ls.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:[ls.jsx(lucideReact.MousePointer2,{style:{width:10,height:10,flexShrink:0}}),ls.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},children:a.selectedElement.label})]}),a.text]})}):I==="item"&&T===xt.length-1?ls.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:12,padding:12,borderRadius:8,border:"1px solid #e4e4e7",background:"#ffffff"},children:[ls.jsx("div",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,flexShrink:0,borderRadius:6,background:"#f4f4f5",color:"#0a0a0a"},children:ls.jsx(lucideReact.BadgeCheck,{style:{width:16,height:16}})}),ls.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:2,flex:1,minWidth:0},children:[ls.jsx("div",{style:{fontSize:13,fontWeight:500,color:"#0a0a0a",lineHeight:1.3},children:"Feature applied"}),ls.jsx("div",{style:{fontSize:13,color:"#71717a",lineHeight:1.4},children:a.text})]}),b&&De!=="running"&&ls.jsx("button",{onClick:B=>{B.stopPropagation(),Ir();},disabled:p,style:{padding:"4px 10px",fontSize:12,fontWeight:500,borderRadius:6,border:"1px solid #e4e4e7",background:"#ffffff",color:"#0a0a0a",cursor:p?"default":"pointer",opacity:p?.4:1,height:28,flexShrink:0},children:"Undo"})]}):ls.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:[ls.jsx("span",{style:{width:7,height:7,borderRadius:"50%",background:"#94a3b8",flexShrink:0}}),ls.jsx("span",{style:{fontSize:12.5,fontWeight:600,color:"#334155",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:a.text}),a.timestamp&&ls.jsx("span",{style:{fontSize:11,color:"#9ca3af",flexShrink:0},children:Kn(a.timestamp)}),b&&T===xt.length-1&&De!=="running"&&ls.jsxs("button",{onClick:B=>{B.stopPropagation(),Ir();},onMouseEnter:()=>q(T),onMouseLeave:()=>q(null),disabled:p,style:{position:"relative",padding:2,borderRadius:4,border:"none",background:x===T?"rgba(0,0,0,0.06)":"transparent",color:x===T?"#6b7280":"#d1d5db",cursor:p?"default":"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"color 0.15s, background 0.15s",opacity:p?.4:1,flexShrink:0},children:[ls.jsx(lucideReact.Undo2,{style:{width:12,height:12}}),x===T&&ls.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"})]})]})},T))}),De==="running"&&ls.jsx("div",{style:{margin:"12px 16px 0 16px"},children:ls.jsxs("div",{onClick:()=>w(!M),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:[ls.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"9px 12px"},children:[ls.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[ls.jsx("span",{style:{width:7,height:7,borderRadius:"50%",background:"#f59e0b",flexShrink:0,animation:"__fork-pulse 1.4s ease-in-out infinite"}}),ls.jsx(Ci,{events:ht},c??"__compose__")]}),ls.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,flexShrink:0,marginLeft:8},children:[ht[0]?.timestamp&&ls.jsx("span",{style:{fontSize:11,color:"#9ca3af"},children:Kn(ht[0].timestamp)}),ls.jsx("div",{style:{color:"#9ca3af",transition:"transform 0.2s ease",transform:M?"rotate(180deg)":"rotate(0deg)",display:"flex"},children:ls.jsx(lucideReact.ChevronDown,{style:{width:14,height:14}})})]})]}),ls.jsx("div",{style:{maxHeight:M?320:0,opacity:M?1:0,transition:"max-height 0.35s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.25s ease",overflow:"hidden"},children:ls.jsx("div",{style:{background:"#1a1a2e",borderTop:"1px solid #e5e7eb",maxHeight:320,overflowY:"auto"},children:ls.jsx(Zr,{events:ht},c??"__compose__")})})]})}),De==="error"&&ls.jsxs("div",{style:{padding:"20px 16px",textAlign:"center"},children:[ls.jsx("div",{style:{width:36,height:36,backgroundColor:"#fef2f2",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto 10px auto"},children:ls.jsx(lucideReact.X,{style:{width:18,height:18,color:"#ef4444"}})}),ls.jsx("p",{style:{fontSize:12,color:"#6b7280",marginBottom:10,maxWidth:260,margin:"0 auto 10px auto"},children:Yo??r}),ls.jsxs("button",{onClick:()=>{let a=Sn?.prompt||qt.current;a&&h(a,vt);},onMouseEnter:()=>C(true),onMouseLeave:()=>C(false),style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 12px",borderRadius:8,fontSize:12,fontWeight:500,color:"#111827",backgroundColor:U?"#e5e7eb":"#f3f4f6",border:"none",cursor:"pointer",transition:"background-color 0.15s",fontFamily:"inherit"},children:[ls.jsx(lucideReact.RotateCcw,{style:{width:12,height:12}})," Try Again"]})]})]}),!(c?De==="running":A&&e==="running")&&ls.jsxs("div",{style:{padding:"8px 12px 12px 12px",borderTop:"1px solid rgba(229, 231, 235, 0.6)",flexShrink:0,position:"relative"},children:[pt&&ls.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:jn-32,overflow:"hidden",textOverflow:"ellipsis",pointerEvents:"none",zIndex:5},children:pt}),ls.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.04), 0 4px 14px -6px rgba(0, 0, 0, 0.08)"},children:[(ie.length>0||ce)&&ls.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:6,alignItems:"center"},children:[ie.map(a=>ls.jsxs("div",{onMouseEnter:()=>ur(a.id),onMouseLeave:()=>ur(null),style:{position:"relative",width:44,height:44,borderRadius:8,overflow:"hidden",border:"1px solid #e5e7eb",flexShrink:0},children:[ls.jsx("img",{src:a.dataUrl,alt:"attachment",style:{width:"100%",height:"100%",objectFit:"cover",display:"block"}}),ls.jsx("button",{onClick:()=>be(T=>T.filter(B=>B.id!==a.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:Ko===a.id?1:.6,transition:"opacity 0.12s"},children:ls.jsx(lucideReact.X,{style:{width:9,height:9}})})]},a.id)),ce&&ls.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:[ls.jsx(lucideReact.MousePointer2,{style:{width:11,height:11,flexShrink:0}}),ls.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},children:an(ce)}),ls.jsx("button",{onClick:()=>me(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:ls.jsx(lucideReact.X,{style:{width:10,height:10}})})]})]}),ls.jsx("textarea",{ref:Z,value:m,onChange:a=>P(a.target.value),onPaste:a=>{let T=eo(a.nativeEvent);T.length>0&&(a.preventDefault(),vr(T));},onKeyDown:a=>{a.key==="Enter"&&!a.shiftKey&&(a.preventDefault(),xr()),a.key==="Escape"&&!S&&Cr();},placeholder:c?"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"}}),ls.jsxs("div",{style:{display:"flex",alignItems:"center",gap:2},children:[ls.jsx("button",{onClick:()=>ir.current?.click(),onMouseEnter:()=>ar(true),onMouseLeave:()=>ar(false),title:"Attach an image",style:{width:28,height:28,borderRadius:8,display:"flex",alignItems:"center",justifyContent:"center",background:Bo?"rgba(0, 0, 0, 0.05)":"transparent",color:"#6b7280",border:"none",cursor:"pointer",padding:0,flexShrink:0,transition:"background 0.12s"},children:ls.jsx(lucideReact.ImagePlus,{style:{width:16,height:16}})}),ls.jsx("button",{onClick:es,onMouseEnter:()=>lr(true),onMouseLeave:()=>lr(false),title:ae?"Cancel element selection":"Select an element on the page",style:{width:28,height:28,borderRadius:8,display:"flex",alignItems:"center",justifyContent:"center",background:ae?"#eef2ff":Do?"rgba(0, 0, 0, 0.05)":"transparent",color:ae?"#4f46e5":"#6b7280",border:"none",cursor:"pointer",padding:0,flexShrink:0,transition:"background 0.12s, color 0.12s"},children:ls.jsx(lucideReact.MousePointer2,{style:{width:16,height:16}})}),ls.jsx("div",{style:{flex:1}}),ls.jsx("button",{onClick:ts,onMouseEnter:()=>cr(true),onMouseLeave:()=>cr(false),title:fe?"Stop voice input":"Voice input",style:{width:28,height:28,borderRadius:8,display:"flex",alignItems:"center",justifyContent:"center",background:fe?"#fef2f2":jo?"rgba(0, 0, 0, 0.05)":"transparent",color:fe?"#dc2626":"#6b7280",border:"none",cursor:"pointer",padding:0,flexShrink:0,transition:"background 0.12s, color 0.12s",animation:fe?"__fork-pulse 1.4s ease-in-out infinite":void 0},children:ls.jsx(lucideReact.Mic,{style:{width:16,height:16}})}),ls.jsx("button",{onClick:xr,disabled:!yt,onMouseEnter:()=>X(true),onMouseLeave:()=>X(false),title:"Send",style:{width:28,height:28,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",color:"#ffffff",opacity:yt?1:.35,transform:W&&yt?"scale(1.08)":"scale(1)",background:yt?"#111827":"rgba(0, 0, 0, 0.12)",border:"none",cursor:yt?"pointer":"default",flexShrink:0,transition:"transform 0.15s, opacity 0.15s, background 0.15s",padding:0,marginLeft:4},children:ls.jsx(lucideReact.ArrowUp,{style:{width:14,height:14}})})]})]}),ls.jsx("input",{ref:ir,type:"file",accept:"image/*",multiple:true,style:{display:"none"},onChange:a=>{let T=Array.from(a.target.files??[]);a.target.value="",vr(T);}})]})]})]});return S?Fn:Oe&&Ie?as.createPortal(Fn,Ie.document.body):ls.jsx(Mi,{children:Fn})}function uo(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 zn(e){let{apiKey:t,userId:n,userHash:r,baseUrl:o,appId:s,adminContext:i,refreshModuleManifest:l,queueBoundaryAnimation:u,trackForkActivity:h,recordForkActivityEvent:b}=ve(),[d,k]=Pn.useState({}),[R,v]=Pn.useState(null),[f,g]=Pn.useState("idle"),[S,I]=Pn.useState(false),[m,P]=Pn.useState(null),L=Pn.useRef(new Map),j=Pn.useCallback((C,M)=>{k(w=>{let $=w[C]??{forkId:C,state:"running",fork:M.fork,events:[],error:null};return {...w,[C]:{...$,...M}}});},[]),O=Pn.useCallback((C,M)=>{k(w=>{let p=w[C];return p?{...w,[C]:{...p,events:[...p.events,M]}}:w});},[]),N=Pn.useCallback(C=>{let M=L.current.get(C);M&&(M.close(),L.current.delete(C));},[]),oe=Pn.useCallback(()=>{g("prompting"),P(null),I(false),v(null);},[]),Y=Pn.useCallback(()=>{g("idle"),I(false),P(null),v(null);for(let C of L.current.values())C.close();L.current.clear(),k({});},[]),_=Pn.useCallback((C,M)=>{N(C.id);let w=new URLSearchParams({key:t});n&&w.set("userId",n),r&&w.set("userHash",r),i.isAdmin&&i.containerId&&w.set("containerId",i.containerId);let p=new EventSource(`${o}/api/v1/forks/${C.id}/events?${w.toString()}`);L.current.set(C.id,p),p.onmessage=$=>{try{let x=JSON.parse($.data);if(b(C.id,x),O(C.id,x),x.type==="complete"){let q=x.data;u(M,C.id),l().catch(()=>{}).finally(()=>{let re={...C,status:"complete",moduleUrl:q.moduleUrl,cssUrls:q.cssUrls,summary:q.summary,completedAt:new Date().toISOString()};j(C.id,{state:"complete",fork:re}),N(C.id);});}else if(x.type==="error"){let q=x.data;j(C.id,{state:"error",error:q.error||"Unknown error"}),N(C.id);}}catch{}},p.onerror=()=>{let $={Authorization:`Bearer ${t}`,...pe()};n&&($["X-Fork-User-Id"]=n),r&&($["X-Fork-User-Hash"]=r),fetch(`${o}/api/v1/forks/${C.id}`,{headers:$}).then(x=>x.json()).then(x=>{x.status==="complete"?(u(M,x.id),l().catch(()=>{}),j(C.id,{state:"complete",fork:x})):x.status==="error"?j(C.id,{state:"error",fork:x,error:x.error||"Fork generation failed"}):j(C.id,{fork:x});}).catch(()=>{j(C.id,{state:"error",error:"Connection lost"});}),N(C.id);};},[i.containerId,i.isAdmin,t,O,o,N,u,b,l,j,r,n]),F=Pn.useCallback(async(C,M,w)=>{try{if(!s)throw new Error("ForkProvider requires appId for module boundary prompts.");I(!0),P(null),v(null);let p;if(w?.forkId){let $={prompt:C};n&&($.userId=n),r&&($.userHash=r),w?.attachments?.length&&($.attachments=w.attachments),w?.selectedElement&&($.selectedElement=w.selectedElement);let x=await fetch(`${o}/api/v1/forks/${encodeURIComponent(w.forkId)}/prompts`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`,...pe()},body:JSON.stringify($)});if(!x.ok){let q=await x.json().catch(()=>({}));throw new Error(q.error||`API error: ${x.status}`)}p=await x.json();}else {let $={userId:n,prompt:C,boundaryId:e,appId:s};M?$.containerId=M:i.isAdmin&&i.containerId&&($.containerId=i.containerId),r&&($.userHash=r),w?.forceNew&&($.force_new=!0),w?.attachments?.length&&($.attachments=w.attachments),w?.selectedElement&&($.selectedElement=w.selectedElement);let x=await fetch(`${o}/api/v1/forks`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`,...pe()},body:JSON.stringify($)});if(!x.ok){let q=await x.json().catch(()=>({}));throw new Error(q.error||`API error: ${x.status}`)}p=await x.json();}k($=>({...$,[p.id]:{forkId:p.id,state:"running",fork:p,events:[],error:null}})),v(p.id),I(!1),h(p,{targetKind:"module",targetId:e}),_(p,p.boundaryId??e);}catch(p){P(p.message),I(false);}},[i.containerId,i.isAdmin,t,s,o,e,_,h,r,n]),H=Pn.useCallback(async C=>{try{let M={Authorization:`Bearer ${t}`,...pe()};n&&(M["X-Fork-User-Id"]=n),r&&(M["X-Fork-User-Hash"]=r);let w=await fetch(`${o}/api/v1/forks/${C}`,{headers:M});if(!w.ok)return;let p=await w.json(),$=p.boundaryId??e;if(h(p,{targetKind:"module",targetId:$}),p.status==="complete"){k(x=>({...x,[p.id]:{forkId:p.id,state:"complete",fork:p,events:[],error:null}})),v(p.id);return}if(p.status==="error"){k(x=>({...x,[p.id]:{forkId:p.id,state:"error",fork:p,events:[],error:p.error||"Fork generation failed"}})),v(p.id);return}if(p.status!=="pending"&&p.status!=="running"&&p.status!=="building")return;k(x=>({...x,[p.id]:{forkId:p.id,state:"running",fork:p,events:[],error:null}})),v(p.id),_(p,$);}catch{}},[t,o,e,_,h,r,n]),D=Pn.useCallback(async C=>{try{if(!s)throw new Error("ForkProvider requires appId for boundary undo.");let M={userId:n,boundaryId:e,appId:s};r&&(M.userHash=r),C&&(M.fork_id=C);let w=await fetch(`${o}/api/v1/forks/undo`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(M)});if(!w.ok){let $=await w.json().catch(()=>({}));throw new Error($.error||`API error: ${w.status}`)}let p=await w.json();if(await l().catch(()=>{}),p.removed)k($=>{let x={};for(let[q,re]of Object.entries($))(re.fork.boundaryId??e)!==e&&(x[q]=re);return x}),v(null),g("prompting");else if(p.fork){let $=p.fork;j($.id,{state:"complete",fork:$}),v($.id);}return p}catch(M){throw P(M.message),M}},[t,s,o,e,l,j,r,n]),K=R?d[R]??null:null,V=S?"running":m?"error":K?K.state:f,W=K?.fork??null,X=K?.events??[],U=m??K?.error??null;return {state:V,fork:W,events:X,error:U,runs:d,open:oe,close:Y,startFork:F,undoFork:D,adoptRunningFork:H}}var Pi=0;function mo(e){let{state:t,fork:n,events:r,error:o,runs:s,open:i,close:l,startFork:u,undoFork:h,adoptRunningFork:b}=zn(e),[d,k]=Pn.useState(false),R=Pn.useRef(null),v=Pn.useRef(t),f=Pn.useCallback(()=>{R.current!==null&&(clearTimeout(R.current),R.current=null);},[]),g=Pn.useCallback(()=>{f(),k(true),i();},[f,i]),S=Pn.useCallback(()=>{f(),k(false),l();},[f,l]),I=Pn.useCallback(async P=>{f(),k(true),await b(P);},[b,f]),m=Object.values(s).filter(P=>P.state==="running").length;return Pn.useEffect(()=>{let P=v.current;v.current=t,t==="complete"&&P==="running"&&d&&m===0&&(f(),R.current=setTimeout(()=>{R.current=null,k(false),l();},Pi)),(t==="running"||t==="prompting")&&f();},[t,d,m,f,l]),Pn.useEffect(()=>f,[f]),{state:t,fork:n,events:r,error:o,runs:s,isOpen:d,open:g,close:S,submit:u,undo:h,adoptRunningFork:I}}function Wn(){let{apiKey:e,userId:t,userHash:n,baseUrl:r,adminContext:o,setSlotFork:s,clearSlotFork:i,skipAnimationForSlot:l,trackForkActivity:u,recordForkActivityEvent:h}=ve(),[b,d]=Pn.useState({}),[k,R]=Pn.useState(null),[v,f]=Pn.useState("idle"),[g,S]=Pn.useState(false),[I,m]=Pn.useState(null),P=Pn.useRef(new Map),L=Pn.useCallback((U,C)=>{d(M=>{let p=M[U]??{forkId:U,state:"running",fork:C.fork,events:[],error:null};return {...M,[U]:{...p,...C}}});},[]),j=Pn.useCallback((U,C)=>{d(M=>{let w=M[U];return w?{...M,[U]:{...w,events:[...w.events,C]}}:M});},[]),O=Pn.useCallback(U=>{let C=P.current.get(U);C&&(C.close(),P.current.delete(U));},[]),N=Pn.useCallback(()=>{f("prompting"),m(null),S(false),R(null);},[]),oe=Pn.useCallback(()=>{f("idle"),S(false),m(null),R(null);for(let U of P.current.values())U.close();P.current.clear(),d({});},[]),Y=Pn.useCallback((U,C)=>{O(U.id);let M=new URLSearchParams({key:e});t&&M.set("userId",t),n&&M.set("userHash",n),o.isAdmin&&o.containerId&&M.set("containerId",o.containerId);let w=new EventSource(`${r}/api/v1/forks/${U.id}/events?${M.toString()}`);P.current.set(U.id,w),w.onmessage=p=>{try{let $=JSON.parse(p.data);if(h(U.id,$),j(U.id,$),$.type==="complete"){let x=$.data,q={...U,status:"complete",bundleUrl:x.bundleUrl,summary:x.summary,revealPending:!0,completedAt:new Date().toISOString()};L(U.id,{state:"complete",fork:q});let re=C??U.slotId;re&&x.bundleUrl&&s(re,q),O(U.id);}else if($.type==="error"){let x=$.data;L(U.id,{state:"error",error:x.error||"Unknown error"}),O(U.id);}}catch{}},w.onerror=()=>{let p={Authorization:`Bearer ${e}`,...pe()};t&&(p["X-Fork-User-Id"]=t),n&&(p["X-Fork-User-Hash"]=n),fetch(`${r}/api/v1/forks/${U.id}`,{headers:p}).then($=>$.json()).then($=>{if($.status==="complete"){L(U.id,{state:"complete",fork:{...$,revealPending:true}});let x=C??$.slotId;x&&$.bundleUrl&&s(x,{...$,revealPending:true});}else $.status==="error"?L(U.id,{state:"error",fork:$,error:$.error||"Fork generation failed"}):L(U.id,{fork:$});}).catch(()=>{L(U.id,{state:"error",error:"Connection lost"});}),O(U.id);};},[o.containerId,o.isAdmin,e,j,r,O,h,s,L,n,t]),_=Pn.useCallback(async(U,C,M,w)=>{try{S(!0),m(null),R(null);let p;if(w?.forkId){let x={prompt:U};t&&(x.userId=t),n&&(x.userHash=n),w?.attachments?.length&&(x.attachments=w.attachments),w?.selectedElement&&(x.selectedElement=w.selectedElement);let q=await fetch(`${r}/api/v1/forks/${encodeURIComponent(w.forkId)}/prompts`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,...pe()},body:JSON.stringify(x)});if(!q.ok){let re=await q.json().catch(()=>({}));throw new Error(re.error||`API error: ${q.status}`)}p=await q.json();}else {let x={userId:t,prompt:U};C&&(x.slotId=C),M?x.containerId=M:o.isAdmin&&o.containerId&&(x.containerId=o.containerId),n&&(x.userHash=n),w?.forceNew&&(x.force_new=!0),w?.attachments?.length&&(x.attachments=w.attachments),w?.selectedElement&&(x.selectedElement=w.selectedElement);let q=await fetch(`${r}/api/v1/forks`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,...pe()},body:JSON.stringify(x)});if(!q.ok){let re=await q.json().catch(()=>({}));throw new Error(re.error||`API error: ${q.status}`)}p=await q.json();}d(x=>({...x,[p.id]:{forkId:p.id,state:"running",fork:p,events:[],error:null}})),R(p.id),S(!1);let $=C??p.slotId;$&&u(p,{targetKind:"slot",targetId:$}),Y(p,C);}catch(p){m(p.message),S(false);}},[o.containerId,o.isAdmin,e,r,Y,u,n,t]),F=Pn.useCallback(async U=>{try{let C={Authorization:`Bearer ${e}`,...pe()};t&&(C["X-Fork-User-Id"]=t),n&&(C["X-Fork-User-Hash"]=n);let M=await fetch(`${r}/api/v1/forks/${U}`,{headers:C});if(!M.ok)return;let w=await M.json();if(w.slotId&&u(w,{targetKind:"slot",targetId:w.slotId}),w.status==="complete"){d(p=>({...p,[w.id]:{forkId:w.id,state:"complete",fork:w,events:[],error:null}})),R(w.id);return}if(w.status==="error"){d(p=>({...p,[w.id]:{forkId:w.id,state:"error",fork:w,events:[],error:w.error||"Fork generation failed"}})),R(w.id);return}if(w.status!=="pending"&&w.status!=="running"&&w.status!=="building")return;d(p=>({...p,[w.id]:{forkId:w.id,state:"running",fork:w,events:[],error:null}})),R(w.id),Y(w,w.slotId);}catch{}},[e,r,Y,u,n,t]),H=Pn.useCallback(async U=>{try{let C={userId:t,slotId:U};n&&(C.userHash=n);let M=await fetch(`${r}/api/v1/forks/undo`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify(C)});if(!M.ok){let p=await M.json().catch(()=>({}));throw new Error(p.error||`API error: ${M.status}`)}let w=await M.json();if(l(U),w.removed)i(U),d(p=>{let $={};for(let[x,q]of Object.entries(p))q.fork.slotId!==U&&($[x]=q);return $}),R(null),f("prompting");else if(w.fork){s(U,w.fork);let p=w.fork;L(p.id,{state:"complete",fork:p});}return w}catch(C){throw m(C.message),C}},[e,t,n,r,i,s,l,L]),D=k?b[k]??null:null,K=g?"running":I?"error":D?D.state:v,V=D?.fork??null,W=D?.events??[],X=I??D?.error??null;return {state:K,fork:V,events:W,error:X,runs:b,open:N,close:oe,startFork:_,undoFork:H,adoptRunningFork:F}}var Hi=0;function yo(){let{state:e,fork:t,events:n,error:r,runs:o,open:s,close:i,startFork:l,undoFork:u,adoptRunningFork:h}=Wn(),[b,d]=Pn.useState(false),k=Pn.useRef(null),R=Pn.useRef(e),v=Pn.useCallback(()=>{k.current!==null&&(clearTimeout(k.current),k.current=null);},[]),f=Pn.useCallback(()=>{v(),d(true),s();},[v,s]),g=Pn.useCallback(()=>{v(),d(false),i();},[v,i]),S=Pn.useCallback(async m=>{v(),d(true),await h(m);},[h,v]),I=Object.values(o).filter(m=>m.state==="running").length;return Pn.useEffect(()=>{let m=R.current;R.current=e,e==="complete"&&m==="running"&&b&&I===0&&(v(),k.current=setTimeout(()=>{k.current=null,d(false),i();},Hi)),(e==="running"||e==="prompting")&&v();},[e,b,I,v,i]),Pn.useEffect(()=>v,[v]),{state:e,fork:t,events:n,error:r,runs:o,isOpen:b,open:f,close:g,submit:l,undo:u,adoptRunningFork:S}}var Oi=new Set(["pending","running","building"]);function Vn(e){let t=uo(e),n=yo(),r=mo(t.type==="boundary"?t.id:""),{baseUrl:o,apiKey:s,userId:i,userHash:l,appId:u,activitySummary:h,forkActivities:b}=ve(),d=t.type==="slot"?n:r,k=t.type==="slot"?"slot":"boundary",R=t.id,v=t.title,f=t.type==="slot"?"slot":"module",g=b.find(L=>L.targetKind===f&&L.targetId===t.id&&Oi.has(L.status)),S=b.find(L=>L.targetKind===f&&L.targetId===t.id&&L.status==="complete"&&L.unread),I=Pn.useCallback(()=>{let L=g??S;if(L){d.adoptRunningFork(L.id);return}d.open();},[d,g,S]),m=Pn.useCallback((L,j,O,N)=>t.type==="slot"?n.submit(L,j??t.id,O,N):r.submit(L,O,N),[r,n,t]),P=Pn.useCallback((L,j)=>t.type==="slot"?n.undo(L??t.id):r.undo(j),[r,n,t]);return {...d,open:I,target:t,targetId:R,targetLabel:v,historyMode:k,submit:m,undo:P,buttonProps:{onClick:I,hasNotification:h.unreadCompletedCount>0,activity:h},panelProps:{state:d.state,fork:d.fork,events:d.events,error:d.error,runs:d.runs,...t.type==="slot"?{slotId:R,targetLabel:v,historyMode:k}:{targetId:R,targetLabel:v,historyMode:k},onSubmit:m,onUndo:P,onClose:d.close,baseUrl:o,apiKey:s,userId:i,userHash:l,appId:u}}}function _t(e){let{embedded:t,completeVariant:n}=e,r=Vn(e);return t?ls.jsx(dn,{...r.panelProps,embedded:true,completeVariant:n}):r.isOpen?ls.jsx(dn,{...r.panelProps,completeVariant:n}):ls.jsx(Nn,{...r.buttonProps})}function Ni({boundaryId:e,title:t}){return ls.jsx(_t,{boundaryId:e,title:t})}function qn(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 ko(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("*"),s=n.querySelectorAll("*");for(let i=0;i<o.length;i+=1)o[i].scrollTop!==0&&(s[i].scrollTop=o[i].scrollTop),o[i].scrollLeft!==0&&(s[i].scrollLeft=o[i].scrollLeft);return n}function Gn(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 s=getComputedStyle(r),i=parseFloat(s.borderTopLeftRadius)||0;t.push({tag:r.tagName,className:r.className||"",text:(r.textContent||"").slice(0,50).trim(),rect:o,borderRadius:i});}return t}function bo(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(i=>r.rect.top>=i.rect.top&&r.rect.left>=i.rect.left&&r.rect.right<=i.rect.right&&r.rect.bottom<=i.rect.bottom))){for(let i=n.length-1;i>=0;i-=1){let l=n[i];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(i,1);}n.push({rect:r.rect,borderRadius:r.borderRadius});}return n}function wo(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(i=>r.rect.top>=i.rect.top&&r.rect.left>=i.rect.left&&r.rect.right<=i.rect.right&&r.rect.bottom<=i.rect.bottom))){for(let i=n.length-1;i>=0;i-=1){let l=n[i];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(i,1);}n.push({rect:r.rect,borderRadius:r.borderRadius});}return n}function vo(e,t,n,r,o){let s=Math.max(0,Math.min(o,n/2,r/2));return s===0?`M ${e} ${t} L ${e+n} ${t} L ${e+n} ${t+r} L ${e} ${t+r} Z`:[`M ${e+s} ${t}`,`L ${e+n-s} ${t}`,`A ${s} ${s} 0 0 1 ${e+n} ${t+s}`,`L ${e+n} ${t+r-s}`,`A ${s} ${s} 0 0 1 ${e+n-s} ${t+r}`,`L ${e+s} ${t+r}`,`A ${s} ${s} 0 0 1 ${e} ${t+r-s}`,`L ${e} ${t+s}`,`A ${s} ${s} 0 0 1 ${e+s} ${t}`,"Z"].join(" ")}function Yn(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 s=[];for(let b=0;b<e.length;b+=1){let{rect:d,borderRadius:k}=e[b],R=d.left-.5,v=d.top-.5,f=d.width+1,g=d.height+1,S=Math.min(k+.5,f/2,g/2),I=vo(R,v,f,g,S),m=`__fork-glow-${b}`,P=document.createElementNS(t,"filter");P.setAttribute("id",m),P.setAttribute("x","-100%"),P.setAttribute("y","-100%"),P.setAttribute("width","300%"),P.setAttribute("height","300%");let L=document.createElementNS(t,"feGaussianBlur");L.setAttribute("in","SourceGraphic"),L.setAttribute("stdDeviation","8"),P.appendChild(L),o.appendChild(P);let j=`__fork-mask-${b}`,O=document.createElementNS(t,"mask");O.setAttribute("id",j),O.setAttribute("maskUnits","userSpaceOnUse"),O.setAttribute("x",String(R-200)),O.setAttribute("y",String(v-200)),O.setAttribute("width",String(f+400)),O.setAttribute("height",String(g+400));let N=document.createElementNS(t,"rect");N.setAttribute("x",String(R-200)),N.setAttribute("y",String(v-200)),N.setAttribute("width",String(f+400)),N.setAttribute("height",String(g+400)),N.setAttribute("fill","white"),O.appendChild(N);let oe=document.createElementNS(t,"path");oe.setAttribute("d",I),oe.setAttribute("fill","black"),O.appendChild(oe),o.appendChild(O);let Y=document.createElementNS(t,"g");Y.setAttribute("mask",`url(#${j})`),Y.setAttribute("opacity","0");let _=document.createElementNS(t,"g");_.setAttribute("filter",`url(#${m})`);let F=document.createElementNS(t,"path");F.setAttribute("d",I),F.setAttribute("fill","none"),F.setAttribute("stroke","rgba(150, 185, 220, 0.6)"),F.setAttribute("stroke-width","6"),F.setAttribute("stroke-linecap","round"),_.appendChild(F),Y.appendChild(_),r.appendChild(Y);let H=document.createElementNS(t,"path");H.setAttribute("d",I),H.setAttribute("fill","none"),H.setAttribute("stroke","rgba(150, 185, 220, 0.35)"),H.setAttribute("stroke-width","2"),H.setAttribute("stroke-linecap","round"),H.setAttribute("opacity","0"),r.appendChild(H),s.push(F,H),F.__group=Y;}n.appendChild(r),document.body.appendChild(n);let i=[];for(let b=0;b<s.length;b+=2){let d=s[b],k=s[b+1],R=d.__group;if(!R)continue;let v=k.getTotalLength(),f=d.getTotalLength();if(v<=0)continue;let g=v*.35;k.setAttribute("stroke-dasharray",`${g} ${v-g}`),k.setAttribute("stroke-dashoffset","0"),i.push(k.animate([{strokeDashoffset:0,opacity:0,offset:0},{strokeDashoffset:-0.2*v,opacity:.92,offset:.06},{strokeDashoffset:-2*v,opacity:.92,offset:.92},{strokeDashoffset:-2.25*v,opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));let S=f*.35;d.setAttribute("stroke-dasharray",`${S} ${f-S}`),d.setAttribute("stroke-dashoffset","0"),i.push(d.animate([{strokeDashoffset:0,offset:0},{strokeDashoffset:-0.2*f,offset:.06},{strokeDashoffset:-2*f,offset:.92},{strokeDashoffset:-2.25*f,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"})),i.push(R.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(h);for(let d of i)try{d.cancel();}catch{}let b=n.animate([{opacity:1},{opacity:0}],{duration:400,fill:"forwards"});b.onfinish=()=>n.remove(),window.removeEventListener("click",u);},h=setTimeout(u,14500);return setTimeout(()=>{l||window.addEventListener("click",u);},500),u}function So(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"),s=document.createElementNS(t,"filter");s.setAttribute("id","__fork-removed-shadow"),s.setAttribute("x","-10%"),s.setAttribute("y","-10%"),s.setAttribute("width","120%"),s.setAttribute("height","120%");let i=document.createElementNS(t,"feDropShadow");i.setAttribute("dx","0"),i.setAttribute("dy","1"),i.setAttribute("stdDeviation","2"),i.setAttribute("flood-color","rgba(0,0,0,0.15)"),s.appendChild(i),o.appendChild(s),r.appendChild(o);for(let{rect:l,borderRadius:u}of e){let h=document.createElementNS(t,"path");h.setAttribute("d",vo(l.left,l.top,l.width,l.height,u)),h.setAttribute("fill","none"),h.setAttribute("stroke","rgba(120, 125, 135, 0.6)"),h.setAttribute("stroke-width","1.5"),h.setAttribute("stroke-dasharray","8 4"),h.setAttribute("stroke-linecap","round"),h.setAttribute("filter","url(#__fork-removed-shadow)"),h.setAttribute("opacity","0"),r.appendChild(h),h.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 Ao(e,t){if(Bi(t.selector))return xo(e,t);let r=xo(e,t);if(r)return r;try{let s=document.querySelector(t.selector);if(s instanceof HTMLElement&&s!==e&&e.contains(s))return s}catch{}if(Fo(t.selector))try{let s=e.querySelector(t.selector);if(s instanceof HTMLElement&&s!==e)return s}catch{}if(t.textHint){let s=t.textHint.trim();if(s){let i=Qn(e,b=>b===s);if(i)return i;let l=s.toLowerCase(),u=Qn(e,b=>b.toLowerCase()===l);if(u)return u;let h=Qn(e,b=>b.toLowerCase().includes(l));if(h)return h}}let o=Di(t.selector);if(o&&o!==t.selector&&Fo(o))try{let s=e.querySelector(o);if(s instanceof HTMLElement&&s!==e)return s}catch{}return null}function Fo(e){let t=e.split(/\s+|>|~|\+/),n=t[t.length-1]??"";return /[#\[]|:not\(|:nth-/.test(n)}function xo(e,t){let n=Array.from(e.querySelectorAll("[data-fork-new]"));if(n.length===0)return null;let r=Zn(t.label),o=Zn(t.textHint);return n.find(i=>{let l=Zn(i.getAttribute("data-fork-new"));return !!l&&(l===r||l===o)})??null}function Bi(e){return e.trim()==="[data-fork-new]"}function Zn(e){return e?.trim().replace(/\s+/g," ").toLowerCase()||null}function Di(e){return e.replace(/\[class[\*~|^$]?=("[^"]*"|'[^']*'|[^\]]+)\]/g,"").replace(/\.[A-Za-z_][\w-]*/g,"").replace(/\s+/g," ").trim()}function Qn(e,t){let n=null,r=1/0,o=e.querySelectorAll("*");for(let s of o){let i=s.textContent?.trim();if(!i||!t(i))continue;let l=s.getBoundingClientRect();if(l.width<4||l.height<4)continue;let u=l.width*l.height;u<r&&(n=s,r=u);}return n}var er=2147483600,ji=1600,Ki=3e4,zi=300,Qe=10;function Wi(e){let n=getComputedStyle(e).borderTopLeftRadius;if(!n)return 4;if(n.endsWith("%")){let i=parseFloat(n);if(!Number.isFinite(i)||i<=0)return 4;let l=e.getBoundingClientRect(),u=Math.min(l.width,l.height);return Math.max(4,i/100*u)}let r=parseFloat(n);if(!Number.isFinite(r)||r<=0)return 4;let o=e.getBoundingClientRect(),s=Math.min(o.width,o.height)/2;return r>=s?s:Math.min(r,16)}function Ji(e,t,n,r){let s=window.innerWidth,i=window.innerHeight,l=e;l==="top"&&t.top<r+Qe+8?l="bottom":l==="bottom"&&i-t.bottom<r+Qe+8?l="top":l==="left"&&t.left<n+Qe+8?l="right":l==="right"&&s-t.right<n+Qe+8&&(l="left");let u=0,h=0;return l==="top"?(u=t.top-r-Qe,h=t.left+t.width/2-n/2):l==="bottom"?(u=t.bottom+Qe,h=t.left+t.width/2-n/2):l==="left"?(u=t.top+t.height/2-r/2,h=t.left-n-Qe):(u=t.top+t.height/2-r/2,h=t.right+Qe),h=Math.max(8,Math.min(h,s-n-8)),u=Math.max(8,Math.min(u,i-r-8)),{top:u,left:h,placement:l}}function Vi(e){let t=document.createElement("div");t.setAttribute("data-fork-highlight-outline","true"),t.style.cssText=["position:fixed","pointer-events:none",`z-index:${er}`,"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:${er-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:${er+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 Xi(){if(document.getElementById("__fork-highlight-keyframes"))return;let e=document.createElement("style");e.id="__fork-highlight-keyframes",e.textContent=`
63
+ `}),Xs.jsxs("div",{className:"__fork-panel",style:zs,children:[Xs.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:[Xs.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0,flex:1},children:[re||Xe?Xs.jsxs(Xs.Fragment,{children:[Xs.jsx("button",{onClick:()=>{Ye(null),Ze(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:Xs.jsx(lucideReact.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 Xs.jsx("span",{style:{fontSize:13.5,fontWeight:700,color:"#111827",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0},title:C,children:C})})()]}):Xs.jsxs(Xs.Fragment,{children:[Xs.jsx("span",{onDoubleClick:async s=>{if(s.stopPropagation(),!zn&&confirm("Kill all forks in this container?")){Tt(true);try{let v=await Is();`${v?.deleted??0}`,hn([]),Ye(null),Ze(!1),H("");}catch(v){console.error("[Fork] Reset failed:",v);}finally{Tt(false);}}},style:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:4,margin:-4,cursor:"pointer",flexShrink:0},children:Xs.jsx($n,{style:{width:16,height:16,color:"#111827",pointerEvents:"none"}})}),qe==="running"?Xs.jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:Os}):Jt.length===0&&!vn?Xs.jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:"Fork"}):vn?Xs.jsxs("div",{ref:Fn,style:{position:"relative",minWidth:0,display:"inline-flex"},children:[Xs.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:[Xs.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:uo}),Xs.jsx(lucideReact.ChevronDown,{style:{width:12,height:12,color:"#6b7280",flexShrink:0,transform:G?"rotate(180deg)":void 0,transition:"transform 0.15s"}})]}),G&&Xs.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:[Jt.map(s=>{let v=s.id===Ce,C=Se===s.id,z=le===s.id;return Xs.jsxs("button",{type:"button",role:"menuitem",onMouseEnter:()=>Te(s.id),onMouseLeave:()=>Te(null),onClick:()=>{s.id!==Ce&&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:[Xs.jsx("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:14,height:14,color:"#111827",flexShrink:0},children:v&&Xs.jsx(lucideReact.Check,{style:{width:12,height:12}})}),Xs.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:z?"Switching...":s.name})]},s.id)}),Xs.jsx("div",{style:{height:1,background:"#e5e7eb",margin:"4px 0"}}),_e?Xs.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"4px 4px"},children:[Xs.jsx("input",{ref:De,type:"text",value:Fe,placeholder:"Container name",disabled:le==="__new__",onChange:s=>Be(s.target.value),onKeyDown:s=>{s.key==="Enter"?(s.preventDefault(),oo(Fe)):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";}}),Xs.jsx("button",{type:"button",onClick:()=>{oo(Fe);},disabled:!Fe.trim()||le==="__new__",title:"Create",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:26,height:26,border:"none",borderRadius:4,background:!Fe.trim()||le==="__new__"?"#e5e7eb":"#111827",color:!Fe.trim()||le==="__new__"?"#9ca3af":"#ffffff",cursor:!Fe.trim()||le==="__new__"?"default":"pointer",flexShrink:0},children:le==="__new__"?Xs.jsx("span",{style:{width:10,height:10,border:"1.5px solid currentColor",borderTopColor:"transparent",borderRadius:"50%",animation:"__fork-spin 0.7s linear infinite"}}):Xs.jsx(lucideReact.Check,{style:{width:12,height:12}})})]}):Xs.jsx("button",{type:"button",role:"menuitem",onMouseEnter:()=>ke(true),onMouseLeave:()=>ke(false),onClick:()=>{le||(st(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"}),$t&&Xs.jsx("div",{style:{padding:"6px 8px",fontSize:11,lineHeight:1.35,color:"#b91c1c"},children:$t})]})]}):Xs.jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:uo})]}),qe==="running"&&Xs.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"})]}),Xs.jsxs("div",{style:{display:"flex",alignItems:"center",gap:2,flexShrink:0},children:[$s&&!re&&Xs.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:Xs.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&&Xs.jsxs(Xs.Fragment,{children:[Xr&&Xs.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?Xs.jsx(lucideReact.PictureInPicture,{style:{width:16,height:16}}):Xs.jsx(lucideReact.PictureInPicture2,{style:{width:16,height:16}})}),Xs.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:Xs.jsx(lucideReact.X,{style:{width:16,height:16}})})]})]})]}),Xs.jsxs("div",{ref:yn,style:{flex:1,overflowY:"auto",minHeight:0,display:"flex",flexDirection:"column"},children:[pt&&Xs.jsx("div",{onClick:()=>gt(null),style:{position:"fixed",inset:0,zIndex:10}}),!re&&!Xe&&Xs.jsxs("div",{style:{display:"flex",flexDirection:"column"},children:[Pt.length===0&&Xs.jsx("div",{style:{padding:"24px 20px",textAlign:"center",fontSize:13,color:"#6b7280"},children:"No forks yet. Describe a feature below to start one."}),Pt.length>0&&Xs.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,Qe=o[s.id]?.state??s.status,Le=Qe==="running"||Qe==="building"||Qe==="pending",Rn=!!s.revertedAt,po=!!s.disabledAt;return Xs.jsxs(ar.Fragment,{children:[Xs.jsxs("div",{style:{position:"relative"},children:[It===s.id?Xs.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"10px 16px"},children:[Xs.jsx("input",{autoFocus:true,value:Ne,disabled:Je,onChange:ne=>we(ne.target.value),onKeyDown:ne=>{ne.key==="Enter"&&io(),ne.key==="Escape"&&(Ct(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}}),Xs.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"}),Xs.jsx("button",{onClick:()=>{Ct(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"})]}):Xs.jsxs("button",{onClick:()=>{Ze(false),Ye(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&&Xs.jsx("span",{"aria-label":"Not viewed yet",title:"Not viewed yet",style:{width:7,height:7,borderRadius:"50%",backgroundColor:"#111827",flexShrink:0,marginTop:5}}),Xs.jsxs("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:5,alignItems:"flex-start"},children:[Xs.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}),Xs.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&&Xs.jsx("span",{style:{fontSize:10,fontWeight:600,color:"#9ca3af",border:"1px solid #e5e7eb",borderRadius:4,padding:"1px 5px",flexShrink:0,alignSelf:"center"},children:"removed"}),po&&!Rn&&Xs.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"}),$e?.forkId===s.id&&Xs.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:5,background:"#f3f4f6",border:"1px solid #e5e7eb",color:"#374151",borderRadius:999,padding:"2px 9px",fontSize:11,fontWeight:600,flexShrink:0},children:[Xs.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:Xs.jsx("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})}),$e.disabling?"Disabling":"Enabling"]}),Le&&Xs.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:[Xs.jsx("span",{style:{width:6,height:6,borderRadius:"50%",background:"#f59e0b",animation:"__fork-pulse 1.4s ease-in-out infinite"}}),"Running"]}),Qe==="error"&&Xs.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&&Xs.jsxs("div",{style:{position:"absolute",top:0,bottom:0,right:10,display:"flex",alignItems:"center",gap:8,pointerEvents:"none"},children:[Xs.jsx("span",{style:{fontSize:11.5,color:"#9ca3af",flexShrink:0},children:yr(s.updatedAt)}),Xs.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:Xs.jsx(lucideReact.MoreHorizontal,{style:{width:15,height:15}})})]}),pt===s.id&&Xs.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&&Xs.jsx("button",{onClick:ne=>{ne.stopPropagation(),gt(null),Ct(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"}),U&&Xs.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&&E&&Xs.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||ot===s.id||$e?.forkId===s.id)&&!re&&Xs.jsxs("div",{style:{padding:"2px 16px 12px 16px"},children:[fo,An]}),v<Pt.length-1&&Xs.jsx("div",{style:{height:1,background:"#f3f4f6",margin:"0 16px",flexShrink:0}})]},s.id)})}),!B&&!ot&&An&&Xs.jsx("div",{style:{padding:"0 16px 12px 16px"},children:An})]}),re&&jt.length>0&&Xs.jsxs("div",{style:{margin:"16px 16px 0 16px"},children:[jt.map((s,v)=>Xs.jsx("div",{style:{marginBottom:v<jt.length-1?12:0},children:s.type==="user"?Xs.jsx("div",{style:{display:"flex",justifyContent:"flex-end"},children:Xs.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&&Xs.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:4,marginBottom:6},children:s.attachments.map((C,z)=>Xs.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&&Xs.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:[Xs.jsx(lucideReact.MousePointer2,{style:{width:10,height:10,flexShrink:0}}),Xs.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?Xs.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:12,padding:12,borderRadius:8,border:"1px solid #e4e4e7",background:"#ffffff"},children:[Xs.jsx("div",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,flexShrink:0,borderRadius:6,background:"#f4f4f5",color:"#0a0a0a"},children:Xs.jsx(lucideReact.BadgeCheck,{style:{width:16,height:16}})}),Xs.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:2,flex:1,minWidth:0},children:[Xs.jsx("div",{style:{fontSize:13,fontWeight:500,color:"#0a0a0a",lineHeight:1.3},children:"Feature applied"}),Xs.jsx("div",{style:{fontSize:13,color:"#71717a",lineHeight:1.4},children:s.text})]}),A&&qe!=="running"&&Xs.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"})]}):Xs.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:[Xs.jsx("span",{style:{width:7,height:7,borderRadius:"50%",background:"#94a3b8",flexShrink:0}}),Xs.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&&Xs.jsx("span",{style:{fontSize:10,fontWeight:600,color:"#9ca3af",border:"1px solid #e5e7eb",borderRadius:4,padding:"1px 5px",flexShrink:0},children:"removed"}),s.timestamp&&Xs.jsx("span",{style:{fontSize:11,color:"#9ca3af",flexShrink:0},children:yr(s.timestamp)}),b&&E&&s.promptId&&!s.reverted&&v!==jt.length-1&&qe!=="running"&&Xs.jsx("span",{style:{display:"inline-flex",gap:4,flexShrink:0},children:Xs.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"&&Xs.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:[Xs.jsx(lucideReact.Undo2,{style:{width:12,height:12}}),g===v&&Xs.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)),($e?.forkId===re||Yt?.disabledAt)&&Xs.jsx("div",{style:{marginTop:24,background:"#f9fafb",border:"1px solid #f3f4f6",borderRadius:10,padding:"10px 12px",textAlign:"center"},children:$e?.forkId===re?Xs.jsxs(Xs.Fragment,{children:[Xs.jsx("div",{style:{fontSize:13,fontWeight:600,color:"#111827"},children:$e.disabling?"Disabling This Fork":"Re-enabling This Fork"}),Xs.jsx("div",{style:{fontSize:12,color:"#9ca3af",fontStyle:"italic",marginTop:3,animation:"__fork-pulse 1.2s ease-in-out infinite"},children:$e.disabling?"The agent is removing this change from the app (~2m). You can re-enable it later.":"The agent is restoring this change (~2m)."})]}):Xs.jsxs(Xs.Fragment,{children:[Xs.jsx("div",{style:{fontSize:13,fontWeight:600,color:"#111827"},children:"This Fork Is Disabled"}),Xs.jsx("div",{style:{fontSize:12,color:"#6b7280",marginTop:3,lineHeight:1.5},children:"Its change has been removed from the app."}),Xs.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"&&Xs.jsx("div",{style:{margin:"12px 16px 0 16px"},children:Xs.jsxs("div",{onClick:()=>I(!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:[Xs.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"9px 12px"},children:[Xs.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[Xs.jsx("span",{style:{width:7,height:7,borderRadius:"50%",background:"#f59e0b",flexShrink:0,animation:"__fork-pulse 1.4s ease-in-out infinite"}}),Xs.jsx(ha,{events:Bt},re??"__compose__")]}),Xs.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,flexShrink:0,marginLeft:8},children:[Bt[0]?.timestamp&&Xs.jsx("span",{style:{fontSize:11,color:"#9ca3af"},children:yr(Bt[0].timestamp)}),Xs.jsx("div",{style:{color:"#9ca3af",transition:"transform 0.2s ease",transform:d?"rotate(180deg)":"rotate(0deg)",display:"flex"},children:Xs.jsx(lucideReact.ChevronDown,{style:{width:14,height:14}})})]})]}),Xs.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:Xs.jsx("div",{style:{background:"#1a1a2e",borderTop:"1px solid #e5e7eb",maxHeight:320,overflowY:"auto"},children:Xs.jsx(Lo,{events:Bt},re??"__compose__")})})]})}),qe==="error"&&Xs.jsxs("div",{style:{padding:"20px 16px",textAlign:"center"},children:[Xs.jsx("div",{style:{width:36,height:36,backgroundColor:"#fef2f2",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto 10px auto"},children:Xs.jsx(lucideReact.X,{style:{width:18,height:18,color:"#ef4444"}})}),Xs.jsx("p",{style:{fontSize:12,color:"#6b7280",marginBottom:10,maxWidth:260,margin:"0 auto 10px auto"},children:Ls??r}),Xs.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:[Xs.jsx(lucideReact.RotateCcw,{style:{width:12,height:12}})," Try Again"]})]})]}),!(re?qe==="running"||Yt?.disabledAt:Xe&&e==="running")&&Xs.jsxs("div",{style:{padding:"8px 12px 12px 12px",flexShrink:0,position:"relative"},children:[Lr&&Xs.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}),Xs.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)&&Xs.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:6,alignItems:"center"},children:[at.map(s=>Xs.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:[Xs.jsx("img",{src:s.dataUrl,alt:"attachment",style:{width:"100%",height:"100%",objectFit:"cover",display:"block"}}),Xs.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:Es===s.id?1:.6,transition:"opacity 0.12s"},children:Xs.jsx(lucideReact.X,{style:{width:9,height:9}})})]},s.id)),yt&&Xs.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:[Xs.jsx(lucideReact.MousePointer2,{style:{width:11,height:11,flexShrink:0}}),Xs.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},children:Ln(yt)}),Xs.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:Xs.jsx(lucideReact.X,{style:{width:10,height:10}})})]})]}),Xs.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"}}),Xs.jsxs("div",{style:{display:"flex",alignItems:"center",gap:2},children:[Xs.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:Xs.jsx(lucideReact.ImagePlus,{style:{width:16,height:16}})}),Xs.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:Xs.jsx(lucideReact.MousePointer2,{style:{width:16,height:16}})}),Xs.jsx("div",{style:{flex:1}}),Xs.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:Xs.jsx(lucideReact.Mic,{style:{width:16,height:16}})}),Xs.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:Xs.jsx(lucideReact.ArrowUp,{style:{width:14,height:14}})})]})]}),Xs.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&&Mt?Vs.createPortal(Yn,Mt.document.body):Xs.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,E]=ar.useState({}),[U,R]=ar.useState(null),[p,f]=ar.useState("idle"),[T,x]=ar.useState(false),[k,L]=ar.useState(null),N=ar.useRef(new Map),K=ar.useCallback((d,I)=>{E(h=>{let g=h[d]??{forkId:d,state:"running",fork:I.fork,events:[],error:null};return {...h,[d]:{...g,...I}}});},[]),_=ar.useCallback((d,I)=>{E(h=>{let c=h[d];return c?{...h,[d]:{...c,events:[...c.events,I]}}:h});},[]),H=ar.useCallback(d=>{let I=N.current.get(d);I&&(I.close(),N.current.delete(d));},[]),j=ar.useCallback(()=>{f("prompting"),L(null),x(false),R(null);},[]),W=ar.useCallback(()=>{f("idle"),x(false),L(null),R(null);for(let d of N.current.values())d.close();N.current.clear(),E({});},[]),M=ar.useCallback((d,I)=>{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(I,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(I,$.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=ar.useCallback(async(d,I,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};I?g.containerId=I: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();}E(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]),O=ar.useCallback(async d=>{try{let I={Authorization:`Bearer ${t}`,...ue()};n&&(I["X-Fork-User-Id"]=n),r&&(I["X-Fork-User-Hash"]=r);let h=await fetch(`${o}/api/v1/forks/${d}`,{headers:I});if(!h.ok)return;let c=await h.json(),g=c.boundaryId??e;if(w(c,{targetKind:"module",targetId:g}),c.status==="complete"){E($=>({...$,[c.id]:{forkId:c.id,state:"complete",fork:c,events:[],error:null}})),R(c.id);return}if(c.status==="error"){E($=>({...$,[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;E($=>({...$,[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]),V=ar.useCallback(async d=>{try{if(!i)throw new Error("ForkProvider requires appId for boundary undo.");let I={userId:n,boundaryId:e,appId:i};r&&(I.userHash=r),d&&(I.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(I)});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)E(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(I){throw L(I.message),I}},[t,i,o,e,l,K,r,n]),q=ar.useCallback(async(d,I,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});I&&g.set("prompt_id",I);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]),Q=ar.useCallback(async d=>{try{let I={userId:n,mode:d.mode,strategy:d.strategy};d.promptId&&(I.prompt_id=d.promptId),r&&(I.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(I)});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 O(c.fork.id),c):(await l().catch(()=>{}),c.removed?(E(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(I){throw L(I.message),I}},[O,t,o,e,l,K,r,n]),Z=ar.useCallback(async(d,I)=>{let h={userId:n,name:I};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]),ee=ar.useCallback(async d=>{try{let I={Authorization:`Bearer ${t}`,...ue()};n&&(I["X-Fork-User-Id"]=n),r&&(I["X-Fork-User-Hash"]=r);let h=await fetch(`${o}/api/v1/forks/${d}`,{headers:I});if(!h.ok)return;let c=await h.json();E(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]),fe=ar.useCallback(async(d,I)=>{let h={userId:n,disabled:I};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 ee(g.fork.id),g):(await l().catch(()=>{}),g)},[O,t,o,l,r,n]),de=U?b[U]??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:V,planRevert:q,revertFork:Q,setForkDisabled:fe,renameFork:Z,adoptRunningFork:O}}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:E,renameFork:U,adoptRunningFork:R}=kr(e),[p,f]=ar.useState(false),T=ar.useRef(null),x=ar.useRef(t),k=ar.useCallback(()=>{T.current!==null&&(clearTimeout(T.current),T.current=null);},[]),L=ar.useCallback(()=>{k(),f(true),a();},[k,a]),N=ar.useCallback(()=>{k(),f(false),l();},[k,l]),K=ar.useCallback(async H=>{k(),f(true),await R(H);},[R,k]),_=Object.values(i).filter(H=>H.state==="running").length;return ar.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]),ar.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:E,renameFork:U,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,E]=ar.useState({}),[U,R]=ar.useState(null),[p,f]=ar.useState("idle"),[T,x]=ar.useState(false),[k,L]=ar.useState(null),N=ar.useRef(new Map),K=ar.useCallback((d,I)=>{E(h=>{let g=h[d]??{forkId:d,state:"running",fork:I.fork,events:[],error:null};return {...h,[d]:{...g,...I}}});},[]),_=ar.useCallback((d,I)=>{E(h=>{let c=h[d];return c?{...h,[d]:{...c,events:[...c.events,I]}}:h});},[]),H=ar.useCallback(d=>{let I=N.current.get(d);I&&(I.close(),N.current.delete(d));},[]),j=ar.useCallback(()=>{f("prompting"),L(null),x(false),R(null);},[]),W=ar.useCallback(()=>{f("idle"),x(false),L(null),R(null);for(let d of N.current.values())d.close();N.current.clear(),E({});},[]),M=ar.useCallback((d,I)=>{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=I??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=I??$.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=ar.useCallback(async(d,I,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};I&&(B.slotId=I),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();}E(B=>({...B,[g.id]:{forkId:g.id,state:"running",fork:g,events:[],error:null}})),R(g.id),x(!1);let $=I??g.slotId;$&&u(g,{targetKind:"slot",targetId:$}),M(g,I);}catch(g){L(g.message),x(false);}},[o.containerId,o.isAdmin,e,r,M,u,n,t]),O=ar.useCallback(async d=>{try{let I={Authorization:`Bearer ${e}`,...ue()};t&&(I["X-Fork-User-Id"]=t),n&&(I["X-Fork-User-Hash"]=n);let h=await fetch(`${r}/api/v1/forks/${d}`,{headers:I});if(!h.ok)return;let c=await h.json();if(c.slotId&&u(c,{targetKind:"slot",targetId:c.slotId}),c.status==="complete"){E(g=>({...g,[c.id]:{forkId:c.id,state:"complete",fork:c,events:[],error:null}})),R(c.id);return}if(c.status==="error"){E(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;E(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]),V=ar.useCallback(async(d,I)=>{try{let h={userId:t,slotId:d};n&&(h.userHash=n),I&&(h.fork_id=I);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),E($=>{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]),q=ar.useCallback(async(d,I,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});I&&g.set("prompt_id",I);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]),Q=ar.useCallback(async(d,I)=>{try{let h={userId:t,mode:I.mode,strategy:I.strategy};I.promptId&&(h.prompt_id=I.promptId),n&&(h.userHash=n);let c=await fetch(`${r}/api/v1/forks/${encodeURIComponent(I.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 O(g.fork.id),g):(l(d),g.removed?(a(d),E($=>{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}},[O,e,r,a,i,l,K,n,t]),Z=ar.useCallback(async(d,I)=>{let h={userId:t,name:I};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]),ee=ar.useCallback(async d=>{try{let I={Authorization:`Bearer ${e}`,...ue()};t&&(I["X-Fork-User-Id"]=t),n&&(I["X-Fork-User-Hash"]=n);let h=await fetch(`${r}/api/v1/forks/${d}`,{headers:I});if(!h.ok)return;let c=await h.json();E(g=>({...g,[c.id]:{forkId:c.id,state:"running",fork:c,events:[],error:null}})),M(c,c.slotId);}catch{}},[e,r,M,n,t]),fe=ar.useCallback(async(d,I)=>{let h={userId:t,disabled:I};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 ee(g.fork.id),g):(await A().catch(()=>{}),g)},[O,e,r,A,n,t]),de=U?b[U]??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:V,planRevert:q,revertFork:Q,setForkDisabled:fe,renameFork:Z,adoptRunningFork:O}}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:E,adoptRunningFork:U}=br(),[R,p]=ar.useState(false),f=ar.useRef(null),T=ar.useRef(e),x=ar.useCallback(()=>{f.current!==null&&(clearTimeout(f.current),f.current=null);},[]),k=ar.useCallback(()=>{x(),p(true),i();},[x,i]),L=ar.useCallback(()=>{x(),p(false),a();},[x,a]),N=ar.useCallback(async _=>{x(),p(true),await U(_);},[U,x]),K=Object.values(o).filter(_=>_.state==="running").length;return ar.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]),ar.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:E,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,E=t.type==="slot"?"slot":"boundary",U=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=ar.useCallback(()=>{let j=f??T;if(j){b.adoptRunningFork(j.id);return}b.open();},[b,f,T]),k=ar.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=ar.useCallback((j,W)=>t.type==="slot"?n.undo(j??t.id,W):r.undo(W),[r,n,t]),N=ar.useCallback((j,W,M="remove_step")=>t.type==="slot"?n.planRevert(j,W,M):r.planRevert(j,W,M),[r,n,t]),K=ar.useCallback(j=>t.type==="slot"?n.revertFork(t.id,j):r.revertFork(j),[r,n,t]),_=ar.useCallback((j,W)=>t.type==="slot"?n.setForkDisabled(j,W):r.setForkDisabled(j,W),[r,n,t]),H=ar.useCallback((j,W)=>t.type==="slot"?n.renameFork(j,W):r.renameFork(j,W),[r,n,t]);return {...b,open:x,target:t,targetId:U,targetLabel:R,historyMode:E,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:U,targetLabel:R,historyMode:E}:{targetId:U,targetLabel:R,historyMode:E},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?Xs.jsx(Un,{...r.panelProps,embedded:true,completeVariant:n}):r.isOpen?Xs.jsx(Un,{...r.panelProps,completeVariant:n}):Xs.jsx(fr,{...r.buttonProps})}function Aa({boundaryId:e,title:t}){return Xs.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:E}=e[A],U=b.left-.5,R=b.top-.5,p=b.width+1,f=b.height+1,T=Math.min(E+.5,p/2,f/2),x=rs(U,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(U-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(U-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 O=document.createElementNS(t,"path");O.setAttribute("d",x),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(S,O),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],E=i[A+1],U=b.__group;if(!U)continue;let R=E.getTotalLength(),p=b.getTotalLength();if(R<=0)continue;let f=R*.35;E.setAttribute("stroke-dasharray",`${f} ${R-f}`),E.setAttribute("stroke-dashoffset","0"),a.push(E.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(U.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(Ea(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=Ia(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 Ea(e){return e.trim()==="[data-fork-new]"}function Ar(e){return e?.trim().replace(/\s+/g," ").toLowerCase()||null}function Ia(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 Er=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:${Er}`,"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:${Er-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:${Er+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=`
60
64
  @keyframes __fork-highlight-pulse {
61
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); }
62
66
  50% { box-shadow: 0 0 0 6px rgba(59,130,246,0.25), 0 0 22px 4px rgba(59,130,246,0.49); }
63
67
  }
64
- `,document.head.appendChild(e);}function Eo(e,t,n="top"){Xi();let{outline:r,glow:o,tooltip:s}=Vi(t),i=Wi(e);r.style.borderRadius=`${i}px`,o.style.borderRadius=`${i+1}px`,o.style.animation=`__fork-highlight-pulse ${ji}ms ease-in-out infinite`,document.body.append(o,r,s);let l=()=>{let f=e.getBoundingClientRect();if(f.width===0&&f.height===0)return;r.style.top=`${f.top}px`,r.style.left=`${f.left}px`,r.style.width=`${f.width}px`,r.style.height=`${f.height}px`,o.style.top=`${f.top-1}px`,o.style.left=`${f.left-1}px`,o.style.width=`${f.width+2}px`,o.style.height=`${f.height+2}px`;let g=s.getBoundingClientRect(),S=g.width||s.offsetWidth||80,I=g.height||s.offsetHeight||26,m=Ji(n,f,S,I);s.style.top=`${m.top}px`,s.style.left=`${m.left}px`;};l(),requestAnimationFrame(()=>{r.style.opacity="1",o.style.opacity="1",s.style.opacity="1",s.style.transform="translateY(0)",requestAnimationFrame(l);});let u=false,h=new ResizeObserver(l);h.observe(e);let b=()=>l(),d=()=>l();window.addEventListener("scroll",b,true),window.addEventListener("resize",d);let k=()=>{u||(u=true,clearTimeout(v),h.disconnect(),window.removeEventListener("scroll",b,true),window.removeEventListener("resize",d),window.removeEventListener("click",R,true),r.style.opacity="0",o.style.opacity="0",s.style.opacity="0",s.style.transform="translateY(-2px)",setTimeout(()=>{r.remove(),o.remove(),s.remove();},zi));},R=()=>k();setTimeout(()=>{u||window.addEventListener("click",R,{once:true,capture:true});},250);let v=setTimeout(k,Ki);return k}var qi="fork:highlight:v1:seen";function Ro(e){return `${qi}:${e}`}function Io(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 Gi(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(e,JSON.stringify([...t].slice(-200)));}catch{}}var Co=new Set;function Mo(e,t,n){return `${n}::${e}:${t}`}function tr(e,t,n){let r=Mo(e,t,n);return Co.has(r)?true:Io(Ro(n)).has(`${e}:${t}`)}function To(e,t,n){let r=Mo(e,t,n);Co.add(r);let o=Ro(n),s=`${e}:${t}`,i=Io(o);i.has(s)||(i.add(s),Gi(o,i));}var Ot=new Map,Nt=new Map,nr=new Map;function Zi(e){for(let t of e)Nt.set(t,(Nt.get(t)??0)+1);}function Qi(e){if(!(typeof document>"u"))for(let t of e){let n=(Nt.get(t)??0)-1;if(n>0){Nt.set(t,n);continue}Nt.delete(t),Ot.delete(t);let r=document.querySelector(`link[data-fork-override-href="${CSS.escape(t)}"]`);r&&r.remove();}}function ea(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown module override error")}function Po(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 _o(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 ta(e){if(!e||typeof document>"u")return Promise.resolve();let t=Ot.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((s,i)=>{let l=()=>{n.removeEventListener("load",l),n.removeEventListener("error",u),s();},u=()=>{n.removeEventListener("load",l),n.removeEventListener("error",u),i(new Error(`Failed to load boundary stylesheet: ${e}`));};n.addEventListener("load",l,{once:true}),n.addEventListener("error",u,{once:true});});return Ot.set(e,o),o}let r=new Promise((o,s)=>{let i=document.createElement("link");i.rel="stylesheet",i.href=e,i.setAttribute("data-fork-override-href",e),i.onload=()=>o(),i.onerror=()=>{i.remove(),s(new Error(`Failed to load boundary stylesheet: ${e}`));},document.head.appendChild(i);}).catch(o=>{throw Ot.delete(e),o});return Ot.set(e,r),r}var Ht=null;function na(){if(Ht)return Ht;try{Ht=new Function("u","return import(/*webpackIgnore:true*//*@vite-ignore*/u)");}catch{Ht=e=>import(/*webpackIgnore:true*//*@vite-ignore*/e);}return Ht}function ra(e){let t=nr.get(e);if(t)return t;let n=na()(e).catch(r=>{throw nr.delete(e),r});return nr.set(e,n),n}async function oa(e,t,n){if(e)try{await Promise.all(e.cssUrls.map(s=>ta(s)));let o=await ra(e.moduleUrl);return _o(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 _o(r,n)}function sa(e){function t(n){let{appId:r,moduleOverridesEnabled:o,moduleManifestReady:s,moduleManifestVersion:i,registerBoundary:l,getBoundaryOverride:u,consumeBoundaryAnimation:h,highlightScope:b}=ve(),[d,k]=Pn.useState(null),[R,v]=Pn.useState(null),f=Pn.useRef(null),g=Pn.useRef(null),S=Pn.useRef(null),I=Pn.useRef(false),m=Pn.useRef(null),P=Pn.useRef(null),L=Pn.useRef(null),j=Pn.useRef(false),O=Pn.useRef(false),N=u(e.id),oe=N?`override:${N.id}`:"original",Y=e.editorMetadata?JSON.stringify(e.editorMetadata):void 0;if(Pn.useEffect(()=>()=>{P.current&&(clearTimeout(P.current),P.current=null),m.current&&(m.current.remove(),m.current=null),L.current&&(L.current(),L.current=null);},[]),Pn.useEffect(()=>{l({id:e.id,exportName:e.exportName,editorMetadata:e.editorMetadata});},[r,l,e.id,e.exportName,Y]),Pn.useEffect(()=>{let _=N?.cssUrls??[];if(_.length!==0)return Zi(_),()=>Qi(_)},[N?.cssUrls.join("|")]),Pn.useEffect(()=>{if(o&&!s&&!d||g.current===oe&&d)return;let _=false;return v(null),oa(N,e.original,e.exportName).then(F=>{if(_)return;let H=N?.id?h(e.id,N.id):false;if(j.current=H,H&&f.current){let D=qn(f.current);if(D){let K=Gn(D);K.length>0&&(S.current=K,I.current=true,P.current&&(clearTimeout(P.current),P.current=null),m.current&&m.current.remove(),m.current=ko(D));}}g.current=oe,Pn.startTransition(()=>{k(()=>F);});}).catch(F=>{_||v(ea(F));}),()=>{_=true;}},[h,oe,o,s,i,N?.id,N?.moduleUrl,N?.integrity,N?.cssUrls.join("|"),e.exportName,e.original,d]),Pn.useEffect(()=>{if(!d||!f.current)return;let _=false,F=null,H=()=>{if(_||!f.current)return false;let D=N?.highlightHint,K=N?.id,V=N?.createdAt?String(N.createdAt):"";if(!D||!K||tr(K,V,b))return false;let W=Array.from(f.current.querySelectorAll("[data-fork-new]"));W.length,W.map(U=>U.getAttribute("data-fork-new")),D.label,D.textHint,D.selector;let X=Ao(f.current,D);return X?.tagName,X?.getAttribute("data-fork-new"),X?.getAttribute("aria-label"),X?.textContent?.trim().slice(0,60),!X||!Po(X)?(X&&Po(X),X?.getBoundingClientRect(),false):(To(K,V,b),m.current&&(m.current.remove(),m.current=null),L.current&&L.current(),L.current=Eo(X,D.label,D.position??"top"),true)};return requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(_||!f.current)return;let D=j.current,K=!O.current;O.current=true;let V=D||K,W=V?H():false;if(V&&!W&&N?.highlightHint&&N?.id&&!tr(N.id,String(N.createdAt??""),b)){let q=[150,400,800],re=0,Ae=()=>{if(_||re>=q.length)return;let Te=q[re];re+=1,F=setTimeout(()=>{if(H()){W=true;return}Ae();},Te);};Ae();}let X=I.current,U=!!N?.highlightHint,C=S.current;if(S.current=null,I.current=false,W||U||!X){m.current&&(m.current.remove(),m.current=null);return}let M=qn(f.current);if(!C||!M){m.current&&(m.current.remove(),m.current=null);return}let w=Gn(M),p=bo(C,w),$=wo(C,w),x=m.current;if($.length>0&&x){let q=So($);P.current=setTimeout(()=>{P.current=null;let re=400;x.animate([{opacity:1},{opacity:0}],{duration:re,fill:"forwards"}),q.animate([{opacity:1},{opacity:0}],{duration:re,fill:"forwards"}),setTimeout(()=>{x.remove(),q.remove(),m.current===x&&(m.current=null),p.length>0&&Yn(p);},re);},3500);}else x&&(x.remove(),m.current===x&&(m.current=null)),p.length>0&&Yn(p);});}),()=>{_=true,F!==null&&(clearTimeout(F),F=null);}},[d,N?.id,N?.createdAt,N?.highlightHint,b]),R)throw R;return d?ls.jsx("div",{ref:f,"data-fork-boundary":e.id,style:{display:"contents"},children:ls.jsx(d,{...n})}):ls.jsx(ls.Fragment,{children:e.loading??null})}return t.displayName=`ForkBoundary(${e.id})`,t}function aa({slotId:e,title:t,slotLabel:n}){return ls.jsx(_t,{slotId:e,title:t,slotLabel:n})}function ua(e){return e.replace(/\/+$/,"")}function da(e){return {namespace:e.namespace||"default",type:e.type,id:e.id}}function Ut(e,t="value"){let n=da(e);return `${n.namespace}:${n.type}:${n.id}:${t}`}function or(e){if(Array.isArray(e))return e.map(or);if(!e||typeof e!="object")return e;let t=e,n={};for(let r of Object.keys(t).sort())n[r]=or(t[r]);return n}function No(e){return JSON.stringify(or(e))}function Lo(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 Ho(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 Uo(e){let t=ua(e.baseUrl),n={appId:e.appId,containerId:e.containerId},r=async(s,i)=>{let l=i&&typeof i=="object"&&!Array.isArray(i)?i:{},u=await fetch(`${t}/api/v1/data${s}`,{method:"POST",headers:Lo(e),body:JSON.stringify({...n,...l})});return Ho(u)},o=async(s,i)=>{let l=new URLSearchParams({appId:e.appId,containerId:e.containerId});for(let[h,b]of Object.entries(i))b&&l.set(h,b);let u=await fetch(`${t}/api/v1/data${s}?${l.toString()}`,{headers:Lo(e)});return Ho(u)};return {listFeatures(){return o("/features",{})},ensureFeature(s){return r("/features",s)},queryValues(s){return r("/values/query",s)},setValues(s){return r("/values",s)},listOptions(s){return o("/options",{featureId:s.featureId,featureKey:s.featureKey,includeArchived:s.includeArchived?"true":void 0})},setOptions(s){return r("/options",s)},ensureLlmJobs(s){return r("/llm/ensure",s)},queryLlmJobs(s){return r("/llm/jobs/query",s)}}}function gn(e){let{apiKey:t,appId:n,baseUrl:r,currentContainerId:o,userHash:s,userId:i}=ve(),l=e||o;return Pn.useMemo(()=>{if(!n||!l)return null;let u=pe();return Uo({apiKey:t,appId:n,baseUrl:r,containerId:l,userId:i,userHash:s,extraHeaders:u})},[t,n,r,l,s,i])}function fa(e){let t=gn(e.containerId),[n,r]=Pn.useState(null),[o,s]=Pn.useState([]),[i,l]=Pn.useState(false),[u,h]=Pn.useState(null),b=No({featureId:e.featureId,featureKey:e.featureKey,entities:e.entities,valueKeys:e.valueKeys,enabled:e.enabled!==false}),d=Pn.useCallback(async()=>{if(!(!t||e.enabled===false)&&!(!e.featureId&&!e.featureKey)){l(true);try{let v=await t.queryValues({featureId:e.featureId,featureKey:e.featureKey,entities:e.entities,valueKeys:e.valueKeys});r(v.feature),s(v.values),h(null);}catch(v){h(v instanceof Error?v:new Error(String(v)));}finally{l(false);}}},[t,b]);Pn.useEffect(()=>{d();},[d]),Pn.useEffect(()=>{if(!e.pollMs||e.pollMs<=0)return;let v=setInterval(()=>{d();},e.pollMs);return ()=>clearInterval(v)},[e.pollMs,d]);let k=Pn.useMemo(()=>new Map(o.map(v=>[Ut(v.entity,v.valueKey),v])),[o]),R=Pn.useCallback((v,f="value")=>k.get(Ut(v,f))??null,[k]);return {feature:n,values:o,byKey:k,getValue:R,loading:i,error:u,refresh:d}}function pa(e){let t=gn(e),n=Pn.useCallback(async s=>{if(!t)throw new Error("Fork data is unavailable until appId and containerId are resolved");return t.ensureFeature(s)},[t]),r=Pn.useCallback(async s=>{if(!t)throw new Error("Fork data is unavailable until appId and containerId are resolved");return t.setValues(s)},[t]),o=Pn.useCallback(async s=>{if(!t)throw new Error("Fork data is unavailable until appId and containerId are resolved");return t.setOptions(s)},[t]);return {client:t,ensureFeature:n,setValues:r,setOptions:o}}function Oo(e){return e.some(t=>t.status==="queued"||t.status==="running")}function ma(e){let t=gn(e.containerId),[n,r]=Pn.useState(null),[o,s]=Pn.useState([]),[i,l]=Pn.useState([]),[u,h]=Pn.useState(false),[b,d]=Pn.useState(null),k=Pn.useRef(""),R=No({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}),v=Pn.useCallback(async()=>{if(!(!t||e.enabled===false)&&!(!e.featureId&&!e.featureKey)&&!(!e.jobs||e.jobs.length===0)){h(true);try{let I=await t.ensureLlmJobs(e);k.current=R,r(I.feature),s(I.jobs),l(I.values),d(null);}catch(I){d(I instanceof Error?I:new Error(String(I)));}finally{h(false);}}},[t,R]),f=Pn.useCallback(async()=>{if(!t)return;let I=o.map(m=>m.id);try{if(I.length>0){let m=await t.queryLlmJobs({jobIds:I});s(m.jobs);}if(e.featureId||e.featureKey){let m=await t.queryValues({featureId:e.featureId,featureKey:e.featureKey,entities:e.jobs.map(P=>P.entity),valueKeys:Array.from(new Set(e.jobs.map(P=>P.valueKey||"value")))});r(m.feature),l(m.values);}d(null);}catch(m){d(m instanceof Error?m:new Error(String(m)));}},[t,o,R]);Pn.useEffect(()=>{k.current!==R&&v();},[v,R]),Pn.useEffect(()=>{let I=e.pollMs??3e3;if(I<=0||!Oo(o))return;let m=setInterval(()=>{f();},I);return ()=>clearInterval(m)},[e.pollMs,o,f]);let g=Pn.useMemo(()=>new Map(i.map(I=>[Ut(I.entity,I.valueKey),I])),[i]),S=Pn.useCallback((I,m="value")=>g.get(Ut(I,m))??null,[g]);return {feature:n,jobs:o,values:i,byKey:g,getValue:S,loading:u,error:b,ensure:v,refresh:f,running:Oo(o)}}exports.ForkBoundaryUI=Ni;exports.ForkButton=Nn;exports.ForkChatInterface=_t;exports.ForkPanel=dn;exports.ForkProvider=Is;exports.ForkSlot=Ds;exports.ForkUI=aa;exports.clearCachedManifest=ps;exports.createForkDataClient=Uo;exports.forkEntityValueKey=Ut;exports.forkable=sa;exports.loadManifest=In;exports.manifestDiffers=ms;exports.readCachedManifest=ds;exports.registerForkShared=An;exports.useBoundaryFork=zn;exports.useFork=Wn;exports.useForkChatPanel=Vn;exports.useForkDataClient=gn;exports.useForkDataMutation=pa;exports.useForkFeatureValues=fa;exports.useForkLlmJobs=ma;exports.writeCachedManifest=fs;
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 E=()=>{u||(u=true,clearTimeout(R),w.disconnect(),window.removeEventListener("scroll",A,true),window.removeEventListener("resize",b),window.removeEventListener("click",U,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));},U=()=>E();setTimeout(()=>{u||window.addEventListener("click",U,{once:true,capture:true});},250);let R=setTimeout(E,Ta);return E}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 Ir(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,E]=ar.useState(null),[U,R]=ar.useState(null),p=ar.useRef(null),f=ar.useRef(null),T=ar.useRef(null),x=ar.useRef(false),k=ar.useRef(null),L=ar.useRef(null),N=ar.useRef(null),K=ar.useRef(false),_=ar.useRef(false),H=u(e.id),j=H?`override:${H.id}`:"original",W=e.editorMetadata?JSON.stringify(e.editorMetadata):void 0;if(ar.useEffect(()=>()=>{L.current&&(clearTimeout(L.current),L.current=null),k.current&&(k.current.remove(),k.current=null),N.current&&(N.current(),N.current=null);},[]),ar.useEffect(()=>{l({id:e.id,exportName:e.exportName,editorMetadata:e.editorMetadata});},[r,l,e.id,e.exportName,W]),ar.useEffect(()=>{let M=H?.cssUrls??[];if(M.length!==0)return Na(M),()=>Ba(M)},[H?.cssUrls.join("|")]),ar.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 O=H?.id?w(e.id,H.id):false;if(K.current=O,O&&p.current){let V=Sr(p.current);if(V){let q=xr(V);q.length>0&&(T.current=q,x.current=true,L.current&&(clearTimeout(L.current),L.current=null),k.current&&k.current.remove(),k.current=es(V));}}f.current=j,ar.startTransition(()=>{E(()=>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]),ar.useEffect(()=>{if(!b||!p.current)return;let M=false,S=null,O=()=>{if(M||!p.current)return false;let V=H?.highlightHint,q=H?.id,Q=H?.createdAt?String(H.createdAt):"";if(!V||!q||Ir(q,Q,A))return false;let Z=Array.from(p.current.querySelectorAll("[data-fork-new]"));Z.length,Z.map(fe=>fe.getAttribute("data-fork-new")),V.label,V.textHint,V.selector;let ee=as(p.current,V);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(q,Q,A),k.current&&(k.current.remove(),k.current=null),N.current&&N.current(),N.current=ls(ee,V.label,V.position??"top"),true)};return requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(M||!p.current)return;let V=K.current,q=!_.current;_.current=true;let Q=V||q,Z=Q?O():false;if(Q&&!Z&&H?.highlightHint&&H?.id&&!Ir(H.id,String(H.createdAt??""),A)){let I=[150,400,800],h=0,c=()=>{if(M||h>=I.length)return;let g=I[h];h+=1,S=setTimeout(()=>{if(O()){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 I=os(pe);L.current=setTimeout(()=>{L.current=null;let h=400;d.animate([{opacity:1},{opacity:0}],{duration:h,fill:"forwards"}),I.animate([{opacity:1},{opacity:0}],{duration:h,fill:"forwards"}),setTimeout(()=>{d.remove(),I.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]),U)throw U;return b?Xs.jsx("div",{ref:p,"data-fork-boundary":e.id,style:{display:"contents"},children:Xs.jsx(b,{...n})}):Xs.jsx(Xs.Fragment,{children:e.loading??null})}return t.displayName=`ForkBoundary(${e.id})`,t}function Xa({slotId:e,title:t,slotLabel:n}){return Xs.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 ar.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]=ar.useState(null),[o,i]=ar.useState([]),[a,l]=ar.useState(false),[u,w]=ar.useState(null),A=vs({featureId:e.featureId,featureKey:e.featureKey,entities:e.entities,valueKeys:e.valueKeys,enabled:e.enabled!==false}),b=ar.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]);ar.useEffect(()=>{b();},[b]),ar.useEffect(()=>{if(!e.pollMs||e.pollMs<=0)return;let R=setInterval(()=>{b();},e.pollMs);return ()=>clearInterval(R)},[e.pollMs,b]);let E=ar.useMemo(()=>new Map(o.map(R=>[pn(R.entity,R.valueKey),R])),[o]),U=ar.useCallback((R,p="value")=>E.get(pn(R,p))??null,[E]);return {feature:n,values:o,byKey:E,getValue:U,loading:a,error:u,refresh:b}}function el(e){let t=jn(e),n=ar.useCallback(async i=>{if(!t)throw new Error("Fork data is unavailable until appId and containerId are resolved");return t.ensureFeature(i)},[t]),r=ar.useCallback(async i=>{if(!t)throw new Error("Fork data is unavailable until appId and containerId are resolved");return t.setValues(i)},[t]),o=ar.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]=ar.useState(null),[o,i]=ar.useState([]),[a,l]=ar.useState([]),[u,w]=ar.useState(false),[A,b]=ar.useState(null),E=ar.useRef(""),U=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=ar.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);E.current=U,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,U]),p=ar.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,U]);ar.useEffect(()=>{E.current!==U&&R();},[R,U]),ar.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=ar.useMemo(()=>new Map(a.map(x=>[pn(x.entity,x.valueKey),x])),[a]),T=ar.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)}}exports.ForkBoundaryUI=Aa;exports.ForkButton=fr;exports.ForkChatInterface=ln;exports.ForkPanel=Un;exports.ForkProvider=gi;exports.ForkSlot=Ei;exports.ForkUI=Xa;exports.clearCachedManifest=Qs;exports.createForkDataClient=ws;exports.forkEntityValueKey=pn;exports.forkable=Ja;exports.loadManifest=nr;exports.manifestDiffers=ei;exports.readCachedManifest=Ys;exports.registerForkShared=Qn;exports.useBoundaryFork=kr;exports.useFork=br;exports.useForkChatPanel=vr;exports.useForkDataClient=jn;exports.useForkDataMutation=el;exports.useForkFeatureValues=Qa;exports.useForkLlmJobs=tl;exports.writeCachedManifest=Zs;