@coreframe/vite 0.3.0-next.4 → 3.0.0-beta.2

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.
@@ -1,4 +1,4 @@
1
- import{SpinnerInline as e}from"@agilek/cli-loaders";import{developmentControlsEvents as t}from"@coreframe/dev-contracts/development-controls";import{managedDevEvents as n,managedDevSupervisorRecoveryErrorPrefix as r,managedDevSupervisorRecoveryPrefix as i}from"@coreframe/dev-contracts/managed-dev";import{cloneElement as a,createContext as o,createElement as s,forwardRef as c,isValidElement as l,useCallback as u,useContext as d,useEffect as f,useRef as p,useState as m,useSyncExternalStore as h}from"react";import{createPortal as g}from"react-dom";import{Fragment as _,jsx as v,jsxs as y}from"react/jsx-runtime";const b=()=>{if(typeof document>`u`)return;let e=document.querySelector(`meta[name="csp-nonce"]`);if(e?.content)return e.content;let t=document.querySelector(`script[nonce]`),n=t?.nonce||t?.getAttribute(`nonce`);if(n)return n},x=(e,t,n)=>{if(typeof document>`u`)return null;let r=`isolet-style-${e}`,i=typeof CSS<`u`&&CSS.escape?CSS.escape(r):r,a=`getElementById`in n?n.getElementById(r):n.querySelector(`#${i}`);if(a)return a.textContent=t,a;let o=document.createElement(`style`);o.id=r;let s=b();return s&&o.setAttribute(`nonce`,s),o.textContent=t,n.appendChild(o),o},S=`data-isolet`,C=(e,t,n={})=>{if(typeof document>`u`)return{host:null,shadowRoot:null,container:t,target:t};let r=n.isolation??`shadow-dom`;if(r===`none`){let r=`[${S}="${e}"]`,i=t.querySelector(r);if(i)return{host:i,shadowRoot:null,container:i,target:t};let a=document.createElement(`div`);if(a.setAttribute(S,e),n.hostAttributes)for(let[e,t]of Object.entries(n.hostAttributes))a.setAttribute(e,t);return w(a,n),n.css&&x(e,n.css,t),t.appendChild(a),{host:a,shadowRoot:null,container:a,target:t}}let i=`[${S}="${e}"]`,a=t.querySelector(i);if(a){if(r===`shadow-dom`&&a.shadowRoot){let e=a.shadowRoot.querySelector(`[${S}-root]`);if(e)return{host:a,shadowRoot:a.shadowRoot,container:e,target:t}}else if(r===`scoped`)return{host:a,shadowRoot:null,container:a,target:t}}let o=document.createElement(`div`);if(o.setAttribute(S,e),n.hostAttributes)for(let[e,t]of Object.entries(n.hostAttributes))o.setAttribute(e,t);if(r===`shadow-dom`){o.style.all=`initial`;let r=o.attachShadow({mode:n.shadowMode??`open`});n.css&&x(e,n.css,r);let i=document.createElement(`div`);return i.setAttribute(`${S}-root`,``),r.appendChild(i),w(o,n),t.appendChild(o),{host:o,shadowRoot:r,container:i,target:t}}return w(o,n),n.css&&x(e,n.css,t),t.appendChild(o),{host:o,shadowRoot:null,container:o,target:t}},w=(e,t)=>{if(t.hostStyles)for(let[n,r]of Object.entries(t.hostStyles))r==null||typeof r==`function`||e.style.setProperty(n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),String(r));t.zIndex!=null&&(e.style.zIndex=String(t.zIndex))},T=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),E=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),D=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),O=e=>{
1
+ import{SpinnerInline as e}from"@agilek/cli-loaders";import{developmentControlsEvents as t}from"@coreframe/dev-contracts/development-controls";import{managedDevCodexEfforts as n,managedDevCodexModels as r,managedDevEvents as i,managedDevSupervisorRecoveryErrorPrefix as a,managedDevSupervisorRecoveryPrefix as o}from"@coreframe/dev-contracts/managed-dev";import{cloneElement as s,createContext as c,createElement as l,forwardRef as u,isValidElement as d,useCallback as f,useContext as p,useEffect as m,useId as h,useRef as g,useState as _,useSyncExternalStore as v}from"react";import{createPortal as y}from"react-dom";import{Fragment as b,jsx as x,jsxs as S}from"react/jsx-runtime";const C=()=>{if(typeof document>`u`)return;let e=document.querySelector(`meta[name="csp-nonce"]`);if(e?.content)return e.content;let t=document.querySelector(`script[nonce]`),n=t?.nonce||t?.getAttribute(`nonce`);if(n)return n},w=(e,t,n)=>{if(typeof document>`u`)return null;let r=`isolet-style-${e}`,i=typeof CSS<`u`&&CSS.escape?CSS.escape(r):r,a=`getElementById`in n?n.getElementById(r):n.querySelector(`#${i}`);if(a)return a.textContent=t,a;let o=document.createElement(`style`);o.id=r;let s=C();return s&&o.setAttribute(`nonce`,s),o.textContent=t,n.appendChild(o),o},T=`data-isolet`,E=(e,t,n={})=>{if(typeof document>`u`)return{host:null,shadowRoot:null,container:t,target:t};let r=n.isolation??`shadow-dom`;if(r===`none`){let r=`[${T}="${e}"]`,i=t.querySelector(r);if(i)return{host:i,shadowRoot:null,container:i,target:t};let a=document.createElement(`div`);if(a.setAttribute(T,e),n.hostAttributes)for(let[e,t]of Object.entries(n.hostAttributes))a.setAttribute(e,t);return D(a,n),n.css&&w(e,n.css,t),t.appendChild(a),{host:a,shadowRoot:null,container:a,target:t}}let i=`[${T}="${e}"]`,a=t.querySelector(i);if(a){if(r===`shadow-dom`&&a.shadowRoot){let e=a.shadowRoot.querySelector(`[${T}-root]`);if(e)return{host:a,shadowRoot:a.shadowRoot,container:e,target:t}}else if(r===`scoped`)return{host:a,shadowRoot:null,container:a,target:t}}let o=document.createElement(`div`);if(o.setAttribute(T,e),n.hostAttributes)for(let[e,t]of Object.entries(n.hostAttributes))o.setAttribute(e,t);if(r===`shadow-dom`){o.style.all=`initial`;let r=o.attachShadow({mode:n.shadowMode??`open`});n.css&&w(e,n.css,r);let i=document.createElement(`div`);return i.setAttribute(`${T}-root`,``),r.appendChild(i),D(o,n),t.appendChild(o),{host:o,shadowRoot:r,container:i,target:t}}return D(o,n),n.css&&w(e,n.css,t),t.appendChild(o),{host:o,shadowRoot:null,container:o,target:t}},D=(e,t)=>{if(t.hostStyles)for(let[n,r]of Object.entries(t.hostStyles))r==null||typeof r==`function`||e.style.setProperty(n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),String(r));t.zIndex!=null&&(e.style.zIndex=String(t.zIndex))},O=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),k=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),A=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),j=e=>{
2
2
  /**
3
3
  * @license lucide-react v1.24.0 - ISC
4
4
  *
@@ -23,21 +23,21 @@ import{SpinnerInline as e}from"@agilek/cli-loaders";import{developmentControlsEv
23
23
  * This source code is licensed under the ISC license.
24
24
  * See the LICENSE file in the root directory of this source tree.
25
25
  */
26
- let t=D(e);return t.charAt(0).toUpperCase()+t.slice(1)};
26
+ let t=A(e);return t.charAt(0).toUpperCase()+t.slice(1)};
27
27
  /**
28
28
  * @license lucide-react v1.24.0 - ISC
29
29
  *
30
30
  * This source code is licensed under the ISC license.
31
31
  * See the LICENSE file in the root directory of this source tree.
32
32
  */
33
- var k={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`};
33
+ var M={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`};
34
34
  /**
35
35
  * @license lucide-react v1.24.0 - ISC
36
36
  *
37
37
  * This source code is licensed under the ISC license.
38
38
  * See the LICENSE file in the root directory of this source tree.
39
39
  */
40
- const ee=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},te=o({}),ne=()=>d(te),re=c(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...c},l)=>{
40
+ const N=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},ee=c({}),te=()=>p(ee),ne=u(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>{
41
41
  /**
42
42
  * @license lucide-react v1.24.0 - ISC
43
43
  *
@@ -50,14 +50,14 @@ const ee=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)re
50
50
  * This source code is licensed under the ISC license.
51
51
  * See the LICENSE file in the root directory of this source tree.
52
52
  */
53
- let{size:u=24,strokeWidth:d=2,absoluteStrokeWidth:f=!1,color:p=`currentColor`,className:m=``}=ne()??{},h=r??f?Number(n??d)*24/Number(t??u):n??d;return s(`svg`,{ref:l,...k,width:t??u??k.width,height:t??u??k.height,stroke:e??p,strokeWidth:h,className:T(`lucide`,m,i),...!a&&!ee(c)&&{"aria-hidden":`true`},...c},[...o.map(([e,t])=>s(e,t)),...Array.isArray(a)?a:[a]])}),A=(e,t)=>{
53
+ let{size:u=24,strokeWidth:d=2,absoluteStrokeWidth:f=!1,color:p=`currentColor`,className:m=``}=te()??{},h=r??f?Number(n??d)*24/Number(t??u):n??d;return l(`svg`,{ref:c,...M,width:t??u??M.width,height:t??u??M.height,stroke:e??p,strokeWidth:h,className:O(`lucide`,m,i),...!a&&!N(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>l(e,t)),...Array.isArray(a)?a:[a]])}),P=(e,t)=>{
54
54
  /**
55
55
  * @license lucide-react v1.24.0 - ISC
56
56
  *
57
57
  * This source code is licensed under the ISC license.
58
58
  * See the LICENSE file in the root directory of this source tree.
59
59
  */
60
- let n=c(({className:n,...r},i)=>s(re,{ref:i,iconNode:t,className:T(`lucide-${E(O(e))}`,`lucide-${e}`,n),...r}));return n.displayName=O(e),n},ie=A(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),ae=A(`bug`,[[`path`,{d:`M12 20v-9`,key:`1qisl0`}],[`path`,{d:`M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z`,key:`uouzyp`}],[`path`,{d:`M14.12 3.88 16 2`,key:`qol33r`}],[`path`,{d:`M21 21a4 4 0 0 0-3.81-4`,key:`1b0z45`}],[`path`,{d:`M21 5a4 4 0 0 1-3.55 3.97`,key:`5cxbf6`}],[`path`,{d:`M22 13h-4`,key:`1jl80f`}],[`path`,{d:`M3 21a4 4 0 0 1 3.81-4`,key:`1fjd4g`}],[`path`,{d:`M3 5a4 4 0 0 0 3.55 3.97`,key:`1d7oge`}],[`path`,{d:`M6 13H2`,key:`82j7cp`}],[`path`,{d:`m8 2 1.88 1.88`,key:`fmnt4t`}],[`path`,{d:`M9 7.13V6a3 3 0 1 1 6 0v1.13`,key:`1vgav8`}]]),j=A(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),oe=A(`circle-off`,[[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M8.35 2.69A10 10 0 0 1 21.3 15.65`,key:`1pfsoa`}],[`path`,{d:`M19.08 19.08A10 10 0 1 1 4.92 4.92`,key:`1ablyi`}]]),se=A(`circle-pause`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`10`,x2:`10`,y1:`15`,y2:`9`,key:`c1nkhi`}],[`line`,{x1:`14`,x2:`14`,y1:`15`,y2:`9`,key:`h65svq`}]]),ce=A(`cloud-download`,[[`path`,{d:`M12 13v8l-4-4`,key:`1f5nwf`}],[`path`,{d:`m12 21 4-4`,key:`1lfcce`}],[`path`,{d:`M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284`,key:`ui1hmy`}]]),M=A(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),le=A(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),ue=A(`ellipsis-vertical`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`5`,r:`1`,key:`gxeob9`}],[`circle`,{cx:`12`,cy:`19`,r:`1`,key:`lyex9k`}]]),N=A(`git-commit-horizontal`,[[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}],[`line`,{x1:`3`,x2:`9`,y1:`12`,y2:`12`,key:`1dyftd`}],[`line`,{x1:`15`,x2:`21`,y1:`12`,y2:`12`,key:`oup4p8`}]]),de=A(`list-checks`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`path`,{d:`m3 7 2 2 4-4`,key:`1obspn`}]]),fe=A(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),pe=A(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),P=A(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),F=A(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),me=A(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),I=A(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),L=A(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]])
60
+ let n=u(({className:n,...r},i)=>l(ne,{ref:i,iconNode:t,className:O(`lucide-${k(j(e))}`,`lucide-${e}`,n),...r}));return n.displayName=j(e),n},re=P(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),ie=P(`bug`,[[`path`,{d:`M12 20v-9`,key:`1qisl0`}],[`path`,{d:`M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z`,key:`uouzyp`}],[`path`,{d:`M14.12 3.88 16 2`,key:`qol33r`}],[`path`,{d:`M21 21a4 4 0 0 0-3.81-4`,key:`1b0z45`}],[`path`,{d:`M21 5a4 4 0 0 1-3.55 3.97`,key:`5cxbf6`}],[`path`,{d:`M22 13h-4`,key:`1jl80f`}],[`path`,{d:`M3 21a4 4 0 0 1 3.81-4`,key:`1fjd4g`}],[`path`,{d:`M3 5a4 4 0 0 0 3.55 3.97`,key:`1d7oge`}],[`path`,{d:`M6 13H2`,key:`82j7cp`}],[`path`,{d:`m8 2 1.88 1.88`,key:`fmnt4t`}],[`path`,{d:`M9 7.13V6a3 3 0 1 1 6 0v1.13`,key:`1vgav8`}]]),F=P(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),ae=P(`circle-off`,[[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M8.35 2.69A10 10 0 0 1 21.3 15.65`,key:`1pfsoa`}],[`path`,{d:`M19.08 19.08A10 10 0 1 1 4.92 4.92`,key:`1ablyi`}]]),oe=P(`circle-pause`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`10`,x2:`10`,y1:`15`,y2:`9`,key:`c1nkhi`}],[`line`,{x1:`14`,x2:`14`,y1:`15`,y2:`9`,key:`h65svq`}]]),se=P(`cloud-download`,[[`path`,{d:`M12 13v8l-4-4`,key:`1f5nwf`}],[`path`,{d:`m12 21 4-4`,key:`1lfcce`}],[`path`,{d:`M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284`,key:`ui1hmy`}]]),ce=P(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),le=P(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),ue=P(`ellipsis-vertical`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`5`,r:`1`,key:`gxeob9`}],[`circle`,{cx:`12`,cy:`19`,r:`1`,key:`lyex9k`}]]),de=P(`git-commit-horizontal`,[[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}],[`line`,{x1:`3`,x2:`9`,y1:`12`,y2:`12`,key:`1dyftd`}],[`line`,{x1:`15`,x2:`21`,y1:`12`,y2:`12`,key:`oup4p8`}]]),fe=P(`list-checks`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`path`,{d:`m3 7 2 2 4-4`,key:`1obspn`}]]),pe=P(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),me=P(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),I=P(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),L=P(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),R=P(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),z=P(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),B=P(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]])
61
61
  /**
62
62
  * @license lucide-react v1.24.0 - ISC
63
63
  *
@@ -166,11 +166,12 @@ let n=c(({className:n,...r},i)=>s(re,{ref:i,iconNode:t,className:T(`lucide-${E(O
166
166
  * This source code is licensed under the ISC license.
167
167
  * See the LICENSE file in the root directory of this source tree.
168
168
  */
169
- ;function he(){return import.meta.hot}const R={connect:`vite:ws:connect`,disconnect:`vite:ws:disconnect`};function ge(){return import.meta.hot}var z={actionError:`actionError`,actions:`actions`,actionSuccess:`actionSuccess`,button:`button`,"button-spin":`button-spin`,buttonSpinner:`buttonSpinner`,checkbox:`checkbox`,checkCommand:`checkCommand`,checkFailure:`checkFailure`,checkGuidance:`checkGuidance`,codexHistoryList:`codexHistoryList`,codexHistorySummary:`codexHistorySummary`,codexMessage:`codexMessage`,codexMessageAge:`codexMessageAge`,codexMessageAgent:`codexMessageAgent`,codexMessageHeader:`codexMessageHeader`,codexMessageLabel:`codexMessageLabel`,codexMessageText:`codexMessageText`,codexMessageThought:`codexMessageThought`,codexMessageUser:`codexMessageUser`,codexOutput:`codexOutput`,codexTranscript:`codexTranscript`,codexWaiting:`codexWaiting`,codexWorking:`codexWorking`,codexWorkingSpinner:`codexWorkingSpinner`,content:`content`,debugFooter:`debugFooter`,developmentControls:`developmentControls`,developmentControlsDropdown:`developmentControlsDropdown`,dialog:`dialog`,drawerBody:`drawerBody`,errorIcon:`errorIcon`,errorMessage:`errorMessage`,filePath:`filePath`,files:`files`,header:`header`,headerActions:`headerActions`,iconButton:`iconButton`,iconOnly:`iconOnly`,indicatorButton:`indicatorButton`,indicatorDot:`indicatorDot`,message:`message`,paragraph:`paragraph`,pendingCommits:`pendingCommits`,primary:`primary`,radiate:`radiate`,rebaseProgress:`rebaseProgress`,rebaseProgressFill:`rebaseProgressFill`,rebaseProgressLabel:`rebaseProgressLabel`,rebaseProgressTrack:`rebaseProgressTrack`,scenarioButton:`scenarioButton`,scenarioDescription:`scenarioDescription`,scenarioLabel:`scenarioLabel`,scenarioList:`scenarioList`,section:`section`,sectionDescription:`sectionDescription`,sectionHeading:`sectionHeading`,sectionLink:`sectionLink`,sectionTitle:`sectionTitle`,setupFailure:`setupFailure`,successIcon:`successIcon`,surface:`surface`,title:`title`,titleIcon:`titleIcon`,warning:`warning`};const B=`GPT-5.6 Luna (Max)`;let V=!1,_e=0,ve=0;const H=new Set,U=[{description:`A clean managed checkout with no available updates.`,id:`idle`,label:`No updates`,status:{mode:`managed`,warnings:[]}},{description:`Tracked and untracked files awaiting review.`,id:`local-changes`,label:`Review local changes`,status:{draft:{fingerprint:`debug-local-changes`,tracked:!0,untracked:[`src/web/new-feature.tsx`,`src/web/new-feature.style.ts`]},mode:`managed`,warnings:[]}},{description:`Local changes with a proposed Conventional Commit message.`,id:`confirm-commit`,label:`Confirm commit`,status:{draft:{fingerprint:`debug-confirm-commit`,tracked:!0,untracked:[`src/web/new-feature.tsx`]},mode:`managed`,proposal:`feat: add the new feature`,warnings:[]}},{description:`A newer commit is available from the local dev branch.`,id:`dev-update`,label:`Local dev update`,status:{mode:`managed`,target:{commit:`1234567890abcdef`,commits:[{commit:`fedcba0987654321`,shortCommit:`fedcba098765`,subject:`feat: add managed preview foundations`},{commit:`1234567890abcdef`,shortCommit:`1234567890ab`,subject:`feat: update the managed preview`}],shortCommit:`1234567890ab`,source:`dev`,subject:`feat: update the managed preview`},warnings:[]}},{description:`A newer upstream main commit is ready to refresh.`,id:`upstream-update`,label:`Upstream update`,status:{mode:`managed`,target:{commit:`abcdef1234567890`,commits:[{commit:`0123456789abcdef`,shortCommit:`0123456789ab`,subject:`chore: refresh shared dependencies`},{commit:`abcdef1234567890`,shortCommit:`abcdef123456`,subject:`fix: update shared project defaults`}],shortCommit:`abcdef123456`,source:`upstream`,subject:`fix: update shared project defaults`},warnings:[]}},{description:`The accepted update is currently being integrated.`,id:`busy`,label:`Busy integration`,status:{busy:`Integrating accepted update`,mode:`managed`,warnings:[]}},{description:`Managed development is paused until the checkout returns to main.`,id:`paused`,label:`Paused checkout`,status:{message:`Managed synchronization is paused until the primary checkout is back on local main.`,mode:`waiting`,warnings:[]}},{description:`Managed development cannot run from the current checkout.`,id:`unavailable`,label:`Unavailable checkout`,status:{message:`Managed development only runs from the primary checkout.`,mode:`unmanaged`,warnings:[]}},{description:`A managed-development warning requiring attention.`,id:`warning`,label:`Warning`,status:{mode:`managed`,warnings:[`The remote update could not be checked. The last known project state is shown.`]}},{description:`Typechecking failed after synchronization.`,id:`failed-check`,label:`Failed check`,status:{checks:{commit:`1234567890abcdef`,commands:[{command:`pnpm typecheck`,failureId:`debug-typecheck-failure`,output:`src/web/feature.tsx(12,4): error TS2322: Type mismatch.`,status:`failed`},{command:`pnpm test`,status:`passed`}],trigger:`synchronization`},mode:`managed`,warnings:[]}},{description:`Dependency installation failed after synchronization.`,id:`dependency-failure`,label:`Dependency failure`,status:{mode:`managed`,setupFailure:{command:`pnpm install --frozen-lockfile`,commit:`1234567890abcdef`,message:`The project was synchronized, but dependency installation failed. Fix the package or lockfile issue, then retry the install.`,output:`ERR_PNPM_OUTDATED_LOCKFILE Cannot install with a frozen lockfile.`,restartRequired:!0,stage:`dependencies`},warnings:[]}},{description:`Database migration failed and can be reset.`,id:`migration-failure`,label:`Database failure`,status:{mode:`managed`,setupFailure:{command:`pnpm db migrate-local`,commit:`1234567890abcdef`,message:`The project was synchronized, but its database migration failed. The previous database was restored.`,output:`Migration 0012_add_project_state failed: duplicate column name.`,restartRequired:!1,stage:`migration`},warnings:[]}},{codex:{commits:[{commit:`1234567890abcdef`,shortCommit:`1234567890ab`,subject:`feat: add managed development`}],messages:[{kind:`user`,text:`Resolve the current Git rebase conflicts in src/web/root.tsx.`},{kind:`thought`,text:`Inspecting the conflicting layout changes.`},{kind:`thought`,text:`Preserving the behavior introduced on both branches.`}],phase:`running`,requestId:`debug-codex-running`,totalCommits:4},description:`Codex is resolving conflicts with previous thoughts collapsed.`,id:`codex-running`,label:`Codex reasoning`,status:{busy:`Integrating accepted update`,mode:`managed`,warnings:[]}},{codex:{commits:[{commit:`1234567890abcdef`,shortCommit:`1234567890ab`,subject:`feat: add managed development`}],messages:[{kind:`user`,text:`Resolve the current Git rebase conflicts in src/web/root.tsx.`},{kind:`thought`,text:`Preserving the behavior introduced on both branches.`},{author:B,kind:`agent`,text:`Resolved root.tsx while preserving both the command layer and overlay mounting.`}],phase:`complete`,requestId:`debug-codex-message`,totalCommits:1},description:`Codex has produced its final message while synchronization finishes.`,id:`codex-message`,label:`Codex response`,status:{busy:`Integrating accepted update`,mode:`managed`,warnings:[]}},{codex:{commits:[],messages:[{kind:`user`,text:`Resolve the current Git merge conflicts in src/web/root.tsx.`},{kind:`thought`,text:`The conflict could not be resolved safely.`}],phase:`error`,requestId:`debug-codex-error`},description:`The Codex-assisted conflict resolution failed.`,error:`Codex could not resolve the merge conflicts.`,id:`codex-error`,label:`Codex failure`,status:{mode:`managed`,warnings:[]}},{description:`A durable Codex completion waiting for acknowledgment.`,id:`codex-finished`,label:`Codex finished`,status:{codexCompletion:{commits:[{commit:`1234567890abcdef`,shortCommit:`1234567890ab`,subject:`feat: add managed development`}],finalMessage:`Resolved root.tsx while preserving both the command layer and overlay mounting.`,id:`debug-completion`,messages:[{kind:`user`,text:`Resolve the current Git rebase conflicts in src/web/root.tsx.`},{kind:`thought`,text:`Inspecting the conflicting layout changes.`},{author:B,kind:`agent`,text:`Resolved root.tsx while preserving both the command layer and overlay mounting.`}],totalCommits:1},mode:`managed`,warnings:[]}},{description:`A successful synchronization result before it auto-dismisses.`,id:`success`,label:`Refresh success`,status:{mode:`managed`,warnings:[]},success:{heading:`Refresh complete`,message:`Your project is up to date.`}}],ye=[`codex-running`,`codex-finished`,`codex-message`,`codex-error`,`migration-failure`,`dependency-failure`,`failed-check`,`confirm-commit`,`local-changes`,`upstream-update`,`dev-update`,`busy`,`warning`,`paused`,`unavailable`,`success`,`idle`].map(e=>{let t=U.find(t=>t.id===e);if(!t)throw Error(`Missing managed dev debug scenario: ${e}`);return t});function be(){W(!V)}function W(e){if(V!==e){V=e;for(let e of H)e()}}function xe({bottomOffset:e,debug:t=!1,indicator:n,rightOffset:r}){return v(t?we:Se,{bottomOffset:e,indicator:n,rightOffset:r})}function Se({bottomOffset:e,indicator:t,rightOffset:n}){let{act:r,checkFailure:i,codex:o,dismissCheckFailure:s,dismissError:c,dismissSuccess:u,error:d,hmrReady:p,pendingAction:m,status:h,success:g}=Ge(),_=Ue();f(()=>{if(!g)return;let e=setTimeout(()=>{u(),W(!1)},1600);return()=>clearTimeout(e)},[u,g]);let y=t??v(q,{}),b=l(y)&&y.type===q?a(y,{paused:!h?.target}):y;return v(Ce,{bottomOffset:e,ready:p,indicator:p&&h&&$(h,i)?b:null,rightOffset:n,children:v(Ee,{act:r,checkFailure:i,codex:o,developmentControls:_,dismissCheckFailure:s,dismissError:c,error:d,onClose:()=>{h?.codexCompletion&&r({id:h.codexCompletion.id,type:`acknowledge-codex`}),W(!1)},pendingAction:m,status:h,success:g})})}function Ce({bottomOffset:e,children:t,indicator:n,openOnMount:r=!1,ready:i=!0,rightOffset:a}){let[o,s]=m(null),c=h(Ke,qe,Je);f(()=>{r&&W(!0);let e=!0,t=C(`coreframe-managed-dev`,document.body,{css:`@font-face{font-family:SN Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(./files/sn-pro-cyrillic-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:SN Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(./files/sn-pro-cyrillic-wght-normal.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:SN Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(./files/sn-pro-vietnamese-wght-normal.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:SN Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(./files/sn-pro-latin-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:SN Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(./files/sn-pro-latin-wght-normal.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
169
+ ;function he(){return import.meta.hot}const V={connect:`vite:ws:connect`,disconnect:`vite:ws:disconnect`};function ge(){return import.meta.hot}var H={actionError:`actionError`,actions:`actions`,actionSuccess:`actionSuccess`,button:`button`,"button-spin":`button-spin`,buttonContainer:`buttonContainer`,buttonSpinner:`buttonSpinner`,checkbox:`checkbox`,checkCommand:`checkCommand`,checkFailure:`checkFailure`,checkGuidance:`checkGuidance`,codexHistoryList:`codexHistoryList`,codexHistorySummary:`codexHistorySummary`,codexMessage:`codexMessage`,codexMessageAge:`codexMessageAge`,codexMessageAgent:`codexMessageAgent`,codexMessageHeader:`codexMessageHeader`,codexMessageLabel:`codexMessageLabel`,codexMessageText:`codexMessageText`,codexMessageThought:`codexMessageThought`,codexMessageUser:`codexMessageUser`,codexOption:`codexOption`,codexOptionLabel:`codexOptionLabel`,codexOptions:`codexOptions`,codexOptionSelect:`codexOptionSelect`,codexOutput:`codexOutput`,codexTranscript:`codexTranscript`,codexWaiting:`codexWaiting`,codexWorking:`codexWorking`,codexWorkingSpinner:`codexWorkingSpinner`,content:`content`,debugFooter:`debugFooter`,developmentControls:`developmentControls`,developmentControlsDropdown:`developmentControlsDropdown`,dialog:`dialog`,disabledTooltip:`disabledTooltip`,drawerBody:`drawerBody`,errorIcon:`errorIcon`,errorMessage:`errorMessage`,filePath:`filePath`,files:`files`,header:`header`,headerActions:`headerActions`,iconButton:`iconButton`,iconOnly:`iconOnly`,indicatorButton:`indicatorButton`,indicatorDot:`indicatorDot`,message:`message`,paragraph:`paragraph`,pendingCommits:`pendingCommits`,primary:`primary`,radiate:`radiate`,rebaseProgress:`rebaseProgress`,rebaseProgressFill:`rebaseProgressFill`,rebaseProgressLabel:`rebaseProgressLabel`,rebaseProgressTrack:`rebaseProgressTrack`,scenarioButton:`scenarioButton`,scenarioDescription:`scenarioDescription`,scenarioLabel:`scenarioLabel`,scenarioList:`scenarioList`,section:`section`,sectionDescription:`sectionDescription`,sectionHeading:`sectionHeading`,sectionLink:`sectionLink`,sectionTitle:`sectionTitle`,setupFailure:`setupFailure`,srOnly:`srOnly`,successIcon:`successIcon`,surface:`surface`,title:`title`,titleIcon:`titleIcon`,warning:`warning`};const _e=`GPT-6 Luna (High)`,ve={effort:`high`,model:`gpt-6-luna`};let U=!1;const W=new Set,ye=[{description:`A clean managed checkout with no available updates.`,id:`idle`,label:`No updates`,status:{mode:`managed`,warnings:[]}},{description:`Tracked and untracked files awaiting review.`,id:`local-changes`,label:`Review local changes`,status:{draft:{fingerprint:`debug-local-changes`,tracked:!0,untracked:[`src/web/new-feature.tsx`,`src/web/new-feature.style.ts`]},mode:`managed`,warnings:[]}},{description:`Local changes with a proposed Conventional Commit message.`,id:`confirm-commit`,label:`Confirm commit`,status:{draft:{fingerprint:`debug-confirm-commit`,tracked:!0,untracked:[`src/web/new-feature.tsx`]},mode:`managed`,proposal:`feat: add the new feature`,warnings:[]}},{description:`A newer commit is available from the local dev branch.`,id:`dev-update`,label:`Local dev update`,status:{mode:`managed`,target:{commit:`1234567890abcdef`,commits:[{commit:`fedcba0987654321`,shortCommit:`fedcba098765`,subject:`feat: add managed preview foundations`},{commit:`1234567890abcdef`,shortCommit:`1234567890ab`,subject:`feat: update the managed preview`}],shortCommit:`1234567890ab`,source:`dev`,subject:`feat: update the managed preview`},warnings:[]}},{description:`A newer upstream main commit is ready to refresh.`,id:`upstream-update`,label:`Upstream update`,status:{mode:`managed`,target:{commit:`abcdef1234567890`,commits:[{commit:`0123456789abcdef`,shortCommit:`0123456789ab`,subject:`chore: refresh shared dependencies`},{commit:`abcdef1234567890`,shortCommit:`abcdef123456`,subject:`fix: update shared project defaults`}],shortCommit:`abcdef123456`,source:`upstream`,subject:`fix: update shared project defaults`},warnings:[]}},{description:`The accepted update is currently being integrated.`,id:`busy`,label:`Busy integration`,status:{busy:`Integrating accepted update`,mode:`managed`,warnings:[]}},{description:`Managed development is paused until the checkout returns to main.`,id:`paused`,label:`Paused checkout`,status:{message:`Managed synchronization is paused until the primary checkout is back on local main.`,mode:`waiting`,warnings:[]}},{description:`Managed development cannot run from the current checkout.`,id:`unavailable`,label:`Unavailable checkout`,status:{message:`Managed development only runs from the primary checkout.`,mode:`unmanaged`,warnings:[]}},{description:`A managed-development warning requiring attention.`,id:`warning`,label:`Warning`,status:{mode:`managed`,warnings:[`The remote update could not be checked. The last known project state is shown.`]}},{description:`Typechecking failed after synchronization.`,id:`failed-check`,label:`Failed check`,status:{checks:{commit:`1234567890abcdef`,commands:[{command:`pnpm typecheck`,failureId:`debug-typecheck-failure`,output:`src/web/feature.tsx(12,4): error TS2322: Type mismatch.`,status:`failed`},{command:`pnpm test`,status:`passed`}],trigger:`synchronization`},mode:`managed`,warnings:[]}},{description:`Dependency installation failed after synchronization.`,id:`dependency-failure`,label:`Dependency failure`,status:{mode:`managed`,setupFailure:{command:`pnpm install --frozen-lockfile`,commit:`1234567890abcdef`,message:`The project was synchronized, but dependency installation failed. Fix the package or lockfile issue, then retry the install.`,output:`ERR_PNPM_OUTDATED_LOCKFILE Cannot install with a frozen lockfile.`,restartRequired:!0,stage:`dependencies`},warnings:[]}},{description:`Database migration failed and can be reset.`,id:`migration-failure`,label:`Database failure`,status:{mode:`managed`,setupFailure:{command:`pnpm db migrate-local`,commit:`1234567890abcdef`,message:`The project was synchronized, but its database migration failed. The previous database was restored.`,output:`Migration 0012_add_project_state failed: duplicate column name.`,restartRequired:!1,stage:`migration`},warnings:[]}},{codex:{commits:[{commit:`1234567890abcdef`,shortCommit:`1234567890ab`,subject:`feat: add managed development`}],messages:[{kind:`user`,text:`Resolve the current Git rebase conflicts in src/web/root.tsx.`},{kind:`thought`,text:`Inspecting the conflicting layout changes.`},{kind:`thought`,text:`Preserving the behavior introduced on both branches.`}],phase:`running`,requestId:`debug-codex-running`,totalCommits:4},description:`Codex is resolving conflicts with previous thoughts collapsed.`,id:`codex-running`,label:`Codex reasoning`,status:{busy:`Integrating accepted update`,mode:`managed`,warnings:[]}},{codex:{commits:[{commit:`1234567890abcdef`,shortCommit:`1234567890ab`,subject:`feat: add managed development`}],messages:[{kind:`user`,text:`Resolve the current Git rebase conflicts in src/web/root.tsx.`},{kind:`thought`,text:`Preserving the behavior introduced on both branches.`},{author:_e,kind:`agent`,text:`Resolved root.tsx while preserving both the command layer and overlay mounting.`}],phase:`complete`,requestId:`debug-codex-message`,totalCommits:1},description:`Codex has produced its final message while synchronization finishes.`,id:`codex-message`,label:`Codex response`,status:{busy:`Integrating accepted update`,mode:`managed`,warnings:[]}},{codex:{commits:[],messages:[{kind:`user`,text:`Resolve the current Git merge conflicts in src/web/root.tsx.`},{kind:`thought`,text:`The conflict could not be resolved safely.`}],phase:`error`,requestId:`debug-codex-error`},description:`The Codex-assisted conflict resolution failed.`,error:`Codex could not resolve the merge conflicts.`,id:`codex-error`,label:`Codex failure`,status:{mode:`managed`,warnings:[]}},{description:`A durable Codex completion waiting for acknowledgment.`,id:`codex-finished`,label:`Codex finished`,status:{codexCompletion:{commits:[{commit:`1234567890abcdef`,shortCommit:`1234567890ab`,subject:`feat: add managed development`}],finalMessage:`Resolved root.tsx while preserving both the command layer and overlay mounting.`,id:`debug-completion`,messages:[{kind:`user`,text:`Resolve the current Git rebase conflicts in src/web/root.tsx.`},{kind:`thought`,text:`Inspecting the conflicting layout changes.`},{author:_e,kind:`agent`,text:`Resolved root.tsx while preserving both the command layer and overlay mounting.`}],totalCommits:1},mode:`managed`,warnings:[]}},{description:`A successful synchronization result before it auto-dismisses.`,id:`success`,label:`Refresh success`,status:{mode:`managed`,warnings:[]},success:{heading:`Refresh complete`,message:`Your project is up to date.`}}],be=[`codex-running`,`codex-finished`,`codex-message`,`codex-error`,`migration-failure`,`dependency-failure`,`failed-check`,`confirm-commit`,`local-changes`,`upstream-update`,`dev-update`,`busy`,`warning`,`paused`,`unavailable`,`success`,`idle`].map(e=>{let t=ye.find(t=>t.id===e);if(!t)throw Error(`Missing managed dev debug scenario: ${e}`);return t});function xe(){G(!U)}function G(e){if(U!==e){U=e;for(let e of W)e()}}function Se({bottomOffset:e,debug:t=!1,indicator:n,rightOffset:r}){return x(t?Te:Ce,{bottomOffset:e,indicator:n,rightOffset:r})}function Ce({bottomOffset:e,indicator:t,rightOffset:n}){let{act:r,checkFailure:i,codex:a,codexOptions:o,dismissCheckFailure:c,dismissError:l,dismissSuccess:u,error:f,hmrReady:p,pendingAction:h,setCodexOptions:g,status:_,success:v}=Je(),y=Ke();m(()=>{if(!v)return;let e=setTimeout(()=>{u(),G(!1)},1600);return()=>clearTimeout(e)},[u,v]);let b=t??x(q,{}),S=d(b)&&b.type===q?s(b,{paused:!_?.target}):b;return x(we,{bottomOffset:e,ready:p,indicator:p&&_&&$(_,i)?S:null,rightOffset:n,children:x(Oe,{act:r,checkFailure:i,codex:a,codexOptions:o,developmentControls:y,dismissCheckFailure:c,dismissError:l,error:f,onClose:()=>{_?.codexCompletion&&r({id:_.codexCompletion.id,type:`acknowledge-codex`}),G(!1)},pendingAction:h,setCodexOptions:g,status:_,success:v})})}function we({bottomOffset:e,children:t,indicator:n,openOnMount:r=!1,ready:i=!0,rightOffset:a}){let[o,s]=_(null),c=v(Ye,Xe,Ze);m(()=>{r&&G(!0);let e=!0,t=E(`coreframe-managed-dev`,document.body,{css:`@font-face{font-family:SN Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(./files/sn-pro-cyrillic-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:SN Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(./files/sn-pro-cyrillic-wght-normal.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:SN Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(./files/sn-pro-vietnamese-wght-normal.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:SN Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(./files/sn-pro-latin-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:SN Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(./files/sn-pro-latin-wght-normal.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
170
170
 
171
171
  @font-face{font-family:Google Sans Code Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(./files/google-sans-code-adlam-wght-normal.woff2)format("woff2-variations");unicode-range:U+61F,U+640,U+2015,U+201B,U+2020-2021,U+2030,U+204F,U+25CC,U+2E28-2E29,U+2E41,U+1E900-1E95F}@font-face{font-family:Google Sans Code Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(./files/google-sans-code-canadian-aboriginal-wght-normal.woff2)format("woff2-variations");unicode-range:U+2C7,U+2D8-2D9,U+2DB,U+307,U+1400-167F,U+18B0-18F5,U+25CC,U+11AB?}@font-face{font-family:Google Sans Code Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(./files/google-sans-code-cherokee-wght-normal.woff2)format("woff2-variations");unicode-range:U+300-302,U+304,U+30B-30C,U+323-324,U+330-331,U+13A0-13FF,U+AB70-ABBF}@font-face{font-family:Google Sans Code Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(./files/google-sans-code-math-wght-normal.woff2)format("woff2-variations");unicode-range:U+302-303,U+305,U+307-308,U+310,U+312,U+315,U+31A,U+326-327,U+32C,U+32F-330,U+332-333,U+338,U+33A,U+346,U+34D,U+391-3A1,U+3A3-3A9,U+3B1-3C9,U+3D1,U+3D5-3D6,U+3F0-3F1,U+3F4-3F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE??}@font-face{font-family:Google Sans Code Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(./files/google-sans-code-old-permic-wght-normal.woff2)format("woff2-variations");unicode-range:U+300,U+306-308,U+313,U+483,U+20DB,U+25CC,U+10350-1037A}@font-face{font-family:Google Sans Code Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(./files/google-sans-code-symbols-wght-normal.woff2)format("woff2-variations");unicode-range:U+1-C,U+E-1F,U+7F-9F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+28??,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B??,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F0??,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F7??,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB??}@font-face{font-family:Google Sans Code Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(./files/google-sans-code-symbols2-wght-normal.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Google Sans Code Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(./files/google-sans-code-syriac-wght-normal.woff2)format("woff2-variations");unicode-range:U+303-304,U+307-308,U+30A,U+320,U+323-325,U+32D-32E,U+330-331,U+60C,U+61B-61C,U+61F,U+621,U+640,U+64B-655,U+660-66C,U+670,U+700-74F,U+860-86A,U+1DF8,U+1DFA,U+200C-200F,U+25CC,U+2670-2671}@font-face{font-family:Google Sans Code Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(./files/google-sans-code-vietnamese-wght-normal.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Google Sans Code Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(./files/google-sans-code-latin-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Google Sans Code Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(./files/google-sans-code-latin-wght-normal.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
172
172
 
173
- [data-isolet-root]{--overlay-font-body:"SN Pro Variable", system-ui, sans-serif;--overlay-font-monospace:"Google Sans Code Variable", ui-monospace, monospace;color-scheme:light dark;--oc-white:#fff;--oc-gray-0:#f8f9fa;--oc-gray-1:#f1f3f5;--oc-gray-2:#e9ecef;--oc-gray-3:#dee2e6;--oc-gray-4:#ced4da;--oc-gray-5:#adb5bd;--oc-gray-6:#868e96;--oc-gray-7:#495057;--oc-gray-8:#343a40;--oc-gray-9:#212529;--oc-red-0:#fff5f5;--oc-red-2:#ffc9c9;--oc-red-7:#f03e3e;--oc-red-9:#c92a2a;--oc-grape-0:#f8f0fc;--oc-grape-2:#eebefa;--oc-grape-7:#ae3ec9;--oc-grape-9:#862e9c;--oc-blue-0:#e7f5ff;--oc-blue-2:#a5d8ff;--oc-blue-4:#4dabf7;--oc-blue-6:#228be6;--oc-blue-7:#1c7ed6;--oc-blue-9:#1864ab;--oc-green-0:#ebfbee;--oc-green-2:#b2f2bb;--oc-green-7:#37b24d;--oc-green-9:#2b8a3e;--oc-yellow-0:#fff9db;--oc-yellow-2:#ffec99;--oc-yellow-7:#f59f00;--oc-yellow-9:#e67700;--overlay-background:var(--oc-white);--overlay-surface-subtle:var(--oc-gray-0);--overlay-surface-muted:var(--oc-gray-1);--overlay-border:var(--oc-gray-3);--overlay-border-strong:var(--oc-gray-4);--overlay-text:var(--oc-gray-9);--overlay-text-muted:var(--oc-gray-7);--overlay-text-subtle:var(--oc-gray-6);--overlay-accent:var(--oc-blue-6);--overlay-accent-hover:var(--oc-blue-7);--overlay-accent-soft:var(--oc-blue-0);--overlay-accent-border:var(--oc-blue-2);--overlay-accent-text:var(--oc-blue-9);--overlay-thought-soft:var(--oc-grape-0);--overlay-thought-border:var(--oc-grape-2);--overlay-thought-text:var(--oc-grape-9);--overlay-success-soft:var(--oc-green-0);--overlay-success-border:var(--oc-green-2);--overlay-success-text:var(--oc-green-9);--overlay-warning-soft:var(--oc-yellow-0);--overlay-warning-border:var(--oc-yellow-2);--overlay-warning-text:var(--oc-yellow-9);--overlay-danger-soft:var(--oc-red-0);--overlay-danger-border:var(--oc-red-2);--overlay-danger-text:var(--oc-red-9);color:var(--overlay-text);font:14px/1.45 var(--overlay-font-body)}.surface{--managed-dev-bottom-offset:0px;--managed-dev-right-offset:0px}.indicatorButton{appearance:none;bottom:calc(10px + env(safe-area-inset-bottom,0px) + var(--managed-dev-bottom-offset));cursor:pointer;pointer-events:auto;height:44px;right:calc(10px + env(safe-area-inset-right,0px) + var(--managed-dev-right-offset));background:0 0;border:0;justify-content:center;align-items:center;width:44px;padding:0;display:flex;position:fixed}.indicatorButton:focus-visible{outline:3px solid var(--overlay-accent-border);outline-offset:-3px}.indicatorDot{background:var(--managed-dev-indicator-color);box-shadow:inset 0 0 0 .5px color-mix(in srgb, var(--overlay-border) 30%, transparent);height:var(--managed-dev-indicator-size);width:var(--managed-dev-indicator-size);border-radius:50%;display:block;position:relative}.indicatorDot:before{border:max(1px, calc(var(--managed-dev-indicator-size) / 9)) solid var(--managed-dev-indicator-color);border-radius:inherit;content:"";animation:1.8s ease-out infinite radiate;position:absolute;inset:0}.dialog{background:var(--overlay-background);border:1px solid var(--overlay-border);box-shadow:0 18px 60px color-mix(in srgb, var(--oc-gray-9) 28%, transparent), 0 2px 8px color-mix(in srgb, var(--oc-gray-9) 12%, transparent);color:var(--overlay-text);box-sizing:border-box;height:auto;bottom:20px;left:unset;overscroll-behavior:contain;pointer-events:auto;border-radius:12px;width:min(520px,100vw - 18px);max-width:min(520px,100vw - 18px);max-height:none;margin:0;padding:12px 18px;position:fixed;right:20px;overflow:hidden}.dialog[open]{flex-direction:column;gap:12px;display:flex}.drawerBody{align-content:start;gap:16px;min-height:80px;display:grid;overflow:auto}.header{justify-content:space-between;align-items:center;gap:12px;display:flex}.headerActions{align-items:center;display:flex}.developmentControlsDropdown{display:flex;position:relative}.title{align-items:center;gap:8px;margin:0;font-size:16px;display:flex}.titleIcon{color:var(--overlay-accent);flex:none}.iconButton{color:inherit;cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;min-width:32px;min-height:32px;padding:4px;display:inline-flex}.iconButton:hover{background:var(--overlay-surface-muted);border-radius:8px}.iconButton:focus-visible,.scenarioButton:focus-visible,.sectionLink:focus-visible,.button:focus-visible,.message:focus-visible{outline:3px solid var(--overlay-accent-border);outline-offset:2px}.content{gap:12px;display:grid}.section{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border);border-radius:12px;gap:12px;padding:14px;display:grid}.sectionHeading{justify-content:space-between;align-items:start;gap:12px;display:flex}.sectionTitle{margin:0;font-size:13px}.sectionDescription{color:var(--overlay-text-muted);margin:3px 0 0;font-size:12px}.sectionLink{color:var(--overlay-accent-text);cursor:pointer;font:inherit;background:0 0;border:0;padding:2px;font-size:12px}.debugFooter{background:var(--overlay-thought-soft);border-top:.5px solid var(--overlay-thought-border);color:var(--overlay-thought-text);flex:none;margin:0 -18px -12px;padding:4px 18px;font-size:11px;line-height:1.3}.scenarioList{gap:7px;max-height:min(480px,100dvh - 210px);display:grid;overflow:auto}.scenarioButton{background:var(--overlay-surface-subtle);color:inherit;cursor:pointer;font:inherit;text-align:start;border:1px solid #0000;border-radius:10px;gap:3px;padding:10px;display:grid}.scenarioButton:hover{background:var(--overlay-accent-soft);border-color:var(--overlay-accent-border)}.scenarioLabel{font-weight:650}.scenarioDescription{color:var(--overlay-text-muted);font-size:12px}.paragraph{margin:0}.pendingCommits{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border);box-sizing:border-box;font:12px/1.5 var(--overlay-font-monospace);white-space:pre-wrap;border-radius:10px;max-height:190px;margin:0;padding:10px;overflow:auto}.codexOutput{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border);box-sizing:border-box;font:12px/1.5 var(--overlay-font-monospace);white-space:pre-wrap;word-break:break-word;border-radius:10px;max-height:280px;margin:0;padding:10px;overflow:auto}.codexWorking{color:var(--overlay-text-muted);font:12px/1.5 var(--overlay-font-monospace)}.codexWorkingSpinner{color:var(--overlay-accent)}.codexTranscript{gap:10px;max-height:360px;display:grid;overflow:auto}.codexMessage{border:1px solid #0000;border-radius:10px;gap:5px;padding:10px;display:grid}.codexMessageUser{background:var(--overlay-accent-soft);border-color:var(--overlay-accent-border)}.codexMessageThought{background:var(--overlay-thought-soft);border-color:var(--overlay-thought-border)}.codexMessageAgent{background:var(--overlay-success-soft);border-color:var(--overlay-success-border)}.codexMessageHeader{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.codexMessageLabel{color:var(--overlay-text-muted);letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:11px;font-weight:650}.codexMessageAge{color:var(--overlay-text-subtle);white-space:nowrap;font-size:11px}.codexMessageText,.codexWaiting{font:12px/1.5 var(--overlay-font-monospace);white-space:pre-wrap;word-break:break-word;margin:0}.codexWaiting{color:var(--overlay-text-subtle)}.rebaseProgress{gap:8px;display:grid}.rebaseProgressLabel{color:var(--overlay-text-muted);justify-content:space-between;align-items:baseline;font-size:12px;display:flex}.rebaseProgressLabel strong{color:var(--overlay-success-text)}.rebaseProgressTrack{background:var(--overlay-surface-muted);border-radius:999px;height:6px;overflow:hidden}.rebaseProgressFill{background:var(--overlay-success-text);border-radius:inherit;height:100%;transition:width .18s;display:block}.codexHistorySummary{cursor:pointer;font-size:12px;font-weight:600}.codexHistoryList{gap:8px;padding-top:8px;display:grid}.files{gap:7px;max-height:190px;display:grid;overflow:auto}.checkbox{overflow-wrap:anywhere;align-items:start;gap:8px;display:flex}.checkbox input{accent-color:var(--overlay-accent)}.filePath{font-family:var(--overlay-font-monospace)}.message{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border-strong);box-sizing:border-box;color:var(--overlay-text);font-family:var(--overlay-font-monospace);resize:vertical;border-radius:10px;width:100%;min-height:92px;padding:10px}.actions{flex-wrap:wrap;justify-content:end;gap:8px;display:flex}.developmentControls{background:var(--overlay-background);border:1px solid var(--overlay-border);box-shadow:0 10px 30px color-mix(in srgb, var(--oc-gray-9) 18%, transparent);box-sizing:border-box;z-index:1;border-radius:10px;gap:4px;min-width:170px;max-width:calc(100vw - 32px);margin:0;padding:4px;display:grid;position:absolute;top:calc(100% + 6px);right:0}.developmentControls .actions{justify-content:stretch;align-items:stretch;gap:0;width:100%;display:grid}.developmentControls .button{text-align:start;white-space:nowrap;justify-content:start;justify-self:stretch;width:100%;min-height:32px}.button{border:1px solid var(--overlay-border-strong);cursor:pointer;font:inherit;background:0 0;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:7px 11px;transition:opacity .14s;display:inline-flex}.button:hover:not(:disabled){background:var(--overlay-surface-muted)}.primary{background:var(--overlay-accent);border-color:var(--overlay-accent);color:var(--oc-white)}.primary:hover:not(:disabled){background:var(--overlay-accent-hover);border-color:var(--overlay-accent-hover)}.developmentControls .button{color:inherit;background:0 0;border:0}.developmentControls .button:hover:not(:disabled){background:var(--overlay-surface-muted)}.button:disabled{cursor:wait;opacity:.55}.buttonSpinner{animation:.7s linear infinite button-spin}.iconOnly{box-sizing:border-box;flex:0 0 32px;width:32px;min-width:32px;height:32px;padding:7px}.warning{color:var(--overlay-warning-text);white-space:pre-wrap}.checkFailure{background:var(--overlay-danger-soft);border:1px solid var(--overlay-danger-border);color:var(--overlay-danger-text);border-radius:10px;gap:10px;padding:10px;display:grid}.checkCommand{font-family:var(--overlay-font-monospace);margin:0;font-weight:600}.checkGuidance{margin:3px 0 0;font-size:12px}.setupFailure{background:var(--overlay-danger-soft);border:1px solid var(--overlay-danger-border);color:var(--overlay-danger-text);border-radius:10px;gap:10px;padding:10px;display:grid}.actionError{background:var(--overlay-warning-soft);border:1px solid var(--overlay-warning-border);color:var(--overlay-warning-text);white-space:pre-wrap;border-radius:10px;gap:10px;padding:10px;display:grid}.errorMessage{grid-template-columns:auto 1fr;align-items:start;gap:8px;display:grid}.actionSuccess{background:var(--overlay-success-soft);border:1px solid var(--overlay-success-border);color:var(--overlay-success-text);border-radius:10px;grid-template-columns:auto 1fr;align-items:start;gap:8px;padding:10px;display:grid}.errorIcon,.successIcon{margin-top:1px}@media (prefers-color-scheme:dark){[data-isolet-root]{--overlay-background:var(--oc-gray-9);--overlay-surface-subtle:var(--oc-gray-8);--overlay-surface-muted:var(--oc-gray-7);--overlay-border:var(--oc-gray-7);--overlay-border-strong:var(--oc-gray-6);--overlay-text:var(--oc-gray-0);--overlay-text-muted:var(--oc-gray-4);--overlay-text-subtle:var(--oc-gray-5);--overlay-accent:var(--oc-blue-6);--overlay-accent-hover:var(--oc-blue-7);--overlay-accent-soft:color-mix(in srgb, var(--oc-blue-9) 32%, var(--overlay-background));--overlay-accent-border:var(--oc-blue-7);--overlay-accent-text:var(--oc-blue-2);--overlay-thought-soft:color-mix(in srgb, var(--oc-grape-9) 30%, var(--overlay-background));--overlay-thought-border:var(--oc-grape-7);--overlay-thought-text:var(--oc-grape-2);--overlay-success-soft:color-mix(in srgb, var(--oc-green-9) 30%, var(--overlay-background));--overlay-success-border:var(--oc-green-7);--overlay-success-text:var(--oc-green-2);--overlay-warning-soft:color-mix(in srgb, var(--oc-yellow-9) 24%, var(--overlay-background));--overlay-warning-border:var(--oc-yellow-7);--overlay-warning-text:var(--oc-yellow-2);--overlay-danger-soft:color-mix(in srgb, var(--oc-red-9) 30%, var(--overlay-background));--overlay-danger-border:var(--oc-red-7);--overlay-danger-text:var(--oc-red-2)}}@keyframes radiate{0%{opacity:.75;transform:scale(1)}to{opacity:0;transform:scale(2.4)}}@keyframes button-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.buttonSpinner{animation:none}}@media (width<=600px){.dialog{max-width:none;padding:calc(16px + env(safe-area-inset-top,0px)) calc(16px + env(safe-area-inset-right,0px)) calc(16px + env(safe-area-inset-bottom,0px)) calc(16px + env(safe-area-inset-left,0px));border-radius:0;width:auto;inset:0}.debugFooter{margin:0 calc(-16px - env(safe-area-inset-right,0px)) calc(-16px - env(safe-area-inset-bottom,0px)) calc(-16px - env(safe-area-inset-left,0px));padding:4px calc(16px + env(safe-area-inset-right,0px)) calc(4px + env(safe-area-inset-bottom,0px)) calc(16px + env(safe-area-inset-left,0px))}.button{min-height:44px}.checkbox{align-items:center;min-height:44px}.iconButton{min-width:44px;min-height:44px}.iconOnly{flex-basis:44px;width:44px;min-width:44px;height:44px}}@media (prefers-reduced-motion:reduce){.indicatorDot:before{opacity:.45;animation:none;transform:scale(1.65)}}
174
- `,hostAttributes:{"aria-live":`polite`,id:`coreframe-managed-dev`},hostStyles:{pointerEvents:`none`,position:`fixed`},zIndex:2147483647});return queueMicrotask(()=>{e&&s(t.container)}),()=>{e=!1,t.host?.remove()}},[r]);let l={"--managed-dev-bottom-offset":G(e),"--managed-dev-right-offset":G(a)};return o?g(y(`div`,{className:z.surface,style:l,children:[i?n:null,i&&c?t:null]}),o):null}function we({bottomOffset:e,indicator:t,rightOffset:n}){let[r,i]=m(),[o,s]=m(),[c,u]=m(),d=U.find(({id:e})=>e===r),f=e=>{i(e),s(void 0),u(void 0)},p=async e=>{if(e.type===`acknowledge-codex`){f(void 0);return}u(We(e))},h=t??v(q,{}),g={pending:!1,reloadPage:()=>s(`Page reload simulated.`),restartVite:()=>s(`Vite restart simulated.`),success:o};return v(Ce,{bottomOffset:e,indicator:l(h)&&h.type===q?a(h,{paused:d?.status.mode===`waiting`}):h,openOnMount:!0,rightOffset:n,children:d?v(Ee,{act:p,checkFailure:Q(d.status),codex:d.codex,developmentControls:g,dismissCheckFailure:()=>void 0,dismissError:()=>void 0,error:d.error,onBack:()=>f(void 0),onClose:()=>W(!1),status:d.status,success:c??d.success},d.id):v(Te,{developmentControls:g,onClose:()=>W(!1),onSelect:e=>f(e)})})}function G(e){return typeof e==`number`?`${e}px`:e??`0px`}function Te({developmentControls:e,onClose:t,onSelect:n}){return v(K,{debug:!0,developmentControls:e,icon:ae,onClose:t,title:`Managed dev overlay scenarios`,children:v(`div`,{className:z.scenarioList,children:ye.map(e=>y(`button`,{className:z.scenarioButton,onClick:()=>n(e.id),type:`button`,children:[v(`span`,{className:z.scenarioLabel,children:e.label}),v(`span`,{className:z.scenarioDescription,children:e.description})]},e.id))})})}function K({children:e,debug:t=!1,developmentControls:n,icon:r,onBack:i,onClose:a,title:o}){let s=p(null),c=p(null),[l,u]=m(!1);return f(()=>{let e=e=>{let t=e.composedPath(),n=c.current;n&&!t.includes(n)&&u(!1);let r=s.current;r&&!t.includes(r)&&a()},t=e=>{e.key===`Escape`&&(e.preventDefault(),a())};return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[a]),y(`dialog`,{"aria-labelledby":`coreframe-managed-title`,"aria-modal":`true`,className:z.dialog,id:`coreframe-managed-dev-dialog`,open:!0,ref:s,children:[y(`div`,{className:z.header,children:[y(`h2`,{className:z.title,id:`coreframe-managed-title`,children:[v(r,{"aria-hidden":`true`,className:z.titleIcon,size:18}),o]}),y(`div`,{className:z.headerActions,children:[i?v(`button`,{"aria-label":`Back to scenarios`,className:z.iconButton,onClick:i,type:`button`,children:v(ie,{"aria-hidden":`true`,size:18})}):null,n?y(`div`,{className:z.developmentControlsDropdown,ref:c,children:[v(`button`,{"aria-expanded":l,"aria-haspopup":`menu`,"aria-label":`Development controls`,className:z.iconButton,onClick:()=>u(e=>!e),type:`button`,children:v(ue,{"aria-hidden":`true`,size:18})}),l?v(De,{controls:n}):null]}):null,v(`button`,{"aria-label":`Close managed development`,className:z.iconButton,onClick:a,type:`button`,children:v(L,{"aria-hidden":`true`,size:18})})]})]}),v(`div`,{className:z.drawerBody,children:e}),t?v(`footer`,{className:z.debugFooter,children:`Debug preview · project actions are simulated locally`}):null]})}function q({color:e=`#228be6`,paused:t=!1,size:n=14,warningColor:r=`#fd7e14`}){let i=h(Ke,qe,Je),a={"--managed-dev-indicator-color":t?r:e,"--managed-dev-indicator-size":typeof n==`number`?`${n}px`:n};return v(`button`,{"aria-controls":`coreframe-managed-dev-dialog`,"aria-expanded":i,"aria-label":`${i?`Hide`:`Show`} Coreframe managed development`,className:z.indicatorButton,onClick:be,style:a,type:`button`,children:v(`span`,{className:z.indicatorDot})})}function Ee({act:e,checkFailure:t,codex:n,developmentControls:r,dismissCheckFailure:i,dismissError:a,error:o,onBack:s,onClose:c,pendingAction:l,status:u,success:d}){let[h,g]=m({value:``}),[b,x]=m(()=>({paths:new Set})),S=p(null),C=u?.codexCompletion,w=u?.draft,T=u?.target,E=!C&&!d&&!n,D=b.fingerprint===w?.fingerprint?b.paths:new Set(w?.untracked??[]),O=h.fingerprint===w?.fingerprint&&h.proposal===u?.proposal?h.value:u?.proposal??``,k=!!(w?.untracked.length&&w.untracked.every(e=>D.has(e)));return f(()=>{let e=S.current;e&&n?.phase===`running`&&(e.scrollTop=e.scrollHeight)},[n]),t?v(K,{debug:!!s,developmentControls:r,icon:I,onBack:s,onClose:c,title:`Managed development check failed`,children:y(`div`,{className:z.content,children:[v(`div`,{className:z.checkFailure,role:`alert`,children:y(`div`,{className:z.checkMessage,children:[y(`p`,{className:z.checkCommand,children:[t.check.command,` failed`]}),v(`p`,{className:z.checkGuidance,children:Be(t)}),v(`p`,{className:z.checkGuidance,children:`Copy the output and paste it into your agent orchestration tool.`})]})}),y(Y,{children:[v(Z,{ariaLabel:`Dismiss error`,icon:L,iconOnly:!0,onClick:()=>i(t),children:`Dismiss`}),v(Z,{ariaLabel:`Copy output for ${t.check.command}`,icon:M,iconOnly:!0,onClick:()=>void navigator.clipboard.writeText(t.check.output??``),children:`Copy output`})]})]})}):v(K,{debug:!!s,developmentControls:r,icon:Fe({codex:n,completion:C,status:u,success:d}),onBack:s,onClose:c,title:C?`Codex conflict resolution finished`:d?.heading??(n?.phase===`complete`?`Finishing synchronization…`:n?.phase===`error`?`Conflict resolution failed.`:n?`Resolving conflicts with Codex…`:Pe(u)),children:y(`div`,{className:z.content,children:[d&&!C?y(`div`,{className:z.actionSuccess,role:`status`,children:[v(j,{"aria-hidden":`true`,className:z.successIcon,size:18}),v(`p`,{className:z.paragraph,children:d.message})]}):null,o?y(_,{children:[v(`div`,{className:z.actionError,role:`alert`,children:v(X,{children:o})}),v(Y,{children:v(Z,{ariaLabel:`Dismiss error`,icon:L,iconOnly:!0,onClick:a,children:`Dismiss`})})]}):null,C||!d&&n?v(Oe,{commits:C?.commits??n?.commits??[],completion:C,messages:C?.messages??n?.messages??[],outputRef:S,totalCommits:C?.totalCommits??n?.totalCommits,working:n?.phase===`running`}):E&&u?.setupFailure?y(_,{children:[y(`div`,{className:z.setupFailure,role:`alert`,children:[v(X,{children:u.setupFailure.message}),v(`pre`,{className:z.codexOutput,children:u.setupFailure.output})]}),y(Y,{children:[v(Z,{ariaLabel:`Dismiss error`,icon:L,iconOnly:!0,onClick:c,children:`Dismiss`}),v(Z,{ariaLabel:`Copy diagnostics`,disabled:!!u.busy,icon:M,iconOnly:!0,onClick:()=>void navigator.clipboard.writeText(He(u.setupFailure)),children:`Copy diagnostics`}),u.setupFailure.stage===`dependencies`?v(Z,{ariaLabel:`Retry install`,busy:l?.type===`retry-install`,disabled:!!u.busy,icon:P,iconOnly:!0,onClick:()=>void e({type:`retry-install`}),primary:!0,children:`Retry install`}):u.setupFailure.stage===`codegen`?v(Z,{ariaLabel:`Retry codegen`,busy:l?.type===`retry-codegen`,disabled:!!u.busy,icon:P,iconOnly:!0,onClick:()=>void e({type:`retry-codegen`}),primary:!0,children:`Retry codegen`}):v(Z,{busy:l?.type===`reset-database`,disabled:!!u.busy,icon:F,onClick:()=>{globalThis.confirm(`Reset the local database? This permanently deletes its current data, then reapplies migrations and seed scripts.`)&&e({type:`reset-database`})},primary:!0,children:`Reset database`})]})]}):E&&Le(u)?y(_,{children:[v(`p`,{className:z.paragraph,children:u?.message}),v(Y,{children:v(Z,{ariaLabel:`Retry managed development`,busy:l?.type===`retry-supervisor`,disabled:!!u?.busy,icon:P,immediatelyEnabled:!0,onClick:()=>void e({type:`retry-supervisor`}),primary:!0,children:`Retry managed development`})})]}):E?v(`p`,{className:z.paragraph,children:u?u.busy||u.message||Ie(u):`Checking managed development status…`}):null,C&&!o?v(Y,{children:v(Z,{busy:l?.type===`acknowledge-codex`,disabled:!!u?.busy,icon:j,onClick:()=>void e({id:C.id,type:`acknowledge-codex`}),primary:!0,children:`Continue`})}):null,E&&u?.mode===`waiting`&&u.message&&!Re(u)?y(`p`,{className:z.paragraph,children:[`To re-enable managed development, run `,v(`code`,{children:`git switch main`}),` in the primary checkout. Synchronization will resume automatically.`]}):null,E&&T&&!w?v(`pre`,{className:z.pendingCommits,children:(T.commits??[T]).map(e=>`${e.shortCommit} ${e.subject}`).join(`
175
- `)}):null,E?u?.warnings.map((e,t)=>v(`p`,{className:`${z.paragraph} ${z.warning}`,children:e},`${t}-${e}`)):null,E&&w?y(_,{children:[y(`div`,{className:z.files,children:[w.untracked.map(e=>v(Ne,{checked:D.has(e),label:v(`span`,{className:z.filePath,children:e}),onChange:t=>x(()=>{let n=new Set(D);return t?n.add(e):n.delete(e),{fingerprint:w.fingerprint,paths:n}})},e)),w.untracked.length>0?v(Ne,{checked:k,label:`Include all untracked files`,onChange:e=>x({fingerprint:w.fingerprint,paths:e?new Set(w.untracked):new Set})}):null]}),u.proposal===void 0?y(Y,{children:[T?v(Z,{busy:l?.type===`reject`,disabled:!!u.busy,icon:F,onClick:()=>void e({type:`reject`}),children:`Reject`}):null,v(Z,{busy:l?.type===`message`,disabled:!!u.busy,icon:me,onClick:()=>void e({type:`message`,fingerprint:w.fingerprint,untracked:[...D]}),primary:!0,children:`Generate commit message`})]}):y(_,{children:[v(`textarea`,{"aria-label":`Commit message`,className:z.message,onChange:e=>g({fingerprint:w.fingerprint,proposal:u.proposal,value:e.target.value}),value:O}),y(Y,{children:[T?v(Z,{busy:l?.type===`reject`,disabled:!!u.busy,icon:F,onClick:()=>void e({type:`reject`}),children:`Reject`}):null,v(Z,{busy:l?.type===(T?`apply`:`commit`),disabled:!!u.busy,icon:N,onClick:()=>{e(T?{type:`apply`,target:T.commit,fingerprint:w.fingerprint,untracked:[...D],message:O}:{type:`commit`,fingerprint:w.fingerprint,untracked:[...D],message:O})},primary:!0,children:T?`Commit and refresh`:`Commit changes`})]})]})]}):E&&T?v(Y,{children:v(Z,{busy:l?.type===`prepare`,disabled:!!u.busy,icon:P,onClick:()=>void e({type:`prepare`,target:T.commit}),primary:!0,children:T.source===`upstream`?`Refresh`:String(T.source)===`dev`?`Sync with dev`:`Sync with main`})}):null]})})}function De({controls:e}){return y(`div`,{"aria-label":`Development controls`,className:z.developmentControls,role:`menu`,children:[y(Y,{children:[v(Z,{immediatelyEnabled:!0,icon:P,onClick:e.reloadPage,role:`menuitem`,children:`Reload page`}),v(Z,{busy:e.pending,immediatelyEnabled:!0,icon:F,onClick:e.restartVite,primary:!0,role:`menuitem`,children:e.pending?`Restarting Vite…`:`Restart Vite`})]}),e.error?v(`div`,{className:z.actionError,role:`alert`,children:v(X,{children:`Vite restart failed: ${e.error}`})}):null,e.success?y(`div`,{className:z.actionSuccess,role:`status`,children:[v(j,{"aria-hidden":`true`,className:z.successIcon,size:18}),v(`p`,{className:z.paragraph,children:e.success})]}):null]})}function Oe({commits:t,completion:n,messages:r,outputRef:i,totalCommits:a,working:o}){let s=[...r].reverse().find(e=>e.kind===`user`),c=[...r].reverse().find(e=>e.kind!==`user`),l=n?[...r].reverse().find(e=>e.kind===`agent`&&e.text===n.finalMessage):c,u=r.filter(e=>e.kind!==`user`&&e!==l),d=n?l??{author:[...r].reverse().find(e=>e.kind===`agent`)?.author,kind:`agent`,text:n.finalMessage}:c,f=l?`message-${r.lastIndexOf(l)}`:`completion`;return y(_,{children:[o?v(`div`,{className:z.codexWorking,children:v(e,{className:z.codexWorkingSpinner,label:`Codex is resolving conflicts`,children:v(ke,{})})}):null,y(`div`,{"aria-live":n?void 0:`polite`,className:z.codexTranscript,ref:i,role:`log`,children:[s?v(J,{message:s}):null,u.length>0?y(`details`,{children:[y(`summary`,{className:z.codexHistorySummary,children:[`History (`,u.length,`)`]}),v(`div`,{className:z.codexHistoryList,children:u.map((e,t)=>v(J,{message:e},`history-${t}`))})]}):null,d?v(J,{message:d,showAge:!0},f):v(`p`,{className:z.codexWaiting,children:`Waiting for Codex output…`}),a?v(Ae,{rebased:t.length,total:a}):null]})]})}function ke(){let e=p(0),[t,n]=m(0);return f(()=>{e.current=Date.now();let t=globalThis.setInterval(()=>{n(Math.floor((Date.now()-e.current)/1e3))},1e3);return()=>globalThis.clearInterval(t)},[]),y(_,{children:[`Working for `,Me(t),`...`]})}function Ae({rebased:e,total:t}){let n=Math.min(e,t),r=Math.round(n/t*100);return y(`section`,{"aria-label":`Rebase progress`,className:z.rebaseProgress,children:[y(`div`,{className:z.rebaseProgressLabel,children:[y(`strong`,{children:[r,`% rebased`]}),y(`span`,{children:[n,` of `,t,` commits`]})]}),v(`div`,{"aria-valuemax":t,"aria-valuemin":0,"aria-valuenow":n,className:z.rebaseProgressTrack,role:`progressbar`,children:v(`span`,{className:z.rebaseProgressFill,style:{width:`${r}%`}})})]})}function J({message:e,showAge:t=!1}){let n=e.kind===`user`?`Request`:e.kind===`thought`?`Codex thought`:e.author??`Codex`,r=e.kind===`user`?z.codexMessageUser:e.kind===`thought`?z.codexMessageThought:z.codexMessageAgent;return y(`section`,{className:`${z.codexMessage} ${r}`,children:[y(`div`,{className:z.codexMessageHeader,children:[v(`h3`,{className:z.codexMessageLabel,children:n}),t?v(je,{}):null]}),v(`p`,{className:z.codexMessageText,children:e.text})]})}function je(){let e=p(0),[t,n]=m(0);return f(()=>{e.current=Date.now();let t=globalThis.setInterval(()=>{n(Math.floor((Date.now()-e.current)/1e3))},1e3);return()=>globalThis.clearInterval(t)},[]),y(`span`,{"aria-hidden":`true`,className:z.codexMessageAge,children:[Me(t),` ago`]})}function Me(e){let t=Math.floor(e/60),n=e%60;return t>0?`${t}m ${n}s`:`${n}s`}function Ne({checked:e,label:t,onChange:n}){return y(`label`,{className:z.checkbox,children:[v(`input`,{checked:e,onChange:e=>n(e.target.checked),type:`checkbox`}),t]})}function Y({children:e}){return v(`div`,{className:z.actions,children:e})}function X({children:e}){return y(`div`,{className:z.errorMessage,children:[v(I,{"aria-hidden":`true`,className:z.errorIcon,size:18}),v(`p`,{className:z.paragraph,children:e})]})}function Z({ariaLabel:e,busy:t,children:n,disabled:r=!1,icon:i,iconOnly:a=!1,immediatelyEnabled:o=!1,onClick:s,primary:c=!1,role:l}){let[u,d]=m(!o);return f(()=>{if(o)return;let e=globalThis.setTimeout(()=>d(!1),1e3);return()=>globalThis.clearTimeout(e)},[o]),y(`button`,{"aria-label":e,"aria-busy":!!t,className:`${z.button} ${a?z.iconOnly:``} ${c?z.primary:``}`,disabled:u||r||!!t,onClick:s,role:l,title:a?e:void 0,type:`button`,children:[t?v(fe,{"aria-hidden":`true`,className:z.buttonSpinner,size:16}):i?v(i,{"aria-hidden":`true`,size:16}):null,a?null:n]})}function Pe(e){return e?e.mode===`waiting`&&e.message?`Managed development paused`:e.mode===`unmanaged`?`Managed development unavailable`:e.mode===`error`?`Managed development stopped`:e.setupFailure?.stage===`dependencies`?`Dependency installation failed`:e.setupFailure?.stage===`codegen`?`Panda codegen failed`:e.setupFailure?.stage===`migration`?`Database setup failed`:e.draft?e.proposal===void 0?`Review local changes`:`Confirm your commit`:e.target?.source===`upstream`?`Refresh from upstream`:String(e.target?.source)===`dev`?`Sync with local dev`:e.target?`Sync with local main`:e.checks?.commands.some(e=>e.status===`failed`)?`Managed development checks failed`:e.warnings.length>0?`Managed development warning`:`Managed development status`:`Checking managed development`}function Fe({codex:e,completion:t,status:n,success:r}){return e||t?me:n?.setupFailure?.stage===`migration`?le:n?.setupFailure?.stage===`dependencies`?pe:n?.setupFailure?.stage===`codegen`?P:n?.draft?N:n?.target?.source===`upstream`?ce:n?.target?P:n?.checks?.commands.some(e=>e.status===`failed`)?de:r?j:n?n.mode===`waiting`?se:n.mode===`unmanaged`?oe:n.mode===`error`||n.warnings.length>0?I:j:P}function Ie(e){return e.mode===`waiting`?`Waiting for managed development to start.`:e.mode===`unmanaged`?`Managed synchronization is unavailable for this session.`:e.mode===`error`?`Managed synchronization stopped.`:e.draft&&!e.target?`Commit the local changes before managed development checks for updates.`:e.target&&e.target.source!==`upstream`?String(e.target?.source)===`dev`?`New changes are available in local dev.`:`New changes are available in local main.`:e.target?`A newer main commit is ready.`:`Managed development is active. No updates are available.`}function Le(e){return e?.mode===`error`&&e.message?.startsWith(r)===!0}function Re(e){return e?.message?.startsWith(i)===!0}function ze(e){return e.mode!==`managed`||!!(e.busy||e.codexCompletion||e.draft||e.message||e.setupFailure||e.target||e.warnings.length>0)}function Q(e){if(!e?.checks||ze(e))return;let t=e.checks.commands.find(e=>e.status===`failed`&&!e.dismissed);return t?{check:t,commit:e.checks.commit,trigger:e.checks.trigger}:void 0}function Be({commit:e,trigger:t}){let n=e.slice(0,12);return t===`codegen-recovery`?`Managed dev ran this check after Panda codegen recovered for commit ${n}.`:t===`dependency-recovery`?`Managed dev ran this check after dependency installation recovered for commit ${n}.`:t===`database-recovery`?`Managed dev ran this check after database setup recovered for commit ${n}.`:`Managed dev ran this check after synchronizing the accepted update at commit ${n}.`}function $(e,t=Q(e)){return e?e.mode===`waiting`?!!e.message:!!(t||ze(e)):!1}function Ve(e){let t=new Set(e.filter(e=>e.kind===`user`)),n=[...t].reduce((e,t)=>e+t.text.length,0),r=!1;for(let i of[...e].reverse())if(i.kind!==`user`){if(n+i.text.length>1e5&&r)break;t.add(i),r=!0,n+=i.text.length}return e.filter(e=>t.has(e))}function He(e){return[e.message,`Commit: ${e.commit}`,`Command: ${e.command}`,``,e.output].join(`
176
- `)}function Ue(){let[e,n]=m(),[r,i]=m(!1),[a,o]=m(),s=he(),c=p(void 0);return f(()=>{if(!s)return;let e=e=>{if(e.requestId===c.current){if(e.state===`busy`){i(!0);return}if(c.current=void 0,i(!1),e.state===`error`){o(void 0),n(e.error??`The Vite restart failed.`);return}n(void 0),o(`Vite restarted.`)}};return s.on(t.actionResult,e),()=>s.off(t.actionResult,e)},[s]),{error:e,pending:r,reloadPage:()=>globalThis.location.reload(),restartVite:()=>{if(r)return;if(n(void 0),o(void 0),!s){n(`The Vite HMR connection is unavailable.`);return}let e=String(++ve);c.current=e,i(!0),s.send(t.action,{action:{type:`restart-vite`},requestId:e})},success:a}}function We(e){return e.type===`apply`?{heading:`Refresh complete`,message:`Your changes were committed and the project is up to date.`}:e.type===`prepare`?{heading:`Refresh complete`,message:`Your project is up to date.`}:e.type===`commit`?{heading:`Changes committed`,message:`Your local changes are committed. Checking for managed development updates…`,preserveDuringStatus:!0}:e.type===`reject`?{heading:`Update dismissed`,message:`No further action is required.`}:e.type===`retry-install`?{heading:`Setup complete`,message:`Dependencies installed and the project is ready.`}:e.type===`retry-codegen`?{heading:`Codegen complete`,message:`Panda generated code is ready.`}:e.type===`reset-database`?{heading:`Database reset complete`,message:`The database was recreated, migrated, and seeded.`}:e.type===`retry-supervisor`?{heading:`Managed development reconnected`,message:`The managed development supervisor is connected again.`}:{heading:`Action complete`,message:`No further action is required.`}}function Ge(){let[e,t]=m(),[r,i]=m(),[a,o]=m(!1),[s,c]=m(),[l,d]=m(),[h,g]=m(),_=p(void 0),v=p(void 0),y=p(new Map),b=ge();f(()=>{if(!b)return;let e=y.current,r=!1,a=()=>{o(!0),r&&(r=!1,b.send(n.statusRequest))},s=()=>{r=!0,o(!1),t(void 0),i(void 0),c(void 0),g(void 0),_.current=void 0,d(void 0),W(!1)},l=({status:n})=>{let r=$(n);if(Re(n)){for(let[t,n]of e)n.type!==`retry-supervisor`&&e.delete(t);[...e.values()].some(e=>e.type===`retry-supervisor`)||g(void 0),_.current=void 0,d(void 0),i(void 0),c(void 0)}o(!0),t(n),n.codexCompletion&&v.current!==n.codexCompletion.id&&(v.current=n.codexCompletion.id,W(!0));let a=!n.busy&&!n.codexCompletion?[...e.entries()].filter(([,e])=>e.type===`acknowledge-codex`).map(([e])=>e):[];if(a.length>0){for(let t of a)e.delete(t);c(void 0),r||W(!1)}r&&c(e=>e?.preserveDuringStatus?e:void 0)},u=n=>{let r=e.get(n.requestId);r&&(e.delete(n.requestId),g(void 0),n.status&&t(n.status),n.error?(_.current?.requestId===n.requestId&&(_.current=void 0,d(void 0)),i(n.error),r.type===`acknowledge-codex`&&W(!0)):n.status?.codexCompletion?(v.current=n.status.codexCompletion.id,_.current=void 0,d(void 0),c(void 0),W(!0)):r.type===`acknowledge-codex`||r.type===`dismiss-check`?(c(void 0),n.status&&!$(n.status)&&W(!1)):n.status&&(r.type===`commit`||!$(n.status))&&c(We(r)))},f=t=>{if(!e.has(t.requestId))return;if(t.phase===`start`){let e={commits:t.commits,messages:[t.message],phase:`running`,requestId:t.requestId,totalCommits:t.totalCommits};_.current=e,d(e),W(!0);return}let n=_.current;if(!n||n.requestId!==t.requestId)return;let r=t.phase===`message`?{...n,messages:Ve([...n.messages,t.message])}:t.phase===`complete`?{commits:n.commits,messages:n.messages,phase:`complete`,requestId:t.requestId,totalCommits:n.totalCommits}:t.phase===`progress`?{...n,commits:t.commits,totalCommits:t.totalCommits??n.totalCommits}:{...n,phase:`error`};_.current=r,d(r)};b.on(R.connect,a),b.on(R.disconnect,s),b.on(n.status,l),b.on(n.actionResult,u),b.on(n.codex,f),b.send(n.statusRequest);let p=globalThis.setInterval(()=>{[...e.values()].some(e=>e.type===`acknowledge-codex`)&&b.send(n.statusRequest)},1e3);return()=>{globalThis.clearInterval(p),e.clear(),_.current=void 0,b.off(R.connect,a),b.off(R.disconnect,s),b.off(n.status,l),b.off(n.actionResult,u),b.off(n.codex,f)}},[b]);let x=async e=>{if(e.type===`acknowledge-codex`&&(v.current=e.id),i(void 0),c(void 0),_.current=void 0,d(void 0),!b){i(`The Vite HMR connection is unavailable.`);return}let t=String(++_e);y.current.set(t,e),g(e),b.send(n.action,{action:e,requestId:t})},S=u(()=>c(void 0),[]);return{act:x,checkFailure:!r&&!s&&!l&&!e?.codexCompletion?Q(e):void 0,codex:l,dismissCheckFailure:e=>{if(!e.check.failureId){W(!1);return}x({failureId:e.check.failureId,type:`dismiss-check`})},dismissError:()=>i(void 0),dismissSuccess:S,error:r,hmrReady:a,pendingAction:h,status:e,success:s}}function Ke(e){return H.add(e),()=>H.delete(e)}function qe(){return V}function Je(){return!1}export{xe as ManagedDevOverlay,q as ManagedDevOverlayIndicator,be as toggleManagedDevOverlay};
173
+ [data-isolet-root]{--overlay-font-body:"SN Pro Variable", system-ui, sans-serif;--overlay-font-monospace:"Google Sans Code Variable", ui-monospace, monospace;color-scheme:light dark;--oc-white:#fff;--oc-gray-0:#f8f9fa;--oc-gray-1:#f1f3f5;--oc-gray-2:#e9ecef;--oc-gray-3:#dee2e6;--oc-gray-4:#ced4da;--oc-gray-5:#adb5bd;--oc-gray-6:#868e96;--oc-gray-7:#495057;--oc-gray-8:#343a40;--oc-gray-9:#212529;--oc-red-0:#fff5f5;--oc-red-2:#ffc9c9;--oc-red-7:#f03e3e;--oc-red-9:#c92a2a;--oc-grape-0:#f8f0fc;--oc-grape-2:#eebefa;--oc-grape-7:#ae3ec9;--oc-grape-9:#862e9c;--oc-blue-0:#e7f5ff;--oc-blue-2:#a5d8ff;--oc-blue-4:#4dabf7;--oc-blue-6:#228be6;--oc-blue-7:#1c7ed6;--oc-blue-9:#1864ab;--oc-green-0:#ebfbee;--oc-green-2:#b2f2bb;--oc-green-7:#37b24d;--oc-green-9:#2b8a3e;--oc-yellow-0:#fff9db;--oc-yellow-2:#ffec99;--oc-yellow-7:#f59f00;--oc-yellow-9:#e67700;--overlay-background:var(--oc-white);--overlay-surface-subtle:var(--oc-gray-0);--overlay-surface-muted:var(--oc-gray-1);--overlay-border:var(--oc-gray-3);--overlay-border-strong:var(--oc-gray-4);--overlay-text:var(--oc-gray-9);--overlay-text-muted:var(--oc-gray-7);--overlay-text-subtle:var(--oc-gray-6);--overlay-accent:var(--oc-blue-6);--overlay-accent-hover:var(--oc-blue-7);--overlay-accent-soft:var(--oc-blue-0);--overlay-accent-border:var(--oc-blue-2);--overlay-accent-text:var(--oc-blue-9);--overlay-thought-soft:var(--oc-grape-0);--overlay-thought-border:var(--oc-grape-2);--overlay-thought-text:var(--oc-grape-9);--overlay-success-soft:var(--oc-green-0);--overlay-success-border:var(--oc-green-2);--overlay-success-text:var(--oc-green-9);--overlay-warning-soft:var(--oc-yellow-0);--overlay-warning-border:var(--oc-yellow-2);--overlay-warning-text:var(--oc-yellow-9);--overlay-danger-soft:var(--oc-red-0);--overlay-danger-border:var(--oc-red-2);--overlay-danger-text:var(--oc-red-9);color:var(--overlay-text);font:14px/1.45 var(--overlay-font-body)}.surface{--managed-dev-bottom-offset:0px;--managed-dev-right-offset:0px}.indicatorButton{appearance:none;bottom:calc(10px + env(safe-area-inset-bottom,0px) + var(--managed-dev-bottom-offset));cursor:pointer;pointer-events:auto;height:44px;right:calc(10px + env(safe-area-inset-right,0px) + var(--managed-dev-right-offset));background:0 0;border:0;justify-content:center;align-items:center;width:44px;padding:0;display:flex;position:fixed}.indicatorButton:focus-visible{outline:3px solid var(--overlay-accent-border);outline-offset:-3px}.indicatorDot{background:var(--managed-dev-indicator-color);box-shadow:inset 0 0 0 .5px color-mix(in srgb, var(--overlay-border) 30%, transparent);height:var(--managed-dev-indicator-size);width:var(--managed-dev-indicator-size);border-radius:50%;display:block;position:relative}.indicatorDot:before{border:max(1px, calc(var(--managed-dev-indicator-size) / 9)) solid var(--managed-dev-indicator-color);border-radius:inherit;content:"";animation:1.8s ease-out infinite radiate;position:absolute;inset:0}.dialog{background:var(--overlay-background);border:1px solid var(--overlay-border);box-shadow:0 18px 60px color-mix(in srgb, var(--oc-gray-9) 28%, transparent), 0 2px 8px color-mix(in srgb, var(--oc-gray-9) 12%, transparent);color:var(--overlay-text);box-sizing:border-box;height:auto;bottom:20px;left:unset;overscroll-behavior:contain;pointer-events:auto;border-radius:12px;width:min(520px,100vw - 18px);max-width:min(520px,100vw - 18px);max-height:none;margin:0;padding:12px 18px;position:fixed;right:20px;overflow:hidden}.dialog[open]{flex-direction:column;gap:12px;display:flex}.drawerBody{align-content:start;gap:16px;min-height:80px;display:grid;overflow:auto}.header{justify-content:space-between;align-items:center;gap:12px;display:flex}.headerActions{align-items:center;display:flex}.developmentControlsDropdown{display:flex;position:relative}.title{align-items:center;gap:8px;margin:0;font-size:16px;display:flex}.titleIcon{color:var(--overlay-accent);flex:none}.iconButton{color:inherit;cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;min-width:32px;min-height:32px;padding:4px;display:inline-flex}.iconButton:hover{background:var(--overlay-surface-muted);border-radius:8px}.iconButton:focus-visible,.scenarioButton:focus-visible,.sectionLink:focus-visible,.button:focus-visible,.message:focus-visible{outline:3px solid var(--overlay-accent-border);outline-offset:2px}.content{gap:12px;display:grid}.section{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border);border-radius:12px;gap:12px;padding:14px;display:grid}.sectionHeading{justify-content:space-between;align-items:start;gap:12px;display:flex}.sectionTitle{margin:0;font-size:13px}.sectionDescription{color:var(--overlay-text-muted);margin:3px 0 0;font-size:12px}.sectionLink{color:var(--overlay-accent-text);cursor:pointer;font:inherit;background:0 0;border:0;padding:2px;font-size:12px}.debugFooter{background:var(--overlay-thought-soft);border-top:.5px solid var(--overlay-thought-border);color:var(--overlay-thought-text);flex:none;margin:0 -18px -12px;padding:4px 18px;font-size:11px;line-height:1.3}.scenarioList{gap:7px;max-height:min(480px,100dvh - 210px);display:grid;overflow:auto}.scenarioButton{background:var(--overlay-surface-subtle);color:inherit;cursor:pointer;font:inherit;text-align:start;border:1px solid #0000;border-radius:10px;gap:3px;padding:10px;display:grid}.scenarioButton:hover{background:var(--overlay-accent-soft);border-color:var(--overlay-accent-border)}.scenarioLabel{font-weight:650}.scenarioDescription{color:var(--overlay-text-muted);font-size:12px}.paragraph{margin:0}.pendingCommits{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border);box-sizing:border-box;font:12px/1.5 var(--overlay-font-monospace);white-space:pre-wrap;border-radius:10px;max-height:190px;margin:0;padding:10px;overflow:auto}.codexOutput{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border);box-sizing:border-box;font:12px/1.5 var(--overlay-font-monospace);white-space:pre-wrap;word-break:break-word;border-radius:10px;max-height:280px;margin:0;padding:10px;overflow:auto}.codexWorking{color:var(--overlay-text-muted);font:12px/1.5 var(--overlay-font-monospace)}.codexWorkingSpinner{color:var(--overlay-accent)}.codexTranscript{gap:10px;max-height:360px;display:grid;overflow:auto}.codexMessage{border:1px solid #0000;border-radius:10px;gap:5px;padding:10px;display:grid}.codexMessageUser{background:var(--overlay-accent-soft);border-color:var(--overlay-accent-border)}.codexMessageThought{background:var(--overlay-thought-soft);border-color:var(--overlay-thought-border)}.codexMessageAgent{background:var(--overlay-success-soft);border-color:var(--overlay-success-border)}.codexMessageHeader{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.codexMessageLabel{color:var(--overlay-text-muted);letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:11px;font-weight:650}.codexMessageAge{color:var(--overlay-text-subtle);white-space:nowrap;font-size:11px}.codexMessageText,.codexWaiting{font:12px/1.5 var(--overlay-font-monospace);white-space:pre-wrap;word-break:break-word;margin:0}.codexWaiting{color:var(--overlay-text-subtle)}.rebaseProgress{gap:8px;display:grid}.rebaseProgressLabel{color:var(--overlay-text-muted);justify-content:space-between;align-items:baseline;font-size:12px;display:flex}.rebaseProgressLabel strong{color:var(--overlay-success-text)}.rebaseProgressTrack{background:var(--overlay-surface-muted);border-radius:999px;height:6px;overflow:hidden}.rebaseProgressFill{background:var(--overlay-success-text);border-radius:inherit;height:100%;transition:width .18s;display:block}.codexHistorySummary{cursor:pointer;font-size:12px;font-weight:600}.codexHistoryList{gap:8px;padding-top:8px;display:grid}.files{gap:7px;max-height:190px;display:grid;overflow:auto}.checkbox{overflow-wrap:anywhere;align-items:start;gap:8px;display:flex}.checkbox input{accent-color:var(--overlay-accent)}.filePath{font-family:var(--overlay-font-monospace)}.message{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border-strong);box-sizing:border-box;color:var(--overlay-text);font-family:var(--overlay-font-monospace);resize:vertical;border-radius:10px;width:100%;min-height:92px;padding:10px}.codexOptions{flex-wrap:wrap;gap:8px 16px;display:flex}.codexOption{align-items:center;gap:6px;display:flex}.codexOptionLabel{color:var(--overlay-text-subtle);font-size:12px}.codexOptionSelect{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border-strong);color:var(--overlay-text);font:inherit;border-radius:8px;padding:4px 6px}.actions{flex-wrap:wrap;justify-content:end;gap:8px;display:flex}.developmentControls{background:var(--overlay-background);border:1px solid var(--overlay-border);box-shadow:0 10px 30px color-mix(in srgb, var(--oc-gray-9) 18%, transparent);box-sizing:border-box;z-index:1;border-radius:10px;gap:4px;min-width:170px;max-width:calc(100vw - 32px);margin:0;padding:4px;display:grid;position:absolute;top:calc(100% + 6px);right:0}.developmentControls .actions{justify-content:stretch;align-items:stretch;gap:0;width:100%;display:grid}.developmentControls .button{text-align:start;white-space:nowrap;justify-content:start;justify-self:stretch;width:100%;min-height:32px}.button{border:1px solid var(--overlay-border-strong);cursor:pointer;font:inherit;background:0 0;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:7px 11px;transition:opacity .14s;display:inline-flex}.button:hover:not(:disabled){background:var(--overlay-surface-muted)}.primary{background:var(--overlay-accent);border-color:var(--overlay-accent);color:var(--oc-white)}.primary:hover:not(:disabled){background:var(--overlay-accent-hover);border-color:var(--overlay-accent-hover)}.developmentControls .button{color:inherit;background:0 0;border:0}.developmentControls .button:hover:not(:disabled){background:var(--overlay-surface-muted)}.button:disabled{cursor:wait;opacity:.55}.buttonSpinner{animation:.7s linear infinite button-spin}.iconOnly{box-sizing:border-box;flex:0 0 32px;width:32px;min-width:32px;height:32px;padding:7px}.warning{color:var(--overlay-warning-text);white-space:pre-wrap}.checkFailure{background:var(--overlay-danger-soft);border:1px solid var(--overlay-danger-border);color:var(--overlay-danger-text);border-radius:10px;gap:10px;padding:10px;display:grid}.checkCommand{font-family:var(--overlay-font-monospace);margin:0;font-weight:600}.checkGuidance{margin:3px 0 0;font-size:12px}.setupFailure{background:var(--overlay-danger-soft);border:1px solid var(--overlay-danger-border);color:var(--overlay-danger-text);border-radius:10px;gap:10px;padding:10px;display:grid}.actionError{background:var(--overlay-warning-soft);border:1px solid var(--overlay-warning-border);color:var(--overlay-warning-text);white-space:pre-wrap;border-radius:10px;gap:10px;padding:10px;display:grid}.errorMessage{grid-template-columns:auto 1fr;align-items:start;gap:8px;display:grid}.actionSuccess{background:var(--overlay-success-soft);border:1px solid var(--overlay-success-border);color:var(--overlay-success-text);border-radius:10px;grid-template-columns:auto 1fr;align-items:start;gap:8px;padding:10px;display:grid}.errorIcon,.successIcon{margin-top:1px}@media (prefers-color-scheme:dark){[data-isolet-root]{--overlay-background:var(--oc-gray-9);--overlay-surface-subtle:var(--oc-gray-8);--overlay-surface-muted:var(--oc-gray-7);--overlay-border:var(--oc-gray-7);--overlay-border-strong:var(--oc-gray-6);--overlay-text:var(--oc-gray-0);--overlay-text-muted:var(--oc-gray-4);--overlay-text-subtle:var(--oc-gray-5);--overlay-accent:var(--oc-blue-6);--overlay-accent-hover:var(--oc-blue-7);--overlay-accent-soft:color-mix(in srgb, var(--oc-blue-9) 32%, var(--overlay-background));--overlay-accent-border:var(--oc-blue-7);--overlay-accent-text:var(--oc-blue-2);--overlay-thought-soft:color-mix(in srgb, var(--oc-grape-9) 30%, var(--overlay-background));--overlay-thought-border:var(--oc-grape-7);--overlay-thought-text:var(--oc-grape-2);--overlay-success-soft:color-mix(in srgb, var(--oc-green-9) 30%, var(--overlay-background));--overlay-success-border:var(--oc-green-7);--overlay-success-text:var(--oc-green-2);--overlay-warning-soft:color-mix(in srgb, var(--oc-yellow-9) 24%, var(--overlay-background));--overlay-warning-border:var(--oc-yellow-7);--overlay-warning-text:var(--oc-yellow-2);--overlay-danger-soft:color-mix(in srgb, var(--oc-red-9) 30%, var(--overlay-background));--overlay-danger-border:var(--oc-red-7);--overlay-danger-text:var(--oc-red-2)}}@keyframes radiate{0%{opacity:.75;transform:scale(1)}to{opacity:0;transform:scale(2.4)}}@keyframes button-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.buttonSpinner{animation:none}}@media (width<=600px){.dialog{max-width:none;padding:calc(16px + env(safe-area-inset-top,0px)) calc(16px + env(safe-area-inset-right,0px)) calc(16px + env(safe-area-inset-bottom,0px)) calc(16px + env(safe-area-inset-left,0px));border-radius:0;width:auto;inset:0}.debugFooter{margin:0 calc(-16px - env(safe-area-inset-right,0px)) calc(-16px - env(safe-area-inset-bottom,0px)) calc(-16px - env(safe-area-inset-left,0px));padding:4px calc(16px + env(safe-area-inset-right,0px)) calc(4px + env(safe-area-inset-bottom,0px)) calc(16px + env(safe-area-inset-left,0px))}.button{min-height:44px}.checkbox{align-items:center;min-height:44px}.iconButton{min-width:44px;min-height:44px}.iconOnly{flex-basis:44px;width:44px;min-width:44px;height:44px}}@media (prefers-reduced-motion:reduce){.indicatorDot:before{opacity:.45;animation:none;transform:scale(1.65)}}.buttonContainer{min-width:0;display:inline-flex}.buttonContainer:focus-visible{outline:2px solid var(--overlay-accent);outline-offset:2px;border-radius:999px}.button:disabled{pointer-events:none}.developmentControls .buttonContainer{width:100%;display:flex}.disabledTooltip{z-index:2147483647;border:1px solid var(--overlay-border-strong);background:var(--overlay-surface-subtle);max-width:min(280px,100vw - 24px);color:var(--overlay-text);pointer-events:none;border-radius:8px;padding:8px 10px;font-size:12px;line-height:1.4;position:fixed;transform:translateY(-100%)}.srOnly{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
174
+ `,hostAttributes:{"aria-live":`polite`,id:`coreframe-managed-dev`},hostStyles:{pointerEvents:`none`,position:`fixed`},zIndex:2147483647});return queueMicrotask(()=>{e&&s(t.container)}),()=>{e=!1,t.host?.remove()}},[r]);let l={"--managed-dev-bottom-offset":Ee(e),"--managed-dev-right-offset":Ee(a)};return o?y(S(`div`,{className:H.surface,style:l,children:[i?n:null,i&&c?t:null]}),o):null}function Te({bottomOffset:e,indicator:t,rightOffset:n}){let[r,i]=_(),[a,o]=_(ve),[c,l]=_(),[u,f]=_(),p=ye.find(({id:e})=>e===r),m=e=>{i(e),l(void 0),f(void 0)},h=async e=>{if(e.type!==`configure-codex`){if(e.type===`acknowledge-codex`){m(void 0);return}f(qe(e))}},g=t??x(q,{}),v={pending:!1,reloadPage:()=>l(`Page reload simulated.`),restartVite:()=>l(`Vite restart simulated.`),success:c};return x(we,{bottomOffset:e,indicator:d(g)&&g.type===q?s(g,{paused:p?.status.mode===`waiting`}):g,openOnMount:!0,rightOffset:n,children:p?x(Oe,{act:h,checkFailure:He(p.status),codex:p.codex,codexOptions:a,developmentControls:v,dismissCheckFailure:()=>void 0,dismissError:()=>void 0,error:p.error,onBack:()=>m(void 0),onClose:()=>G(!1),setCodexOptions:o,status:p.status,success:u??p.success},p.id):x(De,{developmentControls:v,onClose:()=>G(!1),onSelect:e=>m(e)})})}function Ee(e){return typeof e==`number`?`${e}px`:e??`0px`}function De({developmentControls:e,onClose:t,onSelect:n}){return x(K,{debug:!0,developmentControls:e,icon:ie,onClose:t,title:`Managed dev overlay scenarios`,children:x(`div`,{className:H.scenarioList,children:be.map(e=>S(`button`,{className:H.scenarioButton,onClick:()=>n(e.id),type:`button`,children:[x(`span`,{className:H.scenarioLabel,children:e.label}),x(`span`,{className:H.scenarioDescription,children:e.description})]},e.id))})})}function K({children:e,debug:t=!1,developmentControls:n,icon:r,onBack:i,onClose:a,title:o}){let s=g(null),c=g(null),[l,u]=_(!1);return m(()=>{let e=e=>{let t=e.composedPath(),n=c.current;n&&!t.includes(n)&&u(!1);let r=s.current;r&&!t.includes(r)&&a()},t=e=>{e.key===`Escape`&&(e.preventDefault(),a())};return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[a]),S(`dialog`,{"aria-labelledby":`coreframe-managed-title`,"aria-modal":`true`,className:H.dialog,id:`coreframe-managed-dev-dialog`,open:!0,ref:s,children:[S(`div`,{className:H.header,children:[S(`h2`,{className:H.title,id:`coreframe-managed-title`,children:[x(r,{"aria-hidden":`true`,className:H.titleIcon,size:18}),o]}),S(`div`,{className:H.headerActions,children:[i?x(`button`,{"aria-label":`Back to scenarios`,className:H.iconButton,onClick:i,type:`button`,children:x(re,{"aria-hidden":`true`,size:18})}):null,n?S(`div`,{className:H.developmentControlsDropdown,ref:c,children:[x(`button`,{"aria-expanded":l,"aria-haspopup":`menu`,"aria-label":`Development controls`,className:H.iconButton,onClick:()=>u(e=>!e),type:`button`,children:x(ue,{"aria-hidden":`true`,size:18})}),l?x(ke,{controls:n}):null]}):null,x(`button`,{"aria-label":`Close managed development`,className:H.iconButton,onClick:a,type:`button`,children:x(B,{"aria-hidden":`true`,size:18})})]})]}),x(`div`,{className:H.drawerBody,children:e}),t?x(`footer`,{className:H.debugFooter,children:`Debug preview · project actions are simulated locally`}):null]})}function q({color:e=`#228be6`,paused:t=!1,size:n=14,warningColor:r=`#fd7e14`}){let i=v(Ye,Xe,Ze),a={"--managed-dev-indicator-color":t?r:e,"--managed-dev-indicator-size":typeof n==`number`?`${n}px`:n};return x(`button`,{"aria-controls":`coreframe-managed-dev-dialog`,"aria-expanded":i,"aria-label":`${i?`Hide`:`Show`} Coreframe managed development`,className:H.indicatorButton,onClick:xe,style:a,type:`button`,children:x(`span`,{className:H.indicatorDot})})}function Oe({act:e,checkFailure:t,codex:n,codexOptions:r,developmentControls:i,dismissCheckFailure:a,dismissError:o,error:s,onBack:c,onClose:l,pendingAction:u,setCodexOptions:d,status:f,success:p}){let[h,v]=_({value:``}),[y,C]=_(()=>({paths:new Set})),w=g(null),T=f?.codexCompletion,E=f?.draft,D=f?.pendingRebase,O=f?.target,k=!T&&!p&&!n,A=y.fingerprint===E?.fingerprint?y.paths:new Set(E?.untracked??[]),j=h.fingerprint===E?.fingerprint&&h.proposal===f?.proposal?h.value:f?.proposal??``,M=!!(E?.untracked.length&&E.untracked.every(e=>A.has(e))),N=t=>{d(t),e({codex:t,type:`configure-codex`})};return m(()=>{let e=w.current;e&&n?.phase===`running`&&(e.scrollTop=e.scrollHeight)},[n]),t?x(K,{debug:!!c,developmentControls:i,icon:z,onBack:c,onClose:l,title:`Managed development check failed`,children:S(`div`,{className:H.content,children:[x(`div`,{className:H.checkFailure,role:`alert`,children:S(`div`,{className:H.checkMessage,children:[S(`p`,{className:H.checkCommand,children:[t.check.command,` failed`]}),x(`p`,{className:H.checkGuidance,children:Ue(t)}),x(`p`,{className:H.checkGuidance,children:`Copy the output and paste it into your agent orchestration tool.`})]})}),S(X,{children:[x(Q,{ariaLabel:`Dismiss error`,icon:B,iconOnly:!0,onClick:()=>a(t),children:`Dismiss`}),x(Q,{ariaLabel:`Copy output for ${t.check.command}`,icon:ce,iconOnly:!0,onClick:()=>void navigator.clipboard.writeText(t.check.output??``),children:`Copy output`})]})]})}):x(K,{debug:!!c,developmentControls:i,icon:Le({codex:n,completion:T,status:f,success:p}),onBack:c,onClose:l,title:T?`Codex conflict resolution finished`:p?.heading??(n?.phase===`complete`?`Finishing synchronization…`:n?.phase===`error`?`Conflict resolution failed.`:n?`Resolving conflicts with Codex…`:Ie(f)),children:S(`div`,{className:H.content,children:[p&&!T?S(`div`,{className:H.actionSuccess,role:`status`,children:[x(F,{"aria-hidden":`true`,className:H.successIcon,size:18}),x(`p`,{className:H.paragraph,children:p.message})]}):null,s?S(b,{children:[x(`div`,{className:H.actionError,role:`alert`,children:x(Z,{children:s})}),x(X,{children:x(Q,{ariaLabel:`Dismiss error`,icon:B,iconOnly:!0,onClick:o,children:`Dismiss`})})]}):null,T||!p&&n?S(b,{children:[x(Ae,{commits:T?.commits??n?.commits??[],completion:T,messages:T?.messages??n?.messages??[],outputRef:w,totalCommits:T?.totalCommits??n?.totalCommits,working:n?.phase===`running`}),!T&&n?.phase===`running`?x(X,{children:x(Q,{ariaLabel:`Cancel conflict resolution`,busy:u?.type===`cancel-codex`,icon:B,onClick:()=>void e({type:`cancel-codex`}),children:`Cancel`})}):null]}):k&&f?.setupFailure?S(b,{children:[S(`div`,{className:H.setupFailure,role:`alert`,children:[x(Z,{children:f.setupFailure.message}),x(`pre`,{className:H.codexOutput,children:f.setupFailure.output})]}),S(X,{children:[x(Q,{ariaLabel:`Dismiss error`,icon:B,iconOnly:!0,onClick:l,children:`Dismiss`}),x(Q,{ariaLabel:`Copy diagnostics`,disabledReason:f.busy,icon:ce,iconOnly:!0,onClick:()=>void navigator.clipboard.writeText(Ge(f.setupFailure)),children:`Copy diagnostics`}),f.setupFailure.stage===`dependencies`?x(Q,{ariaLabel:`Retry install`,busy:u?.type===`retry-install`,disabledReason:f.busy,icon:I,iconOnly:!0,onClick:()=>void e({type:`retry-install`}),primary:!0,children:`Retry install`}):f.setupFailure.stage===`codegen`?x(Q,{ariaLabel:`Retry codegen`,busy:u?.type===`retry-codegen`,disabledReason:f.busy,icon:I,iconOnly:!0,onClick:()=>void e({type:`retry-codegen`}),primary:!0,children:`Retry codegen`}):x(Q,{busy:u?.type===`reset-database`,disabledReason:f.busy,icon:L,onClick:()=>{globalThis.confirm(`Reset the local database? This permanently deletes its current data, then reapplies migrations and seed scripts.`)&&e({type:`reset-database`})},primary:!0,children:`Reset database`})]})]}):k&&ze(f)?S(b,{children:[x(`p`,{className:H.paragraph,children:f?.message}),x(X,{children:x(Q,{ariaLabel:`Retry managed development`,busy:u?.type===`retry-supervisor`,disabledReason:f?.busy,icon:I,immediatelyEnabled:!0,onClick:()=>void e({type:`retry-supervisor`}),primary:!0,children:`Retry managed development`})})]}):k?x(`p`,{className:H.paragraph,children:f?f.busy||f.message||Re(f):`Checking managed development status…`}):null,T&&!s?x(X,{children:x(Q,{busy:u?.type===`acknowledge-codex`,disabledReason:f?.busy,icon:F,onClick:()=>void e({id:T.id,type:`acknowledge-codex`}),primary:!0,children:`Continue`})}):null,k&&f?.mode===`waiting`&&f.message&&!Be(f)?S(`p`,{className:H.paragraph,children:[`To re-enable managed development, run `,x(`code`,{children:`git switch main`}),` in the primary checkout. Synchronization will resume automatically.`]}):null,k&&O&&!E?x(`pre`,{className:H.pendingCommits,children:(O.commits??[O]).map(e=>`${e.shortCommit} ${e.subject}`).join(`
175
+ `)}):null,k?f?.warnings.map((e,t)=>x(`p`,{className:`${H.paragraph} ${H.warning}`,children:e},`${t}-${e}`)):null,k&&E?S(b,{children:[S(`div`,{className:H.files,children:[E.untracked.map(e=>x(Fe,{checked:A.has(e),label:x(`span`,{className:H.filePath,children:e}),onChange:t=>C(()=>{let n=new Set(A);return t?n.add(e):n.delete(e),{fingerprint:E.fingerprint,paths:n}})},e)),E.untracked.length>0?x(Fe,{checked:M,label:`Include all untracked files`,onChange:e=>C({fingerprint:E.fingerprint,paths:e?new Set(E.untracked):new Set})}):null]}),f.proposal===void 0?S(X,{children:[O?x(Q,{busy:u?.type===`reject`,disabledReason:f.busy,icon:L,onClick:()=>void e({type:`reject`}),children:`Reject`}):null,x(Q,{busy:u?.type===`message`,disabledReason:f.busy,icon:R,onClick:()=>void e({type:`message`,fingerprint:E.fingerprint,untracked:[...A]}),primary:!0,children:`Generate commit message`})]}):S(b,{children:[x(`textarea`,{"aria-label":`Commit message`,className:H.message,onChange:e=>v({fingerprint:E.fingerprint,proposal:f.proposal,value:e.target.value}),value:j}),O?x(J,{disabled:!!f.busy,onChange:N,value:r}):null,S(X,{children:[O?x(Q,{busy:u?.type===`reject`,disabledReason:f.busy,icon:L,onClick:()=>void e({type:`reject`}),children:`Reject`}):null,x(Q,{busy:u?.type===(O?`apply`:`commit`),disabledReason:f.busy,icon:de,onClick:()=>{e(O?{type:`apply`,target:O.commit,fingerprint:E.fingerprint,untracked:[...A],message:j,codex:r}:{type:`commit`,fingerprint:E.fingerprint,untracked:[...A],message:j})},primary:!0,children:O?`Commit and refresh`:`Commit changes`})]})]})]}):k&&D?S(b,{children:[x(`p`,{className:H.paragraph,children:D.applied>0?`The update replayed ${D.applied} of ${D.applied+D.commits.length} commits before stopping on a conflict. The cleanly applied commits are already on your branch; Codex can resolve the rest.`:`The update stopped on a conflict before any commit could be replayed. Codex can resolve your commits.`}),x(`div`,{className:H.files,children:D.files.map(e=>x(`span`,{className:H.filePath,children:e},e))}),D.commits.length>0?x(`pre`,{className:H.pendingCommits,children:D.commits.map(e=>`${e.shortCommit} ${e.subject}`).join(`
176
+ `)}):null,x(J,{disabled:!!f.busy,onChange:N,value:r}),S(X,{children:[x(Q,{busy:u?.type===`decline-rebase`,disabledReason:f.busy,icon:B,onClick:()=>void e({type:`decline-rebase`}),children:`Decline`}),x(Q,{busy:u?.type===`resolve-rebase`,disabledReason:f.busy,icon:R,onClick:()=>void e({codex:r,type:`resolve-rebase`}),primary:!0,children:`Resolve with Codex`})]})]}):k&&O?S(b,{children:[x(J,{disabled:!!f.busy,onChange:N,value:r}),x(X,{children:x(Q,{busy:u?.type===`prepare`,disabledReason:f.busy,icon:I,onClick:()=>void e({type:`prepare`,target:O.commit,codex:r}),primary:!0,children:O.source===`upstream`?`Refresh`:String(O.source)===`dev`?`Sync with dev`:`Sync with main`})})]}):null]})})}function J({disabled:e=!1,onChange:t,value:i}){return S(`div`,{className:H.codexOptions,children:[S(`label`,{className:H.codexOption,children:[x(`span`,{className:H.codexOptionLabel,children:`Codex model`}),x(`select`,{"aria-label":`Codex model`,className:H.codexOptionSelect,disabled:e,onChange:e=>t({...i,model:e.target.value}),value:i.model,children:r.map(e=>x(`option`,{value:e,children:e},e))})]}),S(`label`,{className:H.codexOption,children:[x(`span`,{className:H.codexOptionLabel,children:`Reasoning effort`}),x(`select`,{"aria-label":`Reasoning effort`,className:H.codexOptionSelect,disabled:e,onChange:e=>t({...i,effort:e.target.value}),value:i.effort,children:n.map(e=>x(`option`,{value:e,children:e},e))})]})]})}function ke({controls:e}){return S(`div`,{"aria-label":`Development controls`,className:H.developmentControls,role:`menu`,children:[S(X,{children:[x(Q,{immediatelyEnabled:!0,icon:I,onClick:e.reloadPage,role:`menuitem`,children:`Reload page`}),x(Q,{busy:e.pending,immediatelyEnabled:!0,icon:L,onClick:e.restartVite,primary:!0,role:`menuitem`,children:e.pending?`Restarting Vite…`:`Restart Vite`})]}),e.error?x(`div`,{className:H.actionError,role:`alert`,children:x(Z,{children:`Vite restart failed: ${e.error}`})}):null,e.success?S(`div`,{className:H.actionSuccess,role:`status`,children:[x(F,{"aria-hidden":`true`,className:H.successIcon,size:18}),x(`p`,{className:H.paragraph,children:e.success})]}):null]})}function Ae({commits:t,completion:n,messages:r,outputRef:i,totalCommits:a,working:o}){let s=[...r].reverse().find(e=>e.kind===`user`),c=[...r].reverse().find(e=>e.kind!==`user`),l=n?[...r].reverse().find(e=>e.kind===`agent`&&e.text===n.finalMessage):c,u=r.filter(e=>e.kind!==`user`&&e!==l),d=n?l??{author:[...r].reverse().find(e=>e.kind===`agent`)?.author,kind:`agent`,text:n.finalMessage}:c,f=l?`message-${r.lastIndexOf(l)}`:`completion`;return S(b,{children:[o?x(`div`,{className:H.codexWorking,children:x(e,{className:H.codexWorkingSpinner,label:`Codex is resolving conflicts`,children:x(je,{})})}):null,S(`div`,{"aria-live":n?void 0:`polite`,className:H.codexTranscript,ref:i,role:`log`,children:[s?x(Y,{message:s}):null,u.length>0?S(`details`,{children:[S(`summary`,{className:H.codexHistorySummary,children:[`History (`,u.length,`)`]}),x(`div`,{className:H.codexHistoryList,children:u.map((e,t)=>x(Y,{message:e},`history-${t}`))})]}):null,d?x(Y,{message:d,showAge:!0},f):x(`p`,{className:H.codexWaiting,children:`Waiting for Codex output…`}),a?x(Me,{rebased:t.length,total:a}):null]})]})}function je(){let e=g(0),[t,n]=_(0);return m(()=>{e.current=Date.now();let t=globalThis.setInterval(()=>{n(Math.floor((Date.now()-e.current)/1e3))},1e3);return()=>globalThis.clearInterval(t)},[]),S(b,{children:[`Working for `,Pe(t),`...`]})}function Me({rebased:e,total:t}){let n=Math.min(e,t),r=Math.round(n/t*100);return S(`section`,{"aria-label":`Rebase progress`,className:H.rebaseProgress,children:[S(`div`,{className:H.rebaseProgressLabel,children:[S(`strong`,{children:[r,`% rebased`]}),S(`span`,{children:[n,` of `,t,` commits`]})]}),x(`div`,{"aria-valuemax":t,"aria-valuemin":0,"aria-valuenow":n,className:H.rebaseProgressTrack,role:`progressbar`,children:x(`span`,{className:H.rebaseProgressFill,style:{width:`${r}%`}})})]})}function Y({message:e,showAge:t=!1}){let n=e.kind===`user`?`Request`:e.kind===`thought`?`Codex thought`:e.author??`Codex`,r=e.kind===`user`?H.codexMessageUser:e.kind===`thought`?H.codexMessageThought:H.codexMessageAgent;return S(`section`,{className:`${H.codexMessage} ${r}`,children:[S(`div`,{className:H.codexMessageHeader,children:[x(`h3`,{className:H.codexMessageLabel,children:n}),t?x(Ne,{}):null]}),x(`p`,{className:H.codexMessageText,children:e.text})]})}function Ne(){let e=g(0),[t,n]=_(0);return m(()=>{e.current=Date.now();let t=globalThis.setInterval(()=>{n(Math.floor((Date.now()-e.current)/1e3))},1e3);return()=>globalThis.clearInterval(t)},[]),S(`span`,{"aria-hidden":`true`,className:H.codexMessageAge,children:[Pe(t),` ago`]})}function Pe(e){let t=Math.floor(e/60),n=e%60;return t>0?`${t}m ${n}s`:`${n}s`}function Fe({checked:e,label:t,onChange:n}){return S(`label`,{className:H.checkbox,children:[x(`input`,{checked:e,onChange:e=>n(e.target.checked),type:`checkbox`}),t]})}function X({children:e}){return x(`div`,{className:H.actions,children:e})}function Z({children:e}){return S(`div`,{className:H.errorMessage,children:[x(z,{"aria-hidden":`true`,className:H.errorIcon,size:18}),x(`p`,{className:H.paragraph,children:e})]})}function Q({ariaLabel:e,busy:t,children:n,disabledReason:r,icon:i,iconOnly:a=!1,immediatelyEnabled:o=!1,onClick:s,primary:c=!1,role:l}){let[u,d]=_(!0),[f,p]=_(),g=h(),v=r?`Please wait: ${r.replace(/[.\u2026]+$/,``)}.`:t?`Waiting for ${e??(typeof n==`string`?`“${n}”`:`this action`)} to finish.`:u&&!o?`Please wait a moment. This prevents accidental clicks.`:void 0;m(()=>{let e=globalThis.setTimeout(()=>d(!1),1e3);return()=>globalThis.clearTimeout(e)},[]);let b=e=>{let t=e.getBoundingClientRect(),n=e.closest(`[data-isolet-root]`);n&&p({left:Math.max(12,Math.min(t.left,window.innerWidth-292)),top:t.top-8,root:n})};return S(`span`,{"aria-describedby":v?g:void 0,"aria-label":v?e??(typeof n==`string`?n:void 0):void 0,className:H.buttonContainer,onBlur:()=>p(void 0),onFocus:e=>b(e.currentTarget),onKeyDown:e=>{e.key===`Escape`&&v&&f&&(e.stopPropagation(),p(void 0))},onMouseEnter:e=>b(e.currentTarget),onMouseLeave:()=>p(void 0),onPointerDown:e=>{v&&e.currentTarget.focus()},tabIndex:v?0:void 0,children:[S(`button`,{"aria-label":e,"aria-busy":!!t,"aria-describedby":v?g:void 0,className:`${H.button} ${a?H.iconOnly:``} ${c?H.primary:``}`,disabled:!!v,onClick:s,role:l,title:!v&&a?e:void 0,type:`button`,children:[t?x(pe,{"aria-hidden":`true`,className:H.buttonSpinner,size:16}):i?x(i,{"aria-hidden":`true`,size:16}):null,a?null:n]}),v?x(`span`,{className:H.srOnly,id:g,children:v}):null,v&&f?y(x(`span`,{className:H.disabledTooltip,role:`tooltip`,style:{left:f.left,top:f.top},children:v}),f.root):null]})}function Ie(e){return e?e.mode===`waiting`&&e.message?`Managed development paused`:e.mode===`unmanaged`?`Managed development unavailable`:e.mode===`error`?`Managed development stopped`:e.setupFailure?.stage===`dependencies`?`Dependency installation failed`:e.setupFailure?.stage===`codegen`?`Bamboo codegen failed`:e.setupFailure?.stage===`migration`?`Database setup failed`:e.draft?e.proposal===void 0?`Review local changes`:`Confirm your commit`:e.pendingRebase?`Resolve update conflicts`:e.target?.source===`upstream`?`Refresh from upstream`:String(e.target?.source)===`dev`?`Sync with local dev`:e.target?`Sync with local main`:e.checks?.commands.some(e=>e.status===`failed`)?`Managed development checks failed`:e.warnings.length>0?`Managed development warning`:`Managed development status`:`Checking managed development`}function Le({codex:e,completion:t,status:n,success:r}){return e||t?R:n?.setupFailure?.stage===`migration`?le:n?.setupFailure?.stage===`dependencies`?me:n?.setupFailure?.stage===`codegen`?I:n?.draft?de:n?.pendingRebase?R:n?.target?.source===`upstream`?se:n?.target?I:n?.checks?.commands.some(e=>e.status===`failed`)?fe:r?F:n?n.mode===`waiting`?oe:n.mode===`unmanaged`?ae:n.mode===`error`||n.warnings.length>0?z:F:I}function Re(e){return e.mode===`waiting`?`Waiting for managed development to start.`:e.mode===`unmanaged`?`Managed synchronization is unavailable for this session.`:e.mode===`error`?`Managed synchronization stopped.`:e.draft&&!e.target?`Commit the local changes before managed development checks for updates.`:e.pendingRebase?`The update stopped on a conflict and needs Codex to finish replaying your commits.`:e.target&&e.target.source!==`upstream`?String(e.target?.source)===`dev`?`New changes are available in local dev.`:`New changes are available in local main.`:e.target?`A newer main commit is ready.`:`Managed development is active. No updates are available.`}function ze(e){return e?.mode===`error`&&e.message?.startsWith(a)===!0}function Be(e){return e?.message?.startsWith(o)===!0}function Ve(e){return e.mode!==`managed`||!!(e.busy||e.codexCompletion||e.draft||e.message||e.pendingRebase||e.setupFailure||e.target||e.warnings.length>0)}function He(e){if(!e?.checks||Ve(e))return;let t=e.checks.commands.find(e=>e.status===`failed`&&!e.dismissed);return t?{check:t,commit:e.checks.commit,trigger:e.checks.trigger}:void 0}function Ue({commit:e,trigger:t}){let n=e.slice(0,12);return t===`codegen-recovery`?`Managed dev ran this check after Bamboo codegen recovered for commit ${n}.`:t===`dependency-recovery`?`Managed dev ran this check after dependency installation recovered for commit ${n}.`:t===`database-recovery`?`Managed dev ran this check after database setup recovered for commit ${n}.`:`Managed dev ran this check after synchronizing the accepted update at commit ${n}.`}function $(e,t=He(e)){return e?e.mode===`waiting`?!!e.message:!!(t||Ve(e)):!1}function We(e){let t=new Set(e.filter(e=>e.kind===`user`)),n=[...t].reduce((e,t)=>e+t.text.length,0),r=!1;for(let i of[...e].reverse())if(i.kind!==`user`){if(n+i.text.length>1e5&&r)break;t.add(i),r=!0,n+=i.text.length}return e.filter(e=>t.has(e))}function Ge(e){return[e.message,`Commit: ${e.commit}`,`Command: ${e.command}`,``,e.output].join(`
177
+ `)}function Ke(){let[e,n]=_(),[r,i]=_(!1),[a,o]=_(),s=he(),c=g(void 0);return m(()=>{if(!s)return;let e=e=>{if(e.requestId===c.current){if(e.state===`busy`){i(!0);return}if(c.current=void 0,i(!1),e.state===`error`){o(void 0),n(e.error??`The Vite restart failed.`);return}n(void 0),o(`Vite restarted.`)}},r=()=>{c.current&&(c.current=void 0,i(!1),o(void 0),n(`The connection was interrupted during the restart. Reconnect before trying again.`))};return s.on(t.actionResult,e),s.on(V.disconnect,r),()=>{s.off(t.actionResult,e),s.off(V.disconnect,r)}},[s]),{error:e,pending:r,reloadPage:()=>globalThis.location.reload(),restartVite:()=>{if(r)return;if(n(void 0),o(void 0),!s){n(`The Vite HMR connection is unavailable.`);return}let e=globalThis.crypto.getRandomValues(new Uint32Array(4)).join(`-`);c.current=e,i(!0),s.send(t.action,{action:{type:`restart-vite`},requestId:e})},success:a}}function qe(e){return e.type===`apply`?{heading:`Refresh complete`,message:`Your changes were committed and the project is up to date.`}:e.type===`prepare`?{heading:`Refresh complete`,message:`Your project is up to date.`}:e.type===`commit`?{heading:`Changes committed`,message:`Your local changes are committed. Checking for managed development updates…`,preserveDuringStatus:!0}:e.type===`reject`?{heading:`Update dismissed`,message:`No further action is required.`}:e.type===`configure-codex`?{heading:`Codex preferences saved`,message:`The selected model and effort will be used for future conflict resolution.`}:e.type===`decline-rebase`?{heading:`Codex resolution declined`,message:`The cleanly applied commits stay on your branch.`}:e.type===`resolve-rebase`?{heading:`Refresh complete`,message:`Codex resolved the remaining conflicts and the project is up to date.`}:e.type===`retry-install`?{heading:`Setup complete`,message:`Dependencies installed and the project is ready.`}:e.type===`retry-codegen`?{heading:`Codegen complete`,message:`Bamboo generated code is ready.`}:e.type===`reset-database`?{heading:`Database reset complete`,message:`The database was recreated, migrated, and seeded.`}:e.type===`retry-supervisor`?{heading:`Managed development reconnected`,message:`The managed development supervisor is connected again.`}:e.type===`cancel-codex`?{heading:`Update cancelled`,message:`The Codex conflict resolution was cancelled.`}:{heading:`Action complete`,message:`No further action is required.`}}function Je(){let[e,t]=_(),[n,r]=_(),[a,o]=_(!1),[s,c]=_(),[l,u]=_(),[d,p]=_(ve),[h,v]=_(),y=g(void 0),b=g(void 0),x=g(new Map),S=ge();m(()=>{if(!S)return;let e=x.current,n=!1,a=()=>{o(!0),n&&(n=!1,S.send(i.statusRequest))},s=()=>{n=!0,o(!1),t(void 0),r(void 0),c(void 0),v(void 0),e.clear(),y.current=void 0,u(void 0),G(!1)},l=({status:n})=>{let i=$(n);if(Be(n)){for(let[t,n]of e)n.type!==`retry-supervisor`&&e.delete(t);[...e.values()].some(e=>e.type===`retry-supervisor`)||v(void 0),y.current=void 0,u(void 0),r(void 0),c(void 0)}o(!0),t(n),n.codexOptions&&p(e=>({...e,...n.codexOptions})),n.codexCompletion&&b.current!==n.codexCompletion.id&&(b.current=n.codexCompletion.id,G(!0));let a=!n.busy&&!n.codexCompletion?[...e.entries()].filter(([,e])=>e.type===`acknowledge-codex`).map(([e])=>e):[];if(a.length>0){for(let t of a)e.delete(t);v([...e.values()].at(-1)),c(void 0),i||G(!1)}i&&c(e=>e?.preserveDuringStatus?e:void 0)},d=n=>{let i=e.get(n.requestId);i&&(e.delete(n.requestId),v([...e.values()].at(-1)),n.status&&t(n.status),n.error?(y.current?.requestId===n.requestId&&(y.current=void 0,u(void 0)),r(n.error),i.type===`acknowledge-codex`&&G(!0)):n.status?.codexCompletion?(b.current=n.status.codexCompletion.id,y.current=void 0,u(void 0),c(void 0),G(!0)):i.type===`acknowledge-codex`||i.type===`dismiss-check`?(c(void 0),n.status&&!$(n.status)&&G(!1)):i.type===`configure-codex`||i.type===`cancel-codex`?c(void 0):n.status&&(i.type===`commit`||!$(n.status))&&c(qe(i)))},f=t=>{if(!e.has(t.requestId))return;if(t.phase===`start`){let e={commits:t.commits,messages:[t.message],phase:`running`,requestId:t.requestId,totalCommits:t.totalCommits};y.current=e,u(e),G(!0);return}let n=y.current;if(!n||n.requestId!==t.requestId)return;let r=t.phase===`message`?{...n,messages:We([...n.messages,t.message])}:t.phase===`complete`?{commits:n.commits,messages:n.messages,phase:`complete`,requestId:t.requestId,totalCommits:n.totalCommits}:t.phase===`progress`?{...n,commits:t.commits,totalCommits:t.totalCommits??n.totalCommits}:{...n,phase:`error`};y.current=r,u(r)};S.on(V.connect,a),S.on(V.disconnect,s),S.on(i.status,l),S.on(i.actionResult,d),S.on(i.codex,f),S.send(i.statusRequest);let m=globalThis.setInterval(()=>{e.size>0&&S.send(i.statusRequest,{requestIds:[...e.keys()]})},1e3);return()=>{globalThis.clearInterval(m),e.clear(),y.current=void 0,S.off(V.connect,a),S.off(V.disconnect,s),S.off(i.status,l),S.off(i.actionResult,d),S.off(i.codex,f)}},[S]);let C=async e=>{if(e.type===`acknowledge-codex`&&(b.current=e.id),r(void 0),c(void 0),e.type!==`cancel-codex`&&(y.current=void 0,u(void 0)),!S){r(`The Vite HMR connection is unavailable.`);return}let t=globalThis.crypto.getRandomValues(new Uint32Array(4)).join(`-`);x.current.set(t,e),v(e),S.send(i.action,{action:e,requestId:t})},w=f(()=>c(void 0),[]);return{act:C,checkFailure:!n&&!s&&!l&&!e?.codexCompletion?He(e):void 0,codex:l,codexOptions:d,dismissCheckFailure:e=>{if(!e.check.failureId){G(!1);return}C({failureId:e.check.failureId,type:`dismiss-check`})},dismissError:()=>r(void 0),dismissSuccess:w,error:n,hmrReady:a,pendingAction:h,setCodexOptions:p,status:e,success:s}}function Ye(e){return W.add(e),()=>W.delete(e)}function Xe(){return U}function Ze(){return!1}export{Se as ManagedDevOverlay,q as ManagedDevOverlayIndicator,xe as toggleManagedDevOverlay};
@@ -1,4 +1,2 @@
1
- import{existsSync as e}from"node:fs";import{readFile as t}from"node:fs/promises";import{dirname as n,isAbsolute as r,resolve as i}from"node:path";import{readProjectConfig as a}from"@coreframe/config";import{composeDashboardManifest as o,composeDashboardPluginTarget as s,discoverDashboardPages as c,renderDashboardPluginTargetModule as l,resolveDashboardModuleReference as u,resolveDashboardRouteModules as d}from"@coreframe/dashboard/build";import{createNodeHandler as f}from"@coreframe/dashboard/server";import{createServer as p,loadConfigFromFile as m,normalizePath as h}from"vite";const g=`/__dashboard`,_=`virtual:coreframe-internal/dashboard/worker-plugins`,v=`\0${_}`,y=`virtual:coreframe-internal/dashboard/manifest`,b=`\0${y}`,x=`virtual:coreframe-internal/dashboard/routes`,S=`\0${x}`,C=`virtual:coreframe-internal/dashboard/document`,w=`\0${C}`,T=`virtual:coreframe-internal/dashboard/styles`,E=`\0${T}`;function D({dashboardConfig:e=`dashboard/dashboard.config.ts`,dashboardOrigin:t=process.env.COREFRAME_DASHBOARD_ORIGIN??`http://127.0.0.1:5174`,env:r=process.env,projectRoot:a=process.cwd()}={}){let o,c,u=()=>c??=M(a,e,o);return{name:`coreframe:dashboard`,async config(e,n){return o=n,{define:{__COREFRAME_DASHBOARD_BUILD__:JSON.stringify(await L(a,r))},server:{proxy:{[g]:{target:t}}}}},resolveId(e){if(e===_)return v},async load(e){if(e===v)return l(s(await u(),`deployed`))},configureServer(e){return()=>{let t=e.printUrls.bind(e);e.printUrls=()=>{t();let n=e.resolvedUrls?.local[0];n&&e.config.logger.info(` ➜ Dashboard: ${new URL(g,n)}`)}}},configurePreviewServer:{order:`pre`,async handler(t){let r=await p({appType:`custom`,configFile:!1,envFile:!1,logLevel:`silent`,mode:t.config.mode,resolve:{alias:t.config.resolve.alias,dedupe:t.config.resolve.dedupe,tsconfigPaths:t.config.resolve.tsconfigPaths},root:a,server:{hmr:!1,middlewareMode:!0,watch:null}}),o;try{let s=await F(r.ssrLoadModule.bind(r),await u(),n(N(a,e))),c=t.config.environments.client.build.outDir;o=f({clientDist:i(t.config.root,c,g.slice(1)),plugins:s,projectRoot:a})}catch(e){throw await r.close(),e}t.middlewares.use(async(e,t,n)=>{if(!e.url||!P(e.url)){n();return}await o.handle(e,t)});let s,c=()=>s??=Promise.all([o.dispose(),r.close()]).then(()=>void 0),l=t.close.bind(t);return t.close=async()=>{await Promise.all([c(),l()])},t.httpServer.once(`close`,()=>{c()}),()=>{let e=t.printUrls.bind(t);t.printUrls=()=>{e();let n=t.resolvedUrls?.local[0];n&&t.config.logger.info(` ➜ Dashboard: ${new URL(g,n)}`)}}}}}}function O({dashboardDirectory:e=process.cwd(),environment:t=process.env.DEPLOY_ENV?`deployed`:`local`,projectRoot:n=i(e,`..`)}={}){let r,a,s,l=i(e,`dashboard.config.ts`),u=()=>a??=M(n,l,r);return{name:`coreframe:dashboard-app`,config(e,t){return r=t,{ssr:{noExternal:[`@coreframe/dashboard`]}}},resolveId(e){if(e===y)return b;if(e===x)return S;if(e===C)return w;if(e===T)return E},async load(r){if(r===E)return A(e);if(r===w)return k((await u()).document,e,n);if(r!==b&&r!==S)return;let[i,a]=await Promise.all([u(),c({dashboardDirectory:e})]),s=o(i,a,{environment:t});if(r===S){let t=d(s,{dashboardDirectory:e,projectRoot:n});return`export const dashboardRoutePages = ${JSON.stringify(t)}\n`}return`export const dashboardManifest = ${JSON.stringify(s)}\n`},async configureServer(t){s=f({plugins:await F(t.ssrLoadModule.bind(t),await u(),e),projectRoot:n}),t.middlewares.use(async(e,t,n)=>{if(!e.url||!e.url.startsWith(`${g}/api/plugins/`)){n();return}await s.handle(e,t)}),t.httpServer?.once(`close`,()=>{s?.dispose()})}}}function k(e,t,n){if(!e)return[`export const Layout = undefined`,`export const links = undefined`,`export const meta = undefined`,`export default undefined`,``].join(`
2
- `);let r=j(u(e,{dashboardDirectory:t,projectRoot:n}));return[`import * as document from ${JSON.stringify(r)}`,`export const Layout = document.Layout`,`export const links = document.links`,`export const meta = document.meta`,`export default document.default`,``].join(`
3
- `)}function A(t){let n=[`import ${JSON.stringify(`@coreframe/dashboard/shell.css`)}`];for(let r of[`styles.css`,`styled-system/styles.css`]){let a=i(t,r);e(a)&&n.push(`import ${JSON.stringify(j(a))}`)}return`${n.join(`
4
- `)}\n`}function j(e){return`/@fs/${h(e)}`}async function M(e,t,n){let r=N(e,t),i=await m(n,r,e,void 0,void 0,`runner`);if(!i)throw Error(`Could not load dashboard configuration at ${r}.`);return i.config}function N(e,t){return r(t)?t:i(e,t)}function P(e){let[t]=e.split(`?`,1);return t===g||t.startsWith(`${g}/`)}async function F(e,t,n){let r=s(t,`local`);return Promise.all(r.map(async t=>{let[r,i]=await Promise.all([e(I(t.apiModule,n)),e(I(t.implementationModule,n))]);return{api:r.default,createImplementation:i.createImplementation}}))}function I(e,t){return e.startsWith(`.`)?`/@fs/${h(i(n(i(t,`dashboard.config.ts`)),e))}`:e}async function L(e,n){let[r,o]=await Promise.all([t(i(e,`package.json`),`utf8`),a({cwd:e})]),s=JSON.parse(r),c=Object.entries(o.worker?.environment??{}).flatMap(([e,t])=>t.kind===`generated`?[]:[{description:t.description,kind:t.kind,name:e,requiredIn:t.requiredIn??[]}]);return{applicationName:s.name??`Coreframe application`,applicationVersion:s.version,commit:n.GITHUB_SHA,configuration:c,coreframeVersion:s.engines?.coreframe,deployUrls:{production:o.deploy?.environments?.production?.url,staging:o.deploy?.environments?.staging?.url}}}export{O as coreframeDashboardAppPlugin,D as coreframeDashboardPlugin};
1
+ import{existsSync as e}from"node:fs";import{readFile as t}from"node:fs/promises";import{dirname as n,isAbsolute as r,resolve as i}from"node:path";import{readProjectConfig as a}from"@coreframe/config";import{composeDashboardManifest as o,composeDashboardPluginTarget as s,discoverDashboardPages as c,renderDashboardPluginTargetModule as l,renderDashboardRoutesModule as u,resolveDashboardRouteModules as d}from"@coreframe/dashboard/build";import{createNodeHandler as f}from"@coreframe/dashboard/server";import{createServer as p,loadConfigFromFile as m,normalizePath as h}from"vite";const g=`/__dashboard`,_=`virtual:coreframe-internal/dashboard/worker-plugins`,v=`\0${_}`,y=`virtual:coreframe-internal/dashboard/manifest`,b=`\0${y}`,x=`virtual:coreframe-internal/dashboard/routes`,S=`\0${x}`,C=`virtual:coreframe-internal/dashboard/styles`,w=`\0${C}`;function T({dashboardConfig:e=`dashboard/dashboard.config.ts`,dashboardOrigin:t=process.env.COREFRAME_DASHBOARD_ORIGIN??`http://127.0.0.1:5174`,env:r=process.env,projectRoot:a=process.cwd()}={}){let o,c,u=()=>c??=k(a,e,o);return{name:`coreframe:dashboard`,async config(e,n){return o=n,{define:{__COREFRAME_DASHBOARD_BUILD__:JSON.stringify(await P(a,r))},server:{proxy:{[g]:{target:t}}}}},resolveId(e){if(e===_)return v},async load(e){if(e===v)return l(s(await u(),`deployed`))},configureServer(e){return()=>{let t=e.printUrls.bind(e);e.printUrls=()=>{t();let n=e.resolvedUrls?.local[0];n&&e.config.logger.info(` ➜ Dashboard: ${new URL(g,n)}`)}}},configurePreviewServer:{order:`pre`,async handler(t){let r=await p({appType:`custom`,configFile:!1,envFile:!1,logLevel:`silent`,mode:t.config.mode,resolve:{alias:t.config.resolve.alias,dedupe:t.config.resolve.dedupe,tsconfigPaths:t.config.resolve.tsconfigPaths},root:a,server:{hmr:!1,middlewareMode:!0,watch:null}}),o;try{let s=await M(r.ssrLoadModule.bind(r),await u(),n(A(a,e))),c=t.config.environments.client.build.outDir;o=f({clientDist:i(t.config.root,c,g.slice(1)),plugins:s,projectRoot:a})}catch(e){throw await r.close(),e}t.middlewares.use(async(e,t,n)=>{if(!e.url||!j(e.url)){n();return}await o.handle(e,t)});let s,c=()=>s??=Promise.all([o.dispose(),r.close()]).then(()=>void 0),l=t.close.bind(t);return t.close=async()=>{await Promise.all([c(),l()])},t.httpServer.once(`close`,()=>{c()}),()=>{let e=t.printUrls.bind(t);t.printUrls=()=>{e();let n=t.resolvedUrls?.local[0];n&&t.config.logger.info(` ➜ Dashboard: ${new URL(g,n)}`)}}}}}}function E({dashboardDirectory:e=process.cwd(),environment:t=process.env.DEPLOY_ENV?`deployed`:`local`,projectRoot:n=i(e,`..`)}={}){let r,a,s,l=i(e,`dashboard.config.ts`),p=()=>a??=k(n,l,r);return{name:`coreframe:dashboard-app`,config(e,t){return r=t,{ssr:{noExternal:[`@coreframe/dashboard`]}}},resolveId(e){if(e===y)return b;if(e===x)return S;if(e===C)return w},async load(r){if(r===w)return D(e);if(r!==b&&r!==S)return;let[i,a]=await Promise.all([p(),c({dashboardDirectory:e})]),s=o(i,a,{environment:t});return r===S?u(d(s,{dashboardDirectory:e,projectRoot:n})):`export const dashboardManifest = ${JSON.stringify(s)}\n`},async configureServer(t){s=f({plugins:await M(t.ssrLoadModule.bind(t),await p(),e),projectRoot:n}),t.middlewares.use(async(e,t,n)=>{if(!e.url||!e.url.startsWith(`${g}/api/plugins/`)){n();return}await s.handle(e,t)}),t.httpServer?.once(`close`,()=>{s?.dispose()})}}}function D(t){let n=[`import ${JSON.stringify(`@coreframe/dashboard/shell.css`)}`,`import ${JSON.stringify(`virtual:bamboo.css`)}`],r=i(t,`styles.css`);return e(r)&&n.push(`import ${JSON.stringify(O(r))}`),`${n.join(`
2
+ `)}\n`}function O(e){return`/@fs/${h(e)}`}async function k(e,t,n){let r=A(e,t),i=await m(n,r,e,void 0,void 0,`runner`);if(!i)throw Error(`Could not load dashboard configuration at ${r}.`);return i.config}function A(e,t){return r(t)?t:i(e,t)}function j(e){let[t]=e.split(`?`,1);return t===g||t.startsWith(`${g}/`)}async function M(e,t,n){let r=s(t,`local`);return Promise.all(r.map(async t=>{let[r,i]=await Promise.all([e(N(t.apiModule,n)),e(N(t.implementationModule,n))]);return{api:r.default,createImplementation:i.createImplementation}}))}function N(e,t){return e.startsWith(`.`)?`/@fs/${h(i(n(i(t,`dashboard.config.ts`)),e))}`:e}async function P(e,n){let[r,o]=await Promise.all([t(i(e,`package.json`),`utf8`),a({cwd:e})]),s=JSON.parse(r),c=Object.entries(o.worker?.environment??{}).flatMap(([e,t])=>t.kind===`generated`?[]:[{description:t.description,kind:t.kind,name:e,requiredIn:t.requiredIn??[]}]);return{applicationName:s.name??`Coreframe application`,applicationVersion:s.version,commit:n.GITHUB_SHA,configuration:c,coreframeVersion:s.engines?.coreframe,deployUrls:{production:o.deploy?.environments?.production?.url,staging:o.deploy?.environments?.staging?.url}}}export{E as coreframeDashboardAppPlugin,T as coreframeDashboardPlugin};
@@ -10,10 +10,9 @@ type CoreframeDevJobsPluginOptions = {
10
10
  post?: (input: {
11
11
  port: number;
12
12
  secure: boolean;
13
- signal: AbortSignal;
14
13
  token: string;
15
14
  }) => Promise<DevJobsResponse>;
16
- wait?: (milliseconds: number, signal: AbortSignal) => Promise<void>;
15
+ wait?: (milliseconds: number) => Promise<void>;
17
16
  };
18
17
  declare function coreframeDevJobsPlugin({
19
18
  env,
@@ -1 +1 @@
1
- import{request as e}from"node:http";import{request as t}from"node:https";import{devJobsEnv as n,devJobsPath as r,devJobsTokenHeader as i}from"@coreframe/dev-contracts/dev-jobs";function a({env:e=process.env,post:t=l,wait:r=u}={}){let i=e[n];return{apply:`serve`,name:`coreframe:dev-jobs`,configureServer(e){if(!i)return;let n=new AbortController;e.httpServer?.once(`listening`,()=>{let a=e.httpServer?.address();if(!a||typeof a==`string`){e.config.logger.warn(`Coreframe dev jobs could not determine the Vite server port.`);return}o({logger:e.config.logger,port:a.port,post:t,secure:!!e.config.server.https,signal:n.signal,token:i,wait:r})}),e.httpServer?.once(`close`,()=>{n.abort()})}}}async function o(e){for(;!e.signal.aborted;)await s(e),e.signal.aborted||await e.wait(6e4,e.signal)}async function s({logger:e,port:t,post:n,secure:r,signal:i,token:a,wait:o}){for(let s=1;s<=20;s+=1){if(i.aborted)return;try{let o=await n({port:t,secure:r,signal:i,token:a});if(i.aborted)return;if(o.statusCode>=200&&o.statusCode<300){c(o.body)&&e.info(`Coreframe development jobs checked.`);return}if(o.statusCode!==404&&o.statusCode!==502&&o.statusCode!==503){e.warn(`Coreframe development jobs failed with HTTP ${o.statusCode}. Retrying in one minute.`);return}}catch(t){if(i.aborted)return;if(s===20){let n=t instanceof Error?t.message:String(t);e.warn(`Coreframe development jobs are temporarily unavailable: ${n}. Retrying in one minute.`);return}}s<20&&await o(250,i)}e.warn(`Coreframe development jobs did not become available. Retrying in one minute.`)}function c(e){if(!e)return!1;try{let t=JSON.parse(e);return typeof t==`object`&&!!t&&`results`in t&&Array.isArray(t.results)&&t.results.length>0}catch{return!1}}function l({port:n,secure:a,signal:o,token:s}){return new Promise((c,l)=>{let u=(a?t:e)({hostname:`127.0.0.1`,method:`POST`,path:r,port:n,signal:o,...a?{rejectUnauthorized:!1}:void 0,headers:{[i]:s,"content-length":`0`}},e=>{let t=``;e.setEncoding(`utf8`),e.on(`data`,e=>{t+=e}),e.on(`end`,()=>{c({body:t,statusCode:e.statusCode??500})})});u.on(`error`,l),u.end()})}function u(e,t){return t.aborted?Promise.resolve():new Promise(n=>{let r=()=>{clearTimeout(i),t.removeEventListener(`abort`,r),n()},i=setTimeout(r,e);t.addEventListener(`abort`,r,{once:!0})})}export{a as coreframeDevJobsPlugin};
1
+ import{request as e}from"node:http";import{request as t}from"node:https";import{devJobsEnv as n,devJobsPath as r,devJobsTokenHeader as i}from"@coreframe/dev-contracts/dev-jobs";function a({env:e=process.env,post:t=s,wait:r=c}={}){let i=e[n];return{apply:`serve`,name:`coreframe:dev-jobs`,configureServer(e){if(!i)return;let n=!1;e.httpServer?.once(`listening`,()=>{let a=e.httpServer?.address();if(!a||typeof a==`string`){e.config.logger.warn(`Coreframe dev jobs could not determine the Vite server port.`);return}o({logger:e.config.logger,port:a.port,post:t,secure:!!e.config.server.https,token:i,wait:r,isClosed:()=>n})}),e.httpServer?.once(`close`,()=>{n=!0})}}}async function o({isClosed:e,logger:t,port:n,post:r,secure:i,token:a,wait:o}){for(let s=1;s<=20;s+=1){if(e())return;try{let e=await r({port:n,secure:i,token:a});if(e.statusCode>=200&&e.statusCode<300){t.info(`Coreframe development jobs checked.`);return}if(e.statusCode!==404&&e.statusCode!==502&&e.statusCode!==503){t.warn(`Coreframe development jobs failed with HTTP ${e.statusCode}.`);return}}catch(e){if(s===20){let n=e instanceof Error?e.message:String(e);t.warn(`Coreframe development jobs could not start: ${n}`);return}}await o(250)}t.warn(`Coreframe development jobs did not become available.`)}function s({port:n,secure:a,token:o}){return new Promise((s,c)=>{let l=(a?t:e)({hostname:`127.0.0.1`,method:`POST`,path:r,port:n,...a?{rejectUnauthorized:!1}:void 0,headers:{[i]:o,"content-length":`0`}},e=>{let t=``;e.setEncoding(`utf8`),e.on(`data`,e=>{t+=e}),e.on(`end`,()=>{s({body:t,statusCode:e.statusCode??500})})});l.on(`error`,c),l.end()})}function c(e){return new Promise(t=>setTimeout(t,e))}export{a as coreframeDevJobsPlugin};
@@ -1 +1 @@
1
- import{mkdir as e,writeFile as t}from"node:fs/promises";import n from"node:path";import{randomUUID as r}from"node:crypto";import{developmentControlsEvents as i}from"@coreframe/dev-contracts/development-controls";import{managedDevFlutterRestartFileEnv as a}from"@coreframe/dev-contracts/managed-dev";function o({enabled:o=!0,env:s=process.env}={}){return{name:`coreframe:development-controls`,apply:`serve`,configureServer(c){if(!o)return;let l=!1,u=async(o,u)=>{if(l){u.send(i.actionResult,{error:o.action.type===`restart-flutter`?`A Flutter restart is already in progress.`:`A Vite restart is already in progress.`,requestId:o.requestId,state:`error`});return}l=!0,u.send(i.actionResult,{requestId:o.requestId,state:`busy`});try{if(o.action.type===`restart-flutter`){let i=s[a];if(!i)throw Error(`Flutter restart is unavailable for this development server.`);await e(n.dirname(i),{recursive:!0}),await t(i,`${r()}\n`,{mode:384})}else await c.restart();l=!1,u.send(i.actionResult,{requestId:o.requestId,state:`complete`})}catch(e){l=!1;let t=e instanceof Error?e.message:String(e),n=o.action.type===`restart-flutter`?`Flutter`:`Vite`;c.config.logger.error(`Coreframe ${n} restart failed: ${t}`,{error:e instanceof Error?e:void 0}),u.send(i.actionResult,{error:t,requestId:o.requestId,state:`error`})}};c.ws.on(i.action,u),c.httpServer?.once(`close`,()=>{c.ws.off(i.action,u)})}}}export{o as coreframeDevelopmentControlsPlugin};
1
+ import{mkdir as e,writeFile as t}from"node:fs/promises";import n from"node:path";import{randomUUID as r}from"node:crypto";import{developmentControlsEvents as i}from"@coreframe/dev-contracts/development-controls";import{managedDevNativeRestartFileEnv as a}from"@coreframe/dev-contracts/managed-dev";function o({enabled:o=!0,env:s=process.env}={}){return{name:`coreframe:development-controls`,apply:`serve`,configureServer(c){if(!o)return;let l=!1,u=async(o,u)=>{if(l){u.send(i.actionResult,{error:o.action.type===`restart-native`?`A native restart is already in progress.`:`A Vite restart is already in progress.`,requestId:o.requestId,state:`error`});return}l=!0,u.send(i.actionResult,{requestId:o.requestId,state:`busy`});try{if(o.action.type===`restart-native`){let i=s[a];if(!i)throw Error(`Native restart is unavailable for this development server.`);await e(n.dirname(i),{recursive:!0}),await t(i,`${r()}\n`,{mode:384})}else await c.restart();l=!1,u.send(i.actionResult,{requestId:o.requestId,state:`complete`})}catch(e){l=!1;let t=e instanceof Error?e.message:String(e),n=o.action.type===`restart-native`?`native`:`Vite`;c.config.logger.error(`Coreframe ${n} restart failed: ${t}`,{error:e instanceof Error?e:void 0}),u.send(i.actionResult,{error:t,requestId:o.requestId,state:`error`})}};c.ws.on(i.action,u),c.httpServer?.once(`close`,()=>{c.ws.off(i.action,u)})}}}export{o as coreframeDevelopmentControlsPlugin};
@@ -2,7 +2,7 @@ import { ConfigEnv, PluginOption } from "vite";
2
2
  import { ShellPlatform } from "@coreframe/lib/shell";
3
3
 
4
4
  //#region plugins/index.d.ts
5
- type CoreframeHost = "browser" | "flutter";
5
+ type CoreframeHost = "browser" | "xplat";
6
6
  type CoreframePlatform = ShellPlatform;
7
7
  type CoreframeRunner = "vite" | "vitest" | "react-router-prerender";
8
8
  type CoreframeConfigEnv = ConfigEnv & {
@@ -1 +1 @@
1
- function e(e,i=process.env){let a=r(i);return{...e,host:t(i,a),platform:a,runner:n(i)}}function t(e=process.env,t=r(e)){return t===`web`?`browser`:`flutter`}function n(e=process.env){return e.VITEST===`true`?`vitest`:e.IS_RR_BUILD_REQUEST===`yes`?`react-router-prerender`:`vite`}function r(e=process.env){let t=e.COREFRAME_PLATFORM??`web`,n=t===`darwin`?`macos`:t===`win32`?`windows`:t;if(n!==`web`&&n!==`ios`&&n!==`android`&&n!==`macos`&&n!==`windows`&&n!==`linux`)throw Error(`Unsupported Coreframe platform: ${JSON.stringify(t)}.`);return n}function i(e,t){return t.map(t=>u(e,t))}function a(e,t){return n=>e(n)?u(n,t):null}function o(e){return a(e=>e.command===`build`,e)}function s(e){return a(e=>e.command===`serve`,e)}function c(e,t){return a(t=>d(e,t.runner),t)}function l(e,t){return a(t=>!d(e,t.runner),t)}function u(e,t){return typeof t==`function`?t(e):t}function d(e,t){return(typeof e==`string`?[e]:e).includes(t)}export{a as apply,o as buildOnly,s as devOnly,l as exceptRunner,e as extendConfigEnv,t as resolveCoreframeHost,r as resolveCoreframePlatform,n as resolveCoreframeRunner,c as runnerOnly,i as selectPlugins};
1
+ function e(e,i=process.env){let a=r(i);return{...e,host:t(i,a),platform:a,runner:n(i)}}function t(e=process.env,t=r(e)){return t===`web`?`browser`:`xplat`}function n(e=process.env){return e.VITEST===`true`?`vitest`:e.IS_RR_BUILD_REQUEST===`yes`?`react-router-prerender`:`vite`}function r(e=process.env){let t=e.COREFRAME_PLATFORM??`web`,n=t===`darwin`?`macos`:t===`win32`?`windows`:t;if(n!==`web`&&n!==`ios`&&n!==`android`&&n!==`macos`&&n!==`windows`&&n!==`linux`)throw Error(`Unsupported Coreframe platform: ${JSON.stringify(t)}.`);return n}function i(e,t){return t.map(t=>u(e,t))}function a(e,t){return n=>e(n)?u(n,t):null}function o(e){return a(e=>e.command===`build`,e)}function s(e){return a(e=>e.command===`serve`,e)}function c(e,t){return a(t=>d(e,t.runner),t)}function l(e,t){return a(t=>!d(e,t.runner),t)}function u(e,t){return typeof t==`function`?t(e):t}function d(e,t){return(typeof e==`string`?[e]:e).includes(t)}export{a as apply,o as buildOnly,s as devOnly,l as exceptRunner,e as extendConfigEnv,t as resolveCoreframeHost,r as resolveCoreframePlatform,n as resolveCoreframeRunner,c as runnerOnly,i as selectPlugins};
@@ -1 +1 @@
1
- import{mkdir as e,writeFile as t}from"node:fs/promises";import n from"node:path";import{readProjectConfig as r}from"@coreframe/config";import{randomUUID as i}from"node:crypto";import{managedDevEnv as a,managedDevEvents as o,managedDevFlutterRestartFileEnv as s,managedDevSupervisorRecoveryErrorPrefix as c}from"@coreframe/dev-contracts/managed-dev";import{startManagedDevSession as l}from"@coreframe/dev/managed-dev";import{connectDevSupervisor as u,connectExistingDevSupervisor as d}from"@coreframe/dev/supervisor";const f=Symbol.for(`@coreframe/vite/managed-dev-session-states`),p=(()=>{let e=globalThis;return e[f]??=new Map})(),m=[100,500,2e3];function h({connectSupervisor:f,env:p=process.env,recoverSupervisor:h,startSession:v=l}={}){let x=p[a]===`1`,S=f??d,C=h??f??u,w,T,E,D,O,k,A,j,M,N=!1,P=!1,F=!1,I=!1,L=!1,R=new Map,z={mode:`waiting`,warnings:[]},B=()=>{let e=T;return D?.(),D=void 0,O?.(),O=void 0,T=void 0,E=void 0,e},V=()=>M??=(async()=>{L=!0,await A,await j,I=!1;let e=w,t=T,n=E;w=void 0,B(),e&&k&&await _(k,e),t&&(n&&await t.release(n).catch(()=>void 0),t.close())})();return{name:`coreframe:managed-dev`,apply:`serve`,config(){return{define:{"import.meta.env.COREFRAME_MANAGED_DEV":JSON.stringify(x)}}},configureServer(a){if(!x)return;let l=a.config.root;k=l;let u=!1,d=!1,f=()=>w?.getStatus()??z,h=()=>{L||a.ws.send(o.status,{status:f()})},M=()=>{d||L||(d=!0,queueMicrotask(()=>{d=!1,Promise.resolve(a.restart()).catch(e=>{let t=e instanceof Error?e.message:String(e);a.config.logger.error(`Coreframe managed development restart failed: ${t}`,{error:e instanceof Error?e:void 0})})}))},H=(e,t)=>{if(L||T!==e||!I||t.event!==`managed-dev`)return;if(t.kind===`status`){z=t.status,h();return}if(t.kind===`restart`){u=!0,R.size===0&&(u=!1,M());return}let n=R.get(t.requestId);!n||!t.codex||typeof t.codex!=`object`||n.send(o.codex,{...t.codex,requestId:t.requestId})},U=async e=>{let t,n=!1,r=e.onEvent(t=>H(e,t)),i=e.onClose(t=>{n=!0,!L&&T===e&&P&&!F&&!j&&(I=!1,W(t))});T=e,D=r,O=i;try{await e.subscribe([`managed-dev`]);let r=await e.acquireManagedDev({env:p});if(t=r.leaseId,n||L||T!==e)throw Error(`The development supervisor disconnected while managed development was attaching.`);E=r.leaseId,z=r.status,I=!0,P=!0,h()}catch(n){throw T===e?B():(r(),i()),t&&await e.release(t).catch(()=>void 0),e.close(),n}};function W(e,t=!1){if(L||!P)return Promise.resolve();if(j)return j;I=!1,N=!1,B()?.close(),z={message:t?`Managed development supervisor retrying connection.`:`Managed development supervisor disconnected. Reconnecting…`,mode:`waiting`,warnings:[]},h();let n=(async()=>{let t=e;for(let e=0;e<4;e+=1){if(L||(e>0&&await new Promise(t=>setTimeout(t,m[e-1]??2e3)),L))return;try{let e=await C({cwd:l,env:p,requiredResources:[`managed-dev`]});if(!e)throw Error(`No managed development supervisor is available.`);if(L){e.close();return}await U(e),N=!1;return}catch(n){t=n;let r=y(n);a.config.logger.error(`Coreframe managed development supervisor recovery attempt ${e+1} failed: ${r}`,{error:n instanceof Error?n:void 0}),e+1<4&&(z={message:`Managed development supervisor recovery is retrying (${e+2}/4).`,mode:`waiting`,warnings:[]},h())}}if(L)return;let n=y(t),r=`${c}4 attempts: ${n} Retry to reconnect managed development.`;N=!0,z={message:r,mode:`error`,warnings:[r]},a.config.logger.error(`Coreframe managed development supervisor recovery failed: ${n}`,{error:t instanceof Error?t:void 0}),h()})();return j=n,n.then(()=>{j===n&&(j=void 0)},()=>{j===n&&(j=void 0)}),n}let G=(e,t)=>{P&&T===e&&b(t)&&(I=!1,W(t))},K=async(e,t)=>{let n=T;if(n&&I)try{z=(await n.managedDevStatus()).status}catch(e){let t=e instanceof Error?e.message:String(e);a.config.logger.error(`Coreframe managed development status failed: ${t}`,{error:e instanceof Error?e:void 0}),G(n,e)}t.send(o.status,{status:f()})},q=async(e,t)=>{if(e.action.type===`retry-supervisor`){try{if(!P||!N)throw Error(`Managed development supervisor recovery is not available.`);await W(void 0,!0);let n=f();if(N)throw Error(n.message??`Managed development supervisor recovery failed.`);t.send(o.actionResult,{requestId:e.requestId,status:n})}catch(n){let r=y(n);a.config.logger.error(`Coreframe managed development action failed: ${r}`,{error:n instanceof Error?n:void 0}),t.send(o.actionResult,{error:r,requestId:e.requestId,status:f()})}return}let n;try{if(!I)throw Error(`Managed development is still initializing.`);let n=T;if(n){R.set(e.requestId,t);try{let r=await n.managedDevAction({action:e.action,requestId:e.requestId});r.status&&(z=r.status),t.send(o.actionResult,{...r,requestId:e.requestId}),!r.error&&u&&(u=!1,M())}catch(e){throw G(n,e),e}finally{R.delete(e.requestId)}return}let r=w;if(!r)throw Error(`Managed development is still initializing.`);let i=await r.action(e.action,{onCodexEvent:n=>t.send(o.codex,{...n,requestId:e.requestId})});t.send(o.actionResult,{requestId:e.requestId,...i}),u&&(u=!1,queueMicrotask(()=>{V().then(()=>a.restart()).catch(e=>{let t=e instanceof Error?e.message:String(e);a.config.logger.error(`Coreframe managed development restart failed: ${t}`,{error:e instanceof Error?e:void 0})})}));return}catch(e){n=e}let r=n instanceof Error?n.message:String(n);a.config.logger.error(`Coreframe managed development action failed: ${r}`,{error:n instanceof Error?n:void 0}),t.send(o.actionResult,{error:r,requestId:e.requestId,status:f()})};a.ws.on(o.statusRequest,K),a.ws.on(o.action,q),A=(async()=>{let o,c;try{if(F=!0,o=await S({cwd:l,env:p,requiredResources:[`managed-dev`]}),o){if(L){o.close();return}await U(o);return}let d=await r({cwd:l});if(L)return;if(c=await v({config:d,cwd:l,env:p,onRestart:()=>{u=!0},onFlutterRestart:async()=>{let r=p[s];if(r)try{await e(n.dirname(r),{recursive:!0}),await t(r,`${i()}\n`,{mode:384})}catch(e){let t=e instanceof Error?e.message:String(e);a.config.logger.error(`Coreframe Flutter restart request failed: ${t}`,{error:e instanceof Error?e:void 0})}},onStatusChange:e=>{z=e,h()}}),w=c,z=c.getStatus(),L){w=void 0,await c.close();return}if(await g(l,c),L){w=void 0,await _(l,c);return}I=!0}catch(e){if(o&&T===o&&(B(),o.close()),w===c&&(w=void 0),!L){let t=e instanceof Error?e.message:String(e);z={message:t,mode:`error`,warnings:[t]},a.config.logger.error(`Coreframe managed development initialization failed: ${t}`,{error:e instanceof Error?e:void 0}),h()}}finally{F=!1}})(),a.httpServer?.once(`close`,()=>{a.ws.off(o.statusRequest,K),a.ws.off(o.action,q),V()})},async closeBundle(){await V()}}}async function g(e,t){await v(e,async e=>{let n=e.session;e.session=void 0,await n?.close();try{await t.activate(),e.session=t}catch(e){throw await t.close(),e}})}async function _(e,t){await v(e,async e=>{e.session===t&&(e.session=void 0),await t.close()})}async function v(e,t){let n=p.get(e);n||(n={transition:Promise.resolve()},p.set(e,n));let r=n.transition,i;n.transition=new Promise(e=>{i=()=>e()}),await r;try{await t(n)}finally{i()}}function y(e){return e instanceof Error?e.message:String(e)}function b(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.retryable===!0||t.code===`LEASE_EXPIRED`||t.code===`SUPERVISOR_STOPPING`}export{h as coreframeManagedDevPlugin};
1
+ import{mkdir as e,writeFile as t}from"node:fs/promises";import n from"node:path";import{readProjectConfig as r}from"@coreframe/config";import{randomUUID as i}from"node:crypto";import{managedDevEnv as a,managedDevEvents as o,managedDevNativeRestartFileEnv as s,managedDevSupervisorRecoveryErrorPrefix as c}from"@coreframe/dev-contracts/managed-dev";import{startManagedDevSession as l}from"@coreframe/dev/managed-dev";import{connectDevSupervisor as u,connectExistingDevSupervisor as d}from"@coreframe/dev/supervisor";const f=Symbol.for(`@coreframe/vite/managed-dev-session-states`),p=(()=>{let e=globalThis;return e[f]??=new Map})(),m=[100,500,2e3];function h({connectSupervisor:f,env:p=process.env,recoverSupervisor:h,startSession:v=l}={}){let x=p[a]===`1`,S=f??d,C=h??f??u,w,T,E,D,O,k,A,j,M,N=!1,P=!1,F=!1,I=!1,L=!1,R=new Map,z=new WeakMap,B=new WeakMap,V=(e,t)=>{let n=B.get(e)??new Map;n.set(t.requestId,t),n.size>100&&n.delete(n.keys().next().value),B.set(e,n),e.send(o.actionResult,t)},H={mode:`waiting`,warnings:[]},U=()=>{let e=T;return D?.(),D=void 0,O?.(),O=void 0,T=void 0,E=void 0,e},W=()=>M??=(async()=>{L=!0,await A,await j,I=!1;let e=w,t=T,n=E;w=void 0,U(),e&&k&&await _(k,e),t&&(n&&await t.release(n).catch(()=>void 0),t.close())})();return{name:`coreframe:managed-dev`,apply:`serve`,config(){return{define:{"import.meta.env.COREFRAME_MANAGED_DEV":JSON.stringify(x)}}},configureServer(a){if(!x)return;let l=a.config.root;k=l;let u=!1,d=!1,f=()=>w?.getStatus()??H,h=()=>{L||a.ws.send(o.status,{status:f()})},M=()=>{d||L||(d=!0,queueMicrotask(()=>{d=!1,Promise.resolve(a.restart()).catch(e=>{let t=e instanceof Error?e.message:String(e);a.config.logger.error(`Coreframe managed development restart failed: ${t}`,{error:e instanceof Error?e:void 0})})}))},G=(e,t)=>{if(L||T!==e||!I||t.event!==`managed-dev`)return;if(t.kind===`status`){H=t.status,h();return}if(t.kind===`restart`){u=!0,R.size===0&&(u=!1,M());return}let n=R.get(t.requestId);!n||!t.codex||typeof t.codex!=`object`||n.client.send(o.codex,{...t.codex,requestId:n.requestId})},K=async e=>{let t,n=!1,r=e.onEvent(t=>G(e,t)),i=e.onClose(t=>{n=!0,!L&&T===e&&P&&!F&&!j&&(I=!1,q(t))});T=e,D=r,O=i;try{await e.subscribe([`managed-dev`]);let r=await e.acquireManagedDev({env:p});if(t=r.leaseId,n||L||T!==e)throw Error(`The development supervisor disconnected while managed development was attaching.`);E=r.leaseId,H=r.status,I=!0,P=!0,h()}catch(n){throw T===e?U():(r(),i()),t&&await e.release(t).catch(()=>void 0),e.close(),n}};function q(e,t=!1){if(L||!P)return Promise.resolve();if(j)return j;I=!1,N=!1,U()?.close(),H={message:t?`Managed development supervisor retrying connection.`:`Managed development supervisor disconnected. Reconnecting…`,mode:`waiting`,warnings:[]},h();let n=(async()=>{let t=e;for(let e=0;e<4;e+=1){if(L||(e>0&&await new Promise(t=>setTimeout(t,m[e-1]??2e3)),L))return;try{let e=await C({cwd:l,env:p,requiredResources:[`managed-dev`]});if(!e)throw Error(`No managed development supervisor is available.`);if(L){e.close();return}await K(e),N=!1;return}catch(n){t=n;let r=y(n);a.config.logger.error(`Coreframe managed development supervisor recovery attempt ${e+1} failed: ${r}`,{error:n instanceof Error?n:void 0}),e+1<4&&(H={message:`Managed development supervisor recovery is retrying (${e+2}/4).`,mode:`waiting`,warnings:[]},h())}}if(L)return;let n=y(t),r=`${c}4 attempts: ${n} Retry to reconnect managed development.`;N=!0,H={message:r,mode:`error`,warnings:[r]},a.config.logger.error(`Coreframe managed development supervisor recovery failed: ${n}`,{error:t instanceof Error?t:void 0}),h()})();return j=n,n.then(()=>{j===n&&(j=void 0)},()=>{j===n&&(j=void 0)}),n}let J=(e,t)=>{P&&T===e&&b(t)&&(I=!1,q(t))},Y=async(e,t)=>{let n=e?.requestIds;if(Array.isArray(n))for(let e of n.slice(0,100)){let n=B.get(t)?.get(e);n?t.send(o.actionResult,n):typeof e==`string`&&!z.get(t)?.has(e)&&V(t,{requestId:e,error:`The server has no result for this request. Check the current status before trying again.`})}let r=T;if(r&&I)try{H=(await r.managedDevStatus()).status}catch(e){let t=e instanceof Error?e.message:String(e);a.config.logger.error(`Coreframe managed development status failed: ${t}`,{error:e instanceof Error?e:void 0}),J(r,e)}t.send(o.status,{status:f()})},X=async(e,t)=>{if(e.action.type===`retry-supervisor`){try{if(!P||!N)throw Error(`Managed development supervisor recovery is not available.`);await q(void 0,!0);let n=f();if(N)throw Error(n.message??`Managed development supervisor recovery failed.`);V(t,{requestId:e.requestId,status:n})}catch(n){let r=y(n);a.config.logger.error(`Coreframe managed development action failed: ${r}`,{error:n instanceof Error?n:void 0}),V(t,{error:r,requestId:e.requestId,status:f()})}return}let n;try{if(!I)throw Error(`Managed development is still initializing.`);let n=T;if(n){let r=i();R.set(r,{client:t,requestId:e.requestId});try{let i=await n.managedDevAction({action:e.action,requestId:r});i.status&&(H=i.status),V(t,{...i,requestId:e.requestId}),!i.error&&u&&(u=!1,M())}catch(e){throw J(n,e),e}finally{R.delete(r)}return}let r=w;if(!r)throw Error(`Managed development is still initializing.`);let s=await r.action(e.action,{onCodexEvent:n=>t.send(o.codex,{...n,requestId:e.requestId})});V(t,{requestId:e.requestId,...s}),u&&(u=!1,queueMicrotask(()=>{W().then(()=>a.restart()).catch(e=>{let t=e instanceof Error?e.message:String(e);a.config.logger.error(`Coreframe managed development restart failed: ${t}`,{error:e instanceof Error?e:void 0})})}));return}catch(e){n=e}let r=n instanceof Error?n.message:String(n);a.config.logger.error(`Coreframe managed development action failed: ${r}`,{error:n instanceof Error?n:void 0}),V(t,{error:r,requestId:e.requestId,status:f()})},Z=async(e,t)=>{let n=z.get(t)??new Set;if(z.set(t,n),n.has(e.requestId))return;let r=B.get(t)?.get(e.requestId);if(r){t.send(o.actionResult,r);return}n.add(e.requestId);try{await X(e,t)}finally{n.delete(e.requestId)}};a.ws.on(o.statusRequest,Y),a.ws.on(o.action,Z),A=(async()=>{let o,c;try{if(F=!0,o=await S({cwd:l,env:p,requiredResources:[`managed-dev`]}),o){if(L){o.close();return}await K(o);return}let d=await r({cwd:l});if(L)return;if(c=await v({config:d,cwd:l,env:p,onRestart:()=>{u=!0},onNativeRestart:async()=>{let r=p[s];if(r)try{await e(n.dirname(r),{recursive:!0}),await t(r,`${i()}\n`,{mode:384})}catch(e){let t=e instanceof Error?e.message:String(e);a.config.logger.error(`Coreframe native restart request failed: ${t}`,{error:e instanceof Error?e:void 0})}},onStatusChange:e=>{H=e,h()}}),w=c,H=c.getStatus(),L){w=void 0,await c.close();return}if(await g(l,c),L){w=void 0,await _(l,c);return}I=!0}catch(e){if(o&&T===o&&(U(),o.close()),w===c&&(w=void 0),!L){let t=e instanceof Error?e.message:String(e);H={message:t,mode:`error`,warnings:[t]},a.config.logger.error(`Coreframe managed development initialization failed: ${t}`,{error:e instanceof Error?e:void 0}),h()}}finally{F=!1}})(),a.httpServer?.once(`close`,()=>{a.ws.off(o.statusRequest,Y),a.ws.off(o.action,Z),W()})},async closeBundle(){await W()}}}async function g(e,t){await v(e,async e=>{let n=e.session;e.session=void 0,await n?.close();try{await t.activate(),e.session=t}catch(e){throw await t.close(),e}})}async function _(e,t){await v(e,async e=>{e.session===t&&(e.session=void 0),await t.close()})}async function v(e,t){let n=p.get(e);n||(n={transition:Promise.resolve()},p.set(e,n));let r=n.transition,i;n.transition=new Promise(e=>{i=()=>e()}),await r;try{await t(n)}finally{i()}}function y(e){return e instanceof Error?e.message:String(e)}function b(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.retryable===!0||t.code===`LEASE_EXPIRED`||t.code===`SUPERVISOR_STOPPING`}export{h as coreframeManagedDevPlugin};
@@ -7,6 +7,7 @@ type CoreframeVitePresetOptions = {
7
7
  config?: CoreframeConfig;
8
8
  webManifest?: HashedFaviconsOptions["webManifest"];
9
9
  };
10
+ /** Install Coreframe's required app integrations, including target-aware Xplat build support. */
10
11
  declare function coreframeVitePreset(options?: CoreframeVitePresetOptions): Plugin[];
11
12
  //#endregion
12
13
  export { CoreframeVitePresetOptions, coreframeVitePreset };
@@ -1 +1 @@
1
- import{coreframeAssetsPlugin as e}from"./assets.js";import{coreframeDashboardPlugin as t}from"./dashboard.js";import{coreframeDevJobsPlugin as n}from"./dev-jobs.js";import{coreframeDevelopmentControlsPlugin as r}from"./development-controls.js";import{coreframeEnvironmentPlugin as i}from"./environment.js";import{coreframeFaviconPlugin as a}from"./favicon.js";import{coreframeFlutterDevToolsPlugin as o}from"./flutter-devtools.js";import{t as s}from"../icons-vb_lG-av.js";import{coreframeManagedDevPlugin as c}from"./managed-dev.js";import{coreframePreviewPlugin as l}from"./preview.js";import{coreframeStartupTimingPlugin as u}from"./startup-timing.js";import{t as d}from"../worktree-head-BZrhW1-Q.js";function f(f={}){return[u(),i(),l(f.config??{}),e(),...s(),r(),o(),n(),c(),d(),t(),...a(f.webManifest===void 0?void 0:{webManifest:f.webManifest})]}export{f as coreframeVitePreset};
1
+ import{coreframeAssetsPlugin as e}from"./assets.js";import{coreframeDashboardPlugin as t}from"./dashboard.js";import{coreframeDevJobsPlugin as n}from"./dev-jobs.js";import{coreframeDevelopmentControlsPlugin as r}from"./development-controls.js";import{coreframeEnvironmentPlugin as i}from"./environment.js";import{coreframeFaviconPlugin as a}from"./favicon.js";import{t as o}from"../icons-vb_lG-av.js";import{coreframeManagedDevPlugin as s}from"./managed-dev.js";import{coreframePreviewPlugin as c}from"./preview.js";import{coreframeStartupTimingPlugin as l}from"./startup-timing.js";import{t as u}from"../worktree-head-BZrhW1-Q.js";import{coreframeXplatPlugin as d}from"./xplat.js";function f(f={}){return[...d(),l(),i(),c(f.config??{}),e(),...o(),r(),n(),s(),u(),t(),...a(f.webManifest===void 0?void 0:{webManifest:f.webManifest})]}export{f as coreframeVitePreset};
@@ -0,0 +1,7 @@
1
+ import { Plugin } from "vite";
2
+
3
+ //#region plugins/xplat.d.ts
4
+ /** Required Xplat build integration for the Coreframe target selected by the host. */
5
+ declare function coreframeXplatPlugin(): Plugin[];
6
+ //#endregion
7
+ export { coreframeXplatPlugin };
@@ -0,0 +1 @@
1
+ import{resolveCoreframePlatform as e}from"./index.js";import{xplatBoundary as t,xplatCss as n,xplatNodeEnvDefine as r}from"@octane-xplat/cli/vite";function i(){let i=e();return[t(i),n(i),{name:`coreframe:xplat-environment`,config(e,t){return{define:r(t.mode)}}}]}export{i as coreframeXplatPlugin};
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- [data-isolet-root]{--overlay-font-body:"SN Pro Variable", system-ui, sans-serif;--overlay-font-monospace:"Google Sans Code Variable", ui-monospace, monospace;color-scheme:light dark;--oc-white:#fff;--oc-gray-0:#f8f9fa;--oc-gray-1:#f1f3f5;--oc-gray-2:#e9ecef;--oc-gray-3:#dee2e6;--oc-gray-4:#ced4da;--oc-gray-5:#adb5bd;--oc-gray-6:#868e96;--oc-gray-7:#495057;--oc-gray-8:#343a40;--oc-gray-9:#212529;--oc-red-0:#fff5f5;--oc-red-2:#ffc9c9;--oc-red-7:#f03e3e;--oc-red-9:#c92a2a;--oc-grape-0:#f8f0fc;--oc-grape-2:#eebefa;--oc-grape-7:#ae3ec9;--oc-grape-9:#862e9c;--oc-blue-0:#e7f5ff;--oc-blue-2:#a5d8ff;--oc-blue-4:#4dabf7;--oc-blue-6:#228be6;--oc-blue-7:#1c7ed6;--oc-blue-9:#1864ab;--oc-green-0:#ebfbee;--oc-green-2:#b2f2bb;--oc-green-7:#37b24d;--oc-green-9:#2b8a3e;--oc-yellow-0:#fff9db;--oc-yellow-2:#ffec99;--oc-yellow-7:#f59f00;--oc-yellow-9:#e67700;--overlay-background:var(--oc-white);--overlay-surface-subtle:var(--oc-gray-0);--overlay-surface-muted:var(--oc-gray-1);--overlay-border:var(--oc-gray-3);--overlay-border-strong:var(--oc-gray-4);--overlay-text:var(--oc-gray-9);--overlay-text-muted:var(--oc-gray-7);--overlay-text-subtle:var(--oc-gray-6);--overlay-accent:var(--oc-blue-6);--overlay-accent-hover:var(--oc-blue-7);--overlay-accent-soft:var(--oc-blue-0);--overlay-accent-border:var(--oc-blue-2);--overlay-accent-text:var(--oc-blue-9);--overlay-thought-soft:var(--oc-grape-0);--overlay-thought-border:var(--oc-grape-2);--overlay-thought-text:var(--oc-grape-9);--overlay-success-soft:var(--oc-green-0);--overlay-success-border:var(--oc-green-2);--overlay-success-text:var(--oc-green-9);--overlay-warning-soft:var(--oc-yellow-0);--overlay-warning-border:var(--oc-yellow-2);--overlay-warning-text:var(--oc-yellow-9);--overlay-danger-soft:var(--oc-red-0);--overlay-danger-border:var(--oc-red-2);--overlay-danger-text:var(--oc-red-9);color:var(--overlay-text);font:14px/1.45 var(--overlay-font-body)}.surface{--managed-dev-bottom-offset:0px;--managed-dev-right-offset:0px}.indicatorButton{appearance:none;bottom:calc(10px + env(safe-area-inset-bottom,0px) + var(--managed-dev-bottom-offset));cursor:pointer;pointer-events:auto;height:44px;right:calc(10px + env(safe-area-inset-right,0px) + var(--managed-dev-right-offset));background:0 0;border:0;justify-content:center;align-items:center;width:44px;padding:0;display:flex;position:fixed}.indicatorButton:focus-visible{outline:3px solid var(--overlay-accent-border);outline-offset:-3px}.indicatorDot{background:var(--managed-dev-indicator-color);box-shadow:inset 0 0 0 .5px color-mix(in srgb, var(--overlay-border) 30%, transparent);height:var(--managed-dev-indicator-size);width:var(--managed-dev-indicator-size);border-radius:50%;display:block;position:relative}.indicatorDot:before{border:max(1px, calc(var(--managed-dev-indicator-size) / 9)) solid var(--managed-dev-indicator-color);border-radius:inherit;content:"";animation:1.8s ease-out infinite radiate;position:absolute;inset:0}.dialog{background:var(--overlay-background);border:1px solid var(--overlay-border);box-shadow:0 18px 60px color-mix(in srgb, var(--oc-gray-9) 28%, transparent), 0 2px 8px color-mix(in srgb, var(--oc-gray-9) 12%, transparent);color:var(--overlay-text);box-sizing:border-box;height:auto;bottom:20px;left:unset;overscroll-behavior:contain;pointer-events:auto;border-radius:12px;width:min(520px,100vw - 18px);max-width:min(520px,100vw - 18px);max-height:none;margin:0;padding:12px 18px;position:fixed;right:20px;overflow:hidden}.dialog[open]{flex-direction:column;gap:12px;display:flex}.drawerBody{align-content:start;gap:16px;min-height:80px;display:grid;overflow:auto}.header{justify-content:space-between;align-items:center;gap:12px;display:flex}.headerActions{align-items:center;display:flex}.developmentControlsDropdown{display:flex;position:relative}.title{align-items:center;gap:8px;margin:0;font-size:16px;display:flex}.titleIcon{color:var(--overlay-accent);flex:none}.iconButton{color:inherit;cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;min-width:32px;min-height:32px;padding:4px;display:inline-flex}.iconButton:hover{background:var(--overlay-surface-muted);border-radius:8px}.iconButton:focus-visible,.scenarioButton:focus-visible,.sectionLink:focus-visible,.button:focus-visible,.message:focus-visible{outline:3px solid var(--overlay-accent-border);outline-offset:2px}.content{gap:12px;display:grid}.section{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border);border-radius:12px;gap:12px;padding:14px;display:grid}.sectionHeading{justify-content:space-between;align-items:start;gap:12px;display:flex}.sectionTitle{margin:0;font-size:13px}.sectionDescription{color:var(--overlay-text-muted);margin:3px 0 0;font-size:12px}.sectionLink{color:var(--overlay-accent-text);cursor:pointer;font:inherit;background:0 0;border:0;padding:2px;font-size:12px}.debugFooter{background:var(--overlay-thought-soft);border-top:.5px solid var(--overlay-thought-border);color:var(--overlay-thought-text);flex:none;margin:0 -18px -12px;padding:4px 18px;font-size:11px;line-height:1.3}.scenarioList{gap:7px;max-height:min(480px,100dvh - 210px);display:grid;overflow:auto}.scenarioButton{background:var(--overlay-surface-subtle);color:inherit;cursor:pointer;font:inherit;text-align:start;border:1px solid #0000;border-radius:10px;gap:3px;padding:10px;display:grid}.scenarioButton:hover{background:var(--overlay-accent-soft);border-color:var(--overlay-accent-border)}.scenarioLabel{font-weight:650}.scenarioDescription{color:var(--overlay-text-muted);font-size:12px}.paragraph{margin:0}.pendingCommits{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border);box-sizing:border-box;font:12px/1.5 var(--overlay-font-monospace);white-space:pre-wrap;border-radius:10px;max-height:190px;margin:0;padding:10px;overflow:auto}.codexOutput{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border);box-sizing:border-box;font:12px/1.5 var(--overlay-font-monospace);white-space:pre-wrap;word-break:break-word;border-radius:10px;max-height:280px;margin:0;padding:10px;overflow:auto}.codexWorking{color:var(--overlay-text-muted);font:12px/1.5 var(--overlay-font-monospace)}.codexWorkingSpinner{color:var(--overlay-accent)}.codexTranscript{gap:10px;max-height:360px;display:grid;overflow:auto}.codexMessage{border:1px solid #0000;border-radius:10px;gap:5px;padding:10px;display:grid}.codexMessageUser{background:var(--overlay-accent-soft);border-color:var(--overlay-accent-border)}.codexMessageThought{background:var(--overlay-thought-soft);border-color:var(--overlay-thought-border)}.codexMessageAgent{background:var(--overlay-success-soft);border-color:var(--overlay-success-border)}.codexMessageHeader{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.codexMessageLabel{color:var(--overlay-text-muted);letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:11px;font-weight:650}.codexMessageAge{color:var(--overlay-text-subtle);white-space:nowrap;font-size:11px}.codexMessageText,.codexWaiting{font:12px/1.5 var(--overlay-font-monospace);white-space:pre-wrap;word-break:break-word;margin:0}.codexWaiting{color:var(--overlay-text-subtle)}.rebaseProgress{gap:8px;display:grid}.rebaseProgressLabel{color:var(--overlay-text-muted);justify-content:space-between;align-items:baseline;font-size:12px;display:flex}.rebaseProgressLabel strong{color:var(--overlay-success-text)}.rebaseProgressTrack{background:var(--overlay-surface-muted);border-radius:999px;height:6px;overflow:hidden}.rebaseProgressFill{background:var(--overlay-success-text);border-radius:inherit;height:100%;transition:width .18s;display:block}.codexHistorySummary{cursor:pointer;font-size:12px;font-weight:600}.codexHistoryList{gap:8px;padding-top:8px;display:grid}.files{gap:7px;max-height:190px;display:grid;overflow:auto}.checkbox{overflow-wrap:anywhere;align-items:start;gap:8px;display:flex}.checkbox input{accent-color:var(--overlay-accent)}.filePath{font-family:var(--overlay-font-monospace)}.message{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border-strong);box-sizing:border-box;color:var(--overlay-text);font-family:var(--overlay-font-monospace);resize:vertical;border-radius:10px;width:100%;min-height:92px;padding:10px}.actions{flex-wrap:wrap;justify-content:end;gap:8px;display:flex}.developmentControls{background:var(--overlay-background);border:1px solid var(--overlay-border);box-shadow:0 10px 30px color-mix(in srgb, var(--oc-gray-9) 18%, transparent);box-sizing:border-box;z-index:1;border-radius:10px;gap:4px;min-width:170px;max-width:calc(100vw - 32px);margin:0;padding:4px;display:grid;position:absolute;top:calc(100% + 6px);right:0}.developmentControls .actions{justify-content:stretch;align-items:stretch;gap:0;width:100%;display:grid}.developmentControls .button{text-align:start;white-space:nowrap;justify-content:start;justify-self:stretch;width:100%;min-height:32px}.button{border:1px solid var(--overlay-border-strong);cursor:pointer;font:inherit;background:0 0;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:7px 11px;transition:opacity .14s;display:inline-flex}.button:hover:not(:disabled){background:var(--overlay-surface-muted)}.primary{background:var(--overlay-accent);border-color:var(--overlay-accent);color:var(--oc-white)}.primary:hover:not(:disabled){background:var(--overlay-accent-hover);border-color:var(--overlay-accent-hover)}.developmentControls .button{color:inherit;background:0 0;border:0}.developmentControls .button:hover:not(:disabled){background:var(--overlay-surface-muted)}.button:disabled{cursor:wait;opacity:.55}.buttonSpinner{animation:.7s linear infinite button-spin}.iconOnly{box-sizing:border-box;flex:0 0 32px;width:32px;min-width:32px;height:32px;padding:7px}.warning{color:var(--overlay-warning-text);white-space:pre-wrap}.checkFailure{background:var(--overlay-danger-soft);border:1px solid var(--overlay-danger-border);color:var(--overlay-danger-text);border-radius:10px;gap:10px;padding:10px;display:grid}.checkCommand{font-family:var(--overlay-font-monospace);margin:0;font-weight:600}.checkGuidance{margin:3px 0 0;font-size:12px}.setupFailure{background:var(--overlay-danger-soft);border:1px solid var(--overlay-danger-border);color:var(--overlay-danger-text);border-radius:10px;gap:10px;padding:10px;display:grid}.actionError{background:var(--overlay-warning-soft);border:1px solid var(--overlay-warning-border);color:var(--overlay-warning-text);white-space:pre-wrap;border-radius:10px;gap:10px;padding:10px;display:grid}.errorMessage{grid-template-columns:auto 1fr;align-items:start;gap:8px;display:grid}.actionSuccess{background:var(--overlay-success-soft);border:1px solid var(--overlay-success-border);color:var(--overlay-success-text);border-radius:10px;grid-template-columns:auto 1fr;align-items:start;gap:8px;padding:10px;display:grid}.errorIcon,.successIcon{margin-top:1px}@media (prefers-color-scheme:dark){[data-isolet-root]{--overlay-background:var(--oc-gray-9);--overlay-surface-subtle:var(--oc-gray-8);--overlay-surface-muted:var(--oc-gray-7);--overlay-border:var(--oc-gray-7);--overlay-border-strong:var(--oc-gray-6);--overlay-text:var(--oc-gray-0);--overlay-text-muted:var(--oc-gray-4);--overlay-text-subtle:var(--oc-gray-5);--overlay-accent:var(--oc-blue-6);--overlay-accent-hover:var(--oc-blue-7);--overlay-accent-soft:color-mix(in srgb, var(--oc-blue-9) 32%, var(--overlay-background));--overlay-accent-border:var(--oc-blue-7);--overlay-accent-text:var(--oc-blue-2);--overlay-thought-soft:color-mix(in srgb, var(--oc-grape-9) 30%, var(--overlay-background));--overlay-thought-border:var(--oc-grape-7);--overlay-thought-text:var(--oc-grape-2);--overlay-success-soft:color-mix(in srgb, var(--oc-green-9) 30%, var(--overlay-background));--overlay-success-border:var(--oc-green-7);--overlay-success-text:var(--oc-green-2);--overlay-warning-soft:color-mix(in srgb, var(--oc-yellow-9) 24%, var(--overlay-background));--overlay-warning-border:var(--oc-yellow-7);--overlay-warning-text:var(--oc-yellow-2);--overlay-danger-soft:color-mix(in srgb, var(--oc-red-9) 30%, var(--overlay-background));--overlay-danger-border:var(--oc-red-7);--overlay-danger-text:var(--oc-red-2)}}@keyframes radiate{0%{opacity:.75;transform:scale(1)}to{opacity:0;transform:scale(2.4)}}@keyframes button-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.buttonSpinner{animation:none}}@media (width<=600px){.dialog{max-width:none;padding:calc(16px + env(safe-area-inset-top,0px)) calc(16px + env(safe-area-inset-right,0px)) calc(16px + env(safe-area-inset-bottom,0px)) calc(16px + env(safe-area-inset-left,0px));border-radius:0;width:auto;inset:0}.debugFooter{margin:0 calc(-16px - env(safe-area-inset-right,0px)) calc(-16px - env(safe-area-inset-bottom,0px)) calc(-16px - env(safe-area-inset-left,0px));padding:4px calc(16px + env(safe-area-inset-right,0px)) calc(4px + env(safe-area-inset-bottom,0px)) calc(16px + env(safe-area-inset-left,0px))}.button{min-height:44px}.checkbox{align-items:center;min-height:44px}.iconButton{min-width:44px;min-height:44px}.iconOnly{flex-basis:44px;width:44px;min-width:44px;height:44px}}@media (prefers-reduced-motion:reduce){.indicatorDot:before{opacity:.45;animation:none;transform:scale(1.65)}}
1
+ [data-isolet-root]{--overlay-font-body:"SN Pro Variable", system-ui, sans-serif;--overlay-font-monospace:"Google Sans Code Variable", ui-monospace, monospace;color-scheme:light dark;--oc-white:#fff;--oc-gray-0:#f8f9fa;--oc-gray-1:#f1f3f5;--oc-gray-2:#e9ecef;--oc-gray-3:#dee2e6;--oc-gray-4:#ced4da;--oc-gray-5:#adb5bd;--oc-gray-6:#868e96;--oc-gray-7:#495057;--oc-gray-8:#343a40;--oc-gray-9:#212529;--oc-red-0:#fff5f5;--oc-red-2:#ffc9c9;--oc-red-7:#f03e3e;--oc-red-9:#c92a2a;--oc-grape-0:#f8f0fc;--oc-grape-2:#eebefa;--oc-grape-7:#ae3ec9;--oc-grape-9:#862e9c;--oc-blue-0:#e7f5ff;--oc-blue-2:#a5d8ff;--oc-blue-4:#4dabf7;--oc-blue-6:#228be6;--oc-blue-7:#1c7ed6;--oc-blue-9:#1864ab;--oc-green-0:#ebfbee;--oc-green-2:#b2f2bb;--oc-green-7:#37b24d;--oc-green-9:#2b8a3e;--oc-yellow-0:#fff9db;--oc-yellow-2:#ffec99;--oc-yellow-7:#f59f00;--oc-yellow-9:#e67700;--overlay-background:var(--oc-white);--overlay-surface-subtle:var(--oc-gray-0);--overlay-surface-muted:var(--oc-gray-1);--overlay-border:var(--oc-gray-3);--overlay-border-strong:var(--oc-gray-4);--overlay-text:var(--oc-gray-9);--overlay-text-muted:var(--oc-gray-7);--overlay-text-subtle:var(--oc-gray-6);--overlay-accent:var(--oc-blue-6);--overlay-accent-hover:var(--oc-blue-7);--overlay-accent-soft:var(--oc-blue-0);--overlay-accent-border:var(--oc-blue-2);--overlay-accent-text:var(--oc-blue-9);--overlay-thought-soft:var(--oc-grape-0);--overlay-thought-border:var(--oc-grape-2);--overlay-thought-text:var(--oc-grape-9);--overlay-success-soft:var(--oc-green-0);--overlay-success-border:var(--oc-green-2);--overlay-success-text:var(--oc-green-9);--overlay-warning-soft:var(--oc-yellow-0);--overlay-warning-border:var(--oc-yellow-2);--overlay-warning-text:var(--oc-yellow-9);--overlay-danger-soft:var(--oc-red-0);--overlay-danger-border:var(--oc-red-2);--overlay-danger-text:var(--oc-red-9);color:var(--overlay-text);font:14px/1.45 var(--overlay-font-body)}.surface{--managed-dev-bottom-offset:0px;--managed-dev-right-offset:0px}.indicatorButton{appearance:none;bottom:calc(10px + env(safe-area-inset-bottom,0px) + var(--managed-dev-bottom-offset));cursor:pointer;pointer-events:auto;height:44px;right:calc(10px + env(safe-area-inset-right,0px) + var(--managed-dev-right-offset));background:0 0;border:0;justify-content:center;align-items:center;width:44px;padding:0;display:flex;position:fixed}.indicatorButton:focus-visible{outline:3px solid var(--overlay-accent-border);outline-offset:-3px}.indicatorDot{background:var(--managed-dev-indicator-color);box-shadow:inset 0 0 0 .5px color-mix(in srgb, var(--overlay-border) 30%, transparent);height:var(--managed-dev-indicator-size);width:var(--managed-dev-indicator-size);border-radius:50%;display:block;position:relative}.indicatorDot:before{border:max(1px, calc(var(--managed-dev-indicator-size) / 9)) solid var(--managed-dev-indicator-color);border-radius:inherit;content:"";animation:1.8s ease-out infinite radiate;position:absolute;inset:0}.dialog{background:var(--overlay-background);border:1px solid var(--overlay-border);box-shadow:0 18px 60px color-mix(in srgb, var(--oc-gray-9) 28%, transparent), 0 2px 8px color-mix(in srgb, var(--oc-gray-9) 12%, transparent);color:var(--overlay-text);box-sizing:border-box;height:auto;bottom:20px;left:unset;overscroll-behavior:contain;pointer-events:auto;border-radius:12px;width:min(520px,100vw - 18px);max-width:min(520px,100vw - 18px);max-height:none;margin:0;padding:12px 18px;position:fixed;right:20px;overflow:hidden}.dialog[open]{flex-direction:column;gap:12px;display:flex}.drawerBody{align-content:start;gap:16px;min-height:80px;display:grid;overflow:auto}.header{justify-content:space-between;align-items:center;gap:12px;display:flex}.headerActions{align-items:center;display:flex}.developmentControlsDropdown{display:flex;position:relative}.title{align-items:center;gap:8px;margin:0;font-size:16px;display:flex}.titleIcon{color:var(--overlay-accent);flex:none}.iconButton{color:inherit;cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;min-width:32px;min-height:32px;padding:4px;display:inline-flex}.iconButton:hover{background:var(--overlay-surface-muted);border-radius:8px}.iconButton:focus-visible,.scenarioButton:focus-visible,.sectionLink:focus-visible,.button:focus-visible,.message:focus-visible{outline:3px solid var(--overlay-accent-border);outline-offset:2px}.content{gap:12px;display:grid}.section{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border);border-radius:12px;gap:12px;padding:14px;display:grid}.sectionHeading{justify-content:space-between;align-items:start;gap:12px;display:flex}.sectionTitle{margin:0;font-size:13px}.sectionDescription{color:var(--overlay-text-muted);margin:3px 0 0;font-size:12px}.sectionLink{color:var(--overlay-accent-text);cursor:pointer;font:inherit;background:0 0;border:0;padding:2px;font-size:12px}.debugFooter{background:var(--overlay-thought-soft);border-top:.5px solid var(--overlay-thought-border);color:var(--overlay-thought-text);flex:none;margin:0 -18px -12px;padding:4px 18px;font-size:11px;line-height:1.3}.scenarioList{gap:7px;max-height:min(480px,100dvh - 210px);display:grid;overflow:auto}.scenarioButton{background:var(--overlay-surface-subtle);color:inherit;cursor:pointer;font:inherit;text-align:start;border:1px solid #0000;border-radius:10px;gap:3px;padding:10px;display:grid}.scenarioButton:hover{background:var(--overlay-accent-soft);border-color:var(--overlay-accent-border)}.scenarioLabel{font-weight:650}.scenarioDescription{color:var(--overlay-text-muted);font-size:12px}.paragraph{margin:0}.pendingCommits{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border);box-sizing:border-box;font:12px/1.5 var(--overlay-font-monospace);white-space:pre-wrap;border-radius:10px;max-height:190px;margin:0;padding:10px;overflow:auto}.codexOutput{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border);box-sizing:border-box;font:12px/1.5 var(--overlay-font-monospace);white-space:pre-wrap;word-break:break-word;border-radius:10px;max-height:280px;margin:0;padding:10px;overflow:auto}.codexWorking{color:var(--overlay-text-muted);font:12px/1.5 var(--overlay-font-monospace)}.codexWorkingSpinner{color:var(--overlay-accent)}.codexTranscript{gap:10px;max-height:360px;display:grid;overflow:auto}.codexMessage{border:1px solid #0000;border-radius:10px;gap:5px;padding:10px;display:grid}.codexMessageUser{background:var(--overlay-accent-soft);border-color:var(--overlay-accent-border)}.codexMessageThought{background:var(--overlay-thought-soft);border-color:var(--overlay-thought-border)}.codexMessageAgent{background:var(--overlay-success-soft);border-color:var(--overlay-success-border)}.codexMessageHeader{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.codexMessageLabel{color:var(--overlay-text-muted);letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:11px;font-weight:650}.codexMessageAge{color:var(--overlay-text-subtle);white-space:nowrap;font-size:11px}.codexMessageText,.codexWaiting{font:12px/1.5 var(--overlay-font-monospace);white-space:pre-wrap;word-break:break-word;margin:0}.codexWaiting{color:var(--overlay-text-subtle)}.rebaseProgress{gap:8px;display:grid}.rebaseProgressLabel{color:var(--overlay-text-muted);justify-content:space-between;align-items:baseline;font-size:12px;display:flex}.rebaseProgressLabel strong{color:var(--overlay-success-text)}.rebaseProgressTrack{background:var(--overlay-surface-muted);border-radius:999px;height:6px;overflow:hidden}.rebaseProgressFill{background:var(--overlay-success-text);border-radius:inherit;height:100%;transition:width .18s;display:block}.codexHistorySummary{cursor:pointer;font-size:12px;font-weight:600}.codexHistoryList{gap:8px;padding-top:8px;display:grid}.files{gap:7px;max-height:190px;display:grid;overflow:auto}.checkbox{overflow-wrap:anywhere;align-items:start;gap:8px;display:flex}.checkbox input{accent-color:var(--overlay-accent)}.filePath{font-family:var(--overlay-font-monospace)}.message{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border-strong);box-sizing:border-box;color:var(--overlay-text);font-family:var(--overlay-font-monospace);resize:vertical;border-radius:10px;width:100%;min-height:92px;padding:10px}.codexOptions{flex-wrap:wrap;gap:8px 16px;display:flex}.codexOption{align-items:center;gap:6px;display:flex}.codexOptionLabel{color:var(--overlay-text-subtle);font-size:12px}.codexOptionSelect{background:var(--overlay-surface-subtle);border:1px solid var(--overlay-border-strong);color:var(--overlay-text);font:inherit;border-radius:8px;padding:4px 6px}.actions{flex-wrap:wrap;justify-content:end;gap:8px;display:flex}.developmentControls{background:var(--overlay-background);border:1px solid var(--overlay-border);box-shadow:0 10px 30px color-mix(in srgb, var(--oc-gray-9) 18%, transparent);box-sizing:border-box;z-index:1;border-radius:10px;gap:4px;min-width:170px;max-width:calc(100vw - 32px);margin:0;padding:4px;display:grid;position:absolute;top:calc(100% + 6px);right:0}.developmentControls .actions{justify-content:stretch;align-items:stretch;gap:0;width:100%;display:grid}.developmentControls .button{text-align:start;white-space:nowrap;justify-content:start;justify-self:stretch;width:100%;min-height:32px}.button{border:1px solid var(--overlay-border-strong);cursor:pointer;font:inherit;background:0 0;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:7px 11px;transition:opacity .14s;display:inline-flex}.button:hover:not(:disabled){background:var(--overlay-surface-muted)}.primary{background:var(--overlay-accent);border-color:var(--overlay-accent);color:var(--oc-white)}.primary:hover:not(:disabled){background:var(--overlay-accent-hover);border-color:var(--overlay-accent-hover)}.developmentControls .button{color:inherit;background:0 0;border:0}.developmentControls .button:hover:not(:disabled){background:var(--overlay-surface-muted)}.button:disabled{cursor:wait;opacity:.55}.buttonSpinner{animation:.7s linear infinite button-spin}.iconOnly{box-sizing:border-box;flex:0 0 32px;width:32px;min-width:32px;height:32px;padding:7px}.warning{color:var(--overlay-warning-text);white-space:pre-wrap}.checkFailure{background:var(--overlay-danger-soft);border:1px solid var(--overlay-danger-border);color:var(--overlay-danger-text);border-radius:10px;gap:10px;padding:10px;display:grid}.checkCommand{font-family:var(--overlay-font-monospace);margin:0;font-weight:600}.checkGuidance{margin:3px 0 0;font-size:12px}.setupFailure{background:var(--overlay-danger-soft);border:1px solid var(--overlay-danger-border);color:var(--overlay-danger-text);border-radius:10px;gap:10px;padding:10px;display:grid}.actionError{background:var(--overlay-warning-soft);border:1px solid var(--overlay-warning-border);color:var(--overlay-warning-text);white-space:pre-wrap;border-radius:10px;gap:10px;padding:10px;display:grid}.errorMessage{grid-template-columns:auto 1fr;align-items:start;gap:8px;display:grid}.actionSuccess{background:var(--overlay-success-soft);border:1px solid var(--overlay-success-border);color:var(--overlay-success-text);border-radius:10px;grid-template-columns:auto 1fr;align-items:start;gap:8px;padding:10px;display:grid}.errorIcon,.successIcon{margin-top:1px}@media (prefers-color-scheme:dark){[data-isolet-root]{--overlay-background:var(--oc-gray-9);--overlay-surface-subtle:var(--oc-gray-8);--overlay-surface-muted:var(--oc-gray-7);--overlay-border:var(--oc-gray-7);--overlay-border-strong:var(--oc-gray-6);--overlay-text:var(--oc-gray-0);--overlay-text-muted:var(--oc-gray-4);--overlay-text-subtle:var(--oc-gray-5);--overlay-accent:var(--oc-blue-6);--overlay-accent-hover:var(--oc-blue-7);--overlay-accent-soft:color-mix(in srgb, var(--oc-blue-9) 32%, var(--overlay-background));--overlay-accent-border:var(--oc-blue-7);--overlay-accent-text:var(--oc-blue-2);--overlay-thought-soft:color-mix(in srgb, var(--oc-grape-9) 30%, var(--overlay-background));--overlay-thought-border:var(--oc-grape-7);--overlay-thought-text:var(--oc-grape-2);--overlay-success-soft:color-mix(in srgb, var(--oc-green-9) 30%, var(--overlay-background));--overlay-success-border:var(--oc-green-7);--overlay-success-text:var(--oc-green-2);--overlay-warning-soft:color-mix(in srgb, var(--oc-yellow-9) 24%, var(--overlay-background));--overlay-warning-border:var(--oc-yellow-7);--overlay-warning-text:var(--oc-yellow-2);--overlay-danger-soft:color-mix(in srgb, var(--oc-red-9) 30%, var(--overlay-background));--overlay-danger-border:var(--oc-red-7);--overlay-danger-text:var(--oc-red-2)}}@keyframes radiate{0%{opacity:.75;transform:scale(1)}to{opacity:0;transform:scale(2.4)}}@keyframes button-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.buttonSpinner{animation:none}}@media (width<=600px){.dialog{max-width:none;padding:calc(16px + env(safe-area-inset-top,0px)) calc(16px + env(safe-area-inset-right,0px)) calc(16px + env(safe-area-inset-bottom,0px)) calc(16px + env(safe-area-inset-left,0px));border-radius:0;width:auto;inset:0}.debugFooter{margin:0 calc(-16px - env(safe-area-inset-right,0px)) calc(-16px - env(safe-area-inset-bottom,0px)) calc(-16px - env(safe-area-inset-left,0px));padding:4px calc(16px + env(safe-area-inset-right,0px)) calc(4px + env(safe-area-inset-bottom,0px)) calc(16px + env(safe-area-inset-left,0px))}.button{min-height:44px}.checkbox{align-items:center;min-height:44px}.iconButton{min-width:44px;min-height:44px}.iconOnly{flex-basis:44px;width:44px;min-width:44px;height:44px}}@media (prefers-reduced-motion:reduce){.indicatorDot:before{opacity:.45;animation:none;transform:scale(1.65)}}.buttonContainer{min-width:0;display:inline-flex}.buttonContainer:focus-visible{outline:2px solid var(--overlay-accent);outline-offset:2px;border-radius:999px}.button:disabled{pointer-events:none}.developmentControls .buttonContainer{width:100%;display:flex}.disabledTooltip{z-index:2147483647;border:1px solid var(--overlay-border-strong);background:var(--overlay-surface-subtle);max-width:min(280px,100vw - 24px);color:var(--overlay-text);pointer-events:none;border-radius:8px;padding:8px 10px;font-size:12px;line-height:1.4;position:fixed;transform:translateY(-100%)}.srOnly{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coreframe/vite",
3
- "version": "0.3.0-next.4",
3
+ "version": "3.0.0-beta.2",
4
4
  "description": "Vite plugins and build integrations for Coreframe apps",
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,18 +28,6 @@
28
28
  "types": "./dist/browser/worktree-head-reload.d.ts",
29
29
  "default": "./dist/browser/worktree-head-reload.js"
30
30
  },
31
- "./routes": {
32
- "types": "./dist/plugins/routes.d.ts",
33
- "default": "./dist/plugins/routes.js"
34
- },
35
- "./native": {
36
- "types": "./dist/plugins/native.d.ts",
37
- "default": "./dist/plugins/native.js"
38
- },
39
- "./flutter-devtools": {
40
- "types": "./dist/browser/flutter-devtools.d.ts",
41
- "default": "./dist/browser/flutter-devtools.js"
42
- },
43
31
  "./*": {
44
32
  "types": "./dist/plugins/*.d.ts",
45
33
  "default": "./dist/plugins/*.js"
@@ -47,24 +35,22 @@
47
35
  },
48
36
  "dependencies": {
49
37
  "@agilek/cli-loaders": "^1.1.0",
38
+ "@coreframe/assets": "3.0.0-beta.1",
39
+ "@coreframe/config": "3.0.0-beta.1",
40
+ "@coreframe/dashboard": "3.0.0-beta.2",
41
+ "@coreframe/dev": "3.0.0-beta.1",
42
+ "@coreframe/dev-contracts": "3.0.0-beta.1",
43
+ "@coreframe/lib": "3.0.0-beta.2",
50
44
  "@fontsource-variable/google-sans-code": "^5.3.0",
51
45
  "@fontsource-variable/sn-pro": "^5.3.0",
52
46
  "@iconify/utils": "^3.1.4",
53
- "@react-router/dev": "^8.2.0",
47
+ "@octane-xplat/cli": "0.19.0",
54
48
  "@svgr/core": "^8.1.0",
55
49
  "@svgr/plugin-jsx": "^8.1.0",
56
50
  "lucide-react": "^1.24.0",
57
51
  "obug": "^2.1.3",
58
52
  "unplugin": "^2.3.11",
59
- "vite-plugin-hashed-favicons": "^2.1.1",
60
- "@coreframe/assets": "^0.1.18-next.3",
61
- "@coreframe/config": "^0.1.15-next.3",
62
- "@coreframe/dashboard": "^0.4.0-next.4",
63
- "@coreframe/dev": "^0.1.23-next.3",
64
- "@coreframe/dev-contracts": "^0.1.10-next.1",
65
- "@coreframe/flutter-js": "^0.1.30-next.3",
66
- "@coreframe/flutter-tools": "^0.1.25-next.4",
67
- "@coreframe/lib": "^0.2.16-next.3"
53
+ "vite-plugin-hashed-favicons": "^2.1.1"
68
54
  },
69
55
  "devDependencies": {
70
56
  "@tsdown/css": "0.22.3",
@@ -1,17 +0,0 @@
1
- //#region browser/flutter-devtools.d.ts
2
- type FlutterDevToolsHotContext = {
3
- off(event: string, listener: (data: unknown) => void): void;
4
- on<T>(event: string, listener: (data: T) => void): void;
5
- send(event: string, data?: unknown): void;
6
- };
7
- type FlutterDevToolsAuth = Readonly<{
8
- getIsSignedIn(): boolean;
9
- onSignIn(): void | Promise<void>;
10
- onSignOut(): void | Promise<void>;
11
- }>;
12
- /** Registers the app-owned authentication callbacks used by the native launcher. */
13
- declare function registerFlutterDevToolsAuth(auth: FlutterDevToolsAuth): () => void;
14
- /** Publishes the page-owned state-launcher registry through Vite to its Flutter host. */
15
- declare function installFlutterDevTools(hot?: FlutterDevToolsHotContext | undefined): () => void;
16
- //#endregion
17
- export { FlutterDevToolsAuth, installFlutterDevTools, registerFlutterDevToolsAuth };
@@ -1 +0,0 @@
1
- import{flutterDevToolsEvents as e,flutterDevToolsProtocolVersion as t}from"@coreframe/dev-contracts/flutter-devtools";import{createDevToolsClient as n}from"@coreframe/flutter-js/devtools";import{clearActiveState as r,getStateLauncherSnapshot as i,launchStateLauncherCommand as a,subscribeStateLauncher as o}from"state-launcher/headless";let s,c,l,u;function d(e){let t={auth:e,token:{}};return c=t,h(),()=>{c?.token===t.token&&(c=void 0,h())}}function f(t=y()){let r,i=()=>h();r=n({features:[`state-launcher`],onReady:(e,n)=>{u=n,m(t,n),i()}}),s=r,l=t,t&&t.on(e.stateLauncherRequest,c);let a=o(i);return()=>{let n=s===r?u:void 0;n&&t&&t.send(e.pageDisconnect,n),a(),t&&t.off(e.stateLauncherRequest,c),s===r&&(s=void 0,l=void 0,u=void 0),r.dispose()};function c(e){let n=u;!n||!_(n,e)||Promise.resolve().then(()=>p(e.request)).then(()=>g(t,n,e.request.requestId,`completed`),()=>g(t,n,e.request.requestId,`error`))}}async function p(e){if(e.action===`clear`){await r();return}if(e.action===`auth`){let t=c?.auth;if(!t)throw Error(`State launcher authentication is not configured.`);e.authAction===`signIn`?t.getIsSignedIn()||await t.onSignIn():t.getIsSignedIn()&&await t.onSignOut(),h();return}await a(e.id)}function m(n,r){n?.send(e.pageConnect,{...r,protocolVersion:t})}function h(){let t=l,n=u;if(!t||!n)return;let r=c?.auth,a=r?{isSignedIn:r.getIsSignedIn()}:null;t.send(e.stateLauncherState,{...v(n),state:{auth:a,snapshot:i()}})}function g(t,n,r,i){t?.send(e.stateLauncherResult,{...v(n),result:i===`completed`?{requestId:r,status:i}:{error:{code:`command-failed`,message:`The state launcher command failed.`},requestId:r,status:i}})}function _(e,t){return e.rootWebRuntimeId===t.rootWebRuntimeId&&e.shellSessionId===t.shellSessionId}function v(e){return{rootWebRuntimeId:e.rootWebRuntimeId,shellSessionId:e.shellSessionId}}function y(){return import.meta.hot}export{f as installFlutterDevTools,d as registerFlutterDevToolsAuth};
@@ -1,13 +0,0 @@
1
- import { Plugin } from "vite";
2
-
3
- //#region plugins/flutter-devtools.d.ts
4
- /** Inputs that control the Flutter development-tools broker. */
5
- type CoreframeFlutterDevToolsPluginOptions = {
6
- env?: NodeJS.ProcessEnv;
7
- };
8
- /** Pairs a Flutter shell and its page while keeping the native Vite connection independent. */
9
- declare function coreframeFlutterDevToolsPlugin({
10
- env
11
- }?: CoreframeFlutterDevToolsPluginOptions): Plugin;
12
- //#endregion
13
- export { CoreframeFlutterDevToolsPluginOptions, coreframeFlutterDevToolsPlugin };
@@ -1 +0,0 @@
1
- import{managedDevEnv as e}from"@coreframe/dev-contracts/managed-dev";import{flutterDevToolsEvents as t,flutterDevToolsProtocolVersion as n}from"@coreframe/dev-contracts/flutter-devtools";function r({env:r=process.env}={}){return{name:`coreframe:flutter-devtools`,apply:`serve`,configureServer(d){let p=new Map,m=new WeakMap,h=new Map,g=new WeakMap,_={managedDev:r[e]===`1`,protocolVersion:n},v=(e,n)=>{if(!i(e))return;D(n);let r=p.get(e.shellSessionId)??new Set;r.add(n),p.set(e.shellSessionId,r),m.set(n,e.shellSessionId),n.send(t.ready,_),T(e.shellSessionId,n)},y=(e,t)=>{let n=a(e);if(!n)return;O(t);let r=h.get(n.shellSessionId);r&&r.client!==t&&g.delete(r.client),h.set(n.shellSessionId,{client:t,identity:n}),g.set(t,n.shellSessionId),T(n.shellSessionId)},b=(e,t)=>{let n=o(e);!n||!k(t,n)||O(t)},x=(e,n)=>{let r=s(e);if(!r||!f(e)||!(`state`in e)||!A(n,r))return;let i=h.get(r.shellSessionId);i.state=e.state,E(r.shellSessionId,t.stateLauncherState,{...r,state:e.state})},S=(e,n)=>{let r=s(e);if(!r||!f(e)||!(`request`in e)||m.get(n)!==r.shellSessionId)return;let i=h.get(r.shellSessionId);if(!i||!u(i.identity,r)){n.send(t.stateLauncherConnection,{connected:!1});return}i.client.send(t.stateLauncherRequest,{...r,request:e.request})},C=(e,n)=>{let r=s(e);!r||!f(e)||!(`result`in e)||!A(n,r)||E(r.shellSessionId,t.stateLauncherResult,{...r,result:e.result})},w=(e,t)=>{D(t),O(t)};function T(e,n){let r=h.get(e),i=r?{connected:!0,identity:c(r.identity)}:{connected:!1};if(n){n.send(t.stateLauncherConnection,i),r?.state!==void 0&&n.send(t.stateLauncherState,{...c(r.identity),state:r.state});return}E(e,t.stateLauncherConnection,i),r?.state!==void 0&&E(e,t.stateLauncherState,{...c(r.identity),state:r.state})}function E(e,t,n){for(let r of p.get(e)??[])r.send(t,n)}function D(e){let t=m.get(e);if(!t)return;m.delete(e);let n=p.get(t);n?.delete(e),n?.size===0&&p.delete(t)}function O(e){let t=g.get(e);t&&(g.delete(e),h.get(t)?.client===e&&(h.delete(t),T(t)))}function k(e,t){let n=h.get(t.shellSessionId);return n?.client===e&&l(n.identity,t)}function A(e,t){let n=h.get(t.shellSessionId);return n?.client===e&&u(n.identity,t)}d.ws.on(t.nativeConnect,v),d.ws.on(t.pageConnect,y),d.ws.on(t.pageDisconnect,b),d.ws.on(t.stateLauncherRequest,S),d.ws.on(t.stateLauncherResult,C),d.ws.on(t.stateLauncherState,x),d.ws.on(`vite:client:disconnect`,w),d.httpServer?.once(`close`,()=>{d.ws.off(t.nativeConnect,v),d.ws.off(t.pageConnect,y),d.ws.off(t.pageDisconnect,b),d.ws.off(t.stateLauncherRequest,S),d.ws.off(t.stateLauncherResult,C),d.ws.off(t.stateLauncherState,x),d.ws.off(`vite:client:disconnect`,w)})}}}function i(e){return f(e)&&d(e,[`protocolVersion`,`shellSessionId`])&&e.protocolVersion===n&&p(e.shellSessionId)}function a(e){if(!(!f(e)||!d(e,[`applicationScopeId`,`protocolVersion`,`rootWebRuntimeId`,`shellSessionId`])||e.protocolVersion!==n))return o(e)}function o(e){if(!f(e))return;let t=e.applicationScopeId,n=s(e);if(!(!p(t)||n===void 0))return{applicationScopeId:t,...n}}function s(e){if(!f(e)||`applicationScopeId`in e&&!p(e.applicationScopeId))return;let t=e.rootWebRuntimeId,n=e.shellSessionId;if(!(!p(t)||!p(n)))return{rootWebRuntimeId:t,shellSessionId:n}}function c(e){return{rootWebRuntimeId:e.rootWebRuntimeId,shellSessionId:e.shellSessionId}}function l(e,t){return e.applicationScopeId===t.applicationScopeId&&e.rootWebRuntimeId===t.rootWebRuntimeId&&e.shellSessionId===t.shellSessionId}function u(e,t){return e.rootWebRuntimeId===t.rootWebRuntimeId&&e.shellSessionId===t.shellSessionId}function d(e,t){return Object.keys(e).length===t.length&&t.every(t=>t in e)}function f(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function p(e){return typeof e==`string`&&e.length>0&&e.length<=256}export{r as coreframeFlutterDevToolsPlugin};
@@ -1 +0,0 @@
1
- export * from "@coreframe/flutter-tools";
@@ -1 +0,0 @@
1
- export*from"@coreframe/flutter-tools";export{};
@@ -1,79 +0,0 @@
1
- import { RouteConfigEntry, getAppDirectory } from "@react-router/dev/routes";
2
-
3
- //#region plugins/routes.d.ts
4
- type MobileRouteStack = string | {
5
- /** Stable finite stack identifier. */id: string; /** Marks this Flutter-wrapped DOM route as the stack root. */
6
- root?: boolean;
7
- };
8
- type MobileRouteLayerMetadata = {
9
- /** Absolute route compositor plane. Defaults to zero. */z?: number; /** Optional one-level named stack membership. */
10
- stack?: MobileRouteStack;
11
- };
12
- type NativeRouteRegistration = {
13
- /** `.native.tsx` module containing the route's non-DOM controller. */path: string; /** Symbolic Flutter shell transition selected when this route is presented. */
14
- transitionKey?: string; /** Status-bar foreground policy while this route is active. */
15
- statusBarForeground?: "automatic" | "light" | "dark";
16
- } & MobileRouteLayerMetadata;
17
- type MobileRouteRegistration = {
18
- /** Opts the ordinary DOM implementation into Flutter-owned physical presentation on mobile. */surface: "flutter-dom"; /** Symbolic Flutter shell transition selected when this route is presented. */
19
- transitionKey?: string; /** Optional opaque route backdrop used while platform transitions fade route content. */
20
- underlayColor?: string; /** Status-bar foreground policy while this route is active. */
21
- statusBarForeground?: "automatic" | "light" | "dark";
22
- } & MobileRouteLayerMetadata;
23
- declare const DEFAULT_MOBILE_TRANSITION_KEY: "platform";
24
- type CoreframeRouteConfigEntry = Omit<RouteConfigEntry, "children"> & {
25
- children?: CoreframeRouteConfigEntry[]; /** Selects native handling for this route on native hosts. */
26
- native?: NativeRouteRegistration; /** Selects an explicit mobile presentation policy without changing the DOM route projection. */
27
- mobile?: MobileRouteRegistration;
28
- };
29
- type RouteConfig = CoreframeRouteConfigEntry[] | Promise<CoreframeRouteConfigEntry[]>;
30
- type NativeRouteManifestEntry = {
31
- routeId: string;
32
- canonicalPath: string;
33
- caseSensitive: boolean;
34
- routeModulePath: string;
35
- controllerModulePath: string;
36
- transitionKey: string;
37
- };
38
- type MobileRouteManifestEntry = {
39
- routeId: string;
40
- canonicalPath: string;
41
- caseSensitive: boolean;
42
- routeModulePath: string;
43
- surface: "flutter-dom" | "native";
44
- transitionKey: string;
45
- z: number;
46
- stackId: string | null;
47
- stackRoot: boolean;
48
- underlayColor: string | null;
49
- statusBarForeground: "automatic" | "light" | "dark" | null;
50
- };
51
- type MobileStackManifestEntry = {
52
- id: string;
53
- rootRouteId: string;
54
- routeIds: readonly string[];
55
- };
56
- type CompiledRouteRegistrations = {
57
- routes: RouteConfigEntry[];
58
- nativeManifest: NativeRouteManifestEntry[];
59
- mobileManifest: MobileRouteManifestEntry[];
60
- stacks: MobileStackManifestEntry[];
61
- };
62
- type RouteOptions = Pick<CoreframeRouteConfigEntry, "id" | "index" | "caseSensitive" | "mobile" | "native">;
63
- type IndexOptions = Pick<CoreframeRouteConfigEntry, "id">;
64
- type LayoutOptions = Pick<CoreframeRouteConfigEntry, "id">;
65
- declare function route(path: string | null | undefined, file: string, children?: CoreframeRouteConfigEntry[]): CoreframeRouteConfigEntry;
66
- declare function route(path: string | null | undefined, file: string, options: RouteOptions, children?: CoreframeRouteConfigEntry[]): CoreframeRouteConfigEntry;
67
- declare function index(file: string, options?: IndexOptions): CoreframeRouteConfigEntry;
68
- declare function layout(file: string, children?: CoreframeRouteConfigEntry[]): CoreframeRouteConfigEntry;
69
- declare function layout(file: string, options: LayoutOptions, children?: CoreframeRouteConfigEntry[]): CoreframeRouteConfigEntry;
70
- declare function prefix(prefixPath: string, routes: CoreframeRouteConfigEntry[]): CoreframeRouteConfigEntry[];
71
- declare function relative(directory: string): {
72
- route(path: string | null | undefined, file: string, optionsOrChildren?: RouteOptions | CoreframeRouteConfigEntry[], children?: CoreframeRouteConfigEntry[]): CoreframeRouteConfigEntry;
73
- index(file: string, options?: IndexOptions): CoreframeRouteConfigEntry;
74
- layout(file: string, optionsOrChildren?: LayoutOptions | CoreframeRouteConfigEntry[], children?: CoreframeRouteConfigEntry[]): CoreframeRouteConfigEntry;
75
- prefix: typeof prefix;
76
- };
77
- declare function compileRouteRegistrations(config: readonly CoreframeRouteConfigEntry[]): CompiledRouteRegistrations;
78
- //#endregion
79
- export { CompiledRouteRegistrations, CoreframeRouteConfigEntry, DEFAULT_MOBILE_TRANSITION_KEY, MobileRouteManifestEntry, MobileRouteRegistration, MobileRouteStack, MobileStackManifestEntry, NativeRouteManifestEntry, NativeRouteRegistration, RouteConfig, compileRouteRegistrations, getAppDirectory, index, layout, prefix, relative, route };
@@ -1 +0,0 @@
1
- import{getAppDirectory as e,index as t,layout as n,prefix as r,relative as i,route as a}from"@react-router/dev/routes";const o=`__coreframe_flutter_dom__`,s=`platform`,c=Symbol(`coreframe-route-registration`);function l(e,t,n,r){let i=Array.isArray(n)||n===void 0?void 0:n,o=Array.isArray(n)?n:r,s=i===void 0?void 0:{id:i.id,index:i.index,caseSensitive:i.caseSensitive},l=s===void 0?a(e,t,o):a(e,t,s,o);return i?.native!==void 0&&(l.native=i.native,l[c]={authoredControllerPath:i.native.path}),i?.mobile!==void 0&&(l.mobile=i.mobile),l}function u(e,n){return t(e,n)}function d(e,t,r){return Array.isArray(t)?n(e,t):t===void 0?n(e):n(e,t,r)}function f(e,t){return r(e,t)}function p(e){let t=i(e);return{route(e,n,r,i){let a=l(e,n,r,i);return a.file=t.route(null,n).file,a.native!==void 0&&(a.native={path:t.route(null,a.native.path).file}),a},index(e,n){return t.index(e,n)},layout(e,n,r){return Array.isArray(n)?t.layout(e,n):n===void 0?t.layout(e):t.layout(e,n,r)},prefix:f}}function m(e){if(!Array.isArray(e))throw Error(`Coreframe route config must be an array. Await asynchronous route config before compiling it.`);let t=[],n=[],r=new Map,i=new Map;return{routes:e.map((e,a)=>h(e,`/`,`routes[${a}]`,r,i,t,n)),nativeManifest:t,mobileManifest:n,stacks:_(n)}}function h(e,t,n,r,i,a,o){if(typeof e!=`object`||!e||typeof e.file!=`string`)throw Error(`Invalid Coreframe route registration at ${n}: expected a route helper result.`);if(e.id!==void 0){if(e.id.length===0||e.id.trim()!==e.id)throw Error(`Invalid route id ${JSON.stringify(e.id)} at ${n}: IDs must be non-empty and cannot have surrounding whitespace.`);let t=r.get(e.id);if(t!==void 0)throw Error(`Duplicate route id ${JSON.stringify(e.id)} at ${n}; it is already registered at ${t}.`);r.set(e.id,n)}let s=C(t,e.path);if(e.mobile!==void 0&&e.native!==void 0)throw Error(`Conflicting mobile surface policy for route ${JSON.stringify(e.id)} at ${n}: use either mobile.surface or native, not both.`);if(e.mobile!==void 0&&e.mobile.surface!==`flutter-dom`)throw Error(`Invalid mobile surface policy for route ${JSON.stringify(e.id)} at ${n}: expected "flutter-dom".`);if((e.mobile!==void 0||e.native!==void 0)&&(S(e,n),b(e.native?.statusBarForeground??e.mobile?.statusBarForeground,n)),e.native!==void 0){x(e,n);let t=v(e,n),r=e.id,c=w(s),l=i.get(c);if(l!==void 0)throw Error(`Ambiguous native route ${JSON.stringify(r)} at ${n}: canonical path ${JSON.stringify(s)} conflicts with native route ${JSON.stringify(l)}.`);i.set(c,r),a.push({routeId:r,canonicalPath:s,caseSensitive:e.caseSensitive===!0,routeModulePath:e.file,controllerModulePath:e.native.path,transitionKey:t}),o.push({routeId:r,canonicalPath:s,caseSensitive:e.caseSensitive===!0,routeModulePath:e.file,surface:`native`,transitionKey:t,underlayColor:null,statusBarForeground:e.native.statusBarForeground??null,...g(e,n)})}else if(e.mobile!==void 0){y(e.mobile.underlayColor,n);let t=v(e,n),r=e.id,a=w(s),c=i.get(a);if(c!==void 0)throw Error(`Ambiguous mobile route ${JSON.stringify(r)} at ${n}: canonical path ${JSON.stringify(s)} conflicts with mobile route ${JSON.stringify(c)}.`);i.set(a,r),o.push({routeId:r,canonicalPath:s,caseSensitive:e.caseSensitive===!0,routeModulePath:e.file,surface:`flutter-dom`,transitionKey:t,underlayColor:e.mobile.underlayColor??null,statusBarForeground:e.mobile.statusBarForeground??null,...g(e,n)})}let c={file:e.file};return`children`in e&&(c.children=e.children?.map((e,t)=>h(e,s,`${n}.children[${t}]`,r,i,a,o))),`path`in e&&(c.path=e.path),`id`in e&&(c.id=e.id),`index`in e&&(c.index=e.index),`caseSensitive`in e&&(c.caseSensitive=e.caseSensitive),c}function g(e,t){let n=e.native??e.mobile;if(n===void 0)return{stackId:null,stackRoot:!1,z:0};let r=n.z??0;if(typeof r!=`number`||!Number.isFinite(r))throw Error(`Invalid mobile route z ${JSON.stringify(r)} for route ${JSON.stringify(e.id)} at ${t}: z must be a finite number.`);let i=n.stack,a=typeof i==`object`?i:void 0,o=typeof i==`string`?i:a?.id,s=a?.root??!1;if(o===void 0&&s)throw Error(`Invalid mobile stack metadata for route ${JSON.stringify(e.id)} at ${t}: stackRoot requires a stack id.`);if(o!==void 0&&(typeof o!=`string`||o.length===0||o.trim()!==o))throw Error(`Invalid mobile stack id ${JSON.stringify(o)} for route ${JSON.stringify(e.id)} at ${t}: IDs must be non-empty and cannot have surrounding whitespace.`);if(typeof s!=`boolean`)throw Error(`Invalid mobile stack root flag for route ${JSON.stringify(e.id)} at ${t}: expected a boolean.`);return{stackId:o??null,stackRoot:s,z:r}}function _(e){let t=new Map;for(let n of e){if(n.stackId===null){if(n.stackRoot)throw Error(`Mobile route ${JSON.stringify(n.routeId)} marks a stack root without a stack.`);continue}let e=t.get(n.stackId)??[];e.push(n),t.set(n.stackId,e)}return[...t.entries()].sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>{let n=t.filter(e=>e.stackRoot);if(n.length!==1)throw Error(`Mobile stack ${JSON.stringify(e)} must declare exactly one Flutter DOM root route.`);let r=n[0];if(r.surface!==`flutter-dom`)throw Error(`Mobile stack ${JSON.stringify(e)} root route ${JSON.stringify(r.routeId)} must use the Flutter DOM surface.`);return{id:e,rootRouteId:r.routeId,routeIds:t.map(({routeId:e})=>e).sort((e,t)=>e.localeCompare(t))}})}function v(e,t){let n=e.native?.transitionKey??e.mobile?.transitionKey;if(n===void 0)return s;if(typeof n!=`string`||n.length===0||n.trim()!==n)throw Error(`Invalid mobile transition key ${JSON.stringify(n)} for route ${JSON.stringify(e.id)} at ${t}: keys must be non-empty and cannot have surrounding whitespace.`);return n}function y(e,t){if(e!==void 0&&(typeof e!=`string`||!/^#[0-9A-Fa-f]{6}$/.test(e)))throw Error(`Invalid mobile underlay color ${JSON.stringify(e)} at ${t}: expected a solid #RRGGBB color.`)}function b(e,t){if(e!==void 0&&e!==`automatic`&&e!==`light`&&e!==`dark`)throw Error(`Invalid status bar foreground ${JSON.stringify(e)} at ${t}: expected "automatic", "light", or "dark".`)}function x(e,t){S(e,t);let n=e[c]?.authoredControllerPath??e.native?.path;if(typeof n!=`string`||n.trim()!==n||!n.startsWith(`.`)||n.includes(`\\`)||n.includes(`?`)||n.includes(`#`)||!n.endsWith(`.native.tsx`))throw Error(`Invalid native controller path ${JSON.stringify(n)} for route ${JSON.stringify(e.id)} at ${t}: expected a relative *.native.tsx module path without query, hash, or backslash characters.`)}function S(e,t){if(e.id===void 0)throw Error(`Mobile route at ${t} (${JSON.stringify(e.file)}) requires an explicit stable id.`);if(e.id===`root`)throw Error(`Mobile route at ${t} cannot use React Router's reserved id "root".`);if(e.id===o)throw Error(`Mobile route at ${t} cannot use Coreframe's reserved Flutter-DOM route id ${JSON.stringify(o)}.`);if(e.path===void 0&&e.index!==!0)throw Error(`Mobile route ${JSON.stringify(e.id)} at ${t} must have an addressable path or be an index route.`)}function C(e,t){if(t===void 0||t===``)return e;let n=(t.startsWith(`/`)?t:`${e===`/`?``:e}/${t}`).replace(/\/{2,}/g,`/`);return n.startsWith(`/`)?n:`/${n}`}function w(e){return e.split(`/`).map(e=>e.startsWith(`:`)?`:${e.endsWith(`?`)?`?`:``}`:e).join(`/`).toLowerCase()}export{s as DEFAULT_MOBILE_TRANSITION_KEY,m as compileRouteRegistrations,e as getAppDirectory,u as index,d as layout,f as prefix,p as relative,l as route};
@@ -1,7 +0,0 @@
1
- import { Plugin } from "vite";
2
-
3
- //#region plugins/shell.d.ts
4
- /** Selects the host shell before Vite constructs the application bundle graph. */
5
- declare function coreframeShellPlugin(): Plugin;
6
- //#endregion
7
- export { coreframeShellPlugin };
@@ -1 +0,0 @@
1
- import{resolveCoreframeHost as e,resolveCoreframePlatform as t}from"./index.js";import{realpathSync as n}from"node:fs";import{extname as r,isAbsolute as i,relative as a,resolve as o,sep as s}from"node:path";import{parseSync as c}from"vite";const l={browser:{router:`@coreframe/lib/router`,shell:`@coreframe/lib/shell/dom`},flutter:{router:`@coreframe/flutter-js/router`,shell:`@coreframe/flutter-js/composition`}};function u(){let n=t(),r=n===`ios`||n===`android`?n:void 0,i=e(process.env,n),a=l[i],s=d(a.shell),u=process.cwd();return{name:`coreframe:shell`,enforce:`pre`,config(){return{define:{"import.meta.env.MOBILE_PLATFORM":r===void 0?`undefined`:JSON.stringify(r),"import.meta.env.PLATFORM":JSON.stringify(n)},resolve:{dedupe:[`react`,`react-dom`,`react-router`]},ssr:{noExternal:[`@coreframe/app`,s]}}},configResolved(e){u=e.root},transform(e,t){let n=f(t);if(!_(t,u)||n===void 0)return;let{module:r}=c(t,e,{lang:n});(r.staticImports.some(({moduleRequest:e})=>m(e.value))||r.staticExports.some(({entries:e})=>e.some(({moduleRequest:e})=>m(e?.value)))||r.dynamicImports.some(({moduleRequest:t})=>m(e.slice(t.start,t.end))))&&h(),i===`flutter`&&(r.staticImports.some(({moduleRequest:e})=>e.value===`react-router`)||r.staticExports.some(({entries:e})=>e.some(({moduleRequest:e})=>e?.value===`react-router`))||r.dynamicImports.some(({moduleRequest:t})=>p(e.slice(t.start,t.end))))&&g()},resolveId(e){if(e===`virtual:coreframe-internal/shell`)return this.resolve(a.shell,o(u,`vite.config.ts`),{skipSelf:!0});if(e===`virtual:coreframe-internal/router`)return this.resolve(a.router,o(u,`vite.config.ts`),{skipSelf:!0});if(e===`virtual:coreframe-internal/flutter/application`)return this.resolve(o(u,`src/web/app/flutter-shell/application.ts`),void 0,{skipSelf:!0});if(e===`virtual:coreframe-internal/flutter/native-bridge`)return this.resolve(o(u,`src/web/app/flutter-shell/generated/native-bridge.ts`),void 0,{skipSelf:!0});if(e===`virtual:coreframe-internal/flutter/native-pages`)return this.resolve(o(u,`src/web/app/flutter-shell/generated/native-pages.ts`),void 0,{skipSelf:!0});if(e===`virtual:coreframe-internal/flutter/native-surfaces`)return this.resolve(o(u,`src/web/app/flutter-shell/generated/native-surfaces.ts`),void 0,{skipSelf:!0})}}}function d(e){let t=e.split(`/`);return e.startsWith(`@`)?t.slice(0,2).join(`/`):t[0]}function f(e){let t=r(e.split(`?`,1)[0]);if(t===`.jsx`)return`jsx`;if(t===`.ts`||t===`.mts`||t===`.cts`)return`ts`;if(t===`.tsx`)return`tsx`;if(t===`.js`||t===`.mjs`||t===`.cjs`)return`js`}function p(e){return e===`"react-router"`||e===`'react-router'`||e==="`react-router`"}function m(e){return e!==void 0&&/^["'`]?virtual:coreframe/u.test(e)}function h(){throw Error(`Application modules must import Coreframe runtime APIs from "@coreframe/app" package entry points; "virtual:coreframe*" modules are framework-internal.`)}function g(){throw Error(`Flutter application modules must import React Router APIs from ${JSON.stringify(`@coreframe/app/router`)}; direct ${JSON.stringify(`react-router`)} imports bypass the native navigation contract. Importing ${JSON.stringify(`react-router/dom`)} remains supported.`)}function _(e,t){let r=e.split(`?`,1)[0];if(!i(r))return!1;let o=a(n(t),n(r)),c=o.split(s);return o!==``&&o!==`..`&&!o.startsWith(`..${s}`)&&!i(o)&&!c.includes(`node_modules`)&&c[0]!==`.react-router`}export{u as coreframeShellPlugin};