@coreframe/vite 0.2.63 → 0.2.64

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 +1 @@
1
- import{mkdir as e,readFile as t,writeFile as n}from"node:fs/promises";import r from"node:path";import{readProjectConfig as i}from"@coreframe/config";import{randomUUID as a}from"node:crypto";import{managedDevEnv as o,managedDevEvents as s,managedDevFlutterRestartFileEnv as c,managedDevOperationPhases as l,managedDevSupervisorRecoveryErrorPrefix as u}from"@coreframe/dev-contracts/managed-dev";import{startManagedDevSession as d}from"@coreframe/dev/managed-dev";import{DevDiagnostics as f,connectDevSupervisor as p,connectExistingDevSupervisor as m,devDiagnosticError as h,devDiagnosticPhase as ee}from"@coreframe/dev/supervisor";function te(e){let t,n,r=new Map,i=e=>e<1e3?`${Math.max(0,Math.round(e))}ms`:`${Math.round(e/1e3)}s`;return a=>{let o=a.operation;if(!o)return;let s=`[managed-dev ${o.id.slice(0,8)}]`;t!==o.id&&(t=o.id,n=void 0,r.clear(),e(`${s} ${o.kind===`merge`?`Merge`:o.kind===`fast-forward`?`Sync`:`Rebase`}: ${o.source} ${o.target.slice(0,12)}`));let c=`${o.state}:${o.phase}:${o.cancellationDeferred}`;c!==n&&(n=c,e(`${s} ${o.state===`cancelled`?o.published?`Changes applied; remaining work cancelled`:`Update cancelled; prepared changes were not applied`:o.state===`failed`?`Update failed; review recovery actions in the overlay`:o.state===`interrupted`?`Update interrupted; review recovered state before retrying`:o.state===`succeeded`?`Update ready`:o.state===`cancelling`?o.cancellationDeferred?`Cancellation requested; finishing publication before stopping`:`Cancellation requested; waiting for processes and cleanup`:l[o.phase]}${o.finishedAt?` · ${i(o.finishedAt-o.startedAt)}`:``}`));let u=(t,n,i)=>{r.get(t)!==n&&(r.set(t,n),e(`${s} ${i}`))},d=o.progress;if(d){let e=d.current?.shortCommit,t=o.kind===`merge`?`${d.files?.length??0} conflicted files`:`${d.applied}/${d.total??`?`} commits applied · ${d.skipped} skipped${d.remaining===void 0?``:` · ${d.remaining} remaining`}${e?` · current ${e}`:``}${d.files?.length?` · ${d.files.length} conflicted files`:``}`;u(`progress`,t,t)}let f=new Set([`progress`,...o.steps.map(e=>e.id),...o.turns.map(e=>e.id),...o.activities.map(e=>e.id)]);for(let e of r.keys())f.has(e)||r.delete(e);for(let e of o.steps){let t=`${e.status}:${e.pulse??0}`,n=i((e.finishedAt??o.updatedAt)-e.startedAt);u(e.id,t,`${e.pulse&&e.status===`running`?`Still running: `:``}${e.label} ${e.status===`running`?`started`:e.status} · ${n}`)}for(let[e,t]of o.turns.entries())u(t.id,t.status,`AI ${t.stage===`verify`?`verification`:`resolution`} turn ${e+1} ${t.status}`);for(let e of o.activities){let t=e.command?.match(/^(?:\S*\/)?(?:bash|zsh|sh)\s+-(?:lc|c|cl)\s+(['"])([\s\S]*)\1$/)?.[2]??e.command,n=t&&/^(?:pnpm|npm|yarn|bun) (?:run )?(?:test|typecheck|build|lint|format|codegen|install(?: --frozen-lockfile)?|db (?:ensure|migrate-local|setup))$/.test(t)?t:void 0;u(e.id,e.status,`${n??e.label} ${e.status}${e.finishedAt?` · ${i(e.finishedAt-e.startedAt)}`:``}`)}}}const g=Symbol.for(`@coreframe/vite/managed-dev-session-states`),_=(()=>{let e=globalThis;return e[g]??=new Map})(),ne=[100,500,2e3];function v({connectSupervisor:l,env:g=process.env,recoverSupervisor:_,startSession:v=d}={}){let b=g[o]===`1`,ae=l??m,oe=_??l??p,S,C,w,T,E,D,O,k,A,j=!1,M=!1,N=!1,P=!1,F=!1,I,L=new Map,R=new WeakMap,z=new Set,B=new Map,V=(e,t)=>{let n=R.get(e);return n||(n=a(),R.set(e,n)),`${n}:${t}`},H=(e,t)=>{let n=t?.clientId;typeof n==`string`&&/^[a-zA-Z0-9_-]{1,128}$/.test(n)&&R.set(e,n)},U=(e,t,n)=>{try{e.send(t,n)}catch(e){I?.event(`transport.delivery-failed`,{event:t,...h(e)},`warn`)}},W=(e,t)=>{B.set(V(e,t.requestId),t),B.size>100&&B.delete(B.keys().next().value),I?.event(`action.result-sent`,{operationId:t.requestId,failed:!!t.error,sessionId:t.status?.trace?.sessionId,revision:t.status?.trace?.revision,busy:!!t.status?.busy}),U(e,s.actionResult,t)},G={mode:`waiting`,warnings:[]},K=()=>{let e=C;return T?.(),T=void 0,E?.(),E=void 0,C=void 0,w=void 0,e},q=()=>A??=(async()=>{F=!0,await O,await k,P=!1;let e=S,t=C,n=w;S=void 0,K(),e&&D&&await y(D,e),t&&(n&&await t.release(n).catch(()=>void 0),t.close()),I?.event(`vite.detached`),I?.close()})();return{name:`coreframe:managed-dev`,apply:`serve`,async config(e={}){let n;if(b){let i=await t(r.resolve(e.root??process.cwd(),`package.json`),`utf8`).catch(e=>{if(e.code!==`ENOENT`)throw e});i&&(n=JSON.parse(i).engines?.coreframe)}return{define:{"import.meta.env.COREFRAME_MANAGED_DEV":JSON.stringify(b),"import.meta.env.COREFRAME_VERSION":JSON.stringify(n)??`undefined`}}},configureServer(t){if(!b)return;let o=t.config.root;I=new f(o,`vite`),I.event(`vite.attached`),D=o;let l=!1,d=!1,p=()=>S?.getStatus()??G,m,_=te(e=>t.config.logger.info?.(e)),A=(e,t)=>{_(e);let n=JSON.stringify([e.trace,e.mode,e.busy]);n!==m&&(m=n,I?.event(`status.sent`,{sessionId:e.trace?.sessionId,revision:e.trace?.revision,operationId:e.trace?.operationId,mode:e.mode,busy:!!e.busy,delivery:t},`debug`))},R=()=>{if(!F){let e=p();A(e,`broadcast`),U(t.ws,s.status,{status:e})}},J=()=>{if(d||F)return;d=!0,I?.event(`vite.restart-queued`);let e=p().operation;t.config.logger.info?.(`[managed-dev ${e?.id.slice(0,8)??`restart`}] Restarting Vite`),queueMicrotask(()=>{d=!1,Promise.resolve(t.restart()).catch(e=>{I?.event(`vite.restart-failed`,h(e),`error`);let n=e instanceof Error?e.message:String(e);t.config.logger.error(`Coreframe managed development restart failed: ${n}`,{error:e instanceof Error?e:void 0})})})},se=(e,t)=>{if(F||C!==e||!P||t.event!==`managed-dev`)return;if(t.kind===`status`){G=t.status,R();return}if(t.kind===`restart`){l=!0,L.size===0&&(l=!1,J());return}let n=L.get(t.requestId);!n||!t.codex||typeof t.codex!=`object`||U(n.client,s.codex,{...t.codex,requestId:n.requestId})},Y=async e=>{I?.event(`supervisor.connecting`,{supervisorId:e.state?.supervisorId,supervisorPid:e.state?.pid});let t,n=!1,r=e.onEvent(t=>se(e,t)),i=e.onClose(t=>{n=!0,!F&&C===e&&M&&!N&&!k&&(P=!1,X(t))});C=e,T=r,E=i;try{await e.subscribe([`managed-dev`]);let r=await e.acquireManagedDev({env:g});if(I?.event(`supervisor.connected`,{supervisorId:e.state?.supervisorId,leaseId:r.leaseId}),t=r.leaseId,n||F||C!==e)throw Error(`The development supervisor disconnected while managed development was attaching.`);w=r.leaseId,G=r.status,P=!0,M=!0,R()}catch(n){throw C===e?K():(r(),i()),t&&await e.release(t).catch(()=>void 0),e.close(),n}};function X(e,n=!1){if(F||!M)return Promise.resolve();if(k)return k;P=!1,I?.event(`supervisor.recovery-started`,{explicit:n,...h(e)},`warn`),j=!1,K()?.close(),G={message:n?`Managed development supervisor retrying connection.`:`Managed development supervisor disconnected. Reconnecting…`,mode:`waiting`,warnings:[]},R();let r=(async()=>{let n=e;for(let e=0;e<4;e+=1){if(F||(e>0&&await new Promise(t=>setTimeout(t,ne[e-1]??2e3)),F))return;try{let e=await oe({cwd:o,env:g,requiredResources:[`managed-dev`]});if(!e)throw Error(`No managed development supervisor is available.`);if(F){e.close();return}await Y(e),j=!1;return}catch(r){I?.event(`supervisor.recovery-failed`,{attempt:e+1,...h(r)},`warn`),n=r;let i=x(r);t.config.logger.error(`Coreframe managed development supervisor recovery attempt ${e+1} failed: ${i}`,{error:r instanceof Error?r:void 0}),e+1<4&&(G={message:`Managed development supervisor recovery is retrying (${e+2}/4).`,mode:`waiting`,warnings:[]},R())}}if(F)return;let r=x(n),i=`${u}4 attempts: ${r} Retry to reconnect managed development.`;j=!0,G={message:i,mode:`error`,warnings:[i]},t.config.logger.error(`Coreframe managed development supervisor recovery failed: ${r}`,{error:n instanceof Error?n:void 0}),R()})();return k=r,r.then(()=>{k===r&&(k=void 0)},()=>{k===r&&(k=void 0)}),r}let Z=(e,t)=>{M&&C===e&&ie(t)&&(P=!1,X(t))},Q=async(e,n)=>{H(n,e);let r=e?.requestIds;if(Array.isArray(r))for(let e of r.slice(0,100)){let t=typeof e==`string`?B.get(V(n,e)):void 0;t?(I?.event(`action.result-replayed`,{operationId:t.requestId},`debug`),U(n,s.actionResult,t)):typeof e==`string`&&!z.has(V(n,e))&&W(n,{requestId:e,errorCode:`UNKNOWN_REQUEST`,error:`The server has no result for this request. Check the current status before trying again.`})}let i=C;if(i&&P)try{G=(await i.managedDevStatus()).status}catch(e){let n=e instanceof Error?e.message:String(e);t.config.logger.error(`Coreframe managed development status failed: ${n}`,{error:e instanceof Error?e:void 0}),Z(i,e)}let a=p();A(a,`response`),U(n,s.status,{status:a})},$=e=>{if(!e||typeof e!=`object`)return;let t=e;if(![`status-received`,`action-result-received`,`connected`,`disconnected`].includes(t.type))return;let n=e=>typeof e==`string`&&/^[a-zA-Z0-9-]{1,160}$/.test(e)?e:void 0;I?.event(`overlay.${t.type}`,{operationId:n(t.requestId),sessionId:n(t.sessionId),revision:Number.isSafeInteger(t.revision)&&t.revision>=0?t.revision:void 0,busy:typeof t.busy==`boolean`?t.busy:void 0,pending:typeof t.pending==`boolean`?t.pending:void 0},`debug`)},ce=async(e,n)=>{if(e.action.type===`retry-supervisor`){try{if(!M||!j)throw Error(`Managed development supervisor recovery is not available.`);await X(void 0,!0);let t=p();if(j)throw Error(t.message??`Managed development supervisor recovery failed.`);W(n,{requestId:e.requestId,status:t})}catch(r){let i=x(r);t.config.logger.error(`Coreframe managed development action failed: ${i}`,{error:r instanceof Error?r:void 0}),W(n,{error:i,requestId:e.requestId,status:p()})}return}let r;try{if(!P)throw Error(`Managed development is still initializing.`);let r=C;if(r){let t=a();L.set(t,{client:n,requestId:e.requestId});try{let i=await r.managedDevAction({action:e.action,requestId:t,operationId:e.requestId,requestKey:V(n,e.requestId)});i.status&&(G=i.status),W(n,{...i,requestId:e.requestId}),!i.error&&l&&(l=!1,J())}catch(e){throw Z(r,e),e}finally{L.delete(t)}return}let i=S;if(!i)throw Error(`Managed development is still initializing.`);let o=await i.action(e.action,{operationId:e.requestId,requestKey:V(n,e.requestId),onCodexEvent:t=>U(n,s.codex,{...t,requestId:e.requestId})});W(n,{requestId:e.requestId,...o}),l&&(l=!1,queueMicrotask(()=>{q().then(()=>t.restart()).catch(e=>{let n=e instanceof Error?e.message:String(e);t.config.logger.error(`Coreframe managed development restart failed: ${n}`,{error:e instanceof Error?e:void 0})})}));return}catch(e){r=e}let i=r instanceof Error?r.message:String(r);t.config.logger.error(`Coreframe managed development action failed: ${i}`,{error:r instanceof Error?r:void 0}),W(n,{error:i,requestId:e.requestId,status:p()})},le=async(e,t)=>{H(t,e);let n=V(t,e.requestId);if(z.has(n))return;let r=B.get(n);if(r){U(t,s.actionResult,r);return}z.add(n);try{await I.run({operationId:e.requestId,actionType:e.action.type},()=>ee(`vite.action`,()=>ce(e,t)))}finally{z.delete(n)}};t.ws.on(s.statusRequest,Q),t.ws.on(s.action,le),t.ws.on(s.diagnostic,$),O=(async()=>{let s,u;try{if(N=!0,s=await ae({cwd:o,env:g,requiredResources:[`managed-dev`]}),s){if(F){s.close();return}await Y(s);return}let d=await i({cwd:o});if(F)return;if(u=await v({config:d,cwd:o,env:g,onRestart:()=>{l=!0},onFlutterRestart:async()=>{let i=g[c];if(i)try{await e(r.dirname(i),{recursive:!0}),await n(i,`${a()}\n`,{mode:384})}catch(e){let n=e instanceof Error?e.message:String(e);t.config.logger.error(`Coreframe Flutter restart request failed: ${n}`,{error:e instanceof Error?e:void 0})}},onStatusChange:e=>{G=e,R()}}),S=u,G=u.getStatus(),F){S=void 0,await u.close();return}if(await re(o,u),F){S=void 0,await y(o,u);return}P=!0}catch(e){if(I?.event(`vite.initialization-failed`,h(e),`error`),s&&C===s&&(K(),s.close()),S===u&&(S=void 0),!F){let n=e instanceof Error?e.message:String(e);G={message:n,mode:`error`,warnings:[n]},t.config.logger.error(`Coreframe managed development initialization failed: ${n}`,{error:e instanceof Error?e:void 0}),R()}}finally{N=!1}})(),t.httpServer?.once(`close`,()=>{t.ws.off(s.statusRequest,Q),t.ws.off(s.action,le),t.ws.off(s.diagnostic,$),q()})},async closeBundle(){await q()}}}async function re(e,t){await b(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 y(e,t){await b(e,async e=>{e.session===t&&(e.session=void 0),await t.close()})}async function b(e,t){let n=_.get(e);n||(n={transition:Promise.resolve()},_.set(e,n));let r=n.transition,i;n.transition=new Promise(e=>{i=()=>e()}),await r;try{await t(n)}finally{i()}}function x(e){return e instanceof Error?e.message:String(e)}function ie(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.retryable===!0||t.code===`LEASE_EXPIRED`||t.code===`SUPERVISOR_STOPPING`}export{v as t};
1
+ import{mkdir as e,readFile as t,writeFile as n}from"node:fs/promises";import r from"node:path";import{readProjectConfig as i}from"@coreframe/config";import{randomUUID as a}from"node:crypto";import{managedDevEnv as o,managedDevEvents as s,managedDevFlutterRestartFileEnv as c,managedDevOperationPhases as l,managedDevSupervisorRecoveryErrorPrefix as u}from"@coreframe/dev-contracts/managed-dev";import{startManagedDevSession as d}from"@coreframe/dev/managed-dev";import{DevDiagnostics as f,connectDevSupervisor as p,connectExistingDevSupervisor as m,devDiagnosticError as h,devDiagnosticPhase as ee}from"@coreframe/dev/supervisor";function te(e){let t,n,r=new Map,i=e=>e<1e3?`${Math.max(0,Math.round(e))}ms`:`${Math.round(e/1e3)}s`;return a=>{let o=a.operation;if(!o)return;let s=`[managed-dev ${o.id.slice(0,8)}]`;t!==o.id&&(t=o.id,n=void 0,r.clear(),e(`${s} ${o.kind===`merge`?`Merge`:o.kind===`fast-forward`?`Sync`:`Rebase`}: ${o.source} ${o.target.slice(0,12)}`));let c=`${o.state}:${o.phase}:${o.cancellationDeferred}`;c!==n&&(n=c,e(`${s} ${o.state===`cancelled`?o.published?`Changes applied; remaining work cancelled`:`Update cancelled; prepared changes were not applied`:o.state===`failed`?`Update failed; review recovery actions in the overlay`:o.state===`interrupted`?`Update interrupted; review recovered state before retrying`:o.state===`succeeded`?`Update ready`:o.state===`cancelling`?o.cancellationDeferred?`Cancellation requested; finishing publication before stopping`:`Cancellation requested; waiting for processes and cleanup`:l[o.phase]}${o.finishedAt?` · ${i(o.finishedAt-o.startedAt)}`:``}`));let u=(t,n,i)=>{r.get(t)!==n&&(r.set(t,n),e(`${s} ${i}`))},d=o.progress;if(d){let e=d.current?.shortCommit,t=o.kind===`merge`?`${d.files?.length??0} conflicted files`:`${d.applied}/${d.total??`?`} commits applied · ${d.skipped} skipped${d.remaining===void 0?``:` · ${d.remaining} remaining`}${e?` · current ${e}`:``}${d.files?.length?` · ${d.files.length} conflicted files`:``}`;u(`progress`,t,t)}let f=new Set([`progress`,...o.steps.map(e=>e.id),...o.turns.map(e=>e.id),...o.activities.map(e=>e.id)]);for(let e of r.keys())f.has(e)||r.delete(e);for(let e of o.steps){let t=`${e.status}:${e.pulse??0}`,n=i((e.finishedAt??o.updatedAt)-e.startedAt);u(e.id,t,`${e.pulse&&e.status===`running`?`Still running: `:``}${e.label} ${e.status===`running`?`started`:e.status} · ${n}`)}for(let[e,t]of o.turns.entries())u(t.id,t.status,`AI ${t.stage===`verify`?`verification`:`resolution`} turn ${e+1} ${t.status}`);for(let e of o.activities){let t=e.command?.match(/^(?:\S*\/)?(?:bash|zsh|sh)\s+-(?:lc|c|cl)\s+(['"])([\s\S]*)\1$/)?.[2]??e.command,n=t&&/^(?:pnpm|npm|yarn|bun) (?:run )?(?:test|typecheck|build|lint|format|codegen|install(?: --frozen-lockfile)?|db (?:ensure|migrate-local|setup))$/.test(t)?t:void 0;u(e.id,e.status,`${n??e.label} ${e.status}${e.finishedAt?` · ${i(e.finishedAt-e.startedAt)}`:``}`)}}}const g=Symbol.for(`@coreframe/vite/managed-dev-session-states`),_=(()=>{let e=globalThis;return e[g]??=new Map})(),ne=[100,500,2e3];function v({connectSupervisor:l,env:g=process.env,recoverSupervisor:_,startSession:v=d}={}){let b=g[o]===`1`,ae=l??m,oe=_??l??p,S,C,w,T,E,D,O,k,A,j=!1,M=!1,N=!1,P=!1,F=!1,I,L=new Map,R=new WeakMap,z=new Set,B=new Map,V=(e,t)=>{let n=R.get(e);return n||(n=a(),R.set(e,n)),`${n}:${t}`},H=(e,t)=>{let n=t?.clientId;typeof n==`string`&&/^[a-zA-Z0-9_-]{1,128}$/.test(n)&&R.set(e,n)},U=(e,t,n)=>{try{e.send(t,n)}catch(e){I?.event(`transport.delivery-failed`,{event:t,...h(e)},`warn`)}},W=(e,t)=>{B.set(V(e,t.requestId),t),B.size>100&&B.delete(B.keys().next().value),I?.event(`action.result-sent`,{operationId:t.requestId,failed:!!t.error,sessionId:t.status?.trace?.sessionId,revision:t.status?.trace?.revision,busy:!!t.status?.busy}),U(e,s.actionResult,t)},G={mode:`waiting`,warnings:[]},K=()=>{let e=C;return T?.(),T=void 0,E?.(),E=void 0,C=void 0,w=void 0,e},q=()=>A??=(async()=>{F=!0,await O,await k,P=!1;let e=S,t=C,n=w;S=void 0,K(),e&&D&&await y(D,e),t&&(n&&await t.release(n).catch(()=>void 0),t.close()),I?.event(`vite.detached`),I?.close()})();return{name:`coreframe:managed-dev`,apply:`serve`,async config(e={}){let n;if(b){let i=await t(r.resolve(e.root??process.cwd(),`package.json`),`utf8`).catch(e=>{if(e.code!==`ENOENT`)throw e});i&&(n=JSON.parse(i).engines?.coreframe)}return{define:{"import.meta.env.COREFRAME_MANAGED_DEV":JSON.stringify(b),"import.meta.env.COREFRAME_VERSION":JSON.stringify(n)??`undefined`}}},configureServer(t){if(!b)return;let o=t.config.root;I=new f(o,`vite`),I.event(`vite.attached`),D=o;let l=!1,d=!1,p=()=>S?.getStatus()??G,m,_=te(e=>t.config.logger.info?.(e)),A=(e,t)=>{_(e);let n=JSON.stringify([e.trace,e.mode,e.busy]);n!==m&&(m=n,I?.event(`status.sent`,{sessionId:e.trace?.sessionId,revision:e.trace?.revision,operationId:e.trace?.operationId,mode:e.mode,busy:!!e.busy,delivery:t},`debug`))},R=()=>{if(!F){let e=p();A(e,`broadcast`),U(t.ws,s.status,{status:e})}},J=()=>{if(d||F)return;d=!0,I?.event(`vite.restart-queued`);let e=p().operation;t.config.logger.info?.(`[managed-dev ${e?.id.slice(0,8)??`restart`}] Restarting Vite`),queueMicrotask(()=>{d=!1,Promise.resolve(t.restart()).catch(e=>{I?.event(`vite.restart-failed`,h(e),`error`);let n=e instanceof Error?e.message:String(e);t.config.logger.error(`Coreframe managed development restart failed: ${n}`,{error:e instanceof Error?e:void 0})})})},se=(e,t)=>{if(F||C!==e||!P||t.event!==`managed-dev`)return;if(t.kind===`status`){G=t.status,R();return}if(t.kind===`restart`){l=!0,L.size===0&&(l=!1,J());return}let n=L.get(t.requestId);!n||!t.codex||typeof t.codex!=`object`||U(n.client,s.codex,{...t.codex,requestId:n.requestId})},Y=async e=>{I?.event(`supervisor.connecting`,{supervisorId:e.state?.supervisorId,supervisorPid:e.state?.pid});let t,n=!1,r=e.onEvent(t=>se(e,t)),i=e.onClose(t=>{n=!0,!F&&C===e&&M&&!N&&!k&&(P=!1,X(t))});C=e,T=r,E=i;try{await e.subscribe([`managed-dev`]);let r=await e.acquireManagedDev({env:g});if(I?.event(`supervisor.connected`,{supervisorId:e.state?.supervisorId,leaseId:r.leaseId}),t=r.leaseId,n||F||C!==e)throw Error(`The development supervisor disconnected while managed development was attaching.`);w=r.leaseId,G=r.status,P=!0,M=!0,R()}catch(n){throw C===e?K():(r(),i()),t&&await e.release(t).catch(()=>void 0),e.close(),n}};function X(e,n=!1){if(F||!M)return Promise.resolve();if(k)return k;P=!1,I?.event(`supervisor.recovery-started`,{explicit:n,...h(e)},`warn`),j=!1,K()?.close(),G={message:n?`Managed development supervisor retrying connection.`:`Managed development supervisor disconnected. Reconnecting…`,mode:`waiting`,warnings:[]},R();let r=(async()=>{let n=e;for(let e=0;e<4;e+=1){if(F||(e>0&&await new Promise(t=>setTimeout(t,ne[e-1]??2e3)),F))return;try{let e=await oe({cwd:o,env:g,requiredResources:[`managed-dev`]});if(!e)throw Error(`No managed development supervisor is available.`);if(F){e.close();return}await Y(e),j=!1;return}catch(r){I?.event(`supervisor.recovery-failed`,{attempt:e+1,...h(r)},`warn`),n=r;let i=x(r);t.config.logger.error(`Coreframe managed development supervisor recovery attempt ${e+1} failed: ${i}`,{error:r instanceof Error?r:void 0}),e+1<4&&(G={message:`Managed development supervisor recovery is retrying (${e+2}/4).`,mode:`waiting`,warnings:[]},R())}}if(F)return;let r=x(n),i=`${u}4 attempts: ${r} Retry to reconnect managed development.`;j=!0,G={message:i,mode:`error`,warnings:[i]},t.config.logger.error(`Coreframe managed development supervisor recovery failed: ${r}`,{error:n instanceof Error?n:void 0}),R()})();return k=r,r.then(()=>{k===r&&(k=void 0)},()=>{k===r&&(k=void 0)}),r}let Z=(e,t)=>{M&&C===e&&ie(t)&&(P=!1,X(t))},Q=async(e,n)=>{H(n,e);let r=e?.requestIds;if(Array.isArray(r))for(let e of r.slice(0,100)){let t=typeof e==`string`?B.get(V(n,e)):void 0;t?(I?.event(`action.result-replayed`,{operationId:t.requestId},`debug`),U(n,s.actionResult,t)):typeof e==`string`&&!z.has(V(n,e))&&W(n,{requestId:e,errorCode:`UNKNOWN_REQUEST`,error:`The server has no result for this request. Check the current status before trying again.`})}let i=C;if(i&&P)try{G=(await i.managedDevStatus()).status}catch(e){let n=e instanceof Error?e.message:String(e);t.config.logger.error(`Coreframe managed development status failed: ${n}`,{error:e instanceof Error?e:void 0}),Z(i,e)}let a=p();A(a,`response`),U(n,s.status,{status:a})},$=e=>{if(!e||typeof e!=`object`)return;let t=e;if(![`status-received`,`action-result-received`,`connected`,`disconnected`].includes(t.type))return;let n=e=>typeof e==`string`&&/^[a-zA-Z0-9-]{1,160}$/.test(e)?e:void 0;I?.event(`overlay.${t.type}`,{operationId:n(t.requestId),sessionId:n(t.sessionId),revision:Number.isSafeInteger(t.revision)&&t.revision>=0?t.revision:void 0,busy:typeof t.busy==`boolean`?t.busy:void 0,pending:typeof t.pending==`boolean`?t.pending:void 0},`debug`)},ce=async(e,n)=>{if(e.action.type===`retry-supervisor`){try{if(!M||!j)throw Error(`Managed development supervisor recovery is not available.`);await X(void 0,!0);let t=p();if(j)throw Error(t.message??`Managed development supervisor recovery failed.`);W(n,{requestId:e.requestId,status:t})}catch(r){let i=x(r);t.config.logger.error(`Coreframe managed development action failed: ${i}`,{error:r instanceof Error?r:void 0}),W(n,{error:i,requestId:e.requestId,status:p()})}return}let r;try{if(!P)throw Error(`Managed development is still initializing.`);let r=C;if(r){let i=a();L.set(i,{client:n,requestId:e.requestId});try{let a=await r.managedDevAction({action:e.action,requestId:i,operationId:e.requestId,requestKey:V(n,e.requestId)});a.status&&(G=a.status),a.error&&t.config.logger.error(`Coreframe managed development action failed: ${a.error}`),W(n,{...a,requestId:e.requestId}),!a.error&&l&&(l=!1,J())}catch(e){throw Z(r,e),e}finally{L.delete(i)}return}let i=S;if(!i)throw Error(`Managed development is still initializing.`);let o=await i.action(e.action,{operationId:e.requestId,requestKey:V(n,e.requestId),onCodexEvent:t=>U(n,s.codex,{...t,requestId:e.requestId})});W(n,{requestId:e.requestId,...o}),l&&(l=!1,queueMicrotask(()=>{q().then(()=>t.restart()).catch(e=>{let n=e instanceof Error?e.message:String(e);t.config.logger.error(`Coreframe managed development restart failed: ${n}`,{error:e instanceof Error?e:void 0})})}));return}catch(e){r=e}let i=r instanceof Error?r.message:String(r);t.config.logger.error(`Coreframe managed development action failed: ${i}`,{error:r instanceof Error?r:void 0}),W(n,{error:i,requestId:e.requestId,status:p()})},le=async(e,t)=>{H(t,e);let n=V(t,e.requestId);if(z.has(n))return;let r=B.get(n);if(r){U(t,s.actionResult,r);return}z.add(n);try{await I.run({operationId:e.requestId,actionType:e.action.type},()=>ee(`vite.action`,()=>ce(e,t)))}finally{z.delete(n)}};t.ws.on(s.statusRequest,Q),t.ws.on(s.action,le),t.ws.on(s.diagnostic,$),O=(async()=>{let s,u;try{if(N=!0,s=await ae({cwd:o,env:g,requiredResources:[`managed-dev`]}),s){if(F){s.close();return}await Y(s);return}let d=await i({cwd:o});if(F)return;if(u=await v({config:d,cwd:o,env:g,onRestart:()=>{l=!0},onFlutterRestart:async()=>{let i=g[c];if(i)try{await e(r.dirname(i),{recursive:!0}),await n(i,`${a()}\n`,{mode:384})}catch(e){let n=e instanceof Error?e.message:String(e);t.config.logger.error(`Coreframe Flutter restart request failed: ${n}`,{error:e instanceof Error?e:void 0})}},onStatusChange:e=>{G=e,R()}}),S=u,G=u.getStatus(),F){S=void 0,await u.close();return}if(await re(o,u),F){S=void 0,await y(o,u);return}P=!0}catch(e){if(I?.event(`vite.initialization-failed`,h(e),`error`),s&&C===s&&(K(),s.close()),S===u&&(S=void 0),!F){let n=e instanceof Error?e.message:String(e);G={message:n,mode:`error`,warnings:[n]},t.config.logger.error(`Coreframe managed development initialization failed: ${n}`,{error:e instanceof Error?e:void 0}),R()}}finally{N=!1}})(),t.httpServer?.once(`close`,()=>{t.ws.off(s.statusRequest,Q),t.ws.off(s.action,le),t.ws.off(s.diagnostic,$),q()})},async closeBundle(){await q()}}}async function re(e,t){await b(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 y(e,t){await b(e,async e=>{e.session===t&&(e.session=void 0),await t.close()})}async function b(e,t){let n=_.get(e);n||(n={transition:Promise.resolve()},_.set(e,n));let r=n.transition,i;n.transition=new Promise(e=>{i=()=>e()}),await r;try{await t(n)}finally{i()}}function x(e){return e instanceof Error?e.message:String(e)}function ie(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.retryable===!0||t.code===`LEASE_EXPIRED`||t.code===`SUPERVISOR_STOPPING`}export{v as t};
@@ -1 +1 @@
1
- import{t as e}from"../managed-dev-BDIXl7-X.js";export{e as coreframeManagedDevPlugin};
1
+ import{t as e}from"../managed-dev-BVexxk4a.js";export{e as coreframeManagedDevPlugin};
@@ -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{t as c}from"../managed-dev-BDIXl7-X.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{coreframeFlutterDevToolsPlugin as o}from"./flutter-devtools.js";import{t as s}from"../icons-vb_lG-av.js";import{t as c}from"../managed-dev-BVexxk4a.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};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coreframe/vite",
3
- "version": "0.2.63",
3
+ "version": "0.2.64",
4
4
  "description": "Vite plugins and build integrations for Coreframe apps",
5
5
  "repository": {
6
6
  "type": "git",
@@ -57,11 +57,11 @@
57
57
  "obug": "^2.1.3",
58
58
  "unplugin": "^2.3.11",
59
59
  "vite-plugin-hashed-favicons": "^2.1.1",
60
+ "@coreframe/config": "^0.1.19",
60
61
  "@coreframe/assets": "^0.1.22",
61
62
  "@coreframe/dashboard": "^0.3.31",
62
- "@coreframe/config": "^0.1.19",
63
+ "@coreframe/dev": "^0.1.43",
63
64
  "@coreframe/dev-contracts": "^0.1.15",
64
- "@coreframe/dev": "^0.1.42",
65
65
  "@coreframe/flutter-js": "^0.1.33",
66
66
  "@coreframe/flutter-tools": "^0.1.31",
67
67
  "@coreframe/lib": "^0.2.17"