devchain-cli 0.10.1 → 0.10.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
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ReviewsPage-C209GLQG.js","assets/useReviewSubscription-Dcabsa78.js","assets/useReviewSubscription-T3uj2-aP.css","assets/ReviewDetailPage-CZZQtaY7.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ReviewsPage-DCDiMjwZ.js","assets/useReviewSubscription-D_vmMkNu.js","assets/useReviewSubscription-T3uj2-aP.css","assets/ReviewDetailPage-CvHhaFJw.js"])))=>i.map(i=>d[i]);
2
2
  var _j=e=>{throw TypeError(e)};var iE=(e,t,i)=>t.has(e)||_j("Cannot "+i);var he=(e,t,i)=>(iE(e,t,"read from private field"),i?i.call(e):t.get(e)),qt=(e,t,i)=>t.has(e)?_j("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,i),bt=(e,t,i,r)=>(iE(e,t,"write to private field"),r?r.call(e,i):t.set(e,i),i),ys=(e,t,i)=>(iE(e,t,"access private method"),i);var gb=(e,t,i,r)=>({set _(o){bt(e,t,o,i)},get _(){return he(e,t,r)}});function LH(e,t){for(var i=0;i<t.length;i++){const r=t[i];if(typeof r!="string"&&!Array.isArray(r)){for(const o in r)if(o!=="default"&&!(o in e)){const c=Object.getOwnPropertyDescriptor(r,o);c&&Object.defineProperty(e,o,c.get?c:{enumerable:!0,get:()=>r[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const c of o)if(c.type==="childList")for(const u of c.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&r(u)}).observe(document,{childList:!0,subtree:!0});function i(o){const c={};return o.integrity&&(c.integrity=o.integrity),o.referrerPolicy&&(c.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?c.credentials="include":o.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function r(o){if(o.ep)return;o.ep=!0;const c=i(o);fetch(o.href,c)}})();function WN(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function OH(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var i=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};i.prototype=t.prototype}else i={};return Object.defineProperty(i,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(i,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}),i}var G6={exports:{}},YE={},Y6={exports:{}},dN={exports:{}};dN.exports;(function(e,t){/**
3
3
  * @license React
4
4
  * react.development.js
@@ -234,7 +234,7 @@ Check the top-level render call using <`+Ue+">.")}return Ce}}function as(te,Ce){
234
234
  <%s {...props} />
235
235
  React keys must be passed directly to JSX without using spread:
236
236
  let props = %s;
237
- <%s key={someKey} {...props} />`,re,Ss,Ve,Ss),ni[Ss+re]=!0}}return te===r?Xs(de):ai(de),de}}function pi(te,Ce,Ue){return ui(te,Ce,Ue,!0)}function Ys(te,Ce,Ue){return ui(te,Ce,Ue,!1)}var Z=Ys,fe=pi;Yb.Fragment=r,Yb.jsx=Z,Yb.jsxs=fe})();y7.exports=Yb;var ae=y7.exports,E7=f.createContext(void 0),zs=e=>{const t=f.useContext(E7);if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},MK=({client:e,children:t})=>(f.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),ae.jsx(E7.Provider,{value:e,children:t})),D7=f.createContext(!1),S7=()=>f.useContext(D7);D7.Provider;function LK(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var OK=f.createContext(LK()),_7=()=>f.useContext(OK),C7=(e,t)=>{(e.suspense||e.throwOnError||e.experimental_prefetchInRender)&&(t.isReset()||(e.retryOnMount=!1))},j7=e=>{f.useEffect(()=>{e.clearReset()},[e])},P7=({result:e,errorResetBoundary:t,throwOnError:i,query:r,suspense:o})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(o&&e.data===void 0||f7(i,[e.error,r])),k7=e=>{if(e.suspense){const i=o=>o==="static"?o:Math.max(o??1e3,1e3),r=e.staleTime;e.staleTime=typeof r=="function"?(...o)=>i(r(...o)):i(r),typeof e.gcTime=="number"&&(e.gcTime=Math.max(e.gcTime,1e3))}},V7=(e,t)=>e.isLoading&&e.isFetching&&!t,ND=(e,t)=>(e==null?void 0:e.suspense)&&t.isPending,vN=(e,t,i)=>t.fetchOptimistic(e).catch(()=>{i.clearReset()});function IK({queries:e,...t},i){const r=zs(),o=S7(),c=_7(),u=f.useMemo(()=>e.map(D=>{const b=r.defaultQueryOptions(D);return b._optimisticResults=o?"isRestoring":"optimistic",b}),[e,r,o]);u.forEach(D=>{k7(D),C7(D,c)}),j7(c);const[l]=f.useState(()=>new TK(r,u,t)),[d,h,g]=l.getOptimisticResult(u,t.combine),m=!o&&t.subscribed!==!1;f.useSyncExternalStore(f.useCallback(D=>m?l.subscribe(Ji.batchCalls(D)):Za,[l,m]),()=>l.getCurrentResult(),()=>l.getCurrentResult()),f.useEffect(()=>{l.setQueries(u,t)},[u,t,l]);const E=d.some((D,b)=>ND(u[b],D))?d.flatMap((D,b)=>{const w=u[b];if(w){const N=new BS(r,w);if(ND(w,D))return vN(w,N,c);V7(D,o)&&vN(w,N,c)}return[]}):[];if(E.length>0)throw Promise.all(E);const C=d.find((D,b)=>{const w=u[b];return w&&P7({result:D,errorResetBoundary:c,throwOnError:w.throwOnError,query:r.getQueryCache().get(w.queryHash),suspense:w.suspense})});if(C!=null&&C.error)throw C.error;return h(g())}function FK(e,t,i){var m,y,E,C,D;if(typeof e!="object"||Array.isArray(e))throw new Error('Bad argument type. Starting with v5, only the "Object" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object');const r=S7(),o=_7(),c=zs(),u=c.defaultQueryOptions(e);(y=(m=c.getDefaultOptions().queries)==null?void 0:m._experimental_beforeQuery)==null||y.call(m,u),u.queryFn||console.error(`[${u.queryHash}]: No queryFn was passed as an option, and no default queryFn was found. The queryFn parameter is only optional when using a default queryFn. More info here: https://tanstack.com/query/latest/docs/framework/react/guides/default-query-function`),u._optimisticResults=r?"isRestoring":"optimistic",k7(u),C7(u,o),j7(o);const l=!c.getQueryCache().get(u.queryHash),[d]=f.useState(()=>new t(c,u)),h=d.getOptimisticResult(u),g=!r&&e.subscribed!==!1;if(f.useSyncExternalStore(f.useCallback(b=>{const w=g?d.subscribe(Ji.batchCalls(b)):Za;return d.updateResult(),w},[d,g]),()=>d.getCurrentResult(),()=>d.getCurrentResult()),f.useEffect(()=>{d.setOptions(u)},[u,d]),ND(u,h))throw vN(u,d,o);if(P7({result:h,errorResetBoundary:o,throwOnError:u.throwOnError,query:c.getQueryCache().get(u.queryHash),suspense:u.suspense}))throw h.error;if((C=(E=c.getDefaultOptions().queries)==null?void 0:E._experimental_afterQuery)==null||C.call(E,u,h),u.experimental_prefetchInRender&&!Ou&&V7(h,r)){const b=l?vN(u,d,o):(D=c.getQueryCache().get(u.queryHash))==null?void 0:D.promise;b==null||b.catch(Za).finally(()=>{d.updateResult()})}return u.notifyOnChangeProps?h:d.trackResult(h)}function st(e,t){return FK(e,BS)}function yt(e,t){const i=zs(),[r]=f.useState(()=>new kK(i,e));f.useEffect(()=>{r.setOptions(e)},[r,e]);const o=f.useSyncExternalStore(f.useCallback(u=>r.subscribe(Ji.batchCalls(u)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),c=f.useCallback((u,l)=>{r.mutate(u,l).catch(Za)},[r]);if(o.error&&f7(r.options.throwOnError,[o.error]))throw o.error;return{...o,mutate:c,mutateAsync:o.mutate}}class Bm extends Error{constructor({message:t,status:i,conflicts:r=[],details:o=null}){super(t),this.name="WorktreeApiError",this.status=i,this.conflicts=r,this.details=o}}async function Fu(e){var u;const t=new URLSearchParams,i=(u=e==null?void 0:e.ownerProjectId)==null?void 0:u.trim();i&&t.set("ownerProjectId",i);const r=t.size>0?`/api/worktrees?${t.toString()}`:"/api/worktrees",o=await fetch(r,{headers:{accept:"application/json"}});if(!o.ok)throw new Error(`Failed to load worktrees: HTTP ${o.status}`);const c=await o.json();if(!Array.isArray(c))throw new Error("Invalid worktree response payload");return c}async function Uj(e){var u;const t=new URLSearchParams,i=(u=e==null?void 0:e.ownerProjectId)==null?void 0:u.trim();i&&t.set("ownerProjectId",i);const r=t.size>0?`/api/worktrees/overview?${t.toString()}`:"/api/worktrees/overview",o=await fetch(r,{headers:{accept:"application/json"}});if(!o.ok)throw new Error(`Failed to load worktree overview: HTTP ${o.status}`);const c=await o.json();if(!Array.isArray(c))throw new Error("Invalid worktree overview payload");return c}async function Wj(e){var u;const t=new URLSearchParams;t.set("name","orchestrator.worktree.activity"),t.set("limit","20");const i=(u=e==null?void 0:e.ownerProjectId)==null?void 0:u.trim();i&&t.set("ownerProjectId",i);const r=await fetch(`/api/events?${t.toString()}`,{headers:{accept:"application/json"}});if(!r.ok)throw new Error(`Failed to load worktree activity: HTTP ${r.status}`);const o=await r.json(),c=o&&typeof o=="object"&&Array.isArray(o.items)?o.items??[]:null;if(!c)throw new Error("Invalid worktree activity payload");return c.map(l=>{if(!l||typeof l!="object"||Array.isArray(l))return null;const d=l;if(typeof d.id!="string"||typeof d.publishedAt!="string")return null;const h=d.payload&&typeof d.payload=="object"&&!Array.isArray(d.payload)?d.payload:{},g=typeof h.type=="string"?h.type:"started",m=typeof h.worktreeName=="string"&&h.worktreeName.trim().length>0?h.worktreeName.trim():"Unknown worktree",y=typeof h.message=="string"&&h.message.trim().length>0?h.message.trim():`Worktree '${m}' updated`;return{id:d.id,type:g,message:y,worktreeId:typeof h.worktreeId=="string"?h.worktreeId.trim():"",worktreeName:m,publishedAt:d.publishedAt}}).filter(l=>l!==null)}async function BK(e){const t=await fetch("/api/worktrees",{method:"POST",headers:{"content-type":"application/json",accept:"application/json"},body:JSON.stringify(e)});if(!t.ok)throw await If(t);return await t.json()}async function $K(e){const t=await fetch(`/api/worktrees/${encodeURIComponent(e)}/stop`,{method:"POST",headers:{accept:"application/json"}});if(!t.ok)throw await If(t);return await t.json()}async function zK(e,t){const i=(t==null?void 0:t.deleteBranch)??!0,r=new URLSearchParams({deleteBranch:i?"true":"false"}).toString(),o=await fetch(`/api/worktrees/${encodeURIComponent(e)}?${r}`,{method:"DELETE",headers:{accept:"application/json"}});if(!o.ok)throw await If(o)}async function UK(e){const t=await fetch(`/api/worktrees/${encodeURIComponent(e)}/merge/preview`,{method:"POST",headers:{accept:"application/json"}});if(!t.ok)throw await If(t);return await t.json()}async function WK(e){const t=await fetch(`/api/worktrees/${encodeURIComponent(e)}/merge`,{method:"POST",headers:{accept:"application/json"}});if(!t.ok)throw await If(t);return await t.json()}async function HK(){const e=await fetch("/api/branches",{headers:{accept:"application/json"}});if(!e.ok)throw new Error(`Failed to load branches: HTTP ${e.status}`);const t=await e.json();if(!t||typeof t!="object"||!Array.isArray(t.branches))throw new Error("Invalid branches response payload");return[...new Set(t.branches)].filter(i=>typeof i=="string"&&i.trim().length>0).map(i=>i.trim()).sort((i,r)=>i.localeCompare(r))}async function qK(){const e=await fetch("/api/templates",{headers:{accept:"application/json"}});if(!e.ok)throw new Error(`Failed to load templates: HTTP ${e.status}`);const t=await e.json(),i=Array.isArray(t)?t:t&&typeof t=="object"&&Array.isArray(t.templates)?t.templates:null;if(!i)throw new Error("Invalid templates response payload");const r=i.map(o=>{var u;const c=o.slug??o.id;return c?{slug:c,name:o.name??((u=o.fileName)==null?void 0:u.replace(/\.json$/i,""))??c}:null}).filter(o=>!!o);if(r.length===0)throw new Error("No templates available");return r}async function KK(e){const t=await fetch(`/api/templates/${encodeURIComponent(e)}`,{headers:{accept:"application/json"}});if(!t.ok)throw new Error(`Failed to load template: HTTP ${t.status}`);return await t.json()}async function If(e){const t=`Request failed with HTTP ${e.status}`;let i;try{i=(await e.text()).trim()}catch{return new Bm({message:t,status:e.status})}if(i.length===0)return new Bm({message:t,status:e.status});let r;try{r=JSON.parse(i)}catch{return new Bm({message:i,status:e.status})}if(!r||typeof r!="object"||Array.isArray(r))return new Bm({message:i,status:e.status});const o=r,c=typeof o.message=="string"&&o.message.trim().length>0?o.message.trim():Array.isArray(o.message)&&o.message.length>0?String(o.message[0]??t):t,u=Array.isArray(o.conflicts)?o.conflicts.map(l=>{if(!l||typeof l!="object")return null;const d=l;return typeof d.file!="string"||d.file.trim().length===0?null:{file:d.file.trim(),type:typeof d.type=="string"?d.type:"merge"}}).filter(l=>l!==null):[];return new Bm({message:c,status:e.status,conflicts:u,details:typeof o.details=="string"?o.details:null})}const zS=["/api/worktrees","/api/templates","/api/runtime","/api/registry"],xD="devchain:worktree-proxy-unavailable";function T7(e){var t;return e||(typeof window<"u"&&((t=window.location)!=null&&t.origin)?window.location.origin:"http://localhost")}function GK(e){const t=e.trim();return t?t.endsWith("/")?t.slice(0,-1):t:""}function YK(e){return/^[a-zA-Z][a-zA-Z\d+\-.]*:/.test(e)||e.startsWith("//")}function QK(e){return e==="/api"||e.startsWith("/api/")}function XK(e){return typeof e=="string"?e:typeof URL<"u"&&e instanceof URL?e.toString():typeof Request<"u"&&e instanceof Request?e.url:String(e)}function JK(e){const t=e.match(/^\/wt\/([^/]+)/);if(!t||typeof t[1]!="string")return null;try{return decodeURIComponent(t[1])}catch{return t[1]}}async function ZK(e){if(!(e.headers.get("content-type")??"").toLowerCase().includes("application/json"))return null;try{const i=await e.clone().json();return!i||typeof i!="object"||Array.isArray(i)?null:i}catch{return null}}async function eG(e,t,i){if(typeof window>"u"||e.status!==503&&e.status!==404)return;let r;try{r=new URL(t,i)}catch{return}const o=JK(r.pathname);if(!o)return;const c=await ZK(e),u=typeof(c==null?void 0:c.message)=="string"?c.message:null,l=typeof(c==null?void 0:c.worktreeName)=="string"?c.worktreeName:o;window.dispatchEvent(new CustomEvent(xD,{detail:{statusCode:e.status,worktreeName:l,message:u,requestUrl:r.pathname+r.search}}))}function tG(e,t){return t.some(i=>e===i||e.startsWith(`${i}/`))}function sG(e,t,i,r){if(typeof e=="string")return oE(e,{apiBase:t,origin:i,mainInstanceApiPrefixes:r});if(typeof URL<"u"&&e instanceof URL){const o=oE(e.toString(),{apiBase:t,origin:i,mainInstanceApiPrefixes:r});return o===e.toString()?e:new URL(o,i)}if(typeof Request<"u"&&e instanceof Request){const o=oE(e.url,{apiBase:t,origin:i,mainInstanceApiPrefixes:r});return o===e.url?e:new Request(o,e)}return e}function oE(e,t){const i=GK(t.apiBase);if(!i)return e;const r=T7(t.origin),o=t.mainInstanceApiPrefixes??zS;let c;try{c=new URL(e,r)}catch{return e}if(c.origin!==r)return e;const{pathname:u,search:l,hash:d}=c;if(u.startsWith("/wt/")||!QK(u)||tG(u,o))return e;const h=`${i}${u}`;return YK(e)?(c.pathname=h,c.toString()):`${h}${l}${d}`}function iG(e){if(typeof window>"u"||typeof window.fetch!="function")return()=>{};const t=T7(e.origin),i=e.mainInstanceApiPrefixes??zS,r=window.fetch,o=window.fetch.bind(window),c=async(u,l)=>{const d=sG(u,e.getApiBase(),t,i),h=XK(d),g=await o(d,l);return eG(g,h,t),g};return window.fetch=c,()=>{window.fetch===c&&(window.fetch=r)}}const jo=Object.create(null);jo.open="0";jo.close="1";jo.ping="2";jo.pong="3";jo.message="4";jo.upgrade="5";jo.noop="6";const Qb=Object.create(null);Object.keys(jo).forEach(e=>{Qb[jo[e]]=e});const wD={type:"error",data:"parser error"},R7=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",A7=typeof ArrayBuffer=="function",M7=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,US=({type:e,data:t},i,r)=>R7&&t instanceof Blob?i?r(t):Hj(t,r):A7&&(t instanceof ArrayBuffer||M7(t))?i?r(t):Hj(new Blob([t]),r):r(jo[e]+(t||"")),Hj=(e,t)=>{const i=new FileReader;return i.onload=function(){const r=i.result.split(",")[1];t("b"+(r||""))},i.readAsDataURL(e)};function qj(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let lE;function aG(e,t){if(R7&&e.data instanceof Blob)return e.data.arrayBuffer().then(qj).then(t);if(A7&&(e.data instanceof ArrayBuffer||M7(e.data)))return t(qj(e.data));US(e,!1,i=>{lE||(lE=new TextEncoder),t(lE.encode(i))})}const Kj="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Xm=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e<Kj.length;e++)Xm[Kj.charCodeAt(e)]=e;const rG=e=>{let t=e.length*.75,i=e.length,r,o=0,c,u,l,d;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);const h=new ArrayBuffer(t),g=new Uint8Array(h);for(r=0;r<i;r+=4)c=Xm[e.charCodeAt(r)],u=Xm[e.charCodeAt(r+1)],l=Xm[e.charCodeAt(r+2)],d=Xm[e.charCodeAt(r+3)],g[o++]=c<<2|u>>4,g[o++]=(u&15)<<4|l>>2,g[o++]=(l&3)<<6|d&63;return h},nG=typeof ArrayBuffer=="function",WS=(e,t)=>{if(typeof e!="string")return{type:"message",data:L7(e,t)};const i=e.charAt(0);return i==="b"?{type:"message",data:oG(e.substring(1),t)}:Qb[i]?e.length>1?{type:Qb[i],data:e.substring(1)}:{type:Qb[i]}:wD},oG=(e,t)=>{if(nG){const i=rG(e);return L7(i,t)}else return{base64:!0,data:e}},L7=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},O7="",lG=(e,t)=>{const i=e.length,r=new Array(i);let o=0;e.forEach((c,u)=>{US(c,!1,l=>{r[u]=l,++o===i&&t(r.join(O7))})})},cG=(e,t)=>{const i=e.split(O7),r=[];for(let o=0;o<i.length;o++){const c=WS(i[o],t);if(r.push(c),c.type==="error")break}return r};function uG(){return new TransformStream({transform(e,t){aG(e,i=>{const r=i.length;let o;if(r<126)o=new Uint8Array(1),new DataView(o.buffer).setUint8(0,r);else if(r<65536){o=new Uint8Array(3);const c=new DataView(o.buffer);c.setUint8(0,126),c.setUint16(1,r)}else{o=new Uint8Array(9);const c=new DataView(o.buffer);c.setUint8(0,127),c.setBigUint64(1,BigInt(r))}e.data&&typeof e.data!="string"&&(o[0]|=128),t.enqueue(o),t.enqueue(i)})}})}let cE;function xb(e){return e.reduce((t,i)=>t+i.length,0)}function wb(e,t){if(e[0].length===t)return e.shift();const i=new Uint8Array(t);let r=0;for(let o=0;o<t;o++)i[o]=e[0][r++],r===e[0].length&&(e.shift(),r=0);return e.length&&r<e[0].length&&(e[0]=e[0].slice(r)),i}function pG(e,t){cE||(cE=new TextDecoder);const i=[];let r=0,o=-1,c=!1;return new TransformStream({transform(u,l){for(i.push(u);;){if(r===0){if(xb(i)<1)break;const d=wb(i,1);c=(d[0]&128)===128,o=d[0]&127,o<126?r=3:o===126?r=1:r=2}else if(r===1){if(xb(i)<2)break;const d=wb(i,2);o=new DataView(d.buffer,d.byteOffset,d.length).getUint16(0),r=3}else if(r===2){if(xb(i)<8)break;const d=wb(i,8),h=new DataView(d.buffer,d.byteOffset,d.length),g=h.getUint32(0);if(g>Math.pow(2,21)-1){l.enqueue(wD);break}o=g*Math.pow(2,32)+h.getUint32(4),r=3}else{if(xb(i)<o)break;const d=wb(i,o);l.enqueue(WS(c?d:cE.decode(d),t)),r=0}if(o===0||o>e){l.enqueue(wD);break}}}})}const I7=4;function ha(e){if(e)return dG(e)}function dG(e){for(var t in ha.prototype)e[t]=ha.prototype[t];return e}ha.prototype.on=ha.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};ha.prototype.once=function(e,t){function i(){this.off(e,i),t.apply(this,arguments)}return i.fn=t,this.on(e,i),this};ha.prototype.off=ha.prototype.removeListener=ha.prototype.removeAllListeners=ha.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var i=this._callbacks["$"+e];if(!i)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var r,o=0;o<i.length;o++)if(r=i[o],r===t||r.fn===t){i.splice(o,1);break}return i.length===0&&delete this._callbacks["$"+e],this};ha.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),i=this._callbacks["$"+e],r=1;r<arguments.length;r++)t[r-1]=arguments[r];if(i){i=i.slice(0);for(var r=0,o=i.length;r<o;++r)i[r].apply(this,t)}return this};ha.prototype.emitReserved=ha.prototype.emit;ha.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]};ha.prototype.hasListeners=function(e){return!!this.listeners(e).length};const KN=typeof Promise=="function"&&typeof Promise.resolve=="function"?t=>Promise.resolve().then(t):(t,i)=>i(t,0),Nn=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),hG="arraybuffer";function F7(e,...t){return t.reduce((i,r)=>(e.hasOwnProperty(r)&&(i[r]=e[r]),i),{})}const mG=Nn.setTimeout,fG=Nn.clearTimeout;function GN(e,t){t.useNativeTimers?(e.setTimeoutFn=mG.bind(Nn),e.clearTimeoutFn=fG.bind(Nn)):(e.setTimeoutFn=Nn.setTimeout.bind(Nn),e.clearTimeoutFn=Nn.clearTimeout.bind(Nn))}const gG=1.33;function vG(e){return typeof e=="string"?bG(e):Math.ceil((e.byteLength||e.size)*gG)}function bG(e){let t=0,i=0;for(let r=0,o=e.length;r<o;r++)t=e.charCodeAt(r),t<128?i+=1:t<2048?i+=2:t<55296||t>=57344?i+=3:(r++,i+=4);return i}function B7(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function NG(e){let t="";for(let i in e)e.hasOwnProperty(i)&&(t.length&&(t+="&"),t+=encodeURIComponent(i)+"="+encodeURIComponent(e[i]));return t}function xG(e){let t={},i=e.split("&");for(let r=0,o=i.length;r<o;r++){let c=i[r].split("=");t[decodeURIComponent(c[0])]=decodeURIComponent(c[1])}return t}class wG extends Error{constructor(t,i,r){super(t),this.description=i,this.context=r,this.type="TransportError"}}class HS extends ha{constructor(t){super(),this.writable=!1,GN(this,t),this.opts=t,this.query=t.query,this.socket=t.socket,this.supportsBinary=!t.forceBase64}onError(t,i,r){return super.emitReserved("error",new wG(t,i,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(t){this.readyState==="open"&&this.write(t)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(t){const i=WS(t,this.socket.binaryType);this.onPacket(i)}onPacket(t){super.emitReserved("packet",t)}onClose(t){this.readyState="closed",super.emitReserved("close",t)}pause(t){}createUri(t,i={}){return t+"://"+this._hostname()+this._port()+this.opts.path+this._query(i)}_hostname(){const t=this.opts.hostname;return t.indexOf(":")===-1?t:"["+t+"]"}_port(){return this.opts.port&&(this.opts.secure&&+(this.opts.port!==443)||!this.opts.secure&&Number(this.opts.port)!==80)?":"+this.opts.port:""}_query(t){const i=NG(t);return i.length?"?"+i:""}}class yG extends HS{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(t){this.readyState="pausing";const i=()=>{this.readyState="paused",t()};if(this._polling||!this.writable){let r=0;this._polling&&(r++,this.once("pollComplete",function(){--r||i()})),this.writable||(r++,this.once("drain",function(){--r||i()}))}else i()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){const i=r=>{if(this.readyState==="opening"&&r.type==="open"&&this.onOpen(),r.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(r)};cG(t,this.socket.binaryType).forEach(i),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const t=()=>{this.write([{type:"close"}])};this.readyState==="open"?t():this.once("open",t)}write(t){this.writable=!1,lG(t,i=>{this.doWrite(i,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const t=this.opts.secure?"https":"http",i=this.query||{};return this.opts.timestampRequests!==!1&&(i[this.opts.timestampParam]=B7()),!this.supportsBinary&&!i.sid&&(i.b64=1),this.createUri(t,i)}}let $7=!1;try{$7=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const EG=$7;function DG(){}class SG extends yG{constructor(t){if(super(t),typeof location<"u"){const i=location.protocol==="https:";let r=location.port;r||(r=i?"443":"80"),this.xd=typeof location<"u"&&t.hostname!==location.hostname||r!==t.port}}doWrite(t,i){const r=this.request({method:"POST",data:t});r.on("success",i),r.on("error",(o,c)=>{this.onError("xhr post error",o,c)})}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(i,r)=>{this.onError("xhr poll error",i,r)}),this.pollXhr=t}}let fd=class Xb extends ha{constructor(t,i,r){super(),this.createRequest=t,GN(this,r),this._opts=r,this._method=r.method||"GET",this._uri=i,this._data=r.data!==void 0?r.data:null,this._create()}_create(){var t;const i=F7(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");i.xdomain=!!this._opts.xd;const r=this._xhr=this.createRequest(i);try{r.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let o in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(o)&&r.setRequestHeader(o,this._opts.extraHeaders[o])}}catch{}if(this._method==="POST")try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{r.setRequestHeader("Accept","*/*")}catch{}(t=this._opts.cookieJar)===null||t===void 0||t.addCookies(r),"withCredentials"in r&&(r.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(r.timeout=this._opts.requestTimeout),r.onreadystatechange=()=>{var o;r.readyState===3&&((o=this._opts.cookieJar)===null||o===void 0||o.parseCookies(r.getResponseHeader("set-cookie"))),r.readyState===4&&(r.status===200||r.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof r.status=="number"?r.status:0)},0))},r.send(this._data)}catch(o){this.setTimeoutFn(()=>{this._onError(o)},0);return}typeof document<"u"&&(this._index=Xb.requestsCount++,Xb.requests[this._index]=this)}_onError(t){this.emitReserved("error",t,this._xhr),this._cleanup(!0)}_cleanup(t){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=DG,t)try{this._xhr.abort()}catch{}typeof document<"u"&&delete Xb.requests[this._index],this._xhr=null}}_onLoad(){const t=this._xhr.responseText;t!==null&&(this.emitReserved("data",t),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}};fd.requestsCount=0;fd.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",Gj);else if(typeof addEventListener=="function"){const e="onpagehide"in Nn?"pagehide":"unload";addEventListener(e,Gj,!1)}}function Gj(){for(let e in fd.requests)fd.requests.hasOwnProperty(e)&&fd.requests[e].abort()}const _G=function(){const e=z7({xdomain:!1});return e&&e.responseType!==null}();class CG extends SG{constructor(t){super(t);const i=t&&t.forceBase64;this.supportsBinary=_G&&!i}request(t={}){return Object.assign(t,{xd:this.xd},this.opts),new fd(z7,this.uri(),t)}}function z7(e){const t=e.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!t||EG))return new XMLHttpRequest}catch{}if(!t)try{return new Nn[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const U7=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class jG extends HS{get name(){return"websocket"}doOpen(){const t=this.uri(),i=this.opts.protocols,r=U7?{}:F7(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,i,r)}catch(o){return this.emitReserved("error",o)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let i=0;i<t.length;i++){const r=t[i],o=i===t.length-1;US(r,this.supportsBinary,c=>{try{this.doWrite(r,c)}catch{}o&&KN(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",i=this.query||{};return this.opts.timestampRequests&&(i[this.opts.timestampParam]=B7()),this.supportsBinary||(i.b64=1),this.createUri(t,i)}}const uE=Nn.WebSocket||Nn.MozWebSocket;class PG extends jG{createSocket(t,i,r){return U7?new uE(t,i,r):i?new uE(t,i):new uE(t)}doWrite(t,i){this.ws.send(i)}}class kG extends HS{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(t){return this.emitReserved("error",t)}this._transport.closed.then(()=>{this.onClose()}).catch(t=>{this.onError("webtransport error",t)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(t=>{const i=pG(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=t.readable.pipeThrough(i).getReader(),o=uG();o.readable.pipeTo(t.writable),this._writer=o.writable.getWriter();const c=()=>{r.read().then(({done:l,value:d})=>{l||(this.onPacket(d),c())}).catch(l=>{})};c();const u={type:"open"};this.query.sid&&(u.data=`{"sid":"${this.query.sid}"}`),this._writer.write(u).then(()=>this.onOpen())})})}write(t){this.writable=!1;for(let i=0;i<t.length;i++){const r=t[i],o=i===t.length-1;this._writer.write(r).then(()=>{o&&KN(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var t;(t=this._transport)===null||t===void 0||t.close()}}const VG={websocket:PG,webtransport:kG,polling:CG},TG=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,RG=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function yD(e){if(e.length>8e3)throw"URI too long";const t=e,i=e.indexOf("["),r=e.indexOf("]");i!=-1&&r!=-1&&(e=e.substring(0,i)+e.substring(i,r).replace(/:/g,";")+e.substring(r,e.length));let o=TG.exec(e||""),c={},u=14;for(;u--;)c[RG[u]]=o[u]||"";return i!=-1&&r!=-1&&(c.source=t,c.host=c.host.substring(1,c.host.length-1).replace(/;/g,":"),c.authority=c.authority.replace("[","").replace("]","").replace(/;/g,":"),c.ipv6uri=!0),c.pathNames=AG(c,c.path),c.queryKey=MG(c,c.query),c}function AG(e,t){const i=/\/{2,9}/g,r=t.replace(i,"/").split("/");return(t.slice(0,1)=="/"||t.length===0)&&r.splice(0,1),t.slice(-1)=="/"&&r.splice(r.length-1,1),r}function MG(e,t){const i={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,o,c){o&&(i[o]=c)}),i}const ED=typeof addEventListener=="function"&&typeof removeEventListener=="function",Jb=[];ED&&addEventListener("offline",()=>{Jb.forEach(e=>e())},!1);class yc extends ha{constructor(t,i){if(super(),this.binaryType=hG,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,t&&typeof t=="object"&&(i=t,t=null),t){const r=yD(t);i.hostname=r.host,i.secure=r.protocol==="https"||r.protocol==="wss",i.port=r.port,r.query&&(i.query=r.query)}else i.host&&(i.hostname=yD(i.host).host);GN(this,i),this.secure=i.secure!=null?i.secure:typeof location<"u"&&location.protocol==="https:",i.hostname&&!i.port&&(i.port=this.secure?"443":"80"),this.hostname=i.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=i.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},i.transports.forEach(r=>{const o=r.prototype.name;this.transports.push(o),this._transportsByName[o]=r}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},i),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=xG(this.opts.query)),ED&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Jb.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(t){const i=Object.assign({},this.opts.query);i.EIO=I7,i.transport=t,this.id&&(i.sid=this.id);const r=Object.assign({},this.opts,{query:i,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new this._transportsByName[t](r)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const t=this.opts.rememberUpgrade&&yc.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const i=this.createTransport(t);i.open(),this.setTransport(i)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",i=>this._onClose("transport close",i))}onOpen(){this.readyState="open",yc.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",t),this.emitReserved("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const i=new Error("server error");i.code=t.data,this._onError(i);break;case"message":this.emitReserved("data",t.data),this.emitReserved("message",t.data);break}}onHandshake(t){this.emitReserved("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this._pingInterval=t.pingInterval,this._pingTimeout=t.pingTimeout,this._maxPayload=t.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const t=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+t,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},t),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this._getWritablePackets();this.transport.send(t),this._prevBufferLen=t.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let i=1;for(let r=0;r<this.writeBuffer.length;r++){const o=this.writeBuffer[r].data;if(o&&(i+=vG(o)),r>0&&i>this._maxPayload)return this.writeBuffer.slice(0,r);i+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const t=Date.now()>this._pingTimeoutTime;return t&&(this._pingTimeoutTime=0,KN(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),t}write(t,i,r){return this._sendPacket("message",t,i,r),this}send(t,i,r){return this._sendPacket("message",t,i,r),this}_sendPacket(t,i,r,o){if(typeof i=="function"&&(o=i,i=void 0),typeof r=="function"&&(o=r,r=null),this.readyState==="closing"||this.readyState==="closed")return;r=r||{},r.compress=r.compress!==!1;const c={type:t,data:i,options:r};this.emitReserved("packetCreate",c),this.writeBuffer.push(c),o&&this.once("flush",o),this.flush()}close(){const t=()=>{this._onClose("forced close"),this.transport.close()},i=()=>{this.off("upgrade",i),this.off("upgradeError",i),t()},r=()=>{this.once("upgrade",i),this.once("upgradeError",i)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?r():t()}):this.upgrading?r():t()),this}_onError(t){if(yc.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",t),this._onClose("transport error",t)}_onClose(t,i){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),ED&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const r=Jb.indexOf(this._offlineEventListener);r!==-1&&Jb.splice(r,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,i),this.writeBuffer=[],this._prevBufferLen=0}}}yc.protocol=I7;class LG extends yc{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let t=0;t<this._upgrades.length;t++)this._probe(this._upgrades[t])}_probe(t){let i=this.createTransport(t),r=!1;yc.priorWebsocketSuccess=!1;const o=()=>{r||(i.send([{type:"ping",data:"probe"}]),i.once("packet",m=>{if(!r)if(m.type==="pong"&&m.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",i),!i)return;yc.priorWebsocketSuccess=i.name==="websocket",this.transport.pause(()=>{r||this.readyState!=="closed"&&(g(),this.setTransport(i),i.send([{type:"upgrade"}]),this.emitReserved("upgrade",i),i=null,this.upgrading=!1,this.flush())})}else{const y=new Error("probe error");y.transport=i.name,this.emitReserved("upgradeError",y)}}))};function c(){r||(r=!0,g(),i.close(),i=null)}const u=m=>{const y=new Error("probe error: "+m);y.transport=i.name,c(),this.emitReserved("upgradeError",y)};function l(){u("transport closed")}function d(){u("socket closed")}function h(m){i&&m.name!==i.name&&c()}const g=()=>{i.removeListener("open",o),i.removeListener("error",u),i.removeListener("close",l),this.off("close",d),this.off("upgrading",h)};i.once("open",o),i.once("error",u),i.once("close",l),this.once("close",d),this.once("upgrading",h),this._upgrades.indexOf("webtransport")!==-1&&t!=="webtransport"?this.setTimeoutFn(()=>{r||i.open()},200):i.open()}onHandshake(t){this._upgrades=this._filterUpgrades(t.upgrades),super.onHandshake(t)}_filterUpgrades(t){const i=[];for(let r=0;r<t.length;r++)~this.transports.indexOf(t[r])&&i.push(t[r]);return i}}let OG=class extends LG{constructor(t,i={}){const r=typeof t=="object"?t:i;(!r.transports||r.transports&&typeof r.transports[0]=="string")&&(r.transports=(r.transports||["polling","websocket","webtransport"]).map(o=>VG[o]).filter(o=>!!o)),super(t,r)}};function IG(e,t="",i){let r=e;i=i||typeof location<"u"&&location,e==null&&(e=i.protocol+"//"+i.host),typeof e=="string"&&(e.charAt(0)==="/"&&(e.charAt(1)==="/"?e=i.protocol+e:e=i.host+e),/^(https?|wss?):\/\//.test(e)||(typeof i<"u"?e=i.protocol+"//"+e:e="https://"+e),r=yD(e)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const c=r.host.indexOf(":")!==-1?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+c+":"+r.port+t,r.href=r.protocol+"://"+c+(i&&i.port===r.port?"":":"+r.port),r}const FG=typeof ArrayBuffer=="function",BG=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,W7=Object.prototype.toString,$G=typeof Blob=="function"||typeof Blob<"u"&&W7.call(Blob)==="[object BlobConstructor]",zG=typeof File=="function"||typeof File<"u"&&W7.call(File)==="[object FileConstructor]";function qS(e){return FG&&(e instanceof ArrayBuffer||BG(e))||$G&&e instanceof Blob||zG&&e instanceof File}function Zb(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let i=0,r=e.length;i<r;i++)if(Zb(e[i]))return!0;return!1}if(qS(e))return!0;if(e.toJSON&&typeof e.toJSON=="function"&&arguments.length===1)return Zb(e.toJSON(),!0);for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)&&Zb(e[i]))return!0;return!1}function UG(e){const t=[],i=e.data,r=e;return r.data=DD(i,t),r.attachments=t.length,{packet:r,buffers:t}}function DD(e,t){if(!e)return e;if(qS(e)){const i={_placeholder:!0,num:t.length};return t.push(e),i}else if(Array.isArray(e)){const i=new Array(e.length);for(let r=0;r<e.length;r++)i[r]=DD(e[r],t);return i}else if(typeof e=="object"&&!(e instanceof Date)){const i={};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i[r]=DD(e[r],t));return i}return e}function WG(e,t){return e.data=SD(e.data,t),delete e.attachments,e}function SD(e,t){if(!e)return e;if(e&&e._placeholder===!0){if(typeof e.num=="number"&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}else if(Array.isArray(e))for(let i=0;i<e.length;i++)e[i]=SD(e[i],t);else if(typeof e=="object")for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(e[i]=SD(e[i],t));return e}const HG=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"],qG=5;var li;(function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"})(li||(li={}));class KG{constructor(t){this.replacer=t}encode(t){return(t.type===li.EVENT||t.type===li.ACK)&&Zb(t)?this.encodeAsBinary({type:t.type===li.EVENT?li.BINARY_EVENT:li.BINARY_ACK,nsp:t.nsp,data:t.data,id:t.id}):[this.encodeAsString(t)]}encodeAsString(t){let i=""+t.type;return(t.type===li.BINARY_EVENT||t.type===li.BINARY_ACK)&&(i+=t.attachments+"-"),t.nsp&&t.nsp!=="/"&&(i+=t.nsp+","),t.id!=null&&(i+=t.id),t.data!=null&&(i+=JSON.stringify(t.data,this.replacer)),i}encodeAsBinary(t){const i=UG(t),r=this.encodeAsString(i.packet),o=i.buffers;return o.unshift(r),o}}function Yj(e){return Object.prototype.toString.call(e)==="[object Object]"}class KS extends ha{constructor(t){super(),this.reviver=t}add(t){let i;if(typeof t=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");i=this.decodeString(t);const r=i.type===li.BINARY_EVENT;r||i.type===li.BINARY_ACK?(i.type=r?li.EVENT:li.ACK,this.reconstructor=new GG(i),i.attachments===0&&super.emitReserved("decoded",i)):super.emitReserved("decoded",i)}else if(qS(t)||t.base64)if(this.reconstructor)i=this.reconstructor.takeBinaryData(t),i&&(this.reconstructor=null,super.emitReserved("decoded",i));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+t)}decodeString(t){let i=0;const r={type:Number(t.charAt(0))};if(li[r.type]===void 0)throw new Error("unknown packet type "+r.type);if(r.type===li.BINARY_EVENT||r.type===li.BINARY_ACK){const c=i+1;for(;t.charAt(++i)!=="-"&&i!=t.length;);const u=t.substring(c,i);if(u!=Number(u)||t.charAt(i)!=="-")throw new Error("Illegal attachments");r.attachments=Number(u)}if(t.charAt(i+1)==="/"){const c=i+1;for(;++i&&!(t.charAt(i)===","||i===t.length););r.nsp=t.substring(c,i)}else r.nsp="/";const o=t.charAt(i+1);if(o!==""&&Number(o)==o){const c=i+1;for(;++i;){const u=t.charAt(i);if(u==null||Number(u)!=u){--i;break}if(i===t.length)break}r.id=Number(t.substring(c,i+1))}if(t.charAt(++i)){const c=this.tryParse(t.substr(i));if(KS.isPayloadValid(r.type,c))r.data=c;else throw new Error("invalid payload")}return r}tryParse(t){try{return JSON.parse(t,this.reviver)}catch{return!1}}static isPayloadValid(t,i){switch(t){case li.CONNECT:return Yj(i);case li.DISCONNECT:return i===void 0;case li.CONNECT_ERROR:return typeof i=="string"||Yj(i);case li.EVENT:case li.BINARY_EVENT:return Array.isArray(i)&&(typeof i[0]=="number"||typeof i[0]=="string"&&HG.indexOf(i[0])===-1);case li.ACK:case li.BINARY_ACK:return Array.isArray(i)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class GG{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const i=WG(this.reconPack,this.buffers);return this.finishedReconstruction(),i}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const YG=Object.freeze(Object.defineProperty({__proto__:null,Decoder:KS,Encoder:KG,get PacketType(){return li},protocol:qG},Symbol.toStringTag,{value:"Module"}));function Gn(e,t,i){return e.on(t,i),function(){e.off(t,i)}}const QG=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class H7 extends ha{constructor(t,i,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=t,this.nsp=i,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const t=this.io;this.subs=[Gn(t,"open",this.onopen.bind(this)),Gn(t,"packet",this.onpacket.bind(this)),Gn(t,"error",this.onerror.bind(this)),Gn(t,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...t){return t.unshift("message"),this.emit.apply(this,t),this}emit(t,...i){var r,o,c;if(QG.hasOwnProperty(t))throw new Error('"'+t.toString()+'" is a reserved event name');if(i.unshift(t),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(i),this;const u={type:li.EVENT,data:i};if(u.options={},u.options.compress=this.flags.compress!==!1,typeof i[i.length-1]=="function"){const g=this.ids++,m=i.pop();this._registerAckCallback(g,m),u.id=g}const l=(o=(r=this.io.engine)===null||r===void 0?void 0:r.transport)===null||o===void 0?void 0:o.writable,d=this.connected&&!(!((c=this.io.engine)===null||c===void 0)&&c._hasPingExpired());return this.flags.volatile&&!l||(d?(this.notifyOutgoingListeners(u),this.packet(u)):this.sendBuffer.push(u)),this.flags={},this}_registerAckCallback(t,i){var r;const o=(r=this.flags.timeout)!==null&&r!==void 0?r:this._opts.ackTimeout;if(o===void 0){this.acks[t]=i;return}const c=this.io.setTimeoutFn(()=>{delete this.acks[t];for(let l=0;l<this.sendBuffer.length;l++)this.sendBuffer[l].id===t&&this.sendBuffer.splice(l,1);i.call(this,new Error("operation has timed out"))},o),u=(...l)=>{this.io.clearTimeoutFn(c),i.apply(this,l)};u.withError=!0,this.acks[t]=u}emitWithAck(t,...i){return new Promise((r,o)=>{const c=(u,l)=>u?o(u):r(l);c.withError=!0,i.push(c),this.emit(t,...i)})}_addToQueue(t){let i;typeof t[t.length-1]=="function"&&(i=t.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push((o,...c)=>r!==this._queue[0]?void 0:(o!==null?r.tryCount>this._opts.retries&&(this._queue.shift(),i&&i(o)):(this._queue.shift(),i&&i(null,...c)),r.pending=!1,this._drainQueue())),this._queue.push(r),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||this._queue.length===0)return;const i=this._queue[0];i.pending&&!t||(i.pending=!0,i.tryCount++,this.flags=i.flags,this.emit.apply(this,i.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this._sendConnectPacket(t)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:li.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,i){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,i),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(t=>{if(!this.sendBuffer.some(r=>String(r.id)===t)){const r=this.acks[t];delete this.acks[t],r.withError&&r.call(this,new Error("socket has been disconnected"))}})}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case li.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case li.EVENT:case li.BINARY_EVENT:this.onevent(t);break;case li.ACK:case li.BINARY_ACK:this.onack(t);break;case li.DISCONNECT:this.ondisconnect();break;case li.CONNECT_ERROR:this.destroy();const r=new Error(t.data.message);r.data=t.data.data,this.emitReserved("connect_error",r);break}}onevent(t){const i=t.data||[];t.id!=null&&i.push(this.ack(t.id)),this.connected?this.emitEvent(i):this.receiveBuffer.push(Object.freeze(i))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const i=this._anyListeners.slice();for(const r of i)r.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&typeof t[t.length-1]=="string"&&(this._lastOffset=t[t.length-1])}ack(t){const i=this;let r=!1;return function(...o){r||(r=!0,i.packet({type:li.ACK,id:t,data:o}))}}onack(t){const i=this.acks[t.id];typeof i=="function"&&(delete this.acks[t.id],i.withError&&t.data.unshift(null),i.apply(this,t.data))}onconnect(t,i){this.id=t,this.recovered=i&&this._pid===i,this._pid=i,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(t=>this.emitEvent(t)),this.receiveBuffer=[],this.sendBuffer.forEach(t=>{this.notifyOutgoingListeners(t),this.packet(t)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(t=>t()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:li.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const i=this._anyListeners;for(let r=0;r<i.length;r++)if(t===i[r])return i.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(t){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(t),this}prependAnyOutgoing(t){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(t),this}offAnyOutgoing(t){if(!this._anyOutgoingListeners)return this;if(t){const i=this._anyOutgoingListeners;for(let r=0;r<i.length;r++)if(t===i[r])return i.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(t){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const i=this._anyOutgoingListeners.slice();for(const r of i)r.apply(this,t.data)}}}function Gd(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Gd.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),i=Math.floor(t*this.jitter*e);e=Math.floor(t*10)&1?e+i:e-i}return Math.min(e,this.max)|0};Gd.prototype.reset=function(){this.attempts=0};Gd.prototype.setMin=function(e){this.ms=e};Gd.prototype.setMax=function(e){this.max=e};Gd.prototype.setJitter=function(e){this.jitter=e};class _D extends ha{constructor(t,i){var r;super(),this.nsps={},this.subs=[],t&&typeof t=="object"&&(i=t,t=void 0),i=i||{},i.path=i.path||"/socket.io",this.opts=i,GN(this,i),this.reconnection(i.reconnection!==!1),this.reconnectionAttempts(i.reconnectionAttempts||1/0),this.reconnectionDelay(i.reconnectionDelay||1e3),this.reconnectionDelayMax(i.reconnectionDelayMax||5e3),this.randomizationFactor((r=i.randomizationFactor)!==null&&r!==void 0?r:.5),this.backoff=new Gd({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(i.timeout==null?2e4:i.timeout),this._readyState="closed",this.uri=t;const o=i.parser||YG;this.encoder=new o.Encoder,this.decoder=new o.Decoder,this._autoConnect=i.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,t||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(t){return t===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var i;return t===void 0?this._reconnectionDelay:(this._reconnectionDelay=t,(i=this.backoff)===null||i===void 0||i.setMin(t),this)}randomizationFactor(t){var i;return t===void 0?this._randomizationFactor:(this._randomizationFactor=t,(i=this.backoff)===null||i===void 0||i.setJitter(t),this)}reconnectionDelayMax(t){var i;return t===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,(i=this.backoff)===null||i===void 0||i.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new OG(this.uri,this.opts);const i=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const o=Gn(i,"open",function(){r.onopen(),t&&t()}),c=l=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",l),t?t(l):this.maybeReconnectOnOpen()},u=Gn(i,"error",c);if(this._timeout!==!1){const l=this._timeout,d=this.setTimeoutFn(()=>{o(),c(new Error("timeout")),i.close()},l);this.opts.autoUnref&&d.unref(),this.subs.push(()=>{this.clearTimeoutFn(d)})}return this.subs.push(o),this.subs.push(u),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(Gn(t,"ping",this.onping.bind(this)),Gn(t,"data",this.ondata.bind(this)),Gn(t,"error",this.onerror.bind(this)),Gn(t,"close",this.onclose.bind(this)),Gn(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(i){this.onclose("parse error",i)}}ondecoded(t){KN(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,i){let r=this.nsps[t];return r?this._autoConnect&&!r.active&&r.connect():(r=new H7(this,t,i),this.nsps[t]=r),r}_destroy(t){const i=Object.keys(this.nsps);for(const r of i)if(this.nsps[r].active)return;this._close()}_packet(t){const i=this.encoder.encode(t);for(let r=0;r<i.length;r++)this.engine.write(i[r],t.options)}cleanup(){this.subs.forEach(t=>t()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(t,i){var r;this.cleanup(),(r=this.engine)===null||r===void 0||r.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,i),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const i=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn(()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),!t.skipReconnect&&t.open(o=>{o?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",o)):t.onreconnect()}))},i);this.opts.autoUnref&&r.unref(),this.subs.push(()=>{this.clearTimeoutFn(r)})}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const $m={};function rf(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const i=IG(e,t.path||"/socket.io"),r=i.source,o=i.id,c=i.path,u=$m[o]&&c in $m[o].nsps,l=t.forceNew||t["force new connection"]||t.multiplex===!1||u;let d;return l?d=new _D(r,t):($m[o]||($m[o]=new _D(r,t)),d=$m[o]),i.query&&!t.query&&(t.query=i.queryKey),d.socket(i.path,t)}Object.assign(rf,{Manager:_D,Socket:H7,io:rf,connect:rf});function q7(){return""}let Hn=null,nf=0;const bN=new Map;function XG(e){return`/wt/${encodeURIComponent(e)}/socket.io`}function K7(e){const t=e.trim();if(!t)throw new Error("worktreeName is required");return t}function YN(){if(Hn)return nf++,Hn;const e=q7();return Hn=rf(e,{path:"/socket.io",transports:["websocket"],reconnection:!0,reconnectionDelay:1e3,reconnectionAttempts:10}),Hn.on("message",t=>{const i=t;(i==null?void 0:i.topic)==="system"&&(i==null?void 0:i.type)==="ping"&&(Hn==null||Hn.emit("pong"))}),nf=1,Hn}function QN(e){const t=K7(e),i=bN.get(t);if(i)return i.refCount<=0?(console.warn(`[socket] worktree socket "${t}" had non-positive refCount; recovering to 1`),i.refCount=1,i.socket):(i.refCount++,i.socket);const r=q7(),o=XG(t),c=rf(r,{path:o,transports:["websocket"],reconnection:!0,reconnectionDelay:1e3,reconnectionAttempts:10});return c.on("message",u=>{const l=u;(l==null?void 0:l.topic)==="system"&&(l==null?void 0:l.type)==="ping"&&c.emit("pong")}),bN.set(t,{socket:c,refCount:1}),c}function Au(e){const t=K7(e),i=bN.get(t);i&&(i.refCount<=0&&console.warn(`[socket] worktree socket "${t}" had non-positive refCount on release`),i.refCount--,!(i.refCount>0)&&(i.socket.disconnect(),bN.delete(t)))}function GS(){Hn&&(nf--,nf<=0&&(Hn.disconnect(),Hn=null,nf=0))}const CD="wt",JG=15e3,G7=f.createContext(null),ZG=()=>{},eY={activeWorktree:null,setActiveWorktree:ZG,apiBase:"",worktrees:[],worktreesLoading:!1};function Qj(){if(typeof window>"u")return null;const e=new URLSearchParams(window.location.search).get(CD),t=(e==null?void 0:e.trim())??"";return t.length>0?t:null}function pE(e){if(typeof window>"u")return;const t=new URL(window.location.href);e?t.searchParams.set(CD,e):t.searchParams.delete(CD),window.history.replaceState(window.history.state,"",`${t.pathname}${t.search}${t.hash}`)}async function tY(){const e=await fetch("/api/runtime",{headers:{accept:"application/json"}});if(!e.ok)return!1;const t=await e.json();return!t||typeof t!="object"?!1:t.mode==="main"}function sY({children:e}){const t=zs(),[i,r]=f.useState(!1),[o,c]=f.useState(!1),[u,l]=f.useState(()=>Qj()),{data:d=[],isLoading:h,isError:g,isFetched:m}=st({queryKey:["worktree-tabs-worktrees"],queryFn:()=>Fu(),enabled:i,refetchInterval:i?JG:!1,refetchOnWindowFocus:!0}),y=f.useMemo(()=>d.map(_=>({id:_.id,name:_.name,devchainProjectId:_.devchainProjectId??null,status:_.status})),[d]),E=f.useMemo(()=>!i||!u?null:y.find(_=>_.name===u)??null,[u,i,y]),C=f.useMemo(()=>!i||!u?"":`/wt/${encodeURIComponent(u)}`,[u,i]),D=f.useMemo(()=>o?i?u?`worktree:${u}`:"main":"normal":null,[u,i,o]),b=f.useRef(null),w=f.useRef(C);f.useEffect(()=>{w.current=C},[C]),f.useEffect(()=>iG({getApiBase:()=>w.current,mainInstanceApiPrefixes:zS}),[]),f.useEffect(()=>{if(!D)return;const _=b.current;b.current=D;const P=_===null&&D.startsWith("worktree:");(_!==null&&_!==D||P)&&(t.cancelQueries({queryKey:["projects"]}),t.removeQueries({predicate:R=>{const k=R.queryKey[0];return k!=="worktree-tabs-worktrees"&&k!=="providers"&&k!=="projects"}}),t.invalidateQueries({queryKey:["projects"]}))},[t,D]),f.useEffect(()=>{let _=!1;return(async()=>{let R=!1;try{R=await tY()}catch{R=!1}_||(r(R),c(!0),R||l(null))})(),()=>{_=!0}},[]),f.useEffect(()=>{if(!i)return;const _=YN(),P=R=>{R.topic==="worktrees"&&(t.invalidateQueries({queryKey:["worktree-tabs-worktrees"]}),t.invalidateQueries({queryKey:["chat-worktree-agent-groups"]}),t.invalidateQueries({queryKey:["orchestrator-worktrees"]}),t.invalidateQueries({queryKey:["orchestrator-worktree-overview"]}),t.invalidateQueries({queryKey:["orchestrator-worktree-activity"]}))};return _.on("message",P),()=>{_.off("message",P),GS()}},[i,t]),f.useEffect(()=>{if(typeof window>"u")return;const _=()=>{l(Qj())};return window.addEventListener("popstate",_),()=>{window.removeEventListener("popstate",_)}},[]),f.useEffect(()=>{if(!o)return;if(!i){u!==null&&l(null),pE(null);return}if(u===null){pE(null);return}const _=y.some(P=>P.name===u);if(!_&&m&&!h&&!g){l(null);return}_&&pE(u)},[u,i,o,y,m,h]);const N=f.useCallback(_=>{l((_==null?void 0:_.name)??null)},[]),x=f.useMemo(()=>({activeWorktree:E,setActiveWorktree:N,apiBase:C,worktrees:y,worktreesLoading:h}),[E,C,N,y,h]);return s.jsxDEV(G7.Provider,{value:x,children:e},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/hooks/useWorktreeTab.tsx",lineNumber:296,columnNumber:10},this)}function Ff(){return f.useContext(G7)??eY}const yo="devchain:selectedProjectId",Y7=f.createContext(void 0),iY=5e3;async function aY({signal:e}={}){const t=await fetch("/api/projects",{signal:e});if(!t.ok)throw new Error("Failed to fetch projects");const i=await t.json(),r=await Promise.all(i.items.map(async o=>{try{const c=typeof AbortSignal.timeout=="function"?AbortSignal.timeout(iY):void 0,u=e&&c&&typeof AbortSignal.any=="function"?AbortSignal.any([e,c]):e??c,l=await fetch(`/api/projects/${o.id}/stats`,{signal:u});if(l.ok){const d=await l.json();return{...o,stats:d}}}catch{}return o}));return{...i,items:r}}function rY(){return typeof window>"u"?null:window.sessionStorage.getItem(yo)??window.localStorage.getItem(yo)}function Jp(e){typeof window>"u"||(e?(window.sessionStorage.setItem(yo,e),window.localStorage.setItem(yo,e)):window.sessionStorage.removeItem(yo))}function nY({children:e}){const{activeWorktree:t}=Ff(),i=!!t,r=t!=null&&t.devchainProjectId&&t.devchainProjectId.trim().length>0?t.devchainProjectId:void 0,[o,c]=f.useState(()=>{if(!(typeof window>"u"))return rY()??void 0}),u=f.useRef(!1),l=f.useRef(!1),d=f.useRef(!1),{data:h,isLoading:g,isError:m,refetch:y}=st({queryKey:["projects"],queryFn:({signal:N})=>aY({signal:N})});f.useEffect(()=>{if(typeof window>"u"||l.current)return;const N=window.sessionStorage.getItem(yo),x=window.localStorage.getItem(yo);!N&&x&&window.sessionStorage.setItem(yo,x),l.current=!0},[]),f.useEffect(()=>{if(typeof window>"u"||i||!h||u.current)return;const N=new URLSearchParams(window.location.search||""),x=N.get("projectId"),_=N.get("projectPath"),P=h.items??[],R=k=>k.replace(/\/+$/,"");if(x&&P.some(j=>j.id===x)){c(x),Jp(x),u.current=!0;return}if(_){const k=R(_),j=P.find(V=>R(V.rootPath)===k);if(j){c(j.id),Jp(j.id),u.current=!0;return}}},[i,h]),f.useEffect(()=>{if(i){d.current=!0;return}if(d.current){d.current=!1;return}if(!h)return;const N=h.items??[];if(N.length===1){const x=N[0].id;o!==x&&(c(x),Jp(x));return}if(o&&!N.some(x=>x.id===o)){if(typeof window<"u"){const x=window.localStorage.getItem(yo);if(window.sessionStorage.removeItem(yo),x&&N.some(_=>_.id===x)){c(x),Jp(x);return}}c(void 0),Jp(void 0)}},[i,h,o]);const E=f.useCallback(N=>{i||(c(N),Jp(N))},[i]),C=r??o,D=f.useMemo(()=>{var N;return(N=h==null?void 0:h.items)==null?void 0:N.find(x=>x.id===C)},[C,h]),b=f.useCallback(async()=>{await y()},[y]),w=f.useMemo(()=>({projects:(h==null?void 0:h.items)??[],projectsLoading:g,projectsError:m,refetchProjects:b,selectedProjectId:C,selectedProject:D,setSelectedProjectId:E}),[h,g,m,b,C,D,E]);return s.jsxDEV(Y7.Provider,{value:w,children:e},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/hooks/useProjectSelection.tsx",lineNumber:282,columnNumber:5},this)}function Gi(){const e=f.useContext(Y7);if(!e)throw new Error("useSelectedProject must be used within a ProjectSelectionProvider");return e}const oY="modulepreload",lY=function(e){return"/"+e},Xj={},YS=function(t,i,r){let o=Promise.resolve();if(i&&i.length>0){document.getElementsByTagName("link");const u=document.querySelector("meta[property=csp-nonce]"),l=(u==null?void 0:u.nonce)||(u==null?void 0:u.getAttribute("nonce"));o=Promise.allSettled(i.map(d=>{if(d=lY(d),d in Xj)return;Xj[d]=!0;const h=d.endsWith(".css"),g=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${g}`))return;const m=document.createElement("link");if(m.rel=h?"stylesheet":oY,h||(m.as="script"),m.crossOrigin="",m.href=d,l&&m.setAttribute("nonce",l),document.head.appendChild(m),h)return new Promise((y,E)=>{m.addEventListener("load",y),m.addEventListener("error",()=>E(new Error(`Unable to preload CSS for ${d}`)))})}))}function c(u){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=u,window.dispatchEvent(l),!l.defaultPrevented)throw u}return o.then(u=>{for(const l of u||[])l.status==="rejected"&&c(l.reason);return t().catch(c)})};function Q7(e){var t,i,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(i=Q7(e[t]))&&(r&&(r+=" "),r+=i)}else for(i in e)e[i]&&(r&&(r+=" "),r+=i);return r}function X7(){for(var e,t,i=0,r="",o=arguments.length;i<o;i++)(e=arguments[i])&&(t=Q7(e))&&(r&&(r+=" "),r+=t);return r}const QS="-",cY=e=>{const t=pY(e),{conflictingClassGroups:i,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:u=>{const l=u.split(QS);return l[0]===""&&l.length!==1&&l.shift(),J7(l,t)||uY(u)},getConflictingClassGroupIds:(u,l)=>{const d=i[u]||[];return l&&r[u]?[...d,...r[u]]:d}}},J7=(e,t)=>{var u;if(e.length===0)return t.classGroupId;const i=e[0],r=t.nextPart.get(i),o=r?J7(e.slice(1),r):void 0;if(o)return o;if(t.validators.length===0)return;const c=e.join(QS);return(u=t.validators.find(({validator:l})=>l(c)))==null?void 0:u.classGroupId},Jj=/^\[(.+)\]$/,uY=e=>{if(Jj.test(e)){const t=Jj.exec(e)[1],i=t==null?void 0:t.substring(0,t.indexOf(":"));if(i)return"arbitrary.."+i}},pY=e=>{const{theme:t,classGroups:i}=e,r={nextPart:new Map,validators:[]};for(const o in i)jD(i[o],r,o,t);return r},jD=(e,t,i,r)=>{e.forEach(o=>{if(typeof o=="string"){const c=o===""?t:Zj(t,o);c.classGroupId=i;return}if(typeof o=="function"){if(dY(o)){jD(o(r),t,i,r);return}t.validators.push({validator:o,classGroupId:i});return}Object.entries(o).forEach(([c,u])=>{jD(u,Zj(t,c),i,r)})})},Zj=(e,t)=>{let i=e;return t.split(QS).forEach(r=>{i.nextPart.has(r)||i.nextPart.set(r,{nextPart:new Map,validators:[]}),i=i.nextPart.get(r)}),i},dY=e=>e.isThemeGetter,hY=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,i=new Map,r=new Map;const o=(c,u)=>{i.set(c,u),t++,t>e&&(t=0,r=i,i=new Map)};return{get(c){let u=i.get(c);if(u!==void 0)return u;if((u=r.get(c))!==void 0)return o(c,u),u},set(c,u){i.has(c)?i.set(c,u):o(c,u)}}},PD="!",kD=":",mY=kD.length,fY=e=>{const{prefix:t,experimentalParseClassName:i}=e;let r=o=>{const c=[];let u=0,l=0,d=0,h;for(let C=0;C<o.length;C++){let D=o[C];if(u===0&&l===0){if(D===kD){c.push(o.slice(d,C)),d=C+mY;continue}if(D==="/"){h=C;continue}}D==="["?u++:D==="]"?u--:D==="("?l++:D===")"&&l--}const g=c.length===0?o:o.substring(d),m=gY(g),y=m!==g,E=h&&h>d?h-d:void 0;return{modifiers:c,hasImportantModifier:y,baseClassName:m,maybePostfixModifierPosition:E}};if(t){const o=t+kD,c=r;r=u=>u.startsWith(o)?c(u.substring(o.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:u,maybePostfixModifierPosition:void 0}}if(i){const o=r;r=c=>i({className:c,parseClassName:o})}return r},gY=e=>e.endsWith(PD)?e.substring(0,e.length-1):e.startsWith(PD)?e.substring(1):e,vY=e=>{const t=Object.fromEntries(e.orderSensitiveModifiers.map(r=>[r,!0]));return r=>{if(r.length<=1)return r;const o=[];let c=[];return r.forEach(u=>{u[0]==="["||t[u]?(o.push(...c.sort(),u),c=[]):c.push(u)}),o.push(...c.sort()),o}},bY=e=>({cache:hY(e.cacheSize),parseClassName:fY(e),sortModifiers:vY(e),...cY(e)}),NY=/\s+/,xY=(e,t)=>{const{parseClassName:i,getClassGroupId:r,getConflictingClassGroupIds:o,sortModifiers:c}=t,u=[],l=e.trim().split(NY);let d="";for(let h=l.length-1;h>=0;h-=1){const g=l[h],{isExternal:m,modifiers:y,hasImportantModifier:E,baseClassName:C,maybePostfixModifierPosition:D}=i(g);if(m){d=g+(d.length>0?" "+d:d);continue}let b=!!D,w=r(b?C.substring(0,D):C);if(!w){if(!b){d=g+(d.length>0?" "+d:d);continue}if(w=r(C),!w){d=g+(d.length>0?" "+d:d);continue}b=!1}const N=c(y).join(":"),x=E?N+PD:N,_=x+w;if(u.includes(_))continue;u.push(_);const P=o(w,b);for(let R=0;R<P.length;++R){const k=P[R];u.push(x+k)}d=g+(d.length>0?" "+d:d)}return d};function wY(){let e=0,t,i,r="";for(;e<arguments.length;)(t=arguments[e++])&&(i=Z7(t))&&(r&&(r+=" "),r+=i);return r}const Z7=e=>{if(typeof e=="string")return e;let t,i="";for(let r=0;r<e.length;r++)e[r]&&(t=Z7(e[r]))&&(i&&(i+=" "),i+=t);return i};function yY(e,...t){let i,r,o,c=u;function u(d){const h=t.reduce((g,m)=>m(g),e());return i=bY(h),r=i.cache.get,o=i.cache.set,c=l,l(d)}function l(d){const h=r(d);if(h)return h;const g=xY(d,i);return o(d,g),g}return function(){return c(wY.apply(null,arguments))}}const Ea=e=>{const t=i=>i[e]||[];return t.isThemeGetter=!0,t},ek=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,tk=/^\((?:(\w[\w-]*):)?(.+)\)$/i,EY=/^\d+\/\d+$/,DY=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,SY=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,_Y=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,CY=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,jY=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Zp=e=>EY.test(e),Gs=e=>!!e&&!Number.isNaN(Number(e)),rc=e=>!!e&&Number.isInteger(Number(e)),dE=e=>e.endsWith("%")&&Gs(e.slice(0,-1)),ll=e=>DY.test(e),PY=()=>!0,kY=e=>SY.test(e)&&!_Y.test(e),sk=()=>!1,VY=e=>CY.test(e),TY=e=>jY.test(e),RY=e=>!Qt(e)&&!Xt(e),AY=e=>Yd(e,rk,sk),Qt=e=>ek.test(e),wu=e=>Yd(e,nk,kY),hE=e=>Yd(e,FY,Gs),eP=e=>Yd(e,ik,sk),MY=e=>Yd(e,ak,TY),yb=e=>Yd(e,ok,VY),Xt=e=>tk.test(e),zm=e=>Qd(e,nk),LY=e=>Qd(e,BY),tP=e=>Qd(e,ik),OY=e=>Qd(e,rk),IY=e=>Qd(e,ak),Eb=e=>Qd(e,ok,!0),Yd=(e,t,i)=>{const r=ek.exec(e);return r?r[1]?t(r[1]):i(r[2]):!1},Qd=(e,t,i=!1)=>{const r=tk.exec(e);return r?r[1]?t(r[1]):i:!1},ik=e=>e==="position"||e==="percentage",ak=e=>e==="image"||e==="url",rk=e=>e==="length"||e==="size"||e==="bg-size",nk=e=>e==="length",FY=e=>e==="number",BY=e=>e==="family-name",ok=e=>e==="shadow",$Y=()=>{const e=Ea("color"),t=Ea("font"),i=Ea("text"),r=Ea("font-weight"),o=Ea("tracking"),c=Ea("leading"),u=Ea("breakpoint"),l=Ea("container"),d=Ea("spacing"),h=Ea("radius"),g=Ea("shadow"),m=Ea("inset-shadow"),y=Ea("text-shadow"),E=Ea("drop-shadow"),C=Ea("blur"),D=Ea("perspective"),b=Ea("aspect"),w=Ea("ease"),N=Ea("animate"),x=()=>["auto","avoid","all","avoid-page","page","left","right","column"],_=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],P=()=>[..._(),Xt,Qt],R=()=>["auto","hidden","clip","visible","scroll"],k=()=>["auto","contain","none"],j=()=>[Xt,Qt,d],V=()=>[Zp,"full","auto",...j()],M=()=>[rc,"none","subgrid",Xt,Qt],F=()=>["auto",{span:["full",rc,Xt,Qt]},rc,Xt,Qt],I=()=>[rc,"auto",Xt,Qt],A=()=>["auto","min","max","fr",Xt,Qt],O=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],K=()=>["start","end","center","stretch","center-safe","end-safe"],q=()=>["auto",...j()],Y=()=>[Zp,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...j()],H=()=>[e,Xt,Qt],L=()=>[..._(),tP,eP,{position:[Xt,Qt]}],z=()=>["no-repeat",{repeat:["","x","y","space","round"]}],$=()=>["auto","cover","contain",OY,AY,{size:[Xt,Qt]}],W=()=>[dE,zm,wu],ee=()=>["","none","full",h,Xt,Qt],se=()=>["",Gs,zm,wu],ge=()=>["solid","dashed","dotted","double"],ve=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],J=()=>[Gs,dE,tP,eP],G=()=>["","none",C,Xt,Qt],be=()=>["none",Gs,Xt,Qt],ne=()=>["none",Gs,Xt,Qt],Ee=()=>[Gs,Xt,Qt],ce=()=>[Zp,"full",...j()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[ll],breakpoint:[ll],color:[PY],container:[ll],"drop-shadow":[ll],ease:["in","out","in-out"],font:[RY],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[ll],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[ll],shadow:[ll],spacing:["px",Gs],text:[ll],"text-shadow":[ll],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Zp,Qt,Xt,b]}],container:["container"],columns:[{columns:[Gs,Qt,Xt,l]}],"break-after":[{"break-after":x()}],"break-before":[{"break-before":x()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:P()}],overflow:[{overflow:R()}],"overflow-x":[{"overflow-x":R()}],"overflow-y":[{"overflow-y":R()}],overscroll:[{overscroll:k()}],"overscroll-x":[{"overscroll-x":k()}],"overscroll-y":[{"overscroll-y":k()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:V()}],"inset-x":[{"inset-x":V()}],"inset-y":[{"inset-y":V()}],start:[{start:V()}],end:[{end:V()}],top:[{top:V()}],right:[{right:V()}],bottom:[{bottom:V()}],left:[{left:V()}],visibility:["visible","invisible","collapse"],z:[{z:[rc,"auto",Xt,Qt]}],basis:[{basis:[Zp,"full","auto",l,...j()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Gs,Zp,"auto","initial","none",Qt]}],grow:[{grow:["",Gs,Xt,Qt]}],shrink:[{shrink:["",Gs,Xt,Qt]}],order:[{order:[rc,"first","last","none",Xt,Qt]}],"grid-cols":[{"grid-cols":M()}],"col-start-end":[{col:F()}],"col-start":[{"col-start":I()}],"col-end":[{"col-end":I()}],"grid-rows":[{"grid-rows":M()}],"row-start-end":[{row:F()}],"row-start":[{"row-start":I()}],"row-end":[{"row-end":I()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":A()}],"auto-rows":[{"auto-rows":A()}],gap:[{gap:j()}],"gap-x":[{"gap-x":j()}],"gap-y":[{"gap-y":j()}],"justify-content":[{justify:[...O(),"normal"]}],"justify-items":[{"justify-items":[...K(),"normal"]}],"justify-self":[{"justify-self":["auto",...K()]}],"align-content":[{content:["normal",...O()]}],"align-items":[{items:[...K(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...K(),{baseline:["","last"]}]}],"place-content":[{"place-content":O()}],"place-items":[{"place-items":[...K(),"baseline"]}],"place-self":[{"place-self":["auto",...K()]}],p:[{p:j()}],px:[{px:j()}],py:[{py:j()}],ps:[{ps:j()}],pe:[{pe:j()}],pt:[{pt:j()}],pr:[{pr:j()}],pb:[{pb:j()}],pl:[{pl:j()}],m:[{m:q()}],mx:[{mx:q()}],my:[{my:q()}],ms:[{ms:q()}],me:[{me:q()}],mt:[{mt:q()}],mr:[{mr:q()}],mb:[{mb:q()}],ml:[{ml:q()}],"space-x":[{"space-x":j()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":j()}],"space-y-reverse":["space-y-reverse"],size:[{size:Y()}],w:[{w:[l,"screen",...Y()]}],"min-w":[{"min-w":[l,"screen","none",...Y()]}],"max-w":[{"max-w":[l,"screen","none","prose",{screen:[u]},...Y()]}],h:[{h:["screen","lh",...Y()]}],"min-h":[{"min-h":["screen","lh","none",...Y()]}],"max-h":[{"max-h":["screen","lh",...Y()]}],"font-size":[{text:["base",i,zm,wu]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,Xt,hE]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",dE,Qt]}],"font-family":[{font:[LY,Qt,t]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[o,Xt,Qt]}],"line-clamp":[{"line-clamp":[Gs,"none",Xt,hE]}],leading:[{leading:[c,...j()]}],"list-image":[{"list-image":["none",Xt,Qt]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Xt,Qt]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:H()}],"text-color":[{text:H()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ge(),"wavy"]}],"text-decoration-thickness":[{decoration:[Gs,"from-font","auto",Xt,wu]}],"text-decoration-color":[{decoration:H()}],"underline-offset":[{"underline-offset":[Gs,"auto",Xt,Qt]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:j()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Xt,Qt]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Xt,Qt]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:L()}],"bg-repeat":[{bg:z()}],"bg-size":[{bg:$()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},rc,Xt,Qt],radial:["",Xt,Qt],conic:[rc,Xt,Qt]},IY,MY]}],"bg-color":[{bg:H()}],"gradient-from-pos":[{from:W()}],"gradient-via-pos":[{via:W()}],"gradient-to-pos":[{to:W()}],"gradient-from":[{from:H()}],"gradient-via":[{via:H()}],"gradient-to":[{to:H()}],rounded:[{rounded:ee()}],"rounded-s":[{"rounded-s":ee()}],"rounded-e":[{"rounded-e":ee()}],"rounded-t":[{"rounded-t":ee()}],"rounded-r":[{"rounded-r":ee()}],"rounded-b":[{"rounded-b":ee()}],"rounded-l":[{"rounded-l":ee()}],"rounded-ss":[{"rounded-ss":ee()}],"rounded-se":[{"rounded-se":ee()}],"rounded-ee":[{"rounded-ee":ee()}],"rounded-es":[{"rounded-es":ee()}],"rounded-tl":[{"rounded-tl":ee()}],"rounded-tr":[{"rounded-tr":ee()}],"rounded-br":[{"rounded-br":ee()}],"rounded-bl":[{"rounded-bl":ee()}],"border-w":[{border:se()}],"border-w-x":[{"border-x":se()}],"border-w-y":[{"border-y":se()}],"border-w-s":[{"border-s":se()}],"border-w-e":[{"border-e":se()}],"border-w-t":[{"border-t":se()}],"border-w-r":[{"border-r":se()}],"border-w-b":[{"border-b":se()}],"border-w-l":[{"border-l":se()}],"divide-x":[{"divide-x":se()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":se()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ge(),"hidden","none"]}],"divide-style":[{divide:[...ge(),"hidden","none"]}],"border-color":[{border:H()}],"border-color-x":[{"border-x":H()}],"border-color-y":[{"border-y":H()}],"border-color-s":[{"border-s":H()}],"border-color-e":[{"border-e":H()}],"border-color-t":[{"border-t":H()}],"border-color-r":[{"border-r":H()}],"border-color-b":[{"border-b":H()}],"border-color-l":[{"border-l":H()}],"divide-color":[{divide:H()}],"outline-style":[{outline:[...ge(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Gs,Xt,Qt]}],"outline-w":[{outline:["",Gs,zm,wu]}],"outline-color":[{outline:H()}],shadow:[{shadow:["","none",g,Eb,yb]}],"shadow-color":[{shadow:H()}],"inset-shadow":[{"inset-shadow":["none",m,Eb,yb]}],"inset-shadow-color":[{"inset-shadow":H()}],"ring-w":[{ring:se()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:H()}],"ring-offset-w":[{"ring-offset":[Gs,wu]}],"ring-offset-color":[{"ring-offset":H()}],"inset-ring-w":[{"inset-ring":se()}],"inset-ring-color":[{"inset-ring":H()}],"text-shadow":[{"text-shadow":["none",y,Eb,yb]}],"text-shadow-color":[{"text-shadow":H()}],opacity:[{opacity:[Gs,Xt,Qt]}],"mix-blend":[{"mix-blend":[...ve(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ve()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Gs]}],"mask-image-linear-from-pos":[{"mask-linear-from":J()}],"mask-image-linear-to-pos":[{"mask-linear-to":J()}],"mask-image-linear-from-color":[{"mask-linear-from":H()}],"mask-image-linear-to-color":[{"mask-linear-to":H()}],"mask-image-t-from-pos":[{"mask-t-from":J()}],"mask-image-t-to-pos":[{"mask-t-to":J()}],"mask-image-t-from-color":[{"mask-t-from":H()}],"mask-image-t-to-color":[{"mask-t-to":H()}],"mask-image-r-from-pos":[{"mask-r-from":J()}],"mask-image-r-to-pos":[{"mask-r-to":J()}],"mask-image-r-from-color":[{"mask-r-from":H()}],"mask-image-r-to-color":[{"mask-r-to":H()}],"mask-image-b-from-pos":[{"mask-b-from":J()}],"mask-image-b-to-pos":[{"mask-b-to":J()}],"mask-image-b-from-color":[{"mask-b-from":H()}],"mask-image-b-to-color":[{"mask-b-to":H()}],"mask-image-l-from-pos":[{"mask-l-from":J()}],"mask-image-l-to-pos":[{"mask-l-to":J()}],"mask-image-l-from-color":[{"mask-l-from":H()}],"mask-image-l-to-color":[{"mask-l-to":H()}],"mask-image-x-from-pos":[{"mask-x-from":J()}],"mask-image-x-to-pos":[{"mask-x-to":J()}],"mask-image-x-from-color":[{"mask-x-from":H()}],"mask-image-x-to-color":[{"mask-x-to":H()}],"mask-image-y-from-pos":[{"mask-y-from":J()}],"mask-image-y-to-pos":[{"mask-y-to":J()}],"mask-image-y-from-color":[{"mask-y-from":H()}],"mask-image-y-to-color":[{"mask-y-to":H()}],"mask-image-radial":[{"mask-radial":[Xt,Qt]}],"mask-image-radial-from-pos":[{"mask-radial-from":J()}],"mask-image-radial-to-pos":[{"mask-radial-to":J()}],"mask-image-radial-from-color":[{"mask-radial-from":H()}],"mask-image-radial-to-color":[{"mask-radial-to":H()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":_()}],"mask-image-conic-pos":[{"mask-conic":[Gs]}],"mask-image-conic-from-pos":[{"mask-conic-from":J()}],"mask-image-conic-to-pos":[{"mask-conic-to":J()}],"mask-image-conic-from-color":[{"mask-conic-from":H()}],"mask-image-conic-to-color":[{"mask-conic-to":H()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:L()}],"mask-repeat":[{mask:z()}],"mask-size":[{mask:$()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Xt,Qt]}],filter:[{filter:["","none",Xt,Qt]}],blur:[{blur:G()}],brightness:[{brightness:[Gs,Xt,Qt]}],contrast:[{contrast:[Gs,Xt,Qt]}],"drop-shadow":[{"drop-shadow":["","none",E,Eb,yb]}],"drop-shadow-color":[{"drop-shadow":H()}],grayscale:[{grayscale:["",Gs,Xt,Qt]}],"hue-rotate":[{"hue-rotate":[Gs,Xt,Qt]}],invert:[{invert:["",Gs,Xt,Qt]}],saturate:[{saturate:[Gs,Xt,Qt]}],sepia:[{sepia:["",Gs,Xt,Qt]}],"backdrop-filter":[{"backdrop-filter":["","none",Xt,Qt]}],"backdrop-blur":[{"backdrop-blur":G()}],"backdrop-brightness":[{"backdrop-brightness":[Gs,Xt,Qt]}],"backdrop-contrast":[{"backdrop-contrast":[Gs,Xt,Qt]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Gs,Xt,Qt]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Gs,Xt,Qt]}],"backdrop-invert":[{"backdrop-invert":["",Gs,Xt,Qt]}],"backdrop-opacity":[{"backdrop-opacity":[Gs,Xt,Qt]}],"backdrop-saturate":[{"backdrop-saturate":[Gs,Xt,Qt]}],"backdrop-sepia":[{"backdrop-sepia":["",Gs,Xt,Qt]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":j()}],"border-spacing-x":[{"border-spacing-x":j()}],"border-spacing-y":[{"border-spacing-y":j()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Xt,Qt]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Gs,"initial",Xt,Qt]}],ease:[{ease:["linear","initial",w,Xt,Qt]}],delay:[{delay:[Gs,Xt,Qt]}],animate:[{animate:["none",N,Xt,Qt]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[D,Xt,Qt]}],"perspective-origin":[{"perspective-origin":P()}],rotate:[{rotate:be()}],"rotate-x":[{"rotate-x":be()}],"rotate-y":[{"rotate-y":be()}],"rotate-z":[{"rotate-z":be()}],scale:[{scale:ne()}],"scale-x":[{"scale-x":ne()}],"scale-y":[{"scale-y":ne()}],"scale-z":[{"scale-z":ne()}],"scale-3d":["scale-3d"],skew:[{skew:Ee()}],"skew-x":[{"skew-x":Ee()}],"skew-y":[{"skew-y":Ee()}],transform:[{transform:[Xt,Qt,"","none","gpu","cpu"]}],"transform-origin":[{origin:P()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:ce()}],"translate-x":[{"translate-x":ce()}],"translate-y":[{"translate-y":ce()}],"translate-z":[{"translate-z":ce()}],"translate-none":["translate-none"],accent:[{accent:H()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:H()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Xt,Qt]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":j()}],"scroll-mx":[{"scroll-mx":j()}],"scroll-my":[{"scroll-my":j()}],"scroll-ms":[{"scroll-ms":j()}],"scroll-me":[{"scroll-me":j()}],"scroll-mt":[{"scroll-mt":j()}],"scroll-mr":[{"scroll-mr":j()}],"scroll-mb":[{"scroll-mb":j()}],"scroll-ml":[{"scroll-ml":j()}],"scroll-p":[{"scroll-p":j()}],"scroll-px":[{"scroll-px":j()}],"scroll-py":[{"scroll-py":j()}],"scroll-ps":[{"scroll-ps":j()}],"scroll-pe":[{"scroll-pe":j()}],"scroll-pt":[{"scroll-pt":j()}],"scroll-pr":[{"scroll-pr":j()}],"scroll-pb":[{"scroll-pb":j()}],"scroll-pl":[{"scroll-pl":j()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Xt,Qt]}],fill:[{fill:["none",...H()]}],"stroke-w":[{stroke:[Gs,zm,wu,hE]}],stroke:[{stroke:["none",...H()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},zY=yY($Y);function we(...e){return zY(X7(e))}const Kt=({className:e,...t})=>s.jsxDEV("div",{className:we("animate-pulse rounded-md bg-muted",e),...t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/skeleton.tsx",lineNumber:5,columnNumber:3},void 0),UY=f.lazy(()=>YS(()=>import("./ReviewsPage-C209GLQG.js"),__vite__mapDeps([0,1,2])).then(e=>({default:e.ReviewsPage})));let sP=null;function iP(){sP||(sP=YS(()=>import("./ReviewsPage-C209GLQG.js"),__vite__mapDeps([0,1,2])))}function WY(){return s.jsxDEV("div",{className:"flex flex-col h-full",children:[s.jsxDEV("div",{className:"border-b p-4 bg-card",children:s.jsxDEV("div",{className:"flex items-center gap-4",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Kt,{className:"h-9 w-32"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:38,columnNumber:13},this),s.jsxDEV(Kt,{className:"h-9 w-32"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:39,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:37,columnNumber:11},this),s.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:41,columnNumber:11},this),s.jsxDEV(Kt,{className:"h-9 w-24"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:42,columnNumber:11},this),s.jsxDEV(Kt,{className:"h-9 w-9"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:43,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:36,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:35,columnNumber:7},this),s.jsxDEV("div",{className:"flex-1 flex min-h-0",children:[s.jsxDEV("div",{className:"w-64 border-r bg-card p-3 space-y-2",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-3",children:[s.jsxDEV(Kt,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:52,columnNumber:13},this),s.jsxDEV(Kt,{className:"h-4 w-12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:53,columnNumber:13},this),s.jsxDEV(Kt,{className:"h-5 w-6"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:54,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:51,columnNumber:11},this),Array.from({length:8}).map((e,t)=>s.jsxDEV(Kt,{className:"h-8 w-full"},t,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:57,columnNumber:13},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:50,columnNumber:9},this),s.jsxDEV("div",{className:"flex-1 min-w-0 bg-background p-4",children:s.jsxDEV("div",{className:"space-y-3",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-4",children:[s.jsxDEV(Kt,{className:"h-5 w-48"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:65,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-5 w-12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:66,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-5 w-12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:67,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:64,columnNumber:13},this),Array.from({length:12}).map((e,t)=>s.jsxDEV(Kt,{className:"h-6 w-full",style:{width:`${60+Math.random()*40}%`}},t,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:70,columnNumber:15},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:63,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:62,columnNumber:9},this),s.jsxDEV("div",{className:"w-80 border-l bg-card p-4 space-y-3",children:[s.jsxDEV(Kt,{className:"h-5 w-24 mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:81,columnNumber:11},this),Array.from({length:4}).map((e,t)=>s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Kt,{className:"h-6 w-6 rounded-full"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:85,columnNumber:17},this),s.jsxDEV(Kt,{className:"h-4 w-20"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:86,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:84,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-16 w-full"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:88,columnNumber:15},this)]},t,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:83,columnNumber:13},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:80,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:48,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:33,columnNumber:5},this)}function HY(){return s.jsxDEV(f.Suspense,{fallback:s.jsxDEV(WY,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:103,columnNumber:25},this),children:s.jsxDEV(UY,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:104,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:103,columnNumber:5},this)}function aP(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function Bf(...e){return t=>{let i=!1;const r=e.map(o=>{const c=aP(o,t);return!i&&typeof c=="function"&&(i=!0),c});if(i)return()=>{for(let o=0;o<r.length;o++){const c=r[o];typeof c=="function"?c():aP(e[o],null)}}}}function Is(...e){return f.useCallback(Bf(...e),e)}function Sc(e){const t=KY(e),i=f.forwardRef((r,o)=>{const{children:c,...u}=r,l=f.Children.toArray(c),d=l.find(GY);if(d){const h=d.props.children,g=l.map(m=>m===d?f.Children.count(h)>1?f.Children.only(null):f.isValidElement(h)?h.props.children:null:m);return ae.jsx(t,{...u,ref:o,children:f.isValidElement(h)?f.cloneElement(h,void 0,g):null})}return ae.jsx(t,{...u,ref:o,children:c})});return i.displayName=`${e}.Slot`,i}var qY=Sc("Slot");function KY(e){const t=f.forwardRef((i,r)=>{const{children:o,...c}=i;if(f.isValidElement(o)){const u=QY(o),l=YY(c,o.props);return o.type!==f.Fragment&&(l.ref=r?Bf(r,u):u),f.cloneElement(o,l)}return f.Children.count(o)>1?f.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var lk=Symbol("radix.slottable");function ck(e){const t=({children:i})=>ae.jsx(ae.Fragment,{children:i});return t.displayName=`${e}.Slottable`,t.__radixId=lk,t}function GY(e){return f.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===lk}function YY(e,t){const i={...t};for(const r in t){const o=e[r],c=t[r];/^on[A-Z]/.test(r)?o&&c?i[r]=(...l)=>{const d=c(...l);return o(...l),d}:o&&(i[r]=o):r==="style"?i[r]={...o,...c}:r==="className"&&(i[r]=[o,c].filter(Boolean).join(" "))}return{...e,...i}}function QY(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,i=t&&"isReactWarning"in t&&t.isReactWarning;return i?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,i=t&&"isReactWarning"in t&&t.isReactWarning,i?e.props.ref:e.props.ref||e.ref)}const rP=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,nP=X7,$f=(e,t)=>i=>{var r;if((t==null?void 0:t.variants)==null)return nP(e,i==null?void 0:i.class,i==null?void 0:i.className);const{variants:o,defaultVariants:c}=t,u=Object.keys(o).map(h=>{const g=i==null?void 0:i[h],m=c==null?void 0:c[h];if(g===null)return null;const y=rP(g)||rP(m);return o[h][y]}),l=i&&Object.entries(i).reduce((h,g)=>{let[m,y]=g;return y===void 0||(h[m]=y),h},{}),d=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((h,g)=>{let{class:m,className:y,...E}=g;return Object.entries(E).every(C=>{let[D,b]=C;return Array.isArray(b)?b.includes({...c,...l}[D]):{...c,...l}[D]===b})?[...h,m,y]:h},[]);return nP(e,u,d,i==null?void 0:i.class,i==null?void 0:i.className)},XS=$f("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),le=f.forwardRef(({className:e,variant:t,size:i,asChild:r=!1,...o},c)=>{const u=r?qY:"button";return s.jsxDEV(u,{className:we(XS({variant:t,size:i,className:e})),ref:c,...o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/button.tsx",lineNumber:42,columnNumber:7},void 0)});le.displayName="Button";function VD(e,[t,i]){return Math.min(i,Math.max(t,e))}function gt(e,t,{checkForDefaultPrevented:i=!0}={}){return function(o){if(e==null||e(o),i===!1||!o.defaultPrevented)return t==null?void 0:t(o)}}function XY(e,t){const i=f.createContext(t),r=c=>{const{children:u,...l}=c,d=f.useMemo(()=>l,Object.values(l));return ae.jsx(i.Provider,{value:d,children:u})};r.displayName=e+"Provider";function o(c){const u=f.useContext(i);if(u)return u;if(t!==void 0)return t;throw new Error(`\`${c}\` must be used within \`${e}\``)}return[r,o]}function Aa(e,t=[]){let i=[];function r(c,u){const l=f.createContext(u),d=i.length;i=[...i,u];const h=m=>{var w;const{scope:y,children:E,...C}=m,D=((w=y==null?void 0:y[e])==null?void 0:w[d])||l,b=f.useMemo(()=>C,Object.values(C));return ae.jsx(D.Provider,{value:b,children:E})};h.displayName=c+"Provider";function g(m,y){var D;const E=((D=y==null?void 0:y[e])==null?void 0:D[d])||l,C=f.useContext(E);if(C)return C;if(u!==void 0)return u;throw new Error(`\`${m}\` must be used within \`${c}\``)}return[h,g]}const o=()=>{const c=i.map(u=>f.createContext(u));return function(l){const d=(l==null?void 0:l[e])||c;return f.useMemo(()=>({[`__scope${e}`]:{...l,[e]:d}}),[l,d])}};return o.scopeName=e,[r,JY(o,...t)]}function JY(...e){const t=e[0];if(e.length===1)return t;const i=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(c){const u=r.reduce((l,{useScope:d,scopeName:h})=>{const m=d(c)[`__scope${h}`];return{...l,...m}},{});return f.useMemo(()=>({[`__scope${t.scopeName}`]:u}),[u])}};return i.scopeName=t.scopeName,i}function XN(e){const t=e+"CollectionProvider",[i,r]=Aa(t),[o,c]=i(t,{collectionRef:{current:null},itemMap:new Map}),u=D=>{const{scope:b,children:w}=D,N=ul.useRef(null),x=ul.useRef(new Map).current;return ae.jsx(o,{scope:b,itemMap:x,collectionRef:N,children:w})};u.displayName=t;const l=e+"CollectionSlot",d=Sc(l),h=ul.forwardRef((D,b)=>{const{scope:w,children:N}=D,x=c(l,w),_=Is(b,x.collectionRef);return ae.jsx(d,{ref:_,children:N})});h.displayName=l;const g=e+"CollectionItemSlot",m="data-radix-collection-item",y=Sc(g),E=ul.forwardRef((D,b)=>{const{scope:w,children:N,...x}=D,_=ul.useRef(null),P=Is(b,_),R=c(g,w);return ul.useEffect(()=>(R.itemMap.set(_,{ref:_,...x}),()=>void R.itemMap.delete(_))),ae.jsx(y,{[m]:"",ref:P,children:N})});E.displayName=g;function C(D){const b=c(e+"CollectionConsumer",D);return ul.useCallback(()=>{const N=b.collectionRef.current;if(!N)return[];const x=Array.from(N.querySelectorAll(`[${m}]`));return Array.from(b.itemMap.values()).sort((R,k)=>x.indexOf(R.ref.current)-x.indexOf(k.ref.current))},[b.collectionRef,b.itemMap])}return[{Provider:u,Slot:h,ItemSlot:E},C,r]}var ZY=f.createContext(void 0);function zf(e){const t=f.useContext(ZY);return e||t||"ltr"}var eQ=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Gt=eQ.reduce((e,t)=>{const i=Sc(`Primitive.${t}`),r=f.forwardRef((o,c)=>{const{asChild:u,...l}=o,d=u?i:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),ae.jsx(d,{...l,ref:c})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function JS(e,t){e&&En.flushSync(()=>e.dispatchEvent(t))}function Wi(e){const t=f.useRef(e);return f.useEffect(()=>{t.current=e}),f.useMemo(()=>(...i)=>{var r;return(r=t.current)==null?void 0:r.call(t,...i)},[])}function tQ(e,t=globalThis==null?void 0:globalThis.document){const i=Wi(e);f.useEffect(()=>{const r=o=>{o.key==="Escape"&&i(o)};return t.addEventListener("keydown",r,{capture:!0}),()=>t.removeEventListener("keydown",r,{capture:!0})},[i,t])}var sQ="DismissableLayer",TD="dismissableLayer.update",iQ="dismissableLayer.pointerDownOutside",aQ="dismissableLayer.focusOutside",oP,uk=f.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Gu=f.forwardRef((e,t)=>{const{disableOutsidePointerEvents:i=!1,onEscapeKeyDown:r,onPointerDownOutside:o,onFocusOutside:c,onInteractOutside:u,onDismiss:l,...d}=e,h=f.useContext(uk),[g,m]=f.useState(null),y=(g==null?void 0:g.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,E]=f.useState({}),C=Is(t,k=>m(k)),D=Array.from(h.layers),[b]=[...h.layersWithOutsidePointerEventsDisabled].slice(-1),w=D.indexOf(b),N=g?D.indexOf(g):-1,x=h.layersWithOutsidePointerEventsDisabled.size>0,_=N>=w,P=nQ(k=>{const j=k.target,V=[...h.branches].some(M=>M.contains(j));!_||V||(o==null||o(k),u==null||u(k),k.defaultPrevented||l==null||l())},y),R=oQ(k=>{const j=k.target;[...h.branches].some(M=>M.contains(j))||(c==null||c(k),u==null||u(k),k.defaultPrevented||l==null||l())},y);return tQ(k=>{N===h.layers.size-1&&(r==null||r(k),!k.defaultPrevented&&l&&(k.preventDefault(),l()))},y),f.useEffect(()=>{if(g)return i&&(h.layersWithOutsidePointerEventsDisabled.size===0&&(oP=y.body.style.pointerEvents,y.body.style.pointerEvents="none"),h.layersWithOutsidePointerEventsDisabled.add(g)),h.layers.add(g),lP(),()=>{i&&h.layersWithOutsidePointerEventsDisabled.size===1&&(y.body.style.pointerEvents=oP)}},[g,y,i,h]),f.useEffect(()=>()=>{g&&(h.layers.delete(g),h.layersWithOutsidePointerEventsDisabled.delete(g),lP())},[g,h]),f.useEffect(()=>{const k=()=>E({});return document.addEventListener(TD,k),()=>document.removeEventListener(TD,k)},[]),ae.jsx(Gt.div,{...d,ref:C,style:{pointerEvents:x?_?"auto":"none":void 0,...e.style},onFocusCapture:gt(e.onFocusCapture,R.onFocusCapture),onBlurCapture:gt(e.onBlurCapture,R.onBlurCapture),onPointerDownCapture:gt(e.onPointerDownCapture,P.onPointerDownCapture)})});Gu.displayName=sQ;var rQ="DismissableLayerBranch",pk=f.forwardRef((e,t)=>{const i=f.useContext(uk),r=f.useRef(null),o=Is(t,r);return f.useEffect(()=>{const c=r.current;if(c)return i.branches.add(c),()=>{i.branches.delete(c)}},[i.branches]),ae.jsx(Gt.div,{...e,ref:o})});pk.displayName=rQ;function nQ(e,t=globalThis==null?void 0:globalThis.document){const i=Wi(e),r=f.useRef(!1),o=f.useRef(()=>{});return f.useEffect(()=>{const c=l=>{if(l.target&&!r.current){let d=function(){dk(iQ,i,h,{discrete:!0})};const h={originalEvent:l};l.pointerType==="touch"?(t.removeEventListener("click",o.current),o.current=d,t.addEventListener("click",o.current,{once:!0})):d()}else t.removeEventListener("click",o.current);r.current=!1},u=window.setTimeout(()=>{t.addEventListener("pointerdown",c)},0);return()=>{window.clearTimeout(u),t.removeEventListener("pointerdown",c),t.removeEventListener("click",o.current)}},[t,i]),{onPointerDownCapture:()=>r.current=!0}}function oQ(e,t=globalThis==null?void 0:globalThis.document){const i=Wi(e),r=f.useRef(!1);return f.useEffect(()=>{const o=c=>{c.target&&!r.current&&dk(aQ,i,{originalEvent:c},{discrete:!1})};return t.addEventListener("focusin",o),()=>t.removeEventListener("focusin",o)},[t,i]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function lP(){const e=new CustomEvent(TD);document.dispatchEvent(e)}function dk(e,t,i,{discrete:r}){const o=i.originalEvent.target,c=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:i});t&&o.addEventListener(e,t,{once:!0}),r?JS(o,c):o.dispatchEvent(c)}var lQ=Gu,cQ=pk,mE=0;function JN(){f.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??cP()),document.body.insertAdjacentElement("beforeend",e[1]??cP()),mE++,()=>{mE===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),mE--}},[])}function cP(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var fE="focusScope.autoFocusOnMount",gE="focusScope.autoFocusOnUnmount",uP={bubbles:!1,cancelable:!0},uQ="FocusScope",Uf=f.forwardRef((e,t)=>{const{loop:i=!1,trapped:r=!1,onMountAutoFocus:o,onUnmountAutoFocus:c,...u}=e,[l,d]=f.useState(null),h=Wi(o),g=Wi(c),m=f.useRef(null),y=Is(t,D=>d(D)),E=f.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;f.useEffect(()=>{if(r){let D=function(x){if(E.paused||!l)return;const _=x.target;l.contains(_)?m.current=_:cc(m.current,{select:!0})},b=function(x){if(E.paused||!l)return;const _=x.relatedTarget;_!==null&&(l.contains(_)||cc(m.current,{select:!0}))},w=function(x){if(document.activeElement===document.body)for(const P of x)P.removedNodes.length>0&&cc(l)};document.addEventListener("focusin",D),document.addEventListener("focusout",b);const N=new MutationObserver(w);return l&&N.observe(l,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",D),document.removeEventListener("focusout",b),N.disconnect()}}},[r,l,E.paused]),f.useEffect(()=>{if(l){dP.add(E);const D=document.activeElement;if(!l.contains(D)){const w=new CustomEvent(fE,uP);l.addEventListener(fE,h),l.dispatchEvent(w),w.defaultPrevented||(pQ(gQ(hk(l)),{select:!0}),document.activeElement===D&&cc(l))}return()=>{l.removeEventListener(fE,h),setTimeout(()=>{const w=new CustomEvent(gE,uP);l.addEventListener(gE,g),l.dispatchEvent(w),w.defaultPrevented||cc(D??document.body,{select:!0}),l.removeEventListener(gE,g),dP.remove(E)},0)}}},[l,h,g,E]);const C=f.useCallback(D=>{if(!i&&!r||E.paused)return;const b=D.key==="Tab"&&!D.altKey&&!D.ctrlKey&&!D.metaKey,w=document.activeElement;if(b&&w){const N=D.currentTarget,[x,_]=dQ(N);x&&_?!D.shiftKey&&w===_?(D.preventDefault(),i&&cc(x,{select:!0})):D.shiftKey&&w===x&&(D.preventDefault(),i&&cc(_,{select:!0})):w===N&&D.preventDefault()}},[i,r,E.paused]);return ae.jsx(Gt.div,{tabIndex:-1,...u,ref:y,onKeyDown:C})});Uf.displayName=uQ;function pQ(e,{select:t=!1}={}){const i=document.activeElement;for(const r of e)if(cc(r,{select:t}),document.activeElement!==i)return}function dQ(e){const t=hk(e),i=pP(t,e),r=pP(t.reverse(),e);return[i,r]}function hk(e){const t=[],i=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;i.nextNode();)t.push(i.currentNode);return t}function pP(e,t){for(const i of e)if(!hQ(i,{upTo:t}))return i}function hQ(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function mQ(e){return e instanceof HTMLInputElement&&"select"in e}function cc(e,{select:t=!1}={}){if(e&&e.focus){const i=document.activeElement;e.focus({preventScroll:!0}),e!==i&&mQ(e)&&t&&e.select()}}var dP=fQ();function fQ(){let e=[];return{add(t){const i=e[0];t!==i&&(i==null||i.pause()),e=hP(e,t),e.unshift(t)},remove(t){var i;e=hP(e,t),(i=e[0])==null||i.resume()}}}function hP(e,t){const i=[...e],r=i.indexOf(t);return r!==-1&&i.splice(r,1),i}function gQ(e){return e.filter(t=>t.tagName!=="A")}var ea=globalThis!=null&&globalThis.document?f.useLayoutEffect:()=>{},vQ=PS[" useId ".trim().toString()]||(()=>{}),bQ=0;function Nr(e){const[t,i]=f.useState(vQ());return ea(()=>{i(r=>r??String(bQ++))},[e]),e||(t?`radix-${t}`:"")}const NQ=["top","right","bottom","left"],_c=Math.min,Jr=Math.max,NN=Math.round,Db=Math.floor,_o=e=>({x:e,y:e}),xQ={left:"right",right:"left",bottom:"top",top:"bottom"},wQ={start:"end",end:"start"};function RD(e,t,i){return Jr(e,_c(t,i))}function xl(e,t){return typeof e=="function"?e(t):e}function wl(e){return e.split("-")[0]}function Xd(e){return e.split("-")[1]}function ZS(e){return e==="x"?"y":"x"}function e2(e){return e==="y"?"height":"width"}const yQ=new Set(["top","bottom"]);function Do(e){return yQ.has(wl(e))?"y":"x"}function t2(e){return ZS(Do(e))}function EQ(e,t,i){i===void 0&&(i=!1);const r=Xd(e),o=t2(e),c=e2(o);let u=o==="x"?r===(i?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[c]>t.floating[c]&&(u=xN(u)),[u,xN(u)]}function DQ(e){const t=xN(e);return[AD(e),t,AD(t)]}function AD(e){return e.replace(/start|end/g,t=>wQ[t])}const mP=["left","right"],fP=["right","left"],SQ=["top","bottom"],_Q=["bottom","top"];function CQ(e,t,i){switch(e){case"top":case"bottom":return i?t?fP:mP:t?mP:fP;case"left":case"right":return t?SQ:_Q;default:return[]}}function jQ(e,t,i,r){const o=Xd(e);let c=CQ(wl(e),i==="start",r);return o&&(c=c.map(u=>u+"-"+o),t&&(c=c.concat(c.map(AD)))),c}function xN(e){return e.replace(/left|right|bottom|top/g,t=>xQ[t])}function PQ(e){return{top:0,right:0,bottom:0,left:0,...e}}function mk(e){return typeof e!="number"?PQ(e):{top:e,right:e,bottom:e,left:e}}function wN(e){const{x:t,y:i,width:r,height:o}=e;return{width:r,height:o,top:i,left:t,right:t+r,bottom:i+o,x:t,y:i}}function gP(e,t,i){let{reference:r,floating:o}=e;const c=Do(t),u=t2(t),l=e2(u),d=wl(t),h=c==="y",g=r.x+r.width/2-o.width/2,m=r.y+r.height/2-o.height/2,y=r[l]/2-o[l]/2;let E;switch(d){case"top":E={x:g,y:r.y-o.height};break;case"bottom":E={x:g,y:r.y+r.height};break;case"right":E={x:r.x+r.width,y:m};break;case"left":E={x:r.x-o.width,y:m};break;default:E={x:r.x,y:r.y}}switch(Xd(t)){case"start":E[u]-=y*(i&&h?-1:1);break;case"end":E[u]+=y*(i&&h?-1:1);break}return E}const kQ=async(e,t,i)=>{const{placement:r="bottom",strategy:o="absolute",middleware:c=[],platform:u}=i,l=c.filter(Boolean),d=await(u.isRTL==null?void 0:u.isRTL(t));let h=await u.getElementRects({reference:e,floating:t,strategy:o}),{x:g,y:m}=gP(h,r,d),y=r,E={},C=0;for(let D=0;D<l.length;D++){const{name:b,fn:w}=l[D],{x:N,y:x,data:_,reset:P}=await w({x:g,y:m,initialPlacement:r,placement:y,strategy:o,middlewareData:E,rects:h,platform:u,elements:{reference:e,floating:t}});g=N??g,m=x??m,E={...E,[b]:{...E[b],..._}},P&&C<=50&&(C++,typeof P=="object"&&(P.placement&&(y=P.placement),P.rects&&(h=P.rects===!0?await u.getElementRects({reference:e,floating:t,strategy:o}):P.rects),{x:g,y:m}=gP(h,y,d)),D=-1)}return{x:g,y:m,placement:y,strategy:o,middlewareData:E}};async function mf(e,t){var i;t===void 0&&(t={});const{x:r,y:o,platform:c,rects:u,elements:l,strategy:d}=e,{boundary:h="clippingAncestors",rootBoundary:g="viewport",elementContext:m="floating",altBoundary:y=!1,padding:E=0}=xl(t,e),C=mk(E),b=l[y?m==="floating"?"reference":"floating":m],w=wN(await c.getClippingRect({element:(i=await(c.isElement==null?void 0:c.isElement(b)))==null||i?b:b.contextElement||await(c.getDocumentElement==null?void 0:c.getDocumentElement(l.floating)),boundary:h,rootBoundary:g,strategy:d})),N=m==="floating"?{x:r,y:o,width:u.floating.width,height:u.floating.height}:u.reference,x=await(c.getOffsetParent==null?void 0:c.getOffsetParent(l.floating)),_=await(c.isElement==null?void 0:c.isElement(x))?await(c.getScale==null?void 0:c.getScale(x))||{x:1,y:1}:{x:1,y:1},P=wN(c.convertOffsetParentRelativeRectToViewportRelativeRect?await c.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:N,offsetParent:x,strategy:d}):N);return{top:(w.top-P.top+C.top)/_.y,bottom:(P.bottom-w.bottom+C.bottom)/_.y,left:(w.left-P.left+C.left)/_.x,right:(P.right-w.right+C.right)/_.x}}const VQ=e=>({name:"arrow",options:e,async fn(t){const{x:i,y:r,placement:o,rects:c,platform:u,elements:l,middlewareData:d}=t,{element:h,padding:g=0}=xl(e,t)||{};if(h==null)return{};const m=mk(g),y={x:i,y:r},E=t2(o),C=e2(E),D=await u.getDimensions(h),b=E==="y",w=b?"top":"left",N=b?"bottom":"right",x=b?"clientHeight":"clientWidth",_=c.reference[C]+c.reference[E]-y[E]-c.floating[C],P=y[E]-c.reference[E],R=await(u.getOffsetParent==null?void 0:u.getOffsetParent(h));let k=R?R[x]:0;(!k||!await(u.isElement==null?void 0:u.isElement(R)))&&(k=l.floating[x]||c.floating[C]);const j=_/2-P/2,V=k/2-D[C]/2-1,M=_c(m[w],V),F=_c(m[N],V),I=M,A=k-D[C]-F,O=k/2-D[C]/2+j,K=RD(I,O,A),q=!d.arrow&&Xd(o)!=null&&O!==K&&c.reference[C]/2-(O<I?M:F)-D[C]/2<0,Y=q?O<I?O-I:O-A:0;return{[E]:y[E]+Y,data:{[E]:K,centerOffset:O-K-Y,...q&&{alignmentOffset:Y}},reset:q}}}),TQ=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var i,r;const{placement:o,middlewareData:c,rects:u,initialPlacement:l,platform:d,elements:h}=t,{mainAxis:g=!0,crossAxis:m=!0,fallbackPlacements:y,fallbackStrategy:E="bestFit",fallbackAxisSideDirection:C="none",flipAlignment:D=!0,...b}=xl(e,t);if((i=c.arrow)!=null&&i.alignmentOffset)return{};const w=wl(o),N=Do(l),x=wl(l)===l,_=await(d.isRTL==null?void 0:d.isRTL(h.floating)),P=y||(x||!D?[xN(l)]:DQ(l)),R=C!=="none";!y&&R&&P.push(...jQ(l,D,C,_));const k=[l,...P],j=await mf(t,b),V=[];let M=((r=c.flip)==null?void 0:r.overflows)||[];if(g&&V.push(j[w]),m){const O=EQ(o,u,_);V.push(j[O[0]],j[O[1]])}if(M=[...M,{placement:o,overflows:V}],!V.every(O=>O<=0)){var F,I;const O=(((F=c.flip)==null?void 0:F.index)||0)+1,K=k[O];if(K&&(!(m==="alignment"?N!==Do(K):!1)||M.every(H=>Do(H.placement)===N?H.overflows[0]>0:!0)))return{data:{index:O,overflows:M},reset:{placement:K}};let q=(I=M.filter(Y=>Y.overflows[0]<=0).sort((Y,H)=>Y.overflows[1]-H.overflows[1])[0])==null?void 0:I.placement;if(!q)switch(E){case"bestFit":{var A;const Y=(A=M.filter(H=>{if(R){const L=Do(H.placement);return L===N||L==="y"}return!0}).map(H=>[H.placement,H.overflows.filter(L=>L>0).reduce((L,z)=>L+z,0)]).sort((H,L)=>H[1]-L[1])[0])==null?void 0:A[0];Y&&(q=Y);break}case"initialPlacement":q=l;break}if(o!==q)return{reset:{placement:q}}}return{}}}};function vP(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function bP(e){return NQ.some(t=>e[t]>=0)}const RQ=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:i}=t,{strategy:r="referenceHidden",...o}=xl(e,t);switch(r){case"referenceHidden":{const c=await mf(t,{...o,elementContext:"reference"}),u=vP(c,i.reference);return{data:{referenceHiddenOffsets:u,referenceHidden:bP(u)}}}case"escaped":{const c=await mf(t,{...o,altBoundary:!0}),u=vP(c,i.floating);return{data:{escapedOffsets:u,escaped:bP(u)}}}default:return{}}}}},fk=new Set(["left","top"]);async function AQ(e,t){const{placement:i,platform:r,elements:o}=e,c=await(r.isRTL==null?void 0:r.isRTL(o.floating)),u=wl(i),l=Xd(i),d=Do(i)==="y",h=fk.has(u)?-1:1,g=c&&d?-1:1,m=xl(t,e);let{mainAxis:y,crossAxis:E,alignmentAxis:C}=typeof m=="number"?{mainAxis:m,crossAxis:0,alignmentAxis:null}:{mainAxis:m.mainAxis||0,crossAxis:m.crossAxis||0,alignmentAxis:m.alignmentAxis};return l&&typeof C=="number"&&(E=l==="end"?C*-1:C),d?{x:E*g,y:y*h}:{x:y*h,y:E*g}}const MQ=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var i,r;const{x:o,y:c,placement:u,middlewareData:l}=t,d=await AQ(t,e);return u===((i=l.offset)==null?void 0:i.placement)&&(r=l.arrow)!=null&&r.alignmentOffset?{}:{x:o+d.x,y:c+d.y,data:{...d,placement:u}}}}},LQ=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:i,y:r,placement:o}=t,{mainAxis:c=!0,crossAxis:u=!1,limiter:l={fn:b=>{let{x:w,y:N}=b;return{x:w,y:N}}},...d}=xl(e,t),h={x:i,y:r},g=await mf(t,d),m=Do(wl(o)),y=ZS(m);let E=h[y],C=h[m];if(c){const b=y==="y"?"top":"left",w=y==="y"?"bottom":"right",N=E+g[b],x=E-g[w];E=RD(N,E,x)}if(u){const b=m==="y"?"top":"left",w=m==="y"?"bottom":"right",N=C+g[b],x=C-g[w];C=RD(N,C,x)}const D=l.fn({...t,[y]:E,[m]:C});return{...D,data:{x:D.x-i,y:D.y-r,enabled:{[y]:c,[m]:u}}}}}},OQ=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:i,y:r,placement:o,rects:c,middlewareData:u}=t,{offset:l=0,mainAxis:d=!0,crossAxis:h=!0}=xl(e,t),g={x:i,y:r},m=Do(o),y=ZS(m);let E=g[y],C=g[m];const D=xl(l,t),b=typeof D=="number"?{mainAxis:D,crossAxis:0}:{mainAxis:0,crossAxis:0,...D};if(d){const x=y==="y"?"height":"width",_=c.reference[y]-c.floating[x]+b.mainAxis,P=c.reference[y]+c.reference[x]-b.mainAxis;E<_?E=_:E>P&&(E=P)}if(h){var w,N;const x=y==="y"?"width":"height",_=fk.has(wl(o)),P=c.reference[m]-c.floating[x]+(_&&((w=u.offset)==null?void 0:w[m])||0)+(_?0:b.crossAxis),R=c.reference[m]+c.reference[x]+(_?0:((N=u.offset)==null?void 0:N[m])||0)-(_?b.crossAxis:0);C<P?C=P:C>R&&(C=R)}return{[y]:E,[m]:C}}}},IQ=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var i,r;const{placement:o,rects:c,platform:u,elements:l}=t,{apply:d=()=>{},...h}=xl(e,t),g=await mf(t,h),m=wl(o),y=Xd(o),E=Do(o)==="y",{width:C,height:D}=c.floating;let b,w;m==="top"||m==="bottom"?(b=m,w=y===(await(u.isRTL==null?void 0:u.isRTL(l.floating))?"start":"end")?"left":"right"):(w=m,b=y==="end"?"top":"bottom");const N=D-g.top-g.bottom,x=C-g.left-g.right,_=_c(D-g[b],N),P=_c(C-g[w],x),R=!t.middlewareData.shift;let k=_,j=P;if((i=t.middlewareData.shift)!=null&&i.enabled.x&&(j=x),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(k=N),R&&!y){const M=Jr(g.left,0),F=Jr(g.right,0),I=Jr(g.top,0),A=Jr(g.bottom,0);E?j=C-2*(M!==0||F!==0?M+F:Jr(g.left,g.right)):k=D-2*(I!==0||A!==0?I+A:Jr(g.top,g.bottom))}await d({...t,availableWidth:j,availableHeight:k});const V=await u.getDimensions(l.floating);return C!==V.width||D!==V.height?{reset:{rects:!0}}:{}}}};function ZN(){return typeof window<"u"}function Jd(e){return gk(e)?(e.nodeName||"").toLowerCase():"#document"}function tn(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function To(e){var t;return(t=(gk(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function gk(e){return ZN()?e instanceof Node||e instanceof tn(e).Node:!1}function Qn(e){return ZN()?e instanceof Element||e instanceof tn(e).Element:!1}function Po(e){return ZN()?e instanceof HTMLElement||e instanceof tn(e).HTMLElement:!1}function NP(e){return!ZN()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof tn(e).ShadowRoot}const FQ=new Set(["inline","contents"]);function Wf(e){const{overflow:t,overflowX:i,overflowY:r,display:o}=Xn(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+i)&&!FQ.has(o)}const BQ=new Set(["table","td","th"]);function $Q(e){return BQ.has(Jd(e))}const zQ=[":popover-open",":modal"];function e0(e){return zQ.some(t=>{try{return e.matches(t)}catch{return!1}})}const UQ=["transform","translate","scale","rotate","perspective"],WQ=["transform","translate","scale","rotate","perspective","filter"],HQ=["paint","layout","strict","content"];function s2(e){const t=i2(),i=Qn(e)?Xn(e):e;return UQ.some(r=>i[r]?i[r]!=="none":!1)||(i.containerType?i.containerType!=="normal":!1)||!t&&(i.backdropFilter?i.backdropFilter!=="none":!1)||!t&&(i.filter?i.filter!=="none":!1)||WQ.some(r=>(i.willChange||"").includes(r))||HQ.some(r=>(i.contain||"").includes(r))}function qQ(e){let t=Cc(e);for(;Po(t)&&!Ad(t);){if(s2(t))return t;if(e0(t))return null;t=Cc(t)}return null}function i2(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const KQ=new Set(["html","body","#document"]);function Ad(e){return KQ.has(Jd(e))}function Xn(e){return tn(e).getComputedStyle(e)}function t0(e){return Qn(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Cc(e){if(Jd(e)==="html")return e;const t=e.assignedSlot||e.parentNode||NP(e)&&e.host||To(e);return NP(t)?t.host:t}function vk(e){const t=Cc(e);return Ad(t)?e.ownerDocument?e.ownerDocument.body:e.body:Po(t)&&Wf(t)?t:vk(t)}function ff(e,t,i){var r;t===void 0&&(t=[]),i===void 0&&(i=!0);const o=vk(e),c=o===((r=e.ownerDocument)==null?void 0:r.body),u=tn(o);if(c){const l=MD(u);return t.concat(u,u.visualViewport||[],Wf(o)?o:[],l&&i?ff(l):[])}return t.concat(o,ff(o,[],i))}function MD(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function bk(e){const t=Xn(e);let i=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Po(e),c=o?e.offsetWidth:i,u=o?e.offsetHeight:r,l=NN(i)!==c||NN(r)!==u;return l&&(i=c,r=u),{width:i,height:r,$:l}}function a2(e){return Qn(e)?e:e.contextElement}function gd(e){const t=a2(e);if(!Po(t))return _o(1);const i=t.getBoundingClientRect(),{width:r,height:o,$:c}=bk(t);let u=(c?NN(i.width):i.width)/r,l=(c?NN(i.height):i.height)/o;return(!u||!Number.isFinite(u))&&(u=1),(!l||!Number.isFinite(l))&&(l=1),{x:u,y:l}}const GQ=_o(0);function Nk(e){const t=tn(e);return!i2()||!t.visualViewport?GQ:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function YQ(e,t,i){return t===void 0&&(t=!1),!i||t&&i!==tn(e)?!1:t}function Bu(e,t,i,r){t===void 0&&(t=!1),i===void 0&&(i=!1);const o=e.getBoundingClientRect(),c=a2(e);let u=_o(1);t&&(r?Qn(r)&&(u=gd(r)):u=gd(e));const l=YQ(c,i,r)?Nk(c):_o(0);let d=(o.left+l.x)/u.x,h=(o.top+l.y)/u.y,g=o.width/u.x,m=o.height/u.y;if(c){const y=tn(c),E=r&&Qn(r)?tn(r):r;let C=y,D=MD(C);for(;D&&r&&E!==C;){const b=gd(D),w=D.getBoundingClientRect(),N=Xn(D),x=w.left+(D.clientLeft+parseFloat(N.paddingLeft))*b.x,_=w.top+(D.clientTop+parseFloat(N.paddingTop))*b.y;d*=b.x,h*=b.y,g*=b.x,m*=b.y,d+=x,h+=_,C=tn(D),D=MD(C)}}return wN({width:g,height:m,x:d,y:h})}function s0(e,t){const i=t0(e).scrollLeft;return t?t.left+i:Bu(To(e)).left+i}function xk(e,t){const i=e.getBoundingClientRect(),r=i.left+t.scrollLeft-s0(e,i),o=i.top+t.scrollTop;return{x:r,y:o}}function QQ(e){let{elements:t,rect:i,offsetParent:r,strategy:o}=e;const c=o==="fixed",u=To(r),l=t?e0(t.floating):!1;if(r===u||l&&c)return i;let d={scrollLeft:0,scrollTop:0},h=_o(1);const g=_o(0),m=Po(r);if((m||!m&&!c)&&((Jd(r)!=="body"||Wf(u))&&(d=t0(r)),Po(r))){const E=Bu(r);h=gd(r),g.x=E.x+r.clientLeft,g.y=E.y+r.clientTop}const y=u&&!m&&!c?xk(u,d):_o(0);return{width:i.width*h.x,height:i.height*h.y,x:i.x*h.x-d.scrollLeft*h.x+g.x+y.x,y:i.y*h.y-d.scrollTop*h.y+g.y+y.y}}function XQ(e){return Array.from(e.getClientRects())}function JQ(e){const t=To(e),i=t0(e),r=e.ownerDocument.body,o=Jr(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),c=Jr(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let u=-i.scrollLeft+s0(e);const l=-i.scrollTop;return Xn(r).direction==="rtl"&&(u+=Jr(t.clientWidth,r.clientWidth)-o),{width:o,height:c,x:u,y:l}}const xP=25;function ZQ(e,t){const i=tn(e),r=To(e),o=i.visualViewport;let c=r.clientWidth,u=r.clientHeight,l=0,d=0;if(o){c=o.width,u=o.height;const g=i2();(!g||g&&t==="fixed")&&(l=o.offsetLeft,d=o.offsetTop)}const h=s0(r);if(h<=0){const g=r.ownerDocument,m=g.body,y=getComputedStyle(m),E=g.compatMode==="CSS1Compat"&&parseFloat(y.marginLeft)+parseFloat(y.marginRight)||0,C=Math.abs(r.clientWidth-m.clientWidth-E);C<=xP&&(c-=C)}else h<=xP&&(c+=h);return{width:c,height:u,x:l,y:d}}const eX=new Set(["absolute","fixed"]);function tX(e,t){const i=Bu(e,!0,t==="fixed"),r=i.top+e.clientTop,o=i.left+e.clientLeft,c=Po(e)?gd(e):_o(1),u=e.clientWidth*c.x,l=e.clientHeight*c.y,d=o*c.x,h=r*c.y;return{width:u,height:l,x:d,y:h}}function wP(e,t,i){let r;if(t==="viewport")r=ZQ(e,i);else if(t==="document")r=JQ(To(e));else if(Qn(t))r=tX(t,i);else{const o=Nk(e);r={x:t.x-o.x,y:t.y-o.y,width:t.width,height:t.height}}return wN(r)}function wk(e,t){const i=Cc(e);return i===t||!Qn(i)||Ad(i)?!1:Xn(i).position==="fixed"||wk(i,t)}function sX(e,t){const i=t.get(e);if(i)return i;let r=ff(e,[],!1).filter(l=>Qn(l)&&Jd(l)!=="body"),o=null;const c=Xn(e).position==="fixed";let u=c?Cc(e):e;for(;Qn(u)&&!Ad(u);){const l=Xn(u),d=s2(u);!d&&l.position==="fixed"&&(o=null),(c?!d&&!o:!d&&l.position==="static"&&!!o&&eX.has(o.position)||Wf(u)&&!d&&wk(e,u))?r=r.filter(g=>g!==u):o=l,u=Cc(u)}return t.set(e,r),r}function iX(e){let{element:t,boundary:i,rootBoundary:r,strategy:o}=e;const u=[...i==="clippingAncestors"?e0(t)?[]:sX(t,this._c):[].concat(i),r],l=u[0],d=u.reduce((h,g)=>{const m=wP(t,g,o);return h.top=Jr(m.top,h.top),h.right=_c(m.right,h.right),h.bottom=_c(m.bottom,h.bottom),h.left=Jr(m.left,h.left),h},wP(t,l,o));return{width:d.right-d.left,height:d.bottom-d.top,x:d.left,y:d.top}}function aX(e){const{width:t,height:i}=bk(e);return{width:t,height:i}}function rX(e,t,i){const r=Po(t),o=To(t),c=i==="fixed",u=Bu(e,!0,c,t);let l={scrollLeft:0,scrollTop:0};const d=_o(0);function h(){d.x=s0(o)}if(r||!r&&!c)if((Jd(t)!=="body"||Wf(o))&&(l=t0(t)),r){const E=Bu(t,!0,c,t);d.x=E.x+t.clientLeft,d.y=E.y+t.clientTop}else o&&h();c&&!r&&o&&h();const g=o&&!r&&!c?xk(o,l):_o(0),m=u.left+l.scrollLeft-d.x-g.x,y=u.top+l.scrollTop-d.y-g.y;return{x:m,y,width:u.width,height:u.height}}function vE(e){return Xn(e).position==="static"}function yP(e,t){if(!Po(e)||Xn(e).position==="fixed")return null;if(t)return t(e);let i=e.offsetParent;return To(e)===i&&(i=i.ownerDocument.body),i}function yk(e,t){const i=tn(e);if(e0(e))return i;if(!Po(e)){let o=Cc(e);for(;o&&!Ad(o);){if(Qn(o)&&!vE(o))return o;o=Cc(o)}return i}let r=yP(e,t);for(;r&&$Q(r)&&vE(r);)r=yP(r,t);return r&&Ad(r)&&vE(r)&&!s2(r)?i:r||qQ(e)||i}const nX=async function(e){const t=this.getOffsetParent||yk,i=this.getDimensions,r=await i(e.floating);return{reference:rX(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function oX(e){return Xn(e).direction==="rtl"}const lX={convertOffsetParentRelativeRectToViewportRelativeRect:QQ,getDocumentElement:To,getClippingRect:iX,getOffsetParent:yk,getElementRects:nX,getClientRects:XQ,getDimensions:aX,getScale:gd,isElement:Qn,isRTL:oX};function Ek(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function cX(e,t){let i=null,r;const o=To(e);function c(){var l;clearTimeout(r),(l=i)==null||l.disconnect(),i=null}function u(l,d){l===void 0&&(l=!1),d===void 0&&(d=1),c();const h=e.getBoundingClientRect(),{left:g,top:m,width:y,height:E}=h;if(l||t(),!y||!E)return;const C=Db(m),D=Db(o.clientWidth-(g+y)),b=Db(o.clientHeight-(m+E)),w=Db(g),x={rootMargin:-C+"px "+-D+"px "+-b+"px "+-w+"px",threshold:Jr(0,_c(1,d))||1};let _=!0;function P(R){const k=R[0].intersectionRatio;if(k!==d){if(!_)return u();k?u(!1,k):r=setTimeout(()=>{u(!1,1e-7)},1e3)}k===1&&!Ek(h,e.getBoundingClientRect())&&u(),_=!1}try{i=new IntersectionObserver(P,{...x,root:o.ownerDocument})}catch{i=new IntersectionObserver(P,x)}i.observe(e)}return u(!0),c}function uX(e,t,i,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:c=!0,elementResize:u=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:d=!1}=r,h=a2(e),g=o||c?[...h?ff(h):[],...ff(t)]:[];g.forEach(w=>{o&&w.addEventListener("scroll",i,{passive:!0}),c&&w.addEventListener("resize",i)});const m=h&&l?cX(h,i):null;let y=-1,E=null;u&&(E=new ResizeObserver(w=>{let[N]=w;N&&N.target===h&&E&&(E.unobserve(t),cancelAnimationFrame(y),y=requestAnimationFrame(()=>{var x;(x=E)==null||x.observe(t)})),i()}),h&&!d&&E.observe(h),E.observe(t));let C,D=d?Bu(e):null;d&&b();function b(){const w=Bu(e);D&&!Ek(D,w)&&i(),D=w,C=requestAnimationFrame(b)}return i(),()=>{var w;g.forEach(N=>{o&&N.removeEventListener("scroll",i),c&&N.removeEventListener("resize",i)}),m==null||m(),(w=E)==null||w.disconnect(),E=null,d&&cancelAnimationFrame(C)}}const pX=MQ,dX=LQ,hX=TQ,mX=IQ,fX=RQ,EP=VQ,gX=OQ,vX=(e,t,i)=>{const r=new Map,o={platform:lX,...i},c={...o.platform,_c:r};return kQ(e,t,{...o,platform:c})};var bX=typeof document<"u",NX=function(){},eN=bX?f.useLayoutEffect:NX;function yN(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let i,r,o;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(i=e.length,i!==t.length)return!1;for(r=i;r--!==0;)if(!yN(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),i=o.length,i!==Object.keys(t).length)return!1;for(r=i;r--!==0;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=i;r--!==0;){const c=o[r];if(!(c==="_owner"&&e.$$typeof)&&!yN(e[c],t[c]))return!1}return!0}return e!==e&&t!==t}function Dk(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function DP(e,t){const i=Dk(e);return Math.round(t*i)/i}function bE(e){const t=f.useRef(e);return eN(()=>{t.current=e}),t}function xX(e){e===void 0&&(e={});const{placement:t="bottom",strategy:i="absolute",middleware:r=[],platform:o,elements:{reference:c,floating:u}={},transform:l=!0,whileElementsMounted:d,open:h}=e,[g,m]=f.useState({x:0,y:0,strategy:i,placement:t,middlewareData:{},isPositioned:!1}),[y,E]=f.useState(r);yN(y,r)||E(r);const[C,D]=f.useState(null),[b,w]=f.useState(null),N=f.useCallback(H=>{H!==R.current&&(R.current=H,D(H))},[]),x=f.useCallback(H=>{H!==k.current&&(k.current=H,w(H))},[]),_=c||C,P=u||b,R=f.useRef(null),k=f.useRef(null),j=f.useRef(g),V=d!=null,M=bE(d),F=bE(o),I=bE(h),A=f.useCallback(()=>{if(!R.current||!k.current)return;const H={placement:t,strategy:i,middleware:y};F.current&&(H.platform=F.current),vX(R.current,k.current,H).then(L=>{const z={...L,isPositioned:I.current!==!1};O.current&&!yN(j.current,z)&&(j.current=z,En.flushSync(()=>{m(z)}))})},[y,t,i,F,I]);eN(()=>{h===!1&&j.current.isPositioned&&(j.current.isPositioned=!1,m(H=>({...H,isPositioned:!1})))},[h]);const O=f.useRef(!1);eN(()=>(O.current=!0,()=>{O.current=!1}),[]),eN(()=>{if(_&&(R.current=_),P&&(k.current=P),_&&P){if(M.current)return M.current(_,P,A);A()}},[_,P,A,M,V]);const K=f.useMemo(()=>({reference:R,floating:k,setReference:N,setFloating:x}),[N,x]),q=f.useMemo(()=>({reference:_,floating:P}),[_,P]),Y=f.useMemo(()=>{const H={position:i,left:0,top:0};if(!q.floating)return H;const L=DP(q.floating,g.x),z=DP(q.floating,g.y);return l?{...H,transform:"translate("+L+"px, "+z+"px)",...Dk(q.floating)>=1.5&&{willChange:"transform"}}:{position:i,left:L,top:z}},[i,l,q.floating,g.x,g.y]);return f.useMemo(()=>({...g,update:A,refs:K,elements:q,floatingStyles:Y}),[g,A,K,q,Y])}const wX=e=>{function t(i){return{}.hasOwnProperty.call(i,"current")}return{name:"arrow",options:e,fn(i){const{element:r,padding:o}=typeof e=="function"?e(i):e;return r&&t(r)?r.current!=null?EP({element:r.current,padding:o}).fn(i):{}:r?EP({element:r,padding:o}).fn(i):{}}}},yX=(e,t)=>({...pX(e),options:[e,t]}),EX=(e,t)=>({...dX(e),options:[e,t]}),DX=(e,t)=>({...gX(e),options:[e,t]}),SX=(e,t)=>({...hX(e),options:[e,t]}),_X=(e,t)=>({...mX(e),options:[e,t]}),CX=(e,t)=>({...fX(e),options:[e,t]}),jX=(e,t)=>({...wX(e),options:[e,t]});var PX="Arrow",Sk=f.forwardRef((e,t)=>{const{children:i,width:r=10,height:o=5,...c}=e;return ae.jsx(Gt.svg,{...c,ref:t,width:r,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?i:ae.jsx("polygon",{points:"0,0 30,0 15,10"})})});Sk.displayName=PX;var kX=Sk;function r2(e){const[t,i]=f.useState(void 0);return ea(()=>{if(e){i({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const c=o[0];let u,l;if("borderBoxSize"in c){const d=c.borderBoxSize,h=Array.isArray(d)?d[0]:d;u=h.inlineSize,l=h.blockSize}else u=e.offsetWidth,l=e.offsetHeight;i({width:u,height:l})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else i(void 0)},[e]),t}var n2="Popper",[_k,Rc]=Aa(n2),[VX,Ck]=_k(n2),jk=e=>{const{__scopePopper:t,children:i}=e,[r,o]=f.useState(null);return ae.jsx(VX,{scope:t,anchor:r,onAnchorChange:o,children:i})};jk.displayName=n2;var Pk="PopperAnchor",kk=f.forwardRef((e,t)=>{const{__scopePopper:i,virtualRef:r,...o}=e,c=Ck(Pk,i),u=f.useRef(null),l=Is(t,u),d=f.useRef(null);return f.useEffect(()=>{const h=d.current;d.current=(r==null?void 0:r.current)||u.current,h!==d.current&&c.onAnchorChange(d.current)}),r?null:ae.jsx(Gt.div,{...o,ref:l})});kk.displayName=Pk;var o2="PopperContent",[TX,RX]=_k(o2),Vk=f.forwardRef((e,t)=>{var J,G,be,ne,Ee,ce;const{__scopePopper:i,side:r="bottom",sideOffset:o=0,align:c="center",alignOffset:u=0,arrowPadding:l=0,avoidCollisions:d=!0,collisionBoundary:h=[],collisionPadding:g=0,sticky:m="partial",hideWhenDetached:y=!1,updatePositionStrategy:E="optimized",onPlaced:C,...D}=e,b=Ck(o2,i),[w,N]=f.useState(null),x=Is(t,Be=>N(Be)),[_,P]=f.useState(null),R=r2(_),k=(R==null?void 0:R.width)??0,j=(R==null?void 0:R.height)??0,V=r+(c!=="center"?"-"+c:""),M=typeof g=="number"?g:{top:0,right:0,bottom:0,left:0,...g},F=Array.isArray(h)?h:[h],I=F.length>0,A={padding:M,boundary:F.filter(MX),altBoundary:I},{refs:O,floatingStyles:K,placement:q,isPositioned:Y,middlewareData:H}=xX({strategy:"fixed",placement:V,whileElementsMounted:(...Be)=>uX(...Be,{animationFrame:E==="always"}),elements:{reference:b.anchor},middleware:[yX({mainAxis:o+j,alignmentAxis:u}),d&&EX({mainAxis:!0,crossAxis:!1,limiter:m==="partial"?DX():void 0,...A}),d&&SX({...A}),_X({...A,apply:({elements:Be,rects:je,availableWidth:at,availableHeight:xt})=>{const{width:Le,height:ye}=je.reference,Me=Be.floating.style;Me.setProperty("--radix-popper-available-width",`${at}px`),Me.setProperty("--radix-popper-available-height",`${xt}px`),Me.setProperty("--radix-popper-anchor-width",`${Le}px`),Me.setProperty("--radix-popper-anchor-height",`${ye}px`)}}),_&&jX({element:_,padding:l}),LX({arrowWidth:k,arrowHeight:j}),y&&CX({strategy:"referenceHidden",...A})]}),[L,z]=Ak(q),$=Wi(C);ea(()=>{Y&&($==null||$())},[Y,$]);const W=(J=H.arrow)==null?void 0:J.x,ee=(G=H.arrow)==null?void 0:G.y,se=((be=H.arrow)==null?void 0:be.centerOffset)!==0,[ge,ve]=f.useState();return ea(()=>{w&&ve(window.getComputedStyle(w).zIndex)},[w]),ae.jsx("div",{ref:O.setFloating,"data-radix-popper-content-wrapper":"",style:{...K,transform:Y?K.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ge,"--radix-popper-transform-origin":[(ne=H.transformOrigin)==null?void 0:ne.x,(Ee=H.transformOrigin)==null?void 0:Ee.y].join(" "),...((ce=H.hide)==null?void 0:ce.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:ae.jsx(TX,{scope:i,placedSide:L,onArrowChange:P,arrowX:W,arrowY:ee,shouldHideArrow:se,children:ae.jsx(Gt.div,{"data-side":L,"data-align":z,...D,ref:x,style:{...D.style,animation:Y?void 0:"none"}})})})});Vk.displayName=o2;var Tk="PopperArrow",AX={top:"bottom",right:"left",bottom:"top",left:"right"},Rk=f.forwardRef(function(t,i){const{__scopePopper:r,...o}=t,c=RX(Tk,r),u=AX[c.placedSide];return ae.jsx("span",{ref:c.onArrowChange,style:{position:"absolute",left:c.arrowX,top:c.arrowY,[u]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[c.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[c.placedSide],visibility:c.shouldHideArrow?"hidden":void 0},children:ae.jsx(kX,{...o,ref:i,style:{...o.style,display:"block"}})})});Rk.displayName=Tk;function MX(e){return e!==null}var LX=e=>({name:"transformOrigin",options:e,fn(t){var b,w,N;const{placement:i,rects:r,middlewareData:o}=t,u=((b=o.arrow)==null?void 0:b.centerOffset)!==0,l=u?0:e.arrowWidth,d=u?0:e.arrowHeight,[h,g]=Ak(i),m={start:"0%",center:"50%",end:"100%"}[g],y=(((w=o.arrow)==null?void 0:w.x)??0)+l/2,E=(((N=o.arrow)==null?void 0:N.y)??0)+d/2;let C="",D="";return h==="bottom"?(C=u?m:`${y}px`,D=`${-d}px`):h==="top"?(C=u?m:`${y}px`,D=`${r.floating.height+d}px`):h==="right"?(C=`${-d}px`,D=u?m:`${E}px`):h==="left"&&(C=`${r.floating.width+d}px`,D=u?m:`${E}px`),{data:{x:C,y:D}}}});function Ak(e){const[t,i="center"]=e.split("-");return[t,i]}var Hf=jk,qf=kk,i0=Vk,a0=Rk,OX="Portal",Zd=f.forwardRef((e,t)=>{var l;const{container:i,...r}=e,[o,c]=f.useState(!1);ea(()=>c(!0),[]);const u=i||o&&((l=globalThis==null?void 0:globalThis.document)==null?void 0:l.body);return u?BH.createPortal(ae.jsx(Gt.div,{...r,ref:t}),u):null});Zd.displayName=OX;var IX=PS[" useInsertionEffect ".trim().toString()]||ea;function an({prop:e,defaultProp:t,onChange:i=()=>{},caller:r}){const[o,c,u]=FX({defaultProp:t,onChange:i}),l=e!==void 0,d=l?e:o;{const g=f.useRef(e!==void 0);f.useEffect(()=>{const m=g.current;m!==l&&console.warn(`${r} is changing from ${m?"controlled":"uncontrolled"} to ${l?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),g.current=l},[l,r])}const h=f.useCallback(g=>{var m;if(l){const y=BX(g)?g(e):g;y!==e&&((m=u.current)==null||m.call(u,y))}else c(g)},[l,e,c,u]);return[d,h]}function FX({defaultProp:e,onChange:t}){const[i,r]=f.useState(e),o=f.useRef(i),c=f.useRef(t);return IX(()=>{c.current=t},[t]),f.useEffect(()=>{var u;o.current!==i&&((u=c.current)==null||u.call(c,i),o.current=i)},[i,o]),[i,r,c]}function BX(e){return typeof e=="function"}function l2(e){const t=f.useRef({value:e,previous:e});return f.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var Mk=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),$X="VisuallyHidden",r0=f.forwardRef((e,t)=>ae.jsx(Gt.span,{...e,ref:t,style:{...Mk,...e.style}}));r0.displayName=$X;var zX=r0,UX=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},ed=new WeakMap,Sb=new WeakMap,_b={},NE=0,Lk=function(e){return e&&(e.host||Lk(e.parentNode))},WX=function(e,t){return t.map(function(i){if(e.contains(i))return i;var r=Lk(i);return r&&e.contains(r)?r:(console.error("aria-hidden",i,"in not contained inside",e,". Doing nothing"),null)}).filter(function(i){return!!i})},HX=function(e,t,i,r){var o=WX(t,Array.isArray(e)?e:[e]);_b[i]||(_b[i]=new WeakMap);var c=_b[i],u=[],l=new Set,d=new Set(o),h=function(m){!m||l.has(m)||(l.add(m),h(m.parentNode))};o.forEach(h);var g=function(m){!m||d.has(m)||Array.prototype.forEach.call(m.children,function(y){if(l.has(y))g(y);else try{var E=y.getAttribute(r),C=E!==null&&E!=="false",D=(ed.get(y)||0)+1,b=(c.get(y)||0)+1;ed.set(y,D),c.set(y,b),u.push(y),D===1&&C&&Sb.set(y,!0),b===1&&y.setAttribute(i,"true"),C||y.setAttribute(r,"true")}catch(w){console.error("aria-hidden: cannot operate on ",y,w)}})};return g(t),l.clear(),NE++,function(){u.forEach(function(m){var y=ed.get(m)-1,E=c.get(m)-1;ed.set(m,y),c.set(m,E),y||(Sb.has(m)||m.removeAttribute(r),Sb.delete(m)),E||m.removeAttribute(i)}),NE--,NE||(ed=new WeakMap,ed=new WeakMap,Sb=new WeakMap,_b={})}},n0=function(e,t,i){i===void 0&&(i="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=UX(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live], script"))),HX(r,o,i,"aria-hidden")):function(){return null}},Eo=function(){return Eo=Object.assign||function(t){for(var i,r=1,o=arguments.length;r<o;r++){i=arguments[r];for(var c in i)Object.prototype.hasOwnProperty.call(i,c)&&(t[c]=i[c])}return t},Eo.apply(this,arguments)};function Ok(e,t){var i={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(i[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(i[r[o]]=e[r[o]]);return i}function qX(e,t,i){if(i||arguments.length===2)for(var r=0,o=t.length,c;r<o;r++)(c||!(r in t))&&(c||(c=Array.prototype.slice.call(t,0,r)),c[r]=t[r]);return e.concat(c||Array.prototype.slice.call(t))}var tN="right-scroll-bar-position",sN="width-before-scroll-bar",KX="with-scroll-bars-hidden",GX="--removed-body-scroll-bar-size";function xE(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function YX(e,t){var i=f.useState(function(){return{value:e,callback:t,facade:{get current(){return i.value},set current(r){var o=i.value;o!==r&&(i.value=r,i.callback(r,o))}}}})[0];return i.callback=t,i.facade}var QX=typeof window<"u"?f.useLayoutEffect:f.useEffect,SP=new WeakMap;function XX(e,t){var i=YX(null,function(r){return e.forEach(function(o){return xE(o,r)})});return QX(function(){var r=SP.get(i);if(r){var o=new Set(r),c=new Set(e),u=i.current;o.forEach(function(l){c.has(l)||xE(l,null)}),c.forEach(function(l){o.has(l)||xE(l,u)})}SP.set(i,e)},[e]),i}function JX(e){return e}function ZX(e,t){t===void 0&&(t=JX);var i=[],r=!1,o={read:function(){if(r)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return i.length?i[i.length-1]:e},useMedium:function(c){var u=t(c,r);return i.push(u),function(){i=i.filter(function(l){return l!==u})}},assignSyncMedium:function(c){for(r=!0;i.length;){var u=i;i=[],u.forEach(c)}i={push:function(l){return c(l)},filter:function(){return i}}},assignMedium:function(c){r=!0;var u=[];if(i.length){var l=i;i=[],l.forEach(c),u=i}var d=function(){var g=u;u=[],g.forEach(c)},h=function(){return Promise.resolve().then(d)};h(),i={push:function(g){u.push(g),h()},filter:function(g){return u=u.filter(g),i}}}};return o}function eJ(e){e===void 0&&(e={});var t=ZX(null);return t.options=Eo({async:!0,ssr:!1},e),t}var Ik=function(e){var t=e.sideCar,i=Ok(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw new Error("Sidecar medium not found");return f.createElement(r,Eo({},i))};Ik.isSideCarExport=!0;function tJ(e,t){return e.useMedium(t),Ik}var Fk=eJ(),wE=function(){},o0=f.forwardRef(function(e,t){var i=f.useRef(null),r=f.useState({onScrollCapture:wE,onWheelCapture:wE,onTouchMoveCapture:wE}),o=r[0],c=r[1],u=e.forwardProps,l=e.children,d=e.className,h=e.removeScrollBar,g=e.enabled,m=e.shards,y=e.sideCar,E=e.noRelative,C=e.noIsolation,D=e.inert,b=e.allowPinchZoom,w=e.as,N=w===void 0?"div":w,x=e.gapMode,_=Ok(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),P=y,R=XX([i,t]),k=Eo(Eo({},_),o);return f.createElement(f.Fragment,null,g&&f.createElement(P,{sideCar:Fk,removeScrollBar:h,shards:m,noRelative:E,noIsolation:C,inert:D,setCallbacks:c,allowPinchZoom:!!b,lockRef:i,gapMode:x}),u?f.cloneElement(f.Children.only(l),Eo(Eo({},k),{ref:R})):f.createElement(N,Eo({},k,{className:d,ref:R}),l))});o0.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};o0.classNames={fullWidth:sN,zeroRight:tN};var sJ=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function iJ(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=sJ();return t&&e.setAttribute("nonce",t),e}function aJ(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function rJ(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var nJ=function(){var e=0,t=null;return{add:function(i){e==0&&(t=iJ())&&(aJ(t,i),rJ(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},oJ=function(){var e=nJ();return function(t,i){f.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&i])}},Bk=function(){var e=oJ(),t=function(i){var r=i.styles,o=i.dynamic;return e(r,o),null};return t},lJ={left:0,top:0,right:0,gap:0},yE=function(e){return parseInt(e||"",10)||0},cJ=function(e){var t=window.getComputedStyle(document.body),i=t[e==="padding"?"paddingLeft":"marginLeft"],r=t[e==="padding"?"paddingTop":"marginTop"],o=t[e==="padding"?"paddingRight":"marginRight"];return[yE(i),yE(r),yE(o)]},uJ=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return lJ;var t=cJ(e),i=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-i+t[2]-t[0])}},pJ=Bk(),vd="data-scroll-locked",dJ=function(e,t,i,r){var o=e.left,c=e.top,u=e.right,l=e.gap;return i===void 0&&(i="margin"),`
237
+ <%s key={someKey} {...props} />`,re,Ss,Ve,Ss),ni[Ss+re]=!0}}return te===r?Xs(de):ai(de),de}}function pi(te,Ce,Ue){return ui(te,Ce,Ue,!0)}function Ys(te,Ce,Ue){return ui(te,Ce,Ue,!1)}var Z=Ys,fe=pi;Yb.Fragment=r,Yb.jsx=Z,Yb.jsxs=fe})();y7.exports=Yb;var ae=y7.exports,E7=f.createContext(void 0),zs=e=>{const t=f.useContext(E7);if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},MK=({client:e,children:t})=>(f.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),ae.jsx(E7.Provider,{value:e,children:t})),D7=f.createContext(!1),S7=()=>f.useContext(D7);D7.Provider;function LK(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var OK=f.createContext(LK()),_7=()=>f.useContext(OK),C7=(e,t)=>{(e.suspense||e.throwOnError||e.experimental_prefetchInRender)&&(t.isReset()||(e.retryOnMount=!1))},j7=e=>{f.useEffect(()=>{e.clearReset()},[e])},P7=({result:e,errorResetBoundary:t,throwOnError:i,query:r,suspense:o})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(o&&e.data===void 0||f7(i,[e.error,r])),k7=e=>{if(e.suspense){const i=o=>o==="static"?o:Math.max(o??1e3,1e3),r=e.staleTime;e.staleTime=typeof r=="function"?(...o)=>i(r(...o)):i(r),typeof e.gcTime=="number"&&(e.gcTime=Math.max(e.gcTime,1e3))}},V7=(e,t)=>e.isLoading&&e.isFetching&&!t,ND=(e,t)=>(e==null?void 0:e.suspense)&&t.isPending,vN=(e,t,i)=>t.fetchOptimistic(e).catch(()=>{i.clearReset()});function IK({queries:e,...t},i){const r=zs(),o=S7(),c=_7(),u=f.useMemo(()=>e.map(D=>{const b=r.defaultQueryOptions(D);return b._optimisticResults=o?"isRestoring":"optimistic",b}),[e,r,o]);u.forEach(D=>{k7(D),C7(D,c)}),j7(c);const[l]=f.useState(()=>new TK(r,u,t)),[d,h,g]=l.getOptimisticResult(u,t.combine),m=!o&&t.subscribed!==!1;f.useSyncExternalStore(f.useCallback(D=>m?l.subscribe(Ji.batchCalls(D)):Za,[l,m]),()=>l.getCurrentResult(),()=>l.getCurrentResult()),f.useEffect(()=>{l.setQueries(u,t)},[u,t,l]);const E=d.some((D,b)=>ND(u[b],D))?d.flatMap((D,b)=>{const w=u[b];if(w){const N=new BS(r,w);if(ND(w,D))return vN(w,N,c);V7(D,o)&&vN(w,N,c)}return[]}):[];if(E.length>0)throw Promise.all(E);const C=d.find((D,b)=>{const w=u[b];return w&&P7({result:D,errorResetBoundary:c,throwOnError:w.throwOnError,query:r.getQueryCache().get(w.queryHash),suspense:w.suspense})});if(C!=null&&C.error)throw C.error;return h(g())}function FK(e,t,i){var m,y,E,C,D;if(typeof e!="object"||Array.isArray(e))throw new Error('Bad argument type. Starting with v5, only the "Object" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object');const r=S7(),o=_7(),c=zs(),u=c.defaultQueryOptions(e);(y=(m=c.getDefaultOptions().queries)==null?void 0:m._experimental_beforeQuery)==null||y.call(m,u),u.queryFn||console.error(`[${u.queryHash}]: No queryFn was passed as an option, and no default queryFn was found. The queryFn parameter is only optional when using a default queryFn. More info here: https://tanstack.com/query/latest/docs/framework/react/guides/default-query-function`),u._optimisticResults=r?"isRestoring":"optimistic",k7(u),C7(u,o),j7(o);const l=!c.getQueryCache().get(u.queryHash),[d]=f.useState(()=>new t(c,u)),h=d.getOptimisticResult(u),g=!r&&e.subscribed!==!1;if(f.useSyncExternalStore(f.useCallback(b=>{const w=g?d.subscribe(Ji.batchCalls(b)):Za;return d.updateResult(),w},[d,g]),()=>d.getCurrentResult(),()=>d.getCurrentResult()),f.useEffect(()=>{d.setOptions(u)},[u,d]),ND(u,h))throw vN(u,d,o);if(P7({result:h,errorResetBoundary:o,throwOnError:u.throwOnError,query:c.getQueryCache().get(u.queryHash),suspense:u.suspense}))throw h.error;if((C=(E=c.getDefaultOptions().queries)==null?void 0:E._experimental_afterQuery)==null||C.call(E,u,h),u.experimental_prefetchInRender&&!Ou&&V7(h,r)){const b=l?vN(u,d,o):(D=c.getQueryCache().get(u.queryHash))==null?void 0:D.promise;b==null||b.catch(Za).finally(()=>{d.updateResult()})}return u.notifyOnChangeProps?h:d.trackResult(h)}function st(e,t){return FK(e,BS)}function yt(e,t){const i=zs(),[r]=f.useState(()=>new kK(i,e));f.useEffect(()=>{r.setOptions(e)},[r,e]);const o=f.useSyncExternalStore(f.useCallback(u=>r.subscribe(Ji.batchCalls(u)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),c=f.useCallback((u,l)=>{r.mutate(u,l).catch(Za)},[r]);if(o.error&&f7(r.options.throwOnError,[o.error]))throw o.error;return{...o,mutate:c,mutateAsync:o.mutate}}class Bm extends Error{constructor({message:t,status:i,conflicts:r=[],details:o=null}){super(t),this.name="WorktreeApiError",this.status=i,this.conflicts=r,this.details=o}}async function Fu(e){var u;const t=new URLSearchParams,i=(u=e==null?void 0:e.ownerProjectId)==null?void 0:u.trim();i&&t.set("ownerProjectId",i);const r=t.size>0?`/api/worktrees?${t.toString()}`:"/api/worktrees",o=await fetch(r,{headers:{accept:"application/json"}});if(!o.ok)throw new Error(`Failed to load worktrees: HTTP ${o.status}`);const c=await o.json();if(!Array.isArray(c))throw new Error("Invalid worktree response payload");return c}async function Uj(e){var u;const t=new URLSearchParams,i=(u=e==null?void 0:e.ownerProjectId)==null?void 0:u.trim();i&&t.set("ownerProjectId",i);const r=t.size>0?`/api/worktrees/overview?${t.toString()}`:"/api/worktrees/overview",o=await fetch(r,{headers:{accept:"application/json"}});if(!o.ok)throw new Error(`Failed to load worktree overview: HTTP ${o.status}`);const c=await o.json();if(!Array.isArray(c))throw new Error("Invalid worktree overview payload");return c}async function Wj(e){var u;const t=new URLSearchParams;t.set("name","orchestrator.worktree.activity"),t.set("limit","20");const i=(u=e==null?void 0:e.ownerProjectId)==null?void 0:u.trim();i&&t.set("ownerProjectId",i);const r=await fetch(`/api/events?${t.toString()}`,{headers:{accept:"application/json"}});if(!r.ok)throw new Error(`Failed to load worktree activity: HTTP ${r.status}`);const o=await r.json(),c=o&&typeof o=="object"&&Array.isArray(o.items)?o.items??[]:null;if(!c)throw new Error("Invalid worktree activity payload");return c.map(l=>{if(!l||typeof l!="object"||Array.isArray(l))return null;const d=l;if(typeof d.id!="string"||typeof d.publishedAt!="string")return null;const h=d.payload&&typeof d.payload=="object"&&!Array.isArray(d.payload)?d.payload:{},g=typeof h.type=="string"?h.type:"started",m=typeof h.worktreeName=="string"&&h.worktreeName.trim().length>0?h.worktreeName.trim():"Unknown worktree",y=typeof h.message=="string"&&h.message.trim().length>0?h.message.trim():`Worktree '${m}' updated`;return{id:d.id,type:g,message:y,worktreeId:typeof h.worktreeId=="string"?h.worktreeId.trim():"",worktreeName:m,publishedAt:d.publishedAt}}).filter(l=>l!==null)}async function BK(e){const t=await fetch("/api/worktrees",{method:"POST",headers:{"content-type":"application/json",accept:"application/json"},body:JSON.stringify(e)});if(!t.ok)throw await If(t);return await t.json()}async function $K(e){const t=await fetch(`/api/worktrees/${encodeURIComponent(e)}/stop`,{method:"POST",headers:{accept:"application/json"}});if(!t.ok)throw await If(t);return await t.json()}async function zK(e,t){const i=(t==null?void 0:t.deleteBranch)??!0,r=new URLSearchParams({deleteBranch:i?"true":"false"}).toString(),o=await fetch(`/api/worktrees/${encodeURIComponent(e)}?${r}`,{method:"DELETE",headers:{accept:"application/json"}});if(!o.ok)throw await If(o)}async function UK(e){const t=await fetch(`/api/worktrees/${encodeURIComponent(e)}/merge/preview`,{method:"POST",headers:{accept:"application/json"}});if(!t.ok)throw await If(t);return await t.json()}async function WK(e){const t=await fetch(`/api/worktrees/${encodeURIComponent(e)}/merge`,{method:"POST",headers:{accept:"application/json"}});if(!t.ok)throw await If(t);return await t.json()}async function HK(){const e=await fetch("/api/branches",{headers:{accept:"application/json"}});if(!e.ok)throw new Error(`Failed to load branches: HTTP ${e.status}`);const t=await e.json();if(!t||typeof t!="object"||!Array.isArray(t.branches))throw new Error("Invalid branches response payload");return[...new Set(t.branches)].filter(i=>typeof i=="string"&&i.trim().length>0).map(i=>i.trim()).sort((i,r)=>i.localeCompare(r))}async function qK(){const e=await fetch("/api/templates",{headers:{accept:"application/json"}});if(!e.ok)throw new Error(`Failed to load templates: HTTP ${e.status}`);const t=await e.json(),i=Array.isArray(t)?t:t&&typeof t=="object"&&Array.isArray(t.templates)?t.templates:null;if(!i)throw new Error("Invalid templates response payload");const r=i.map(o=>{var u;const c=o.slug??o.id;return c?{slug:c,name:o.name??((u=o.fileName)==null?void 0:u.replace(/\.json$/i,""))??c}:null}).filter(o=>!!o);if(r.length===0)throw new Error("No templates available");return r}async function KK(e){const t=await fetch(`/api/templates/${encodeURIComponent(e)}`,{headers:{accept:"application/json"}});if(!t.ok)throw new Error(`Failed to load template: HTTP ${t.status}`);return await t.json()}async function If(e){const t=`Request failed with HTTP ${e.status}`;let i;try{i=(await e.text()).trim()}catch{return new Bm({message:t,status:e.status})}if(i.length===0)return new Bm({message:t,status:e.status});let r;try{r=JSON.parse(i)}catch{return new Bm({message:i,status:e.status})}if(!r||typeof r!="object"||Array.isArray(r))return new Bm({message:i,status:e.status});const o=r,c=typeof o.message=="string"&&o.message.trim().length>0?o.message.trim():Array.isArray(o.message)&&o.message.length>0?String(o.message[0]??t):t,u=Array.isArray(o.conflicts)?o.conflicts.map(l=>{if(!l||typeof l!="object")return null;const d=l;return typeof d.file!="string"||d.file.trim().length===0?null:{file:d.file.trim(),type:typeof d.type=="string"?d.type:"merge"}}).filter(l=>l!==null):[];return new Bm({message:c,status:e.status,conflicts:u,details:typeof o.details=="string"?o.details:null})}const zS=["/api/worktrees","/api/templates","/api/runtime","/api/registry"],xD="devchain:worktree-proxy-unavailable";function T7(e){var t;return e||(typeof window<"u"&&((t=window.location)!=null&&t.origin)?window.location.origin:"http://localhost")}function GK(e){const t=e.trim();return t?t.endsWith("/")?t.slice(0,-1):t:""}function YK(e){return/^[a-zA-Z][a-zA-Z\d+\-.]*:/.test(e)||e.startsWith("//")}function QK(e){return e==="/api"||e.startsWith("/api/")}function XK(e){return typeof e=="string"?e:typeof URL<"u"&&e instanceof URL?e.toString():typeof Request<"u"&&e instanceof Request?e.url:String(e)}function JK(e){const t=e.match(/^\/wt\/([^/]+)/);if(!t||typeof t[1]!="string")return null;try{return decodeURIComponent(t[1])}catch{return t[1]}}async function ZK(e){if(!(e.headers.get("content-type")??"").toLowerCase().includes("application/json"))return null;try{const i=await e.clone().json();return!i||typeof i!="object"||Array.isArray(i)?null:i}catch{return null}}async function eG(e,t,i){if(typeof window>"u"||e.status!==503&&e.status!==404)return;let r;try{r=new URL(t,i)}catch{return}const o=JK(r.pathname);if(!o)return;const c=await ZK(e),u=typeof(c==null?void 0:c.message)=="string"?c.message:null,l=typeof(c==null?void 0:c.worktreeName)=="string"?c.worktreeName:o;window.dispatchEvent(new CustomEvent(xD,{detail:{statusCode:e.status,worktreeName:l,message:u,requestUrl:r.pathname+r.search}}))}function tG(e,t){return t.some(i=>e===i||e.startsWith(`${i}/`))}function sG(e,t,i,r){if(typeof e=="string")return oE(e,{apiBase:t,origin:i,mainInstanceApiPrefixes:r});if(typeof URL<"u"&&e instanceof URL){const o=oE(e.toString(),{apiBase:t,origin:i,mainInstanceApiPrefixes:r});return o===e.toString()?e:new URL(o,i)}if(typeof Request<"u"&&e instanceof Request){const o=oE(e.url,{apiBase:t,origin:i,mainInstanceApiPrefixes:r});return o===e.url?e:new Request(o,e)}return e}function oE(e,t){const i=GK(t.apiBase);if(!i)return e;const r=T7(t.origin),o=t.mainInstanceApiPrefixes??zS;let c;try{c=new URL(e,r)}catch{return e}if(c.origin!==r)return e;const{pathname:u,search:l,hash:d}=c;if(u.startsWith("/wt/")||!QK(u)||tG(u,o))return e;const h=`${i}${u}`;return YK(e)?(c.pathname=h,c.toString()):`${h}${l}${d}`}function iG(e){if(typeof window>"u"||typeof window.fetch!="function")return()=>{};const t=T7(e.origin),i=e.mainInstanceApiPrefixes??zS,r=window.fetch,o=window.fetch.bind(window),c=async(u,l)=>{const d=sG(u,e.getApiBase(),t,i),h=XK(d),g=await o(d,l);return eG(g,h,t),g};return window.fetch=c,()=>{window.fetch===c&&(window.fetch=r)}}const jo=Object.create(null);jo.open="0";jo.close="1";jo.ping="2";jo.pong="3";jo.message="4";jo.upgrade="5";jo.noop="6";const Qb=Object.create(null);Object.keys(jo).forEach(e=>{Qb[jo[e]]=e});const wD={type:"error",data:"parser error"},R7=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",A7=typeof ArrayBuffer=="function",M7=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,US=({type:e,data:t},i,r)=>R7&&t instanceof Blob?i?r(t):Hj(t,r):A7&&(t instanceof ArrayBuffer||M7(t))?i?r(t):Hj(new Blob([t]),r):r(jo[e]+(t||"")),Hj=(e,t)=>{const i=new FileReader;return i.onload=function(){const r=i.result.split(",")[1];t("b"+(r||""))},i.readAsDataURL(e)};function qj(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let lE;function aG(e,t){if(R7&&e.data instanceof Blob)return e.data.arrayBuffer().then(qj).then(t);if(A7&&(e.data instanceof ArrayBuffer||M7(e.data)))return t(qj(e.data));US(e,!1,i=>{lE||(lE=new TextEncoder),t(lE.encode(i))})}const Kj="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Xm=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e<Kj.length;e++)Xm[Kj.charCodeAt(e)]=e;const rG=e=>{let t=e.length*.75,i=e.length,r,o=0,c,u,l,d;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);const h=new ArrayBuffer(t),g=new Uint8Array(h);for(r=0;r<i;r+=4)c=Xm[e.charCodeAt(r)],u=Xm[e.charCodeAt(r+1)],l=Xm[e.charCodeAt(r+2)],d=Xm[e.charCodeAt(r+3)],g[o++]=c<<2|u>>4,g[o++]=(u&15)<<4|l>>2,g[o++]=(l&3)<<6|d&63;return h},nG=typeof ArrayBuffer=="function",WS=(e,t)=>{if(typeof e!="string")return{type:"message",data:L7(e,t)};const i=e.charAt(0);return i==="b"?{type:"message",data:oG(e.substring(1),t)}:Qb[i]?e.length>1?{type:Qb[i],data:e.substring(1)}:{type:Qb[i]}:wD},oG=(e,t)=>{if(nG){const i=rG(e);return L7(i,t)}else return{base64:!0,data:e}},L7=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},O7="",lG=(e,t)=>{const i=e.length,r=new Array(i);let o=0;e.forEach((c,u)=>{US(c,!1,l=>{r[u]=l,++o===i&&t(r.join(O7))})})},cG=(e,t)=>{const i=e.split(O7),r=[];for(let o=0;o<i.length;o++){const c=WS(i[o],t);if(r.push(c),c.type==="error")break}return r};function uG(){return new TransformStream({transform(e,t){aG(e,i=>{const r=i.length;let o;if(r<126)o=new Uint8Array(1),new DataView(o.buffer).setUint8(0,r);else if(r<65536){o=new Uint8Array(3);const c=new DataView(o.buffer);c.setUint8(0,126),c.setUint16(1,r)}else{o=new Uint8Array(9);const c=new DataView(o.buffer);c.setUint8(0,127),c.setBigUint64(1,BigInt(r))}e.data&&typeof e.data!="string"&&(o[0]|=128),t.enqueue(o),t.enqueue(i)})}})}let cE;function xb(e){return e.reduce((t,i)=>t+i.length,0)}function wb(e,t){if(e[0].length===t)return e.shift();const i=new Uint8Array(t);let r=0;for(let o=0;o<t;o++)i[o]=e[0][r++],r===e[0].length&&(e.shift(),r=0);return e.length&&r<e[0].length&&(e[0]=e[0].slice(r)),i}function pG(e,t){cE||(cE=new TextDecoder);const i=[];let r=0,o=-1,c=!1;return new TransformStream({transform(u,l){for(i.push(u);;){if(r===0){if(xb(i)<1)break;const d=wb(i,1);c=(d[0]&128)===128,o=d[0]&127,o<126?r=3:o===126?r=1:r=2}else if(r===1){if(xb(i)<2)break;const d=wb(i,2);o=new DataView(d.buffer,d.byteOffset,d.length).getUint16(0),r=3}else if(r===2){if(xb(i)<8)break;const d=wb(i,8),h=new DataView(d.buffer,d.byteOffset,d.length),g=h.getUint32(0);if(g>Math.pow(2,21)-1){l.enqueue(wD);break}o=g*Math.pow(2,32)+h.getUint32(4),r=3}else{if(xb(i)<o)break;const d=wb(i,o);l.enqueue(WS(c?d:cE.decode(d),t)),r=0}if(o===0||o>e){l.enqueue(wD);break}}}})}const I7=4;function ha(e){if(e)return dG(e)}function dG(e){for(var t in ha.prototype)e[t]=ha.prototype[t];return e}ha.prototype.on=ha.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};ha.prototype.once=function(e,t){function i(){this.off(e,i),t.apply(this,arguments)}return i.fn=t,this.on(e,i),this};ha.prototype.off=ha.prototype.removeListener=ha.prototype.removeAllListeners=ha.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var i=this._callbacks["$"+e];if(!i)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var r,o=0;o<i.length;o++)if(r=i[o],r===t||r.fn===t){i.splice(o,1);break}return i.length===0&&delete this._callbacks["$"+e],this};ha.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),i=this._callbacks["$"+e],r=1;r<arguments.length;r++)t[r-1]=arguments[r];if(i){i=i.slice(0);for(var r=0,o=i.length;r<o;++r)i[r].apply(this,t)}return this};ha.prototype.emitReserved=ha.prototype.emit;ha.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]};ha.prototype.hasListeners=function(e){return!!this.listeners(e).length};const KN=typeof Promise=="function"&&typeof Promise.resolve=="function"?t=>Promise.resolve().then(t):(t,i)=>i(t,0),Nn=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),hG="arraybuffer";function F7(e,...t){return t.reduce((i,r)=>(e.hasOwnProperty(r)&&(i[r]=e[r]),i),{})}const mG=Nn.setTimeout,fG=Nn.clearTimeout;function GN(e,t){t.useNativeTimers?(e.setTimeoutFn=mG.bind(Nn),e.clearTimeoutFn=fG.bind(Nn)):(e.setTimeoutFn=Nn.setTimeout.bind(Nn),e.clearTimeoutFn=Nn.clearTimeout.bind(Nn))}const gG=1.33;function vG(e){return typeof e=="string"?bG(e):Math.ceil((e.byteLength||e.size)*gG)}function bG(e){let t=0,i=0;for(let r=0,o=e.length;r<o;r++)t=e.charCodeAt(r),t<128?i+=1:t<2048?i+=2:t<55296||t>=57344?i+=3:(r++,i+=4);return i}function B7(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function NG(e){let t="";for(let i in e)e.hasOwnProperty(i)&&(t.length&&(t+="&"),t+=encodeURIComponent(i)+"="+encodeURIComponent(e[i]));return t}function xG(e){let t={},i=e.split("&");for(let r=0,o=i.length;r<o;r++){let c=i[r].split("=");t[decodeURIComponent(c[0])]=decodeURIComponent(c[1])}return t}class wG extends Error{constructor(t,i,r){super(t),this.description=i,this.context=r,this.type="TransportError"}}class HS extends ha{constructor(t){super(),this.writable=!1,GN(this,t),this.opts=t,this.query=t.query,this.socket=t.socket,this.supportsBinary=!t.forceBase64}onError(t,i,r){return super.emitReserved("error",new wG(t,i,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(t){this.readyState==="open"&&this.write(t)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(t){const i=WS(t,this.socket.binaryType);this.onPacket(i)}onPacket(t){super.emitReserved("packet",t)}onClose(t){this.readyState="closed",super.emitReserved("close",t)}pause(t){}createUri(t,i={}){return t+"://"+this._hostname()+this._port()+this.opts.path+this._query(i)}_hostname(){const t=this.opts.hostname;return t.indexOf(":")===-1?t:"["+t+"]"}_port(){return this.opts.port&&(this.opts.secure&&+(this.opts.port!==443)||!this.opts.secure&&Number(this.opts.port)!==80)?":"+this.opts.port:""}_query(t){const i=NG(t);return i.length?"?"+i:""}}class yG extends HS{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(t){this.readyState="pausing";const i=()=>{this.readyState="paused",t()};if(this._polling||!this.writable){let r=0;this._polling&&(r++,this.once("pollComplete",function(){--r||i()})),this.writable||(r++,this.once("drain",function(){--r||i()}))}else i()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){const i=r=>{if(this.readyState==="opening"&&r.type==="open"&&this.onOpen(),r.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(r)};cG(t,this.socket.binaryType).forEach(i),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const t=()=>{this.write([{type:"close"}])};this.readyState==="open"?t():this.once("open",t)}write(t){this.writable=!1,lG(t,i=>{this.doWrite(i,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const t=this.opts.secure?"https":"http",i=this.query||{};return this.opts.timestampRequests!==!1&&(i[this.opts.timestampParam]=B7()),!this.supportsBinary&&!i.sid&&(i.b64=1),this.createUri(t,i)}}let $7=!1;try{$7=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const EG=$7;function DG(){}class SG extends yG{constructor(t){if(super(t),typeof location<"u"){const i=location.protocol==="https:";let r=location.port;r||(r=i?"443":"80"),this.xd=typeof location<"u"&&t.hostname!==location.hostname||r!==t.port}}doWrite(t,i){const r=this.request({method:"POST",data:t});r.on("success",i),r.on("error",(o,c)=>{this.onError("xhr post error",o,c)})}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(i,r)=>{this.onError("xhr poll error",i,r)}),this.pollXhr=t}}let fd=class Xb extends ha{constructor(t,i,r){super(),this.createRequest=t,GN(this,r),this._opts=r,this._method=r.method||"GET",this._uri=i,this._data=r.data!==void 0?r.data:null,this._create()}_create(){var t;const i=F7(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");i.xdomain=!!this._opts.xd;const r=this._xhr=this.createRequest(i);try{r.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let o in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(o)&&r.setRequestHeader(o,this._opts.extraHeaders[o])}}catch{}if(this._method==="POST")try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{r.setRequestHeader("Accept","*/*")}catch{}(t=this._opts.cookieJar)===null||t===void 0||t.addCookies(r),"withCredentials"in r&&(r.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(r.timeout=this._opts.requestTimeout),r.onreadystatechange=()=>{var o;r.readyState===3&&((o=this._opts.cookieJar)===null||o===void 0||o.parseCookies(r.getResponseHeader("set-cookie"))),r.readyState===4&&(r.status===200||r.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof r.status=="number"?r.status:0)},0))},r.send(this._data)}catch(o){this.setTimeoutFn(()=>{this._onError(o)},0);return}typeof document<"u"&&(this._index=Xb.requestsCount++,Xb.requests[this._index]=this)}_onError(t){this.emitReserved("error",t,this._xhr),this._cleanup(!0)}_cleanup(t){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=DG,t)try{this._xhr.abort()}catch{}typeof document<"u"&&delete Xb.requests[this._index],this._xhr=null}}_onLoad(){const t=this._xhr.responseText;t!==null&&(this.emitReserved("data",t),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}};fd.requestsCount=0;fd.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",Gj);else if(typeof addEventListener=="function"){const e="onpagehide"in Nn?"pagehide":"unload";addEventListener(e,Gj,!1)}}function Gj(){for(let e in fd.requests)fd.requests.hasOwnProperty(e)&&fd.requests[e].abort()}const _G=function(){const e=z7({xdomain:!1});return e&&e.responseType!==null}();class CG extends SG{constructor(t){super(t);const i=t&&t.forceBase64;this.supportsBinary=_G&&!i}request(t={}){return Object.assign(t,{xd:this.xd},this.opts),new fd(z7,this.uri(),t)}}function z7(e){const t=e.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!t||EG))return new XMLHttpRequest}catch{}if(!t)try{return new Nn[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const U7=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class jG extends HS{get name(){return"websocket"}doOpen(){const t=this.uri(),i=this.opts.protocols,r=U7?{}:F7(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,i,r)}catch(o){return this.emitReserved("error",o)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let i=0;i<t.length;i++){const r=t[i],o=i===t.length-1;US(r,this.supportsBinary,c=>{try{this.doWrite(r,c)}catch{}o&&KN(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",i=this.query||{};return this.opts.timestampRequests&&(i[this.opts.timestampParam]=B7()),this.supportsBinary||(i.b64=1),this.createUri(t,i)}}const uE=Nn.WebSocket||Nn.MozWebSocket;class PG extends jG{createSocket(t,i,r){return U7?new uE(t,i,r):i?new uE(t,i):new uE(t)}doWrite(t,i){this.ws.send(i)}}class kG extends HS{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(t){return this.emitReserved("error",t)}this._transport.closed.then(()=>{this.onClose()}).catch(t=>{this.onError("webtransport error",t)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(t=>{const i=pG(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=t.readable.pipeThrough(i).getReader(),o=uG();o.readable.pipeTo(t.writable),this._writer=o.writable.getWriter();const c=()=>{r.read().then(({done:l,value:d})=>{l||(this.onPacket(d),c())}).catch(l=>{})};c();const u={type:"open"};this.query.sid&&(u.data=`{"sid":"${this.query.sid}"}`),this._writer.write(u).then(()=>this.onOpen())})})}write(t){this.writable=!1;for(let i=0;i<t.length;i++){const r=t[i],o=i===t.length-1;this._writer.write(r).then(()=>{o&&KN(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var t;(t=this._transport)===null||t===void 0||t.close()}}const VG={websocket:PG,webtransport:kG,polling:CG},TG=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,RG=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function yD(e){if(e.length>8e3)throw"URI too long";const t=e,i=e.indexOf("["),r=e.indexOf("]");i!=-1&&r!=-1&&(e=e.substring(0,i)+e.substring(i,r).replace(/:/g,";")+e.substring(r,e.length));let o=TG.exec(e||""),c={},u=14;for(;u--;)c[RG[u]]=o[u]||"";return i!=-1&&r!=-1&&(c.source=t,c.host=c.host.substring(1,c.host.length-1).replace(/;/g,":"),c.authority=c.authority.replace("[","").replace("]","").replace(/;/g,":"),c.ipv6uri=!0),c.pathNames=AG(c,c.path),c.queryKey=MG(c,c.query),c}function AG(e,t){const i=/\/{2,9}/g,r=t.replace(i,"/").split("/");return(t.slice(0,1)=="/"||t.length===0)&&r.splice(0,1),t.slice(-1)=="/"&&r.splice(r.length-1,1),r}function MG(e,t){const i={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,o,c){o&&(i[o]=c)}),i}const ED=typeof addEventListener=="function"&&typeof removeEventListener=="function",Jb=[];ED&&addEventListener("offline",()=>{Jb.forEach(e=>e())},!1);class yc extends ha{constructor(t,i){if(super(),this.binaryType=hG,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,t&&typeof t=="object"&&(i=t,t=null),t){const r=yD(t);i.hostname=r.host,i.secure=r.protocol==="https"||r.protocol==="wss",i.port=r.port,r.query&&(i.query=r.query)}else i.host&&(i.hostname=yD(i.host).host);GN(this,i),this.secure=i.secure!=null?i.secure:typeof location<"u"&&location.protocol==="https:",i.hostname&&!i.port&&(i.port=this.secure?"443":"80"),this.hostname=i.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=i.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},i.transports.forEach(r=>{const o=r.prototype.name;this.transports.push(o),this._transportsByName[o]=r}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},i),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=xG(this.opts.query)),ED&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Jb.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(t){const i=Object.assign({},this.opts.query);i.EIO=I7,i.transport=t,this.id&&(i.sid=this.id);const r=Object.assign({},this.opts,{query:i,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new this._transportsByName[t](r)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const t=this.opts.rememberUpgrade&&yc.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const i=this.createTransport(t);i.open(),this.setTransport(i)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",i=>this._onClose("transport close",i))}onOpen(){this.readyState="open",yc.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",t),this.emitReserved("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const i=new Error("server error");i.code=t.data,this._onError(i);break;case"message":this.emitReserved("data",t.data),this.emitReserved("message",t.data);break}}onHandshake(t){this.emitReserved("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this._pingInterval=t.pingInterval,this._pingTimeout=t.pingTimeout,this._maxPayload=t.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const t=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+t,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},t),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this._getWritablePackets();this.transport.send(t),this._prevBufferLen=t.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let i=1;for(let r=0;r<this.writeBuffer.length;r++){const o=this.writeBuffer[r].data;if(o&&(i+=vG(o)),r>0&&i>this._maxPayload)return this.writeBuffer.slice(0,r);i+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const t=Date.now()>this._pingTimeoutTime;return t&&(this._pingTimeoutTime=0,KN(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),t}write(t,i,r){return this._sendPacket("message",t,i,r),this}send(t,i,r){return this._sendPacket("message",t,i,r),this}_sendPacket(t,i,r,o){if(typeof i=="function"&&(o=i,i=void 0),typeof r=="function"&&(o=r,r=null),this.readyState==="closing"||this.readyState==="closed")return;r=r||{},r.compress=r.compress!==!1;const c={type:t,data:i,options:r};this.emitReserved("packetCreate",c),this.writeBuffer.push(c),o&&this.once("flush",o),this.flush()}close(){const t=()=>{this._onClose("forced close"),this.transport.close()},i=()=>{this.off("upgrade",i),this.off("upgradeError",i),t()},r=()=>{this.once("upgrade",i),this.once("upgradeError",i)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?r():t()}):this.upgrading?r():t()),this}_onError(t){if(yc.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",t),this._onClose("transport error",t)}_onClose(t,i){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),ED&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const r=Jb.indexOf(this._offlineEventListener);r!==-1&&Jb.splice(r,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,i),this.writeBuffer=[],this._prevBufferLen=0}}}yc.protocol=I7;class LG extends yc{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let t=0;t<this._upgrades.length;t++)this._probe(this._upgrades[t])}_probe(t){let i=this.createTransport(t),r=!1;yc.priorWebsocketSuccess=!1;const o=()=>{r||(i.send([{type:"ping",data:"probe"}]),i.once("packet",m=>{if(!r)if(m.type==="pong"&&m.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",i),!i)return;yc.priorWebsocketSuccess=i.name==="websocket",this.transport.pause(()=>{r||this.readyState!=="closed"&&(g(),this.setTransport(i),i.send([{type:"upgrade"}]),this.emitReserved("upgrade",i),i=null,this.upgrading=!1,this.flush())})}else{const y=new Error("probe error");y.transport=i.name,this.emitReserved("upgradeError",y)}}))};function c(){r||(r=!0,g(),i.close(),i=null)}const u=m=>{const y=new Error("probe error: "+m);y.transport=i.name,c(),this.emitReserved("upgradeError",y)};function l(){u("transport closed")}function d(){u("socket closed")}function h(m){i&&m.name!==i.name&&c()}const g=()=>{i.removeListener("open",o),i.removeListener("error",u),i.removeListener("close",l),this.off("close",d),this.off("upgrading",h)};i.once("open",o),i.once("error",u),i.once("close",l),this.once("close",d),this.once("upgrading",h),this._upgrades.indexOf("webtransport")!==-1&&t!=="webtransport"?this.setTimeoutFn(()=>{r||i.open()},200):i.open()}onHandshake(t){this._upgrades=this._filterUpgrades(t.upgrades),super.onHandshake(t)}_filterUpgrades(t){const i=[];for(let r=0;r<t.length;r++)~this.transports.indexOf(t[r])&&i.push(t[r]);return i}}let OG=class extends LG{constructor(t,i={}){const r=typeof t=="object"?t:i;(!r.transports||r.transports&&typeof r.transports[0]=="string")&&(r.transports=(r.transports||["polling","websocket","webtransport"]).map(o=>VG[o]).filter(o=>!!o)),super(t,r)}};function IG(e,t="",i){let r=e;i=i||typeof location<"u"&&location,e==null&&(e=i.protocol+"//"+i.host),typeof e=="string"&&(e.charAt(0)==="/"&&(e.charAt(1)==="/"?e=i.protocol+e:e=i.host+e),/^(https?|wss?):\/\//.test(e)||(typeof i<"u"?e=i.protocol+"//"+e:e="https://"+e),r=yD(e)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const c=r.host.indexOf(":")!==-1?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+c+":"+r.port+t,r.href=r.protocol+"://"+c+(i&&i.port===r.port?"":":"+r.port),r}const FG=typeof ArrayBuffer=="function",BG=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,W7=Object.prototype.toString,$G=typeof Blob=="function"||typeof Blob<"u"&&W7.call(Blob)==="[object BlobConstructor]",zG=typeof File=="function"||typeof File<"u"&&W7.call(File)==="[object FileConstructor]";function qS(e){return FG&&(e instanceof ArrayBuffer||BG(e))||$G&&e instanceof Blob||zG&&e instanceof File}function Zb(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let i=0,r=e.length;i<r;i++)if(Zb(e[i]))return!0;return!1}if(qS(e))return!0;if(e.toJSON&&typeof e.toJSON=="function"&&arguments.length===1)return Zb(e.toJSON(),!0);for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)&&Zb(e[i]))return!0;return!1}function UG(e){const t=[],i=e.data,r=e;return r.data=DD(i,t),r.attachments=t.length,{packet:r,buffers:t}}function DD(e,t){if(!e)return e;if(qS(e)){const i={_placeholder:!0,num:t.length};return t.push(e),i}else if(Array.isArray(e)){const i=new Array(e.length);for(let r=0;r<e.length;r++)i[r]=DD(e[r],t);return i}else if(typeof e=="object"&&!(e instanceof Date)){const i={};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i[r]=DD(e[r],t));return i}return e}function WG(e,t){return e.data=SD(e.data,t),delete e.attachments,e}function SD(e,t){if(!e)return e;if(e&&e._placeholder===!0){if(typeof e.num=="number"&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}else if(Array.isArray(e))for(let i=0;i<e.length;i++)e[i]=SD(e[i],t);else if(typeof e=="object")for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(e[i]=SD(e[i],t));return e}const HG=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"],qG=5;var li;(function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"})(li||(li={}));class KG{constructor(t){this.replacer=t}encode(t){return(t.type===li.EVENT||t.type===li.ACK)&&Zb(t)?this.encodeAsBinary({type:t.type===li.EVENT?li.BINARY_EVENT:li.BINARY_ACK,nsp:t.nsp,data:t.data,id:t.id}):[this.encodeAsString(t)]}encodeAsString(t){let i=""+t.type;return(t.type===li.BINARY_EVENT||t.type===li.BINARY_ACK)&&(i+=t.attachments+"-"),t.nsp&&t.nsp!=="/"&&(i+=t.nsp+","),t.id!=null&&(i+=t.id),t.data!=null&&(i+=JSON.stringify(t.data,this.replacer)),i}encodeAsBinary(t){const i=UG(t),r=this.encodeAsString(i.packet),o=i.buffers;return o.unshift(r),o}}function Yj(e){return Object.prototype.toString.call(e)==="[object Object]"}class KS extends ha{constructor(t){super(),this.reviver=t}add(t){let i;if(typeof t=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");i=this.decodeString(t);const r=i.type===li.BINARY_EVENT;r||i.type===li.BINARY_ACK?(i.type=r?li.EVENT:li.ACK,this.reconstructor=new GG(i),i.attachments===0&&super.emitReserved("decoded",i)):super.emitReserved("decoded",i)}else if(qS(t)||t.base64)if(this.reconstructor)i=this.reconstructor.takeBinaryData(t),i&&(this.reconstructor=null,super.emitReserved("decoded",i));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+t)}decodeString(t){let i=0;const r={type:Number(t.charAt(0))};if(li[r.type]===void 0)throw new Error("unknown packet type "+r.type);if(r.type===li.BINARY_EVENT||r.type===li.BINARY_ACK){const c=i+1;for(;t.charAt(++i)!=="-"&&i!=t.length;);const u=t.substring(c,i);if(u!=Number(u)||t.charAt(i)!=="-")throw new Error("Illegal attachments");r.attachments=Number(u)}if(t.charAt(i+1)==="/"){const c=i+1;for(;++i&&!(t.charAt(i)===","||i===t.length););r.nsp=t.substring(c,i)}else r.nsp="/";const o=t.charAt(i+1);if(o!==""&&Number(o)==o){const c=i+1;for(;++i;){const u=t.charAt(i);if(u==null||Number(u)!=u){--i;break}if(i===t.length)break}r.id=Number(t.substring(c,i+1))}if(t.charAt(++i)){const c=this.tryParse(t.substr(i));if(KS.isPayloadValid(r.type,c))r.data=c;else throw new Error("invalid payload")}return r}tryParse(t){try{return JSON.parse(t,this.reviver)}catch{return!1}}static isPayloadValid(t,i){switch(t){case li.CONNECT:return Yj(i);case li.DISCONNECT:return i===void 0;case li.CONNECT_ERROR:return typeof i=="string"||Yj(i);case li.EVENT:case li.BINARY_EVENT:return Array.isArray(i)&&(typeof i[0]=="number"||typeof i[0]=="string"&&HG.indexOf(i[0])===-1);case li.ACK:case li.BINARY_ACK:return Array.isArray(i)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class GG{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const i=WG(this.reconPack,this.buffers);return this.finishedReconstruction(),i}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const YG=Object.freeze(Object.defineProperty({__proto__:null,Decoder:KS,Encoder:KG,get PacketType(){return li},protocol:qG},Symbol.toStringTag,{value:"Module"}));function Gn(e,t,i){return e.on(t,i),function(){e.off(t,i)}}const QG=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class H7 extends ha{constructor(t,i,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=t,this.nsp=i,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const t=this.io;this.subs=[Gn(t,"open",this.onopen.bind(this)),Gn(t,"packet",this.onpacket.bind(this)),Gn(t,"error",this.onerror.bind(this)),Gn(t,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...t){return t.unshift("message"),this.emit.apply(this,t),this}emit(t,...i){var r,o,c;if(QG.hasOwnProperty(t))throw new Error('"'+t.toString()+'" is a reserved event name');if(i.unshift(t),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(i),this;const u={type:li.EVENT,data:i};if(u.options={},u.options.compress=this.flags.compress!==!1,typeof i[i.length-1]=="function"){const g=this.ids++,m=i.pop();this._registerAckCallback(g,m),u.id=g}const l=(o=(r=this.io.engine)===null||r===void 0?void 0:r.transport)===null||o===void 0?void 0:o.writable,d=this.connected&&!(!((c=this.io.engine)===null||c===void 0)&&c._hasPingExpired());return this.flags.volatile&&!l||(d?(this.notifyOutgoingListeners(u),this.packet(u)):this.sendBuffer.push(u)),this.flags={},this}_registerAckCallback(t,i){var r;const o=(r=this.flags.timeout)!==null&&r!==void 0?r:this._opts.ackTimeout;if(o===void 0){this.acks[t]=i;return}const c=this.io.setTimeoutFn(()=>{delete this.acks[t];for(let l=0;l<this.sendBuffer.length;l++)this.sendBuffer[l].id===t&&this.sendBuffer.splice(l,1);i.call(this,new Error("operation has timed out"))},o),u=(...l)=>{this.io.clearTimeoutFn(c),i.apply(this,l)};u.withError=!0,this.acks[t]=u}emitWithAck(t,...i){return new Promise((r,o)=>{const c=(u,l)=>u?o(u):r(l);c.withError=!0,i.push(c),this.emit(t,...i)})}_addToQueue(t){let i;typeof t[t.length-1]=="function"&&(i=t.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push((o,...c)=>r!==this._queue[0]?void 0:(o!==null?r.tryCount>this._opts.retries&&(this._queue.shift(),i&&i(o)):(this._queue.shift(),i&&i(null,...c)),r.pending=!1,this._drainQueue())),this._queue.push(r),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||this._queue.length===0)return;const i=this._queue[0];i.pending&&!t||(i.pending=!0,i.tryCount++,this.flags=i.flags,this.emit.apply(this,i.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this._sendConnectPacket(t)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:li.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,i){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,i),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(t=>{if(!this.sendBuffer.some(r=>String(r.id)===t)){const r=this.acks[t];delete this.acks[t],r.withError&&r.call(this,new Error("socket has been disconnected"))}})}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case li.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case li.EVENT:case li.BINARY_EVENT:this.onevent(t);break;case li.ACK:case li.BINARY_ACK:this.onack(t);break;case li.DISCONNECT:this.ondisconnect();break;case li.CONNECT_ERROR:this.destroy();const r=new Error(t.data.message);r.data=t.data.data,this.emitReserved("connect_error",r);break}}onevent(t){const i=t.data||[];t.id!=null&&i.push(this.ack(t.id)),this.connected?this.emitEvent(i):this.receiveBuffer.push(Object.freeze(i))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const i=this._anyListeners.slice();for(const r of i)r.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&typeof t[t.length-1]=="string"&&(this._lastOffset=t[t.length-1])}ack(t){const i=this;let r=!1;return function(...o){r||(r=!0,i.packet({type:li.ACK,id:t,data:o}))}}onack(t){const i=this.acks[t.id];typeof i=="function"&&(delete this.acks[t.id],i.withError&&t.data.unshift(null),i.apply(this,t.data))}onconnect(t,i){this.id=t,this.recovered=i&&this._pid===i,this._pid=i,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(t=>this.emitEvent(t)),this.receiveBuffer=[],this.sendBuffer.forEach(t=>{this.notifyOutgoingListeners(t),this.packet(t)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(t=>t()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:li.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const i=this._anyListeners;for(let r=0;r<i.length;r++)if(t===i[r])return i.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(t){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(t),this}prependAnyOutgoing(t){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(t),this}offAnyOutgoing(t){if(!this._anyOutgoingListeners)return this;if(t){const i=this._anyOutgoingListeners;for(let r=0;r<i.length;r++)if(t===i[r])return i.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(t){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const i=this._anyOutgoingListeners.slice();for(const r of i)r.apply(this,t.data)}}}function Gd(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Gd.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),i=Math.floor(t*this.jitter*e);e=Math.floor(t*10)&1?e+i:e-i}return Math.min(e,this.max)|0};Gd.prototype.reset=function(){this.attempts=0};Gd.prototype.setMin=function(e){this.ms=e};Gd.prototype.setMax=function(e){this.max=e};Gd.prototype.setJitter=function(e){this.jitter=e};class _D extends ha{constructor(t,i){var r;super(),this.nsps={},this.subs=[],t&&typeof t=="object"&&(i=t,t=void 0),i=i||{},i.path=i.path||"/socket.io",this.opts=i,GN(this,i),this.reconnection(i.reconnection!==!1),this.reconnectionAttempts(i.reconnectionAttempts||1/0),this.reconnectionDelay(i.reconnectionDelay||1e3),this.reconnectionDelayMax(i.reconnectionDelayMax||5e3),this.randomizationFactor((r=i.randomizationFactor)!==null&&r!==void 0?r:.5),this.backoff=new Gd({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(i.timeout==null?2e4:i.timeout),this._readyState="closed",this.uri=t;const o=i.parser||YG;this.encoder=new o.Encoder,this.decoder=new o.Decoder,this._autoConnect=i.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,t||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(t){return t===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var i;return t===void 0?this._reconnectionDelay:(this._reconnectionDelay=t,(i=this.backoff)===null||i===void 0||i.setMin(t),this)}randomizationFactor(t){var i;return t===void 0?this._randomizationFactor:(this._randomizationFactor=t,(i=this.backoff)===null||i===void 0||i.setJitter(t),this)}reconnectionDelayMax(t){var i;return t===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,(i=this.backoff)===null||i===void 0||i.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new OG(this.uri,this.opts);const i=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const o=Gn(i,"open",function(){r.onopen(),t&&t()}),c=l=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",l),t?t(l):this.maybeReconnectOnOpen()},u=Gn(i,"error",c);if(this._timeout!==!1){const l=this._timeout,d=this.setTimeoutFn(()=>{o(),c(new Error("timeout")),i.close()},l);this.opts.autoUnref&&d.unref(),this.subs.push(()=>{this.clearTimeoutFn(d)})}return this.subs.push(o),this.subs.push(u),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(Gn(t,"ping",this.onping.bind(this)),Gn(t,"data",this.ondata.bind(this)),Gn(t,"error",this.onerror.bind(this)),Gn(t,"close",this.onclose.bind(this)),Gn(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(i){this.onclose("parse error",i)}}ondecoded(t){KN(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,i){let r=this.nsps[t];return r?this._autoConnect&&!r.active&&r.connect():(r=new H7(this,t,i),this.nsps[t]=r),r}_destroy(t){const i=Object.keys(this.nsps);for(const r of i)if(this.nsps[r].active)return;this._close()}_packet(t){const i=this.encoder.encode(t);for(let r=0;r<i.length;r++)this.engine.write(i[r],t.options)}cleanup(){this.subs.forEach(t=>t()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(t,i){var r;this.cleanup(),(r=this.engine)===null||r===void 0||r.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,i),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const i=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn(()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),!t.skipReconnect&&t.open(o=>{o?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",o)):t.onreconnect()}))},i);this.opts.autoUnref&&r.unref(),this.subs.push(()=>{this.clearTimeoutFn(r)})}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const $m={};function rf(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const i=IG(e,t.path||"/socket.io"),r=i.source,o=i.id,c=i.path,u=$m[o]&&c in $m[o].nsps,l=t.forceNew||t["force new connection"]||t.multiplex===!1||u;let d;return l?d=new _D(r,t):($m[o]||($m[o]=new _D(r,t)),d=$m[o]),i.query&&!t.query&&(t.query=i.queryKey),d.socket(i.path,t)}Object.assign(rf,{Manager:_D,Socket:H7,io:rf,connect:rf});function q7(){return""}let Hn=null,nf=0;const bN=new Map;function XG(e){return`/wt/${encodeURIComponent(e)}/socket.io`}function K7(e){const t=e.trim();if(!t)throw new Error("worktreeName is required");return t}function YN(){if(Hn)return nf++,Hn;const e=q7();return Hn=rf(e,{path:"/socket.io",transports:["websocket"],reconnection:!0,reconnectionDelay:1e3,reconnectionAttempts:10}),Hn.on("message",t=>{const i=t;(i==null?void 0:i.topic)==="system"&&(i==null?void 0:i.type)==="ping"&&(Hn==null||Hn.emit("pong"))}),nf=1,Hn}function QN(e){const t=K7(e),i=bN.get(t);if(i)return i.refCount<=0?(console.warn(`[socket] worktree socket "${t}" had non-positive refCount; recovering to 1`),i.refCount=1,i.socket):(i.refCount++,i.socket);const r=q7(),o=XG(t),c=rf(r,{path:o,transports:["websocket"],reconnection:!0,reconnectionDelay:1e3,reconnectionAttempts:10});return c.on("message",u=>{const l=u;(l==null?void 0:l.topic)==="system"&&(l==null?void 0:l.type)==="ping"&&c.emit("pong")}),bN.set(t,{socket:c,refCount:1}),c}function Au(e){const t=K7(e),i=bN.get(t);i&&(i.refCount<=0&&console.warn(`[socket] worktree socket "${t}" had non-positive refCount on release`),i.refCount--,!(i.refCount>0)&&(i.socket.disconnect(),bN.delete(t)))}function GS(){Hn&&(nf--,nf<=0&&(Hn.disconnect(),Hn=null,nf=0))}const CD="wt",JG=15e3,G7=f.createContext(null),ZG=()=>{},eY={activeWorktree:null,setActiveWorktree:ZG,apiBase:"",worktrees:[],worktreesLoading:!1};function Qj(){if(typeof window>"u")return null;const e=new URLSearchParams(window.location.search).get(CD),t=(e==null?void 0:e.trim())??"";return t.length>0?t:null}function pE(e){if(typeof window>"u")return;const t=new URL(window.location.href);e?t.searchParams.set(CD,e):t.searchParams.delete(CD),window.history.replaceState(window.history.state,"",`${t.pathname}${t.search}${t.hash}`)}async function tY(){const e=await fetch("/api/runtime",{headers:{accept:"application/json"}});if(!e.ok)return!1;const t=await e.json();return!t||typeof t!="object"?!1:t.mode==="main"}function sY({children:e}){const t=zs(),[i,r]=f.useState(!1),[o,c]=f.useState(!1),[u,l]=f.useState(()=>Qj()),{data:d=[],isLoading:h,isError:g,isFetched:m}=st({queryKey:["worktree-tabs-worktrees"],queryFn:()=>Fu(),enabled:i,refetchInterval:i?JG:!1,refetchOnWindowFocus:!0}),y=f.useMemo(()=>d.map(_=>({id:_.id,name:_.name,devchainProjectId:_.devchainProjectId??null,status:_.status})),[d]),E=f.useMemo(()=>!i||!u?null:y.find(_=>_.name===u)??null,[u,i,y]),C=f.useMemo(()=>!i||!u?"":`/wt/${encodeURIComponent(u)}`,[u,i]),D=f.useMemo(()=>o?i?u?`worktree:${u}`:"main":"normal":null,[u,i,o]),b=f.useRef(null),w=f.useRef(C);f.useEffect(()=>{w.current=C},[C]),f.useEffect(()=>iG({getApiBase:()=>w.current,mainInstanceApiPrefixes:zS}),[]),f.useEffect(()=>{if(!D)return;const _=b.current;b.current=D;const P=_===null&&D.startsWith("worktree:");(_!==null&&_!==D||P)&&(t.cancelQueries({queryKey:["projects"]}),t.removeQueries({predicate:R=>{const k=R.queryKey[0];return k!=="worktree-tabs-worktrees"&&k!=="providers"&&k!=="projects"}}),t.invalidateQueries({queryKey:["projects"]}))},[t,D]),f.useEffect(()=>{let _=!1;return(async()=>{let R=!1;try{R=await tY()}catch{R=!1}_||(r(R),c(!0),R||l(null))})(),()=>{_=!0}},[]),f.useEffect(()=>{if(!i)return;const _=YN(),P=R=>{R.topic==="worktrees"&&(t.invalidateQueries({queryKey:["worktree-tabs-worktrees"]}),t.invalidateQueries({queryKey:["chat-worktree-agent-groups"]}),t.invalidateQueries({queryKey:["orchestrator-worktrees"]}),t.invalidateQueries({queryKey:["orchestrator-worktree-overview"]}),t.invalidateQueries({queryKey:["orchestrator-worktree-activity"]}))};return _.on("message",P),()=>{_.off("message",P),GS()}},[i,t]),f.useEffect(()=>{if(typeof window>"u")return;const _=()=>{l(Qj())};return window.addEventListener("popstate",_),()=>{window.removeEventListener("popstate",_)}},[]),f.useEffect(()=>{if(!o)return;if(!i){u!==null&&l(null),pE(null);return}if(u===null){pE(null);return}const _=y.some(P=>P.name===u);if(!_&&m&&!h&&!g){l(null);return}_&&pE(u)},[u,i,o,y,m,h]);const N=f.useCallback(_=>{l((_==null?void 0:_.name)??null)},[]),x=f.useMemo(()=>({activeWorktree:E,setActiveWorktree:N,apiBase:C,worktrees:y,worktreesLoading:h}),[E,C,N,y,h]);return s.jsxDEV(G7.Provider,{value:x,children:e},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/hooks/useWorktreeTab.tsx",lineNumber:296,columnNumber:10},this)}function Ff(){return f.useContext(G7)??eY}const yo="devchain:selectedProjectId",Y7=f.createContext(void 0),iY=5e3;async function aY({signal:e}={}){const t=await fetch("/api/projects",{signal:e});if(!t.ok)throw new Error("Failed to fetch projects");const i=await t.json(),r=await Promise.all(i.items.map(async o=>{try{const c=typeof AbortSignal.timeout=="function"?AbortSignal.timeout(iY):void 0,u=e&&c&&typeof AbortSignal.any=="function"?AbortSignal.any([e,c]):e??c,l=await fetch(`/api/projects/${o.id}/stats`,{signal:u});if(l.ok){const d=await l.json();return{...o,stats:d}}}catch{}return o}));return{...i,items:r}}function rY(){return typeof window>"u"?null:window.sessionStorage.getItem(yo)??window.localStorage.getItem(yo)}function Jp(e){typeof window>"u"||(e?(window.sessionStorage.setItem(yo,e),window.localStorage.setItem(yo,e)):window.sessionStorage.removeItem(yo))}function nY({children:e}){const{activeWorktree:t}=Ff(),i=!!t,r=t!=null&&t.devchainProjectId&&t.devchainProjectId.trim().length>0?t.devchainProjectId:void 0,[o,c]=f.useState(()=>{if(!(typeof window>"u"))return rY()??void 0}),u=f.useRef(!1),l=f.useRef(!1),d=f.useRef(!1),{data:h,isLoading:g,isError:m,refetch:y}=st({queryKey:["projects"],queryFn:({signal:N})=>aY({signal:N})});f.useEffect(()=>{if(typeof window>"u"||l.current)return;const N=window.sessionStorage.getItem(yo),x=window.localStorage.getItem(yo);!N&&x&&window.sessionStorage.setItem(yo,x),l.current=!0},[]),f.useEffect(()=>{if(typeof window>"u"||i||!h||u.current)return;const N=new URLSearchParams(window.location.search||""),x=N.get("projectId"),_=N.get("projectPath"),P=h.items??[],R=k=>k.replace(/\/+$/,"");if(x&&P.some(j=>j.id===x)){c(x),Jp(x),u.current=!0;return}if(_){const k=R(_),j=P.find(V=>R(V.rootPath)===k);if(j){c(j.id),Jp(j.id),u.current=!0;return}}},[i,h]),f.useEffect(()=>{if(i){d.current=!0;return}if(d.current){d.current=!1;return}if(!h)return;const N=h.items??[];if(N.length===1){const x=N[0].id;o!==x&&(c(x),Jp(x));return}if(o&&!N.some(x=>x.id===o)){if(typeof window<"u"){const x=window.localStorage.getItem(yo);if(window.sessionStorage.removeItem(yo),x&&N.some(_=>_.id===x)){c(x),Jp(x);return}}c(void 0),Jp(void 0)}},[i,h,o]);const E=f.useCallback(N=>{i||(c(N),Jp(N))},[i]),C=r??o,D=f.useMemo(()=>{var N;return(N=h==null?void 0:h.items)==null?void 0:N.find(x=>x.id===C)},[C,h]),b=f.useCallback(async()=>{await y()},[y]),w=f.useMemo(()=>({projects:(h==null?void 0:h.items)??[],projectsLoading:g,projectsError:m,refetchProjects:b,selectedProjectId:C,selectedProject:D,setSelectedProjectId:E}),[h,g,m,b,C,D,E]);return s.jsxDEV(Y7.Provider,{value:w,children:e},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/hooks/useProjectSelection.tsx",lineNumber:282,columnNumber:5},this)}function Gi(){const e=f.useContext(Y7);if(!e)throw new Error("useSelectedProject must be used within a ProjectSelectionProvider");return e}const oY="modulepreload",lY=function(e){return"/"+e},Xj={},YS=function(t,i,r){let o=Promise.resolve();if(i&&i.length>0){document.getElementsByTagName("link");const u=document.querySelector("meta[property=csp-nonce]"),l=(u==null?void 0:u.nonce)||(u==null?void 0:u.getAttribute("nonce"));o=Promise.allSettled(i.map(d=>{if(d=lY(d),d in Xj)return;Xj[d]=!0;const h=d.endsWith(".css"),g=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${g}`))return;const m=document.createElement("link");if(m.rel=h?"stylesheet":oY,h||(m.as="script"),m.crossOrigin="",m.href=d,l&&m.setAttribute("nonce",l),document.head.appendChild(m),h)return new Promise((y,E)=>{m.addEventListener("load",y),m.addEventListener("error",()=>E(new Error(`Unable to preload CSS for ${d}`)))})}))}function c(u){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=u,window.dispatchEvent(l),!l.defaultPrevented)throw u}return o.then(u=>{for(const l of u||[])l.status==="rejected"&&c(l.reason);return t().catch(c)})};function Q7(e){var t,i,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(i=Q7(e[t]))&&(r&&(r+=" "),r+=i)}else for(i in e)e[i]&&(r&&(r+=" "),r+=i);return r}function X7(){for(var e,t,i=0,r="",o=arguments.length;i<o;i++)(e=arguments[i])&&(t=Q7(e))&&(r&&(r+=" "),r+=t);return r}const QS="-",cY=e=>{const t=pY(e),{conflictingClassGroups:i,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:u=>{const l=u.split(QS);return l[0]===""&&l.length!==1&&l.shift(),J7(l,t)||uY(u)},getConflictingClassGroupIds:(u,l)=>{const d=i[u]||[];return l&&r[u]?[...d,...r[u]]:d}}},J7=(e,t)=>{var u;if(e.length===0)return t.classGroupId;const i=e[0],r=t.nextPart.get(i),o=r?J7(e.slice(1),r):void 0;if(o)return o;if(t.validators.length===0)return;const c=e.join(QS);return(u=t.validators.find(({validator:l})=>l(c)))==null?void 0:u.classGroupId},Jj=/^\[(.+)\]$/,uY=e=>{if(Jj.test(e)){const t=Jj.exec(e)[1],i=t==null?void 0:t.substring(0,t.indexOf(":"));if(i)return"arbitrary.."+i}},pY=e=>{const{theme:t,classGroups:i}=e,r={nextPart:new Map,validators:[]};for(const o in i)jD(i[o],r,o,t);return r},jD=(e,t,i,r)=>{e.forEach(o=>{if(typeof o=="string"){const c=o===""?t:Zj(t,o);c.classGroupId=i;return}if(typeof o=="function"){if(dY(o)){jD(o(r),t,i,r);return}t.validators.push({validator:o,classGroupId:i});return}Object.entries(o).forEach(([c,u])=>{jD(u,Zj(t,c),i,r)})})},Zj=(e,t)=>{let i=e;return t.split(QS).forEach(r=>{i.nextPart.has(r)||i.nextPart.set(r,{nextPart:new Map,validators:[]}),i=i.nextPart.get(r)}),i},dY=e=>e.isThemeGetter,hY=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,i=new Map,r=new Map;const o=(c,u)=>{i.set(c,u),t++,t>e&&(t=0,r=i,i=new Map)};return{get(c){let u=i.get(c);if(u!==void 0)return u;if((u=r.get(c))!==void 0)return o(c,u),u},set(c,u){i.has(c)?i.set(c,u):o(c,u)}}},PD="!",kD=":",mY=kD.length,fY=e=>{const{prefix:t,experimentalParseClassName:i}=e;let r=o=>{const c=[];let u=0,l=0,d=0,h;for(let C=0;C<o.length;C++){let D=o[C];if(u===0&&l===0){if(D===kD){c.push(o.slice(d,C)),d=C+mY;continue}if(D==="/"){h=C;continue}}D==="["?u++:D==="]"?u--:D==="("?l++:D===")"&&l--}const g=c.length===0?o:o.substring(d),m=gY(g),y=m!==g,E=h&&h>d?h-d:void 0;return{modifiers:c,hasImportantModifier:y,baseClassName:m,maybePostfixModifierPosition:E}};if(t){const o=t+kD,c=r;r=u=>u.startsWith(o)?c(u.substring(o.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:u,maybePostfixModifierPosition:void 0}}if(i){const o=r;r=c=>i({className:c,parseClassName:o})}return r},gY=e=>e.endsWith(PD)?e.substring(0,e.length-1):e.startsWith(PD)?e.substring(1):e,vY=e=>{const t=Object.fromEntries(e.orderSensitiveModifiers.map(r=>[r,!0]));return r=>{if(r.length<=1)return r;const o=[];let c=[];return r.forEach(u=>{u[0]==="["||t[u]?(o.push(...c.sort(),u),c=[]):c.push(u)}),o.push(...c.sort()),o}},bY=e=>({cache:hY(e.cacheSize),parseClassName:fY(e),sortModifiers:vY(e),...cY(e)}),NY=/\s+/,xY=(e,t)=>{const{parseClassName:i,getClassGroupId:r,getConflictingClassGroupIds:o,sortModifiers:c}=t,u=[],l=e.trim().split(NY);let d="";for(let h=l.length-1;h>=0;h-=1){const g=l[h],{isExternal:m,modifiers:y,hasImportantModifier:E,baseClassName:C,maybePostfixModifierPosition:D}=i(g);if(m){d=g+(d.length>0?" "+d:d);continue}let b=!!D,w=r(b?C.substring(0,D):C);if(!w){if(!b){d=g+(d.length>0?" "+d:d);continue}if(w=r(C),!w){d=g+(d.length>0?" "+d:d);continue}b=!1}const N=c(y).join(":"),x=E?N+PD:N,_=x+w;if(u.includes(_))continue;u.push(_);const P=o(w,b);for(let R=0;R<P.length;++R){const k=P[R];u.push(x+k)}d=g+(d.length>0?" "+d:d)}return d};function wY(){let e=0,t,i,r="";for(;e<arguments.length;)(t=arguments[e++])&&(i=Z7(t))&&(r&&(r+=" "),r+=i);return r}const Z7=e=>{if(typeof e=="string")return e;let t,i="";for(let r=0;r<e.length;r++)e[r]&&(t=Z7(e[r]))&&(i&&(i+=" "),i+=t);return i};function yY(e,...t){let i,r,o,c=u;function u(d){const h=t.reduce((g,m)=>m(g),e());return i=bY(h),r=i.cache.get,o=i.cache.set,c=l,l(d)}function l(d){const h=r(d);if(h)return h;const g=xY(d,i);return o(d,g),g}return function(){return c(wY.apply(null,arguments))}}const Ea=e=>{const t=i=>i[e]||[];return t.isThemeGetter=!0,t},ek=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,tk=/^\((?:(\w[\w-]*):)?(.+)\)$/i,EY=/^\d+\/\d+$/,DY=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,SY=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,_Y=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,CY=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,jY=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Zp=e=>EY.test(e),Gs=e=>!!e&&!Number.isNaN(Number(e)),rc=e=>!!e&&Number.isInteger(Number(e)),dE=e=>e.endsWith("%")&&Gs(e.slice(0,-1)),ll=e=>DY.test(e),PY=()=>!0,kY=e=>SY.test(e)&&!_Y.test(e),sk=()=>!1,VY=e=>CY.test(e),TY=e=>jY.test(e),RY=e=>!Qt(e)&&!Xt(e),AY=e=>Yd(e,rk,sk),Qt=e=>ek.test(e),wu=e=>Yd(e,nk,kY),hE=e=>Yd(e,FY,Gs),eP=e=>Yd(e,ik,sk),MY=e=>Yd(e,ak,TY),yb=e=>Yd(e,ok,VY),Xt=e=>tk.test(e),zm=e=>Qd(e,nk),LY=e=>Qd(e,BY),tP=e=>Qd(e,ik),OY=e=>Qd(e,rk),IY=e=>Qd(e,ak),Eb=e=>Qd(e,ok,!0),Yd=(e,t,i)=>{const r=ek.exec(e);return r?r[1]?t(r[1]):i(r[2]):!1},Qd=(e,t,i=!1)=>{const r=tk.exec(e);return r?r[1]?t(r[1]):i:!1},ik=e=>e==="position"||e==="percentage",ak=e=>e==="image"||e==="url",rk=e=>e==="length"||e==="size"||e==="bg-size",nk=e=>e==="length",FY=e=>e==="number",BY=e=>e==="family-name",ok=e=>e==="shadow",$Y=()=>{const e=Ea("color"),t=Ea("font"),i=Ea("text"),r=Ea("font-weight"),o=Ea("tracking"),c=Ea("leading"),u=Ea("breakpoint"),l=Ea("container"),d=Ea("spacing"),h=Ea("radius"),g=Ea("shadow"),m=Ea("inset-shadow"),y=Ea("text-shadow"),E=Ea("drop-shadow"),C=Ea("blur"),D=Ea("perspective"),b=Ea("aspect"),w=Ea("ease"),N=Ea("animate"),x=()=>["auto","avoid","all","avoid-page","page","left","right","column"],_=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],P=()=>[..._(),Xt,Qt],R=()=>["auto","hidden","clip","visible","scroll"],k=()=>["auto","contain","none"],j=()=>[Xt,Qt,d],V=()=>[Zp,"full","auto",...j()],M=()=>[rc,"none","subgrid",Xt,Qt],F=()=>["auto",{span:["full",rc,Xt,Qt]},rc,Xt,Qt],I=()=>[rc,"auto",Xt,Qt],A=()=>["auto","min","max","fr",Xt,Qt],O=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],K=()=>["start","end","center","stretch","center-safe","end-safe"],q=()=>["auto",...j()],Y=()=>[Zp,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...j()],H=()=>[e,Xt,Qt],L=()=>[..._(),tP,eP,{position:[Xt,Qt]}],z=()=>["no-repeat",{repeat:["","x","y","space","round"]}],$=()=>["auto","cover","contain",OY,AY,{size:[Xt,Qt]}],W=()=>[dE,zm,wu],ee=()=>["","none","full",h,Xt,Qt],se=()=>["",Gs,zm,wu],ge=()=>["solid","dashed","dotted","double"],ve=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],J=()=>[Gs,dE,tP,eP],G=()=>["","none",C,Xt,Qt],be=()=>["none",Gs,Xt,Qt],ne=()=>["none",Gs,Xt,Qt],Ee=()=>[Gs,Xt,Qt],ce=()=>[Zp,"full",...j()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[ll],breakpoint:[ll],color:[PY],container:[ll],"drop-shadow":[ll],ease:["in","out","in-out"],font:[RY],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[ll],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[ll],shadow:[ll],spacing:["px",Gs],text:[ll],"text-shadow":[ll],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Zp,Qt,Xt,b]}],container:["container"],columns:[{columns:[Gs,Qt,Xt,l]}],"break-after":[{"break-after":x()}],"break-before":[{"break-before":x()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:P()}],overflow:[{overflow:R()}],"overflow-x":[{"overflow-x":R()}],"overflow-y":[{"overflow-y":R()}],overscroll:[{overscroll:k()}],"overscroll-x":[{"overscroll-x":k()}],"overscroll-y":[{"overscroll-y":k()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:V()}],"inset-x":[{"inset-x":V()}],"inset-y":[{"inset-y":V()}],start:[{start:V()}],end:[{end:V()}],top:[{top:V()}],right:[{right:V()}],bottom:[{bottom:V()}],left:[{left:V()}],visibility:["visible","invisible","collapse"],z:[{z:[rc,"auto",Xt,Qt]}],basis:[{basis:[Zp,"full","auto",l,...j()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Gs,Zp,"auto","initial","none",Qt]}],grow:[{grow:["",Gs,Xt,Qt]}],shrink:[{shrink:["",Gs,Xt,Qt]}],order:[{order:[rc,"first","last","none",Xt,Qt]}],"grid-cols":[{"grid-cols":M()}],"col-start-end":[{col:F()}],"col-start":[{"col-start":I()}],"col-end":[{"col-end":I()}],"grid-rows":[{"grid-rows":M()}],"row-start-end":[{row:F()}],"row-start":[{"row-start":I()}],"row-end":[{"row-end":I()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":A()}],"auto-rows":[{"auto-rows":A()}],gap:[{gap:j()}],"gap-x":[{"gap-x":j()}],"gap-y":[{"gap-y":j()}],"justify-content":[{justify:[...O(),"normal"]}],"justify-items":[{"justify-items":[...K(),"normal"]}],"justify-self":[{"justify-self":["auto",...K()]}],"align-content":[{content:["normal",...O()]}],"align-items":[{items:[...K(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...K(),{baseline:["","last"]}]}],"place-content":[{"place-content":O()}],"place-items":[{"place-items":[...K(),"baseline"]}],"place-self":[{"place-self":["auto",...K()]}],p:[{p:j()}],px:[{px:j()}],py:[{py:j()}],ps:[{ps:j()}],pe:[{pe:j()}],pt:[{pt:j()}],pr:[{pr:j()}],pb:[{pb:j()}],pl:[{pl:j()}],m:[{m:q()}],mx:[{mx:q()}],my:[{my:q()}],ms:[{ms:q()}],me:[{me:q()}],mt:[{mt:q()}],mr:[{mr:q()}],mb:[{mb:q()}],ml:[{ml:q()}],"space-x":[{"space-x":j()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":j()}],"space-y-reverse":["space-y-reverse"],size:[{size:Y()}],w:[{w:[l,"screen",...Y()]}],"min-w":[{"min-w":[l,"screen","none",...Y()]}],"max-w":[{"max-w":[l,"screen","none","prose",{screen:[u]},...Y()]}],h:[{h:["screen","lh",...Y()]}],"min-h":[{"min-h":["screen","lh","none",...Y()]}],"max-h":[{"max-h":["screen","lh",...Y()]}],"font-size":[{text:["base",i,zm,wu]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,Xt,hE]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",dE,Qt]}],"font-family":[{font:[LY,Qt,t]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[o,Xt,Qt]}],"line-clamp":[{"line-clamp":[Gs,"none",Xt,hE]}],leading:[{leading:[c,...j()]}],"list-image":[{"list-image":["none",Xt,Qt]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Xt,Qt]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:H()}],"text-color":[{text:H()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ge(),"wavy"]}],"text-decoration-thickness":[{decoration:[Gs,"from-font","auto",Xt,wu]}],"text-decoration-color":[{decoration:H()}],"underline-offset":[{"underline-offset":[Gs,"auto",Xt,Qt]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:j()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Xt,Qt]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Xt,Qt]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:L()}],"bg-repeat":[{bg:z()}],"bg-size":[{bg:$()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},rc,Xt,Qt],radial:["",Xt,Qt],conic:[rc,Xt,Qt]},IY,MY]}],"bg-color":[{bg:H()}],"gradient-from-pos":[{from:W()}],"gradient-via-pos":[{via:W()}],"gradient-to-pos":[{to:W()}],"gradient-from":[{from:H()}],"gradient-via":[{via:H()}],"gradient-to":[{to:H()}],rounded:[{rounded:ee()}],"rounded-s":[{"rounded-s":ee()}],"rounded-e":[{"rounded-e":ee()}],"rounded-t":[{"rounded-t":ee()}],"rounded-r":[{"rounded-r":ee()}],"rounded-b":[{"rounded-b":ee()}],"rounded-l":[{"rounded-l":ee()}],"rounded-ss":[{"rounded-ss":ee()}],"rounded-se":[{"rounded-se":ee()}],"rounded-ee":[{"rounded-ee":ee()}],"rounded-es":[{"rounded-es":ee()}],"rounded-tl":[{"rounded-tl":ee()}],"rounded-tr":[{"rounded-tr":ee()}],"rounded-br":[{"rounded-br":ee()}],"rounded-bl":[{"rounded-bl":ee()}],"border-w":[{border:se()}],"border-w-x":[{"border-x":se()}],"border-w-y":[{"border-y":se()}],"border-w-s":[{"border-s":se()}],"border-w-e":[{"border-e":se()}],"border-w-t":[{"border-t":se()}],"border-w-r":[{"border-r":se()}],"border-w-b":[{"border-b":se()}],"border-w-l":[{"border-l":se()}],"divide-x":[{"divide-x":se()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":se()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ge(),"hidden","none"]}],"divide-style":[{divide:[...ge(),"hidden","none"]}],"border-color":[{border:H()}],"border-color-x":[{"border-x":H()}],"border-color-y":[{"border-y":H()}],"border-color-s":[{"border-s":H()}],"border-color-e":[{"border-e":H()}],"border-color-t":[{"border-t":H()}],"border-color-r":[{"border-r":H()}],"border-color-b":[{"border-b":H()}],"border-color-l":[{"border-l":H()}],"divide-color":[{divide:H()}],"outline-style":[{outline:[...ge(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Gs,Xt,Qt]}],"outline-w":[{outline:["",Gs,zm,wu]}],"outline-color":[{outline:H()}],shadow:[{shadow:["","none",g,Eb,yb]}],"shadow-color":[{shadow:H()}],"inset-shadow":[{"inset-shadow":["none",m,Eb,yb]}],"inset-shadow-color":[{"inset-shadow":H()}],"ring-w":[{ring:se()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:H()}],"ring-offset-w":[{"ring-offset":[Gs,wu]}],"ring-offset-color":[{"ring-offset":H()}],"inset-ring-w":[{"inset-ring":se()}],"inset-ring-color":[{"inset-ring":H()}],"text-shadow":[{"text-shadow":["none",y,Eb,yb]}],"text-shadow-color":[{"text-shadow":H()}],opacity:[{opacity:[Gs,Xt,Qt]}],"mix-blend":[{"mix-blend":[...ve(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ve()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Gs]}],"mask-image-linear-from-pos":[{"mask-linear-from":J()}],"mask-image-linear-to-pos":[{"mask-linear-to":J()}],"mask-image-linear-from-color":[{"mask-linear-from":H()}],"mask-image-linear-to-color":[{"mask-linear-to":H()}],"mask-image-t-from-pos":[{"mask-t-from":J()}],"mask-image-t-to-pos":[{"mask-t-to":J()}],"mask-image-t-from-color":[{"mask-t-from":H()}],"mask-image-t-to-color":[{"mask-t-to":H()}],"mask-image-r-from-pos":[{"mask-r-from":J()}],"mask-image-r-to-pos":[{"mask-r-to":J()}],"mask-image-r-from-color":[{"mask-r-from":H()}],"mask-image-r-to-color":[{"mask-r-to":H()}],"mask-image-b-from-pos":[{"mask-b-from":J()}],"mask-image-b-to-pos":[{"mask-b-to":J()}],"mask-image-b-from-color":[{"mask-b-from":H()}],"mask-image-b-to-color":[{"mask-b-to":H()}],"mask-image-l-from-pos":[{"mask-l-from":J()}],"mask-image-l-to-pos":[{"mask-l-to":J()}],"mask-image-l-from-color":[{"mask-l-from":H()}],"mask-image-l-to-color":[{"mask-l-to":H()}],"mask-image-x-from-pos":[{"mask-x-from":J()}],"mask-image-x-to-pos":[{"mask-x-to":J()}],"mask-image-x-from-color":[{"mask-x-from":H()}],"mask-image-x-to-color":[{"mask-x-to":H()}],"mask-image-y-from-pos":[{"mask-y-from":J()}],"mask-image-y-to-pos":[{"mask-y-to":J()}],"mask-image-y-from-color":[{"mask-y-from":H()}],"mask-image-y-to-color":[{"mask-y-to":H()}],"mask-image-radial":[{"mask-radial":[Xt,Qt]}],"mask-image-radial-from-pos":[{"mask-radial-from":J()}],"mask-image-radial-to-pos":[{"mask-radial-to":J()}],"mask-image-radial-from-color":[{"mask-radial-from":H()}],"mask-image-radial-to-color":[{"mask-radial-to":H()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":_()}],"mask-image-conic-pos":[{"mask-conic":[Gs]}],"mask-image-conic-from-pos":[{"mask-conic-from":J()}],"mask-image-conic-to-pos":[{"mask-conic-to":J()}],"mask-image-conic-from-color":[{"mask-conic-from":H()}],"mask-image-conic-to-color":[{"mask-conic-to":H()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:L()}],"mask-repeat":[{mask:z()}],"mask-size":[{mask:$()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Xt,Qt]}],filter:[{filter:["","none",Xt,Qt]}],blur:[{blur:G()}],brightness:[{brightness:[Gs,Xt,Qt]}],contrast:[{contrast:[Gs,Xt,Qt]}],"drop-shadow":[{"drop-shadow":["","none",E,Eb,yb]}],"drop-shadow-color":[{"drop-shadow":H()}],grayscale:[{grayscale:["",Gs,Xt,Qt]}],"hue-rotate":[{"hue-rotate":[Gs,Xt,Qt]}],invert:[{invert:["",Gs,Xt,Qt]}],saturate:[{saturate:[Gs,Xt,Qt]}],sepia:[{sepia:["",Gs,Xt,Qt]}],"backdrop-filter":[{"backdrop-filter":["","none",Xt,Qt]}],"backdrop-blur":[{"backdrop-blur":G()}],"backdrop-brightness":[{"backdrop-brightness":[Gs,Xt,Qt]}],"backdrop-contrast":[{"backdrop-contrast":[Gs,Xt,Qt]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Gs,Xt,Qt]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Gs,Xt,Qt]}],"backdrop-invert":[{"backdrop-invert":["",Gs,Xt,Qt]}],"backdrop-opacity":[{"backdrop-opacity":[Gs,Xt,Qt]}],"backdrop-saturate":[{"backdrop-saturate":[Gs,Xt,Qt]}],"backdrop-sepia":[{"backdrop-sepia":["",Gs,Xt,Qt]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":j()}],"border-spacing-x":[{"border-spacing-x":j()}],"border-spacing-y":[{"border-spacing-y":j()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Xt,Qt]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Gs,"initial",Xt,Qt]}],ease:[{ease:["linear","initial",w,Xt,Qt]}],delay:[{delay:[Gs,Xt,Qt]}],animate:[{animate:["none",N,Xt,Qt]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[D,Xt,Qt]}],"perspective-origin":[{"perspective-origin":P()}],rotate:[{rotate:be()}],"rotate-x":[{"rotate-x":be()}],"rotate-y":[{"rotate-y":be()}],"rotate-z":[{"rotate-z":be()}],scale:[{scale:ne()}],"scale-x":[{"scale-x":ne()}],"scale-y":[{"scale-y":ne()}],"scale-z":[{"scale-z":ne()}],"scale-3d":["scale-3d"],skew:[{skew:Ee()}],"skew-x":[{"skew-x":Ee()}],"skew-y":[{"skew-y":Ee()}],transform:[{transform:[Xt,Qt,"","none","gpu","cpu"]}],"transform-origin":[{origin:P()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:ce()}],"translate-x":[{"translate-x":ce()}],"translate-y":[{"translate-y":ce()}],"translate-z":[{"translate-z":ce()}],"translate-none":["translate-none"],accent:[{accent:H()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:H()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Xt,Qt]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":j()}],"scroll-mx":[{"scroll-mx":j()}],"scroll-my":[{"scroll-my":j()}],"scroll-ms":[{"scroll-ms":j()}],"scroll-me":[{"scroll-me":j()}],"scroll-mt":[{"scroll-mt":j()}],"scroll-mr":[{"scroll-mr":j()}],"scroll-mb":[{"scroll-mb":j()}],"scroll-ml":[{"scroll-ml":j()}],"scroll-p":[{"scroll-p":j()}],"scroll-px":[{"scroll-px":j()}],"scroll-py":[{"scroll-py":j()}],"scroll-ps":[{"scroll-ps":j()}],"scroll-pe":[{"scroll-pe":j()}],"scroll-pt":[{"scroll-pt":j()}],"scroll-pr":[{"scroll-pr":j()}],"scroll-pb":[{"scroll-pb":j()}],"scroll-pl":[{"scroll-pl":j()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Xt,Qt]}],fill:[{fill:["none",...H()]}],"stroke-w":[{stroke:[Gs,zm,wu,hE]}],stroke:[{stroke:["none",...H()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},zY=yY($Y);function we(...e){return zY(X7(e))}const Kt=({className:e,...t})=>s.jsxDEV("div",{className:we("animate-pulse rounded-md bg-muted",e),...t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/skeleton.tsx",lineNumber:5,columnNumber:3},void 0),UY=f.lazy(()=>YS(()=>import("./ReviewsPage-DCDiMjwZ.js"),__vite__mapDeps([0,1,2])).then(e=>({default:e.ReviewsPage})));let sP=null;function iP(){sP||(sP=YS(()=>import("./ReviewsPage-DCDiMjwZ.js"),__vite__mapDeps([0,1,2])))}function WY(){return s.jsxDEV("div",{className:"flex flex-col h-full",children:[s.jsxDEV("div",{className:"border-b p-4 bg-card",children:s.jsxDEV("div",{className:"flex items-center gap-4",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Kt,{className:"h-9 w-32"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:38,columnNumber:13},this),s.jsxDEV(Kt,{className:"h-9 w-32"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:39,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:37,columnNumber:11},this),s.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:41,columnNumber:11},this),s.jsxDEV(Kt,{className:"h-9 w-24"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:42,columnNumber:11},this),s.jsxDEV(Kt,{className:"h-9 w-9"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:43,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:36,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:35,columnNumber:7},this),s.jsxDEV("div",{className:"flex-1 flex min-h-0",children:[s.jsxDEV("div",{className:"w-64 border-r bg-card p-3 space-y-2",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-3",children:[s.jsxDEV(Kt,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:52,columnNumber:13},this),s.jsxDEV(Kt,{className:"h-4 w-12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:53,columnNumber:13},this),s.jsxDEV(Kt,{className:"h-5 w-6"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:54,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:51,columnNumber:11},this),Array.from({length:8}).map((e,t)=>s.jsxDEV(Kt,{className:"h-8 w-full"},t,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:57,columnNumber:13},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:50,columnNumber:9},this),s.jsxDEV("div",{className:"flex-1 min-w-0 bg-background p-4",children:s.jsxDEV("div",{className:"space-y-3",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-4",children:[s.jsxDEV(Kt,{className:"h-5 w-48"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:65,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-5 w-12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:66,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-5 w-12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:67,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:64,columnNumber:13},this),Array.from({length:12}).map((e,t)=>s.jsxDEV(Kt,{className:"h-6 w-full",style:{width:`${60+Math.random()*40}%`}},t,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:70,columnNumber:15},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:63,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:62,columnNumber:9},this),s.jsxDEV("div",{className:"w-80 border-l bg-card p-4 space-y-3",children:[s.jsxDEV(Kt,{className:"h-5 w-24 mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:81,columnNumber:11},this),Array.from({length:4}).map((e,t)=>s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Kt,{className:"h-6 w-6 rounded-full"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:85,columnNumber:17},this),s.jsxDEV(Kt,{className:"h-4 w-20"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:86,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:84,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-16 w-full"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:88,columnNumber:15},this)]},t,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:83,columnNumber:13},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:80,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:48,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:33,columnNumber:5},this)}function HY(){return s.jsxDEV(f.Suspense,{fallback:s.jsxDEV(WY,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:103,columnNumber:25},this),children:s.jsxDEV(UY,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:104,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewsPage.lazy.tsx",lineNumber:103,columnNumber:5},this)}function aP(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function Bf(...e){return t=>{let i=!1;const r=e.map(o=>{const c=aP(o,t);return!i&&typeof c=="function"&&(i=!0),c});if(i)return()=>{for(let o=0;o<r.length;o++){const c=r[o];typeof c=="function"?c():aP(e[o],null)}}}}function Is(...e){return f.useCallback(Bf(...e),e)}function Sc(e){const t=KY(e),i=f.forwardRef((r,o)=>{const{children:c,...u}=r,l=f.Children.toArray(c),d=l.find(GY);if(d){const h=d.props.children,g=l.map(m=>m===d?f.Children.count(h)>1?f.Children.only(null):f.isValidElement(h)?h.props.children:null:m);return ae.jsx(t,{...u,ref:o,children:f.isValidElement(h)?f.cloneElement(h,void 0,g):null})}return ae.jsx(t,{...u,ref:o,children:c})});return i.displayName=`${e}.Slot`,i}var qY=Sc("Slot");function KY(e){const t=f.forwardRef((i,r)=>{const{children:o,...c}=i;if(f.isValidElement(o)){const u=QY(o),l=YY(c,o.props);return o.type!==f.Fragment&&(l.ref=r?Bf(r,u):u),f.cloneElement(o,l)}return f.Children.count(o)>1?f.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var lk=Symbol("radix.slottable");function ck(e){const t=({children:i})=>ae.jsx(ae.Fragment,{children:i});return t.displayName=`${e}.Slottable`,t.__radixId=lk,t}function GY(e){return f.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===lk}function YY(e,t){const i={...t};for(const r in t){const o=e[r],c=t[r];/^on[A-Z]/.test(r)?o&&c?i[r]=(...l)=>{const d=c(...l);return o(...l),d}:o&&(i[r]=o):r==="style"?i[r]={...o,...c}:r==="className"&&(i[r]=[o,c].filter(Boolean).join(" "))}return{...e,...i}}function QY(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,i=t&&"isReactWarning"in t&&t.isReactWarning;return i?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,i=t&&"isReactWarning"in t&&t.isReactWarning,i?e.props.ref:e.props.ref||e.ref)}const rP=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,nP=X7,$f=(e,t)=>i=>{var r;if((t==null?void 0:t.variants)==null)return nP(e,i==null?void 0:i.class,i==null?void 0:i.className);const{variants:o,defaultVariants:c}=t,u=Object.keys(o).map(h=>{const g=i==null?void 0:i[h],m=c==null?void 0:c[h];if(g===null)return null;const y=rP(g)||rP(m);return o[h][y]}),l=i&&Object.entries(i).reduce((h,g)=>{let[m,y]=g;return y===void 0||(h[m]=y),h},{}),d=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((h,g)=>{let{class:m,className:y,...E}=g;return Object.entries(E).every(C=>{let[D,b]=C;return Array.isArray(b)?b.includes({...c,...l}[D]):{...c,...l}[D]===b})?[...h,m,y]:h},[]);return nP(e,u,d,i==null?void 0:i.class,i==null?void 0:i.className)},XS=$f("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),le=f.forwardRef(({className:e,variant:t,size:i,asChild:r=!1,...o},c)=>{const u=r?qY:"button";return s.jsxDEV(u,{className:we(XS({variant:t,size:i,className:e})),ref:c,...o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/button.tsx",lineNumber:42,columnNumber:7},void 0)});le.displayName="Button";function VD(e,[t,i]){return Math.min(i,Math.max(t,e))}function gt(e,t,{checkForDefaultPrevented:i=!0}={}){return function(o){if(e==null||e(o),i===!1||!o.defaultPrevented)return t==null?void 0:t(o)}}function XY(e,t){const i=f.createContext(t),r=c=>{const{children:u,...l}=c,d=f.useMemo(()=>l,Object.values(l));return ae.jsx(i.Provider,{value:d,children:u})};r.displayName=e+"Provider";function o(c){const u=f.useContext(i);if(u)return u;if(t!==void 0)return t;throw new Error(`\`${c}\` must be used within \`${e}\``)}return[r,o]}function Aa(e,t=[]){let i=[];function r(c,u){const l=f.createContext(u),d=i.length;i=[...i,u];const h=m=>{var w;const{scope:y,children:E,...C}=m,D=((w=y==null?void 0:y[e])==null?void 0:w[d])||l,b=f.useMemo(()=>C,Object.values(C));return ae.jsx(D.Provider,{value:b,children:E})};h.displayName=c+"Provider";function g(m,y){var D;const E=((D=y==null?void 0:y[e])==null?void 0:D[d])||l,C=f.useContext(E);if(C)return C;if(u!==void 0)return u;throw new Error(`\`${m}\` must be used within \`${c}\``)}return[h,g]}const o=()=>{const c=i.map(u=>f.createContext(u));return function(l){const d=(l==null?void 0:l[e])||c;return f.useMemo(()=>({[`__scope${e}`]:{...l,[e]:d}}),[l,d])}};return o.scopeName=e,[r,JY(o,...t)]}function JY(...e){const t=e[0];if(e.length===1)return t;const i=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(c){const u=r.reduce((l,{useScope:d,scopeName:h})=>{const m=d(c)[`__scope${h}`];return{...l,...m}},{});return f.useMemo(()=>({[`__scope${t.scopeName}`]:u}),[u])}};return i.scopeName=t.scopeName,i}function XN(e){const t=e+"CollectionProvider",[i,r]=Aa(t),[o,c]=i(t,{collectionRef:{current:null},itemMap:new Map}),u=D=>{const{scope:b,children:w}=D,N=ul.useRef(null),x=ul.useRef(new Map).current;return ae.jsx(o,{scope:b,itemMap:x,collectionRef:N,children:w})};u.displayName=t;const l=e+"CollectionSlot",d=Sc(l),h=ul.forwardRef((D,b)=>{const{scope:w,children:N}=D,x=c(l,w),_=Is(b,x.collectionRef);return ae.jsx(d,{ref:_,children:N})});h.displayName=l;const g=e+"CollectionItemSlot",m="data-radix-collection-item",y=Sc(g),E=ul.forwardRef((D,b)=>{const{scope:w,children:N,...x}=D,_=ul.useRef(null),P=Is(b,_),R=c(g,w);return ul.useEffect(()=>(R.itemMap.set(_,{ref:_,...x}),()=>void R.itemMap.delete(_))),ae.jsx(y,{[m]:"",ref:P,children:N})});E.displayName=g;function C(D){const b=c(e+"CollectionConsumer",D);return ul.useCallback(()=>{const N=b.collectionRef.current;if(!N)return[];const x=Array.from(N.querySelectorAll(`[${m}]`));return Array.from(b.itemMap.values()).sort((R,k)=>x.indexOf(R.ref.current)-x.indexOf(k.ref.current))},[b.collectionRef,b.itemMap])}return[{Provider:u,Slot:h,ItemSlot:E},C,r]}var ZY=f.createContext(void 0);function zf(e){const t=f.useContext(ZY);return e||t||"ltr"}var eQ=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Gt=eQ.reduce((e,t)=>{const i=Sc(`Primitive.${t}`),r=f.forwardRef((o,c)=>{const{asChild:u,...l}=o,d=u?i:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),ae.jsx(d,{...l,ref:c})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function JS(e,t){e&&En.flushSync(()=>e.dispatchEvent(t))}function Wi(e){const t=f.useRef(e);return f.useEffect(()=>{t.current=e}),f.useMemo(()=>(...i)=>{var r;return(r=t.current)==null?void 0:r.call(t,...i)},[])}function tQ(e,t=globalThis==null?void 0:globalThis.document){const i=Wi(e);f.useEffect(()=>{const r=o=>{o.key==="Escape"&&i(o)};return t.addEventListener("keydown",r,{capture:!0}),()=>t.removeEventListener("keydown",r,{capture:!0})},[i,t])}var sQ="DismissableLayer",TD="dismissableLayer.update",iQ="dismissableLayer.pointerDownOutside",aQ="dismissableLayer.focusOutside",oP,uk=f.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Gu=f.forwardRef((e,t)=>{const{disableOutsidePointerEvents:i=!1,onEscapeKeyDown:r,onPointerDownOutside:o,onFocusOutside:c,onInteractOutside:u,onDismiss:l,...d}=e,h=f.useContext(uk),[g,m]=f.useState(null),y=(g==null?void 0:g.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,E]=f.useState({}),C=Is(t,k=>m(k)),D=Array.from(h.layers),[b]=[...h.layersWithOutsidePointerEventsDisabled].slice(-1),w=D.indexOf(b),N=g?D.indexOf(g):-1,x=h.layersWithOutsidePointerEventsDisabled.size>0,_=N>=w,P=nQ(k=>{const j=k.target,V=[...h.branches].some(M=>M.contains(j));!_||V||(o==null||o(k),u==null||u(k),k.defaultPrevented||l==null||l())},y),R=oQ(k=>{const j=k.target;[...h.branches].some(M=>M.contains(j))||(c==null||c(k),u==null||u(k),k.defaultPrevented||l==null||l())},y);return tQ(k=>{N===h.layers.size-1&&(r==null||r(k),!k.defaultPrevented&&l&&(k.preventDefault(),l()))},y),f.useEffect(()=>{if(g)return i&&(h.layersWithOutsidePointerEventsDisabled.size===0&&(oP=y.body.style.pointerEvents,y.body.style.pointerEvents="none"),h.layersWithOutsidePointerEventsDisabled.add(g)),h.layers.add(g),lP(),()=>{i&&h.layersWithOutsidePointerEventsDisabled.size===1&&(y.body.style.pointerEvents=oP)}},[g,y,i,h]),f.useEffect(()=>()=>{g&&(h.layers.delete(g),h.layersWithOutsidePointerEventsDisabled.delete(g),lP())},[g,h]),f.useEffect(()=>{const k=()=>E({});return document.addEventListener(TD,k),()=>document.removeEventListener(TD,k)},[]),ae.jsx(Gt.div,{...d,ref:C,style:{pointerEvents:x?_?"auto":"none":void 0,...e.style},onFocusCapture:gt(e.onFocusCapture,R.onFocusCapture),onBlurCapture:gt(e.onBlurCapture,R.onBlurCapture),onPointerDownCapture:gt(e.onPointerDownCapture,P.onPointerDownCapture)})});Gu.displayName=sQ;var rQ="DismissableLayerBranch",pk=f.forwardRef((e,t)=>{const i=f.useContext(uk),r=f.useRef(null),o=Is(t,r);return f.useEffect(()=>{const c=r.current;if(c)return i.branches.add(c),()=>{i.branches.delete(c)}},[i.branches]),ae.jsx(Gt.div,{...e,ref:o})});pk.displayName=rQ;function nQ(e,t=globalThis==null?void 0:globalThis.document){const i=Wi(e),r=f.useRef(!1),o=f.useRef(()=>{});return f.useEffect(()=>{const c=l=>{if(l.target&&!r.current){let d=function(){dk(iQ,i,h,{discrete:!0})};const h={originalEvent:l};l.pointerType==="touch"?(t.removeEventListener("click",o.current),o.current=d,t.addEventListener("click",o.current,{once:!0})):d()}else t.removeEventListener("click",o.current);r.current=!1},u=window.setTimeout(()=>{t.addEventListener("pointerdown",c)},0);return()=>{window.clearTimeout(u),t.removeEventListener("pointerdown",c),t.removeEventListener("click",o.current)}},[t,i]),{onPointerDownCapture:()=>r.current=!0}}function oQ(e,t=globalThis==null?void 0:globalThis.document){const i=Wi(e),r=f.useRef(!1);return f.useEffect(()=>{const o=c=>{c.target&&!r.current&&dk(aQ,i,{originalEvent:c},{discrete:!1})};return t.addEventListener("focusin",o),()=>t.removeEventListener("focusin",o)},[t,i]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function lP(){const e=new CustomEvent(TD);document.dispatchEvent(e)}function dk(e,t,i,{discrete:r}){const o=i.originalEvent.target,c=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:i});t&&o.addEventListener(e,t,{once:!0}),r?JS(o,c):o.dispatchEvent(c)}var lQ=Gu,cQ=pk,mE=0;function JN(){f.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??cP()),document.body.insertAdjacentElement("beforeend",e[1]??cP()),mE++,()=>{mE===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),mE--}},[])}function cP(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var fE="focusScope.autoFocusOnMount",gE="focusScope.autoFocusOnUnmount",uP={bubbles:!1,cancelable:!0},uQ="FocusScope",Uf=f.forwardRef((e,t)=>{const{loop:i=!1,trapped:r=!1,onMountAutoFocus:o,onUnmountAutoFocus:c,...u}=e,[l,d]=f.useState(null),h=Wi(o),g=Wi(c),m=f.useRef(null),y=Is(t,D=>d(D)),E=f.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;f.useEffect(()=>{if(r){let D=function(x){if(E.paused||!l)return;const _=x.target;l.contains(_)?m.current=_:cc(m.current,{select:!0})},b=function(x){if(E.paused||!l)return;const _=x.relatedTarget;_!==null&&(l.contains(_)||cc(m.current,{select:!0}))},w=function(x){if(document.activeElement===document.body)for(const P of x)P.removedNodes.length>0&&cc(l)};document.addEventListener("focusin",D),document.addEventListener("focusout",b);const N=new MutationObserver(w);return l&&N.observe(l,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",D),document.removeEventListener("focusout",b),N.disconnect()}}},[r,l,E.paused]),f.useEffect(()=>{if(l){dP.add(E);const D=document.activeElement;if(!l.contains(D)){const w=new CustomEvent(fE,uP);l.addEventListener(fE,h),l.dispatchEvent(w),w.defaultPrevented||(pQ(gQ(hk(l)),{select:!0}),document.activeElement===D&&cc(l))}return()=>{l.removeEventListener(fE,h),setTimeout(()=>{const w=new CustomEvent(gE,uP);l.addEventListener(gE,g),l.dispatchEvent(w),w.defaultPrevented||cc(D??document.body,{select:!0}),l.removeEventListener(gE,g),dP.remove(E)},0)}}},[l,h,g,E]);const C=f.useCallback(D=>{if(!i&&!r||E.paused)return;const b=D.key==="Tab"&&!D.altKey&&!D.ctrlKey&&!D.metaKey,w=document.activeElement;if(b&&w){const N=D.currentTarget,[x,_]=dQ(N);x&&_?!D.shiftKey&&w===_?(D.preventDefault(),i&&cc(x,{select:!0})):D.shiftKey&&w===x&&(D.preventDefault(),i&&cc(_,{select:!0})):w===N&&D.preventDefault()}},[i,r,E.paused]);return ae.jsx(Gt.div,{tabIndex:-1,...u,ref:y,onKeyDown:C})});Uf.displayName=uQ;function pQ(e,{select:t=!1}={}){const i=document.activeElement;for(const r of e)if(cc(r,{select:t}),document.activeElement!==i)return}function dQ(e){const t=hk(e),i=pP(t,e),r=pP(t.reverse(),e);return[i,r]}function hk(e){const t=[],i=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;i.nextNode();)t.push(i.currentNode);return t}function pP(e,t){for(const i of e)if(!hQ(i,{upTo:t}))return i}function hQ(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function mQ(e){return e instanceof HTMLInputElement&&"select"in e}function cc(e,{select:t=!1}={}){if(e&&e.focus){const i=document.activeElement;e.focus({preventScroll:!0}),e!==i&&mQ(e)&&t&&e.select()}}var dP=fQ();function fQ(){let e=[];return{add(t){const i=e[0];t!==i&&(i==null||i.pause()),e=hP(e,t),e.unshift(t)},remove(t){var i;e=hP(e,t),(i=e[0])==null||i.resume()}}}function hP(e,t){const i=[...e],r=i.indexOf(t);return r!==-1&&i.splice(r,1),i}function gQ(e){return e.filter(t=>t.tagName!=="A")}var ea=globalThis!=null&&globalThis.document?f.useLayoutEffect:()=>{},vQ=PS[" useId ".trim().toString()]||(()=>{}),bQ=0;function Nr(e){const[t,i]=f.useState(vQ());return ea(()=>{i(r=>r??String(bQ++))},[e]),e||(t?`radix-${t}`:"")}const NQ=["top","right","bottom","left"],_c=Math.min,Jr=Math.max,NN=Math.round,Db=Math.floor,_o=e=>({x:e,y:e}),xQ={left:"right",right:"left",bottom:"top",top:"bottom"},wQ={start:"end",end:"start"};function RD(e,t,i){return Jr(e,_c(t,i))}function xl(e,t){return typeof e=="function"?e(t):e}function wl(e){return e.split("-")[0]}function Xd(e){return e.split("-")[1]}function ZS(e){return e==="x"?"y":"x"}function e2(e){return e==="y"?"height":"width"}const yQ=new Set(["top","bottom"]);function Do(e){return yQ.has(wl(e))?"y":"x"}function t2(e){return ZS(Do(e))}function EQ(e,t,i){i===void 0&&(i=!1);const r=Xd(e),o=t2(e),c=e2(o);let u=o==="x"?r===(i?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[c]>t.floating[c]&&(u=xN(u)),[u,xN(u)]}function DQ(e){const t=xN(e);return[AD(e),t,AD(t)]}function AD(e){return e.replace(/start|end/g,t=>wQ[t])}const mP=["left","right"],fP=["right","left"],SQ=["top","bottom"],_Q=["bottom","top"];function CQ(e,t,i){switch(e){case"top":case"bottom":return i?t?fP:mP:t?mP:fP;case"left":case"right":return t?SQ:_Q;default:return[]}}function jQ(e,t,i,r){const o=Xd(e);let c=CQ(wl(e),i==="start",r);return o&&(c=c.map(u=>u+"-"+o),t&&(c=c.concat(c.map(AD)))),c}function xN(e){return e.replace(/left|right|bottom|top/g,t=>xQ[t])}function PQ(e){return{top:0,right:0,bottom:0,left:0,...e}}function mk(e){return typeof e!="number"?PQ(e):{top:e,right:e,bottom:e,left:e}}function wN(e){const{x:t,y:i,width:r,height:o}=e;return{width:r,height:o,top:i,left:t,right:t+r,bottom:i+o,x:t,y:i}}function gP(e,t,i){let{reference:r,floating:o}=e;const c=Do(t),u=t2(t),l=e2(u),d=wl(t),h=c==="y",g=r.x+r.width/2-o.width/2,m=r.y+r.height/2-o.height/2,y=r[l]/2-o[l]/2;let E;switch(d){case"top":E={x:g,y:r.y-o.height};break;case"bottom":E={x:g,y:r.y+r.height};break;case"right":E={x:r.x+r.width,y:m};break;case"left":E={x:r.x-o.width,y:m};break;default:E={x:r.x,y:r.y}}switch(Xd(t)){case"start":E[u]-=y*(i&&h?-1:1);break;case"end":E[u]+=y*(i&&h?-1:1);break}return E}const kQ=async(e,t,i)=>{const{placement:r="bottom",strategy:o="absolute",middleware:c=[],platform:u}=i,l=c.filter(Boolean),d=await(u.isRTL==null?void 0:u.isRTL(t));let h=await u.getElementRects({reference:e,floating:t,strategy:o}),{x:g,y:m}=gP(h,r,d),y=r,E={},C=0;for(let D=0;D<l.length;D++){const{name:b,fn:w}=l[D],{x:N,y:x,data:_,reset:P}=await w({x:g,y:m,initialPlacement:r,placement:y,strategy:o,middlewareData:E,rects:h,platform:u,elements:{reference:e,floating:t}});g=N??g,m=x??m,E={...E,[b]:{...E[b],..._}},P&&C<=50&&(C++,typeof P=="object"&&(P.placement&&(y=P.placement),P.rects&&(h=P.rects===!0?await u.getElementRects({reference:e,floating:t,strategy:o}):P.rects),{x:g,y:m}=gP(h,y,d)),D=-1)}return{x:g,y:m,placement:y,strategy:o,middlewareData:E}};async function mf(e,t){var i;t===void 0&&(t={});const{x:r,y:o,platform:c,rects:u,elements:l,strategy:d}=e,{boundary:h="clippingAncestors",rootBoundary:g="viewport",elementContext:m="floating",altBoundary:y=!1,padding:E=0}=xl(t,e),C=mk(E),b=l[y?m==="floating"?"reference":"floating":m],w=wN(await c.getClippingRect({element:(i=await(c.isElement==null?void 0:c.isElement(b)))==null||i?b:b.contextElement||await(c.getDocumentElement==null?void 0:c.getDocumentElement(l.floating)),boundary:h,rootBoundary:g,strategy:d})),N=m==="floating"?{x:r,y:o,width:u.floating.width,height:u.floating.height}:u.reference,x=await(c.getOffsetParent==null?void 0:c.getOffsetParent(l.floating)),_=await(c.isElement==null?void 0:c.isElement(x))?await(c.getScale==null?void 0:c.getScale(x))||{x:1,y:1}:{x:1,y:1},P=wN(c.convertOffsetParentRelativeRectToViewportRelativeRect?await c.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:N,offsetParent:x,strategy:d}):N);return{top:(w.top-P.top+C.top)/_.y,bottom:(P.bottom-w.bottom+C.bottom)/_.y,left:(w.left-P.left+C.left)/_.x,right:(P.right-w.right+C.right)/_.x}}const VQ=e=>({name:"arrow",options:e,async fn(t){const{x:i,y:r,placement:o,rects:c,platform:u,elements:l,middlewareData:d}=t,{element:h,padding:g=0}=xl(e,t)||{};if(h==null)return{};const m=mk(g),y={x:i,y:r},E=t2(o),C=e2(E),D=await u.getDimensions(h),b=E==="y",w=b?"top":"left",N=b?"bottom":"right",x=b?"clientHeight":"clientWidth",_=c.reference[C]+c.reference[E]-y[E]-c.floating[C],P=y[E]-c.reference[E],R=await(u.getOffsetParent==null?void 0:u.getOffsetParent(h));let k=R?R[x]:0;(!k||!await(u.isElement==null?void 0:u.isElement(R)))&&(k=l.floating[x]||c.floating[C]);const j=_/2-P/2,V=k/2-D[C]/2-1,M=_c(m[w],V),F=_c(m[N],V),I=M,A=k-D[C]-F,O=k/2-D[C]/2+j,K=RD(I,O,A),q=!d.arrow&&Xd(o)!=null&&O!==K&&c.reference[C]/2-(O<I?M:F)-D[C]/2<0,Y=q?O<I?O-I:O-A:0;return{[E]:y[E]+Y,data:{[E]:K,centerOffset:O-K-Y,...q&&{alignmentOffset:Y}},reset:q}}}),TQ=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var i,r;const{placement:o,middlewareData:c,rects:u,initialPlacement:l,platform:d,elements:h}=t,{mainAxis:g=!0,crossAxis:m=!0,fallbackPlacements:y,fallbackStrategy:E="bestFit",fallbackAxisSideDirection:C="none",flipAlignment:D=!0,...b}=xl(e,t);if((i=c.arrow)!=null&&i.alignmentOffset)return{};const w=wl(o),N=Do(l),x=wl(l)===l,_=await(d.isRTL==null?void 0:d.isRTL(h.floating)),P=y||(x||!D?[xN(l)]:DQ(l)),R=C!=="none";!y&&R&&P.push(...jQ(l,D,C,_));const k=[l,...P],j=await mf(t,b),V=[];let M=((r=c.flip)==null?void 0:r.overflows)||[];if(g&&V.push(j[w]),m){const O=EQ(o,u,_);V.push(j[O[0]],j[O[1]])}if(M=[...M,{placement:o,overflows:V}],!V.every(O=>O<=0)){var F,I;const O=(((F=c.flip)==null?void 0:F.index)||0)+1,K=k[O];if(K&&(!(m==="alignment"?N!==Do(K):!1)||M.every(H=>Do(H.placement)===N?H.overflows[0]>0:!0)))return{data:{index:O,overflows:M},reset:{placement:K}};let q=(I=M.filter(Y=>Y.overflows[0]<=0).sort((Y,H)=>Y.overflows[1]-H.overflows[1])[0])==null?void 0:I.placement;if(!q)switch(E){case"bestFit":{var A;const Y=(A=M.filter(H=>{if(R){const L=Do(H.placement);return L===N||L==="y"}return!0}).map(H=>[H.placement,H.overflows.filter(L=>L>0).reduce((L,z)=>L+z,0)]).sort((H,L)=>H[1]-L[1])[0])==null?void 0:A[0];Y&&(q=Y);break}case"initialPlacement":q=l;break}if(o!==q)return{reset:{placement:q}}}return{}}}};function vP(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function bP(e){return NQ.some(t=>e[t]>=0)}const RQ=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:i}=t,{strategy:r="referenceHidden",...o}=xl(e,t);switch(r){case"referenceHidden":{const c=await mf(t,{...o,elementContext:"reference"}),u=vP(c,i.reference);return{data:{referenceHiddenOffsets:u,referenceHidden:bP(u)}}}case"escaped":{const c=await mf(t,{...o,altBoundary:!0}),u=vP(c,i.floating);return{data:{escapedOffsets:u,escaped:bP(u)}}}default:return{}}}}},fk=new Set(["left","top"]);async function AQ(e,t){const{placement:i,platform:r,elements:o}=e,c=await(r.isRTL==null?void 0:r.isRTL(o.floating)),u=wl(i),l=Xd(i),d=Do(i)==="y",h=fk.has(u)?-1:1,g=c&&d?-1:1,m=xl(t,e);let{mainAxis:y,crossAxis:E,alignmentAxis:C}=typeof m=="number"?{mainAxis:m,crossAxis:0,alignmentAxis:null}:{mainAxis:m.mainAxis||0,crossAxis:m.crossAxis||0,alignmentAxis:m.alignmentAxis};return l&&typeof C=="number"&&(E=l==="end"?C*-1:C),d?{x:E*g,y:y*h}:{x:y*h,y:E*g}}const MQ=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var i,r;const{x:o,y:c,placement:u,middlewareData:l}=t,d=await AQ(t,e);return u===((i=l.offset)==null?void 0:i.placement)&&(r=l.arrow)!=null&&r.alignmentOffset?{}:{x:o+d.x,y:c+d.y,data:{...d,placement:u}}}}},LQ=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:i,y:r,placement:o}=t,{mainAxis:c=!0,crossAxis:u=!1,limiter:l={fn:b=>{let{x:w,y:N}=b;return{x:w,y:N}}},...d}=xl(e,t),h={x:i,y:r},g=await mf(t,d),m=Do(wl(o)),y=ZS(m);let E=h[y],C=h[m];if(c){const b=y==="y"?"top":"left",w=y==="y"?"bottom":"right",N=E+g[b],x=E-g[w];E=RD(N,E,x)}if(u){const b=m==="y"?"top":"left",w=m==="y"?"bottom":"right",N=C+g[b],x=C-g[w];C=RD(N,C,x)}const D=l.fn({...t,[y]:E,[m]:C});return{...D,data:{x:D.x-i,y:D.y-r,enabled:{[y]:c,[m]:u}}}}}},OQ=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:i,y:r,placement:o,rects:c,middlewareData:u}=t,{offset:l=0,mainAxis:d=!0,crossAxis:h=!0}=xl(e,t),g={x:i,y:r},m=Do(o),y=ZS(m);let E=g[y],C=g[m];const D=xl(l,t),b=typeof D=="number"?{mainAxis:D,crossAxis:0}:{mainAxis:0,crossAxis:0,...D};if(d){const x=y==="y"?"height":"width",_=c.reference[y]-c.floating[x]+b.mainAxis,P=c.reference[y]+c.reference[x]-b.mainAxis;E<_?E=_:E>P&&(E=P)}if(h){var w,N;const x=y==="y"?"width":"height",_=fk.has(wl(o)),P=c.reference[m]-c.floating[x]+(_&&((w=u.offset)==null?void 0:w[m])||0)+(_?0:b.crossAxis),R=c.reference[m]+c.reference[x]+(_?0:((N=u.offset)==null?void 0:N[m])||0)-(_?b.crossAxis:0);C<P?C=P:C>R&&(C=R)}return{[y]:E,[m]:C}}}},IQ=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var i,r;const{placement:o,rects:c,platform:u,elements:l}=t,{apply:d=()=>{},...h}=xl(e,t),g=await mf(t,h),m=wl(o),y=Xd(o),E=Do(o)==="y",{width:C,height:D}=c.floating;let b,w;m==="top"||m==="bottom"?(b=m,w=y===(await(u.isRTL==null?void 0:u.isRTL(l.floating))?"start":"end")?"left":"right"):(w=m,b=y==="end"?"top":"bottom");const N=D-g.top-g.bottom,x=C-g.left-g.right,_=_c(D-g[b],N),P=_c(C-g[w],x),R=!t.middlewareData.shift;let k=_,j=P;if((i=t.middlewareData.shift)!=null&&i.enabled.x&&(j=x),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(k=N),R&&!y){const M=Jr(g.left,0),F=Jr(g.right,0),I=Jr(g.top,0),A=Jr(g.bottom,0);E?j=C-2*(M!==0||F!==0?M+F:Jr(g.left,g.right)):k=D-2*(I!==0||A!==0?I+A:Jr(g.top,g.bottom))}await d({...t,availableWidth:j,availableHeight:k});const V=await u.getDimensions(l.floating);return C!==V.width||D!==V.height?{reset:{rects:!0}}:{}}}};function ZN(){return typeof window<"u"}function Jd(e){return gk(e)?(e.nodeName||"").toLowerCase():"#document"}function tn(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function To(e){var t;return(t=(gk(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function gk(e){return ZN()?e instanceof Node||e instanceof tn(e).Node:!1}function Qn(e){return ZN()?e instanceof Element||e instanceof tn(e).Element:!1}function Po(e){return ZN()?e instanceof HTMLElement||e instanceof tn(e).HTMLElement:!1}function NP(e){return!ZN()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof tn(e).ShadowRoot}const FQ=new Set(["inline","contents"]);function Wf(e){const{overflow:t,overflowX:i,overflowY:r,display:o}=Xn(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+i)&&!FQ.has(o)}const BQ=new Set(["table","td","th"]);function $Q(e){return BQ.has(Jd(e))}const zQ=[":popover-open",":modal"];function e0(e){return zQ.some(t=>{try{return e.matches(t)}catch{return!1}})}const UQ=["transform","translate","scale","rotate","perspective"],WQ=["transform","translate","scale","rotate","perspective","filter"],HQ=["paint","layout","strict","content"];function s2(e){const t=i2(),i=Qn(e)?Xn(e):e;return UQ.some(r=>i[r]?i[r]!=="none":!1)||(i.containerType?i.containerType!=="normal":!1)||!t&&(i.backdropFilter?i.backdropFilter!=="none":!1)||!t&&(i.filter?i.filter!=="none":!1)||WQ.some(r=>(i.willChange||"").includes(r))||HQ.some(r=>(i.contain||"").includes(r))}function qQ(e){let t=Cc(e);for(;Po(t)&&!Ad(t);){if(s2(t))return t;if(e0(t))return null;t=Cc(t)}return null}function i2(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const KQ=new Set(["html","body","#document"]);function Ad(e){return KQ.has(Jd(e))}function Xn(e){return tn(e).getComputedStyle(e)}function t0(e){return Qn(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Cc(e){if(Jd(e)==="html")return e;const t=e.assignedSlot||e.parentNode||NP(e)&&e.host||To(e);return NP(t)?t.host:t}function vk(e){const t=Cc(e);return Ad(t)?e.ownerDocument?e.ownerDocument.body:e.body:Po(t)&&Wf(t)?t:vk(t)}function ff(e,t,i){var r;t===void 0&&(t=[]),i===void 0&&(i=!0);const o=vk(e),c=o===((r=e.ownerDocument)==null?void 0:r.body),u=tn(o);if(c){const l=MD(u);return t.concat(u,u.visualViewport||[],Wf(o)?o:[],l&&i?ff(l):[])}return t.concat(o,ff(o,[],i))}function MD(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function bk(e){const t=Xn(e);let i=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Po(e),c=o?e.offsetWidth:i,u=o?e.offsetHeight:r,l=NN(i)!==c||NN(r)!==u;return l&&(i=c,r=u),{width:i,height:r,$:l}}function a2(e){return Qn(e)?e:e.contextElement}function gd(e){const t=a2(e);if(!Po(t))return _o(1);const i=t.getBoundingClientRect(),{width:r,height:o,$:c}=bk(t);let u=(c?NN(i.width):i.width)/r,l=(c?NN(i.height):i.height)/o;return(!u||!Number.isFinite(u))&&(u=1),(!l||!Number.isFinite(l))&&(l=1),{x:u,y:l}}const GQ=_o(0);function Nk(e){const t=tn(e);return!i2()||!t.visualViewport?GQ:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function YQ(e,t,i){return t===void 0&&(t=!1),!i||t&&i!==tn(e)?!1:t}function Bu(e,t,i,r){t===void 0&&(t=!1),i===void 0&&(i=!1);const o=e.getBoundingClientRect(),c=a2(e);let u=_o(1);t&&(r?Qn(r)&&(u=gd(r)):u=gd(e));const l=YQ(c,i,r)?Nk(c):_o(0);let d=(o.left+l.x)/u.x,h=(o.top+l.y)/u.y,g=o.width/u.x,m=o.height/u.y;if(c){const y=tn(c),E=r&&Qn(r)?tn(r):r;let C=y,D=MD(C);for(;D&&r&&E!==C;){const b=gd(D),w=D.getBoundingClientRect(),N=Xn(D),x=w.left+(D.clientLeft+parseFloat(N.paddingLeft))*b.x,_=w.top+(D.clientTop+parseFloat(N.paddingTop))*b.y;d*=b.x,h*=b.y,g*=b.x,m*=b.y,d+=x,h+=_,C=tn(D),D=MD(C)}}return wN({width:g,height:m,x:d,y:h})}function s0(e,t){const i=t0(e).scrollLeft;return t?t.left+i:Bu(To(e)).left+i}function xk(e,t){const i=e.getBoundingClientRect(),r=i.left+t.scrollLeft-s0(e,i),o=i.top+t.scrollTop;return{x:r,y:o}}function QQ(e){let{elements:t,rect:i,offsetParent:r,strategy:o}=e;const c=o==="fixed",u=To(r),l=t?e0(t.floating):!1;if(r===u||l&&c)return i;let d={scrollLeft:0,scrollTop:0},h=_o(1);const g=_o(0),m=Po(r);if((m||!m&&!c)&&((Jd(r)!=="body"||Wf(u))&&(d=t0(r)),Po(r))){const E=Bu(r);h=gd(r),g.x=E.x+r.clientLeft,g.y=E.y+r.clientTop}const y=u&&!m&&!c?xk(u,d):_o(0);return{width:i.width*h.x,height:i.height*h.y,x:i.x*h.x-d.scrollLeft*h.x+g.x+y.x,y:i.y*h.y-d.scrollTop*h.y+g.y+y.y}}function XQ(e){return Array.from(e.getClientRects())}function JQ(e){const t=To(e),i=t0(e),r=e.ownerDocument.body,o=Jr(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),c=Jr(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let u=-i.scrollLeft+s0(e);const l=-i.scrollTop;return Xn(r).direction==="rtl"&&(u+=Jr(t.clientWidth,r.clientWidth)-o),{width:o,height:c,x:u,y:l}}const xP=25;function ZQ(e,t){const i=tn(e),r=To(e),o=i.visualViewport;let c=r.clientWidth,u=r.clientHeight,l=0,d=0;if(o){c=o.width,u=o.height;const g=i2();(!g||g&&t==="fixed")&&(l=o.offsetLeft,d=o.offsetTop)}const h=s0(r);if(h<=0){const g=r.ownerDocument,m=g.body,y=getComputedStyle(m),E=g.compatMode==="CSS1Compat"&&parseFloat(y.marginLeft)+parseFloat(y.marginRight)||0,C=Math.abs(r.clientWidth-m.clientWidth-E);C<=xP&&(c-=C)}else h<=xP&&(c+=h);return{width:c,height:u,x:l,y:d}}const eX=new Set(["absolute","fixed"]);function tX(e,t){const i=Bu(e,!0,t==="fixed"),r=i.top+e.clientTop,o=i.left+e.clientLeft,c=Po(e)?gd(e):_o(1),u=e.clientWidth*c.x,l=e.clientHeight*c.y,d=o*c.x,h=r*c.y;return{width:u,height:l,x:d,y:h}}function wP(e,t,i){let r;if(t==="viewport")r=ZQ(e,i);else if(t==="document")r=JQ(To(e));else if(Qn(t))r=tX(t,i);else{const o=Nk(e);r={x:t.x-o.x,y:t.y-o.y,width:t.width,height:t.height}}return wN(r)}function wk(e,t){const i=Cc(e);return i===t||!Qn(i)||Ad(i)?!1:Xn(i).position==="fixed"||wk(i,t)}function sX(e,t){const i=t.get(e);if(i)return i;let r=ff(e,[],!1).filter(l=>Qn(l)&&Jd(l)!=="body"),o=null;const c=Xn(e).position==="fixed";let u=c?Cc(e):e;for(;Qn(u)&&!Ad(u);){const l=Xn(u),d=s2(u);!d&&l.position==="fixed"&&(o=null),(c?!d&&!o:!d&&l.position==="static"&&!!o&&eX.has(o.position)||Wf(u)&&!d&&wk(e,u))?r=r.filter(g=>g!==u):o=l,u=Cc(u)}return t.set(e,r),r}function iX(e){let{element:t,boundary:i,rootBoundary:r,strategy:o}=e;const u=[...i==="clippingAncestors"?e0(t)?[]:sX(t,this._c):[].concat(i),r],l=u[0],d=u.reduce((h,g)=>{const m=wP(t,g,o);return h.top=Jr(m.top,h.top),h.right=_c(m.right,h.right),h.bottom=_c(m.bottom,h.bottom),h.left=Jr(m.left,h.left),h},wP(t,l,o));return{width:d.right-d.left,height:d.bottom-d.top,x:d.left,y:d.top}}function aX(e){const{width:t,height:i}=bk(e);return{width:t,height:i}}function rX(e,t,i){const r=Po(t),o=To(t),c=i==="fixed",u=Bu(e,!0,c,t);let l={scrollLeft:0,scrollTop:0};const d=_o(0);function h(){d.x=s0(o)}if(r||!r&&!c)if((Jd(t)!=="body"||Wf(o))&&(l=t0(t)),r){const E=Bu(t,!0,c,t);d.x=E.x+t.clientLeft,d.y=E.y+t.clientTop}else o&&h();c&&!r&&o&&h();const g=o&&!r&&!c?xk(o,l):_o(0),m=u.left+l.scrollLeft-d.x-g.x,y=u.top+l.scrollTop-d.y-g.y;return{x:m,y,width:u.width,height:u.height}}function vE(e){return Xn(e).position==="static"}function yP(e,t){if(!Po(e)||Xn(e).position==="fixed")return null;if(t)return t(e);let i=e.offsetParent;return To(e)===i&&(i=i.ownerDocument.body),i}function yk(e,t){const i=tn(e);if(e0(e))return i;if(!Po(e)){let o=Cc(e);for(;o&&!Ad(o);){if(Qn(o)&&!vE(o))return o;o=Cc(o)}return i}let r=yP(e,t);for(;r&&$Q(r)&&vE(r);)r=yP(r,t);return r&&Ad(r)&&vE(r)&&!s2(r)?i:r||qQ(e)||i}const nX=async function(e){const t=this.getOffsetParent||yk,i=this.getDimensions,r=await i(e.floating);return{reference:rX(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function oX(e){return Xn(e).direction==="rtl"}const lX={convertOffsetParentRelativeRectToViewportRelativeRect:QQ,getDocumentElement:To,getClippingRect:iX,getOffsetParent:yk,getElementRects:nX,getClientRects:XQ,getDimensions:aX,getScale:gd,isElement:Qn,isRTL:oX};function Ek(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function cX(e,t){let i=null,r;const o=To(e);function c(){var l;clearTimeout(r),(l=i)==null||l.disconnect(),i=null}function u(l,d){l===void 0&&(l=!1),d===void 0&&(d=1),c();const h=e.getBoundingClientRect(),{left:g,top:m,width:y,height:E}=h;if(l||t(),!y||!E)return;const C=Db(m),D=Db(o.clientWidth-(g+y)),b=Db(o.clientHeight-(m+E)),w=Db(g),x={rootMargin:-C+"px "+-D+"px "+-b+"px "+-w+"px",threshold:Jr(0,_c(1,d))||1};let _=!0;function P(R){const k=R[0].intersectionRatio;if(k!==d){if(!_)return u();k?u(!1,k):r=setTimeout(()=>{u(!1,1e-7)},1e3)}k===1&&!Ek(h,e.getBoundingClientRect())&&u(),_=!1}try{i=new IntersectionObserver(P,{...x,root:o.ownerDocument})}catch{i=new IntersectionObserver(P,x)}i.observe(e)}return u(!0),c}function uX(e,t,i,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:c=!0,elementResize:u=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:d=!1}=r,h=a2(e),g=o||c?[...h?ff(h):[],...ff(t)]:[];g.forEach(w=>{o&&w.addEventListener("scroll",i,{passive:!0}),c&&w.addEventListener("resize",i)});const m=h&&l?cX(h,i):null;let y=-1,E=null;u&&(E=new ResizeObserver(w=>{let[N]=w;N&&N.target===h&&E&&(E.unobserve(t),cancelAnimationFrame(y),y=requestAnimationFrame(()=>{var x;(x=E)==null||x.observe(t)})),i()}),h&&!d&&E.observe(h),E.observe(t));let C,D=d?Bu(e):null;d&&b();function b(){const w=Bu(e);D&&!Ek(D,w)&&i(),D=w,C=requestAnimationFrame(b)}return i(),()=>{var w;g.forEach(N=>{o&&N.removeEventListener("scroll",i),c&&N.removeEventListener("resize",i)}),m==null||m(),(w=E)==null||w.disconnect(),E=null,d&&cancelAnimationFrame(C)}}const pX=MQ,dX=LQ,hX=TQ,mX=IQ,fX=RQ,EP=VQ,gX=OQ,vX=(e,t,i)=>{const r=new Map,o={platform:lX,...i},c={...o.platform,_c:r};return kQ(e,t,{...o,platform:c})};var bX=typeof document<"u",NX=function(){},eN=bX?f.useLayoutEffect:NX;function yN(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let i,r,o;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(i=e.length,i!==t.length)return!1;for(r=i;r--!==0;)if(!yN(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),i=o.length,i!==Object.keys(t).length)return!1;for(r=i;r--!==0;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=i;r--!==0;){const c=o[r];if(!(c==="_owner"&&e.$$typeof)&&!yN(e[c],t[c]))return!1}return!0}return e!==e&&t!==t}function Dk(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function DP(e,t){const i=Dk(e);return Math.round(t*i)/i}function bE(e){const t=f.useRef(e);return eN(()=>{t.current=e}),t}function xX(e){e===void 0&&(e={});const{placement:t="bottom",strategy:i="absolute",middleware:r=[],platform:o,elements:{reference:c,floating:u}={},transform:l=!0,whileElementsMounted:d,open:h}=e,[g,m]=f.useState({x:0,y:0,strategy:i,placement:t,middlewareData:{},isPositioned:!1}),[y,E]=f.useState(r);yN(y,r)||E(r);const[C,D]=f.useState(null),[b,w]=f.useState(null),N=f.useCallback(H=>{H!==R.current&&(R.current=H,D(H))},[]),x=f.useCallback(H=>{H!==k.current&&(k.current=H,w(H))},[]),_=c||C,P=u||b,R=f.useRef(null),k=f.useRef(null),j=f.useRef(g),V=d!=null,M=bE(d),F=bE(o),I=bE(h),A=f.useCallback(()=>{if(!R.current||!k.current)return;const H={placement:t,strategy:i,middleware:y};F.current&&(H.platform=F.current),vX(R.current,k.current,H).then(L=>{const z={...L,isPositioned:I.current!==!1};O.current&&!yN(j.current,z)&&(j.current=z,En.flushSync(()=>{m(z)}))})},[y,t,i,F,I]);eN(()=>{h===!1&&j.current.isPositioned&&(j.current.isPositioned=!1,m(H=>({...H,isPositioned:!1})))},[h]);const O=f.useRef(!1);eN(()=>(O.current=!0,()=>{O.current=!1}),[]),eN(()=>{if(_&&(R.current=_),P&&(k.current=P),_&&P){if(M.current)return M.current(_,P,A);A()}},[_,P,A,M,V]);const K=f.useMemo(()=>({reference:R,floating:k,setReference:N,setFloating:x}),[N,x]),q=f.useMemo(()=>({reference:_,floating:P}),[_,P]),Y=f.useMemo(()=>{const H={position:i,left:0,top:0};if(!q.floating)return H;const L=DP(q.floating,g.x),z=DP(q.floating,g.y);return l?{...H,transform:"translate("+L+"px, "+z+"px)",...Dk(q.floating)>=1.5&&{willChange:"transform"}}:{position:i,left:L,top:z}},[i,l,q.floating,g.x,g.y]);return f.useMemo(()=>({...g,update:A,refs:K,elements:q,floatingStyles:Y}),[g,A,K,q,Y])}const wX=e=>{function t(i){return{}.hasOwnProperty.call(i,"current")}return{name:"arrow",options:e,fn(i){const{element:r,padding:o}=typeof e=="function"?e(i):e;return r&&t(r)?r.current!=null?EP({element:r.current,padding:o}).fn(i):{}:r?EP({element:r,padding:o}).fn(i):{}}}},yX=(e,t)=>({...pX(e),options:[e,t]}),EX=(e,t)=>({...dX(e),options:[e,t]}),DX=(e,t)=>({...gX(e),options:[e,t]}),SX=(e,t)=>({...hX(e),options:[e,t]}),_X=(e,t)=>({...mX(e),options:[e,t]}),CX=(e,t)=>({...fX(e),options:[e,t]}),jX=(e,t)=>({...wX(e),options:[e,t]});var PX="Arrow",Sk=f.forwardRef((e,t)=>{const{children:i,width:r=10,height:o=5,...c}=e;return ae.jsx(Gt.svg,{...c,ref:t,width:r,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?i:ae.jsx("polygon",{points:"0,0 30,0 15,10"})})});Sk.displayName=PX;var kX=Sk;function r2(e){const[t,i]=f.useState(void 0);return ea(()=>{if(e){i({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const c=o[0];let u,l;if("borderBoxSize"in c){const d=c.borderBoxSize,h=Array.isArray(d)?d[0]:d;u=h.inlineSize,l=h.blockSize}else u=e.offsetWidth,l=e.offsetHeight;i({width:u,height:l})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else i(void 0)},[e]),t}var n2="Popper",[_k,Rc]=Aa(n2),[VX,Ck]=_k(n2),jk=e=>{const{__scopePopper:t,children:i}=e,[r,o]=f.useState(null);return ae.jsx(VX,{scope:t,anchor:r,onAnchorChange:o,children:i})};jk.displayName=n2;var Pk="PopperAnchor",kk=f.forwardRef((e,t)=>{const{__scopePopper:i,virtualRef:r,...o}=e,c=Ck(Pk,i),u=f.useRef(null),l=Is(t,u),d=f.useRef(null);return f.useEffect(()=>{const h=d.current;d.current=(r==null?void 0:r.current)||u.current,h!==d.current&&c.onAnchorChange(d.current)}),r?null:ae.jsx(Gt.div,{...o,ref:l})});kk.displayName=Pk;var o2="PopperContent",[TX,RX]=_k(o2),Vk=f.forwardRef((e,t)=>{var J,G,be,ne,Ee,ce;const{__scopePopper:i,side:r="bottom",sideOffset:o=0,align:c="center",alignOffset:u=0,arrowPadding:l=0,avoidCollisions:d=!0,collisionBoundary:h=[],collisionPadding:g=0,sticky:m="partial",hideWhenDetached:y=!1,updatePositionStrategy:E="optimized",onPlaced:C,...D}=e,b=Ck(o2,i),[w,N]=f.useState(null),x=Is(t,Be=>N(Be)),[_,P]=f.useState(null),R=r2(_),k=(R==null?void 0:R.width)??0,j=(R==null?void 0:R.height)??0,V=r+(c!=="center"?"-"+c:""),M=typeof g=="number"?g:{top:0,right:0,bottom:0,left:0,...g},F=Array.isArray(h)?h:[h],I=F.length>0,A={padding:M,boundary:F.filter(MX),altBoundary:I},{refs:O,floatingStyles:K,placement:q,isPositioned:Y,middlewareData:H}=xX({strategy:"fixed",placement:V,whileElementsMounted:(...Be)=>uX(...Be,{animationFrame:E==="always"}),elements:{reference:b.anchor},middleware:[yX({mainAxis:o+j,alignmentAxis:u}),d&&EX({mainAxis:!0,crossAxis:!1,limiter:m==="partial"?DX():void 0,...A}),d&&SX({...A}),_X({...A,apply:({elements:Be,rects:je,availableWidth:at,availableHeight:xt})=>{const{width:Le,height:ye}=je.reference,Me=Be.floating.style;Me.setProperty("--radix-popper-available-width",`${at}px`),Me.setProperty("--radix-popper-available-height",`${xt}px`),Me.setProperty("--radix-popper-anchor-width",`${Le}px`),Me.setProperty("--radix-popper-anchor-height",`${ye}px`)}}),_&&jX({element:_,padding:l}),LX({arrowWidth:k,arrowHeight:j}),y&&CX({strategy:"referenceHidden",...A})]}),[L,z]=Ak(q),$=Wi(C);ea(()=>{Y&&($==null||$())},[Y,$]);const W=(J=H.arrow)==null?void 0:J.x,ee=(G=H.arrow)==null?void 0:G.y,se=((be=H.arrow)==null?void 0:be.centerOffset)!==0,[ge,ve]=f.useState();return ea(()=>{w&&ve(window.getComputedStyle(w).zIndex)},[w]),ae.jsx("div",{ref:O.setFloating,"data-radix-popper-content-wrapper":"",style:{...K,transform:Y?K.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ge,"--radix-popper-transform-origin":[(ne=H.transformOrigin)==null?void 0:ne.x,(Ee=H.transformOrigin)==null?void 0:Ee.y].join(" "),...((ce=H.hide)==null?void 0:ce.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:ae.jsx(TX,{scope:i,placedSide:L,onArrowChange:P,arrowX:W,arrowY:ee,shouldHideArrow:se,children:ae.jsx(Gt.div,{"data-side":L,"data-align":z,...D,ref:x,style:{...D.style,animation:Y?void 0:"none"}})})})});Vk.displayName=o2;var Tk="PopperArrow",AX={top:"bottom",right:"left",bottom:"top",left:"right"},Rk=f.forwardRef(function(t,i){const{__scopePopper:r,...o}=t,c=RX(Tk,r),u=AX[c.placedSide];return ae.jsx("span",{ref:c.onArrowChange,style:{position:"absolute",left:c.arrowX,top:c.arrowY,[u]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[c.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[c.placedSide],visibility:c.shouldHideArrow?"hidden":void 0},children:ae.jsx(kX,{...o,ref:i,style:{...o.style,display:"block"}})})});Rk.displayName=Tk;function MX(e){return e!==null}var LX=e=>({name:"transformOrigin",options:e,fn(t){var b,w,N;const{placement:i,rects:r,middlewareData:o}=t,u=((b=o.arrow)==null?void 0:b.centerOffset)!==0,l=u?0:e.arrowWidth,d=u?0:e.arrowHeight,[h,g]=Ak(i),m={start:"0%",center:"50%",end:"100%"}[g],y=(((w=o.arrow)==null?void 0:w.x)??0)+l/2,E=(((N=o.arrow)==null?void 0:N.y)??0)+d/2;let C="",D="";return h==="bottom"?(C=u?m:`${y}px`,D=`${-d}px`):h==="top"?(C=u?m:`${y}px`,D=`${r.floating.height+d}px`):h==="right"?(C=`${-d}px`,D=u?m:`${E}px`):h==="left"&&(C=`${r.floating.width+d}px`,D=u?m:`${E}px`),{data:{x:C,y:D}}}});function Ak(e){const[t,i="center"]=e.split("-");return[t,i]}var Hf=jk,qf=kk,i0=Vk,a0=Rk,OX="Portal",Zd=f.forwardRef((e,t)=>{var l;const{container:i,...r}=e,[o,c]=f.useState(!1);ea(()=>c(!0),[]);const u=i||o&&((l=globalThis==null?void 0:globalThis.document)==null?void 0:l.body);return u?BH.createPortal(ae.jsx(Gt.div,{...r,ref:t}),u):null});Zd.displayName=OX;var IX=PS[" useInsertionEffect ".trim().toString()]||ea;function an({prop:e,defaultProp:t,onChange:i=()=>{},caller:r}){const[o,c,u]=FX({defaultProp:t,onChange:i}),l=e!==void 0,d=l?e:o;{const g=f.useRef(e!==void 0);f.useEffect(()=>{const m=g.current;m!==l&&console.warn(`${r} is changing from ${m?"controlled":"uncontrolled"} to ${l?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),g.current=l},[l,r])}const h=f.useCallback(g=>{var m;if(l){const y=BX(g)?g(e):g;y!==e&&((m=u.current)==null||m.call(u,y))}else c(g)},[l,e,c,u]);return[d,h]}function FX({defaultProp:e,onChange:t}){const[i,r]=f.useState(e),o=f.useRef(i),c=f.useRef(t);return IX(()=>{c.current=t},[t]),f.useEffect(()=>{var u;o.current!==i&&((u=c.current)==null||u.call(c,i),o.current=i)},[i,o]),[i,r,c]}function BX(e){return typeof e=="function"}function l2(e){const t=f.useRef({value:e,previous:e});return f.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var Mk=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),$X="VisuallyHidden",r0=f.forwardRef((e,t)=>ae.jsx(Gt.span,{...e,ref:t,style:{...Mk,...e.style}}));r0.displayName=$X;var zX=r0,UX=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},ed=new WeakMap,Sb=new WeakMap,_b={},NE=0,Lk=function(e){return e&&(e.host||Lk(e.parentNode))},WX=function(e,t){return t.map(function(i){if(e.contains(i))return i;var r=Lk(i);return r&&e.contains(r)?r:(console.error("aria-hidden",i,"in not contained inside",e,". Doing nothing"),null)}).filter(function(i){return!!i})},HX=function(e,t,i,r){var o=WX(t,Array.isArray(e)?e:[e]);_b[i]||(_b[i]=new WeakMap);var c=_b[i],u=[],l=new Set,d=new Set(o),h=function(m){!m||l.has(m)||(l.add(m),h(m.parentNode))};o.forEach(h);var g=function(m){!m||d.has(m)||Array.prototype.forEach.call(m.children,function(y){if(l.has(y))g(y);else try{var E=y.getAttribute(r),C=E!==null&&E!=="false",D=(ed.get(y)||0)+1,b=(c.get(y)||0)+1;ed.set(y,D),c.set(y,b),u.push(y),D===1&&C&&Sb.set(y,!0),b===1&&y.setAttribute(i,"true"),C||y.setAttribute(r,"true")}catch(w){console.error("aria-hidden: cannot operate on ",y,w)}})};return g(t),l.clear(),NE++,function(){u.forEach(function(m){var y=ed.get(m)-1,E=c.get(m)-1;ed.set(m,y),c.set(m,E),y||(Sb.has(m)||m.removeAttribute(r),Sb.delete(m)),E||m.removeAttribute(i)}),NE--,NE||(ed=new WeakMap,ed=new WeakMap,Sb=new WeakMap,_b={})}},n0=function(e,t,i){i===void 0&&(i="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=UX(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live], script"))),HX(r,o,i,"aria-hidden")):function(){return null}},Eo=function(){return Eo=Object.assign||function(t){for(var i,r=1,o=arguments.length;r<o;r++){i=arguments[r];for(var c in i)Object.prototype.hasOwnProperty.call(i,c)&&(t[c]=i[c])}return t},Eo.apply(this,arguments)};function Ok(e,t){var i={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(i[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(i[r[o]]=e[r[o]]);return i}function qX(e,t,i){if(i||arguments.length===2)for(var r=0,o=t.length,c;r<o;r++)(c||!(r in t))&&(c||(c=Array.prototype.slice.call(t,0,r)),c[r]=t[r]);return e.concat(c||Array.prototype.slice.call(t))}var tN="right-scroll-bar-position",sN="width-before-scroll-bar",KX="with-scroll-bars-hidden",GX="--removed-body-scroll-bar-size";function xE(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function YX(e,t){var i=f.useState(function(){return{value:e,callback:t,facade:{get current(){return i.value},set current(r){var o=i.value;o!==r&&(i.value=r,i.callback(r,o))}}}})[0];return i.callback=t,i.facade}var QX=typeof window<"u"?f.useLayoutEffect:f.useEffect,SP=new WeakMap;function XX(e,t){var i=YX(null,function(r){return e.forEach(function(o){return xE(o,r)})});return QX(function(){var r=SP.get(i);if(r){var o=new Set(r),c=new Set(e),u=i.current;o.forEach(function(l){c.has(l)||xE(l,null)}),c.forEach(function(l){o.has(l)||xE(l,u)})}SP.set(i,e)},[e]),i}function JX(e){return e}function ZX(e,t){t===void 0&&(t=JX);var i=[],r=!1,o={read:function(){if(r)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return i.length?i[i.length-1]:e},useMedium:function(c){var u=t(c,r);return i.push(u),function(){i=i.filter(function(l){return l!==u})}},assignSyncMedium:function(c){for(r=!0;i.length;){var u=i;i=[],u.forEach(c)}i={push:function(l){return c(l)},filter:function(){return i}}},assignMedium:function(c){r=!0;var u=[];if(i.length){var l=i;i=[],l.forEach(c),u=i}var d=function(){var g=u;u=[],g.forEach(c)},h=function(){return Promise.resolve().then(d)};h(),i={push:function(g){u.push(g),h()},filter:function(g){return u=u.filter(g),i}}}};return o}function eJ(e){e===void 0&&(e={});var t=ZX(null);return t.options=Eo({async:!0,ssr:!1},e),t}var Ik=function(e){var t=e.sideCar,i=Ok(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw new Error("Sidecar medium not found");return f.createElement(r,Eo({},i))};Ik.isSideCarExport=!0;function tJ(e,t){return e.useMedium(t),Ik}var Fk=eJ(),wE=function(){},o0=f.forwardRef(function(e,t){var i=f.useRef(null),r=f.useState({onScrollCapture:wE,onWheelCapture:wE,onTouchMoveCapture:wE}),o=r[0],c=r[1],u=e.forwardProps,l=e.children,d=e.className,h=e.removeScrollBar,g=e.enabled,m=e.shards,y=e.sideCar,E=e.noRelative,C=e.noIsolation,D=e.inert,b=e.allowPinchZoom,w=e.as,N=w===void 0?"div":w,x=e.gapMode,_=Ok(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),P=y,R=XX([i,t]),k=Eo(Eo({},_),o);return f.createElement(f.Fragment,null,g&&f.createElement(P,{sideCar:Fk,removeScrollBar:h,shards:m,noRelative:E,noIsolation:C,inert:D,setCallbacks:c,allowPinchZoom:!!b,lockRef:i,gapMode:x}),u?f.cloneElement(f.Children.only(l),Eo(Eo({},k),{ref:R})):f.createElement(N,Eo({},k,{className:d,ref:R}),l))});o0.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};o0.classNames={fullWidth:sN,zeroRight:tN};var sJ=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function iJ(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=sJ();return t&&e.setAttribute("nonce",t),e}function aJ(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function rJ(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var nJ=function(){var e=0,t=null;return{add:function(i){e==0&&(t=iJ())&&(aJ(t,i),rJ(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},oJ=function(){var e=nJ();return function(t,i){f.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&i])}},Bk=function(){var e=oJ(),t=function(i){var r=i.styles,o=i.dynamic;return e(r,o),null};return t},lJ={left:0,top:0,right:0,gap:0},yE=function(e){return parseInt(e||"",10)||0},cJ=function(e){var t=window.getComputedStyle(document.body),i=t[e==="padding"?"paddingLeft":"marginLeft"],r=t[e==="padding"?"paddingTop":"marginTop"],o=t[e==="padding"?"paddingRight":"marginRight"];return[yE(i),yE(r),yE(o)]},uJ=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return lJ;var t=cJ(e),i=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-i+t[2]-t[0])}},pJ=Bk(),vd="data-scroll-locked",dJ=function(e,t,i,r){var o=e.left,c=e.top,u=e.right,l=e.gap;return i===void 0&&(i="margin"),`
238
238
  .`.concat(KX,` {
239
239
  overflow: hidden `).concat(r,`;
240
240
  padding-right: `).concat(l,"px ").concat(r,`;
@@ -955,7 +955,7 @@ WARNING: This link could potentially be dangerous`)){const w=window.open();if(w)
955
955
  <path d="M12 0C12 6.627 6.627 12 0 12c6.627 0 12 5.373 12 12 0-6.627 5.373-12 12-12-6.627 0-12-5.373-12-12z"/>
956
956
  </svg>`,Gne={claude:s9,anthropic:s9,openai:BE,codex:BE,gpt:BE,gemini:i9,google:i9},a9=new Map;function Yne(e){if(!e)return null;const t=e.trim().toLowerCase();return t.includes("claude")||t.includes("anthropic")?"claude":t.includes("openai")||t.includes("codex")||t.includes("gpt")?"openai":t.includes("gemini")||t.includes("google")?"gemini":t}function RN(e){const t=Yne(e);if(!t)return null;const i=a9.get(t);if(i)return i;const r=Gne[t];if(!r)return null;const o=`data:image/svg+xml;base64,${btoa(r)}`;return a9.set(t,o),o}function _A({session:e,onRequestClose:t}){const i=f.useRef(null),{toast:r}=ii(),o=zs(),{selectedProjectId:c}=Gi(),{updateWindowMeta:u,setWindowHandle:l}=kl(),[d,h]=f.useState(!1),g=f.useRef(!1),m=[...G2,c??"all"],{data:y}=st({queryKey:["terminal-window","epic",e.epicId],queryFn:()=>Iie(e.epicId),enabled:!!e.epicId,staleTime:2*60*1e3,gcTime:5*60*1e3}),{data:E}=st({queryKey:["terminal-window","agent",e.agentId],queryFn:()=>T2(e.agentId),enabled:!!e.agentId,staleTime:5*60*1e3,gcTime:10*60*1e3}),C=!!(E!=null&&E.profileId&&!(E!=null&&E.providerName)),{data:D}=st({queryKey:["terminal-window","profile",E==null?void 0:E.profileId],queryFn:()=>Bie(E.profileId),enabled:C,staleTime:10*60*1e3,gcTime:30*60*1e3}),{data:b}=st({queryKey:["terminal-window","provider",D==null?void 0:D.providerId],queryFn:()=>$ie(D.providerId),enabled:!!(D!=null&&D.providerId&&!(E!=null&&E.providerName)),staleTime:60*60*1e3,gcTime:24*60*60*1e3}),w=(E==null?void 0:E.providerName)??(b==null?void 0:b.name),{data:N}=st({queryKey:["terminal-window","project",y==null?void 0:y.projectId],queryFn:()=>Fie(y.projectId),enabled:!!(y!=null&&y.projectId),staleTime:10*60*1e3,gcTime:30*60*1e3}),x=f.useCallback(async()=>{if(!e.tmuxSessionId){r({title:"No tmux session id",description:"This session has not published a tmux id yet.",variant:"destructive"});return}try{await navigator.clipboard.writeText(e.tmuxSessionId),r({title:"Copied tmux id",description:`${e.tmuxSessionId} copied to clipboard.`})}catch(M){r({title:"Copy failed",description:M instanceof Error?M.message:"Clipboard access is unavailable in this context.",variant:"destructive"})}},[e.tmuxSessionId,r]),_=f.useCallback(async()=>{if(!e.tmuxSessionId){r({title:"No tmux session id",description:"This session has not published a tmux id yet.",variant:"destructive"});return}try{const M=`tmux a -t ${e.tmuxSessionId}`;await navigator.clipboard.writeText(M),r({title:"Copied tmux command",description:`${M} copied to clipboard.`})}catch(M){r({title:"Copy failed",description:M instanceof Error?M.message:"Clipboard access is unavailable in this context.",variant:"destructive"})}},[e.tmuxSessionId,r]),P=yt({mutationFn:async()=>{await Od(e.id),await o.invalidateQueries({queryKey:m})},onSuccess:()=>{r({title:"Session terminated",description:`Session ${e.id.slice(0,8)} has been terminated.`}),g.current||(g.current=!0,t())},onError:M=>{r({title:"Terminate failed",description:M instanceof Error?M.message:"Unable to terminate the session right now.",variant:"destructive"})},onSettled:()=>{h(!1)}}),R=f.useCallback(()=>h(!0),[]),k=f.useCallback(M=>{const F=(y==null?void 0:y.title)??`Session ${e.id.slice(0,8)}`,I=[];E!=null&&E.name?I.push(E.name):I.push("Unassigned agent"),N!=null&&N.name&&I.push(N.name);const A=RN(w),O=[{label:"Session",value:e.id.slice(0,8),title:e.id},N!=null&&N.name?{label:"Project",value:N.name,title:N.name}:null,y!=null&&y.title?{label:"Epic",value:y.title,title:y.title}:null,{label:"Agent",value:(E==null?void 0:E.name)??"Unassigned",title:(E==null?void 0:E.name)??void 0},A?{label:"providerIcon",value:A,hidden:!0}:null].filter(Boolean),K=[{id:"copy-tmux",label:"Copy tmux id",onSelect:x,disabled:!e.tmuxSessionId},{id:"copy-tmux-command",label:"Copy tmux attach command",onSelect:_,disabled:!e.tmuxSessionId},{id:"clear-buffer",label:"Clear terminal buffer",onSelect:()=>{var q;return(q=M==null?void 0:M.clear)==null?void 0:q.call(M)},disabled:!M,shortcut:"Ctrl+K"},{id:"terminate-session",label:"Terminate session",tone:"destructive",onSelect:R}];u(e.id,{title:F,subtitle:I.filter(Boolean).join(" • ")||void 0,menuItems:K,details:O})},[E==null?void 0:E.name,y==null?void 0:y.title,x,N==null?void 0:N.name,w,R,e.id,e.tmuxSessionId,u,_]);f.useEffect(()=>{k(i.current)},[k]);const j=f.useCallback(M=>{i.current=M,l(e.id,M),k(M)},[k,e.id,l]),V=f.useCallback(()=>{g.current||(r({title:"Session ended",description:`Session ${e.id.slice(0,8)} has completed.`}),g.current=!0,t())},[t,e.id,r]);return s.jsxDEV(s.Fragment,{children:[s.jsxDEV(K2,{ref:j,sessionId:e.id,socket:null,onSessionEnded:V},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalSessionWindow.tsx",lineNumber:304,columnNumber:7},this),s.jsxDEV(Nf,{open:d,onOpenChange:h,onConfirm:()=>P.mutate(),title:"Terminate session",description:`Terminate session ${e.id.slice(0,8)}? This will stop the underlying tmux pane.`,confirmText:"Terminate",variant:"destructive",loading:P.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalSessionWindow.tsx",lineNumber:310,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalSessionWindow.tsx",lineNumber:303,columnNumber:5},this)}function M0(){const{openWindow:e,closeWindow:t,focusWindow:i}=kl();return f.useCallback(r=>{e({id:r.id,sessionId:r.id,title:`Session ${r.id.slice(0,8)}`,subtitle:"Loading metadata…",menuItems:[],details:[{label:"Session",value:r.id.slice(0,8),title:r.id}],content:s.jsxDEV(_A,{session:r,onRequestClose:()=>t(r.id)},r.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalSessionWindow.tsx",lineNumber:343,columnNumber:11},this)}),i(r.id)},[t,i,e])}function Qne({windowId:e,sessionId:t,agentName:i,worktreeName:r,onRequestClose:o}){const{socket:c}=SA(r),{updateWindowMeta:u,setWindowHandle:l}=kl(),d=f.useRef(null),[h,g]=f.useState(c.connected?"Connected":"Connecting"),m=f.useCallback(C=>{const D=[{label:"Agent",value:i,title:i},{label:"Worktree",value:r,title:r},{label:"Connection",value:h}],b=[{id:"clear-buffer",label:"Clear terminal buffer",onSelect:()=>{var w;return(w=C==null?void 0:C.clear)==null?void 0:w.call(C)},disabled:!C,shortcut:"Ctrl+K"}];u(e,{title:`${i} — ${r}`,subtitle:"Worktree terminal",details:D,menuItems:b})},[i,h,u,e,r]);f.useEffect(()=>{m(d.current)},[m]),f.useEffect(()=>{const C=()=>g("Connected"),D=()=>g("Disconnected");return c.on("connect",C),c.on("disconnect",D),()=>{c.off("connect",C),c.off("disconnect",D)}},[c]);const y=f.useCallback(C=>{d.current=C,l(e,C),m(C)},[m,l,e]),E=f.useCallback(()=>{o()},[o]);return s.jsxDEV(K2,{ref:y,sessionId:t,socket:c,onSessionEnded:E},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalSessionWindow.tsx",lineNumber:449,columnNumber:5},this)}function Xne(){const{openWindow:e,closeWindow:t,focusWindow:i}=kl();return f.useCallback(({sessionId:r,agentName:o,worktreeName:c})=>{const u=`worktree:${encodeURIComponent(c)}:${r}`;e({id:u,title:`${o} — ${c}`,subtitle:"Worktree terminal",menuItems:[],details:[{label:"Agent",value:o,title:o},{label:"Worktree",value:c,title:c},{label:"Connection",value:"Connecting"}],content:s.jsxDEV(Qne,{windowId:u,sessionId:r,agentName:o,worktreeName:c,onRequestClose:()=>t(u)},u,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalSessionWindow.tsx",lineNumber:493,columnNumber:11},this)}),i(u)},[t,i,e])}const Bb=16;function Jne(){const[e,t]=f.useState(()=>({width:typeof window>"u"?1280:window.innerWidth,height:typeof window>"u"?720:window.innerHeight}));return f.useEffect(()=>{if(typeof window>"u")return;const i=()=>{t({width:window.innerWidth,height:window.innerHeight})};return window.addEventListener("resize",i),()=>window.removeEventListener("resize",i)},[]),e}function Zne({window:e,isFocused:t,bounds:i,onFocus:r,onMinimize:o,onToggleMaximize:c,onClose:u,onUpdateBounds:l,onSessionSwitch:d}){return f.useEffect(()=>{var h;if((h=e.handle)!=null&&h.fit){const g=setTimeout(()=>{var m,y;(y=(m=e.handle)==null?void 0:m.fit)==null||y.call(m)},50);return()=>clearTimeout(g)}},[i.width,i.height,e.handle]),f.useEffect(()=>{var h;if(t&&((h=e.handle)!=null&&h.focus)){const g=setTimeout(()=>{var m,y;(y=(m=e.handle)==null?void 0:m.focus)==null||y.call(m)},0);return()=>clearTimeout(g)}},[t,e.handle]),s.jsxDEV(Vne,{size:{width:i.width,height:i.height},position:{x:i.x,y:i.y},minWidth:480,minHeight:280,bounds:"parent",onDragStop:(h,g)=>{l({width:i.width,height:i.height,x:g.x,y:g.y})},onResizeStop:(h,g,m,y,E)=>{l({width:m.offsetWidth,height:m.offsetHeight,x:E.x,y:E.y})},enableResizing:!e.maximized,disableDragging:e.maximized,dragHandleClassName:"terminal-window__header",style:{zIndex:e.zIndex,pointerEvents:"auto"},className:"pointer-events-auto",onMouseDown:r,children:s.jsxDEV("div",{className:we("flex h-full flex-col overflow-hidden rounded-md border border-border bg-background shadow-lg transition-shadow",t?"shadow-[0_20px_45px_rgba(0,0,0,0.35)]":"opacity-90"),children:[s.jsxDEV("header",{className:we("terminal-window__header flex items-center gap-3 border-b border-border bg-muted px-3 py-2 select-none"),onDoubleClick:c,children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV("button",{type:"button","aria-label":"Minimize window",title:"Minimize",className:"flex h-3 w-3 items-center justify-center rounded-full bg-amber-400 text-white",onClick:h=>{h.stopPropagation(),o()}},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:123,columnNumber:13},this),s.jsxDEV("button",{type:"button","aria-label":e.maximized?"Restore window":"Maximize window",title:e.maximized?"Restore":"Maximize",className:"flex h-3 w-3 items-center justify-center rounded-full bg-emerald-500 text-white",onClick:h=>{h.stopPropagation(),c()}},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:133,columnNumber:13},this),s.jsxDEV("button",{type:"button","aria-label":"Close window",title:"Close",className:"flex h-3 w-3 items-center justify-center rounded-full bg-destructive text-white",onClick:h=>{h.stopPropagation(),u()}},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:143,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:122,columnNumber:11},this),s.jsxDEV("div",{className:"flex flex-1 flex-col items-center justify-center text-center",children:[s.jsxDEV("span",{className:"sr-only",children:e.title},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:155,columnNumber:13},this),e.subtitle&&s.jsxDEV("span",{className:"sr-only",children:e.subtitle},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:156,columnNumber:33},this),e.details&&e.details.some(h=>!h.hidden&&!["Session","Epic"].includes(h.label))?s.jsxDEV("div",{className:"mt-1 flex flex-wrap justify-center gap-1",children:e.details.filter(h=>!h.hidden&&!["Session","Epic"].includes(h.label)).map(h=>s.jsxDEV("span",{className:"rounded bg-muted px-2 py-0.5 text-[11px] text-muted-foreground",title:h.title??h.value,children:[h.label!=="Agent"&&s.jsxDEV("span",{className:"mr-1 text-muted-foreground/70",children:[h.label,":"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:171,columnNumber:25},this),s.jsxDEV("span",{className:"font-medium text-foreground",children:h.value},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:173,columnNumber:23},this)]},`${e.id}-${h.label}`,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:165,columnNumber:21},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:161,columnNumber:15},this):null]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:154,columnNumber:11},this),e.sessionId&&d&&s.jsxDEV(Rne,{currentSessionId:e.sessionId,onSessionSwitch:d},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:181,columnNumber:13},this),s.jsxDEV("div",{className:"flex items-center",children:e.menuItems&&e.menuItems.length>0?s.jsxDEV(QR,{children:[s.jsxDEV(XR,{asChild:!0,children:s.jsxDEV("button",{type:"button","aria-label":"Open terminal actions",className:"flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted/70 hover:text-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-ring",onClick:h=>h.stopPropagation(),children:s.jsxDEV(jV,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:196,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:190,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:189,columnNumber:17},this),s.jsxDEV(z2,{sideOffset:6,align:"end",className:"z-[120] min-w-[200px] rounded-md border border-border bg-popover p-1 text-sm shadow-lg focus:outline-none",children:e.menuItems.map(h=>s.jsxDEV(U2,{className:we("flex cursor-pointer select-none items-center justify-between gap-4 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-muted",h.tone==="destructive"&&"text-destructive focus:bg-destructive/10",h.disabled&&"cursor-not-allowed opacity-50"),disabled:h.disabled,onSelect:g=>{g.preventDefault(),g.stopPropagation(),!h.disabled&&h.onSelect()},children:[s.jsxDEV("span",{children:h.label},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:222,columnNumber:23},this),h.shortcut&&s.jsxDEV("span",{className:"text-[11px] uppercase tracking-wide text-muted-foreground",children:h.shortcut},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:224,columnNumber:25},this)]},h.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:205,columnNumber:21},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:199,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:188,columnNumber:15},this):null},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:186,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:116,columnNumber:9},this),s.jsxDEV("div",{className:"flex-1 overflow-hidden bg-card",children:e.content},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:235,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:110,columnNumber:7},this)},e.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:80,columnNumber:5},this)}function eoe(){const{windows:e,focusedWindowId:t,focusWindow:i,minimizeWindow:r,toggleMaximizeWindow:o,closeWindow:c,updateWindowBounds:u,updateWindowContent:l,updateWindowMeta:d}=kl(),{width:h,height:g}=Jne(),[m,y]=f.useState(null),E=(b,w)=>{console.log("TerminalWindowsLayer: handleSessionSwitch called",{windowId:b,newSessionId:w.id,newSessionAgent:w.agentId}),console.log("TerminalWindowsLayer: Creating new content for session",w.id);const N=s.jsxDEV(_A,{session:w,onRequestClose:()=>c(b)},w.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:267,columnNumber:7},this);console.log("TerminalWindowsLayer: Updating window content"),l(b,N),console.log("TerminalWindowsLayer: Updating window sessionId to",w.id),d(b,{sessionId:w.id})};f.useEffect(()=>{if(typeof document>"u")return;const b=document.createElement("div");return b.className="fixed inset-0 z-[80] pointer-events-none",document.body.appendChild(b),y(b),()=>{document.body.removeChild(b)}},[]);const C=f.useMemo(()=>[...e].filter(b=>!b.minimized).sort((b,w)=>b.zIndex-w.zIndex),[e]);if(!m)return null;const D={width:Math.max(h-Bb*2,640),height:Math.max(g-Bb*2,360),x:Bb,y:Bb};return En.createPortal(s.jsxDEV("div",{className:"pointer-events-none fixed inset-0",children:C.map(b=>{const w=t===b.id,N=b.maximized?D:b.bounds;return s.jsxDEV(Zne,{window:b,isFocused:w,bounds:N,onFocus:()=>i(b.id),onMinimize:()=>r(b.id),onToggleMaximize:()=>o(b.id),onClose:()=>c(b.id),onUpdateBounds:x=>u(b.id,x),onSessionSwitch:x=>E(b.id,x)},b.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:317,columnNumber:11},this)})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/terminal-windows/TerminalWindowsLayer.tsx",lineNumber:311,columnNumber:5},this),m)}const G2=["terminal-dock","sessions"],AN="devchain:terminal-dock:open";function toe({session:e,agentName:t,isFocused:i,onOpen:r,onCopyTmux:o,onTerminate:c,isTerminating:u}){const l=e.status==="running";return s.jsxDEV("div",{className:we("flex items-center gap-2 rounded-md px-2 py-1.5 text-sm transition-colors",i?"bg-primary/10":"hover:bg-muted/50"),children:[s.jsxDEV("span",{className:we("h-2 w-2 shrink-0 rounded-full",l?"bg-emerald-500":"bg-muted-foreground"),title:e.status},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:69,columnNumber:7},this),s.jsxDEV("button",{type:"button",onClick:r,className:"shrink-0 font-mono text-xs text-muted-foreground hover:text-foreground hover:underline",title:`Open session ${e.id}`,children:e.id.slice(0,8)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:78,columnNumber:7},this),s.jsxDEV("button",{type:"button",onClick:r,className:"min-w-0 truncate text-left hover:text-foreground hover:underline",title:`Open session for ${t}`,children:t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:88,columnNumber:7},this),s.jsxDEV("div",{className:"flex-1"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:98,columnNumber:7},this),s.jsxDEV("div",{className:"flex shrink-0 items-center gap-1",children:[s.jsxDEV(le,{variant:"ghost",size:"sm",className:"h-7 px-2",onClick:o,disabled:!e.tmuxSessionId,title:"Copy tmux id",children:s.jsxDEV(p2,{className:"h-3.5 w-3.5","aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:110,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:102,columnNumber:9},this),s.jsxDEV(le,{variant:"ghost",size:"sm",className:"h-7 px-2 text-destructive hover:text-destructive",onClick:c,disabled:u,title:"Terminate session",children:u?s.jsxDEV(ot,{className:"h-3.5 w-3.5 animate-spin","aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:121,columnNumber:13},this):s.jsxDEV(v0,{className:"h-3.5 w-3.5","aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:123,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:112,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:101,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:62,columnNumber:5},this)}function soe({expanded:e,sessions:t,activeSessionId:i,openSessionIds:r,onToggle:o,onOpenSession:c,onSessionsChange:u,onSessionTerminated:l}){const d=zs(),{toast:h}=ii(),[g,m]=f.useState(null),[y,E]=f.useState(null),[C,D]=f.useState(""),{selectedProjectId:b}=Gi(),{windows:w,focusedWindowId:N,restoreWindow:x,focusWindow:_,minimizeWindow:P}=kl(),R=[...G2,b??"all"],{data:k,isLoading:j,isFetching:V,error:M}=st({queryKey:R,queryFn:()=>V2(b??void 0),enabled:e||t.length===0,refetchInterval:e?7e3:!1}),F=f.useMemo(()=>{const se=new Set;for(const ge of t)ge.agentId&&se.add(ge.agentId);return Array.from(se)},[t]),I=IK({queries:F.map(se=>({queryKey:["agent-summary",se],queryFn:()=>T2(se),enabled:e,staleTime:5*60*1e3,gcTime:10*60*1e3}))}),A=f.useMemo(()=>{const se=new Map;return I.forEach((ge,ve)=>{var G;const J=F[ve];(G=ge.data)!=null&&G.name&&se.set(J,ge.data.name)}),se},[I,F]),O=se=>se?A.get(se)??se.slice(0,8):"Unassigned";f.useEffect(()=>{k&&(u(k),D(k.length===0?"No active sessions in the terminal dock.":`Terminal dock updated. ${k.length} active ${k.length===1?"session":"sessions"}.`))},[k,u]);const K=yt({mutationFn:async se=>{await Od(se),await d.invalidateQueries({queryKey:R})},onSuccess:(se,ge)=>{h({title:"Session terminated",description:`Session ${ge.slice(0,8)} terminated successfully.`}),l(ge)},onError:se=>{const ge=se instanceof Error?se.message:"Unable to terminate session";h({title:"Terminate failed",description:ge,variant:"destructive"})},onSettled:()=>{m(null)}}),q=yt({mutationFn:async se=>{const ge=z.get(se);if(!(ge!=null&&ge.agentId)||!b)throw new Error("Cannot restart: missing agent or project");const ve=await _0(ge.agentId,b);return await d.invalidateQueries({queryKey:R}),ve},onSuccess:(se,ge)=>{se.terminateWarning?h({title:"Session restarted with warning",description:se.terminateWarning,variant:"destructive"}):h({title:"Session restarted",description:`Session ${ge.slice(0,8)} restarted successfully.`})},onError:se=>{const ge=se instanceof Error?se.message:"Unable to restart session";h({title:"Restart failed",description:ge,variant:"destructive"})},onSettled:()=>{E(null)}}),Y=async se=>{if(!se.tmuxSessionId){h({title:"No tmux id",description:"This session does not have a tmux session id to copy yet.",variant:"destructive"});return}try{await navigator.clipboard.writeText(se.tmuxSessionId),h({title:"Copied tmux id",description:`Copied ${se.tmuxSessionId} to clipboard.`})}catch(ge){const ve=ge instanceof Error?ge.message:"Clipboard access is not available in this context.";h({title:"Copy failed",description:ve,variant:"destructive"})}},H=se=>{m(se)},L=f.useMemo(()=>t,[t]),z=f.useMemo(()=>new Map(t.map(se=>[se.id,se])),[t]),$=f.useMemo(()=>w.filter(se=>se.sessionId),[w]),W=`${L.length} ${L.length===1?"session":"sessions"}`,ee=V||M?"text-muted-foreground":"text-emerald-500";return s.jsxDEV("section",{className:we("border-t border-border bg-card transition-[height] duration-200 ease-out",e?"h-[320px]":"h-12"),"aria-label":"Terminal session dock",children:[s.jsxDEV("div",{className:"flex h-12 items-center justify-between gap-3 px-4",onDoubleClick:se=>{se.target instanceof Element&&(se.target.closest('button, [role="button"]')||o())},children:s.jsxDEV("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[s.jsxDEV("button",{type:"button",onClick:o,className:"flex shrink-0 items-center gap-2 rounded-md px-2 py-1 text-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground","aria-expanded":e,"aria-label":e?"Collapse terminal dock":"Expand terminal dock",children:[s.jsxDEV(b0,{className:"h-4 w-4","aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:350,columnNumber:13},this),s.jsxDEV("span",{className:ee,"aria-hidden":"true",children:"●"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:351,columnNumber:13},this),s.jsxDEV("span",{children:W},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:354,columnNumber:13},this),s.jsxDEV(jc,{className:we("h-4 w-4 transition-transform",e&&"rotate-90"),"aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:355,columnNumber:13},this),V&&s.jsxDEV(ot,{className:"h-3.5 w-3.5 animate-spin text-muted-foreground","aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:360,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:343,columnNumber:11},this),M&&s.jsxDEV("span",{className:"text-xs text-destructive",children:M.message||"Unable to load sessions"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:367,columnNumber:13},this),$.length>0&&s.jsxDEV("div",{className:"min-w-0 flex-1 overflow-x-auto",children:s.jsxDEV("div",{className:"flex items-center gap-1.5",children:$.map(se=>{var Ee,ce,Be,je,at;const ge=((ce=(Ee=se.details)==null?void 0:Ee.find(xt=>xt.label==="Agent"))==null?void 0:ce.value)||se.subtitle||((Be=se.sessionId)==null?void 0:Be.slice(0,8))||"Unknown",ve=se.sessionId?z.get(se.sessionId):void 0,J=(ve==null?void 0:ve.status)==="running",G=(at=(je=se.details)==null?void 0:je.find(xt=>xt.label==="providerIcon"))==null?void 0:at.value,be=N===se.id,ne=!!(ve!=null&&ve.agentId&&b);return s.jsxDEV(yf,{children:[s.jsxDEV(Ef,{asChild:!0,children:s.jsxDEV("button",{type:"button",onClick:()=>{se.minimized?x(se.id):be?P(se.id):_(se.id)},"aria-pressed":!se.minimized&&be,className:we("flex max-w-[140px] items-center gap-1.5 whitespace-nowrap rounded-md px-2 py-1 text-xs transition-colors",!se.minimized&&be?"bg-primary text-primary-foreground":se.minimized?"bg-muted hover:bg-muted/80":"bg-secondary text-secondary-foreground hover:bg-secondary/80"),children:[s.jsxDEV("span",{className:we("h-2 w-2 shrink-0 rounded-full",J?"bg-emerald-500":"bg-muted-foreground")},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:415,columnNumber:27},this),G&&s.jsxDEV("img",{src:G,alt:"",className:"h-4 w-4 shrink-0"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:422,columnNumber:29},this),s.jsxDEV("span",{className:"truncate",children:ge},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:424,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:394,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:393,columnNumber:23},this),s.jsxDEV(Id,{children:[s.jsxDEV(Zr,{disabled:!ne,onSelect:()=>{ve&&E(ve.id)},children:"Restart session"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:428,columnNumber:25},this),s.jsxDEV(hd,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:436,columnNumber:25},this),s.jsxDEV(Zr,{className:"text-destructive focus:text-destructive",disabled:!se.sessionId,onSelect:()=>{se.sessionId&&m(se.sessionId)},children:"Terminate session"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:437,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:427,columnNumber:23},this)]},se.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:392,columnNumber:21},this)})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:375,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:374,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:342,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:332,columnNumber:7},this),s.jsxDEV("span",{className:"sr-only","aria-live":"polite",children:C},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:457,columnNumber:7},this),e&&s.jsxDEV("div",{className:"flex h-[calc(100%-3rem)] flex-col border-t border-border",children:[s.jsxDEV("header",{className:"flex items-center justify-between px-4 py-2",children:[s.jsxDEV("div",{className:"flex items-center gap-2 text-sm font-medium",children:[s.jsxDEV("span",{children:"Active Sessions"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:465,columnNumber:15},this),V&&s.jsxDEV(ot,{className:"h-4 w-4 animate-spin text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:466,columnNumber:30},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:464,columnNumber:13},this),s.jsxDEV(le,{variant:"ghost",size:"sm",onClick:()=>d.invalidateQueries({queryKey:R}),disabled:j||V,children:"Refresh"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:468,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:463,columnNumber:11},this),s.jsxDEV(xr,{className:"flex-1 px-4 pb-4",children:j&&L.length===0?s.jsxDEV("div",{className:"flex h-full items-center justify-center text-sm text-muted-foreground",children:"Loading sessions…"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:480,columnNumber:15},this):L.length===0?s.jsxDEV("div",{className:"mt-6 text-sm text-muted-foreground",children:"No active sessions. Launch a session from an epic or agent to see it here."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:484,columnNumber:15},this):s.jsxDEV("div",{className:"space-y-1",children:L.map(se=>s.jsxDEV(toe,{session:se,agentName:O(se.agentId),isFocused:se.id===i,onOpen:()=>c(se),onCopyTmux:()=>Y(se),onTerminate:()=>H(se.id),isTerminating:K.isPending&&g===se.id},se.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:490,columnNumber:19},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:488,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:478,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:462,columnNumber:9},this),s.jsxDEV(Nf,{open:g!==null,onOpenChange:se=>{se||m(null)},onConfirm:()=>{g&&K.mutate(g)},title:"Terminate session",description:g?`Are you sure you want to terminate session ${g.slice(0,8)}?`:"Are you sure you want to terminate this session?",confirmText:"Terminate",variant:"destructive",loading:K.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:507,columnNumber:7},this),s.jsxDEV(Nf,{open:y!==null,onOpenChange:se=>{se||E(null)},onConfirm:()=>{y&&q.mutate(y)},title:"Restart session",description:y?`Are you sure you want to restart session ${y.slice(0,8)}? This will terminate the current session and start a new one.`:"Are you sure you want to restart this session?",confirmText:"Restart",loading:q.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:528,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/terminal-dock/TerminalDock.tsx",lineNumber:325,columnNumber:5},this)}const ioe=$f("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"}},defaultVariants:{variant:"default"}}),Ti=f.forwardRef(({className:e,variant:t,...i},r)=>s.jsxDEV("div",{ref:r,role:"alert",className:we(ioe({variant:t}),e),...i},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/alert.tsx",lineNumber:25,columnNumber:3},void 0));Ti.displayName="Alert";const Lr=f.forwardRef(({className:e,...t},i)=>s.jsxDEV("h5",{ref:i,className:we("mb-1 font-medium leading-none tracking-tight",e),...t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/alert.tsx",lineNumber:31,columnNumber:5},void 0));Lr.displayName="AlertTitle";const Ri=f.forwardRef(({className:e,...t},i)=>s.jsxDEV("div",{ref:i,className:we("text-sm [&_p]:leading-relaxed",e),...t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/alert.tsx",lineNumber:44,columnNumber:3},void 0));Ri.displayName="AlertDescription";async function aoe(e){try{const t=await e.json();if(t&&typeof t=="object"&&typeof t.message=="string")return t.message}catch{}return`Request failed with status ${e.status}`}function roe({open:e,onOpenChange:t,providerId:i,providerName:r,onEnabled:o,onSkipped:c}){const[u,l]=f.useState(!1),[d,h]=f.useState(null),g=async()=>{l(!0),h(null);try{const y=await fetch(`/api/providers/${i}/auto-compact/enable`,{method:"POST"});if(!y.ok){const E=await aoe(y);h(E);return}o==null||o(),t(!1)}catch(y){h(y instanceof Error?y.message:"Network error. Please try again.")}finally{l(!1)}},m=()=>{u||(c==null||c(),t(!1))};return s.jsxDEV(Es,{open:e,onOpenChange:y=>{y&&t(y)},children:s.jsxDEV(xs,{className:"max-w-xl",onPointerDownOutside:y=>y.preventDefault(),onInteractOutside:y=>y.preventDefault(),onEscapeKeyDown:y=>y.preventDefault(),children:[s.jsxDEV(ds,{children:[s.jsxDEV("div",{className:"flex items-center gap-3",children:[s.jsxDEV("div",{className:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-500/10",children:s.jsxDEV(Bi,{className:"h-5 w-5 text-amber-500"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:95,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:94,columnNumber:13},this),s.jsxDEV(os,{children:"Enable Auto-Compact for Claude"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:97,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:93,columnNumber:11},this),s.jsxDEV(ls,{className:"text-left",children:"Auto-compact improves context quality in long-running Claude sessions managed by DevChain. We recommend enabling it for reliable agent operation."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:99,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:92,columnNumber:9},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:["Provider: ",s.jsxDEV("span",{className:"font-medium text-foreground",children:r},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:107,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:106,columnNumber:11},this),d&&s.jsxDEV(Ti,{variant:"destructive",children:[s.jsxDEV(Bi,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:112,columnNumber:15},this),s.jsxDEV(Lr,{children:"Failed to enable auto-compact"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:113,columnNumber:15},this),s.jsxDEV(Ri,{children:d},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:114,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:111,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:105,columnNumber:9},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:m,disabled:u,children:"Skip"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:120,columnNumber:11},this),s.jsxDEV(le,{onClick:g,disabled:u,children:[u&&s.jsxDEV(ot,{className:"mr-2 h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:124,columnNumber:28},this),"Enable & Continue"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:123,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:119,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:86,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/AutoCompactEnableModal.tsx",lineNumber:77,columnNumber:5},this)}const CA=f.createContext(void 0);function noe({children:e}){const[t,i]=f.useState([]),r=f.useCallback(u=>{i(u)},[]),o=f.useCallback(()=>{i([])},[]),c=f.useMemo(()=>({items:t,setBreadcrumbs:r,clearBreadcrumbs:o}),[t,r,o]);return s.jsxDEV(CA.Provider,{value:c,children:e},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/hooks/useBreadcrumbs.tsx",lineNumber:32,columnNumber:10},this)}function ooe(){const e=f.useContext(CA);if(!e)throw new Error("useBreadcrumbs must be used within a BreadcrumbsProvider");return e}async function Y2(){const e=await fetch("/api/runtime",{headers:{accept:"application/json"}});if(!e.ok)throw new Error(`Failed to fetch runtime info: HTTP ${e.status}`);return await e.json()}const jA=f.createContext(null);function loe({children:e}){const{data:t,isLoading:i}=st({queryKey:["runtime-info"],queryFn:Y2,staleTime:1/0}),r=f.useMemo(()=>({runtimeInfo:t,runtimeLoading:i,isMainMode:(t==null?void 0:t.mode)==="main",dockerAvailable:(t==null?void 0:t.dockerAvailable)===!0}),[t,i]);return s.jsxDEV(jA.Provider,{value:r,children:e},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/hooks/useRuntime.tsx",lineNumber:31,columnNumber:10},this)}function Q2(){const e=f.useContext(jA);if(!e)throw new Error("useRuntime must be used within RuntimeProvider");return e}async function og(e){const t=e?`?projectPath=${encodeURIComponent(e)}`:"",i=await fetch(`/api/preflight${t}`);if(!i.ok)throw new Error("Failed to fetch preflight checks");return i.json()}const aS="devchain:theme";function PA(){try{const e=localStorage.getItem(aS);return e==="light"?(localStorage.setItem(aS,"ocean"),"ocean"):e==="dark"||e==="ocean"?e:null}catch{return null}}function kA(e){const t=document.documentElement;t.classList.remove("dark"),t.classList.remove("theme-ocean"),e==="dark"?t.classList.add("dark"):e==="ocean"&&t.classList.add("theme-ocean");try{localStorage.setItem(aS,e)}catch{}}function r9({value:e,onChange:t}){return f.useEffect(()=>{kA(e)},[e]),s.jsxDEV(Ls,{value:e,onValueChange:i=>t(i),children:[s.jsxDEV(Ts,{className:"w-[140px]","aria-label":"Select theme","data-testid":"theme-toggle",children:s.jsxDEV("div",{className:"flex items-center gap-2",children:[e==="dark"?s.jsxDEV(TV,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ThemeSelect.tsx",lineNumber:64,columnNumber:31},this):s.jsxDEV(LV,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ThemeSelect.tsx",lineNumber:64,columnNumber:62},this),s.jsxDEV($s,{placeholder:"Theme"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ThemeSelect.tsx",lineNumber:65,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ThemeSelect.tsx",lineNumber:63,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ThemeSelect.tsx",lineNumber:62,columnNumber:7},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"ocean",children:"Ocean"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ThemeSelect.tsx",lineNumber:70,columnNumber:9},this),s.jsxDEV(Pt,{value:"dark",children:"Dark"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ThemeSelect.tsx",lineNumber:71,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ThemeSelect.tsx",lineNumber:68,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ThemeSelect.tsx",lineNumber:61,columnNumber:5},this)}const rS=[{id:"core",collapsible:!1,items:[{label:"Projects",path:"/projects",icon:Cl},{label:"Worktrees",path:"/worktrees",icon:Lc},{label:"Chat",path:"/chat",icon:SN},{label:"Board",path:"/board",icon:f0},{label:"Reviews",path:"/reviews",icon:mee},{label:"Registry",path:"/registry",icon:Lu},{label:"Skills",path:"/skills",icon:g0}]},{id:"project-config",title:"Project Config",collapsible:!0,items:[{label:"Agents",path:"/agents",icon:h0},{label:"Profiles",path:"/profiles",icon:b2},{label:"Prompts",path:"/prompts",icon:h2},{label:"Statuses",path:"/statuses",icon:DN}]},{id:"system",title:"System",collapsible:!0,items:[{label:"Providers",path:"/providers",icon:qD},{label:"Events",path:"/events",icon:lZ},{label:"Messages",path:"/messages",icon:_ee},{label:"Automation",path:"/automation",icon:OV},{label:"Settings",path:"/settings",icon:g2}]}],coe=[{keys:"g p",description:"Go to Projects"},{keys:"g w",description:"Go to Worktrees"},{keys:"g c",description:"Go to Chat"},{keys:"g b",description:"Go to Board"},{keys:"g r",description:"Go to Reviews"},{keys:"t",description:"Toggle terminal dock",hideInMainMode:!0},{keys:"Alt+Shift+X",description:"Toggle all terminal windows",hideInMainMode:!0},{keys:"Alt + `",description:"Cycle terminal windows",hideInMainMode:!0},{keys:"Enter",description:"Focus active terminal input",hideInMainMode:!0},{keys:"/",description:"Focus page search"},{keys:"Cmd/Ctrl + ?",description:"Open shortcuts help"}],uoe=rS.flatMap(e=>e.items).reduce((e,t)=>{const i=t.path.replace(/^\//,"");return e[i]=t.label,e},{}),poe={epics:{label:"Board",href:"/board"}},n9="devchain:sidebarCollapsed",o9="devchain:dockExpanded",l9="devchain:terminalOpenSessionIds",doe=15e3,hoe={pass:"border-emerald-500/40 bg-emerald-500/10 text-emerald-600 hover:bg-emerald-500/20",warn:"border-amber-500/40 bg-amber-500/10 text-amber-600 hover:bg-amber-500/20",fail:"border-destructive/40 bg-destructive/10 text-destructive hover:bg-destructive/20"},moe={pass:"bg-emerald-500",warn:"bg-amber-500",fail:"bg-destructive"},foe={pass:Or,warn:Bi,fail:fl},c9=new Set(["running","completed"]);function goe(e){const t=e.toLowerCase();return t==="running"?{label:"Running",badgeClassName:"border-emerald-500/40 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300"}:t==="stopped"?{label:"Stopped",badgeClassName:"border-slate-400/40 bg-slate-500/10 text-slate-700 dark:text-slate-300"}:t==="error"?{label:"Error",badgeClassName:"border-red-500/40 bg-red-500/10 text-red-700 dark:text-red-300"}:t==="creating"?{label:"Creating",badgeClassName:"border-amber-500/40 bg-amber-500/10 text-amber-700 dark:text-amber-300",showSpinner:!0}:{label:t.charAt(0).toUpperCase()+t.slice(1),badgeClassName:"border-slate-400/40 bg-slate-500/10 text-slate-700 dark:text-slate-300"}}function voe(e){const{isMainMode:t}=Q2();return s.jsxDEV(noe,{children:s.jsxDEV(Zae,{children:[s.jsxDEV(boe,{...e,isMainMode:t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:242,columnNumber:9},this),s.jsxDEV(eoe,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:243,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:241,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:240,columnNumber:5},this)}function boe({children:e,isMainMode:t}){const i=rn(),r=Dr(),{projects:o,projectsLoading:c,projectsError:u,refetchProjects:l,selectedProjectId:d,selectedProject:h,setSelectedProjectId:g}=Gi(),{toast:m}=ii(),{activeWorktree:y,setActiveWorktree:E}=Ff(),[C,D]=f.useState(!1),[b,w]=f.useState(()=>typeof window>"u"||window.innerWidth<1024?!1:window.localStorage.getItem(n9)==="true"),[N,x]=f.useState(!1),[_,P]=f.useState(()=>typeof window>"u"?"ocean":PA()??"ocean"),[R,k]=f.useState(()=>typeof window>"u"?!1:window.localStorage.getItem(o9)==="true"),[j,V]=f.useState([]),[M,F]=f.useState({"project-config":!0,system:!0}),[I,A]=f.useState(!1),[O,K]=f.useState(null),[q,Y]=f.useState(null),H=f.useRef(null);Bc({message:Z=>{if(Z.topic!=="system"||Z.type!=="session_recommendation")return;const fe=Z.payload&&typeof Z.payload=="object"?Z.payload:null;if(!fe||fe.reason!=="claude_auto_compact_disabled"||fe.silent===!0)return;const te=typeof fe.providerId=="string"?fe.providerId:"";if(!te)return;const Ce=typeof fe.providerName=="string"?fe.providerName:"Claude",Ue=typeof fe.bootId=="string"?fe.bootId:"",Ze=`devchain:autoCompact:recommended:${te}`;Ue&&localStorage.getItem(Ze)===Ue||!Ue&&localStorage.getItem(Ze)||Y({providerId:te,providerName:Ce,bootId:Ue})}});const{data:L}=st({queryKey:["registry-update-status"],queryFn:async()=>{const Z=await fetch("/api/registry/update-status");if(!Z.ok)return{state:"skipped",results:[]};const fe=await Z.json();return fe.state!=="pending"&&fe.state!=="complete"&&fe.state!=="skipped"?{state:"skipped",results:[]}:{state:fe.state,results:Array.isArray(fe.results)?fe.results.filter(te=>!!te&&typeof te=="object"&&typeof te.hasUpdate=="boolean"):[]}},refetchInterval:Z=>{const fe=Z.state.data;return(fe==null?void 0:fe.state)==="pending"?5e3:!1}});f.useEffect(()=>{var Z;!L||L.state!=="complete"||A(((Z=L.results)==null?void 0:Z.some(fe=>fe.hasUpdate))??!1)},[L]),f.useEffect(()=>{(i.pathname==="/registry"||i.pathname.startsWith("/registry/"))&&A(!1)},[i.pathname]),f.useEffect(()=>{if(!y)return;const Z=i.pathname;(Z==="/worktrees"||Z.startsWith("/worktrees/")||Z==="/registry"||Z.startsWith("/registry/"))&&r("/board",{replace:!0})},[y,i.pathname,r]);const z=f.useMemo(()=>coe.filter(Z=>!(t&&Z.hideInMainMode||y&&Z.keys==="g w")),[t,y]),$=f.useMemo(()=>{if(!y)return rS;const Z=new Set(["/worktrees","/registry"]);return rS.map(fe=>{const te=fe.items.filter(Ce=>!Z.has(Ce.path));return te.length===fe.items.length?fe:{...fe,items:te}})},[y]),{data:W,isLoading:ee,error:se}=st({queryKey:["worktree-tabs-worktrees"],queryFn:()=>Fu(),enabled:t,refetchInterval:t?doe:!1,refetchOnWindowFocus:!0}),ge=f.useMemo(()=>W??[],[W]);f.useEffect(()=>{if(typeof window>"u")return;const Z=fe=>{const te=fe.detail;!te||typeof te!="object"||typeof te.worktreeName!="string"||te.worktreeName.trim().length===0||K(te)};return window.addEventListener(xD,Z),()=>{window.removeEventListener(xD,Z)}},[]);const ve=f.useCallback(Z=>{F(fe=>({...fe,[Z]:!fe[Z]}))},[]);f.useEffect(()=>{const Z=i.pathname;for(const fe of $){if(!fe.collapsible)continue;if(fe.items.some(Ce=>Z===Ce.path||Z.startsWith(Ce.path+"/"))&&M[fe.id]){F(Ce=>({...Ce,[fe.id]:!1}));break}}},[i.pathname,M,$]);const J=M0(),{windows:G,closeWindow:be,focusedWindowId:ne,focusWindow:Ee,minimizeWindow:ce,restoreWindow:Be}=kl(),je=f.useRef(!1),at=f.useRef(null),xt=f.useRef(new Set),Le=f.useCallback((Z,fe)=>{xt.current.has(Z)||(xt.current.add(Z),m({title:"Shortcut activated",description:fe}))},[m]),ye=f.useCallback(()=>{k(Z=>!Z)},[]),Me=f.useCallback(()=>{const Z=document.querySelector('[data-shortcut="primary-search"]');Z?(Z.focus(),Le("slash-search","Focused page search (shortcut /)")):m({title:"Search unavailable",description:"This page does not expose a primary search input."})},[Le,m]),nt=f.useCallback(()=>{q&&localStorage.setItem(`devchain:autoCompact:recommended:${q.providerId}`,q.bootId||"true"),m({title:"Auto-compact enabled",description:"Future Claude sessions will use auto-compact for better context management."}),Y(null)},[q,m]),ke=f.useCallback(()=>{q&&localStorage.setItem(`devchain:autoCompact:recommended:${q.providerId}`,q.bootId||"true"),Y(null)},[q]);f.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(n9,b?"true":"false")},[b]),f.useEffect(()=>{if(typeof window>"u")return;const Z=window.matchMedia("(min-width: 1024px)"),fe=te=>{te.matches||w(!1)};return Z.addEventListener("change",fe),()=>Z.removeEventListener("change",fe)},[]),f.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(o9,R?"true":"false")},[R]),f.useEffect(()=>{if(typeof window>"u"||t)return;const Z=()=>k(!0);return window.addEventListener(AN,Z),()=>{window.removeEventListener(AN,Z)}},[t,k]),f.useEffect(()=>{const Z=fe=>{var Mt,Vt,ps;if(fe.defaultPrevented)return;const te=fe.target,Ce=(te==null?void 0:te.tagName)??"",Ue=(te==null?void 0:te.isContentEditable)||Ce==="INPUT"||Ce==="TEXTAREA"||Ce==="SELECT",Ze=G.filter(it=>!it.minimized),dt=ne?G.find(it=>it.id===ne):null;if(!t&&!Ue&&fe.altKey&&fe.shiftKey&&!fe.metaKey&&!fe.ctrlKey&&fe.code==="KeyX"){if(G.length===0)return;fe.preventDefault(),Ze.length===0?G.forEach(de=>Be(de.id)):Ze.forEach(de=>ce(de.id));return}if(!t&&fe.altKey&&!fe.metaKey&&!fe.ctrlKey&&fe.key==="`"){if(Ze.length>0){fe.preventDefault();const it=[...Ze].sort((de,Ge)=>de.zIndex-Ge.zIndex);if(dt){const de=it.findIndex(ft=>ft.id===dt.id),Ge=de===-1||de===it.length-1?it[0]:it[de+1];Ee(Ge.id),m({title:"Window focused",description:Ge.title})}else{const de=it[it.length-1];Ee(de.id),m({title:"Window focused",description:de.title})}}return}const mt=Date.now();if(at.current&&mt-at.current.timestamp>1e3&&(at.current=null),(fe.metaKey||fe.ctrlKey)&&fe.key==="?"){fe.preventDefault(),x(!0),Le("open-help","Opened keyboard shortcuts (Cmd/Ctrl + ?)");return}if(Ue){!fe.metaKey&&!fe.ctrlKey&&!fe.altKey&&fe.key==="Enter"&&!t&&(Mt=dt==null?void 0:dt.handle)!=null&&Mt.focus&&(fe.preventDefault(),dt.handle.focus(),m({title:"Terminal focused",description:dt.title}));return}if(!fe.metaKey&&!fe.ctrlKey&&!fe.altKey&&fe.key==="Enter"&&!t&&(Vt=dt==null?void 0:dt.handle)!=null&&Vt.focus){fe.preventDefault(),dt.handle.focus(),m({title:"Terminal focused",description:dt.title});return}if(fe.key==="g"&&!fe.metaKey&&!fe.ctrlKey&&!fe.altKey){at.current={key:"g",timestamp:mt};return}if((fe.key==="p"||fe.key==="w"||fe.key==="b"||fe.key==="c"||fe.key==="r")&&!fe.metaKey&&!fe.ctrlKey&&!fe.altKey){((ps=at.current)==null?void 0:ps.key)==="g"&&mt-at.current.timestamp<1e3&&(fe.preventDefault(),fe.key==="p"?(r("/projects"),Le("nav-projects","Navigated to Projects (shortcut g p)")):fe.key==="w"&&!y?(r("/worktrees"),Le("nav-worktrees","Navigated to Worktrees (shortcut g w)")):fe.key==="b"?(r("/board"),Le("nav-board","Navigated to Board (shortcut g b)")):fe.key==="c"?(r("/chat"),Le("nav-chat","Navigated to Chat (shortcut g c)")):fe.key==="r"&&(r("/reviews"),Le("nav-reviews","Navigated to Reviews (shortcut g r)"))),at.current=null;return}if(!t&&fe.key==="t"&&!fe.metaKey&&!fe.ctrlKey&&!fe.altKey){fe.preventDefault(),ye();return}if(fe.key==="/"&&!fe.metaKey&&!fe.ctrlKey&&!fe.altKey){fe.preventDefault(),Me(),at.current=null;return}at.current=null};return window.addEventListener("keydown",Z),()=>window.removeEventListener("keydown",Z)},[y,Le,Me,Ee,ne,ce,r,t,Be,G,m,ye]);const rt=Z=>Z==="/board"?i.pathname===Z||i.pathname.startsWith("/epics/"):i.pathname===Z||i.pathname.startsWith(Z+"/"),At=()=>D(!C),Zt=()=>w(!b),St=o.length>0,ts=h==null?void 0:h.rootPath,{items:It}=ooe(),_e=f.useMemo(()=>It.length?It:Noe(i.pathname),[It,i.pathname]),{data:Qe,isFetching:Ae,isError:Ye}=st({queryKey:["preflight",ts??"global"],queryFn:()=>og(ts),staleTime:6e4}),{data:ut}=st({queryKey:["health"],queryFn:async()=>{const Z=await fetch("/health");return Z.ok?Z.json():null},staleTime:1/0}),Dt=ut==null?void 0:ut.version,zt=Qe==null?void 0:Qe.overall,ns=zt?foe[zt]:si,ss=zt?hoe[zt]:Ye?"border-destructive/40 bg-destructive/10 text-destructive hover:bg-destructive/20":"border-border text-muted-foreground hover:bg-muted",gs=zt?`Preflight ${zt.toUpperCase()}`:Ye?"Preflight ERROR":"Preflight CHECKING",us=(h==null?void 0:h.name)??"system",jt=Qe?`Preflight status for ${us} • Checked ${new Date(Qe.timestamp).toLocaleTimeString()}`:Ye?`Failed to fetch preflight status for ${us}`:`Fetching preflight status for ${us}`,me=zt?moe[zt]:Ye?"bg-destructive":"bg-muted-foreground",$e=zt?zt==="pass"?"text-emerald-600":zt==="warn"?"text-amber-600":"text-destructive":Ye?"text-destructive":"text-muted-foreground",et=Z=>{g(Z)},pe=(y==null?void 0:y.name)??null,lt=f.useMemo(()=>pe?ge.find(Z=>Z.name===pe)??null:null,[pe,ge]),Et=!!y,Ut=(h==null?void 0:h.name)??(y==null?void 0:y.devchainProjectId)??"Worktree project",as=f.useCallback(Z=>{const fe=String(Z.status).toLowerCase();return c9.has(fe)&&typeof Z.devchainProjectId=="string"&&Z.devchainProjectId.trim().length>0&&typeof Z.containerPort=="number"&&Z.containerPort>0},[]),ri=f.useCallback(()=>{E(null),K(null)},[E]),ai=f.useCallback(Z=>{K(null),E({id:Z.id,name:Z.name,devchainProjectId:Z.devchainProjectId??null,status:Z.status})},[E]);f.useEffect(()=>{!pe||ee||ge.some(fe=>fe.name===pe)||(E(null),K(null),H.current!==pe&&(H.current=pe,m({title:"Switched to Main",description:`Worktree "${pe}" was removed and is no longer available.`})))},[pe,E,m,ge,ee]),f.useEffect(()=>{!pe||!O||O.worktreeName===pe&&O.statusCode===404&&(E(null),K(null),H.current!==pe&&(H.current=pe,m({title:"Switched to Main",description:`Worktree "${pe}" was removed and is no longer available.`})))},[pe,O,E,m]);const Xs=f.useMemo(()=>{var fe;if(!pe)return null;if(O&&O.worktreeName===pe){if(O.statusCode===503)return{tone:"warning",title:"Worktree unavailable",message:O.message??`Worktree "${pe}" is temporarily unavailable.`};if(O.statusCode===404)return{tone:"error",title:"Worktree removed",message:O.message??`Worktree "${pe}" no longer exists and this tab cannot be used.`}}if(!lt)return null;const Z=String(lt.status).trim().toLowerCase();return Z==="error"?{tone:"error",title:"Worktree error",message:((fe=lt.errorMessage)==null?void 0:fe.trim())||`Worktree "${pe}" is in an error state.`}:c9.has(Z)?null:{tone:"warning",title:"Worktree unavailable",message:`Worktree "${pe}" is ${Z} and cannot serve proxied requests.`}},[pe,lt,O]),ni=f.useCallback(Z=>{V(Z);const fe=new Set(Z.map(te=>te.id));G.forEach(te=>{te.sessionId&&!fe.has(te.sessionId)&&be(te.id)})},[be,G]),ui=f.useCallback(Z=>{be(Z)},[be]),pi=f.useMemo(()=>G.filter(Z=>Z.sessionId).map(Z=>Z.sessionId).sort(),[G]),Ys=f.useMemo(()=>{if(!ne)return null;const Z=G.find(fe=>fe.id===ne);return(Z==null?void 0:Z.sessionId)??null},[ne,G]);return f.useEffect(()=>{typeof window>"u"||window.localStorage.setItem(l9,JSON.stringify(pi))},[pi]),f.useEffect(()=>{if(je.current||!j.length||typeof window>"u")return;const Z=window.localStorage.getItem(l9);if(!Z){je.current=!0;return}try{JSON.parse(Z).forEach(te=>{const Ce=j.find(Ue=>Ue.id===te);Ce&&!G.some(Ue=>Ue.id===te)&&J(Ce)})}catch{}finally{je.current=!0}},[j,J,G]),s.jsxDEV(mse,{children:[s.jsxDEV("div",{className:we("flex h-screen overflow-hidden bg-background",b&&"sidebar-collapsed"),children:[C&&s.jsxDEV("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:At,"aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1075,columnNumber:11},this),s.jsxDEV("aside",{className:we("fixed inset-y-0 left-0 z-50 flex flex-col border-r border-border bg-card transition-all duration-300 lg:relative lg:translate-x-0",C?"translate-x-0":"-translate-x-full",b?"w-20":"w-64"),"aria-label":"Sidebar navigation",children:[s.jsxDEV("div",{className:we("flex h-16 items-center border-b border-border",b?"justify-center px-1":"justify-between px-4"),children:[b?s.jsxDEV("button",{onClick:Zt,className:we("relative flex h-8 w-8 items-center justify-center rounded-md border transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",ss),title:`Expand sidebar
957
957
  ${jt}`,"aria-label":"Expand sidebar",children:[s.jsxDEV("span",{className:"text-xs font-bold",children:"DC"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1108,columnNumber:17},this),Ae&&s.jsxDEV(ot,{className:"absolute top-0 right-0 h-2.5 w-2.5 animate-spin","aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1110,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1099,columnNumber:15},this):s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV("h1",{className:"text-xl font-bold",children:"Devchain"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1118,columnNumber:17},this),s.jsxDEV(So,{to:"/settings",onClick:()=>D(!1),className:we("relative flex h-7 w-7 items-center justify-center rounded-md border transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",ss),title:jt,"aria-label":gs,children:[s.jsxDEV(ns,{className:"h-3.5 w-3.5","aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1129,columnNumber:19},this),Ae&&s.jsxDEV(ot,{className:"absolute top-0 right-0 h-2.5 w-2.5 animate-spin","aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1131,columnNumber:21},this),s.jsxDEV("span",{className:"sr-only",children:"View preflight details"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1136,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1119,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1117,columnNumber:15},this),!b&&s.jsxDEV(le,{variant:"ghost",size:"sm",className:"hidden lg:flex",onClick:Zt,"aria-label":"Collapse sidebar",children:s.jsxDEV(_V,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1148,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1141,columnNumber:15},this),s.jsxDEV(le,{variant:"ghost",size:"sm",className:"lg:hidden",onClick:At,"aria-label":"Close sidebar",children:s.jsxDEV(jl,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1158,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1151,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1092,columnNumber:11},this),s.jsxDEV("nav",{className:"flex-1 overflow-y-auto p-2","aria-label":"Main navigation",children:$.map((Z,fe)=>{const te=M[Z.id]??!1,Ce=!te||!Z.collapsible;return s.jsxDEV("div",{children:[fe>0&&!b&&s.jsxDEV("div",{className:"my-2 border-t border-border","aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1172,columnNumber:21},this),b&&Z.collapsible&&s.jsxDEV("button",{type:"button",onClick:()=>ve(Z.id),className:"my-1 flex w-full items-center justify-center gap-1 py-1 text-muted-foreground hover:text-foreground transition-colors rounded-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-expanded":!te,"aria-controls":`${Z.id}-items`,title:te?`Show ${Z.title}`:`Hide ${Z.title}`,children:[s.jsxDEV("div",{className:"h-px flex-1 bg-border"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1185,columnNumber:23},this),s.jsxDEV(Fr,{className:we("h-3 w-3 shrink-0 transition-transform",te&&"-rotate-90"),"aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1186,columnNumber:23},this),s.jsxDEV("div",{className:"h-px flex-1 bg-border"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1193,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1177,columnNumber:21},this),!b&&Z.collapsible&&Z.title&&s.jsxDEV("button",{type:"button",onClick:()=>ve(Z.id),className:"flex w-full items-center gap-2 px-3 py-1.5 text-xs font-semibold uppercase tracking-wider text-muted-foreground hover:text-foreground transition-colors rounded-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2","aria-expanded":!te,"aria-controls":`${Z.id}-items`,children:[s.jsxDEV(Fr,{className:we("h-3 w-3 transition-transform",te&&"-rotate-90"),"aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1206,columnNumber:23},this),Z.title]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1199,columnNumber:21},this),Ce&&s.jsxDEV("ul",{id:`${Z.id}-items`,className:"space-y-1",children:Z.items.map(Ue=>{const Ze=Ue.icon,dt=rt(Ue.path),mt=Ue.label==="Registry"&&I,Mt=Ue.path==="/reviews"?{onMouseEnter:iP,onFocus:iP}:{};return s.jsxDEV("li",{children:s.jsxDEV(So,{to:Ue.path,onClick:()=>D(!1),...Mt,className:we("flex items-center rounded-md text-sm font-medium transition-colors","hover:bg-muted",dt?"bg-secondary text-secondary-foreground":"text-muted-foreground",b?"flex-col gap-0.5 px-1 py-1.5 text-center":"gap-3 px-3 py-2"),"aria-current":dt?"page":void 0,title:Ue.label,children:[s.jsxDEV(Ze,{className:we("h-5 w-5",mt&&"text-blue-500"),"aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1250,columnNumber:31},this),s.jsxDEV("span",{className:we(b&&"w-full truncate text-[10px] leading-tight font-normal"),children:Ue.label},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1254,columnNumber:31},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1233,columnNumber:29},this)},Ue.path,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1232,columnNumber:27},this)})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1216,columnNumber:21},this)]},Z.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1169,columnNumber:17},this)})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1163,columnNumber:11},this),s.jsxDEV("div",{className:we("flex h-12 items-center border-t border-border",b?"justify-center px-1":"justify-between px-4"),children:[s.jsxDEV("div",{className:we("flex items-center text-sm",b?"flex-col gap-0.5":"gap-2"),children:[s.jsxDEV("div",{className:we("h-2 w-2 rounded-full",me),"aria-hidden":"true"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1286,columnNumber:15},this),b?s.jsxDEV("span",{className:we("truncate text-[10px] leading-tight",$e),children:(zt==null?void 0:zt.toUpperCase())??"..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1288,columnNumber:17},this):s.jsxDEV("span",{className:$e,children:gs},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1294,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1280,columnNumber:13},this),!b&&Dt&&s.jsxDEV("span",{className:"text-xs text-muted-foreground",children:["v",Dt]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1298,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1274,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1083,columnNumber:9},this),s.jsxDEV("div",{className:"flex flex-1 flex-col overflow-hidden",children:[s.jsxDEV("header",{className:"flex h-16 items-center justify-between border-b border-border bg-card px-4 lg:px-6",children:[s.jsxDEV("div",{className:"flex items-center gap-4",children:[s.jsxDEV(le,{variant:"ghost",size:"sm",className:"lg:hidden",onClick:At,"aria-label":"Open sidebar",children:s.jsxDEV(Oee,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1315,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1308,columnNumber:15},this),s.jsxDEV("div",{className:"hidden max-w-[360px] flex-1 truncate md:flex",children:s.jsxDEV(BV,{items:_e,className:"text-muted-foreground [&_a]:text-muted-foreground [&_a:hover]:text-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1318,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1317,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1307,columnNumber:13},this),s.jsxDEV("div",{className:"flex items-center gap-2",children:[u?s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV("span",{className:"text-sm text-destructive",children:"Failed to load projects"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1330,columnNumber:19},this),s.jsxDEV(le,{variant:"ghost",size:"sm",onClick:()=>l(),children:"Retry"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1331,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1329,columnNumber:17},this):c?s.jsxDEV("span",{className:"text-sm text-muted-foreground",children:"Loading projects..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1336,columnNumber:17},this):St?Et?s.jsxDEV("div",{"data-testid":"project-selector-locked",className:"flex h-10 w-64 items-center rounded-md border border-input bg-muted/30 px-3 text-sm text-muted-foreground","aria-label":"Worktree project locked",children:s.jsxDEV("span",{className:"truncate",children:Ut},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1344,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1339,columnNumber:19},this):s.jsxDEV(Ls,{value:d,onValueChange:et,children:[s.jsxDEV(Ts,{"data-testid":"project-selector-select",className:"w-64","aria-label":d?"Selected project":"Select a project",children:s.jsxDEV($s,{placeholder:"Select a project"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1353,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1348,columnNumber:21},this),s.jsxDEV(Rs,{children:o.map(Z=>s.jsxDEV(Pt,{value:Z.id,children:Z.name},Z.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1357,columnNumber:25},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1355,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1347,columnNumber:19},this):Et?s.jsxDEV("span",{"data-testid":"project-selector-locked",className:"text-sm text-muted-foreground","aria-label":"Worktree project locked",children:Ut},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1365,columnNumber:17},this):s.jsxDEV(So,{to:"/projects",className:"text-sm text-muted-foreground hover:underline",children:"No projects yet? Create one"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1373,columnNumber:17},this),d&&s.jsxDEV(Zse,{projectId:d,className:"hidden lg:block"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1379,columnNumber:17},this),s.jsxDEV("div",{className:"hidden sm:block",children:s.jsxDEV(r9,{value:_,onChange:P},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1383,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1382,columnNumber:15},this),s.jsxDEV("div",{className:"sm:hidden",children:s.jsxDEV(yl,{children:[s.jsxDEV(El,{asChild:!0,children:s.jsxDEV(le,{variant:"ghost",size:"icon","aria-label":"Change theme",children:_==="dark"?s.jsxDEV(TV,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1390,columnNumber:25},this):s.jsxDEV(LV,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1392,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1388,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1387,columnNumber:19},this),s.jsxDEV(ko,{align:"end",children:s.jsxDEV(r9,{value:_,onChange:P},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1397,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1396,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1386,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1385,columnNumber:15},this),s.jsxDEV(le,{variant:"ghost",size:"icon",onClick:()=>x(!0),"aria-label":"Open keyboard shortcuts",children:s.jsxDEV(Pee,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1407,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1401,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1325,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1306,columnNumber:11},this),t&&(ge.length>0||ee)&&s.jsxDEV("div",{className:"border-b border-border bg-card/80",children:s.jsxDEV("div",{className:"flex items-center gap-2 overflow-x-auto px-4 py-2 lg:px-6",role:"tablist","aria-label":"Worktree tabs",children:[s.jsxDEV("button",{type:"button",role:"tab","aria-selected":pe===null,onClick:ri,className:we("inline-flex shrink-0 items-center gap-2 rounded-md border px-3 py-1.5 text-sm font-medium transition-colors",pe===null?"border-primary/50 bg-primary/10 text-primary":"border-border bg-background text-foreground hover:bg-muted"),children:[s.jsxDEV("span",{children:"Main"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1431,columnNumber:19},this),s.jsxDEV(Je,{className:"border-blue-500/40 bg-blue-500/10 text-blue-700 dark:text-blue-300",children:"Main"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1432,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1419,columnNumber:17},this),ee&&ge.length===0&&s.jsxDEV("div",{className:"inline-flex shrink-0 items-center gap-2 rounded-md border border-border bg-background px-3 py-1.5 text-sm text-muted-foreground",children:[s.jsxDEV(ot,{className:"h-3.5 w-3.5 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1439,columnNumber:21},this),"Loading worktrees..."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1438,columnNumber:19},this),se instanceof Error&&s.jsxDEV("div",{className:"inline-flex shrink-0 items-center gap-2 rounded-md border border-red-500/30 bg-red-500/10 px-3 py-1.5 text-sm text-red-700 dark:text-red-300",children:[s.jsxDEV(si,{className:"h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1446,columnNumber:21},this),"Failed to load worktrees"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1445,columnNumber:19},this),ge.map(Z=>{const fe=pe===Z.name,te=as(Z),Ce=goe(String(Z.status));return s.jsxDEV("button",{type:"button",role:"tab","aria-selected":fe,disabled:!te,onClick:()=>ai(Z),className:we("inline-flex shrink-0 items-center gap-2 rounded-md border px-3 py-1.5 text-sm font-medium transition-colors",fe?"border-primary/50 bg-primary/10 text-primary":"border-border bg-background text-foreground",te?"hover:bg-muted":"cursor-not-allowed opacity-60"),children:[s.jsxDEV("span",{className:"max-w-[180px] truncate",children:Z.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1472,columnNumber:23},this),s.jsxDEV(Je,{className:Ce.badgeClassName,children:s.jsxDEV("span",{className:"inline-flex items-center gap-1.5",children:[Ce.showSpinner&&s.jsxDEV(ot,{className:"h-3 w-3 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1475,columnNumber:56},this),Ce.label]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1474,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1473,columnNumber:23},this)]},Z.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1457,columnNumber:21},this)})]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1414,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1413,columnNumber:13},this),t&&Xs&&s.jsxDEV("div",{"data-testid":"worktree-status-banner",className:we("border-b px-4 py-2 lg:px-6",Xs.tone==="error"?"border-red-500/30 bg-red-500/10":"border-amber-500/30 bg-amber-500/10"),children:s.jsxDEV("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[s.jsxDEV("div",{className:"flex min-w-0 items-start gap-2",children:[Xs.tone==="error"?s.jsxDEV(si,{className:"mt-0.5 h-4 w-4 shrink-0 text-red-600 dark:text-red-300"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1499,columnNumber:21},this):s.jsxDEV(Bi,{className:"mt-0.5 h-4 w-4 shrink-0 text-amber-600 dark:text-amber-300"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1501,columnNumber:21},this),s.jsxDEV("div",{className:"min-w-0",children:[s.jsxDEV("p",{className:we("text-sm font-semibold",Xs.tone==="error"?"text-red-700 dark:text-red-300":"text-amber-700 dark:text-amber-300"),children:Xs.title},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1504,columnNumber:21},this),s.jsxDEV("p",{className:we("text-xs",Xs.tone==="error"?"text-red-700/90 dark:text-red-200":"text-amber-700/90 dark:text-amber-200"),children:Xs.message},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1514,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1503,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1497,columnNumber:17},this),s.jsxDEV(le,{variant:"outline",size:"sm",onClick:ri,className:"shrink-0",children:"Switch to Main"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1526,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1496,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1487,columnNumber:13},this),s.jsxDEV("main",{className:"flex-1 overflow-y-auto",children:s.jsxDEV("div",{className:"flex h-full min-h-0 flex-col px-4 py-3",children:e},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1535,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1534,columnNumber:11},this),s.jsxDEV(soe,{expanded:R,sessions:j,activeSessionId:Ys,openSessionIds:pi,onToggle:ye,onOpenSession:Z=>{k(!0),J(Z)},onSessionsChange:ni,onSessionTerminated:ui},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1538,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1304,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1067,columnNumber:7},this),s.jsxDEV(Es,{open:N,onOpenChange:x,children:s.jsxDEV(xs,{className:"max-w-lg",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Keyboard Shortcuts"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1556,columnNumber:13},this),s.jsxDEV(ls,{children:"Use these shortcuts to navigate quickly and control the terminal dock."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1557,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1555,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-3",children:z.map(Z=>s.jsxDEV("div",{className:"flex items-center justify-between rounded-md border border-border bg-muted/40 px-3 py-2 text-sm",children:[s.jsxDEV("span",{className:"font-mono text-xs uppercase tracking-wide text-muted-foreground",children:Z.keys},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1567,columnNumber:17},this),s.jsxDEV("span",{className:"text-sm text-foreground",children:Z.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1570,columnNumber:17},this)]},Z.keys,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1563,columnNumber:15},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1561,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1554,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1553,columnNumber:7},this),s.jsxDEV(roe,{open:q!==null,onOpenChange:Z=>{Z||Y(null)},providerId:(q==null?void 0:q.providerId)??"",providerName:(q==null?void 0:q.providerName)??"",onEnabled:nt,onSkipped:ke},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1576,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/Layout.tsx",lineNumber:1066,columnNumber:5},this)}function Noe(e){const t=e.split("/").filter(Boolean);if(!t.length)return[{label:"Projects",href:"/projects"}];const i=[];return t.forEach((r,o)=>{const c=r.toLowerCase(),u=`/${t.slice(0,o+1).join("/")}`,l=o===t.length-1,d=poe[c];if(d){i.push({label:d.label,href:l?void 0:d.href});return}let h=uoe[c];h||(/^[0-9a-fA-F-]{8,}$/.test(r)||/^[0-9]+$/.test(r)?h="Details":h=xoe(r)),i.push({label:h,href:l?void 0:u})}),i}function xoe(e){return e.split("-").filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}var woe="Label",VA=f.forwardRef((e,t)=>ae.jsx(Gt.label,{...e,ref:t,onMouseDown:i=>{var o;i.target.closest("button, input, select, textarea")||((o=e.onMouseDown)==null||o.call(e,i),!i.defaultPrevented&&i.detail>1&&i.preventDefault())}}));VA.displayName=woe;var TA=VA;const yoe=$f("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),We=f.forwardRef(({className:e,...t},i)=>s.jsxDEV(TA,{ref:i,className:we(yoe(),e),...t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/label.tsx",lineNumber:14,columnNumber:3},void 0));We.displayName=TA.displayName;var L0="Checkbox",[Eoe]=Aa(L0),[Doe,X2]=Eoe(L0);function Soe(e){const{__scopeCheckbox:t,checked:i,children:r,defaultChecked:o,disabled:c,form:u,name:l,onCheckedChange:d,required:h,value:g="on",internal_do_not_use_render:m}=e,[y,E]=an({prop:i,defaultProp:o??!1,onChange:d,caller:L0}),[C,D]=f.useState(null),[b,w]=f.useState(null),N=f.useRef(!1),x=C?!!u||!!C.closest("form"):!0,_={checked:y,disabled:c,setChecked:E,control:C,setControl:D,name:l,form:u,value:g,hasConsumerStoppedPropagationRef:N,required:h,defaultChecked:Ec(o)?!1:o,isFormControl:x,bubbleInput:b,setBubbleInput:w};return ae.jsx(Doe,{scope:t,..._,children:_oe(m)?m(_):r})}var RA="CheckboxTrigger",AA=f.forwardRef(({__scopeCheckbox:e,onKeyDown:t,onClick:i,...r},o)=>{const{control:c,value:u,disabled:l,checked:d,required:h,setControl:g,setChecked:m,hasConsumerStoppedPropagationRef:y,isFormControl:E,bubbleInput:C}=X2(RA,e),D=Is(o,g),b=f.useRef(d);return f.useEffect(()=>{const w=c==null?void 0:c.form;if(w){const N=()=>m(b.current);return w.addEventListener("reset",N),()=>w.removeEventListener("reset",N)}},[c,m]),ae.jsx(Gt.button,{type:"button",role:"checkbox","aria-checked":Ec(d)?"mixed":d,"aria-required":h,"data-state":FA(d),"data-disabled":l?"":void 0,disabled:l,value:u,...r,ref:D,onKeyDown:gt(t,w=>{w.key==="Enter"&&w.preventDefault()}),onClick:gt(i,w=>{m(N=>Ec(N)?!0:!N),C&&E&&(y.current=w.isPropagationStopped(),y.current||w.stopPropagation())})})});AA.displayName=RA;var J2=f.forwardRef((e,t)=>{const{__scopeCheckbox:i,name:r,checked:o,defaultChecked:c,required:u,disabled:l,value:d,onCheckedChange:h,form:g,...m}=e;return ae.jsx(Soe,{__scopeCheckbox:i,checked:o,defaultChecked:c,disabled:l,required:u,onCheckedChange:h,name:r,form:g,value:d,internal_do_not_use_render:({isFormControl:y})=>ae.jsxs(ae.Fragment,{children:[ae.jsx(AA,{...m,ref:t,__scopeCheckbox:i}),y&&ae.jsx(IA,{__scopeCheckbox:i})]})})});J2.displayName=L0;var MA="CheckboxIndicator",LA=f.forwardRef((e,t)=>{const{__scopeCheckbox:i,forceMount:r,...o}=e,c=X2(MA,i);return ae.jsx(_a,{present:r||Ec(c.checked)||c.checked===!0,children:ae.jsx(Gt.span,{"data-state":FA(c.checked),"data-disabled":c.disabled?"":void 0,...o,ref:t,style:{pointerEvents:"none",...e.style}})})});LA.displayName=MA;var OA="CheckboxBubbleInput",IA=f.forwardRef(({__scopeCheckbox:e,...t},i)=>{const{control:r,hasConsumerStoppedPropagationRef:o,checked:c,defaultChecked:u,required:l,disabled:d,name:h,value:g,form:m,bubbleInput:y,setBubbleInput:E}=X2(OA,e),C=Is(i,E),D=l2(c),b=r2(r);f.useEffect(()=>{const N=y;if(!N)return;const x=window.HTMLInputElement.prototype,P=Object.getOwnPropertyDescriptor(x,"checked").set,R=!o.current;if(D!==c&&P){const k=new Event("click",{bubbles:R});N.indeterminate=Ec(c),P.call(N,Ec(c)?!1:c),N.dispatchEvent(k)}},[y,D,c,o]);const w=f.useRef(Ec(c)?!1:c);return ae.jsx(Gt.input,{type:"checkbox","aria-hidden":!0,defaultChecked:u??w.current,required:l,disabled:d,name:h,value:g,form:m,...t,tabIndex:-1,ref:C,style:{...t.style,...b,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});IA.displayName=OA;function _oe(e){return typeof e=="function"}function Ec(e){return e==="indeterminate"}function FA(e){return Ec(e)?"indeterminate":e?"checked":"unchecked"}const Ra=f.forwardRef(({className:e,...t},i)=>s.jsxDEV(J2,{ref:i,className:we("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",e),...t,children:s.jsxDEV(LA,{className:we("flex items-center justify-center text-current"),children:s.jsxDEV(th,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/checkbox.tsx",lineNumber:19,columnNumber:7},void 0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/checkbox.tsx",lineNumber:18,columnNumber:5},void 0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/checkbox.tsx",lineNumber:10,columnNumber:3},void 0));Ra.displayName=J2.displayName;const O0=QR,I0=XR,Coe=f.forwardRef(({className:e,inset:t,children:i,...r},o)=>s.jsxDEV(iA,{ref:o,className:we("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",t&&"pl-8",e),...r,children:i},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:23,columnNumber:3},void 0));Coe.displayName=iA.displayName;const joe=f.forwardRef(({className:e,...t},i)=>s.jsxDEV(aA,{ref:i,className:we("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:41,columnNumber:3},void 0));joe.displayName=aA.displayName;const lg=f.forwardRef(({className:e,sideOffset:t=4,...i},r)=>s.jsxDEV(vre,{children:s.jsxDEV(z2,{ref:r,sideOffset:t,className:we("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...i},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:57,columnNumber:5},void 0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:56,columnNumber:3},void 0));lg.displayName=z2.displayName;const Dl=f.forwardRef(({className:e,inset:t,...i},r)=>s.jsxDEV(U2,{ref:r,className:we("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t&&"pl-8",e),...i},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:77,columnNumber:3},void 0));Dl.displayName=U2.displayName;const Poe=f.forwardRef(({className:e,children:t,checked:i,...r},o)=>s.jsxDEV(ZR,{ref:o,className:we("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:i,...r,children:[s.jsxDEV("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:s.jsxDEV(tA,{children:s.jsxDEV("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"h-4 w-4",children:s.jsxDEV("polyline",{points:"20 6 9 17 4 12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:114,columnNumber:11},void 0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:104,columnNumber:9},void 0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:103,columnNumber:7},void 0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:102,columnNumber:5},void 0),t]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:93,columnNumber:3},void 0));Poe.displayName=ZR.displayName;const koe=f.forwardRef(({className:e,children:t,...i},r)=>s.jsxDEV(eA,{ref:r,className:we("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...i,children:[s.jsxDEV("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:s.jsxDEV(tA,{children:s.jsxDEV("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:"h-2 w-2",children:s.jsxDEV("circle",{cx:"12",cy:"12",r:"6"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:143,columnNumber:11},void 0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:137,columnNumber:9},void 0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:136,columnNumber:7},void 0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:135,columnNumber:5},void 0),t]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:127,columnNumber:3},void 0));koe.displayName=eA.displayName;const Voe=f.forwardRef(({className:e,inset:t,...i},r)=>s.jsxDEV(JR,{ref:r,className:we("px-2 py-1.5 text-sm font-semibold",t&&"pl-8",e),...i},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:158,columnNumber:3},void 0));Voe.displayName=JR.displayName;const Z2=f.forwardRef(({className:e,...t},i)=>s.jsxDEV(sA,{ref:i,className:we("-mx-1 my-1 h-px bg-muted",e),...t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/dropdown-menu.tsx",lineNumber:170,columnNumber:3},void 0));Z2.displayName=sA.displayName;var F0="Tabs",[Toe]=Aa(F0,[C0]),BA=C0(),[Roe,e3]=Toe(F0),$A=f.forwardRef((e,t)=>{const{__scopeTabs:i,value:r,onValueChange:o,defaultValue:c,orientation:u="horizontal",dir:l,activationMode:d="automatic",...h}=e,g=zf(l),[m,y]=an({prop:r,onChange:o,defaultProp:c??"",caller:F0});return ae.jsx(Roe,{scope:i,baseId:Nr(),value:m,onValueChange:y,orientation:u,dir:g,activationMode:d,children:ae.jsx(Gt.div,{dir:g,"data-orientation":u,...h,ref:t})})});$A.displayName=F0;var zA="TabsList",UA=f.forwardRef((e,t)=>{const{__scopeTabs:i,loop:r=!0,...o}=e,c=e3(zA,i),u=BA(i);return ae.jsx(m8,{asChild:!0,...u,orientation:c.orientation,dir:c.dir,loop:r,children:ae.jsx(Gt.div,{role:"tablist","aria-orientation":c.orientation,...o,ref:t})})});UA.displayName=zA;var WA="TabsTrigger",HA=f.forwardRef((e,t)=>{const{__scopeTabs:i,value:r,disabled:o=!1,...c}=e,u=e3(WA,i),l=BA(i),d=GA(u.baseId,r),h=YA(u.baseId,r),g=r===u.value;return ae.jsx(f8,{asChild:!0,...l,focusable:!o,active:g,children:ae.jsx(Gt.button,{type:"button",role:"tab","aria-selected":g,"aria-controls":h,"data-state":g?"active":"inactive","data-disabled":o?"":void 0,disabled:o,id:d,...c,ref:t,onMouseDown:gt(e.onMouseDown,m=>{!o&&m.button===0&&m.ctrlKey===!1?u.onValueChange(r):m.preventDefault()}),onKeyDown:gt(e.onKeyDown,m=>{[" ","Enter"].includes(m.key)&&u.onValueChange(r)}),onFocus:gt(e.onFocus,()=>{const m=u.activationMode!=="manual";!g&&!o&&m&&u.onValueChange(r)})})})});HA.displayName=WA;var qA="TabsContent",KA=f.forwardRef((e,t)=>{const{__scopeTabs:i,value:r,forceMount:o,children:c,...u}=e,l=e3(qA,i),d=GA(l.baseId,r),h=YA(l.baseId,r),g=r===l.value,m=f.useRef(g);return f.useEffect(()=>{const y=requestAnimationFrame(()=>m.current=!1);return()=>cancelAnimationFrame(y)},[]),ae.jsx(_a,{present:o||g,children:({present:y})=>ae.jsx(Gt.div,{"data-state":g?"active":"inactive","data-orientation":l.orientation,role:"tabpanel","aria-labelledby":d,hidden:!y,id:h,tabIndex:0,...u,ref:t,style:{...e.style,animationDuration:m.current?"0s":void 0},children:y&&c})})});KA.displayName=qA;function GA(e,t){return`${e}-trigger-${t}`}function YA(e,t){return`${e}-content-${t}`}var Aoe=$A,QA=UA,XA=HA,JA=KA;const B0=Aoe,cg=f.forwardRef(({className:e,...t},i)=>s.jsxDEV(QA,{ref:i,className:we("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",e),...t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/tabs.tsx",lineNumber:11,columnNumber:3},void 0));cg.displayName=QA.displayName;const Sl=f.forwardRef(({className:e,...t},i)=>s.jsxDEV(XA,{ref:i,className:we("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",e),...t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/tabs.tsx",lineNumber:26,columnNumber:3},void 0));Sl.displayName=XA.displayName;const Hu=f.forwardRef(({className:e,...t},i)=>s.jsxDEV(JA,{ref:i,className:we("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e),...t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/tabs.tsx",lineNumber:41,columnNumber:3},void 0));Hu.displayName=JA.displayName;const Ps=f.forwardRef(({className:e,...t},i)=>s.jsxDEV("div",{ref:i,className:we("rounded-lg border bg-card text-card-foreground shadow-sm",e),...t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/card.tsx",lineNumber:6,columnNumber:5},void 0));Ps.displayName="Card";const mi=f.forwardRef(({className:e,...t},i)=>s.jsxDEV("div",{ref:i,className:we("flex flex-col space-y-1.5 p-6",e),...t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/card.tsx",lineNumber:17,columnNumber:5},void 0));mi.displayName="CardHeader";const vi=f.forwardRef(({className:e,...t},i)=>s.jsxDEV("h3",{ref:i,className:we("text-2xl font-semibold leading-none tracking-tight",e),...t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/card.tsx",lineNumber:24,columnNumber:5},void 0));vi.displayName="CardTitle";const Fi=f.forwardRef(({className:e,...t},i)=>s.jsxDEV("p",{ref:i,className:we("text-sm text-muted-foreground",e),...t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/card.tsx",lineNumber:37,columnNumber:3},void 0));Fi.displayName="CardDescription";const Fs=f.forwardRef(({className:e,...t},i)=>s.jsxDEV("div",{ref:i,className:we("p-6 pt-0",e),...t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/card.tsx",lineNumber:43,columnNumber:5},void 0));Fs.displayName="CardContent";const nS=f.forwardRef(({className:e,...t},i)=>s.jsxDEV("div",{ref:i,className:we("flex items-center p-6 pt-0",e),...t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/card.tsx",lineNumber:50,columnNumber:5},void 0));nS.displayName="CardFooter";async function Moe(e,t){const i=await fetch("/api/registry/upgrade-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:e,targetVersion:t})});if(!i.ok){const r=await i.json().catch(()=>({message:"Upgrade failed"}));throw new Error(r.message||"Upgrade failed")}return i.json()}async function Loe(e){const t=await fetch("/api/registry/restore-backup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({backupId:e})});if(!t.ok){const i=await t.json().catch(()=>({message:"Restore failed"}));throw new Error(i.message||"Restore failed")}return t.json()}function Ooe({projectId:e,projectName:t,templateSlug:i,currentVersion:r,targetVersion:o,source:c,open:u,onClose:l}){const d=c==="registry",h=d?"Upgrade":"Update",g=d?"upgraded":"updated",[m,y]=f.useState("confirm"),[E,C]=f.useState(null),[D,b]=f.useState(null),w=zs(),{toast:N}=ii(),x=yt({mutationFn:()=>Moe(e,o),onSuccess:V=>{V.success?(y("done"),N({title:`${h} Complete`,description:`${t} ${g} to v${V.newVersion}`}),w.invalidateQueries({queryKey:["project-template-metadata",e]})):V.restored?(N({title:`${h} Failed`,description:"Project was automatically restored to its previous state",variant:"destructive"}),y("confirm"),C(null),b(null),l()):(C(V.error||`${h} failed`),V.backupId&&b(V.backupId),y("error"))},onError:V=>{C(V.message),y("error")}}),_=yt({mutationFn:()=>Loe(D),onSuccess:()=>{N({title:"Backup Restored",description:"Project has been restored to its previous state"}),b(null),k()},onError:V=>{N({title:"Restore Failed",description:V.message,variant:"destructive"})}}),P=()=>{y("applying"),x.mutate()},R=()=>{D&&_.mutate()},k=()=>{!x.isPending&&!_.isPending&&(y("confirm"),C(null),b(null),l())},j=x.isPending||_.isPending;return s.jsxDEV(Es,{open:u,onOpenChange:V=>!V&&k(),children:s.jsxDEV(xs,{className:"sm:max-w-lg",children:[m==="confirm"&&s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{className:"flex items-center gap-2",children:[s.jsxDEV(bf,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:179,columnNumber:17},this),h," Project"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:178,columnNumber:15},this),s.jsxDEV(ls,{children:[h," ",t," to"," ",d?"a newer template version from the registry":"the bundled template version"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:182,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:177,columnNumber:13},this),s.jsxDEV("div",{className:"py-4 space-y-4",children:[s.jsxDEV("div",{className:"flex items-center justify-center gap-4 text-lg",children:[s.jsxDEV(Je,{variant:"outline",className:"text-base px-3 py-1",children:["v",r]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:193,columnNumber:17},this),s.jsxDEV(mZ,{className:"h-5 w-5 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:196,columnNumber:17},this),s.jsxDEV(Je,{className:"text-base px-3 py-1",children:["v",o]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:197,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:192,columnNumber:15},this),s.jsxDEV(Ti,{children:[s.jsxDEV(si,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:201,columnNumber:17},this),s.jsxDEV(Lr,{children:"What will change"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:202,columnNumber:17},this),s.jsxDEV(Ri,{children:s.jsxDEV("ul",{className:"list-disc list-inside mt-2 space-y-1 text-sm",children:[s.jsxDEV("li",{children:"Prompts, profiles, agents, and statuses may be updated"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:205,columnNumber:21},this),s.jsxDEV("li",{children:"Watchers and subscribers may be added or modified"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:206,columnNumber:21},this),s.jsxDEV("li",{children:"Your epics, records, and documents will NOT be affected"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:207,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:204,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:203,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:200,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:190,columnNumber:13},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:k,children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:214,columnNumber:15},this),s.jsxDEV(le,{onClick:P,children:[s.jsxDEV(bf,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:218,columnNumber:17},this),h]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:217,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:213,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:176,columnNumber:11},this),m==="applying"&&s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:["Applying ",h]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:229,columnNumber:15},this),s.jsxDEV(ls,{children:"Creating backup and applying changes..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:230,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:228,columnNumber:13},this),s.jsxDEV("div",{className:"py-8 flex flex-col items-center justify-center gap-4",children:[s.jsxDEV(ot,{className:"h-8 w-8 animate-spin text-primary"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:234,columnNumber:15},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Please wait..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:235,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:233,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:227,columnNumber:11},this),m==="done"&&s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{className:"flex items-center gap-2 text-green-600",children:[s.jsxDEV(Or,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:245,columnNumber:17},this),h," Complete"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:244,columnNumber:15},this),s.jsxDEV(ls,{children:[t," has been ",g," to v",o]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:248,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:243,columnNumber:13},this),s.jsxDEV("div",{className:"py-8 flex flex-col items-center justify-center gap-4",children:[s.jsxDEV(Or,{className:"h-16 w-16 text-green-500"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:254,columnNumber:15},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"All changes have been applied successfully"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:255,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:253,columnNumber:13},this),s.jsxDEV(Ds,{children:s.jsxDEV(le,{onClick:k,children:"Done"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:261,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:260,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:242,columnNumber:11},this),m==="error"&&s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ds,{children:s.jsxDEV(os,{className:"flex items-center gap-2 text-destructive",children:[s.jsxDEV(si,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:271,columnNumber:17},this),h," Failed"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:270,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:269,columnNumber:13},this),s.jsxDEV("div",{className:"py-4 space-y-4",children:[s.jsxDEV(Ti,{variant:"destructive",children:[s.jsxDEV(si,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:278,columnNumber:17},this),s.jsxDEV(Lr,{children:"Error"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:279,columnNumber:17},this),s.jsxDEV(Ri,{children:E},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:280,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:277,columnNumber:15},this),D&&s.jsxDEV(Ti,{children:[s.jsxDEV(vf,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:285,columnNumber:19},this),s.jsxDEV(Lr,{children:"Manual Restore Available"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:286,columnNumber:19},this),s.jsxDEV(Ri,{children:"Auto-restore failed. Click the button below to restore your project to its previous state."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:287,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:284,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:276,columnNumber:13},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:k,disabled:j,children:"Close"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:296,columnNumber:15},this),D&&s.jsxDEV(le,{onClick:R,disabled:_.isPending,variant:"destructive",children:_.isPending?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:307,columnNumber:23},this),"Restoring..."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:306,columnNumber:21},this):s.jsxDEV(s.Fragment,{children:[s.jsxDEV(vf,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:312,columnNumber:23},this),"Restore Backup"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:311,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:300,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:295,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:268,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:173,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/UpgradeDialog.tsx",lineNumber:172,columnNumber:5},this)}var wi;(function(e){e.assertEqual=o=>{};function t(o){}e.assertIs=t;function i(o){throw new Error}e.assertNever=i,e.arrayToEnum=o=>{const c={};for(const u of o)c[u]=u;return c},e.getValidEnumValues=o=>{const c=e.objectKeys(o).filter(l=>typeof o[o[l]]!="number"),u={};for(const l of c)u[l]=o[l];return e.objectValues(u)},e.objectValues=o=>e.objectKeys(o).map(function(c){return o[c]}),e.objectKeys=typeof Object.keys=="function"?o=>Object.keys(o):o=>{const c=[];for(const u in o)Object.prototype.hasOwnProperty.call(o,u)&&c.push(u);return c},e.find=(o,c)=>{for(const u of o)if(c(u))return u},e.isInteger=typeof Number.isInteger=="function"?o=>Number.isInteger(o):o=>typeof o=="number"&&Number.isFinite(o)&&Math.floor(o)===o;function r(o,c=" | "){return o.map(u=>typeof u=="string"?`'${u}'`:u).join(c)}e.joinValues=r,e.jsonStringifyReplacer=(o,c)=>typeof c=="bigint"?c.toString():c})(wi||(wi={}));var u9;(function(e){e.mergeShapes=(t,i)=>({...t,...i})})(u9||(u9={}));const Jt=wi.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),pc=e=>{switch(typeof e){case"undefined":return Jt.undefined;case"string":return Jt.string;case"number":return Number.isNaN(e)?Jt.nan:Jt.number;case"boolean":return Jt.boolean;case"function":return Jt.function;case"bigint":return Jt.bigint;case"symbol":return Jt.symbol;case"object":return Array.isArray(e)?Jt.array:e===null?Jt.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?Jt.promise:typeof Map<"u"&&e instanceof Map?Jt.map:typeof Set<"u"&&e instanceof Set?Jt.set:typeof Date<"u"&&e instanceof Date?Jt.date:Jt.object;default:return Jt.unknown}},Nt=wi.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class _l extends Error{get errors(){return this.issues}constructor(t){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};const i=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,i):this.__proto__=i,this.name="ZodError",this.issues=t}format(t){const i=t||function(c){return c.message},r={_errors:[]},o=c=>{for(const u of c.issues)if(u.code==="invalid_union")u.unionErrors.map(o);else if(u.code==="invalid_return_type")o(u.returnTypeError);else if(u.code==="invalid_arguments")o(u.argumentsError);else if(u.path.length===0)r._errors.push(i(u));else{let l=r,d=0;for(;d<u.path.length;){const h=u.path[d];d===u.path.length-1?(l[h]=l[h]||{_errors:[]},l[h]._errors.push(i(u))):l[h]=l[h]||{_errors:[]},l=l[h],d++}}};return o(this),r}static assert(t){if(!(t instanceof _l))throw new Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,wi.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(t=i=>i.message){const i={},r=[];for(const o of this.issues)if(o.path.length>0){const c=o.path[0];i[c]=i[c]||[],i[c].push(t(o))}else r.push(t(o));return{formErrors:r,fieldErrors:i}}get formErrors(){return this.flatten()}}_l.create=e=>new _l(e);const oS=(e,t)=>{let i;switch(e.code){case Nt.invalid_type:e.received===Jt.undefined?i="Required":i=`Expected ${e.expected}, received ${e.received}`;break;case Nt.invalid_literal:i=`Invalid literal value, expected ${JSON.stringify(e.expected,wi.jsonStringifyReplacer)}`;break;case Nt.unrecognized_keys:i=`Unrecognized key(s) in object: ${wi.joinValues(e.keys,", ")}`;break;case Nt.invalid_union:i="Invalid input";break;case Nt.invalid_union_discriminator:i=`Invalid discriminator value. Expected ${wi.joinValues(e.options)}`;break;case Nt.invalid_enum_value:i=`Invalid enum value. Expected ${wi.joinValues(e.options)}, received '${e.received}'`;break;case Nt.invalid_arguments:i="Invalid function arguments";break;case Nt.invalid_return_type:i="Invalid function return type";break;case Nt.invalid_date:i="Invalid date";break;case Nt.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(i=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(i=`${i} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?i=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?i=`Invalid input: must end with "${e.validation.endsWith}"`:wi.assertNever(e.validation):e.validation!=="regex"?i=`Invalid ${e.validation}`:i="Invalid";break;case Nt.too_small:e.type==="array"?i=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?i=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?i=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="bigint"?i=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?i=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:i="Invalid input";break;case Nt.too_big:e.type==="array"?i=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?i=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?i=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?i=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?i=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:i="Invalid input";break;case Nt.custom:i="Invalid input";break;case Nt.invalid_intersection_types:i="Intersection results could not be merged";break;case Nt.not_multiple_of:i=`Number must be a multiple of ${e.multipleOf}`;break;case Nt.not_finite:i="Number must be finite";break;default:i=t.defaultError,wi.assertNever(e)}return{message:i}};let Ioe=oS;function Foe(){return Ioe}const Boe=e=>{const{data:t,path:i,errorMaps:r,issueData:o}=e,c=[...i,...o.path||[]],u={...o,path:c};if(o.message!==void 0)return{...o,path:c,message:o.message};let l="";const d=r.filter(h=>!!h).slice().reverse();for(const h of d)l=h(u,{data:t,defaultError:l}).message;return{...o,path:c,message:l}};function $t(e,t){const i=Foe(),r=Boe({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,i,i===oS?void 0:oS].filter(o=>!!o)});e.common.issues.push(r)}class Er{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,i){const r=[];for(const o of i){if(o.status==="aborted")return Bs;o.status==="dirty"&&t.dirty(),r.push(o.value)}return{status:t.value,value:r}}static async mergeObjectAsync(t,i){const r=[];for(const o of i){const c=await o.key,u=await o.value;r.push({key:c,value:u})}return Er.mergeObjectSync(t,r)}static mergeObjectSync(t,i){const r={};for(const o of i){const{key:c,value:u}=o;if(c.status==="aborted"||u.status==="aborted")return Bs;c.status==="dirty"&&t.dirty(),u.status==="dirty"&&t.dirty(),c.value!=="__proto__"&&(typeof u.value<"u"||o.alwaysSet)&&(r[c.value]=u.value)}return{status:t.value,value:r}}}const Bs=Object.freeze({status:"aborted"}),ef=e=>({status:"dirty",value:e}),Sn=e=>({status:"valid",value:e}),p9=e=>e.status==="aborted",d9=e=>e.status==="dirty",Fd=e=>e.status==="valid",MN=e=>typeof Promise<"u"&&e instanceof Promise;var rs;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t==null?void 0:t.message})(rs||(rs={}));class Vo{constructor(t,i,r,o){this._cachedPath=[],this.parent=t,this.data=i,this._path=r,this._key=o}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const h9=(e,t)=>{if(Fd(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const i=new _l(e.common.issues);return this._error=i,this._error}}};function Ws(e){if(!e)return{};const{errorMap:t,invalid_type_error:i,required_error:r,description:o}=e;if(t&&(i||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:o}:{errorMap:(u,l)=>{const{message:d}=e;return u.code==="invalid_enum_value"?{message:d??l.defaultError}:typeof l.data>"u"?{message:d??r??l.defaultError}:u.code!=="invalid_type"?{message:l.defaultError}:{message:d??i??l.defaultError}},description:o}}class ci{get description(){return this._def.description}_getType(t){return pc(t.data)}_getOrReturnCtx(t,i){return i||{common:t.parent.common,data:t.data,parsedType:pc(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new Er,ctx:{common:t.parent.common,data:t.data,parsedType:pc(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const i=this._parse(t);if(MN(i))throw new Error("Synchronous parse encountered promise.");return i}_parseAsync(t){const i=this._parse(t);return Promise.resolve(i)}parse(t,i){const r=this.safeParse(t,i);if(r.success)return r.data;throw r.error}safeParse(t,i){const r={common:{issues:[],async:(i==null?void 0:i.async)??!1,contextualErrorMap:i==null?void 0:i.errorMap},path:(i==null?void 0:i.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:pc(t)},o=this._parseSync({data:t,path:r.path,parent:r});return h9(r,o)}"~validate"(t){var r,o;const i={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:pc(t)};if(!this["~standard"].async)try{const c=this._parseSync({data:t,path:[],parent:i});return Fd(c)?{value:c.value}:{issues:i.common.issues}}catch(c){(o=(r=c==null?void 0:c.message)==null?void 0:r.toLowerCase())!=null&&o.includes("encountered")&&(this["~standard"].async=!0),i.common={issues:[],async:!0}}return this._parseAsync({data:t,path:[],parent:i}).then(c=>Fd(c)?{value:c.value}:{issues:i.common.issues})}async parseAsync(t,i){const r=await this.safeParseAsync(t,i);if(r.success)return r.data;throw r.error}async safeParseAsync(t,i){const r={common:{issues:[],contextualErrorMap:i==null?void 0:i.errorMap,async:!0},path:(i==null?void 0:i.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:pc(t)},o=this._parse({data:t,path:r.path,parent:r}),c=await(MN(o)?o:Promise.resolve(o));return h9(r,c)}refine(t,i){const r=o=>typeof i=="string"||typeof i>"u"?{message:i}:typeof i=="function"?i(o):i;return this._refinement((o,c)=>{const u=t(o),l=()=>c.addIssue({code:Nt.custom,...r(o)});return typeof Promise<"u"&&u instanceof Promise?u.then(d=>d?!0:(l(),!1)):u?!0:(l(),!1)})}refinement(t,i){return this._refinement((r,o)=>t(r)?!0:(o.addIssue(typeof i=="function"?i(r,o):i),!1))}_refinement(t){return new zd({schema:this,typeName:Os.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:i=>this["~validate"](i)}}optional(){return Dc.create(this,this._def)}nullable(){return Ud.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Co.create(this)}promise(){return BN.create(this,this._def)}or(t){return ON.create([this,t],this._def)}and(t){return IN.create(this,t,this._def)}transform(t){return new zd({...Ws(this._def),schema:this,typeName:Os.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const i=typeof t=="function"?t:()=>t;return new pS({...Ws(this._def),innerType:this,defaultValue:i,typeName:Os.ZodDefault})}brand(){return new cle({typeName:Os.ZodBranded,type:this,...Ws(this._def)})}catch(t){const i=typeof t=="function"?t:()=>t;return new dS({...Ws(this._def),innerType:this,catchValue:i,typeName:Os.ZodCatch})}describe(t){const i=this.constructor;return new i({...this._def,description:t})}pipe(t){return t3.create(this,t)}readonly(){return hS.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const $oe=/^c[^\s-]{8,}$/i,zoe=/^[0-9a-z]+$/,Uoe=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Woe=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Hoe=/^[a-z0-9_-]{21}$/i,qoe=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Koe=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Goe=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Yoe="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let $E;const Qoe=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Xoe=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,Joe=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Zoe=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,ele=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,tle=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,ZA="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",sle=new RegExp(`^${ZA}$`);function eM(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision==null&&(t=`${t}(\\.\\d+)?`);const i=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${i}`}function ile(e){return new RegExp(`^${eM(e)}$`)}function ale(e){let t=`${ZA}T${eM(e)}`;const i=[];return i.push(e.local?"Z?":"Z"),e.offset&&i.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${i.join("|")})`,new RegExp(`^${t}$`)}function rle(e,t){return!!((t==="v4"||!t)&&Qoe.test(e)||(t==="v6"||!t)&&Joe.test(e))}function nle(e,t){if(!qoe.test(e))return!1;try{const[i]=e.split(".");if(!i)return!1;const r=i.replace(/-/g,"+").replace(/_/g,"/").padEnd(i.length+(4-i.length%4)%4,"="),o=JSON.parse(atob(r));return!(typeof o!="object"||o===null||"typ"in o&&(o==null?void 0:o.typ)!=="JWT"||!o.alg||t&&o.alg!==t)}catch{return!1}}function ole(e,t){return!!((t==="v4"||!t)&&Xoe.test(e)||(t==="v6"||!t)&&Zoe.test(e))}class gl extends ci{_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==Jt.string){const c=this._getOrReturnCtx(t);return $t(c,{code:Nt.invalid_type,expected:Jt.string,received:c.parsedType}),Bs}const r=new Er;let o;for(const c of this._def.checks)if(c.kind==="min")t.data.length<c.value&&(o=this._getOrReturnCtx(t,o),$t(o,{code:Nt.too_small,minimum:c.value,type:"string",inclusive:!0,exact:!1,message:c.message}),r.dirty());else if(c.kind==="max")t.data.length>c.value&&(o=this._getOrReturnCtx(t,o),$t(o,{code:Nt.too_big,maximum:c.value,type:"string",inclusive:!0,exact:!1,message:c.message}),r.dirty());else if(c.kind==="length"){const u=t.data.length>c.value,l=t.data.length<c.value;(u||l)&&(o=this._getOrReturnCtx(t,o),u?$t(o,{code:Nt.too_big,maximum:c.value,type:"string",inclusive:!0,exact:!0,message:c.message}):l&&$t(o,{code:Nt.too_small,minimum:c.value,type:"string",inclusive:!0,exact:!0,message:c.message}),r.dirty())}else if(c.kind==="email")Goe.test(t.data)||(o=this._getOrReturnCtx(t,o),$t(o,{validation:"email",code:Nt.invalid_string,message:c.message}),r.dirty());else if(c.kind==="emoji")$E||($E=new RegExp(Yoe,"u")),$E.test(t.data)||(o=this._getOrReturnCtx(t,o),$t(o,{validation:"emoji",code:Nt.invalid_string,message:c.message}),r.dirty());else if(c.kind==="uuid")Woe.test(t.data)||(o=this._getOrReturnCtx(t,o),$t(o,{validation:"uuid",code:Nt.invalid_string,message:c.message}),r.dirty());else if(c.kind==="nanoid")Hoe.test(t.data)||(o=this._getOrReturnCtx(t,o),$t(o,{validation:"nanoid",code:Nt.invalid_string,message:c.message}),r.dirty());else if(c.kind==="cuid")$oe.test(t.data)||(o=this._getOrReturnCtx(t,o),$t(o,{validation:"cuid",code:Nt.invalid_string,message:c.message}),r.dirty());else if(c.kind==="cuid2")zoe.test(t.data)||(o=this._getOrReturnCtx(t,o),$t(o,{validation:"cuid2",code:Nt.invalid_string,message:c.message}),r.dirty());else if(c.kind==="ulid")Uoe.test(t.data)||(o=this._getOrReturnCtx(t,o),$t(o,{validation:"ulid",code:Nt.invalid_string,message:c.message}),r.dirty());else if(c.kind==="url")try{new URL(t.data)}catch{o=this._getOrReturnCtx(t,o),$t(o,{validation:"url",code:Nt.invalid_string,message:c.message}),r.dirty()}else c.kind==="regex"?(c.regex.lastIndex=0,c.regex.test(t.data)||(o=this._getOrReturnCtx(t,o),$t(o,{validation:"regex",code:Nt.invalid_string,message:c.message}),r.dirty())):c.kind==="trim"?t.data=t.data.trim():c.kind==="includes"?t.data.includes(c.value,c.position)||(o=this._getOrReturnCtx(t,o),$t(o,{code:Nt.invalid_string,validation:{includes:c.value,position:c.position},message:c.message}),r.dirty()):c.kind==="toLowerCase"?t.data=t.data.toLowerCase():c.kind==="toUpperCase"?t.data=t.data.toUpperCase():c.kind==="startsWith"?t.data.startsWith(c.value)||(o=this._getOrReturnCtx(t,o),$t(o,{code:Nt.invalid_string,validation:{startsWith:c.value},message:c.message}),r.dirty()):c.kind==="endsWith"?t.data.endsWith(c.value)||(o=this._getOrReturnCtx(t,o),$t(o,{code:Nt.invalid_string,validation:{endsWith:c.value},message:c.message}),r.dirty()):c.kind==="datetime"?ale(c).test(t.data)||(o=this._getOrReturnCtx(t,o),$t(o,{code:Nt.invalid_string,validation:"datetime",message:c.message}),r.dirty()):c.kind==="date"?sle.test(t.data)||(o=this._getOrReturnCtx(t,o),$t(o,{code:Nt.invalid_string,validation:"date",message:c.message}),r.dirty()):c.kind==="time"?ile(c).test(t.data)||(o=this._getOrReturnCtx(t,o),$t(o,{code:Nt.invalid_string,validation:"time",message:c.message}),r.dirty()):c.kind==="duration"?Koe.test(t.data)||(o=this._getOrReturnCtx(t,o),$t(o,{validation:"duration",code:Nt.invalid_string,message:c.message}),r.dirty()):c.kind==="ip"?rle(t.data,c.version)||(o=this._getOrReturnCtx(t,o),$t(o,{validation:"ip",code:Nt.invalid_string,message:c.message}),r.dirty()):c.kind==="jwt"?nle(t.data,c.alg)||(o=this._getOrReturnCtx(t,o),$t(o,{validation:"jwt",code:Nt.invalid_string,message:c.message}),r.dirty()):c.kind==="cidr"?ole(t.data,c.version)||(o=this._getOrReturnCtx(t,o),$t(o,{validation:"cidr",code:Nt.invalid_string,message:c.message}),r.dirty()):c.kind==="base64"?ele.test(t.data)||(o=this._getOrReturnCtx(t,o),$t(o,{validation:"base64",code:Nt.invalid_string,message:c.message}),r.dirty()):c.kind==="base64url"?tle.test(t.data)||(o=this._getOrReturnCtx(t,o),$t(o,{validation:"base64url",code:Nt.invalid_string,message:c.message}),r.dirty()):wi.assertNever(c);return{status:r.value,value:t.data}}_regex(t,i,r){return this.refinement(o=>t.test(o),{validation:i,code:Nt.invalid_string,...rs.errToObj(r)})}_addCheck(t){return new gl({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:"email",...rs.errToObj(t)})}url(t){return this._addCheck({kind:"url",...rs.errToObj(t)})}emoji(t){return this._addCheck({kind:"emoji",...rs.errToObj(t)})}uuid(t){return this._addCheck({kind:"uuid",...rs.errToObj(t)})}nanoid(t){return this._addCheck({kind:"nanoid",...rs.errToObj(t)})}cuid(t){return this._addCheck({kind:"cuid",...rs.errToObj(t)})}cuid2(t){return this._addCheck({kind:"cuid2",...rs.errToObj(t)})}ulid(t){return this._addCheck({kind:"ulid",...rs.errToObj(t)})}base64(t){return this._addCheck({kind:"base64",...rs.errToObj(t)})}base64url(t){return this._addCheck({kind:"base64url",...rs.errToObj(t)})}jwt(t){return this._addCheck({kind:"jwt",...rs.errToObj(t)})}ip(t){return this._addCheck({kind:"ip",...rs.errToObj(t)})}cidr(t){return this._addCheck({kind:"cidr",...rs.errToObj(t)})}datetime(t){return typeof t=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:t}):this._addCheck({kind:"datetime",precision:typeof(t==null?void 0:t.precision)>"u"?null:t==null?void 0:t.precision,offset:(t==null?void 0:t.offset)??!1,local:(t==null?void 0:t.local)??!1,...rs.errToObj(t==null?void 0:t.message)})}date(t){return this._addCheck({kind:"date",message:t})}time(t){return typeof t=="string"?this._addCheck({kind:"time",precision:null,message:t}):this._addCheck({kind:"time",precision:typeof(t==null?void 0:t.precision)>"u"?null:t==null?void 0:t.precision,...rs.errToObj(t==null?void 0:t.message)})}duration(t){return this._addCheck({kind:"duration",...rs.errToObj(t)})}regex(t,i){return this._addCheck({kind:"regex",regex:t,...rs.errToObj(i)})}includes(t,i){return this._addCheck({kind:"includes",value:t,position:i==null?void 0:i.position,...rs.errToObj(i==null?void 0:i.message)})}startsWith(t,i){return this._addCheck({kind:"startsWith",value:t,...rs.errToObj(i)})}endsWith(t,i){return this._addCheck({kind:"endsWith",value:t,...rs.errToObj(i)})}min(t,i){return this._addCheck({kind:"min",value:t,...rs.errToObj(i)})}max(t,i){return this._addCheck({kind:"max",value:t,...rs.errToObj(i)})}length(t,i){return this._addCheck({kind:"length",value:t,...rs.errToObj(i)})}nonempty(t){return this.min(1,rs.errToObj(t))}trim(){return new gl({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new gl({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new gl({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}get isDate(){return!!this._def.checks.find(t=>t.kind==="date")}get isTime(){return!!this._def.checks.find(t=>t.kind==="time")}get isDuration(){return!!this._def.checks.find(t=>t.kind==="duration")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(t=>t.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get isCIDR(){return!!this._def.checks.find(t=>t.kind==="cidr")}get isBase64(){return!!this._def.checks.find(t=>t.kind==="base64")}get isBase64url(){return!!this._def.checks.find(t=>t.kind==="base64url")}get minLength(){let t=null;for(const i of this._def.checks)i.kind==="min"&&(t===null||i.value>t)&&(t=i.value);return t}get maxLength(){let t=null;for(const i of this._def.checks)i.kind==="max"&&(t===null||i.value<t)&&(t=i.value);return t}}gl.create=e=>new gl({checks:[],typeName:Os.ZodString,coerce:(e==null?void 0:e.coerce)??!1,...Ws(e)});function lle(e,t){const i=(e.toString().split(".")[1]||"").length,r=(t.toString().split(".")[1]||"").length,o=i>r?i:r,c=Number.parseInt(e.toFixed(o).replace(".","")),u=Number.parseInt(t.toFixed(o).replace(".",""));return c%u/10**o}class Bd extends ci{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==Jt.number){const c=this._getOrReturnCtx(t);return $t(c,{code:Nt.invalid_type,expected:Jt.number,received:c.parsedType}),Bs}let r;const o=new Er;for(const c of this._def.checks)c.kind==="int"?wi.isInteger(t.data)||(r=this._getOrReturnCtx(t,r),$t(r,{code:Nt.invalid_type,expected:"integer",received:"float",message:c.message}),o.dirty()):c.kind==="min"?(c.inclusive?t.data<c.value:t.data<=c.value)&&(r=this._getOrReturnCtx(t,r),$t(r,{code:Nt.too_small,minimum:c.value,type:"number",inclusive:c.inclusive,exact:!1,message:c.message}),o.dirty()):c.kind==="max"?(c.inclusive?t.data>c.value:t.data>=c.value)&&(r=this._getOrReturnCtx(t,r),$t(r,{code:Nt.too_big,maximum:c.value,type:"number",inclusive:c.inclusive,exact:!1,message:c.message}),o.dirty()):c.kind==="multipleOf"?lle(t.data,c.value)!==0&&(r=this._getOrReturnCtx(t,r),$t(r,{code:Nt.not_multiple_of,multipleOf:c.value,message:c.message}),o.dirty()):c.kind==="finite"?Number.isFinite(t.data)||(r=this._getOrReturnCtx(t,r),$t(r,{code:Nt.not_finite,message:c.message}),o.dirty()):wi.assertNever(c);return{status:o.value,value:t.data}}gte(t,i){return this.setLimit("min",t,!0,rs.toString(i))}gt(t,i){return this.setLimit("min",t,!1,rs.toString(i))}lte(t,i){return this.setLimit("max",t,!0,rs.toString(i))}lt(t,i){return this.setLimit("max",t,!1,rs.toString(i))}setLimit(t,i,r,o){return new Bd({...this._def,checks:[...this._def.checks,{kind:t,value:i,inclusive:r,message:rs.toString(o)}]})}_addCheck(t){return new Bd({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:rs.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:rs.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:rs.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:rs.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:rs.toString(t)})}multipleOf(t,i){return this._addCheck({kind:"multipleOf",value:t,message:rs.toString(i)})}finite(t){return this._addCheck({kind:"finite",message:rs.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:rs.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:rs.toString(t)})}get minValue(){let t=null;for(const i of this._def.checks)i.kind==="min"&&(t===null||i.value>t)&&(t=i.value);return t}get maxValue(){let t=null;for(const i of this._def.checks)i.kind==="max"&&(t===null||i.value<t)&&(t=i.value);return t}get isInt(){return!!this._def.checks.find(t=>t.kind==="int"||t.kind==="multipleOf"&&wi.isInteger(t.value))}get isFinite(){let t=null,i=null;for(const r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(i===null||r.value>i)&&(i=r.value):r.kind==="max"&&(t===null||r.value<t)&&(t=r.value)}return Number.isFinite(i)&&Number.isFinite(t)}}Bd.create=e=>new Bd({checks:[],typeName:Os.ZodNumber,coerce:(e==null?void 0:e.coerce)||!1,...Ws(e)});class Df extends ci{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce)try{t.data=BigInt(t.data)}catch{return this._getInvalidInput(t)}if(this._getType(t)!==Jt.bigint)return this._getInvalidInput(t);let r;const o=new Er;for(const c of this._def.checks)c.kind==="min"?(c.inclusive?t.data<c.value:t.data<=c.value)&&(r=this._getOrReturnCtx(t,r),$t(r,{code:Nt.too_small,type:"bigint",minimum:c.value,inclusive:c.inclusive,message:c.message}),o.dirty()):c.kind==="max"?(c.inclusive?t.data>c.value:t.data>=c.value)&&(r=this._getOrReturnCtx(t,r),$t(r,{code:Nt.too_big,type:"bigint",maximum:c.value,inclusive:c.inclusive,message:c.message}),o.dirty()):c.kind==="multipleOf"?t.data%c.value!==BigInt(0)&&(r=this._getOrReturnCtx(t,r),$t(r,{code:Nt.not_multiple_of,multipleOf:c.value,message:c.message}),o.dirty()):wi.assertNever(c);return{status:o.value,value:t.data}}_getInvalidInput(t){const i=this._getOrReturnCtx(t);return $t(i,{code:Nt.invalid_type,expected:Jt.bigint,received:i.parsedType}),Bs}gte(t,i){return this.setLimit("min",t,!0,rs.toString(i))}gt(t,i){return this.setLimit("min",t,!1,rs.toString(i))}lte(t,i){return this.setLimit("max",t,!0,rs.toString(i))}lt(t,i){return this.setLimit("max",t,!1,rs.toString(i))}setLimit(t,i,r,o){return new Df({...this._def,checks:[...this._def.checks,{kind:t,value:i,inclusive:r,message:rs.toString(o)}]})}_addCheck(t){return new Df({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:rs.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:rs.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:rs.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:rs.toString(t)})}multipleOf(t,i){return this._addCheck({kind:"multipleOf",value:t,message:rs.toString(i)})}get minValue(){let t=null;for(const i of this._def.checks)i.kind==="min"&&(t===null||i.value>t)&&(t=i.value);return t}get maxValue(){let t=null;for(const i of this._def.checks)i.kind==="max"&&(t===null||i.value<t)&&(t=i.value);return t}}Df.create=e=>new Df({checks:[],typeName:Os.ZodBigInt,coerce:(e==null?void 0:e.coerce)??!1,...Ws(e)});class lS extends ci{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==Jt.boolean){const r=this._getOrReturnCtx(t);return $t(r,{code:Nt.invalid_type,expected:Jt.boolean,received:r.parsedType}),Bs}return Sn(t.data)}}lS.create=e=>new lS({typeName:Os.ZodBoolean,coerce:(e==null?void 0:e.coerce)||!1,...Ws(e)});class LN extends ci{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==Jt.date){const c=this._getOrReturnCtx(t);return $t(c,{code:Nt.invalid_type,expected:Jt.date,received:c.parsedType}),Bs}if(Number.isNaN(t.data.getTime())){const c=this._getOrReturnCtx(t);return $t(c,{code:Nt.invalid_date}),Bs}const r=new Er;let o;for(const c of this._def.checks)c.kind==="min"?t.data.getTime()<c.value&&(o=this._getOrReturnCtx(t,o),$t(o,{code:Nt.too_small,message:c.message,inclusive:!0,exact:!1,minimum:c.value,type:"date"}),r.dirty()):c.kind==="max"?t.data.getTime()>c.value&&(o=this._getOrReturnCtx(t,o),$t(o,{code:Nt.too_big,message:c.message,inclusive:!0,exact:!1,maximum:c.value,type:"date"}),r.dirty()):wi.assertNever(c);return{status:r.value,value:new Date(t.data.getTime())}}_addCheck(t){return new LN({...this._def,checks:[...this._def.checks,t]})}min(t,i){return this._addCheck({kind:"min",value:t.getTime(),message:rs.toString(i)})}max(t,i){return this._addCheck({kind:"max",value:t.getTime(),message:rs.toString(i)})}get minDate(){let t=null;for(const i of this._def.checks)i.kind==="min"&&(t===null||i.value>t)&&(t=i.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(const i of this._def.checks)i.kind==="max"&&(t===null||i.value<t)&&(t=i.value);return t!=null?new Date(t):null}}LN.create=e=>new LN({checks:[],coerce:(e==null?void 0:e.coerce)||!1,typeName:Os.ZodDate,...Ws(e)});class m9 extends ci{_parse(t){if(this._getType(t)!==Jt.symbol){const r=this._getOrReturnCtx(t);return $t(r,{code:Nt.invalid_type,expected:Jt.symbol,received:r.parsedType}),Bs}return Sn(t.data)}}m9.create=e=>new m9({typeName:Os.ZodSymbol,...Ws(e)});class f9 extends ci{_parse(t){if(this._getType(t)!==Jt.undefined){const r=this._getOrReturnCtx(t);return $t(r,{code:Nt.invalid_type,expected:Jt.undefined,received:r.parsedType}),Bs}return Sn(t.data)}}f9.create=e=>new f9({typeName:Os.ZodUndefined,...Ws(e)});class g9 extends ci{_parse(t){if(this._getType(t)!==Jt.null){const r=this._getOrReturnCtx(t);return $t(r,{code:Nt.invalid_type,expected:Jt.null,received:r.parsedType}),Bs}return Sn(t.data)}}g9.create=e=>new g9({typeName:Os.ZodNull,...Ws(e)});class v9 extends ci{constructor(){super(...arguments),this._any=!0}_parse(t){return Sn(t.data)}}v9.create=e=>new v9({typeName:Os.ZodAny,...Ws(e)});class cS extends ci{constructor(){super(...arguments),this._unknown=!0}_parse(t){return Sn(t.data)}}cS.create=e=>new cS({typeName:Os.ZodUnknown,...Ws(e)});class Tc extends ci{_parse(t){const i=this._getOrReturnCtx(t);return $t(i,{code:Nt.invalid_type,expected:Jt.never,received:i.parsedType}),Bs}}Tc.create=e=>new Tc({typeName:Os.ZodNever,...Ws(e)});class b9 extends ci{_parse(t){if(this._getType(t)!==Jt.undefined){const r=this._getOrReturnCtx(t);return $t(r,{code:Nt.invalid_type,expected:Jt.void,received:r.parsedType}),Bs}return Sn(t.data)}}b9.create=e=>new b9({typeName:Os.ZodVoid,...Ws(e)});class Co extends ci{_parse(t){const{ctx:i,status:r}=this._processInputParams(t),o=this._def;if(i.parsedType!==Jt.array)return $t(i,{code:Nt.invalid_type,expected:Jt.array,received:i.parsedType}),Bs;if(o.exactLength!==null){const u=i.data.length>o.exactLength.value,l=i.data.length<o.exactLength.value;(u||l)&&($t(i,{code:u?Nt.too_big:Nt.too_small,minimum:l?o.exactLength.value:void 0,maximum:u?o.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:o.exactLength.message}),r.dirty())}if(o.minLength!==null&&i.data.length<o.minLength.value&&($t(i,{code:Nt.too_small,minimum:o.minLength.value,type:"array",inclusive:!0,exact:!1,message:o.minLength.message}),r.dirty()),o.maxLength!==null&&i.data.length>o.maxLength.value&&($t(i,{code:Nt.too_big,maximum:o.maxLength.value,type:"array",inclusive:!0,exact:!1,message:o.maxLength.message}),r.dirty()),i.common.async)return Promise.all([...i.data].map((u,l)=>o.type._parseAsync(new Vo(i,u,i.path,l)))).then(u=>Er.mergeArray(r,u));const c=[...i.data].map((u,l)=>o.type._parseSync(new Vo(i,u,i.path,l)));return Er.mergeArray(r,c)}get element(){return this._def.type}min(t,i){return new Co({...this._def,minLength:{value:t,message:rs.toString(i)}})}max(t,i){return new Co({...this._def,maxLength:{value:t,message:rs.toString(i)}})}length(t,i){return new Co({...this._def,exactLength:{value:t,message:rs.toString(i)}})}nonempty(t){return this.min(1,t)}}Co.create=(e,t)=>new Co({type:e,minLength:null,maxLength:null,exactLength:null,typeName:Os.ZodArray,...Ws(t)});function ud(e){if(e instanceof da){const t={};for(const i in e.shape){const r=e.shape[i];t[i]=Dc.create(ud(r))}return new da({...e._def,shape:()=>t})}else return e instanceof Co?new Co({...e._def,type:ud(e.element)}):e instanceof Dc?Dc.create(ud(e.unwrap())):e instanceof Ud?Ud.create(ud(e.unwrap())):e instanceof qu?qu.create(e.items.map(t=>ud(t))):e}class da extends ci{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const t=this._def.shape(),i=wi.objectKeys(t);return this._cached={shape:t,keys:i},this._cached}_parse(t){if(this._getType(t)!==Jt.object){const h=this._getOrReturnCtx(t);return $t(h,{code:Nt.invalid_type,expected:Jt.object,received:h.parsedType}),Bs}const{status:r,ctx:o}=this._processInputParams(t),{shape:c,keys:u}=this._getCached(),l=[];if(!(this._def.catchall instanceof Tc&&this._def.unknownKeys==="strip"))for(const h in o.data)u.includes(h)||l.push(h);const d=[];for(const h of u){const g=c[h],m=o.data[h];d.push({key:{status:"valid",value:h},value:g._parse(new Vo(o,m,o.path,h)),alwaysSet:h in o.data})}if(this._def.catchall instanceof Tc){const h=this._def.unknownKeys;if(h==="passthrough")for(const g of l)d.push({key:{status:"valid",value:g},value:{status:"valid",value:o.data[g]}});else if(h==="strict")l.length>0&&($t(o,{code:Nt.unrecognized_keys,keys:l}),r.dirty());else if(h!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const h=this._def.catchall;for(const g of l){const m=o.data[g];d.push({key:{status:"valid",value:g},value:h._parse(new Vo(o,m,o.path,g)),alwaysSet:g in o.data})}}return o.common.async?Promise.resolve().then(async()=>{const h=[];for(const g of d){const m=await g.key,y=await g.value;h.push({key:m,value:y,alwaysSet:g.alwaysSet})}return h}).then(h=>Er.mergeObjectSync(r,h)):Er.mergeObjectSync(r,d)}get shape(){return this._def.shape()}strict(t){return rs.errToObj,new da({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(i,r)=>{var c,u;const o=((u=(c=this._def).errorMap)==null?void 0:u.call(c,i,r).message)??r.defaultError;return i.code==="unrecognized_keys"?{message:rs.errToObj(t).message??o}:{message:o}}}:{}})}strip(){return new da({...this._def,unknownKeys:"strip"})}passthrough(){return new da({...this._def,unknownKeys:"passthrough"})}extend(t){return new da({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new da({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:Os.ZodObject})}setKey(t,i){return this.augment({[t]:i})}catchall(t){return new da({...this._def,catchall:t})}pick(t){const i={};for(const r of wi.objectKeys(t))t[r]&&this.shape[r]&&(i[r]=this.shape[r]);return new da({...this._def,shape:()=>i})}omit(t){const i={};for(const r of wi.objectKeys(this.shape))t[r]||(i[r]=this.shape[r]);return new da({...this._def,shape:()=>i})}deepPartial(){return ud(this)}partial(t){const i={};for(const r of wi.objectKeys(this.shape)){const o=this.shape[r];t&&!t[r]?i[r]=o:i[r]=o.optional()}return new da({...this._def,shape:()=>i})}required(t){const i={};for(const r of wi.objectKeys(this.shape))if(t&&!t[r])i[r]=this.shape[r];else{let c=this.shape[r];for(;c instanceof Dc;)c=c._def.innerType;i[r]=c}return new da({...this._def,shape:()=>i})}keyof(){return tM(wi.objectKeys(this.shape))}}da.create=(e,t)=>new da({shape:()=>e,unknownKeys:"strip",catchall:Tc.create(),typeName:Os.ZodObject,...Ws(t)});da.strictCreate=(e,t)=>new da({shape:()=>e,unknownKeys:"strict",catchall:Tc.create(),typeName:Os.ZodObject,...Ws(t)});da.lazycreate=(e,t)=>new da({shape:e,unknownKeys:"strip",catchall:Tc.create(),typeName:Os.ZodObject,...Ws(t)});class ON extends ci{_parse(t){const{ctx:i}=this._processInputParams(t),r=this._def.options;function o(c){for(const l of c)if(l.result.status==="valid")return l.result;for(const l of c)if(l.result.status==="dirty")return i.common.issues.push(...l.ctx.common.issues),l.result;const u=c.map(l=>new _l(l.ctx.common.issues));return $t(i,{code:Nt.invalid_union,unionErrors:u}),Bs}if(i.common.async)return Promise.all(r.map(async c=>{const u={...i,common:{...i.common,issues:[]},parent:null};return{result:await c._parseAsync({data:i.data,path:i.path,parent:u}),ctx:u}})).then(o);{let c;const u=[];for(const d of r){const h={...i,common:{...i.common,issues:[]},parent:null},g=d._parseSync({data:i.data,path:i.path,parent:h});if(g.status==="valid")return g;g.status==="dirty"&&!c&&(c={result:g,ctx:h}),h.common.issues.length&&u.push(h.common.issues)}if(c)return i.common.issues.push(...c.ctx.common.issues),c.result;const l=u.map(d=>new _l(d));return $t(i,{code:Nt.invalid_union,unionErrors:l}),Bs}}get options(){return this._def.options}}ON.create=(e,t)=>new ON({options:e,typeName:Os.ZodUnion,...Ws(t)});function uS(e,t){const i=pc(e),r=pc(t);if(e===t)return{valid:!0,data:e};if(i===Jt.object&&r===Jt.object){const o=wi.objectKeys(t),c=wi.objectKeys(e).filter(l=>o.indexOf(l)!==-1),u={...e,...t};for(const l of c){const d=uS(e[l],t[l]);if(!d.valid)return{valid:!1};u[l]=d.data}return{valid:!0,data:u}}else if(i===Jt.array&&r===Jt.array){if(e.length!==t.length)return{valid:!1};const o=[];for(let c=0;c<e.length;c++){const u=e[c],l=t[c],d=uS(u,l);if(!d.valid)return{valid:!1};o.push(d.data)}return{valid:!0,data:o}}else return i===Jt.date&&r===Jt.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}class IN extends ci{_parse(t){const{status:i,ctx:r}=this._processInputParams(t),o=(c,u)=>{if(p9(c)||p9(u))return Bs;const l=uS(c.value,u.value);return l.valid?((d9(c)||d9(u))&&i.dirty(),{status:i.value,value:l.data}):($t(r,{code:Nt.invalid_intersection_types}),Bs)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([c,u])=>o(c,u)):o(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}IN.create=(e,t,i)=>new IN({left:e,right:t,typeName:Os.ZodIntersection,...Ws(i)});class qu extends ci{_parse(t){const{status:i,ctx:r}=this._processInputParams(t);if(r.parsedType!==Jt.array)return $t(r,{code:Nt.invalid_type,expected:Jt.array,received:r.parsedType}),Bs;if(r.data.length<this._def.items.length)return $t(r,{code:Nt.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),Bs;!this._def.rest&&r.data.length>this._def.items.length&&($t(r,{code:Nt.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),i.dirty());const c=[...r.data].map((u,l)=>{const d=this._def.items[l]||this._def.rest;return d?d._parse(new Vo(r,u,r.path,l)):null}).filter(u=>!!u);return r.common.async?Promise.all(c).then(u=>Er.mergeArray(i,u)):Er.mergeArray(i,c)}get items(){return this._def.items}rest(t){return new qu({...this._def,rest:t})}}qu.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new qu({items:e,typeName:Os.ZodTuple,rest:null,...Ws(t)})};class FN extends ci{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:i,ctx:r}=this._processInputParams(t);if(r.parsedType!==Jt.object)return $t(r,{code:Nt.invalid_type,expected:Jt.object,received:r.parsedType}),Bs;const o=[],c=this._def.keyType,u=this._def.valueType;for(const l in r.data)o.push({key:c._parse(new Vo(r,l,r.path,l)),value:u._parse(new Vo(r,r.data[l],r.path,l)),alwaysSet:l in r.data});return r.common.async?Er.mergeObjectAsync(i,o):Er.mergeObjectSync(i,o)}get element(){return this._def.valueType}static create(t,i,r){return i instanceof ci?new FN({keyType:t,valueType:i,typeName:Os.ZodRecord,...Ws(r)}):new FN({keyType:gl.create(),valueType:t,typeName:Os.ZodRecord,...Ws(i)})}}class N9 extends ci{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:i,ctx:r}=this._processInputParams(t);if(r.parsedType!==Jt.map)return $t(r,{code:Nt.invalid_type,expected:Jt.map,received:r.parsedType}),Bs;const o=this._def.keyType,c=this._def.valueType,u=[...r.data.entries()].map(([l,d],h)=>({key:o._parse(new Vo(r,l,r.path,[h,"key"])),value:c._parse(new Vo(r,d,r.path,[h,"value"]))}));if(r.common.async){const l=new Map;return Promise.resolve().then(async()=>{for(const d of u){const h=await d.key,g=await d.value;if(h.status==="aborted"||g.status==="aborted")return Bs;(h.status==="dirty"||g.status==="dirty")&&i.dirty(),l.set(h.value,g.value)}return{status:i.value,value:l}})}else{const l=new Map;for(const d of u){const h=d.key,g=d.value;if(h.status==="aborted"||g.status==="aborted")return Bs;(h.status==="dirty"||g.status==="dirty")&&i.dirty(),l.set(h.value,g.value)}return{status:i.value,value:l}}}}N9.create=(e,t,i)=>new N9({valueType:t,keyType:e,typeName:Os.ZodMap,...Ws(i)});class Sf extends ci{_parse(t){const{status:i,ctx:r}=this._processInputParams(t);if(r.parsedType!==Jt.set)return $t(r,{code:Nt.invalid_type,expected:Jt.set,received:r.parsedType}),Bs;const o=this._def;o.minSize!==null&&r.data.size<o.minSize.value&&($t(r,{code:Nt.too_small,minimum:o.minSize.value,type:"set",inclusive:!0,exact:!1,message:o.minSize.message}),i.dirty()),o.maxSize!==null&&r.data.size>o.maxSize.value&&($t(r,{code:Nt.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,exact:!1,message:o.maxSize.message}),i.dirty());const c=this._def.valueType;function u(d){const h=new Set;for(const g of d){if(g.status==="aborted")return Bs;g.status==="dirty"&&i.dirty(),h.add(g.value)}return{status:i.value,value:h}}const l=[...r.data.values()].map((d,h)=>c._parse(new Vo(r,d,r.path,h)));return r.common.async?Promise.all(l).then(d=>u(d)):u(l)}min(t,i){return new Sf({...this._def,minSize:{value:t,message:rs.toString(i)}})}max(t,i){return new Sf({...this._def,maxSize:{value:t,message:rs.toString(i)}})}size(t,i){return this.min(t,i).max(t,i)}nonempty(t){return this.min(1,t)}}Sf.create=(e,t)=>new Sf({valueType:e,minSize:null,maxSize:null,typeName:Os.ZodSet,...Ws(t)});class x9 extends ci{get schema(){return this._def.getter()}_parse(t){const{ctx:i}=this._processInputParams(t);return this._def.getter()._parse({data:i.data,path:i.path,parent:i})}}x9.create=(e,t)=>new x9({getter:e,typeName:Os.ZodLazy,...Ws(t)});class w9 extends ci{_parse(t){if(t.data!==this._def.value){const i=this._getOrReturnCtx(t);return $t(i,{received:i.data,code:Nt.invalid_literal,expected:this._def.value}),Bs}return{status:"valid",value:t.data}}get value(){return this._def.value}}w9.create=(e,t)=>new w9({value:e,typeName:Os.ZodLiteral,...Ws(t)});function tM(e,t){return new $d({values:e,typeName:Os.ZodEnum,...Ws(t)})}class $d extends ci{_parse(t){if(typeof t.data!="string"){const i=this._getOrReturnCtx(t),r=this._def.values;return $t(i,{expected:wi.joinValues(r),received:i.parsedType,code:Nt.invalid_type}),Bs}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(t.data)){const i=this._getOrReturnCtx(t),r=this._def.values;return $t(i,{received:i.data,code:Nt.invalid_enum_value,options:r}),Bs}return Sn(t.data)}get options(){return this._def.values}get enum(){const t={};for(const i of this._def.values)t[i]=i;return t}get Values(){const t={};for(const i of this._def.values)t[i]=i;return t}get Enum(){const t={};for(const i of this._def.values)t[i]=i;return t}extract(t,i=this._def){return $d.create(t,{...this._def,...i})}exclude(t,i=this._def){return $d.create(this.options.filter(r=>!t.includes(r)),{...this._def,...i})}}$d.create=tM;class y9 extends ci{_parse(t){const i=wi.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(t);if(r.parsedType!==Jt.string&&r.parsedType!==Jt.number){const o=wi.objectValues(i);return $t(r,{expected:wi.joinValues(o),received:r.parsedType,code:Nt.invalid_type}),Bs}if(this._cache||(this._cache=new Set(wi.getValidEnumValues(this._def.values))),!this._cache.has(t.data)){const o=wi.objectValues(i);return $t(r,{received:r.data,code:Nt.invalid_enum_value,options:o}),Bs}return Sn(t.data)}get enum(){return this._def.values}}y9.create=(e,t)=>new y9({values:e,typeName:Os.ZodNativeEnum,...Ws(t)});class BN extends ci{unwrap(){return this._def.type}_parse(t){const{ctx:i}=this._processInputParams(t);if(i.parsedType!==Jt.promise&&i.common.async===!1)return $t(i,{code:Nt.invalid_type,expected:Jt.promise,received:i.parsedType}),Bs;const r=i.parsedType===Jt.promise?i.data:Promise.resolve(i.data);return Sn(r.then(o=>this._def.type.parseAsync(o,{path:i.path,errorMap:i.common.contextualErrorMap})))}}BN.create=(e,t)=>new BN({type:e,typeName:Os.ZodPromise,...Ws(t)});class zd extends ci{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Os.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){const{status:i,ctx:r}=this._processInputParams(t),o=this._def.effect||null,c={addIssue:u=>{$t(r,u),u.fatal?i.abort():i.dirty()},get path(){return r.path}};if(c.addIssue=c.addIssue.bind(c),o.type==="preprocess"){const u=o.transform(r.data,c);if(r.common.async)return Promise.resolve(u).then(async l=>{if(i.value==="aborted")return Bs;const d=await this._def.schema._parseAsync({data:l,path:r.path,parent:r});return d.status==="aborted"?Bs:d.status==="dirty"||i.value==="dirty"?ef(d.value):d});{if(i.value==="aborted")return Bs;const l=this._def.schema._parseSync({data:u,path:r.path,parent:r});return l.status==="aborted"?Bs:l.status==="dirty"||i.value==="dirty"?ef(l.value):l}}if(o.type==="refinement"){const u=l=>{const d=o.refinement(l,c);if(r.common.async)return Promise.resolve(d);if(d instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return l};if(r.common.async===!1){const l=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return l.status==="aborted"?Bs:(l.status==="dirty"&&i.dirty(),u(l.value),{status:i.value,value:l.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(l=>l.status==="aborted"?Bs:(l.status==="dirty"&&i.dirty(),u(l.value).then(()=>({status:i.value,value:l.value}))))}if(o.type==="transform")if(r.common.async===!1){const u=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!Fd(u))return Bs;const l=o.transform(u.value,c);if(l instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:i.value,value:l}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(u=>Fd(u)?Promise.resolve(o.transform(u.value,c)).then(l=>({status:i.value,value:l})):Bs);wi.assertNever(o)}}zd.create=(e,t,i)=>new zd({schema:e,typeName:Os.ZodEffects,effect:t,...Ws(i)});zd.createWithPreprocess=(e,t,i)=>new zd({schema:t,effect:{type:"preprocess",transform:e},typeName:Os.ZodEffects,...Ws(i)});class Dc extends ci{_parse(t){return this._getType(t)===Jt.undefined?Sn(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}Dc.create=(e,t)=>new Dc({innerType:e,typeName:Os.ZodOptional,...Ws(t)});class Ud extends ci{_parse(t){return this._getType(t)===Jt.null?Sn(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}Ud.create=(e,t)=>new Ud({innerType:e,typeName:Os.ZodNullable,...Ws(t)});class pS extends ci{_parse(t){const{ctx:i}=this._processInputParams(t);let r=i.data;return i.parsedType===Jt.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:i.path,parent:i})}removeDefault(){return this._def.innerType}}pS.create=(e,t)=>new pS({innerType:e,typeName:Os.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...Ws(t)});class dS extends ci{_parse(t){const{ctx:i}=this._processInputParams(t),r={...i,common:{...i.common,issues:[]}},o=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return MN(o)?o.then(c=>({status:"valid",value:c.status==="valid"?c.value:this._def.catchValue({get error(){return new _l(r.common.issues)},input:r.data})})):{status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new _l(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}dS.create=(e,t)=>new dS({innerType:e,typeName:Os.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...Ws(t)});class E9 extends ci{_parse(t){if(this._getType(t)!==Jt.nan){const r=this._getOrReturnCtx(t);return $t(r,{code:Nt.invalid_type,expected:Jt.nan,received:r.parsedType}),Bs}return{status:"valid",value:t.data}}}E9.create=e=>new E9({typeName:Os.ZodNaN,...Ws(e)});class cle extends ci{_parse(t){const{ctx:i}=this._processInputParams(t),r=i.data;return this._def.type._parse({data:r,path:i.path,parent:i})}unwrap(){return this._def.type}}class t3 extends ci{_parse(t){const{status:i,ctx:r}=this._processInputParams(t);if(r.common.async)return(async()=>{const c=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return c.status==="aborted"?Bs:c.status==="dirty"?(i.dirty(),ef(c.value)):this._def.out._parseAsync({data:c.value,path:r.path,parent:r})})();{const o=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return o.status==="aborted"?Bs:o.status==="dirty"?(i.dirty(),{status:"dirty",value:o.value}):this._def.out._parseSync({data:o.value,path:r.path,parent:r})}}static create(t,i){return new t3({in:t,out:i,typeName:Os.ZodPipeline})}}class hS extends ci{_parse(t){const i=this._def.innerType._parse(t),r=o=>(Fd(o)&&(o.value=Object.freeze(o.value)),o);return MN(i)?i.then(o=>r(o)):r(i)}unwrap(){return this._def.innerType}}hS.create=(e,t)=>new hS({innerType:e,typeName:Os.ZodReadonly,...Ws(t)});var Os;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(Os||(Os={}));const es=gl.create,Wa=Bd.create,pd=lS.create,ule=cS.create;Tc.create;const Qr=Co.create,Da=da.create;ON.create;IN.create;qu.create;const D9=FN.create,dd=$d.create;BN.create;Dc.create;Ud.create;const sM=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;function S9(e){const t=e.match(sM);return t?{major:parseInt(t[1],10),minor:parseInt(t[2],10),patch:parseInt(t[3],10),prerelease:t[4]||void 0,build:t[5]||void 0}:null}function mS(e){return sM.test(e)}function ple(e,t){const i=S9(e),r=S9(t);if(!i)throw new Error(`Invalid semver: ${e}`);if(!r)throw new Error(`Invalid semver: ${t}`);if(i.major!==r.major)return i.major>r.major?1:-1;if(i.minor!==r.minor)return i.minor>r.minor?1:-1;if(i.patch!==r.patch)return i.patch>r.patch?1:-1;if(i.prerelease&&!r.prerelease)return-1;if(!i.prerelease&&r.prerelease)return 1;if(i.prerelease&&r.prerelease){const o=i.prerelease.split("."),c=r.prerelease.split(".");for(let u=0;u<Math.max(o.length,c.length);u++){const l=o[u],d=c[u];if(l===void 0)return-1;if(d===void 0)return 1;const h=parseInt(l,10),g=parseInt(d,10);if(!isNaN(h)&&!isNaN(g)){if(h!==g)return h>g?1:-1}else if(isNaN(h))if(isNaN(g)){if(l!==d)return l>d?1:-1}else return 1;else return-1}}return 0}function _f(e,t){return ple(e,t)===-1}const _9=es().refine(e=>mS(e),{message:'Must be a valid semantic version (e.g., "1.0.0", "0.4.0-beta.1")'}),dle=Da({slug:es().min(1).optional(),name:es().min(1),description:es().nullable().optional(),category:dd(["development","planning","custom"]).optional(),tags:Qr(es()).max(10).optional(),authorName:es().optional(),minDevchainVersion:_9.optional(),isOfficial:pd().optional(),version:_9.optional(),publishedAt:es().optional(),changelog:es().optional(),gitCommit:es().optional()}).strict();Da({version:Wa().optional().default(1),exportedAt:es().optional(),prompts:Qr(Da({id:es().uuid().optional(),title:es().min(1),content:es().default(""),version:Wa().optional(),tags:Qr(es()).optional().default([])})).optional().default([]),profiles:Qr(Da({id:es().uuid().optional(),name:es().min(1),provider:Da({id:es().optional(),name:es().min(1)}),familySlug:es().nullable().optional(),options:ule().nullable().optional(),instructions:es().nullable().optional(),temperature:Wa().nullable().optional(),maxTokens:Wa().int().nullable().optional(),providerConfigs:Qr(Da({name:es().min(1),providerName:es().min(1),options:es().nullable().optional(),env:D9(es(),es()).nullable().optional()})).optional()})).optional().default([]),agents:Qr(Da({id:es().uuid().optional(),name:es().min(1),profileId:es().uuid().optional(),description:es().nullable().optional(),providerConfigName:es().nullable().optional()})).optional().default([]),statuses:Qr(Da({id:es().uuid().optional(),label:es().min(1),color:es().min(1),position:Wa().int(),mcpHidden:pd().optional().default(!1)})).optional().default([]),initialPrompt:Da({promptId:es().uuid().optional(),title:es().optional()}).nullable().optional(),projectSettings:Da({initialPromptTitle:es().optional(),autoCleanStatusLabels:Qr(es()).optional(),epicAssignedTemplate:es().optional(),messagePoolSettings:Da({enabled:pd().optional(),delayMs:Wa().optional(),maxWaitMs:Wa().optional(),maxMessages:Wa().optional(),separator:es().optional()}).optional()}).optional(),watchers:Qr(Da({id:es().uuid().optional(),name:es().min(1),description:es().nullable().optional(),enabled:pd(),scope:dd(["all","agent","profile","provider"]),scopeFilterName:es().nullable().optional(),pollIntervalMs:Wa().int(),viewportLines:Wa().int(),idleAfterSeconds:Wa().int().min(0).max(3600).optional().default(0),condition:Da({type:dd(["contains","regex","not_contains"]),pattern:es(),flags:es().optional()}),cooldownMs:Wa().int(),cooldownMode:dd(["time","until_clear"]),eventName:es()})).optional().default([]),subscribers:Qr(Da({id:es().uuid().optional(),name:es().min(1),description:es().nullable().optional(),enabled:pd(),eventName:es(),eventFilter:Da({field:es(),operator:dd(["equals","contains","regex"]),value:es()}).nullable().optional(),actionType:es(),actionInputs:D9(es(),Da({source:dd(["event_field","custom"]),eventField:es().optional(),customValue:es().optional()})),delayMs:Wa().int(),cooldownMs:Wa().int(),retryOnError:pd(),groupName:es().nullable().optional(),position:Wa().int().optional().default(0),priority:Wa().int().optional().default(0)})).optional().default([]),providerSettings:Qr(Da({name:es().min(1),autoCompactThreshold:Wa().int().min(1).max(100).nullable().optional()})).optional(),presets:Qr(Da({name:es().min(1),description:es().nullable().optional(),agentConfigs:Qr(Da({agentName:es().min(1),providerConfigName:es().min(1)}))})).optional().default([]),_manifest:dle.optional()}).strict();var $0="Collapsible",[hle]=Aa($0),[mle,s3]=hle($0),iM=f.forwardRef((e,t)=>{const{__scopeCollapsible:i,open:r,defaultOpen:o,disabled:c,onOpenChange:u,...l}=e,[d,h]=an({prop:r,defaultProp:o??!1,onChange:u,caller:$0});return ae.jsx(mle,{scope:i,disabled:c,contentId:Nr(),open:d,onOpenToggle:f.useCallback(()=>h(g=>!g),[h]),children:ae.jsx(Gt.div,{"data-state":a3(d),"data-disabled":c?"":void 0,...l,ref:t})})});iM.displayName=$0;var aM="CollapsibleTrigger",rM=f.forwardRef((e,t)=>{const{__scopeCollapsible:i,...r}=e,o=s3(aM,i);return ae.jsx(Gt.button,{type:"button","aria-controls":o.contentId,"aria-expanded":o.open||!1,"data-state":a3(o.open),"data-disabled":o.disabled?"":void 0,disabled:o.disabled,...r,ref:t,onClick:gt(e.onClick,o.onOpenToggle)})});rM.displayName=aM;var i3="CollapsibleContent",nM=f.forwardRef((e,t)=>{const{forceMount:i,...r}=e,o=s3(i3,e.__scopeCollapsible);return ae.jsx(_a,{present:i||o.open,children:({present:c})=>ae.jsx(fle,{...r,ref:t,present:c})})});nM.displayName=i3;var fle=f.forwardRef((e,t)=>{const{__scopeCollapsible:i,present:r,children:o,...c}=e,u=s3(i3,i),[l,d]=f.useState(r),h=f.useRef(null),g=Is(t,h),m=f.useRef(0),y=m.current,E=f.useRef(0),C=E.current,D=u.open||l,b=f.useRef(D),w=f.useRef(void 0);return f.useEffect(()=>{const N=requestAnimationFrame(()=>b.current=!1);return()=>cancelAnimationFrame(N)},[]),ea(()=>{const N=h.current;if(N){w.current=w.current||{transitionDuration:N.style.transitionDuration,animationName:N.style.animationName},N.style.transitionDuration="0s",N.style.animationName="none";const x=N.getBoundingClientRect();m.current=x.height,E.current=x.width,b.current||(N.style.transitionDuration=w.current.transitionDuration,N.style.animationName=w.current.animationName),d(r)}},[u.open,r]),ae.jsx(Gt.div,{"data-state":a3(u.open),"data-disabled":u.disabled?"":void 0,id:u.contentId,hidden:!D,...c,ref:g,style:{"--radix-collapsible-content-height":y?`${y}px`:void 0,"--radix-collapsible-content-width":C?`${C}px`:void 0,...e.style},children:D&&o})});function a3(e){return e?"open":"closed"}var gle=iM;const vle=gle,ble=rM,Nle=nM;function C9(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"")}function $b(e,t){const i=e.match(/^(\d+)\.(\d+)\.(\d+)/);if(!i)return"1.0.0";let[,r,o,c]=i.map(Number);switch(t){case"major":r++,o=0,c=0;break;case"minor":o++,c=0;break;case"patch":c++;break}return`${r}.${o}.${c}`}function xle(e,t){const i=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),r=URL.createObjectURL(i),o=document.createElement("a");o.href=r,o.download=t,o.click(),URL.revokeObjectURL(r)}function wle({projectId:e,projectName:t,existingManifest:i,open:r,onClose:o}){const{toast:c}=ii(),[u,l]=f.useState(!1),[d,h]=f.useState(""),[g,m]=f.useState(()=>({slug:(i==null?void 0:i.slug)||C9(t),name:(i==null?void 0:i.name)||t,description:(i==null?void 0:i.description)||"",tags:(i==null?void 0:i.tags)||[],version:$b((i==null?void 0:i.version)||"0.0.0","patch"),changelog:"",authorName:(i==null?void 0:i.authorName)||"",minDevchainVersion:(i==null?void 0:i.minDevchainVersion)||""})),[y,E]=f.useState([]),[C,D]=f.useState(!1);f.useEffect(()=>{r&&(async()=>{try{const k=await fetch(`/api/projects/${e}/export`);if(k.ok){const j=await k.json();j.presets&&Array.isArray(j.presets)&&E(j.presets)}}catch(k){console.error("Failed to fetch export data:",k)}})()},[r,e]);const b=f.useMemo(()=>{const R=(i==null?void 0:i.version)||"0.0.0";return{patch:$b(R,"patch"),minor:$b(R,"minor"),major:$b(R,"major")}},[i==null?void 0:i.version]),w=f.useMemo(()=>g.minDevchainVersion?mS(g.minDevchainVersion):!0,[g.minDevchainVersion]),N=async()=>{try{l(!0);const R={manifest:{...g,category:"development"}},k=await fetch(`/api/projects/${e}/export`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(R)});if(!k.ok){const M=await k.json().catch(()=>({message:"Export failed"}));throw new Error(M.message||"Export failed")}const j=await k.json(),V=`${g.slug||C9(t)}.json`;xle(j,V),c({title:"Export Complete",description:`Downloaded ${V}`}),o()}catch(R){c({title:"Export Failed",description:R instanceof Error?R.message:"Unable to export project",variant:"destructive"})}finally{l(!1)}},x=()=>{var k;const R=d.trim().toLowerCase();R&&!((k=g.tags)!=null&&k.includes(R))&&(m(j=>({...j,tags:[...j.tags||[],R]})),h(""))},_=R=>{m(k=>{var j;return{...k,tags:((j=k.tags)==null?void 0:j.filter(V=>V!==R))||[]}})},P=R=>{R.key==="Enter"&&(R.preventDefault(),x())};return s.jsxDEV(Es,{open:r,onOpenChange:R=>!R&&o(),children:s.jsxDEV(xs,{className:"max-w-lg",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Export Project"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:245,columnNumber:11},this),s.jsxDEV(ls,{children:"Configure template metadata before exporting. These fields will be embedded in the exported JSON."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:246,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:244,columnNumber:9},this),s.jsxDEV(xr,{className:"max-h-[60vh]",children:s.jsxDEV("div",{className:"space-y-4 py-4 pr-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"export-slug",children:"Slug"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:256,columnNumber:15},this),s.jsxDEV(Tt,{id:"export-slug",value:g.slug||"",onChange:R=>m(k=>({...k,slug:R.target.value})),placeholder:"my-template",className:"font-mono text-sm"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:257,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Unique identifier (lowercase, alphanumeric + hyphens)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:264,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:255,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"export-name",children:"Name"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:271,columnNumber:15},this),s.jsxDEV(Tt,{id:"export-name",value:g.name||"",onChange:R=>m(k=>({...k,name:R.target.value})),placeholder:"My Template"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:272,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:270,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"export-description",children:"Description"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:282,columnNumber:15},this),s.jsxDEV(ta,{id:"export-description",value:g.description||"",onChange:R=>m(k=>({...k,description:R.target.value})),placeholder:"A brief description of what this template does",rows:2},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:283,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:281,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"export-tags",children:"Tags"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:294,columnNumber:15},this),s.jsxDEV("div",{className:"flex gap-2",children:[s.jsxDEV(Tt,{id:"export-tags",value:d,onChange:R=>h(R.target.value),onKeyDown:P,placeholder:"Add a tag...",className:"flex-1"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:296,columnNumber:17},this),s.jsxDEV(le,{type:"button",variant:"outline",size:"sm",onClick:x,disabled:!d.trim(),children:"Add"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:304,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:295,columnNumber:15},this),g.tags&&g.tags.length>0&&s.jsxDEV("div",{className:"flex flex-wrap gap-1 mt-2",children:g.tags.map(R=>s.jsxDEV(Je,{variant:"secondary",className:"cursor-pointer hover:bg-destructive hover:text-destructive-foreground",onClick:()=>_(R),children:[R,s.jsxDEV(jl,{className:"h-3 w-3 ml-1"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:324,columnNumber:23},this)]},R,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:317,columnNumber:21},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:315,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:293,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"export-version",children:"Version"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:333,columnNumber:15},this),s.jsxDEV("div",{className:"flex gap-2",children:[s.jsxDEV(Tt,{id:"export-version",value:g.version||"",onChange:R=>m(k=>({...k,version:R.target.value})),placeholder:"1.0.0",className:"font-mono text-sm flex-1"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:335,columnNumber:17},this),s.jsxDEV("div",{className:"flex gap-1",children:[s.jsxDEV(le,{type:"button",variant:"outline",size:"sm",onClick:()=>m(R=>({...R,version:b.patch})),title:"Bump patch version",children:"Patch"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:343,columnNumber:19},this),s.jsxDEV(le,{type:"button",variant:"outline",size:"sm",onClick:()=>m(R=>({...R,version:b.minor})),title:"Bump minor version",children:"Minor"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:357,columnNumber:19},this),s.jsxDEV(le,{type:"button",variant:"outline",size:"sm",onClick:()=>m(R=>({...R,version:b.major})),title:"Bump major version",children:"Major"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:371,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:342,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:334,columnNumber:15},this),(i==null?void 0:i.version)&&s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:["Current version: ",i.version]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:388,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:332,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"export-changelog",children:"Changelog"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:396,columnNumber:15},this),s.jsxDEV(ta,{id:"export-changelog",value:g.changelog||"",onChange:R=>m(k=>({...k,changelog:R.target.value})),placeholder:"What changed in this version?",rows:2},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:397,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:395,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"export-author",children:"Author"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:408,columnNumber:15},this),s.jsxDEV(Tt,{id:"export-author",value:g.authorName||"",onChange:R=>m(k=>({...k,authorName:R.target.value})),placeholder:"Your name or organization"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:409,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:407,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"export-min-version",children:"Min Devchain Version"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:419,columnNumber:15},this),s.jsxDEV(Tt,{id:"export-min-version",value:g.minDevchainVersion||"",onChange:R=>m(k=>({...k,minDevchainVersion:R.target.value})),placeholder:"0.4.0",className:"font-mono text-sm"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:420,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Minimum Devchain version required to use this template"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:429,columnNumber:15},this),g.minDevchainVersion&&!mS(g.minDevchainVersion)&&s.jsxDEV("p",{className:"text-xs text-destructive",children:"Invalid version format. Use semantic versioning (e.g., 0.4.0)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:433,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:418,columnNumber:13},this),s.jsxDEV(vle,{open:C,onOpenChange:D,children:[s.jsxDEV(ble,{className:"flex items-center gap-2 py-2 w-full hover:bg-muted/50 rounded-md px-2",children:[C?s.jsxDEV(Fr,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:443,columnNumber:19},this):s.jsxDEV(jc,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:445,columnNumber:19},this),s.jsxDEV("span",{className:"font-medium",children:"Presets"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:447,columnNumber:17},this),y.length>0&&s.jsxDEV(Je,{variant:"secondary",className:"ml-auto",children:y.length},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:449,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:441,columnNumber:15},this),s.jsxDEV(Nle,{className:"space-y-3 pt-2",children:[s.jsxDEV("div",{className:"flex justify-between items-center",children:[s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Named configurations mapping agents to provider configs"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:456,columnNumber:19},this),s.jsxDEV("a",{href:"/agents",className:"text-xs text-primary hover:underline flex items-center gap-1",children:["Manage presets",s.jsxDEV(d2,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:464,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:459,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:455,columnNumber:17},this),y.length>0?s.jsxDEV("div",{className:"space-y-2",children:y.map(R=>s.jsxDEV("div",{className:"border rounded-md p-3 space-y-2",children:[s.jsxDEV("div",{children:[s.jsxDEV("h4",{className:"font-medium text-sm",children:R.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:474,columnNumber:27},this),R.description&&s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:R.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:476,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:473,columnNumber:25},this),s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:[R.agentConfigs.length," agent",R.agentConfigs.length!==1?"s":""," configured"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:479,columnNumber:25},this)]},R.name,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:472,columnNumber:23},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:470,columnNumber:19},this):s.jsxDEV("div",{className:"border rounded-md p-4 bg-muted/30 text-center",children:s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:["No presets configured."," ",s.jsxDEV("a",{href:"/agents",className:"text-primary hover:underline",children:"Create presets on the Agents page"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:490,columnNumber:23},this)," ","to include them in exports."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:488,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:487,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:454,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:440,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:253,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:252,columnNumber:9},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:o,disabled:u,children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:503,columnNumber:11},this),s.jsxDEV(le,{onClick:N,disabled:u||!w,children:[u?s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:508,columnNumber:15},this):s.jsxDEV(bf,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:510,columnNumber:15},this),"Export"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:506,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:502,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:243,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ExportDialog.tsx",lineNumber:242,columnNumber:5},this)}var[z0]=Aa("Tooltip",[Rc]),U0=Rc(),oM="TooltipProvider",yle=700,fS="tooltip.open",[Ele,r3]=z0(oM),lM=e=>{const{__scopeTooltip:t,delayDuration:i=yle,skipDelayDuration:r=300,disableHoverableContent:o=!1,children:c}=e,u=f.useRef(!0),l=f.useRef(!1),d=f.useRef(0);return f.useEffect(()=>{const h=d.current;return()=>window.clearTimeout(h)},[]),ae.jsx(Ele,{scope:t,isOpenDelayedRef:u,delayDuration:i,onOpen:f.useCallback(()=>{window.clearTimeout(d.current),u.current=!1},[]),onClose:f.useCallback(()=>{window.clearTimeout(d.current),d.current=window.setTimeout(()=>u.current=!0,r)},[r]),isPointerInTransitRef:l,onPointerInTransitChange:f.useCallback(h=>{l.current=h},[]),disableHoverableContent:o,children:c})};lM.displayName=oM;var Cf="Tooltip",[Dle,W0]=z0(Cf),cM=e=>{const{__scopeTooltip:t,children:i,open:r,defaultOpen:o,onOpenChange:c,disableHoverableContent:u,delayDuration:l}=e,d=r3(Cf,e.__scopeTooltip),h=U0(t),[g,m]=f.useState(null),y=Nr(),E=f.useRef(0),C=u??d.disableHoverableContent,D=l??d.delayDuration,b=f.useRef(!1),[w,N]=an({prop:r,defaultProp:o??!1,onChange:k=>{k?(d.onOpen(),document.dispatchEvent(new CustomEvent(fS))):d.onClose(),c==null||c(k)},caller:Cf}),x=f.useMemo(()=>w?b.current?"delayed-open":"instant-open":"closed",[w]),_=f.useCallback(()=>{window.clearTimeout(E.current),E.current=0,b.current=!1,N(!0)},[N]),P=f.useCallback(()=>{window.clearTimeout(E.current),E.current=0,N(!1)},[N]),R=f.useCallback(()=>{window.clearTimeout(E.current),E.current=window.setTimeout(()=>{b.current=!0,N(!0),E.current=0},D)},[D,N]);return f.useEffect(()=>()=>{E.current&&(window.clearTimeout(E.current),E.current=0)},[]),ae.jsx(Hf,{...h,children:ae.jsx(Dle,{scope:t,contentId:y,open:w,stateAttribute:x,trigger:g,onTriggerChange:m,onTriggerEnter:f.useCallback(()=>{d.isOpenDelayedRef.current?R():_()},[d.isOpenDelayedRef,R,_]),onTriggerLeave:f.useCallback(()=>{C?P():(window.clearTimeout(E.current),E.current=0)},[P,C]),onOpen:_,onClose:P,disableHoverableContent:C,children:i})})};cM.displayName=Cf;var gS="TooltipTrigger",uM=f.forwardRef((e,t)=>{const{__scopeTooltip:i,...r}=e,o=W0(gS,i),c=r3(gS,i),u=U0(i),l=f.useRef(null),d=Is(t,l,o.onTriggerChange),h=f.useRef(!1),g=f.useRef(!1),m=f.useCallback(()=>h.current=!1,[]);return f.useEffect(()=>()=>document.removeEventListener("pointerup",m),[m]),ae.jsx(qf,{asChild:!0,...u,children:ae.jsx(Gt.button,{"aria-describedby":o.open?o.contentId:void 0,"data-state":o.stateAttribute,...r,ref:d,onPointerMove:gt(e.onPointerMove,y=>{y.pointerType!=="touch"&&!g.current&&!c.isPointerInTransitRef.current&&(o.onTriggerEnter(),g.current=!0)}),onPointerLeave:gt(e.onPointerLeave,()=>{o.onTriggerLeave(),g.current=!1}),onPointerDown:gt(e.onPointerDown,()=>{o.open&&o.onClose(),h.current=!0,document.addEventListener("pointerup",m,{once:!0})}),onFocus:gt(e.onFocus,()=>{h.current||o.onOpen()}),onBlur:gt(e.onBlur,o.onClose),onClick:gt(e.onClick,o.onClose)})})});uM.displayName=gS;var Sle="TooltipPortal",[jfe,_le]=z0(Sle,{forceMount:void 0}),Wd="TooltipContent",pM=f.forwardRef((e,t)=>{const i=_le(Wd,e.__scopeTooltip),{forceMount:r=i.forceMount,side:o="top",...c}=e,u=W0(Wd,e.__scopeTooltip);return ae.jsx(_a,{present:r||u.open,children:u.disableHoverableContent?ae.jsx(dM,{side:o,...c,ref:t}):ae.jsx(Cle,{side:o,...c,ref:t})})}),Cle=f.forwardRef((e,t)=>{const i=W0(Wd,e.__scopeTooltip),r=r3(Wd,e.__scopeTooltip),o=f.useRef(null),c=Is(t,o),[u,l]=f.useState(null),{trigger:d,onClose:h}=i,g=o.current,{onPointerInTransitChange:m}=r,y=f.useCallback(()=>{l(null),m(!1)},[m]),E=f.useCallback((C,D)=>{const b=C.currentTarget,w={x:C.clientX,y:C.clientY},N=Tle(w,b.getBoundingClientRect()),x=Rle(w,N),_=Ale(D.getBoundingClientRect()),P=Lle([...x,..._]);l(P),m(!0)},[m]);return f.useEffect(()=>()=>y(),[y]),f.useEffect(()=>{if(d&&g){const C=b=>E(b,g),D=b=>E(b,d);return d.addEventListener("pointerleave",C),g.addEventListener("pointerleave",D),()=>{d.removeEventListener("pointerleave",C),g.removeEventListener("pointerleave",D)}}},[d,g,E,y]),f.useEffect(()=>{if(u){const C=D=>{const b=D.target,w={x:D.clientX,y:D.clientY},N=(d==null?void 0:d.contains(b))||(g==null?void 0:g.contains(b)),x=!Mle(w,u);N?y():x&&(y(),h())};return document.addEventListener("pointermove",C),()=>document.removeEventListener("pointermove",C)}},[d,g,u,h,y]),ae.jsx(dM,{...e,ref:c})}),[jle,Ple]=z0(Cf,{isInside:!1}),kle=ck("TooltipContent"),dM=f.forwardRef((e,t)=>{const{__scopeTooltip:i,children:r,"aria-label":o,onEscapeKeyDown:c,onPointerDownOutside:u,...l}=e,d=W0(Wd,i),h=U0(i),{onClose:g}=d;return f.useEffect(()=>(document.addEventListener(fS,g),()=>document.removeEventListener(fS,g)),[g]),f.useEffect(()=>{if(d.trigger){const m=y=>{const E=y.target;E!=null&&E.contains(d.trigger)&&g()};return window.addEventListener("scroll",m,{capture:!0}),()=>window.removeEventListener("scroll",m,{capture:!0})}},[d.trigger,g]),ae.jsx(Gu,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:c,onPointerDownOutside:u,onFocusOutside:m=>m.preventDefault(),onDismiss:g,children:ae.jsxs(i0,{"data-state":d.stateAttribute,...h,...l,ref:t,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[ae.jsx(kle,{children:r}),ae.jsx(jle,{scope:i,isInside:!0,children:ae.jsx(zX,{id:d.contentId,role:"tooltip",children:o||r})})]})})});pM.displayName=Wd;var hM="TooltipArrow",Vle=f.forwardRef((e,t)=>{const{__scopeTooltip:i,...r}=e,o=U0(i);return Ple(hM,i).isInside?null:ae.jsx(a0,{...o,...r,ref:t})});Vle.displayName=hM;function Tle(e,t){const i=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),c=Math.abs(t.left-e.x);switch(Math.min(i,r,o,c)){case c:return"left";case o:return"right";case i:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function Rle(e,t,i=5){const r=[];switch(t){case"top":r.push({x:e.x-i,y:e.y+i},{x:e.x+i,y:e.y+i});break;case"bottom":r.push({x:e.x-i,y:e.y-i},{x:e.x+i,y:e.y-i});break;case"left":r.push({x:e.x+i,y:e.y-i},{x:e.x+i,y:e.y+i});break;case"right":r.push({x:e.x-i,y:e.y-i},{x:e.x-i,y:e.y+i});break}return r}function Ale(e){const{top:t,right:i,bottom:r,left:o}=e;return[{x:o,y:t},{x:i,y:t},{x:i,y:r},{x:o,y:r}]}function Mle(e,t){const{x:i,y:r}=e;let o=!1;for(let c=0,u=t.length-1;c<t.length;u=c++){const l=t[c],d=t[u],h=l.x,g=l.y,m=d.x,y=d.y;g>r!=y>r&&i<(m-h)*(r-g)/(y-g)+h&&(o=!o)}return o}function Lle(e){const t=e.slice();return t.sort((i,r)=>i.x<r.x?-1:i.x>r.x?1:i.y<r.y?-1:i.y>r.y?1:0),Ole(t)}function Ole(e){if(e.length<=1)return e.slice();const t=[];for(let r=0;r<e.length;r++){const o=e[r];for(;t.length>=2;){const c=t[t.length-1],u=t[t.length-2];if((c.x-u.x)*(o.y-u.y)>=(c.y-u.y)*(o.x-u.x))t.pop();else break}t.push(o)}t.pop();const i=[];for(let r=e.length-1;r>=0;r--){const o=e[r];for(;i.length>=2;){const c=i[i.length-1],u=i[i.length-2];if((c.x-u.x)*(o.y-u.y)>=(c.y-u.y)*(o.x-u.x))i.pop();else break}i.push(o)}return i.pop(),t.length===1&&i.length===1&&t[0].x===i[0].x&&t[0].y===i[0].y?t:t.concat(i)}var Ile=lM,Fle=cM,Ble=uM,mM=pM;const Ir=Ile,aa=Fle,ra=Ble,Zi=f.forwardRef(({className:e,sideOffset:t=4,...i},r)=>s.jsxDEV(mM,{ref:r,sideOffset:t,className:we("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...i},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/ui/tooltip.tsx",lineNumber:15,columnNumber:3},void 0));Zi.displayName=mM.displayName;function H0(e,t,i){const r=[];for(const o of e.agentConfigs){const c=t.find(d=>d.name.trim().toLowerCase()===o.agentName.trim().toLowerCase());if(!c){r.push({agentName:o.agentName,configName:o.providerConfigName,reason:"agent_not_found"});continue}(i.get(c.profileId)??[]).some(d=>d.name.trim().toLowerCase()===o.providerConfigName.trim().toLowerCase())||r.push({agentName:o.agentName,configName:o.providerConfigName,reason:"config_not_found"})}return{preset:e,available:r.length===0,missingConfigs:r}}async function $le(e){const t=await fetch(`/api/agents?projectId=${e}`);if(!t.ok)throw new Error("Failed to fetch agents");return t.json()}async function zle(e){const t=await fetch(`/api/profiles?projectId=${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch profiles");return t.json()}async function Ule(){const e=await fetch("/api/providers");if(!e.ok)throw new Error("Failed to fetch providers");return e.json()}async function Wle(e){const t=await fetch(`/api/profiles/${e}/provider-configs`);if(!t.ok)throw new Error("Failed to fetch provider configs");return t.json()}async function Hle(e){const t=await fetch(`/api/projects/${e}/presets`);if(!t.ok)throw new Error("Failed to fetch presets");return t.json()}async function qle(e,t){const i=await fetch(`/api/projects/${e}/presets/apply`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({presetName:t})});if(!i.ok)throw new Error("Failed to apply preset");return i.json()}function Kle({projectId:e,open:t,onOpenChange:i}){var L;const{toast:r}=ii(),o=zs(),c=Dr(),[u,l]=f.useState(!1),[d,h]=f.useState({}),[g,m]=f.useState(""),[y,E]=f.useState(new Map),[C,D]=f.useState(!1),{data:b,isLoading:w}=st({queryKey:["agents",e],queryFn:()=>$le(e),enabled:t&&!!e}),{data:N,isLoading:x}=st({queryKey:["profiles",e],queryFn:()=>zle(e),enabled:t&&!!e}),{isLoading:_}=st({queryKey:["providers"],queryFn:Ule,enabled:t}),{data:P,isLoading:R}=st({queryKey:["project-presets",e],queryFn:()=>Hle(e),enabled:t&&!!e});f.useEffect(()=>{t&&e&&kN(e).then(h).catch(console.error)},[t,e]),f.useEffect(()=>{if(!t||!(b!=null&&b.items))return;const z=b.items,$=new Set(z.map(W=>W.profileId).filter(Boolean));$.size!==0&&(D(!0),Promise.all(Array.from($).map(async W=>{try{const ee=await Wle(W);return{profileId:W,configs:ee}}catch{return{profileId:W,configs:[]}}})).then(W=>{const ee=new Map;W.forEach(({profileId:se,configs:ge})=>{ee.set(se,ge)}),E(ee)}).finally(()=>D(!1)))},[t,b]),f.useEffect(()=>{t||(m(""),E(new Map))},[t]);const k=f.useMemo(()=>{const z=(N==null?void 0:N.items)||[];return new Map(z.map($=>[$.id,$]))},[N]),j=z=>y.get(z.profileId)||[],V=z=>!!d[z],M=z=>k.get(z.profileId),F=z=>z.providerConfigId?j(z).find(W=>W.id===z.providerConfigId):void 0,I=z=>{m(z)},A=async()=>{if(!g){r({title:"No preset selected",description:"Please select a preset to apply",variant:"destructive"});return}const z=P==null?void 0:P.presets.find(se=>se.name===g),$=new Set((z==null?void 0:z.agentConfigs.map(se=>se.agentName.trim().toLowerCase()))||[]),ee=((b==null?void 0:b.items)||[]).filter(se=>$.has(se.name.trim().toLowerCase())&&V(se.id));if(ee.length>0){const se=ee.map(ve=>ve.name).join(", ");if(!window.confirm(`The following agents have active sessions: ${se}. Changing their provider configuration may affect running sessions. Continue?`))return}l(!0);try{const se=await qle(e,g);r({title:"Preset applied",description:`Applied preset to ${se.applied} agent(s)${se.warnings.length>0?` (${se.warnings.length} warning(s))`:""}`,...se.warnings.length>0&&{variant:"default"}}),await o.invalidateQueries({queryKey:["agents",e]}),kN(e).then(h).catch(console.error),m("")}catch(se){r({title:"Error",description:se instanceof Error?se.message:"Failed to apply preset",variant:"destructive"})}finally{l(!1)}},O=w||x||_||C||R,K=(b==null?void 0:b.items)||[],q=(P==null?void 0:P.presets)||[],Y=q.length>0,H=f.useMemo(()=>q.map($=>H0($,K,y)).sort(($,W)=>$.available&&!W.available?-1:!$.available&&W.available?1:$.preset.name.localeCompare(W.preset.name)),[q,K,y]);return s.jsxDEV(Es,{open:t,onOpenChange:i,children:s.jsxDEV(xs,{className:"max-w-3xl",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{className:"flex items-center gap-2",children:[s.jsxDEV(g2,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:336,columnNumber:13},this),"Project Configuration"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:335,columnNumber:11},this),s.jsxDEV(ls,{children:Y?"Select a preset to quickly configure agent providers, or view current assignments below.":"View current agent provider assignments."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:339,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:334,columnNumber:9},this),O?s.jsxDEV("div",{className:"flex items-center justify-center py-8",children:s.jsxDEV(ot,{className:"h-6 w-6 animate-spin text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:348,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:347,columnNumber:11},this):K.length===0?s.jsxDEV("div",{className:"text-center py-8 text-muted-foreground",children:"No agents found in this project."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:351,columnNumber:11},this):Y?s.jsxDEV("div",{className:"space-y-4 max-h-[60vh] overflow-y-auto",children:[Y&&s.jsxDEV("div",{className:"space-y-3 p-4 bg-muted/30 rounded-lg border",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(VP,{className:"h-4 w-4 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:379,columnNumber:19},this),s.jsxDEV(We,{htmlFor:"preset-select",className:"text-sm font-medium",children:"Quick Configuration"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:380,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:378,columnNumber:17},this),s.jsxDEV(Ls,{value:g,onValueChange:I,children:[s.jsxDEV(Ts,{id:"preset-select",children:s.jsxDEV($s,{placeholder:"Select a preset..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:386,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:385,columnNumber:19},this),s.jsxDEV(Rs,{children:H.map(({preset:z,available:$,missingConfigs:W})=>s.jsxDEV(Pt,{value:z.name,children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV("span",{className:we("w-2 h-2 rounded-full flex-shrink-0",$?"bg-green-500":"bg-yellow-500")},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:392,columnNumber:27},this),s.jsxDEV("span",{className:"font-medium",children:z.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:398,columnNumber:27},this),!$&&s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV(VP,{className:"h-3 w-3 text-muted-foreground flex-shrink-0"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:402,columnNumber:33},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:401,columnNumber:31},this),s.jsxDEV(Zi,{children:["Missing configs:"," ",W.map(ee=>`${ee.agentName} → ${ee.configName}`).join(", ")]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:404,columnNumber:31},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:400,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:391,columnNumber:25},this),z.description&&s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:z.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:414,columnNumber:27},this)]},z.name,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:390,columnNumber:23},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:388,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:384,columnNumber:17},this),g&&s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:["This will update"," ",((L=q.find(z=>z.name===g))==null?void 0:L.agentConfigs.length)||0," ","agent(s) to use their preset configurations."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:421,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:377,columnNumber:15},this),s.jsxDEV("div",{children:[s.jsxDEV("h3",{className:"text-sm font-medium mb-2",children:"Current Agent Assignments"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:432,columnNumber:15},this),s.jsxDEV(Pc,{children:[s.jsxDEV(kc,{children:s.jsxDEV(Ci,{children:[s.jsxDEV(ki,{children:"Agent"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:436,columnNumber:21},this),s.jsxDEV(ki,{children:"Profile"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:437,columnNumber:21},this),s.jsxDEV(ki,{children:"Provider Config"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:438,columnNumber:21},this),s.jsxDEV(ki,{className:"w-[80px]"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:439,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:435,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:434,columnNumber:17},this),s.jsxDEV(Vc,{children:K.map(z=>{const $=M(z),W=F(z),ee=V(z.id),se=W?W.name:"Not configured";return s.jsxDEV(Ci,{children:[s.jsxDEV(fs,{children:[s.jsxDEV("div",{className:"font-medium",children:z.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:453,columnNumber:27},this),z.description&&s.jsxDEV("div",{className:"text-sm text-muted-foreground truncate max-w-[200px]",children:z.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:455,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:452,columnNumber:25},this),s.jsxDEV(fs,{children:[s.jsxDEV("span",{className:"text-sm",children:($==null?void 0:$.name)||"Unknown"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:461,columnNumber:27},this),($==null?void 0:$.familySlug)&&s.jsxDEV(Je,{variant:"outline",className:"ml-2",children:$.familySlug},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:463,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:460,columnNumber:25},this),s.jsxDEV(fs,{children:s.jsxDEV("span",{className:"text-sm",children:[se,(W==null?void 0:W.env)&&Object.keys(W.env).length>0&&s.jsxDEV(Je,{variant:"outline",className:"ml-2",children:"env"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:472,columnNumber:31},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:469,columnNumber:27},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:468,columnNumber:25},this),s.jsxDEV(fs,{children:ee&&s.jsxDEV(Je,{variant:"secondary",className:"gap-1",children:[s.jsxDEV(Bi,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:481,columnNumber:31},this),"Active"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:480,columnNumber:29},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:478,columnNumber:25},this)]},z.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:451,columnNumber:23},this)})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:442,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:433,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:431,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:374,columnNumber:11},this):s.jsxDEV(s.Fragment,{children:s.jsxDEV("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[s.jsxDEV(si,{className:"h-12 w-12 text-muted-foreground mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:358,columnNumber:15},this),s.jsxDEV("h3",{className:"text-lg font-medium mb-2",children:"No presets available"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:359,columnNumber:15},this),s.jsxDEV("p",{className:"text-muted-foreground mb-6",children:K.length>0?"This project was created from a template that doesn't include presets, or is a file-based template.":"No presets are stored for this project."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:360,columnNumber:15},this),s.jsxDEV("div",{className:"flex gap-3 justify-center",children:[s.jsxDEV(le,{variant:"outline",onClick:()=>c("/agents"),children:"Go to Agents Page"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:366,columnNumber:17},this),s.jsxDEV(le,{onClick:()=>i(!1),children:"Close"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:369,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:365,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:357,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:356,columnNumber:11},this),Y&&s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:()=>i(!1),disabled:u,children:"Close"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:498,columnNumber:13},this),s.jsxDEV(le,{onClick:A,disabled:u||!g,children:[u&&s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:502,columnNumber:28},this),"Apply Preset"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:501,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:497,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:333,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProjectConfigurationModal.tsx",lineNumber:332,columnNumber:5},this)}function j9({open:e,onOpenChange:t,missingProviders:i,familyAlternatives:r,canImport:o,onConfirm:c,loading:u=!1}){const[l,d]=f.useState({});f.useEffect(()=>{if(e){const C={};for(const D of r)!D.defaultProviderAvailable&&D.hasAlternatives&&(C[D.familySlug]=D.availableProviders[0]);d(C)}},[e,r]);const h=(C,D)=>{d(b=>({...b,[C]:D}))},g=()=>{c(l)},m=r.filter(C=>!C.defaultProviderAvailable),y=m.filter(C=>C.hasAlternatives).every(C=>l[C.familySlug]),E=m.filter(C=>!C.hasAlternatives);return s.jsxDEV(Es,{open:e,onOpenChange:t,children:s.jsxDEV(xs,{className:"max-w-2xl",children:[s.jsxDEV(ds,{children:[s.jsxDEV("div",{className:"flex items-center gap-3",children:[s.jsxDEV("div",{className:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-500/10",children:s.jsxDEV(Bi,{className:"h-5 w-5 text-amber-500"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:115,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:114,columnNumber:13},this),s.jsxDEV(os,{children:"Provider Configuration Required"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:117,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:113,columnNumber:11},this),s.jsxDEV(ls,{className:"text-left",children:"The recommended provider configuration is not possible because some providers are missing. You can map to different providers, but this may lead to unexpected behavior."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:119,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:112,columnNumber:9},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV(Ti,{variant:"default",className:"border-amber-500/50 bg-amber-500/10",children:[s.jsxDEV(Bi,{className:"h-4 w-4 text-amber-500"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:128,columnNumber:13},this),s.jsxDEV(Lr,{className:"text-amber-600 dark:text-amber-400",children:"Missing Providers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:129,columnNumber:13},this),s.jsxDEV(Ri,{className:"text-amber-600 dark:text-amber-400",children:i.join(", ")},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:132,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:127,columnNumber:11},this),m.length>0&&s.jsxDEV("div",{className:"rounded-md border",children:s.jsxDEV(Pc,{children:[s.jsxDEV(kc,{children:s.jsxDEV(Ci,{children:[s.jsxDEV(ki,{children:"Family"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:143,columnNumber:21},this),s.jsxDEV(ki,{children:"Default Provider"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:144,columnNumber:21},this),s.jsxDEV(ki,{children:"Use Instead"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:145,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:142,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:141,columnNumber:17},this),s.jsxDEV(Vc,{children:m.map(C=>s.jsxDEV(Ci,{children:[s.jsxDEV(fs,{className:"font-medium",children:C.familySlug},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:151,columnNumber:23},this),s.jsxDEV(fs,{children:s.jsxDEV("span",{className:"flex items-center gap-2 text-destructive",children:[C.defaultProvider,s.jsxDEV(fl,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:155,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:153,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:152,columnNumber:23},this),s.jsxDEV(fs,{children:C.hasAlternatives?s.jsxDEV(Ls,{value:l[C.familySlug]||"",onValueChange:D=>h(C.familySlug,D),children:[s.jsxDEV(Ts,{className:"w-[180px]",children:s.jsxDEV($s,{placeholder:"Select provider"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:167,columnNumber:31},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:166,columnNumber:29},this),s.jsxDEV(Rs,{children:C.availableProviders.map(D=>s.jsxDEV(Pt,{value:D,children:D},D,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:171,columnNumber:33},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:169,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:160,columnNumber:27},this):s.jsxDEV("span",{className:"flex items-center gap-2 text-amber-600 dark:text-amber-400",children:[s.jsxDEV(Bi,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:179,columnNumber:29},this),"No alternatives"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:178,columnNumber:27},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:158,columnNumber:23},this)]},C.familySlug,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:150,columnNumber:21},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:148,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:140,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:139,columnNumber:13},this),!o&&s.jsxDEV(Ti,{variant:"destructive",children:[s.jsxDEV(fl,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:194,columnNumber:15},this),s.jsxDEV(Lr,{children:"Cannot Import"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:195,columnNumber:15},this),s.jsxDEV(Ri,{children:["One or more required families have no available providers:"," ",E.map(C=>C.familySlug).join(", "),". Install the missing providers (",i.join(", "),") first."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:196,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:193,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:125,columnNumber:9},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:()=>t(!1),disabled:u,children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:206,columnNumber:11},this),o&&s.jsxDEV(le,{onClick:g,disabled:u||!y,children:u?"Importing...":"Import"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:210,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:205,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:111,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/project/ProviderMappingModal.tsx",lineNumber:110,columnNumber:5},this)}async function Gle(){const e=await fetch("/api/projects");if(!e.ok)throw new Error("Failed to fetch projects");const t=await e.json(),i=await Promise.all(t.items.map(async r=>{try{const o=await fetch(`/api/projects/${r.id}/stats`);if(o.ok){const c=await o.json();return{...r,stats:c}}}catch{}return r}));return{...t,items:i}}async function P9(e){try{return(await fetch("/api/fs/stat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e})})).ok?{exists:!0}:{exists:!1}}catch{return{exists:!1}}}async function k9(){const e=await fetch("/api/templates");if(!e.ok)throw new Error("Failed to fetch templates");return(await e.json()).templates.map(i=>({slug:i.slug,name:i.name,source:i.source,versions:i.versions,latestVersion:i.latestVersion}))}async function Yle(e){try{const t=await fetch(`/api/projects/${e}/template-manifest`);return t.ok?await t.json():null}catch{return null}}async function Qle(e){const t={...e,version:e.version||null},i=await fetch("/api/projects/from-template",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok){const r=await i.json().catch(()=>({message:"Failed to create project from template"}));throw new Error(r.message||"Failed to create project from template")}return i.json()}async function Xle(e,t){const i=await fetch(`/api/projects/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok){const r=await i.json().catch(()=>({message:"Failed to update project"}));throw new Error(r.message||"Failed to update project")}return i.json()}async function Jle(e){const t=await fetch(`/api/projects/${e}`,{method:"DELETE"});if(!t.ok){const i=await t.json().catch(()=>({message:"Failed to delete project"}));throw new Error(i.message||"Failed to delete project")}}function Zle(){var _n,Oo;const e=zs(),t=Dr(),i=rn(),{toast:r}=ii(),{selectedProjectId:o,setSelectedProjectId:c}=Gi(),[u,l]=f.useState(!1),[d,h]=f.useState(null),[g,m]=f.useState(null),[y,E]=f.useState({name:"",description:"",rootPath:"",isTemplate:!1}),[C,D]=f.useState(""),[b,w]=f.useState("name"),[N,x]=f.useState("asc"),[_,P]=f.useState({isAbsolute:!0,exists:!1,checked:!1}),[R,k]=f.useState(!1),[j,V]=f.useState("template"),[M,F]=f.useState({name:"",description:"",rootPath:"",templateId:"",version:"",templatePath:""}),[I,A]=f.useState({isAbsolute:!0,exists:!1,checked:!1}),[O,K]=f.useState({isAbsolute:!0,exists:!1,checked:!1,isFile:!1}),[q,Y]=f.useState([]),[H,L]=f.useState(""),{data:z,isLoading:$}=st({queryKey:["projects"],queryFn:Gle}),[W,ee]=f.useState(null),[se,ge]=f.useState(null),[ve,J]=f.useState(null),[G,be]=f.useState(null),[ne,Ee]=f.useState({}),[ce,Be]=f.useState(!1),[je,at]=f.useState(""),[xt,Le]=f.useState(""),[ye,Me]=f.useState(null),[nt,ke]=f.useState(null),{data:rt,isFetching:At}=st({queryKey:["template-manifest",nt==null?void 0:nt.id],queryFn:()=>Yle(nt.id),enabled:!!nt,staleTime:0}),[Zt,St]=f.useState(null),[ts,It]=f.useState(!1),[_e,Qe]=f.useState(null),[Ae,Ye]=f.useState(null),[ut,Dt]=f.useState(!1),[zt,ns]=f.useState(null),[ss,gs]=f.useState(null),{data:us}=st({queryKey:["templates-for-upgrade"],queryFn:k9,staleTime:6e4}),{data:jt}=st({queryKey:["project-templates"],queryFn:k9,enabled:R||ce}),me=f.useCallback(xe=>{const pt=xe.templateMetadata;if(!pt)return null;if(pt.source==="bundled")return xe.bundledUpgradeAvailable??null;if(!pt.version)return null;const _t=us==null?void 0:us.find(Wt=>Wt.slug===pt.slug&&Wt.source==="registry");return!_t||!_t.latestVersion?null:_f(pt.version,_t.latestVersion)?_t.latestVersion:null},[us]),$e=f.useCallback((xe,pt)=>{Me({project:xe,targetVersion:pt})},[]),et=f.useCallback(()=>{Me(null),e.invalidateQueries({queryKey:["projects"]}),e.invalidateQueries({queryKey:["templates-for-upgrade"]})},[e]),[pe,lt]=f.useState(!1),[Et,Ut]=f.useState(!1),[as,ri]=f.useState(!1),[ai,Xs]=f.useState(null),ni=f.useRef(null),ui=f.useRef(!1),pi=f.useRef(""),Ys=yt({mutationFn:({id:xe,data:pt})=>Xle(xe,pt),onMutate:async({id:xe,data:pt})=>{await e.cancelQueries({queryKey:["projects"]});const _t=e.getQueryData(["projects"]);return e.setQueryData(["projects"],Wt=>({...Wt,items:Wt==null?void 0:Wt.items.map(_s=>_s.id===xe?{..._s,...pt,updatedAt:new Date().toISOString()}:_s)})),{previousData:_t}},onSuccess:()=>{e.invalidateQueries({queryKey:["projects"]}),l(!1),m(null),te(),r({title:"Success",description:"Project updated successfully"})},onError:(xe,pt,_t)=>{_t!=null&&_t.previousData&&e.setQueryData(["projects"],_t.previousData),r({title:"Error",description:xe instanceof Error?xe.message:"Failed to update project",variant:"destructive"})}}),Z=yt({mutationFn:Jle,onMutate:async xe=>{await e.cancelQueries({queryKey:["projects"]});const pt=e.getQueryData(["projects"]);let _t;if(o===xe&&(pt!=null&&pt.items)){const Wt=pt.items.filter(_s=>_s.id!==xe);Wt.length>0&&(_t=Wt[0].id)}return e.setQueryData(["projects"],Wt=>({...Wt,items:Wt==null?void 0:Wt.items.filter(_s=>_s.id!==xe)})),{previousData:pt,projectToSelect:_t}},onSuccess:async(xe,pt,_t)=>{_t&&"projectToSelect"in _t&&c(_t.projectToSelect),await e.refetchQueries({queryKey:["projects"]}),h(null),r({title:"Success",description:"Project deleted successfully"})},onError:(xe,pt,_t)=>{_t!=null&&_t.previousData&&e.setQueryData(["projects"],_t.previousData),h(null),r({title:"Error",description:xe instanceof Error?xe.message:"Failed to delete project",variant:"destructive"})}}),fe=yt({mutationFn:Qle,onSuccess:async xe=>{var pt;if(xe.providerMappingRequired){Ye({...M}),Qe(xe.providerMappingRequired),k(!1),It(!0);return}await e.invalidateQueries({queryKey:["projects"]}),k(!1),Ce(),r({title:"Success",description:xe.message||"Project created from template successfully"}),(pt=xe.project)!=null&&pt.id&&(c(xe.project.id),t("/board"))},onError:xe=>{r({title:"Error",description:xe instanceof Error?xe.message:"Failed to create project from template",variant:"destructive"})}}),te=()=>{E({name:"",description:"",rootPath:"",isTemplate:!1}),m(null),P({isAbsolute:!0,exists:!1,checked:!1})},Ce=()=>{F({name:"",description:"",rootPath:"",templateId:"",version:"",templatePath:""}),A({isAbsolute:!0,exists:!1,checked:!1}),K({isAbsolute:!0,exists:!1,checked:!1,isFile:!1}),V("template"),pi.current="",L(""),Y([])},Ue=async xe=>{Ae&&(fe.mutate({...Ae,familyProviderMappings:xe}),It(!1),Qe(null),Ye(null))},Ze=()=>{It(!1),Qe(null),Ye(null),k(!0)},dt=xe=>{gs(xe),Dt(!1),ns(null),Ut(!0)},mt=()=>{Dt(!1),ns(null),gs(null),Be(!0)},Mt=f.useMemo(()=>{if(!(z!=null&&z.items))return[];const xe=z.items.filter(pt=>{var Wt;const _t=C.toLowerCase();return pt.name.toLowerCase().includes(_t)||pt.rootPath.toLowerCase().includes(_t)||((Wt=pt.description)==null?void 0:Wt.toLowerCase().includes(_t))});return xe.sort((pt,_t)=>{let Wt="",_s="";return b==="name"?(Wt=pt.name.toLowerCase(),_s=_t.name.toLowerCase()):b==="rootPath"?(Wt=pt.rootPath.toLowerCase(),_s=_t.rootPath.toLowerCase()):b==="createdAt"&&(Wt=new Date(pt.createdAt).getTime(),_s=new Date(_t.createdAt).getTime()),N==="asc"?Wt>_s?1:-1:Wt<_s?1:-1}),xe},[z,C,b,N]),Vt=async xe=>{E({...y,rootPath:xe});const pt=xe.startsWith("/")||/^[A-Z]:\\/.test(xe);if(P({isAbsolute:pt,exists:!1,checked:!1}),pt&&xe.length>1){const _t=await P9(xe);P({isAbsolute:pt,exists:_t.exists,checked:!0})}},ps=xe=>{b===xe?x(N==="asc"?"desc":"asc"):(w(xe),x("asc"))},it=f.useCallback(xe=>{c(xe.id),t("/board")},[t,c]),de=xe=>{xe.preventDefault(),g&&Ys.mutate({id:g.id,data:y})},Ge=xe=>{m(xe),E({name:xe.name,description:xe.description||"",rootPath:xe.rootPath,isTemplate:!!xe.isTemplate}),l(!0)},ft=xe=>{h(xe)},Ss=async xe=>{F({...M,rootPath:xe});const pt=xe.startsWith("/")||/^[A-Z]:\\/.test(xe);if(A({isAbsolute:pt,exists:!1,checked:!1}),pt&&xe.length>1){const _t=await P9(xe);A({isAbsolute:pt,exists:_t.exists,checked:!0})}},ws=async xe=>{F(_t=>({..._t,templatePath:xe})),pi.current=xe;const pt=xe.startsWith("/")||/^[A-Za-z]:\\/.test(xe);if(K({isAbsolute:pt,exists:!1,checked:!0,isFile:!1,error:pt?void 0:"Path must be absolute (start with / or drive letter)"}),pt&&xe.length>1)try{const _t=await fetch("/api/fs/stat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:xe})});if(pi.current!==xe)return;if(_t.ok){const _s=(await _t.json()).type==="file";K(yi=>({...yi,exists:!0,checked:!0,isFile:_s,error:_s?void 0:"Path must be a file, not a directory"}))}else K(Wt=>({...Wt,exists:!1,checked:!0,isFile:!1,error:"File does not exist"}))}catch{if(pi.current!==xe)return;K(_t=>({..._t,exists:!1,checked:!0,isFile:!1,error:"Failed to validate path"}))}},re=()=>{Ce(),k(!0)},Ve=xe=>{if(xe.preventDefault(),j==="file"){if(!M.templatePath){r({title:"Validation Error",description:"Template file path is required",variant:"destructive"});return}if(!O.checked||!O.exists||!O.isFile){r({title:"Validation Error",description:O.error||"Invalid template file path",variant:"destructive"});return}fe.mutate({name:M.name,description:M.description,rootPath:M.rootPath,templatePath:M.templatePath})}else{if(!M.templateId){r({title:"Validation Error",description:"Template selection is required",variant:"destructive"});return}fe.mutate({name:M.name,description:M.description,rootPath:M.rootPath,templateId:M.templateId,version:M.version,...H&&{presetName:H}})}},ue=f.useMemo(()=>jt==null?void 0:jt.find(xe=>xe.slug===M.templateId),[jt,M.templateId]),Pe=f.useMemo(()=>ue!=null&&ue.versions?[...ue.versions].sort((xe,pt)=>{const _t=Hs=>Hs.split(".").map(Number),[Wt,_s,yi]=_t(xe),[Ni,ma,ir]=_t(pt);return Ni!==Wt?Ni-Wt:ma!==_s?ma-_s:ir-yi}):[],[ue==null?void 0:ue.versions]);f.useEffect(()=>{if(jt&&jt.length>0&&!M.templateId){const xe=jt[0];F(pt=>({...pt,templateId:xe.slug,version:xe.latestVersion||""}))}},[jt,M.templateId]);const ze=async xe=>{var Wt;const pt=jt==null?void 0:jt.find(_s=>_s.slug===xe),_t=(pt==null?void 0:pt.latestVersion)||"";if(F(_s=>({..._s,templateId:xe,version:_t})),L(""),Y([]),pt)try{const _s=pt.source==="registry"&&_t?`/api/templates/${xe}/versions/${_t}`:`/api/templates/${xe}`,yi=await fetch(_s);if(yi.ok){const Ni=await yi.json();if((Wt=Ni.content)!=null&&Wt.presets&&Array.isArray(Ni.content.presets)){const ma=Ni.content.presets.map(ir=>ir.name).reverse();Y(ma)}}}catch(_s){console.error("Failed to fetch template presets:",_s)}};f.useEffect(()=>{(async()=>{var Wt,_s,yi;if(!M.templateId||j==="file")return;const pt=jt==null?void 0:jt.find(Ni=>Ni.slug===M.templateId);if(!pt)return;const _t=pt.source==="registry"&&M.version?`/api/templates/${M.templateId}/versions/${M.version}`:`/api/templates/${M.templateId}`;try{const Ni=await fetch(_t);if(Ni.ok){const ma=await Ni.json();if((Wt=ma.content)!=null&&Wt.presets&&Array.isArray(ma.content.presets)){const ir=ma.content.presets.map(Hs=>Hs.name).reverse();Y(ir)}else Y([]);H&&!((yi=(_s=ma.content)==null?void 0:_s.presets)!=null&&yi.some(ir=>ir.name===H))&&L("")}}catch(Ni){console.error("Failed to fetch template presets:",Ni)}})()},[M.version,M.templateId,jt,H,j]);const Xe=f.useMemo(()=>jt==null?void 0:jt.find(xe=>xe.slug===je),[jt,je]),Ft=f.useMemo(()=>Xe!=null&&Xe.versions?[...Xe.versions].sort((xe,pt)=>{const _t=Hs=>Hs.split(".").map(Number),[Wt,_s,yi]=_t(xe),[Ni,ma,ir]=_t(pt);return Ni!==Wt?Ni-Wt:ma!==_s?ma-_s:ir-yi}):[],[Xe==null?void 0:Xe.versions]),As=xe=>{const pt=jt==null?void 0:jt.find(_t=>_t.slug===xe);at(xe),Le((pt==null?void 0:pt.latestVersion)||"")};f.useEffect(()=>{if(typeof window>"u")return;const xe=new URLSearchParams(i.search||""),pt=xe.get("newProjectPath")||xe.get("projectPath");if(!pt||ui.current)return;const _t=(z==null?void 0:z.items)??[],Wt=yi=>yi.replace(/\/+$/,"");_t.some(yi=>Wt(yi.rootPath)===Wt(pt))||(F(yi=>({...yi,rootPath:pt})),k(!0),ui.current=!0)},[i.search,z==null?void 0:z.items]);const bi=xe=>{ke(xe)},sr=()=>{ke(null)},Ju=xe=>{ge(xe),be(null),Xs(null),J(null),Ee({}),at(""),Le(""),Be(!0)},Zu=()=>{ni.current&&(ni.current.value="",ni.current.click())},Tl=async()=>{if(!(!je||!se))try{ee(se.id),Be(!1);const xe=(Xe==null?void 0:Xe.source)==="registry"&&xt?`/api/templates/${je}/versions/${xt}`:`/api/templates/${je}`,pt=await fetch(xe);if(!pt.ok)throw new Error("Failed to fetch template");const Wt=(await pt.json()).content;J(Wt);const _s=await fetch(`/api/projects/${se.id}/import?dryRun=true`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Wt)});if(!_s.ok){const Ni=await _s.json().catch(()=>({}));throw new Error(Ni.message||"Precheck failed")}const yi=await _s.json();be(yi),yi.providerMappingRequired?(ns(yi.providerMappingRequired),Dt(!0)):Array.isArray(yi.missingProviders)&&yi.missingProviders.length>0?lt(!0):Ut(!0)}catch(xe){r({title:"Import precheck failed",description:xe instanceof Error?xe.message:"Unable to load template",variant:"destructive"}),ge(null),J(null)}finally{ee(null)}},zc=async xe=>{var _t;const pt=(_t=xe.target.files)==null?void 0:_t[0];if(!(!pt||!se))try{Be(!1),ee(se.id);const Wt=await pt.text(),_s=JSON.parse(Wt);J(_s);const yi=await fetch(`/api/projects/${se.id}/import?dryRun=true`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(_s)});if(!yi.ok){const ma=await yi.json().catch(()=>({}));throw new Error(ma.message||"Precheck failed")}const Ni=await yi.json();be(Ni),Ni.providerMappingRequired?(ns(Ni.providerMappingRequired),Dt(!0)):Array.isArray(Ni.missingProviders)&&Ni.missingProviders.length>0?lt(!0):Ut(!0)}catch(Wt){r({title:"Import precheck failed",description:Wt instanceof Error?Wt.message:"Unable to read/validate JSON",variant:"destructive"}),ge(null),J(null)}finally{ee(null)}},nn=async()=>{if(!(!se||!ve))try{ee(se.id);let xe=ve;(Object.keys(ne).length>0||ss)&&(xe={...ve,...Object.keys(ne).length>0&&{statusMappings:ne},...ss&&{familyProviderMappings:ss}});const pt=await fetch(`/api/projects/${se.id}/import`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(xe)});if(!pt.ok){let Wt="Import failed";try{Wt=(await pt.json()).message||Wt}catch{Wt=`Import failed with status ${pt.status}`}throw new Error(Wt)}const _t=await pt.json();Xs(_t),Ut(!1),ri(!0),Ee({}),gs(null),r({title:"Import complete",description:_t.message||"Project replaced."}),e.invalidateQueries({queryKey:["projects"]})}catch(xe){Ut(!1),Ee({}),gs(null),r({title:"Import failed",description:xe instanceof Error?xe.message:"Unable to import project",variant:"destructive"})}finally{ee(null)}},Lo=()=>{d&&Z.mutate(d.id)};return s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"flex items-center justify-between mb-6",children:[s.jsxDEV("h1",{className:"text-3xl font-bold",children:"Projects"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1230,columnNumber:9},this),s.jsxDEV(le,{onClick:re,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1232,columnNumber:11},this),"Create Project"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1231,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1229,columnNumber:7},this),s.jsxDEV(Ps,{className:"mb-4 p-3",children:s.jsxDEV("div",{className:"relative",children:[s.jsxDEV(Qf,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1240,columnNumber:11},this),s.jsxDEV(Tt,{type:"text",placeholder:"Search projects by name, path, or description...",value:C,onChange:xe=>D(xe.target.value),"data-shortcut":"primary-search",className:"pl-10"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1241,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1239,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1238,columnNumber:7},this),$&&s.jsxDEV("div",{className:"flex items-center justify-center py-16",children:s.jsxDEV(ot,{className:"h-8 w-8 animate-spin text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1254,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1253,columnNumber:9},this),z&&Mt.length===0&&s.jsxDEV("div",{className:"flex flex-col items-center justify-center py-16 text-center",children:[s.jsxDEV(Cl,{className:"h-16 w-16 text-muted-foreground mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1260,columnNumber:11},this),s.jsxDEV("h2",{className:"text-xl font-semibold mb-2",children:"No Projects Found"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1261,columnNumber:11},this),s.jsxDEV("p",{className:"text-muted-foreground mb-4",children:C?"Try a different search term or create a new project.":"Get started by creating your first project."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1262,columnNumber:11},this),!C&&s.jsxDEV(le,{onClick:re,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1269,columnNumber:15},this),"Create Project"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1268,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1259,columnNumber:9},this),z&&Mt.length>0&&s.jsxDEV(Ps,{children:[s.jsxDEV("div",{className:"px-4 py-3 border-b flex items-center justify-between",children:[s.jsxDEV("span",{className:"font-medium",children:"All Projects"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1279,columnNumber:13},this),s.jsxDEV("span",{className:"text-sm text-muted-foreground",children:[Mt.length," found"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1280,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1278,columnNumber:11},this),s.jsxDEV("table",{className:"w-full",children:[s.jsxDEV("thead",{className:"bg-muted",children:s.jsxDEV("tr",{children:[s.jsxDEV("th",{className:"px-4 py-3 text-left text-sm font-medium cursor-pointer hover:bg-muted/80",onClick:()=>ps("name"),children:s.jsxDEV("div",{className:"flex items-center gap-2",children:["Name",s.jsxDEV(zD,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1293,columnNumber:21},this),b==="name"&&s.jsxDEV("span",{children:N==="asc"?"↑":"↓"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1294,columnNumber:46},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1291,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1287,columnNumber:17},this),s.jsxDEV("th",{className:"px-4 py-3 text-left text-sm font-medium cursor-pointer hover:bg-muted/80",onClick:()=>ps("rootPath"),children:s.jsxDEV("div",{className:"flex items-center gap-2",children:["Path",s.jsxDEV(zD,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1303,columnNumber:21},this),b==="rootPath"&&s.jsxDEV("span",{children:N==="asc"?"↑":"↓"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1304,columnNumber:50},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1301,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1297,columnNumber:17},this),s.jsxDEV("th",{className:"px-4 py-3 text-left text-sm font-medium",children:"Description"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1307,columnNumber:17},this),s.jsxDEV("th",{className:"px-4 py-3 text-left text-sm font-medium",children:"Template"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1308,columnNumber:17},this),s.jsxDEV("th",{className:"px-4 py-3 text-center text-sm font-medium",children:s.jsxDEV("div",{className:"flex items-center justify-center gap-1",children:[s.jsxDEV(KZ,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1311,columnNumber:21},this),"Epics"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1310,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1309,columnNumber:17},this),s.jsxDEV("th",{className:"px-4 py-3 text-center text-sm font-medium",children:s.jsxDEV("div",{className:"flex items-center justify-center gap-1",children:[s.jsxDEV(b2,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1317,columnNumber:21},this),"Agents"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1316,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1315,columnNumber:17},this),s.jsxDEV("th",{className:"px-4 py-3 text-right text-sm font-medium",children:"Actions"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1321,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1286,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1285,columnNumber:13},this),s.jsxDEV("tbody",{children:Mt.map(xe=>{var pt,_t;return s.jsxDEV("tr",{className:"border-t hover:bg-muted/50",children:[s.jsxDEV("td",{className:"px-4 py-3",children:[s.jsxDEV(le,{variant:"link",className:"p-0 h-auto font-medium",onClick:()=>it(xe),children:xe.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1328,columnNumber:21},this),xe.isTemplate?s.jsxDEV(Je,{variant:"outline",className:"ml-2","aria-label":"Template project",children:"Template"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1336,columnNumber:23},this):null]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1327,columnNumber:19},this),s.jsxDEV("td",{className:"px-4 py-3",children:s.jsxDEV("code",{className:"text-xs text-muted-foreground bg-muted px-2 py-1 rounded",children:xe.rootPath},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1342,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1341,columnNumber:19},this),s.jsxDEV("td",{className:"px-4 py-3 text-sm text-muted-foreground",children:xe.description||"—"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1346,columnNumber:19},this),s.jsxDEV("td",{className:"px-4 py-3 text-sm",children:xe.templateMetadata?s.jsxDEV("span",{className:"flex items-center gap-1.5 flex-wrap",children:[s.jsxDEV("span",{className:"text-muted-foreground",children:xe.templateMetadata.slug},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1352,columnNumber:25},this),xe.templateMetadata.source==="bundled"?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Je,{variant:"outline",className:"text-xs text-muted-foreground",children:"Built-in"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1357,columnNumber:29},this),xe.templateMetadata.version&&s.jsxDEV(Je,{variant:"outline",className:"text-xs text-blue-600 border-blue-600/50",children:["v",xe.templateMetadata.version]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1361,columnNumber:31},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1356,columnNumber:27},this):xe.templateMetadata.version?s.jsxDEV(Je,{variant:"outline",className:"text-xs text-blue-600 border-blue-600/50",children:["v",xe.templateMetadata.version]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1370,columnNumber:27},this):null,(()=>{const Wt=me(xe);return Wt?s.jsxDEV(le,{variant:"ghost",size:"sm",className:"h-5 px-1.5 text-xs text-green-600 hover:text-green-700 hover:bg-green-50",onClick:()=>$e(xe,Wt),title:`Upgrade to v${Wt}`,children:[s.jsxDEV(d0,{className:"h-3 w-3 mr-0.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1388,columnNumber:33},this),"v",Wt]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1381,columnNumber:31},this):null})()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1351,columnNumber:23},this):s.jsxDEV("span",{className:"text-muted-foreground",children:"—"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1396,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1349,columnNumber:19},this),s.jsxDEV("td",{className:"px-4 py-3 text-center",children:s.jsxDEV(Je,{variant:"secondary",children:((pt=xe.stats)==null?void 0:pt.epicsCount)??0},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1400,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1399,columnNumber:19},this),s.jsxDEV("td",{className:"px-4 py-3 text-center",children:s.jsxDEV(Je,{variant:"secondary",children:((_t=xe.stats)==null?void 0:_t.agentsCount)??0},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1403,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1402,columnNumber:19},this),s.jsxDEV("td",{className:"px-4 py-3 text-right",children:s.jsxDEV("div",{className:"flex gap-2 justify-end",children:[xe.isConfigurable&&s.jsxDEV(le,{variant:"ghost",size:"sm",onClick:()=>St(xe),title:"Configure project",children:s.jsxDEV(g2,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1414,columnNumber:27},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1408,columnNumber:25},this),s.jsxDEV(le,{variant:"ghost",size:"sm",onClick:()=>Ge(xe),children:s.jsxDEV(v2,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1418,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1417,columnNumber:23},this),s.jsxDEV(le,{variant:"ghost",size:"sm",onClick:()=>ft(xe),className:"text-destructive hover:text-destructive",children:s.jsxDEV(er,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1426,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1420,columnNumber:23},this),s.jsxDEV(O0,{children:[s.jsxDEV(I0,{asChild:!0,children:s.jsxDEV(le,{variant:"ghost",size:"sm",children:s.jsxDEV(m0,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1431,columnNumber:29},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1430,columnNumber:27},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1429,columnNumber:25},this),s.jsxDEV(lg,{align:"end",children:[s.jsxDEV(Dl,{onClick:()=>Ju(xe),disabled:W===xe.id,children:[W===xe.id?s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1440,columnNumber:31},this):s.jsxDEV(Mu,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1442,columnNumber:31},this),"Import"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1435,columnNumber:27},this),s.jsxDEV(Dl,{onClick:()=>bi(xe),children:[s.jsxDEV(bf,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1447,columnNumber:29},this),"Export"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1446,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1434,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1428,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1406,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1405,columnNumber:19},this)]},xe.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1326,columnNumber:17},this)})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1324,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1284,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1277,columnNumber:9},this),s.jsxDEV(Es,{open:u,onOpenChange:l,children:s.jsxDEV(xs,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Edit Project"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1465,columnNumber:13},this),s.jsxDEV(ls,{children:"Update the project details"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1466,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1464,columnNumber:11},this),s.jsxDEV("form",{onSubmit:de,className:"space-y-4",children:[s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"name",children:"Name *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1470,columnNumber:15},this),s.jsxDEV(Tt,{id:"name",type:"text",value:y.name,onChange:xe=>E({...y,name:xe.target.value}),required:!0,placeholder:"My Project"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1471,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1469,columnNumber:13},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"rootPath",children:"Root Path *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1482,columnNumber:15},this),s.jsxDEV(Tt,{id:"rootPath",type:"text",value:y.rootPath,onChange:xe=>Vt(xe.target.value),required:!0,placeholder:"/absolute/path/to/project",className:`font-mono text-sm ${!_.isAbsolute&&y.rootPath?"border-destructive":_.checked&&!_.exists?"border-yellow-600":""}`},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1483,columnNumber:15},this),!_.isAbsolute&&y.rootPath&&s.jsxDEV(Ti,{variant:"destructive",className:"mt-2",children:[s.jsxDEV(fl,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1500,columnNumber:19},this),s.jsxDEV(Ri,{children:"Path must be absolute (start with / or drive letter)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1501,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1499,columnNumber:17},this),_.isAbsolute&&_.checked&&!_.exists&&s.jsxDEV(Ti,{className:"mt-2 border-yellow-600",children:[s.jsxDEV(Bi,{className:"h-4 w-4 text-yellow-600"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1508,columnNumber:19},this),s.jsxDEV(Ri,{className:"text-yellow-600",children:"Warning: Path does not exist on filesystem"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1509,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1507,columnNumber:17},this),_.isAbsolute&&_.checked&&_.exists&&s.jsxDEV(Ti,{className:"mt-2 border-green-600",children:[s.jsxDEV(Or,{className:"h-4 w-4 text-green-600"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1516,columnNumber:19},this),s.jsxDEV(Ri,{className:"text-green-600",children:"Path exists and is accessible"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1517,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1515,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1481,columnNumber:13},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"description",children:"Description"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1525,columnNumber:15},this),s.jsxDEV(ta,{id:"description",value:y.description,onChange:xe=>E({...y,description:xe.target.value}),placeholder:"Optional project description",rows:3},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1526,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1524,columnNumber:13},this),s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Ra,{id:"isTemplate",checked:!!y.isTemplate,onCheckedChange:xe=>E({...y,isTemplate:!!xe})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1536,columnNumber:15},this),s.jsxDEV(We,{htmlFor:"isTemplate",children:"Mark as template"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1543,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1535,columnNumber:13},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{type:"button",variant:"outline",onClick:()=>{l(!1),te()},children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1547,columnNumber:15},this),s.jsxDEV(le,{type:"submit",disabled:Ys.isPending,children:[Ys.isPending&&s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1558,columnNumber:46},this),"Update"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1557,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1546,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1468,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1463,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1462,columnNumber:7},this),s.jsxDEV(Es,{open:!!d,onOpenChange:xe=>!xe&&h(null),children:s.jsxDEV(xs,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Delete Project"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1570,columnNumber:13},this),s.jsxDEV(ls,{children:["Are you sure you want to delete ",s.jsxDEV("strong",{children:d==null?void 0:d.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1572,columnNumber:47},this),"? This action cannot be undone and will also delete all associated epics, agents, and records."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1571,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1569,columnNumber:11},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:()=>h(null),children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1577,columnNumber:13},this),s.jsxDEV(le,{variant:"destructive",onClick:Lo,disabled:Z.isPending,children:[Z.isPending&&s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1585,columnNumber:44},this),"Delete"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1580,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1576,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1568,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1567,columnNumber:7},this),s.jsxDEV("input",{ref:ni,type:"file",accept:"application/json,.json",className:"hidden",onChange:zc},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1593,columnNumber:7},this),s.jsxDEV(Es,{open:ce,onOpenChange:Be,children:s.jsxDEV(xs,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Import Configuration"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1605,columnNumber:13},this),s.jsxDEV(ls,{children:['Import configuration for "',se==null?void 0:se.name,'" from a template or JSON file.']},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1606,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1604,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{children:"From Template"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1613,columnNumber:15},this),s.jsxDEV("div",{className:"flex flex-col gap-2",children:[s.jsxDEV(Ls,{value:je,onValueChange:As,children:[s.jsxDEV(Ts,{children:s.jsxDEV($s,{placeholder:"Select a template..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1617,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1616,columnNumber:19},this),s.jsxDEV(Rs,{children:jt==null?void 0:jt.map(xe=>s.jsxDEV(Pt,{value:xe.slug,children:s.jsxDEV("span",{className:"flex items-center gap-2",children:[xe.name,s.jsxDEV(Je,{variant:"outline",className:`text-xs ${xe.source==="bundled"?"text-muted-foreground":"text-blue-600 border-blue-600/50"}`,children:xe.source==="bundled"?"Built-in":"Downloaded"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1624,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1622,columnNumber:25},this)},xe.slug,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1621,columnNumber:23},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1619,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1615,columnNumber:17},this),(Xe==null?void 0:Xe.source)==="registry"&&Ft.length>0&&s.jsxDEV(Ls,{value:xt,onValueChange:Le,children:[s.jsxDEV(Ts,{children:s.jsxDEV($s,{placeholder:"Select a version..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1644,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1643,columnNumber:23},this),s.jsxDEV(Rs,{children:Ft.map((xe,pt)=>s.jsxDEV(Pt,{value:xe,children:[xe,pt===0&&" (latest)"]},xe,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1648,columnNumber:27},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1646,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1642,columnNumber:21},this),s.jsxDEV(le,{onClick:Tl,disabled:!je||W===(se==null?void 0:se.id),children:W===(se==null?void 0:se.id)?s.jsxDEV(ot,{className:"h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1661,columnNumber:21},this):"Import"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1656,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1614,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1612,columnNumber:13},this),s.jsxDEV("div",{className:"relative",children:[s.jsxDEV("div",{className:"absolute inset-0 flex items-center",children:s.jsxDEV("span",{className:"w-full border-t"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1670,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1669,columnNumber:15},this),s.jsxDEV("div",{className:"relative flex justify-center text-xs uppercase",children:s.jsxDEV("span",{className:"bg-background px-2 text-muted-foreground",children:"Or"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1673,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1672,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1668,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{children:"From File"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1677,columnNumber:15},this),s.jsxDEV(le,{variant:"outline",className:"w-full",onClick:Zu,children:[s.jsxDEV(bf,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1679,columnNumber:17},this),"Select JSON File..."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1678,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1676,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1611,columnNumber:11},this),s.jsxDEV(Ds,{children:s.jsxDEV(le,{variant:"ghost",onClick:()=>Be(!1),children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1685,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1684,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1603,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1602,columnNumber:7},this),s.jsxDEV(Es,{open:pe,onOpenChange:lt,children:s.jsxDEV(xs,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Providers Required"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1696,columnNumber:13},this),s.jsxDEV(ls,{children:"The selected file requires the following providers to be installed/configured before importing:"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1697,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1695,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-2",children:(_n=G==null?void 0:G.missingProviders)!=null&&_n.length?s.jsxDEV("ul",{className:"list-disc pl-6 text-sm",children:G.missingProviders.map(xe=>s.jsxDEV("li",{children:xe},xe,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1706,columnNumber:19},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1704,columnNumber:15},this):null},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1702,columnNumber:11},this),s.jsxDEV(Ds,{children:s.jsxDEV(le,{onClick:()=>lt(!1),children:"Close"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1712,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1711,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1694,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1693,columnNumber:7},this),s.jsxDEV(Es,{open:Et,onOpenChange:Ut,children:s.jsxDEV(xs,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Replace Project Configuration?"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1721,columnNumber:13},this),s.jsxDEV(ls,{children:"This will REPLACE prompts, profiles, agents, statuses, and the initial session prompt for this project. This action is destructive."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1722,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1720,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-3 text-sm",children:[s.jsxDEV("div",{children:[s.jsxDEV("strong",{children:"To import"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1729,columnNumber:15},this),s.jsxDEV("div",{className:"grid grid-cols-2 gap-2 mt-1",children:G&&Object.entries(G.counts.toImport).map(([xe,pt])=>s.jsxDEV("div",{className:"flex justify-between",children:[s.jsxDEV("span",{className:"capitalize",children:xe},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1734,columnNumber:23},this),s.jsxDEV("span",{children:pt},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1735,columnNumber:23},this)]},xe,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1733,columnNumber:21},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1730,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1728,columnNumber:13},this),s.jsxDEV("div",{children:[s.jsxDEV("strong",{children:"Will delete"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1741,columnNumber:15},this),s.jsxDEV("div",{className:"grid grid-cols-2 gap-2 mt-1",children:G&&Object.entries(G.counts.toDelete).map(([xe,pt])=>s.jsxDEV("div",{className:"flex justify-between",children:[s.jsxDEV("span",{className:"capitalize",children:xe},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1746,columnNumber:23},this),s.jsxDEV("span",{children:pt},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1747,columnNumber:23},this)]},xe,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1745,columnNumber:21},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1742,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1740,columnNumber:13},this),(G==null?void 0:G.unmatchedStatuses)&&G.unmatchedStatuses.length>0&&s.jsxDEV("div",{className:"border-t pt-3 mt-3",children:[s.jsxDEV("strong",{children:"Status Mapping Required"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1754,columnNumber:17},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-1 mb-2",children:"The following statuses have epics but no matching status in the template. Map each to a template status:"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1755,columnNumber:17},this),s.jsxDEV("div",{className:"space-y-2",children:G.unmatchedStatuses.map(xe=>{var pt;return s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV("div",{className:"flex items-center gap-1.5 min-w-[140px]",children:[s.jsxDEV("span",{style:{backgroundColor:xe.color},className:"w-2.5 h-2.5 rounded-full flex-shrink-0"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1763,columnNumber:25},this),s.jsxDEV("span",{className:"truncate",children:xe.label},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1767,columnNumber:25},this),s.jsxDEV("span",{className:"text-xs text-muted-foreground",children:["(",xe.epicCount,")"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1768,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1762,columnNumber:23},this),s.jsxDEV("span",{className:"text-muted-foreground",children:"→"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1770,columnNumber:23},this),s.jsxDEV(Ls,{value:ne[xe.id]||"",onValueChange:_t=>Ee(Wt=>({...Wt,[xe.id]:_t})),children:[s.jsxDEV(Ts,{className:"w-[140px]",children:s.jsxDEV($s,{placeholder:"Select status"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1778,columnNumber:27},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1777,columnNumber:25},this),s.jsxDEV(Rs,{children:(pt=G.templateStatuses)==null?void 0:pt.map(_t=>s.jsxDEV(Pt,{value:_t.label,children:s.jsxDEV("div",{className:"flex items-center gap-1.5",children:[s.jsxDEV("span",{style:{backgroundColor:_t.color},className:"w-2 h-2 rounded-full"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1784,columnNumber:33},this),_t.label]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1783,columnNumber:31},this)},_t.label,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1782,columnNumber:29},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1780,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1771,columnNumber:23},this)]},xe.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1761,columnNumber:21},this)})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1759,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1753,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1727,columnNumber:11},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:()=>Ut(!1),children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1801,columnNumber:13},this),s.jsxDEV(le,{variant:"destructive",onClick:nn,disabled:!!W||(((Oo=G==null?void 0:G.unmatchedStatuses)==null?void 0:Oo.length)??0)>Object.keys(ne).length,children:[W?s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1812,columnNumber:37},this):null,"Replace Project"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1804,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1800,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1719,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1718,columnNumber:7},this),s.jsxDEV(Es,{open:as,onOpenChange:ri,children:s.jsxDEV(xs,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Import Completed"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1823,columnNumber:13},this),s.jsxDEV(ls,{children:"Project configuration was replaced successfully."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1824,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1822,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-3 text-sm",children:[ai!=null&&ai.counts?s.jsxDEV(s.Fragment,{children:[s.jsxDEV("div",{children:[s.jsxDEV("strong",{children:"Imported"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1830,columnNumber:19},this),s.jsxDEV("div",{className:"grid grid-cols-2 gap-2 mt-1",children:Object.entries(ai.counts.imported).map(([xe,pt])=>s.jsxDEV("div",{className:"flex justify-between",children:[s.jsxDEV("span",{className:"capitalize",children:xe},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1834,columnNumber:25},this),s.jsxDEV("span",{children:pt},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1835,columnNumber:25},this)]},xe,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1833,columnNumber:23},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1831,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1829,columnNumber:17},this),s.jsxDEV("div",{children:[s.jsxDEV("strong",{children:"Deleted"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1841,columnNumber:19},this),s.jsxDEV("div",{className:"grid grid-cols-2 gap-2 mt-1",children:Object.entries(ai.counts.deleted).map(([xe,pt])=>s.jsxDEV("div",{className:"flex justify-between",children:[s.jsxDEV("span",{className:"capitalize",children:xe},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1845,columnNumber:25},this),s.jsxDEV("span",{children:pt},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1846,columnNumber:25},this)]},xe,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1844,columnNumber:23},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1842,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1840,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1828,columnNumber:15},this):null,(ai==null?void 0:ai.initialPromptSet)!==void 0&&s.jsxDEV("p",{children:["Initial prompt mapping: ",ai.initialPromptSet?"Set":"Not set"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1854,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1826,columnNumber:11},this),s.jsxDEV(Ds,{children:s.jsxDEV(le,{onClick:()=>ri(!1),children:"Close"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1858,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1857,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1821,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1820,columnNumber:7},this),s.jsxDEV(Es,{open:R,onOpenChange:k,children:s.jsxDEV(xs,{className:"max-w-lg",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Create Project"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1867,columnNumber:13},this),s.jsxDEV(ls,{children:"Create a new project from a predefined template with prompts, profiles, agents, and statuses"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1868,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1866,columnNumber:11},this),s.jsxDEV("form",{onSubmit:Ve,className:"space-y-4",children:[s.jsxDEV(B0,{value:j,onValueChange:xe=>V(xe),children:[s.jsxDEV(cg,{className:"grid w-full grid-cols-2",children:[s.jsxDEV(Sl,{value:"template",children:"From Template"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1879,columnNumber:17},this),s.jsxDEV(Sl,{value:"file",children:"From File"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1880,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1878,columnNumber:15},this),s.jsxDEV(Hu,{value:"template",className:"space-y-4 mt-4",children:[s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"template",children:"Template *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1886,columnNumber:19},this),s.jsxDEV(Ls,{value:M.templateId,onValueChange:ze,required:!0,children:[s.jsxDEV(Ts,{id:"template",children:s.jsxDEV($s,{placeholder:"Select a template"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1893,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1892,columnNumber:21},this),s.jsxDEV(Rs,{children:jt==null?void 0:jt.map(xe=>s.jsxDEV(Pt,{value:xe.slug,children:s.jsxDEV("span",{className:"flex items-center gap-2",children:[xe.name,s.jsxDEV(Je,{variant:"outline",className:`text-xs ${xe.source==="bundled"?"text-muted-foreground":"text-blue-600 border-blue-600/50"}`,children:xe.source==="bundled"?"Built-in":"Downloaded"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1900,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1898,columnNumber:27},this)},xe.slug,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1897,columnNumber:25},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1895,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1887,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1885,columnNumber:17},this),(ue==null?void 0:ue.source)==="registry"&&Pe.length>0&&s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"template-version",children:"Version"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1920,columnNumber:21},this),s.jsxDEV(Ls,{value:M.version,onValueChange:xe=>F({...M,version:xe}),children:[s.jsxDEV(Ts,{id:"template-version",children:s.jsxDEV($s,{placeholder:"Select a version"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1928,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1927,columnNumber:23},this),s.jsxDEV(Rs,{children:Pe.map((xe,pt)=>s.jsxDEV(Pt,{value:xe,children:[xe,pt===0&&" (latest)"]},xe,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1932,columnNumber:27},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1930,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1921,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1919,columnNumber:19},this),q.length>0&&s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"template-preset",children:"Preset (Optional)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1945,columnNumber:21},this),s.jsxDEV(Ls,{value:H||"__none__",onValueChange:xe=>L(xe==="__none__"?"":xe),children:[s.jsxDEV(Ts,{id:"template-preset",children:s.jsxDEV($s,{placeholder:"Use default configuration"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1951,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1950,columnNumber:23},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"__none__",children:"Default configuration"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1954,columnNumber:25},this),q.map(xe=>s.jsxDEV(Pt,{value:xe,children:xe},xe,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1956,columnNumber:27},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1953,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1946,columnNumber:21},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-1",children:"Optionally select a preset to pre-configure agent providers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1962,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1944,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1884,columnNumber:15},this),s.jsxDEV(Hu,{value:"file",className:"space-y-4 mt-4",children:s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"templateFilePath",children:"Template File Path *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1972,columnNumber:19},this),s.jsxDEV(Tt,{id:"templateFilePath",type:"text",value:M.templatePath,onChange:xe=>ws(xe.target.value),required:j==="file",placeholder:"/absolute/path/to/template.json",className:"font-mono text-sm"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1973,columnNumber:19},this),O.checked&&s.jsxDEV("div",{className:"mt-2 space-y-2",children:[!O.isAbsolute&&s.jsxDEV(Ti,{variant:"destructive",children:[s.jsxDEV(fl,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1986,columnNumber:27},this),s.jsxDEV(Ri,{children:"Path must be absolute (start with / or drive letter)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1987,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1985,columnNumber:25},this),O.isAbsolute&&!O.exists&&s.jsxDEV(Ti,{className:"border-yellow-600",children:[s.jsxDEV(Bi,{className:"h-4 w-4 text-yellow-600"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1995,columnNumber:29},this),s.jsxDEV(Ri,{className:"text-yellow-600",children:"File does not exist"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1996,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1994,columnNumber:27},this),O.exists&&!O.isFile&&s.jsxDEV(Ti,{variant:"destructive",children:[s.jsxDEV(fl,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2003,columnNumber:27},this),s.jsxDEV(Ri,{children:"Path must be a file, not a directory"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2004,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2002,columnNumber:25},this),O.exists&&O.isFile&&s.jsxDEV(Ti,{className:"border-green-600",children:[s.jsxDEV(Or,{className:"h-4 w-4 text-green-600"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2009,columnNumber:27},this),s.jsxDEV(Ri,{className:"text-green-600",children:"Valid template file"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2010,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2008,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1983,columnNumber:21},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-2",children:"Enter the absolute path to a JSON template file"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2017,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1971,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1970,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1874,columnNumber:13},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"template-name",children:"Name *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2025,columnNumber:15},this),s.jsxDEV(Tt,{id:"template-name",type:"text",value:M.name,onChange:xe=>F({...M,name:xe.target.value}),required:!0,placeholder:"My Project"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2026,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2024,columnNumber:13},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"template-rootPath",children:"Root Path *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2037,columnNumber:15},this),s.jsxDEV(Tt,{id:"template-rootPath",type:"text",value:M.rootPath,onChange:xe=>Ss(xe.target.value),required:!0,placeholder:"/absolute/path/to/project",className:`font-mono text-sm ${!I.isAbsolute&&M.rootPath?"border-destructive":I.checked&&!I.exists?"border-yellow-600":""}`},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2038,columnNumber:15},this),!I.isAbsolute&&M.rootPath&&s.jsxDEV(Ti,{variant:"destructive",className:"mt-2",children:[s.jsxDEV(fl,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2055,columnNumber:19},this),s.jsxDEV(Ri,{children:"Path must be absolute (start with / or drive letter)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2056,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2054,columnNumber:17},this),I.isAbsolute&&I.checked&&!I.exists&&s.jsxDEV(Ti,{className:"mt-2 border-yellow-600",children:[s.jsxDEV(Bi,{className:"h-4 w-4 text-yellow-600"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2065,columnNumber:21},this),s.jsxDEV(Ri,{className:"text-yellow-600",children:"Warning: Path does not exist on filesystem"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2066,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2064,columnNumber:19},this),I.isAbsolute&&I.checked&&I.exists&&s.jsxDEV(Ti,{className:"mt-2 border-green-600",children:[s.jsxDEV(Or,{className:"h-4 w-4 text-green-600"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2075,columnNumber:21},this),s.jsxDEV(Ri,{className:"text-green-600",children:"Path exists and is accessible"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2076,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2074,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2036,columnNumber:13},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"template-description",children:"Description"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2084,columnNumber:15},this),s.jsxDEV(ta,{id:"template-description",value:M.description,onChange:xe=>F({...M,description:xe.target.value}),placeholder:"Optional project description",rows:3},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2085,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2083,columnNumber:13},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{type:"button",variant:"outline",onClick:()=>{k(!1),Ce()},children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2097,columnNumber:15},this),s.jsxDEV(le,{type:"submit",disabled:fe.isPending,children:[fe.isPending&&s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2109,columnNumber:19},this),"Create"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2107,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2096,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1873,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1865,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1864,columnNumber:7},this),ye&&ye.project.templateMetadata&&s.jsxDEV(Ooe,{projectId:ye.project.id,projectName:ye.project.name,templateSlug:ye.project.templateMetadata.slug,currentVersion:ye.project.templateMetadata.version||"",targetVersion:ye.targetVersion,source:ye.project.templateMetadata.source,open:!0,onClose:et},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2120,columnNumber:9},this),nt&&!At&&s.jsxDEV(wle,{projectId:nt.id,projectName:nt.name,existingManifest:rt??void 0,open:!0,onClose:sr},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2134,columnNumber:9},this),Zt&&s.jsxDEV(Kle,{projectId:Zt.id,open:!0,onOpenChange:xe=>!xe&&St(null)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2145,columnNumber:9},this),_e&&s.jsxDEV(j9,{open:ts,onOpenChange:xe=>{xe||Ze()},missingProviders:_e.missingProviders,familyAlternatives:_e.familyAlternatives,canImport:_e.canImport,onConfirm:Ue,loading:fe.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2154,columnNumber:9},this),zt&&s.jsxDEV(j9,{open:ut,onOpenChange:xe=>{xe||mt()},missingProviders:zt.missingProviders,familyAlternatives:zt.familyAlternatives,canImport:zt.canImport,onConfirm:dt,loading:!!W},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:2171,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProjectsPage.tsx",lineNumber:1228,columnNumber:5},this)}const ece=[{token:"{agent_name}",description:"Current agent name"},{token:"{project_name}",description:"Selected project name"},{token:"{epic_title}",description:"Epic title (empty when no epic)"},{token:"{provider_name}",description:"Provider name (e.g., claude, codex)"},{token:"{profile_name}",description:"Agent profile name"},{token:"{session_id}",description:"Session UUID at launch"},{token:"{session_id_short}",description:"8-char session ID prefix for MCP tools"}];async function tce(e){const t=await fetch(`/api/prompts?projectId=${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch prompts");return t.json()}async function sce(e){const t=await fetch("/api/prompts",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error("Failed to create prompt");return t.json()}async function ice(e,t){const i=await fetch(`/api/prompts/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok)throw new Error("Failed to update prompt");return i.json()}async function ace(e){if(!(await fetch(`/api/prompts/${e}`,{method:"DELETE"})).ok)throw new Error("Failed to delete prompt")}function rce({content:e}){const t=i=>i.split(`
958
- `).map((o,c)=>o.startsWith("# ")?s.jsxDEV("h1",{className:"text-2xl font-bold mb-2",children:o.substring(2)},c,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:96,columnNumber:11},this):o.startsWith("## ")?s.jsxDEV("h2",{className:"text-xl font-semibold mb-2",children:o.substring(3)},c,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:103,columnNumber:11},this):o.startsWith("### ")?s.jsxDEV("h3",{className:"text-lg font-semibold mb-1",children:o.substring(4)},c,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:110,columnNumber:11},this):o.startsWith("- ")?s.jsxDEV("li",{className:"ml-4",children:o.substring(2)},c,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:117,columnNumber:11},this):o.trim()===""?s.jsxDEV("div",{className:"h-2"},c,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:123,columnNumber:16},this):s.jsxDEV("p",{className:"mb-2",children:o},c,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:126,columnNumber:9},this));return s.jsxDEV("div",{className:"prose prose-sm max-w-none dark:prose-invert",children:t(e)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:134,columnNumber:5},this)}function nce({tags:e,suggestions:t,onAddTag:i,onRemoveTag:r,onInputChange:o}){const[c,u]=f.useState(""),[l,d]=f.useState(!1),h=f.useMemo(()=>c?t.filter(E=>E.toLowerCase().includes(c.toLowerCase())&&!e.includes(E)).slice(0,5):[],[c,t,e]),g=E=>{const C=E.trim();C&&!e.includes(C)&&(i(C),u(""),d(!1),o==null||o(""))},m=E=>{E.key==="Enter"||E.key===","?(E.preventDefault(),g(c)):E.key==="Backspace"&&!c&&e.length>0&&r(e[e.length-1])},y=E=>{u(E),o==null||o(E)};return s.jsxDEV("div",{className:"relative",children:[s.jsxDEV("div",{className:"flex flex-wrap gap-2 p-2 border rounded-md min-h-[42px] items-center bg-background",children:[e.map(E=>s.jsxDEV(Je,{variant:"secondary",className:"gap-1",children:[s.jsxDEV(MV,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:191,columnNumber:13},this),E,s.jsxDEV("button",{type:"button",onClick:()=>r(E),className:"ml-1 hover:bg-muted rounded-full",children:s.jsxDEV(jl,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:198,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:193,columnNumber:13},this)]},E,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:190,columnNumber:11},this)),s.jsxDEV("input",{type:"text",value:c,onChange:E=>{y(E.target.value),d(!0)},onKeyDown:m,onFocus:()=>d(!0),onBlur:()=>setTimeout(()=>d(!1),200),placeholder:e.length===0?"Add tags (label or key:value)...":"",className:"flex-1 min-w-[120px] outline-none bg-transparent"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:202,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:188,columnNumber:7},this),l&&h.length>0&&s.jsxDEV("div",{className:"absolute z-10 w-full mt-1 bg-popover border rounded-md shadow-lg",children:h.map(E=>s.jsxDEV("button",{type:"button",onClick:()=>g(E),className:"w-full px-3 py-2 text-left hover:bg-muted transition-colors",children:E},E,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:219,columnNumber:13},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:217,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:187,columnNumber:5},this)}function oce(){const e=zs(),{toast:t}=ii(),{selectedProjectId:i}=Gi(),[r,o]=f.useState(!1),[c,u]=f.useState(null),[l,d]=f.useState({title:"",content:"",tags:[]}),[h,g]=f.useState(""),[m,y]=f.useState(!1),[E,C]=f.useState(""),{data:D,isLoading:b}=st({queryKey:["prompts",i],queryFn:()=>tce(i),enabled:!!i}),w=yt({mutationFn:sce,onMutate:async M=>{await e.cancelQueries({queryKey:["prompts",i]});const F=e.getQueryData(["prompts",i]);return e.setQueryData(["prompts",i],I=>({...I,items:[{id:"temp-"+Date.now(),...M,version:1,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()},...(I==null?void 0:I.items)||[]]})),{previousData:F}},onSuccess:()=>{e.invalidateQueries({queryKey:["prompts",i]}),o(!1),_(),t({title:"Success",description:"Prompt created successfully"})},onError:(M,F,I)=>{I!=null&&I.previousData&&e.setQueryData(["prompts",i],I.previousData),t({title:"Error",description:M instanceof Error?M.message:"Failed to create prompt",variant:"destructive"})}}),N=yt({mutationFn:({id:M,data:F})=>ice(M,F),onMutate:async({id:M,data:F})=>{await e.cancelQueries({queryKey:["prompts",i]});const I=e.getQueryData(["prompts",i]);return e.setQueryData(["prompts",i],A=>({...A,items:A==null?void 0:A.items.map(O=>O.id===M?{...O,...F,updatedAt:new Date().toISOString()}:O)})),{previousData:I}},onSuccess:()=>{e.invalidateQueries({queryKey:["prompts",i]}),o(!1),u(null),_(),t({title:"Success",description:"Prompt updated successfully"})},onError:(M,F,I)=>{I!=null&&I.previousData&&e.setQueryData(["prompts",i],I.previousData),t({title:"Error",description:M instanceof Error?M.message:"Failed to update prompt",variant:"destructive"})}}),x=yt({mutationFn:ace,onMutate:async M=>{await e.cancelQueries({queryKey:["prompts",i]});const F=e.getQueryData(["prompts",i]);return e.setQueryData(["prompts",i],I=>({...I,items:I==null?void 0:I.items.filter(A=>A.id!==M)})),{previousData:F}},onSuccess:()=>{e.invalidateQueries({queryKey:["prompts",i]}),t({title:"Success",description:"Prompt deleted successfully"})},onError:(M,F,I)=>{I!=null&&I.previousData&&e.setQueryData(["prompts",i],I.previousData),t({title:"Error",description:M instanceof Error?M.message:"Failed to delete prompt",variant:"destructive"})}}),_=()=>{d({title:"",content:"",tags:[]}),u(null),y(!1),C("")},P=M=>{if(M.preventDefault(),!i){t({title:"Error",description:"Please select a project first",variant:"destructive"});return}let F=l.tags;if(E.trim()){const I=E.trim();F.includes(I)||(F=[...l.tags,I])}c?N.mutate({id:c.id,data:{title:l.title,content:l.content,tags:F,version:c.version}}):w.mutate({projectId:i,title:l.title,content:l.content,tags:F})},R=async M=>{try{const F=await fetch(`/api/prompts/${M.id}`);if(!F.ok)throw new Error("Failed to fetch prompt");const I=await F.json();u(I),d({title:I.title,content:I.content,tags:[...I.tags]}),C(""),o(!0)}catch{t({title:"Error",description:"Failed to load prompt for editing",variant:"destructive"})}},k=M=>{confirm("Are you sure you want to delete this prompt?")&&x.mutate(M)},j=f.useMemo(()=>(D==null?void 0:D.items.filter(M=>!h||M.tags.includes(h)))||[],[D,h]),V=f.useMemo(()=>Array.from(new Set((D==null?void 0:D.items.flatMap(M=>M.tags))||[])),[D]);return s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"flex justify-between items-center mb-6",children:[s.jsxDEV("h1",{className:"text-3xl font-bold",children:"Prompts"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:462,columnNumber:9},this),s.jsxDEV(le,{onClick:()=>{_(),o(!0)},children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:469,columnNumber:11},this),"Create Prompt"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:463,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:461,columnNumber:7},this),s.jsxDEV("div",{className:"mb-6 flex items-center gap-2",children:[s.jsxDEV(We,{htmlFor:"filter-tag",children:"Filter by tag:"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:475,columnNumber:9},this),s.jsxDEV("select",{id:"filter-tag",value:h,onChange:M=>g(M.target.value),className:"flex h-10 rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[s.jsxDEV("option",{value:"",children:"All"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:482,columnNumber:11},this),V.map(M=>s.jsxDEV("option",{value:M,children:M},M,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:484,columnNumber:13},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:476,columnNumber:9},this),h&&s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>g(""),children:"Clear"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:490,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:474,columnNumber:7},this),b&&s.jsxDEV("p",{className:"text-muted-foreground",children:"Loading..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:496,columnNumber:21},this),D&&s.jsxDEV("div",{className:"grid gap-4",children:[j.map(M=>s.jsxDEV("div",{className:"border rounded-lg p-4 bg-card",children:[s.jsxDEV("div",{className:"flex justify-between items-start mb-3",children:[s.jsxDEV("div",{className:"flex-1",children:[s.jsxDEV("h3",{className:"text-lg font-semibold",children:M.title},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:504,columnNumber:19},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:["Version ",M.version," • Updated"," ",new Date(M.updatedAt).toLocaleDateString()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:505,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:503,columnNumber:17},this),s.jsxDEV("div",{className:"flex gap-2",children:[s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>R(M),children:"Edit"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:511,columnNumber:19},this),s.jsxDEV(le,{variant:"destructive",size:"sm",onClick:()=>k(M.id),children:"Delete"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:514,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:510,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:502,columnNumber:15},this),s.jsxDEV("pre",{className:"bg-muted p-3 rounded-md overflow-auto max-h-48 text-sm mb-3 font-mono whitespace-pre-wrap break-words",children:M.contentPreview},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:519,columnNumber:15},this),M.tags.length>0&&s.jsxDEV("div",{className:"flex flex-wrap gap-2",children:M.tags.map(F=>s.jsxDEV(Je,{variant:"secondary",children:[s.jsxDEV(MV,{className:"h-3 w-3 mr-1"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:526,columnNumber:23},this),F]},F,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:525,columnNumber:21},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:523,columnNumber:17},this)]},M.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:501,columnNumber:13},this)),j.length===0&&s.jsxDEV("p",{className:"text-center text-muted-foreground py-8",children:"No prompts found. Create your first prompt to get started."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:535,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:499,columnNumber:9},this),s.jsxDEV(Es,{open:r,onOpenChange:o,children:s.jsxDEV(xs,{className:"max-w-4xl max-h-[90vh] overflow-y-auto",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:c?"Edit Prompt":"Create Prompt"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:545,columnNumber:13},this),s.jsxDEV(ls,{children:c?"Update prompt details, content, and tags.":"Create a reusable prompt for this project."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:546,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:544,columnNumber:11},this),s.jsxDEV("div",{className:"grid gap-6 md:grid-cols-[minmax(0,1fr)_280px]",children:[s.jsxDEV("form",{onSubmit:P,className:"space-y-4",children:[s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"title",children:"Title *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:555,columnNumber:17},this),s.jsxDEV(Tt,{id:"title",type:"text",value:l.title,onChange:M=>d({...l,title:M.target.value}),required:!0,placeholder:"Enter prompt title"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:556,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:554,columnNumber:15},this),s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"flex justify-between items-center mb-2",children:[s.jsxDEV(We,{htmlFor:"content",children:"Content *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:568,columnNumber:19},this),s.jsxDEV(le,{type:"button",variant:"outline",size:"sm",onClick:()=>y(!m),children:m?"Edit":"Preview"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:569,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:567,columnNumber:17},this),m?s.jsxDEV("div",{className:"border rounded-md p-4 min-h-[300px] bg-muted/50",children:l.content?s.jsxDEV(rce,{content:l.content},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:581,columnNumber:23},this):s.jsxDEV("p",{className:"text-muted-foreground",children:"No content to preview"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:583,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:579,columnNumber:19},this):s.jsxDEV(ta,{id:"content",value:l.content,onChange:M=>d({...l,content:M.target.value}),required:!0,placeholder:"Enter prompt content (supports markdown)",className:"min-h-[300px] font-mono"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:587,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:566,columnNumber:15},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{children:"Tags"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:599,columnNumber:17},this),s.jsxDEV(nce,{tags:l.tags,suggestions:V,onAddTag:M=>d({...l,tags:[...l.tags,M]}),onRemoveTag:M=>d({...l,tags:l.tags.filter(F=>F!==M)}),onInputChange:C},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:600,columnNumber:17},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground mt-1",children:'Supports both single labels (e.g., "bug") and key:value pairs (e.g., "category:feature"). Press Enter or comma to add.'},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:609,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:598,columnNumber:15},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{type:"button",variant:"outline",onClick:()=>{o(!1),_()},children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:616,columnNumber:17},this),s.jsxDEV(le,{type:"submit",disabled:w.isPending||N.isPending,children:c?"Update":"Create"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:626,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:615,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:553,columnNumber:13},this),s.jsxDEV("aside",{className:"rounded-md border bg-muted/50 p-4 space-y-3",children:[s.jsxDEV("div",{children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-foreground",children:"Available Variables"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:637,columnNumber:17},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-1",children:"These placeholders are replaced when a session starts."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:638,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:636,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-3 text-sm",children:ece.map(M=>s.jsxDEV("div",{className:"space-y-1",children:[s.jsxDEV("code",{className:"font-mono text-xs bg-background/60 px-2 py-1 rounded",children:M.token},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:645,columnNumber:21},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:M.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:648,columnNumber:21},this)]},M.token,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:644,columnNumber:19},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:642,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:635,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:552,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:543,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:542,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:460,columnNumber:5},this)}async function lce(e){const t=await fetch(`/api/profiles?projectId=${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch profiles");return t.json()}async function cce(e){const t=await fetch(`/api/prompts?projectId=${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch prompts");return t.json()}async function uce(){const e=await fetch("/api/providers");if(!e.ok)throw new Error("Failed to fetch providers");return e.json()}async function pce(e){const t=await fetch("/api/profiles",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error("Failed to create profile");return t.json()}async function dce(e,t){const i=await fetch(`/api/profiles/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok)throw new Error("Failed to update profile");return i.json()}async function V9(e,t){const i=await fetch(`/api/profiles/${e}/prompts`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({promptIds:t})});if(!i.ok)throw new Error("Failed to update profile prompts");return i.json()}async function hce(e){if(!(await fetch(`/api/profiles/${e}`,{method:"DELETE"})).ok)throw new Error("Failed to delete profile")}async function mce(e){const t=await fetch(`/api/profiles/${e}/provider-configs`);if(!t.ok)throw new Error("Failed to fetch provider configs");return t.json()}async function fce(e,t){const i=await fetch(`/api/profiles/${e}/provider-configs`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok){const r=await i.json().catch(()=>({}));throw new Error(r.message||"Failed to create provider config")}return i.json()}async function gce(e,t){const i=await fetch(`/api/provider-configs/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok){const r=await i.json().catch(()=>({}));throw new Error(r.message||"Failed to update provider config")}return i.json()}async function vce(e){const t=await fetch(`/api/provider-configs/${e}`,{method:"DELETE"});if(!t.ok){const i=await t.json().catch(()=>({}));throw new Error(i.message||"Failed to delete provider config")}}function bce({prompts:e,orderedPromptIds:t,onReorder:i}){const[r,o]=f.useState(null),[c,u]=f.useState(null),l=t.map(C=>e.find(D=>D.id===C)).filter(C=>C!==void 0),d=C=>{o(C)},h=(C,D)=>{if(C.preventDefault(),r===null||r===D)return;const b=[...t],[w]=b.splice(r,1);b.splice(D,0,w),o(D),i(b)},g=()=>{o(null)},m=C=>{if(C===0)return;const D=[...t];[D[C-1],D[C]]=[D[C],D[C-1]],i(D),u(C-1)},y=C=>{if(C===t.length-1)return;const D=[...t];[D[C],D[C+1]]=[D[C+1],D[C]],i(D),u(C+1)},E=C=>{const D=[...t];D.splice(C,1),i(D)};return l.length===0?s.jsxDEV("div",{className:"text-center text-muted-foreground py-4 border rounded-md",children:"No prompts assigned. Select prompts below to add them."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:264,columnNumber:7},this):s.jsxDEV("div",{className:"space-y-2",children:l.map((C,D)=>s.jsxDEV("div",{draggable:!0,onDragStart:()=>d(D),onDragOver:b=>h(b,D),onDragEnd:g,className:we("flex items-center gap-2 p-3 border rounded-md bg-card cursor-move transition-colors",r===D&&"opacity-50",c===D&&"ring-2 ring-ring"),children:[s.jsxDEV(m2,{className:"h-4 w-4 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:285,columnNumber:11},this),s.jsxDEV("div",{className:"flex-1",children:[s.jsxDEV("div",{className:"font-medium text-sm",children:C.title},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:287,columnNumber:13},this),s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:["Order: ",D+1]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:288,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:286,columnNumber:11},this),s.jsxDEV("div",{className:"flex gap-1",children:[s.jsxDEV(le,{type:"button",variant:"ghost",size:"sm",onClick:()=>m(D),disabled:D===0,"aria-label":"Move up",children:s.jsxDEV(d0,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:299,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:291,columnNumber:13},this),s.jsxDEV(le,{type:"button",variant:"ghost",size:"sm",onClick:()=>y(D),disabled:D===l.length-1,"aria-label":"Move down",children:s.jsxDEV(u2,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:309,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:301,columnNumber:13},this),s.jsxDEV(le,{type:"button",variant:"ghost",size:"sm",onClick:()=>E(D),"aria-label":"Remove",children:s.jsxDEV(jl,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:318,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:311,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:290,columnNumber:11},this)]},C.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:273,columnNumber:9},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:271,columnNumber:5},this)}function T9({env:e,onChange:t}){const[i,r]=f.useState(""),[o,c]=f.useState(""),[u,l]=f.useState(null),d=Object.entries(e),h=E=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(E),g=()=>{const E=i.trim();if(!E){l("Key is required");return}if(!h(E)){l("Key must be alphanumeric with underscores, starting with a letter or underscore");return}if(e[E]!==void 0){l("Key already exists");return}l(null),t({...e,[E]:o}),r(""),c("")},m=E=>{const C={...e};delete C[E],t(C)},y=(E,C)=>{t({...e,[E]:C})};return s.jsxDEV("div",{className:"space-y-3",children:[d.length>0&&s.jsxDEV("div",{className:"space-y-2",children:d.map(([E,C])=>s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Tt,{value:E,readOnly:!0,className:"w-1/3 font-mono text-sm bg-muted"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:385,columnNumber:15},this),s.jsxDEV(Tt,{value:C,onChange:D=>y(E,D.target.value),className:"flex-1 font-mono text-sm",placeholder:"Value"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:386,columnNumber:15},this),s.jsxDEV(le,{type:"button",variant:"ghost",size:"sm",onClick:()=>m(E),"aria-label":"Remove",children:s.jsxDEV(jl,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:399,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:392,columnNumber:15},this)]},E,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:384,columnNumber:13},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:382,columnNumber:9},this),s.jsxDEV("div",{className:"flex items-start gap-2",children:[s.jsxDEV("div",{className:"w-1/3",children:[s.jsxDEV(Tt,{value:i,onChange:E=>{r(E.target.value),l(null)},className:"font-mono text-sm",placeholder:"NEW_KEY"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:407,columnNumber:11},this),u&&s.jsxDEV("p",{className:"text-xs text-destructive mt-1",children:u},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:416,columnNumber:24},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:406,columnNumber:9},this),s.jsxDEV(Tt,{value:o,onChange:E=>c(E.target.value),className:"flex-1 font-mono text-sm",placeholder:"value",onKeyDown:E=>{E.key==="Enter"&&(E.preventDefault(),g())}},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:418,columnNumber:9},this),s.jsxDEV(le,{type:"button",variant:"outline",size:"sm",onClick:g,children:s.jsxDEV(qi,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:431,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:430,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:405,columnNumber:7},this),d.length===0&&s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"No environment variables. Add key-value pairs that will be set when launching sessions."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:435,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:380,columnNumber:5},this)}function Nce({profileId:e,providers:t,providersById:i,onConfigChange:r}){const o=zs(),{toast:c}=ii(),[u,l]=f.useState(!0),[d,h]=f.useState(!1),[g,m]=f.useState(null),[y,E]=f.useState([]),[C,D]=f.useState(null),[b,w]=f.useState({providerId:"",name:"",options:"",env:{}}),{data:N,isLoading:x}=st({queryKey:["provider-configs",e],queryFn:()=>mce(e),enabled:!!e});f.useEffect(()=>{N&&E(N.map($=>$.id))},[N]);const _=yt({mutationFn:$=>fce(e,$),onSuccess:()=>{o.invalidateQueries({queryKey:["provider-configs",e]}),h(!1),j(),c({title:"Success",description:"Provider configuration created"}),r==null||r()},onError:$=>{c({title:"Error",description:$ instanceof Error?$.message:"Failed to create configuration",variant:"destructive"})}}),P=yt({mutationFn:({id:$,data:W})=>gce($,W),onSuccess:()=>{o.invalidateQueries({queryKey:["provider-configs",e]}),m(null),j(),c({title:"Success",description:"Provider configuration updated"}),r==null||r()},onError:$=>{c({title:"Error",description:$ instanceof Error?$.message:"Failed to update configuration",variant:"destructive"})}}),R=yt({mutationFn:vce,onSuccess:()=>{o.invalidateQueries({queryKey:["provider-configs",e]}),c({title:"Success",description:"Provider configuration deleted"}),r==null||r()},onError:$=>{c({title:"Error",description:$ instanceof Error?$.message:"Failed to delete configuration",variant:"destructive"})}}),k=yt({mutationFn:async $=>{const W=await fetch(`/api/profiles/${e}/provider-configs/order`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({configIds:$})});if(!W.ok){const ee=await W.json();throw new Error(ee.message||"Failed to reorder configurations")}return W.json()},onSuccess:()=>{o.invalidateQueries({queryKey:["provider-configs",e]}),c({title:"Success",description:"Provider configurations reordered"}),r==null||r()},onError:$=>{c({title:"Error",description:$ instanceof Error?$.message:"Failed to reorder configurations",variant:"destructive"}),N&&E(N.map(W=>W.id))}}),j=()=>{w({providerId:"",name:"",options:"",env:{}})},V=()=>{if(!b.providerId){c({title:"Error",description:"Please select a provider",variant:"destructive"});return}const $=b.name.trim();if($&&(N!=null&&N.some(W=>W.name===$))){c({title:"Error",description:"A configuration with this name already exists",variant:"destructive"});return}_.mutate({providerId:b.providerId,name:$||void 0,options:b.options.trim()||null,env:Object.keys(b.env).length>0?b.env:null})},M=$=>{const W=b.name.trim();if(W&&(N!=null&&N.some(ee=>ee.id!==$&&ee.name===W))){c({title:"Error",description:"A configuration with this name already exists",variant:"destructive"});return}P.mutate({id:$,data:{name:W||void 0,options:b.options.trim()||null,env:Object.keys(b.env).length>0?b.env:null}})},F=$=>{confirm("Are you sure you want to delete this configuration?")&&R.mutate($)},I=$=>{m($.id),w({providerId:$.providerId,name:$.name||"",options:$.options||"",env:$.env||{}}),h(!1)},A=()=>{m(null),j()},O=$=>{D($)},K=($,W)=>{if($.preventDefault(),C===null||C===W)return;const ee=[...y],[se]=ee.splice(C,1);ee.splice(W,0,se),E(ee),D(W)},q=()=>{D(null),k.mutate(y)},Y=$=>{if($===0)return;const W=[...y];[W[$-1],W[$]]=[W[$],W[$-1]],E(W),k.mutate(W)},H=$=>{if($===y.length-1)return;const W=[...y];[W[$],W[$+1]]=[W[$+1],W[$]],E(W),k.mutate(W)},L=y.map($=>N==null?void 0:N.find(W=>W.id===$)).filter($=>$!==void 0),z=t;return s.jsxDEV("div",{className:"border rounded-lg",children:[s.jsxDEV("button",{type:"button",onClick:()=>l(!u),className:"w-full flex items-center justify-between p-3 hover:bg-muted/50 transition-colors",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(f2,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:701,columnNumber:11},this),s.jsxDEV("span",{className:"font-medium",children:"Provider Configurations"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:702,columnNumber:11},this),s.jsxDEV(Je,{variant:"secondary",children:(N==null?void 0:N.length)||0},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:703,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:700,columnNumber:9},this),u?s.jsxDEV(Gf,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:705,columnNumber:21},this):s.jsxDEV(Fr,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:705,columnNumber:57},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:695,columnNumber:7},this),u&&s.jsxDEV("div",{className:"p-3 pt-0 space-y-3",children:[x&&s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Loading..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:710,columnNumber:25},this),L.length===0&&!d&&s.jsxDEV("p",{className:"text-sm text-muted-foreground py-2",children:"No provider configurations. Add one to enable agent launching."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:713,columnNumber:13},this),L.map(($,W)=>{var ee,se;return s.jsxDEV("div",{draggable:!k.isPending,onDragStart:()=>!k.isPending&&O(W),onDragOver:ge=>!k.isPending&&K(ge,W),onDragEnd:q,className:we("group border rounded-md p-3 space-y-3 transition-colors",C===W&&"opacity-50",k.isPending&&"cursor-not-allowed opacity-70"),children:g===$.id?s.jsxDEV(s.Fragment,{children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Je,{children:((ee=i.get($.providerId))==null?void 0:ee.name)||"Unknown"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:736,columnNumber:21},this),s.jsxDEV("span",{className:"text-sm text-muted-foreground",children:"(editing)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:737,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:735,columnNumber:19},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"text-xs",children:"Name *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:740,columnNumber:21},this),s.jsxDEV(Tt,{value:b.name,onChange:ge=>w({...b,name:ge.target.value}),placeholder:"e.g., claude-glm, claude-default",className:"text-sm h-9"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:741,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:739,columnNumber:19},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"text-xs",children:"Options"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:749,columnNumber:21},this),s.jsxDEV(ta,{value:b.options,onChange:ge=>w({...b,options:ge.target.value}),placeholder:"--model claude-3 --max-tokens 4000",rows:2,className:"text-sm"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:750,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:748,columnNumber:19},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"text-xs",children:"Environment Variables"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:759,columnNumber:21},this),s.jsxDEV(T9,{env:b.env,onChange:ge=>w({...b,env:ge})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:760,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:758,columnNumber:19},this),s.jsxDEV("div",{className:"flex gap-2",children:[s.jsxDEV(le,{type:"button",size:"sm",onClick:()=>M($.id),disabled:P.isPending||!b.name.trim(),children:"Save"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:766,columnNumber:21},this),s.jsxDEV(le,{type:"button",variant:"outline",size:"sm",onClick:A,children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:774,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:765,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:734,columnNumber:17},this):s.jsxDEV(s.Fragment,{children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(m2,{className:"h-4 w-4 text-muted-foreground cursor-move"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:783,columnNumber:21},this),s.jsxDEV("div",{className:"flex-1 flex items-center justify-between",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV("span",{className:"font-medium",children:$.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:786,columnNumber:25},this),s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:((se=i.get($.providerId))==null?void 0:se.name)||"Unknown"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:787,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:785,columnNumber:23},this),s.jsxDEV("div",{className:"flex gap-1 relative",children:[s.jsxDEV("span",{className:"absolute right-full mr-1 inline-flex items-center opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 transition-opacity duration-200",children:[s.jsxDEV(le,{type:"button",variant:"ghost",size:"sm",onClick:()=>Y(W),disabled:W===0||k.isPending,"aria-label":"Move up",children:s.jsxDEV(d0,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:801,columnNumber:29},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:793,columnNumber:27},this),s.jsxDEV(le,{type:"button",variant:"ghost",size:"sm",onClick:()=>H(W),disabled:W===L.length-1||k.isPending,"aria-label":"Move down",children:s.jsxDEV(u2,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:813,columnNumber:29},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:803,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:792,columnNumber:25},this),s.jsxDEV(le,{type:"button",variant:"ghost",size:"sm",onClick:()=>I($),children:"Edit"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:816,columnNumber:25},this),s.jsxDEV(le,{type:"button",variant:"ghost",size:"sm",onClick:()=>F($.id),disabled:R.isPending,children:s.jsxDEV(er,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:831,columnNumber:27},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:824,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:791,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:784,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:782,columnNumber:19},this),$.options&&s.jsxDEV("div",{className:"text-sm",children:[s.jsxDEV("span",{className:"text-muted-foreground",children:"Options:"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:838,columnNumber:23},this)," ",s.jsxDEV("span",{className:"font-mono",children:$.options},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:839,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:837,columnNumber:21},this),$.env&&Object.keys($.env).length>0&&s.jsxDEV("div",{className:"text-sm",children:[s.jsxDEV("span",{className:"text-muted-foreground",children:"Env:"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:844,columnNumber:23},this)," ",s.jsxDEV("span",{className:"font-mono",children:Object.keys($.env).join(", ")},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:845,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:843,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:781,columnNumber:17},this)},$.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:720,columnNumber:13},this)}),d&&s.jsxDEV("div",{className:"border rounded-md p-3 space-y-3 bg-muted/30",children:[s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"text-xs",children:"Provider *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:857,columnNumber:17},this),s.jsxDEV("select",{value:b.providerId,onChange:$=>{const W=$.target.value,ee=i.get(W),se=(ee==null?void 0:ee.name)||"";w({...b,providerId:W,name:se})},className:"flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm",children:[s.jsxDEV("option",{value:"",children:"-- Select provider --"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:869,columnNumber:19},this),z.map($=>s.jsxDEV("option",{value:$.id,children:$.name},$.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:871,columnNumber:21},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:858,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:856,columnNumber:15},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"text-xs",children:"Name"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:878,columnNumber:17},this),s.jsxDEV(Tt,{value:b.name,onChange:$=>w({...b,name:$.target.value}),placeholder:"e.g., claude-glm, claude-default (auto-generated if empty)",className:"text-sm h-9"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:879,columnNumber:17},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-1",children:"Unique name for this configuration. Leave empty to auto-generate."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:885,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:877,columnNumber:15},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"text-xs",children:"Options"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:890,columnNumber:17},this),s.jsxDEV(ta,{value:b.options,onChange:$=>w({...b,options:$.target.value}),placeholder:"--model claude-3 --max-tokens 4000",rows:2,className:"text-sm"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:891,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:889,columnNumber:15},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"text-xs",children:"Environment Variables"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:900,columnNumber:17},this),s.jsxDEV(T9,{env:b.env,onChange:$=>w({...b,env:$})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:901,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:899,columnNumber:15},this),s.jsxDEV("div",{className:"flex gap-2",children:[s.jsxDEV(le,{type:"button",size:"sm",onClick:V,disabled:_.isPending||!b.providerId||!b.name.trim(),children:"Add Configuration"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:907,columnNumber:17},this),s.jsxDEV(le,{type:"button",variant:"outline",size:"sm",onClick:()=>{h(!1),j()},children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:917,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:906,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:855,columnNumber:13},this),!d&&s.jsxDEV(le,{type:"button",variant:"outline",size:"sm",onClick:()=>{h(!0),m(null),j()},className:"w-full",children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:945,columnNumber:15},this),"Add Provider Configuration"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:934,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:709,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:694,columnNumber:5},this)}function xce(){const e=zs(),{toast:t}=ii(),{selectedProjectId:i}=Gi(),[r,o]=f.useState(!1),[c,u]=f.useState(null),[l,d]=f.useState({name:"",familySlug:"",instructions:"",orderedPromptIds:[]}),{data:h,isLoading:g}=st({queryKey:["profiles",i],queryFn:()=>lce(i),enabled:!!i}),{data:m}=st({queryKey:["prompts",i],queryFn:()=>cce(i),enabled:!!i}),{data:y}=st({queryKey:["providers"],queryFn:uce}),E=f.useMemo(()=>{const k=new Map;return y!=null&&y.items&&y.items.forEach(j=>{k.set(j.id,j)}),k},[y]),C=yt({mutationFn:pce,onMutate:async k=>{await e.cancelQueries({queryKey:["profiles",i]});const j=e.getQueryData(["profiles",i]);return e.setQueryData(["profiles",i],V=>({...V,items:[{id:"temp-"+Date.now(),name:k.name,familySlug:k.familySlug??null,instructions:k.instructions??null,prompts:[],agentCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()},...(V==null?void 0:V.items)||[]]})),{previousData:j}},onSuccess:async k=>{try{l.orderedPromptIds.length>0&&(k!=null&&k.id)&&await V9(k.id,l.orderedPromptIds)}catch(j){t({title:"Warning",description:j instanceof Error?j.message:"Failed to persist prompt ordering",variant:"destructive"})}finally{e.invalidateQueries({queryKey:["profiles",i]}),o(!1),w(),t({title:"Success",description:"Profile created successfully"})}},onError:(k,j,V)=>{V!=null&&V.previousData&&e.setQueryData(["profiles",i],V.previousData),t({title:"Error",description:k instanceof Error?k.message:"Failed to create profile",variant:"destructive"})}}),D=yt({mutationFn:({id:k,data:j})=>dce(k,j),onMutate:async({id:k,data:j})=>{await e.cancelQueries({queryKey:["profiles",i]});const V=e.getQueryData(["profiles",i]);return e.setQueryData(["profiles",i],M=>({...M,items:((M==null?void 0:M.items)||[]).map(F=>F.id===k?{...F,name:j.name??F.name,instructions:j.instructions!==void 0?j.instructions??null:F.instructions,updatedAt:new Date().toISOString()}:F)})),{previousData:V}},onSuccess:async(k,j)=>{try{l.orderedPromptIds.length>=0&&(j!=null&&j.id)&&await V9(j.id,l.orderedPromptIds)}catch(V){t({title:"Warning",description:V instanceof Error?V.message:"Failed to persist prompt ordering",variant:"destructive"})}finally{e.invalidateQueries({queryKey:["profiles",i]}),o(!1),u(null),w(),t({title:"Success",description:"Profile updated successfully"})}},onError:(k,j,V)=>{V!=null&&V.previousData&&e.setQueryData(["profiles",i],V.previousData),t({title:"Error",description:k instanceof Error?k.message:"Failed to update profile",variant:"destructive"})}}),b=yt({mutationFn:hce,onMutate:async k=>{await e.cancelQueries({queryKey:["profiles",i]});const j=e.getQueryData(["profiles",i]);return e.setQueryData(["profiles",i],V=>({...V,items:((V==null?void 0:V.items)||[]).filter(M=>M.id!==k)})),{previousData:j}},onSuccess:()=>{e.invalidateQueries({queryKey:["profiles",i]}),t({title:"Success",description:"Profile deleted successfully"})},onError:(k,j,V)=>{V!=null&&V.previousData&&e.setQueryData(["profiles",i],V.previousData),t({title:"Error",description:k instanceof Error?k.message:"Failed to delete profile",variant:"destructive"})}}),w=()=>{d({name:"",familySlug:"",instructions:"",orderedPromptIds:[]}),u(null)},N=k=>{if(k.preventDefault(),!i){t({title:"Error",description:"Please select a project first",variant:"destructive"});return}const j=l.instructions.trim().length>0?l.instructions:null,V=l.familySlug.trim(),M=V.length>0?V:null;c?D.mutate({id:c.id,data:{name:l.name,familySlug:M,promptIds:l.orderedPromptIds,instructions:j}}):C.mutate({projectId:i,name:l.name,familySlug:M,promptIds:l.orderedPromptIds,instructions:j})},x=k=>{u(k),d({name:k.name,familySlug:k.familySlug??"",instructions:k.instructions??"",orderedPromptIds:(k.prompts||[]).sort((j,V)=>j.order-V.order).map(j=>j.promptId)}),o(!0)},_=(k,j)=>{if(j>0){t({title:"Cannot delete",description:`This profile is used by ${j} agent(s). Remove agent assignments first.`,variant:"destructive"});return}confirm("Are you sure you want to delete this profile?")&&b.mutate(k)},P=f.useMemo(()=>(m==null?void 0:m.items)||[],[m]),R=f.useMemo(()=>P.filter(k=>!l.orderedPromptIds.includes(k.id)),[P,l.orderedPromptIds]);return s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"flex justify-between items-center mb-6",children:[s.jsxDEV("h1",{className:"text-3xl font-bold",children:"Agent Profiles"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1251,columnNumber:9},this),s.jsxDEV(le,{onClick:()=>{w(),o(!0)},children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1258,columnNumber:11},this),"Create Profile"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1252,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1250,columnNumber:7},this),g&&s.jsxDEV("p",{className:"text-muted-foreground",children:"Loading..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1263,columnNumber:27},this),i&&h&&s.jsxDEV("div",{className:"grid gap-4",children:[h.items.map(k=>{var j;return s.jsxDEV("div",{className:"border rounded-lg p-4 bg-card",children:[s.jsxDEV("div",{className:"flex justify-between items-start mb-3",children:[s.jsxDEV("div",{className:"flex-1",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-1",children:[s.jsxDEV("h3",{className:"text-lg font-semibold",children:[k.name,k.familySlug&&s.jsxDEV("span",{className:"ml-2 text-sm font-normal text-muted-foreground",children:["(",k.familySlug,")"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1275,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1272,columnNumber:21},this),(j=k.provider)!=null&&j.name?s.jsxDEV(Je,{variant:"secondary",children:k.provider.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1281,columnNumber:23},this):s.jsxDEV(Je,{variant:"outline",className:"text-amber-600 border-amber-400 gap-1",children:[s.jsxDEV(si,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1284,columnNumber:25},this),"No provider config"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1283,columnNumber:23},this),k.agentCount&&k.agentCount>0&&s.jsxDEV(Je,{variant:"outline",className:"gap-1",children:[s.jsxDEV(b2,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1291,columnNumber:25},this),k.agentCount," agent",k.agentCount!==1?"s":""]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1290,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1271,columnNumber:19},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:[(k.prompts||[]).length," prompt",(k.prompts||[]).length!==1?"s":""," assigned"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1296,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1270,columnNumber:17},this),s.jsxDEV("div",{className:"flex gap-2",children:[s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>x(k),children:"Edit"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1302,columnNumber:19},this),s.jsxDEV(le,{variant:"destructive",size:"sm",onClick:()=>_(k.id,k.agentCount||0),children:"Delete"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1305,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1301,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1269,columnNumber:15},this),k.prompts&&k.prompts.length>0&&s.jsxDEV("div",{className:"mt-3 space-y-2",children:[s.jsxDEV("p",{className:"text-sm font-medium",children:"Prompts (in order):"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1316,columnNumber:19},this),s.jsxDEV("div",{className:"space-y-1",children:k.prompts.sort((V,M)=>V.order-M.order).map((V,M)=>s.jsxDEV("div",{className:"flex items-center gap-2 text-sm p-2 bg-muted/50 rounded",children:[s.jsxDEV("span",{className:"text-muted-foreground",children:[M+1,"."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1325,columnNumber:27},this),s.jsxDEV("span",{children:V.prompt.title},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1326,columnNumber:27},this)]},V.promptId,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1321,columnNumber:25},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1317,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1315,columnNumber:17},this)]},k.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1268,columnNumber:13},this)}),h.items.length===0&&s.jsxDEV("p",{className:"text-center text-muted-foreground py-8",children:"No profiles found. Create your first profile to get started."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1335,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1266,columnNumber:9},this),s.jsxDEV(Es,{open:r,onOpenChange:o,children:s.jsxDEV(xs,{className:"max-w-5xl w-full max-h-[90vh] overflow-y-auto",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:c?"Edit Profile":"Create Profile"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1345,columnNumber:13},this),s.jsxDEV(ls,{children:c?"Update profile settings, prompt ordering, and instructions.":"Create a profile with prompts and instructions for agents."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1346,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1344,columnNumber:11},this),s.jsxDEV("form",{onSubmit:N,className:"space-y-4",children:[s.jsxDEV("div",{className:"grid gap-6 lg:grid-cols-[1fr_1.5fr]",children:[s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"name",children:"Name *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1357,columnNumber:19},this),s.jsxDEV(Tt,{id:"name",type:"text",value:l.name,onChange:k=>d({...l,name:k.target.value}),required:!0,placeholder:"Enter profile name"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1358,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1356,columnNumber:17},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"familySlug",children:"Family Slug"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1369,columnNumber:19},this),s.jsxDEV(Tt,{id:"familySlug",type:"text",value:l.familySlug,onChange:k=>d({...l,familySlug:k.target.value}),placeholder:"e.g., coder, architect"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1370,columnNumber:19},this),s.jsxDEV("p",{className:"mt-1 text-sm text-muted-foreground",children:"Groups equivalent profiles across providers. Profiles with the same family slug can be switched between providers."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1377,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1368,columnNumber:17},this),c&&s.jsxDEV(Nce,{profileId:c.id,providers:(y==null?void 0:y.items)||[],providersById:E,onConfigChange:()=>{e.invalidateQueries({queryKey:["profiles",i]})}},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1385,columnNumber:19},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{children:"Assigned Prompts (ordered)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1396,columnNumber:19},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground mb-2",children:"Drag to reorder, or use arrow buttons for keyboard navigation"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1397,columnNumber:19},this),s.jsxDEV(bce,{prompts:P,orderedPromptIds:l.orderedPromptIds,onReorder:k=>d({...l,orderedPromptIds:k})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1400,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1395,columnNumber:17},this),R.length>0&&s.jsxDEV("div",{children:[s.jsxDEV(We,{children:"Add Prompts"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1409,columnNumber:21},this),s.jsxDEV("div",{className:"grid grid-cols-2 gap-2 mt-2",children:R.map(k=>s.jsxDEV("button",{type:"button",onClick:()=>d({...l,orderedPromptIds:[...l.orderedPromptIds,k.id]}),className:"text-left p-2 border rounded-md hover:bg-muted transition-colors text-sm",children:k.title},k.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1412,columnNumber:25},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1410,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1408,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1355,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"instructions",children:"Instructions"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1433,columnNumber:17},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:["Use ",s.jsxDEV("span",{className:"font-mono",children:"#"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1435,columnNumber:23},this)," for grouped references and"," ",s.jsxDEV("span",{className:"font-mono",children:"@"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1436,columnNumber:19},this)," to search documents while you type."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1434,columnNumber:17},this),s.jsxDEV(Ose,{id:"instructions",value:l.instructions,onChange:k=>d({...l,instructions:k}),placeholder:"Add guidance for this profile...",rows:22,projectId:i},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1438,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1432,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1353,columnNumber:13},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{type:"button",variant:"outline",onClick:()=>{o(!1),w()},children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1450,columnNumber:15},this),s.jsxDEV(le,{type:"submit",disabled:C.isPending||D.isPending,children:c?"Update":"Create"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1460,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1449,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1352,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1343,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1342,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1249,columnNumber:5},this)}function zb(e){return e==="codex"?"codex":e==="claude"?"claude":e==="gemini"?"gemini":""}function R9(e){return!!(e&&typeof e=="object"&&"field"in e)}async function wce(){const e=await fetch("/api/providers");if(!e.ok)throw new Error("Failed to fetch providers");return e.json()}async function yce(e){const t=await fetch("/api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const i=await t.json().catch(()=>({message:"Failed to create provider"})),r=new Error(i.message||"Failed to create provider");throw i.field&&(r.field=i.field),r}return t.json()}async function Ece(e,t){const i=await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok){const r=await i.json().catch(()=>({message:"Failed to update provider"})),o=new Error(r.message||"Failed to update provider");throw r.field&&(o.field=r.field),o}return i.json()}async function Dce(e){const t=await fetch(`/api/providers/${e}`,{method:"DELETE"});if(!t.ok){const i=await t.json().catch(()=>({message:"Failed to delete provider"})),r=i.message||i.details||"Failed to delete provider";throw new Error(r)}}async function Sce(e,t){const i=JSON.stringify(t?{projectPath:t}:{}),r=await fetch(`/api/providers/${e}/mcp/ensure`,{method:"POST",headers:{"Content-Type":"application/json"},body:i});if(!r.ok){const o=await r.json().catch(()=>({message:"Failed to ensure MCP configuration"}));throw new Error(o.message||"Failed to ensure MCP configuration")}return r.json()}function _ce(){const e=zs(),{toast:t}=ii(),{selectedProject:i}=Gi(),[r,o]=f.useState(!1),[c,u]=f.useState(null),[l,d]=f.useState(null),[h,g]=f.useState({binPath:"",autoCompactThreshold:""}),[m,y]=f.useState(null),[E,C]=f.useState(null),[D,b]=f.useState("codex"),[w,N]=f.useState(!1),{data:x,isLoading:_}=st({queryKey:["providers"],queryFn:wce}),{data:P}=st({queryKey:["preflight","providers-page",(i==null?void 0:i.rootPath)??"global"],queryFn:()=>og(i==null?void 0:i.rootPath),staleTime:3e4,refetchInterval:6e4}),R=f.useMemo(()=>(P==null?void 0:P.supportedMcpProviders)??[],[P==null?void 0:P.supportedMcpProviders]),k=yt({mutationFn:yce,onMutate:async Y=>{await e.cancelQueries({queryKey:["providers"]});const H=e.getQueryData(["providers"]);return e.setQueryData(["providers"],L=>({...L,items:[{id:"temp-"+Date.now(),...Y,mcpConfigured:!1,mcpEndpoint:null,mcpRegisteredAt:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()},...(L==null?void 0:L.items)||[]]})),{previousData:H}},onSuccess:()=>{e.invalidateQueries({queryKey:["providers"]}),o(!1),g({binPath:"",autoCompactThreshold:""}),y(null),C(null),t({title:"Success",description:"Provider created successfully"})},onError:(Y,H,L)=>{L!=null&&L.previousData&&e.setQueryData(["providers"],L.previousData),R9(Y)&&Y.field&&(y(Y.message),C(Y.field==="autoCompactThreshold"?"autoCompactThreshold":"binPath")),t({title:"Error",description:Y instanceof Error?Y.message:"Failed to create provider",variant:"destructive"})}}),j=yt({mutationFn:({id:Y,data:H})=>Ece(Y,H),onMutate:async({id:Y,data:H})=>{await e.cancelQueries({queryKey:["providers"]});const L=e.getQueryData(["providers"]);return e.setQueryData(["providers"],z=>({...z,items:z==null?void 0:z.items.map($=>$.id===Y?{...$,...H,updatedAt:new Date().toISOString()}:$)})),{previousData:L}},onSuccess:()=>{e.invalidateQueries({queryKey:["providers"]}),o(!1),u(null),g({binPath:"",autoCompactThreshold:""}),y(null),C(null),t({title:"Success",description:"Provider updated successfully"})},onError:(Y,H,L)=>{L!=null&&L.previousData&&e.setQueryData(["providers"],L.previousData),R9(Y)&&Y.field&&(y(Y.message),C(Y.field==="autoCompactThreshold"?"autoCompactThreshold":"binPath")),t({title:"Error",description:Y instanceof Error?Y.message:"Failed to update provider",variant:"destructive"})}}),V=yt({mutationFn:Dce,onMutate:async Y=>{await e.cancelQueries({queryKey:["providers"]});const H=e.getQueryData(["providers"]);return e.setQueryData(["providers"],L=>({...L,items:L==null?void 0:L.items.filter(z=>z.id!==Y)})),{previousData:H}},onSuccess:()=>{e.invalidateQueries({queryKey:["providers"]}),d(null),t({title:"Success",description:"Provider deleted successfully"})},onError:(Y,H,L)=>{L!=null&&L.previousData&&e.setQueryData(["providers"],L.previousData),d(null),t({title:"Error",description:Y instanceof Error?Y.message:"Failed to delete provider",variant:"destructive"})}}),M=yt({mutationFn:Y=>Sce(Y,i==null?void 0:i.rootPath),onSuccess:Y=>{e.invalidateQueries({queryKey:["providers"]}),e.invalidateQueries({queryKey:["preflight"]}),e.refetchQueries({queryKey:["preflight"]});const H={added:"MCP configured successfully",fixed_mismatch:"MCP configuration fixed",already_configured:"MCP already configured"}[Y==null?void 0:Y.action]||"MCP configuration updated";t({title:H,description:`Endpoint: ${window.location.origin}/mcp`})},onError:Y=>{t({title:"MCP configuration failed",description:Y instanceof Error?Y.message:"Failed to configure MCP.",variant:"destructive"})}}),F=Y=>{Y.preventDefault();const H=h.binPath.trim()===""?null:h.binPath.trim(),L=(c==null?void 0:c.name)??D;y(null),C(null);const z=h.autoCompactThreshold.trim();if(z!==""){const $=Number(z);if(isNaN($)||!Number.isInteger($)||$<1||$>100){y("Threshold must be an integer between 1 and 100."),C("autoCompactThreshold");return}}if(c){const $=z===""?null:Number(z);j.mutate({id:c.id,data:{binPath:H,autoCompactThreshold:$}})}else{const $={name:L,binPath:H};z!==""&&D==="claude"&&($.autoCompactThreshold=Number(z)),k.mutate($)}},I=Y=>{u(Y),g({binPath:Y.binPath||"",autoCompactThreshold:Y.autoCompactThreshold!=null?String(Y.autoCompactThreshold):""});const H=Y.name==="codex"?"codex":Y.name==="claude"?"claude":Y.name==="gemini"?"gemini":"codex";b(H),N(!1),y(null),C(null),o(!0)},A=Y=>{d(Y)},O=()=>{l&&V.mutate(l.id)},K=Y=>{if(!R.includes(Y.name)){t({title:"Unsupported provider",description:`${Y.name} does not support MCP registration.`});return}M.mutate(Y.id)},q=()=>{u(null);const Y="codex";g({binPath:zb(Y),autoCompactThreshold:""}),b(Y),N(!1),y(null),C(null),o(!0)};return s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"mb-6 flex justify-between items-start",children:[s.jsxDEV("div",{children:[s.jsxDEV("h1",{className:"text-3xl font-bold mb-2",children:"Providers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:437,columnNumber:11},this),s.jsxDEV("p",{className:"text-muted-foreground",children:"Manage AI provider configurations for agent profiles"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:438,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:436,columnNumber:9},this),s.jsxDEV(le,{onClick:q,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:443,columnNumber:11},this),"Add Provider"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:442,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:435,columnNumber:7},this),_&&s.jsxDEV("p",{className:"text-muted-foreground",children:"Loading providers..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:448,columnNumber:21},this),x&&s.jsxDEV("div",{className:"space-y-4",children:[x.items.length===0&&s.jsxDEV("div",{className:"flex flex-col items-center justify-center py-12 text-center border rounded-lg",children:[s.jsxDEV(qD,{className:"h-12 w-12 text-muted-foreground mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:454,columnNumber:15},this),s.jsxDEV("p",{className:"text-lg font-medium mb-2",children:"No Providers Yet"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:455,columnNumber:15},this),s.jsxDEV("p",{className:"text-muted-foreground mb-4",children:"Add your first AI provider (Claude, Codex, etc.) to get started"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:456,columnNumber:15},this),s.jsxDEV(le,{onClick:q,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:460,columnNumber:17},this),"Add Provider"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:459,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:453,columnNumber:13},this),x.items.map(Y=>{var W;const H=R.includes(Y.name),L=(W=P==null?void 0:P.providers)==null?void 0:W.find(ee=>ee.id===Y.id),z=L==null?void 0:L.mcpStatus,$=z==="pass"?"border border-emerald-500/40 bg-emerald-500/10 text-emerald-600":z==="fail"?"border border-destructive bg-destructive/10 text-destructive":"border border-amber-500/40 bg-amber-500/10 text-amber-600";return s.jsxDEV("div",{className:"border rounded-lg p-4 bg-card",children:s.jsxDEV("div",{className:"flex justify-between items-start gap-4",children:[s.jsxDEV("div",{className:"flex-1 space-y-2",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(qD,{className:"h-5 w-5 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:482,columnNumber:23},this),s.jsxDEV("h3",{className:"text-lg font-semibold",children:Y.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:483,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:481,columnNumber:21},this),s.jsxDEV("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[s.jsxDEV("span",{className:"text-sm",children:"Binary Path:"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:486,columnNumber:23},this),s.jsxDEV("code",{className:"text-sm bg-muted px-2 py-0.5 rounded",children:Y.binPath||"Not configured"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:487,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:485,columnNumber:21},this),Y.name.toLowerCase()==="claude"&&s.jsxDEV("div",{className:"text-sm text-muted-foreground",children:["Auto-compact:"," ",Y.autoCompactThreshold!=null?`${Y.autoCompactThreshold}%`:"disabled"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:492,columnNumber:23},this),s.jsxDEV("div",{className:"flex flex-wrap items-center gap-2",children:[s.jsxDEV(Je,{variant:"secondary",className:we("text-xs",$),children:["MCP ",(z??"warn").toUpperCase()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:500,columnNumber:23},this),Y.mcpRegisteredAt&&s.jsxDEV("span",{className:"text-xs text-muted-foreground",children:["Registered ",new Date(Y.mcpRegisteredAt).toLocaleString()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:504,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:499,columnNumber:21},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:["Created ",new Date(Y.createdAt).toLocaleDateString()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:509,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:480,columnNumber:19},this),s.jsxDEV("div",{className:"flex flex-col gap-2 sm:flex-row",children:[H&&z!=="pass"&&s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>K(Y),disabled:M.isPending,children:"Configure MCP"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:515,columnNumber:23},this),s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>I(Y),children:"Edit"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:524,columnNumber:21},this),s.jsxDEV(le,{variant:"destructive",size:"sm",onClick:()=>A(Y),children:"Delete"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:527,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:513,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:479,columnNumber:17},this)},Y.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:478,columnNumber:15},this)})]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:451,columnNumber:9},this),s.jsxDEV(Es,{open:r,onOpenChange:Y=>{o(Y),Y||(u(null),g({binPath:"",autoCompactThreshold:""}),y(null),C(null))},children:s.jsxDEV(xs,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:c?"Edit Provider":"Add Provider"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:553,columnNumber:13},this),s.jsxDEV(ls,{children:c?"Update the provider configuration":"Configure a new AI provider for use in agent profiles"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:554,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:552,columnNumber:11},this),s.jsxDEV("form",{onSubmit:F,className:"space-y-4",children:[s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"provider-type",children:"Provider Type"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:562,columnNumber:15},this),s.jsxDEV(Ls,{value:D,onValueChange:Y=>{const H=zb(D),L=Y,z=zb(L);b(L),g($=>{const W={};return(!w||$.binPath.trim()===H)&&(W.binPath=z),L!=="claude"&&(W.autoCompactThreshold=""),Object.keys(W).length>0?{...$,...W}:$})},children:[s.jsxDEV(Ts,{id:"provider-type",children:s.jsxDEV($s,{placeholder:"Select provider type"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:585,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:584,columnNumber:17},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"codex",children:"Codex"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:588,columnNumber:19},this),s.jsxDEV(Pt,{value:"claude",children:"Claude"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:589,columnNumber:19},this),s.jsxDEV(Pt,{value:"gemini",children:"Gemini"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:590,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:587,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:563,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-1",children:"Select the provider type (controls default binary name)."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:593,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:561,columnNumber:13},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"provider-binpath",children:"Binary Path"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:600,columnNumber:15},this),s.jsxDEV(Tt,{id:"provider-binpath",type:"text",value:h.binPath,onChange:Y=>{g({...h,binPath:Y.target.value}),N(!0),y(null),C(null)},className:we(E==="binPath"&&"border-destructive focus-visible:ring-destructive"),placeholder:"/path/to/provider/binary"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:601,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-1",children:"Absolute path to provider binary (optional, can be configured later)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:617,columnNumber:15},this),m&&E==="binPath"&&s.jsxDEV("p",{className:"mt-2 text-sm text-destructive",children:m},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:621,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:599,columnNumber:13},this),((c==null?void 0:c.name)??D).toLowerCase()==="claude"&&s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"provider-threshold",children:"Auto-Compact Threshold (%)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:627,columnNumber:17},this),s.jsxDEV(Tt,{id:"provider-threshold",type:"number",min:1,max:100,value:h.autoCompactThreshold,onChange:Y=>{g({...h,autoCompactThreshold:Y.target.value}),E==="autoCompactThreshold"&&(y(null),C(null))},className:we(E==="autoCompactThreshold"&&"border-destructive focus-visible:ring-destructive"),placeholder:"Default: 10"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:628,columnNumber:17},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-1",children:"Context usage percentage (1-100) that triggers auto-compact. Leave empty to use default on create, or to disable on edit."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:647,columnNumber:17},this),m&&E==="autoCompactThreshold"&&s.jsxDEV("p",{className:"mt-2 text-sm text-destructive",children:m},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:652,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:626,columnNumber:15},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{type:"button",variant:"outline",onClick:()=>{o(!1),u(null);const Y="codex";g({binPath:zb(Y),autoCompactThreshold:""}),b(Y),N(!1),y(null),C(null)},children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:660,columnNumber:15},this),s.jsxDEV(le,{type:"submit",disabled:k.isPending||j.isPending,children:c?"Update":"Create"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:679,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:659,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:560,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:551,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:539,columnNumber:7},this),s.jsxDEV(Es,{open:!!l,onOpenChange:Y=>!Y&&d(null),children:s.jsxDEV(xs,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Delete Provider"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:691,columnNumber:13},this),s.jsxDEV(ls,{children:["Are you sure you want to delete ",s.jsxDEV("strong",{children:l==null?void 0:l.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:693,columnNumber:47},this),"? Any agent profiles using this provider will be affected."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:692,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:690,columnNumber:11},this),s.jsxDEV("div",{className:"bg-amber-50 dark:bg-amber-950 border border-amber-200 dark:border-amber-800 rounded-lg p-3 flex items-start gap-2",children:[s.jsxDEV(si,{className:"h-5 w-5 text-amber-600 dark:text-amber-500 mt-0.5 flex-shrink-0"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:698,columnNumber:13},this),s.jsxDEV("p",{className:"text-sm text-amber-800 dark:text-amber-200",children:"This action cannot be undone. Make sure no profiles are currently using this provider."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:699,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:697,columnNumber:11},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:()=>d(null),children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:704,columnNumber:13},this),s.jsxDEV(le,{variant:"destructive",onClick:O,disabled:V.isPending,children:"Delete"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:707,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:703,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:689,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:688,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:434,columnNumber:5},this)}async function Cce(e){const t=await fetch(`/api/projects/${e}/presets`);if(!t.ok)throw new Error("Failed to fetch presets");return t.json()}async function jce(e){const t=await fetch(`/api/profiles/${e}/provider-configs`);if(!t.ok)throw new Error("Failed to fetch provider configs");return t.json()}async function Pce(e,t){const i=await fetch(`/api/projects/${e}/presets/apply`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({presetName:t})});if(!i.ok)throw new Error("Failed to apply preset");return i.json()}function kce({projectId:e,agents:t,agentPresence:i,onAgentsRefresh:r,onEditPreset:o,onDeletePreset:c}){const{toast:u}=ii(),l=zs(),[d,h]=f.useState(""),[g,m]=f.useState(!1),y=f.useRef(!1),{data:E,isLoading:C}=st({queryKey:["project-presets",e],queryFn:()=>Cce(e),enabled:!!e}),{data:D,isLoading:b}=st({queryKey:["provider-configs-by-profile",e,t.map(F=>F.profileId)],queryFn:async()=>{const F=new Set(t.map(O=>O.profileId).filter(Boolean));if(F.size===0)return new Map;const I=await Promise.all(Array.from(F).map(async O=>{try{const K=await jce(O);return{profileId:O,configs:K}}catch{return{profileId:O,configs:[]}}})),A=new Map;return I.forEach(({profileId:O,configs:K})=>{A.set(O,K)}),A},enabled:!!e&&t.length>0}),w=(E==null?void 0:E.presets)||[],N=(E==null?void 0:E.activePreset)??null,x=w.length>0;f.useEffect(()=>{N&&!y.current&&(h(N),y.current=!0)},[N]);const _=f.useMemo(()=>D?w.map((I,A)=>({...H0(I,t,D),originalIndex:A})).sort((I,A)=>I.available&&!A.available?-1:!I.available&&A.available?1:A.originalIndex-I.originalIndex):[],[w,t,D]),P=f.useMemo(()=>d?_.find(F=>F.preset.name===d)??null:null,[d,_]),R=async()=>{if(!d)return;const F=w.find(O=>O.name===d),I=new Set((F==null?void 0:F.agentConfigs.map(O=>O.agentName.trim().toLowerCase()))||[]),A=t.filter(O=>{var K;return I.has(O.name.trim().toLowerCase())&&((K=i[O.id])==null?void 0:K.online)});if(A.length>0){const O=A.map(q=>q.name).join(", ");if(!window.confirm(`The following agents have active sessions: ${O}. Changing their provider configuration may affect running sessions. Continue?`))return}m(!0);try{const O=await Pce(e,d);u({title:"Preset applied",description:`Applied preset to ${O.applied} agent(s)${O.warnings.length>0?` (${O.warnings.length} warning(s))`:""}`}),await l.invalidateQueries({queryKey:["agents",e]}),await l.invalidateQueries({queryKey:["project-presets",e]}),r==null||r()}catch(O){u({title:"Error",description:O instanceof Error?O.message:"Failed to apply preset",variant:"destructive"})}finally{m(!1)}},k=()=>{P&&o&&o(P.preset)},j=()=>{P&&c&&c(P.preset)};if(!x)return null;const V=d&&d!==N,M=!!d;return s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Ls,{value:d,onValueChange:h,disabled:g,children:[s.jsxDEV(Ts,{className:"w-[240px]",children:C||b?s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(ot,{className:"h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:240,columnNumber:15},this),s.jsxDEV("span",{children:"Loading presets..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:241,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:239,columnNumber:13},this):s.jsxDEV($s,{placeholder:"Select a preset..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:244,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:237,columnNumber:9},this),s.jsxDEV(Rs,{children:[_.map(({preset:F,available:I,missingConfigs:A})=>s.jsxDEV(Pt,{value:F.name,children:s.jsxDEV("div",{className:"flex items-center gap-2",children:[I?s.jsxDEV(Or,{className:"h-4 w-4 text-green-500 flex-shrink-0"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:252,columnNumber:19},this):s.jsxDEV(Ir,{children:s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV(si,{className:"h-4 w-4 text-yellow-500 flex-shrink-0"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:257,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:256,columnNumber:23},this),s.jsxDEV(Zi,{side:"right",className:"max-w-xs",children:[s.jsxDEV("p",{className:"font-medium mb-1",children:"Missing configs:"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:260,columnNumber:25},this),s.jsxDEV("ul",{className:"text-sm list-disc pl-4",children:A.map((O,K)=>s.jsxDEV("li",{children:[O.agentName," → ",O.configName]},K,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:263,columnNumber:29},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:261,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:259,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:255,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:254,columnNumber:19},this),s.jsxDEV("span",{className:"font-medium",children:F.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:272,columnNumber:17},this),F.description&&s.jsxDEV("span",{className:"text-xs text-muted-foreground truncate max-w-[100px]",children:F.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:274,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:250,columnNumber:15},this)},F.name,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:249,columnNumber:13},this)),_.length===0&&s.jsxDEV("div",{className:"p-2 text-sm text-muted-foreground text-center",children:"No presets available"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:282,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:247,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:236,columnNumber:7},this),s.jsxDEV(le,{onClick:R,disabled:!V||g,size:"sm",variant:"default",children:[g&&s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:296,columnNumber:24},this),"Apply"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:290,columnNumber:7},this),s.jsxDEV(O0,{children:[s.jsxDEV(I0,{asChild:!0,children:s.jsxDEV(le,{variant:"outline",size:"sm",className:"h-8 w-8 p-0",disabled:!M,children:s.jsxDEV(jV,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:304,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:303,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:302,columnNumber:9},this),s.jsxDEV(lg,{align:"end",children:[o&&s.jsxDEV(Dl,{onClick:k,disabled:!M,children:[s.jsxDEV(Oc,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:310,columnNumber:15},this),"Edit preset"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:309,columnNumber:13},this),c&&s.jsxDEV(Dl,{onClick:j,disabled:!M,className:"text-destructive focus:text-destructive",children:[s.jsxDEV(er,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:320,columnNumber:15},this),"Delete preset"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:315,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:307,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:301,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:235,columnNumber:5},this)}async function Vce(e,t){const i=await fetch(`/api/projects/${e}/presets`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok){const r=await i.json().catch(()=>({message:"Failed to create preset"}));throw new Error(r.message||"Failed to create preset")}return i.json()}async function Tce(e,t,i){const r=await fetch(`/api/projects/${e}/presets`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({presetName:t,updates:i})});if(!r.ok){const o=await r.json().catch(()=>({message:"Failed to update preset"}));throw new Error(o.message||"Failed to update preset")}return r.json()}function Rce({open:e,onOpenChange:t,projectId:i,agents:r,existingPresetNames:o=[],presetToEdit:c}){const{toast:u}=ii(),l=zs(),[d,h]=f.useState(!1),[g,m]=f.useState(""),[y,E]=f.useState(""),[C,D]=f.useState([]),b=!!c;f.useEffect(()=>{if(e)if(c)m(c.name),E(c.description||""),D(c.agentConfigs);else{m(""),E("");const F=r.filter(I=>I.providerConfigId&&I.providerConfig);D(F.map(I=>({agentName:I.name,providerConfigName:I.providerConfig.name})))}},[e,c,r]);const w=f.useMemo(()=>r.filter(F=>typeof F.profileId=="string"),[r]),{data:N}=st({queryKey:["provider-configs-by-profile",i,w.map(F=>F.profileId).sort()],queryFn:async()=>{const F=new Set(w.map(O=>O.profileId));if(F.size===0)return new Map;const I=await Promise.all(Array.from(F).map(async O=>{try{const K=await fetch(`/api/profiles/${O}/provider-configs`);if(!K.ok)return{profileId:O,configs:[]};const q=await K.json();return{profileId:O,configs:q}}catch{return{profileId:O,configs:[]}}})),A=new Map;return I.forEach(({profileId:O,configs:K})=>{A.set(O,K)}),A},enabled:e&&w.length>0}),x=g.trim()?o.some(F=>F.trim().toLowerCase()===g.trim().toLowerCase()&&F!==(c==null?void 0:c.name))?"A preset with this name already exists":"":"Name is required",_=!x&&g.trim()!==""&&C.length>0,P=()=>{d||(m(""),E(""),D([]),t(!1))},R=async()=>{if(_){h(!0);try{if(b){const F={name:g.trim(),description:y.trim()||null,agentConfigs:C},I=await Tce(i,c.name,F);u({title:"Preset Updated",description:`Updated preset "${I.name}" with ${C.length} agent configuration(s)`})}else{const F={name:g.trim(),description:y.trim()||null,agentConfigs:C},I=await Vce(i,F);u({title:"Preset Created",description:`Saved preset "${I.name}" with ${C.length} agent configuration(s)`})}await l.invalidateQueries({queryKey:["project-presets",i]}),m(""),E(""),D([]),t(!1)}catch(F){u({title:"Error",description:F instanceof Error?F.message:"Failed to save preset",variant:"destructive"})}finally{h(!1)}}},k=F=>C.some(I=>I.agentName===F),j=F=>{var I;return(I=C.find(A=>A.agentName===F))==null?void 0:I.providerConfigName},V=(F,I)=>{var O,K;const A=C.findIndex(q=>q.agentName===F);if(I&&A<0){const q=r.find(z=>z.name===F),Y=(O=q==null?void 0:q.providerConfig)==null?void 0:O.name,H=q!=null&&q.profileId?(N==null?void 0:N.get(q.profileId))??[]:[],L=Y||((K=H[0])==null?void 0:K.name);L&&D(z=>[...z,{agentName:F,providerConfigName:L}])}else!I&&A>=0&&D(q=>q.filter((Y,H)=>H!==A))},M=(F,I)=>{const A=C.findIndex(O=>O.agentName===F);A>=0?D(O=>O.map((K,q)=>q===A?{agentName:F,providerConfigName:I}:K)):D(O=>[...O,{agentName:F,providerConfigName:I}])};return s.jsxDEV(Es,{open:e,onOpenChange:P,children:s.jsxDEV(xs,{className:"max-w-md",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:b?"Edit Preset":"Save as Preset"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:320,columnNumber:11},this),s.jsxDEV(ls,{children:b?"Modify the preset name, description, or agent configurations":"Create a named configuration from agent provider assignments"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:321,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:319,columnNumber:9},this),s.jsxDEV("div",{className:"space-y-4 py-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"preset-name",children:"Name *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:331,columnNumber:13},this),s.jsxDEV(Tt,{id:"preset-name",value:g,onChange:F=>m(F.target.value),placeholder:"my-preset",className:"font-mono text-sm",disabled:d},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:332,columnNumber:13},this),x&&s.jsxDEV("p",{className:"text-xs text-destructive flex items-center gap-1",children:[s.jsxDEV(si,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:342,columnNumber:17},this),x]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:341,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:330,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"preset-description",children:"Description"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:350,columnNumber:13},this),s.jsxDEV(ta,{id:"preset-description",value:y,onChange:F=>E(F.target.value),placeholder:"Optional description of this preset",rows:2,disabled:d},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:351,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:349,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV(We,{children:"Agent Configurations"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:364,columnNumber:15},this),s.jsxDEV("span",{className:"text-xs text-muted-foreground",children:[C.length," selected"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:365,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:363,columnNumber:13},this),w.length>0?s.jsxDEV(xr,{className:"h-48 border rounded-md p-2",children:s.jsxDEV("div",{className:"space-y-1 pr-4",children:w.map(F=>{var z;const I=k(F.name),A=j(F.name),O=(z=F.providerConfig)==null?void 0:z.name,K=N==null?void 0:N.get(F.profileId),q=Array.isArray(K)?K:[],Y=q.length>0,H=I&&A&&Y&&!q.some($=>$.name===A),L=I&&A?A:I&&O?O:"";return s.jsxDEV("div",{className:"flex items-center gap-2 p-2 rounded hover:bg-muted",children:[s.jsxDEV(Ra,{checked:I,onCheckedChange:$=>V(F.name,$===!0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:398,columnNumber:25},this),s.jsxDEV("span",{className:"flex-1 text-sm",children:F.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:404,columnNumber:25},this),s.jsxDEV(Ls,{value:L,onValueChange:$=>M(F.name,$),disabled:!I||!Y,children:[s.jsxDEV(Ts,{className:"h-7 w-32 text-xs",children:s.jsxDEV($s,{placeholder:H?`Missing: ${A}`:Y?"Select config":"No configs"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:411,columnNumber:29},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:410,columnNumber:27},this),s.jsxDEV(Rs,{children:q.map($=>s.jsxDEV(Pt,{value:$.name,className:"text-xs",children:$.name},$.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:423,columnNumber:31},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:421,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:405,columnNumber:25},this)]},F.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:394,columnNumber:23},this)})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:371,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:370,columnNumber:15},this):s.jsxDEV("div",{className:"border rounded-md p-3 bg-muted/30",children:s.jsxDEV("p",{className:"text-xs text-muted-foreground flex items-center gap-1",children:[s.jsxDEV(si,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:437,columnNumber:19},this),"No agents with profiles found"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:436,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:435,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Check agents to include them, then select a provider configuration for each"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:442,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:362,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:328,columnNumber:9},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:P,disabled:d,children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:449,columnNumber:11},this),s.jsxDEV(le,{onClick:R,disabled:d||!_,children:[d?s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:454,columnNumber:15},this):b?s.jsxDEV(Oc,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:456,columnNumber:15},this):s.jsxDEV(RV,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:458,columnNumber:15},this),b?"Update Preset":"Save Preset"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:452,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:448,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:318,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:317,columnNumber:5},this)}async function Ace(e,t){const i=await fetch(`/api/projects/${e}/presets`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({presetName:t})});if(!i.ok){const r=await i.json().catch(()=>({message:"Failed to delete preset"}));throw new Error(r.message||"Failed to delete preset")}}function Mce({open:e,onOpenChange:t,projectId:i,presetToDelete:r}){const{toast:o}=ii(),c=zs(),[u,l]=f.useState(!1),d=async()=>{if(r){l(!0);try{await Ace(i,r.name),o({title:"Preset Deleted",description:`Preset "${r.name}" has been removed`}),await c.invalidateQueries({queryKey:["project-presets",i]}),t(!1)}catch(h){o({title:"Error",description:h instanceof Error?h.message:"Failed to delete preset",variant:"destructive"})}finally{l(!1)}}};return s.jsxDEV(Es,{open:e,onOpenChange:h=>!u&&t(h),children:s.jsxDEV(xs,{className:"max-w-sm",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Delete Preset"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:76,columnNumber:11},this),s.jsxDEV(ls,{children:"Are you sure you want to delete this preset? This action cannot be undone."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:77,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:75,columnNumber:9},this),r&&s.jsxDEV("div",{className:"py-4",children:s.jsxDEV("div",{className:"flex items-center gap-2 p-3 bg-muted/50 rounded-md border border-destructive/20",children:[s.jsxDEV(Bi,{className:"h-5 w-5 text-destructive flex-shrink-0"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:85,columnNumber:15},this),s.jsxDEV("div",{className:"flex-1 min-w-0",children:[s.jsxDEV("p",{className:"font-medium text-sm",children:r.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:87,columnNumber:17},this),r.description&&s.jsxDEV("p",{className:"text-xs text-muted-foreground whitespace-pre-line",children:r.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:89,columnNumber:19},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-1",children:[r.agentConfigs.length," agent configuration(s)"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:93,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:86,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:84,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:83,columnNumber:11},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:()=>t(!1),disabled:u,children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:102,columnNumber:11},this),s.jsxDEV(le,{variant:"destructive",onClick:d,disabled:u,children:[u&&s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:106,columnNumber:28},this),"Delete"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:105,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:101,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:74,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:73,columnNumber:5},this)}function Lce(){return`http://127.0.0.1:${window.location.port==="5175"?"3000":window.location.port||"3000"}/mcp`}function Oce(e,t){const i=e.toLowerCase(),r="devchain";switch(i){case"claude":return`claude mcp add --transport http ${r} ${t}`;case"codex":return`codex mcp add --url ${t} ${r}`;case"gemini":return`gemini mcp add -t http ${r} ${t}`;default:return`# Manual MCP configuration for ${e}`}}function fM({open:e,onOpenChange:t,providerName:i,onConfigured:r,onVerify:o}){const[c,u]=f.useState(!1),[l,d]=f.useState(null),[h,g]=f.useState(!1),m=Lce(),y=Oce(i,m),E=async()=>{if(o){u(!0),d(null);try{await o()?(r==null||r(),t(!1)):d("MCP configuration not detected. Please ensure the command was run successfully.")}catch(D){d(D instanceof Error?D.message:"Failed to verify configuration")}finally{u(!1)}}},C=async()=>{try{await navigator.clipboard.writeText(y),g(!0),setTimeout(()=>g(!1),2e3)}catch{const D=document.createElement("textarea");D.value=y,document.body.appendChild(D),D.select(),document.execCommand("copy"),document.body.removeChild(D),g(!0),setTimeout(()=>g(!1),2e3)}};return s.jsxDEV(Es,{open:e,onOpenChange:t,children:s.jsxDEV(xs,{className:"max-w-lg",children:[s.jsxDEV(ds,{children:[s.jsxDEV("div",{className:"flex items-center gap-3",children:[s.jsxDEV("div",{className:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-500/10",children:s.jsxDEV(Bi,{className:"h-5 w-5 text-amber-500"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:115,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:114,columnNumber:13},this),s.jsxDEV(os,{children:"Manual MCP Configuration Required"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:117,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:113,columnNumber:11},this),s.jsxDEV(ls,{className:"text-left",children:["Auto-configuration failed for ",s.jsxDEV("span",{className:"font-medium",children:i},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:120,columnNumber:43},this),". Please run the command below manually to configure MCP."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:119,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:112,columnNumber:9},this),s.jsxDEV("div",{className:"space-y-4",children:[l&&s.jsxDEV(Ti,{variant:"destructive",children:[s.jsxDEV(Bi,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:129,columnNumber:15},this),s.jsxDEV(Lr,{children:"Configuration Error"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:130,columnNumber:15},this),s.jsxDEV(Ri,{children:l},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:131,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:128,columnNumber:13},this),s.jsxDEV("div",{className:"rounded-lg border p-4 space-y-3",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(b0,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:138,columnNumber:15},this),s.jsxDEV("h4",{className:"font-medium",children:"Run in Terminal"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:139,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:137,columnNumber:13},this),s.jsxDEV("div",{className:"relative",children:[s.jsxDEV("pre",{className:"rounded-md bg-muted p-3 text-xs overflow-x-auto",children:s.jsxDEV("code",{children:y},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:143,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:142,columnNumber:15},this),s.jsxDEV(le,{size:"sm",variant:"ghost",className:we("absolute right-1 top-1 h-7 w-7 p-0",h&&"text-green-500"),onClick:C,title:h?"Copied!":"Copy to clipboard",children:h?s.jsxDEV(th,{className:"h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:152,columnNumber:27},this):s.jsxDEV(p2,{className:"h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:152,columnNumber:63},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:145,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:141,columnNumber:13},this),o&&s.jsxDEV(le,{variant:"outline",onClick:E,disabled:c,className:"w-full",children:c?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ot,{className:"mr-2 h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:164,columnNumber:21},this),"Verifying..."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:163,columnNumber:19},this):s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Yf,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:169,columnNumber:21},this),"Verify Configuration"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:168,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:156,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:136,columnNumber:11},this),s.jsxDEV(Ti,{variant:"default",className:"border-muted bg-muted/50",children:s.jsxDEV(Ri,{className:"text-sm",children:["MCP (Model Context Protocol) enables ",i," to communicate with DevChain for task coordination and context sharing."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:179,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:178,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:125,columnNumber:9},this),s.jsxDEV(Ds,{children:s.jsxDEV(le,{variant:"outline",onClick:()=>t(!1),children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:187,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:186,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:111,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:110,columnNumber:5},this)}var gM={exports:{}},vM={};/**
958
+ `).map((o,c)=>o.startsWith("# ")?s.jsxDEV("h1",{className:"text-2xl font-bold mb-2",children:o.substring(2)},c,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:96,columnNumber:11},this):o.startsWith("## ")?s.jsxDEV("h2",{className:"text-xl font-semibold mb-2",children:o.substring(3)},c,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:103,columnNumber:11},this):o.startsWith("### ")?s.jsxDEV("h3",{className:"text-lg font-semibold mb-1",children:o.substring(4)},c,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:110,columnNumber:11},this):o.startsWith("- ")?s.jsxDEV("li",{className:"ml-4",children:o.substring(2)},c,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:117,columnNumber:11},this):o.trim()===""?s.jsxDEV("div",{className:"h-2"},c,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:123,columnNumber:16},this):s.jsxDEV("p",{className:"mb-2",children:o},c,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:126,columnNumber:9},this));return s.jsxDEV("div",{className:"prose prose-sm max-w-none dark:prose-invert",children:t(e)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:134,columnNumber:5},this)}function nce({tags:e,suggestions:t,onAddTag:i,onRemoveTag:r,onInputChange:o}){const[c,u]=f.useState(""),[l,d]=f.useState(!1),h=f.useMemo(()=>c?t.filter(E=>E.toLowerCase().includes(c.toLowerCase())&&!e.includes(E)).slice(0,5):[],[c,t,e]),g=E=>{const C=E.trim();C&&!e.includes(C)&&(i(C),u(""),d(!1),o==null||o(""))},m=E=>{E.key==="Enter"||E.key===","?(E.preventDefault(),g(c)):E.key==="Backspace"&&!c&&e.length>0&&r(e[e.length-1])},y=E=>{u(E),o==null||o(E)};return s.jsxDEV("div",{className:"relative",children:[s.jsxDEV("div",{className:"flex flex-wrap gap-2 p-2 border rounded-md min-h-[42px] items-center bg-background",children:[e.map(E=>s.jsxDEV(Je,{variant:"secondary",className:"gap-1",children:[s.jsxDEV(MV,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:191,columnNumber:13},this),E,s.jsxDEV("button",{type:"button",onClick:()=>r(E),className:"ml-1 hover:bg-muted rounded-full",children:s.jsxDEV(jl,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:198,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:193,columnNumber:13},this)]},E,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:190,columnNumber:11},this)),s.jsxDEV("input",{type:"text",value:c,onChange:E=>{y(E.target.value),d(!0)},onKeyDown:m,onFocus:()=>d(!0),onBlur:()=>setTimeout(()=>d(!1),200),placeholder:e.length===0?"Add tags (label or key:value)...":"",className:"flex-1 min-w-[120px] outline-none bg-transparent"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:202,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:188,columnNumber:7},this),l&&h.length>0&&s.jsxDEV("div",{className:"absolute z-10 w-full mt-1 bg-popover border rounded-md shadow-lg",children:h.map(E=>s.jsxDEV("button",{type:"button",onClick:()=>g(E),className:"w-full px-3 py-2 text-left hover:bg-muted transition-colors",children:E},E,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:219,columnNumber:13},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:217,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:187,columnNumber:5},this)}function oce(){const e=zs(),{toast:t}=ii(),{selectedProjectId:i}=Gi(),[r,o]=f.useState(!1),[c,u]=f.useState(null),[l,d]=f.useState({title:"",content:"",tags:[]}),[h,g]=f.useState(""),[m,y]=f.useState(!1),[E,C]=f.useState(""),{data:D,isLoading:b}=st({queryKey:["prompts",i],queryFn:()=>tce(i),enabled:!!i}),w=yt({mutationFn:sce,onMutate:async M=>{await e.cancelQueries({queryKey:["prompts",i]});const F=e.getQueryData(["prompts",i]);return e.setQueryData(["prompts",i],I=>({...I,items:[{id:"temp-"+Date.now(),...M,version:1,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()},...(I==null?void 0:I.items)||[]]})),{previousData:F}},onSuccess:()=>{e.invalidateQueries({queryKey:["prompts",i]}),o(!1),_(),t({title:"Success",description:"Prompt created successfully"})},onError:(M,F,I)=>{I!=null&&I.previousData&&e.setQueryData(["prompts",i],I.previousData),t({title:"Error",description:M instanceof Error?M.message:"Failed to create prompt",variant:"destructive"})}}),N=yt({mutationFn:({id:M,data:F})=>ice(M,F),onMutate:async({id:M,data:F})=>{await e.cancelQueries({queryKey:["prompts",i]});const I=e.getQueryData(["prompts",i]);return e.setQueryData(["prompts",i],A=>({...A,items:A==null?void 0:A.items.map(O=>O.id===M?{...O,...F,updatedAt:new Date().toISOString()}:O)})),{previousData:I}},onSuccess:()=>{e.invalidateQueries({queryKey:["prompts",i]}),o(!1),u(null),_(),t({title:"Success",description:"Prompt updated successfully"})},onError:(M,F,I)=>{I!=null&&I.previousData&&e.setQueryData(["prompts",i],I.previousData),t({title:"Error",description:M instanceof Error?M.message:"Failed to update prompt",variant:"destructive"})}}),x=yt({mutationFn:ace,onMutate:async M=>{await e.cancelQueries({queryKey:["prompts",i]});const F=e.getQueryData(["prompts",i]);return e.setQueryData(["prompts",i],I=>({...I,items:I==null?void 0:I.items.filter(A=>A.id!==M)})),{previousData:F}},onSuccess:()=>{e.invalidateQueries({queryKey:["prompts",i]}),t({title:"Success",description:"Prompt deleted successfully"})},onError:(M,F,I)=>{I!=null&&I.previousData&&e.setQueryData(["prompts",i],I.previousData),t({title:"Error",description:M instanceof Error?M.message:"Failed to delete prompt",variant:"destructive"})}}),_=()=>{d({title:"",content:"",tags:[]}),u(null),y(!1),C("")},P=M=>{if(M.preventDefault(),!i){t({title:"Error",description:"Please select a project first",variant:"destructive"});return}let F=l.tags;if(E.trim()){const I=E.trim();F.includes(I)||(F=[...l.tags,I])}c?N.mutate({id:c.id,data:{title:l.title,content:l.content,tags:F,version:c.version}}):w.mutate({projectId:i,title:l.title,content:l.content,tags:F})},R=async M=>{try{const F=await fetch(`/api/prompts/${M.id}`);if(!F.ok)throw new Error("Failed to fetch prompt");const I=await F.json();u(I),d({title:I.title,content:I.content,tags:[...I.tags]}),C(""),o(!0)}catch{t({title:"Error",description:"Failed to load prompt for editing",variant:"destructive"})}},k=M=>{confirm("Are you sure you want to delete this prompt?")&&x.mutate(M)},j=f.useMemo(()=>(D==null?void 0:D.items.filter(M=>!h||M.tags.includes(h)))||[],[D,h]),V=f.useMemo(()=>Array.from(new Set((D==null?void 0:D.items.flatMap(M=>M.tags))||[])),[D]);return s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"flex justify-between items-center mb-6",children:[s.jsxDEV("h1",{className:"text-3xl font-bold",children:"Prompts"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:462,columnNumber:9},this),s.jsxDEV(le,{onClick:()=>{_(),o(!0)},children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:469,columnNumber:11},this),"Create Prompt"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:463,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:461,columnNumber:7},this),s.jsxDEV("div",{className:"mb-6 flex items-center gap-2",children:[s.jsxDEV(We,{htmlFor:"filter-tag",children:"Filter by tag:"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:475,columnNumber:9},this),s.jsxDEV("select",{id:"filter-tag",value:h,onChange:M=>g(M.target.value),className:"flex h-10 rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[s.jsxDEV("option",{value:"",children:"All"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:482,columnNumber:11},this),V.map(M=>s.jsxDEV("option",{value:M,children:M},M,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:484,columnNumber:13},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:476,columnNumber:9},this),h&&s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>g(""),children:"Clear"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:490,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:474,columnNumber:7},this),b&&s.jsxDEV("p",{className:"text-muted-foreground",children:"Loading..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:496,columnNumber:21},this),D&&s.jsxDEV("div",{className:"grid gap-4",children:[j.map(M=>s.jsxDEV("div",{className:"border rounded-lg p-4 bg-card",children:[s.jsxDEV("div",{className:"flex justify-between items-start mb-3",children:[s.jsxDEV("div",{className:"flex-1",children:[s.jsxDEV("h3",{className:"text-lg font-semibold",children:M.title},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:504,columnNumber:19},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:["Version ",M.version," • Updated"," ",new Date(M.updatedAt).toLocaleDateString()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:505,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:503,columnNumber:17},this),s.jsxDEV("div",{className:"flex gap-2",children:[s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>R(M),children:"Edit"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:511,columnNumber:19},this),s.jsxDEV(le,{variant:"destructive",size:"sm",onClick:()=>k(M.id),children:"Delete"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:514,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:510,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:502,columnNumber:15},this),s.jsxDEV("pre",{className:"bg-muted p-3 rounded-md overflow-auto max-h-48 text-sm mb-3 font-mono whitespace-pre-wrap break-words",children:M.contentPreview},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:519,columnNumber:15},this),M.tags.length>0&&s.jsxDEV("div",{className:"flex flex-wrap gap-2",children:M.tags.map(F=>s.jsxDEV(Je,{variant:"secondary",children:[s.jsxDEV(MV,{className:"h-3 w-3 mr-1"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:526,columnNumber:23},this),F]},F,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:525,columnNumber:21},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:523,columnNumber:17},this)]},M.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:501,columnNumber:13},this)),j.length===0&&s.jsxDEV("p",{className:"text-center text-muted-foreground py-8",children:"No prompts found. Create your first prompt to get started."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:535,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:499,columnNumber:9},this),s.jsxDEV(Es,{open:r,onOpenChange:o,children:s.jsxDEV(xs,{className:"max-w-4xl max-h-[90vh] overflow-y-auto",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:c?"Edit Prompt":"Create Prompt"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:545,columnNumber:13},this),s.jsxDEV(ls,{children:c?"Update prompt details, content, and tags.":"Create a reusable prompt for this project."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:546,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:544,columnNumber:11},this),s.jsxDEV("div",{className:"grid gap-6 md:grid-cols-[minmax(0,1fr)_280px]",children:[s.jsxDEV("form",{onSubmit:P,className:"space-y-4",children:[s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"title",children:"Title *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:555,columnNumber:17},this),s.jsxDEV(Tt,{id:"title",type:"text",value:l.title,onChange:M=>d({...l,title:M.target.value}),required:!0,placeholder:"Enter prompt title"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:556,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:554,columnNumber:15},this),s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"flex justify-between items-center mb-2",children:[s.jsxDEV(We,{htmlFor:"content",children:"Content *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:568,columnNumber:19},this),s.jsxDEV(le,{type:"button",variant:"outline",size:"sm",onClick:()=>y(!m),children:m?"Edit":"Preview"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:569,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:567,columnNumber:17},this),m?s.jsxDEV("div",{className:"border rounded-md p-4 min-h-[300px] bg-muted/50",children:l.content?s.jsxDEV(rce,{content:l.content},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:581,columnNumber:23},this):s.jsxDEV("p",{className:"text-muted-foreground",children:"No content to preview"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:583,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:579,columnNumber:19},this):s.jsxDEV(ta,{id:"content",value:l.content,onChange:M=>d({...l,content:M.target.value}),required:!0,placeholder:"Enter prompt content (supports markdown)",className:"min-h-[300px] font-mono"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:587,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:566,columnNumber:15},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{children:"Tags"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:599,columnNumber:17},this),s.jsxDEV(nce,{tags:l.tags,suggestions:V,onAddTag:M=>d({...l,tags:[...l.tags,M]}),onRemoveTag:M=>d({...l,tags:l.tags.filter(F=>F!==M)}),onInputChange:C},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:600,columnNumber:17},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground mt-1",children:'Supports both single labels (e.g., "bug") and key:value pairs (e.g., "category:feature"). Press Enter or comma to add.'},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:609,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:598,columnNumber:15},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{type:"button",variant:"outline",onClick:()=>{o(!1),_()},children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:616,columnNumber:17},this),s.jsxDEV(le,{type:"submit",disabled:w.isPending||N.isPending,children:c?"Update":"Create"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:626,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:615,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:553,columnNumber:13},this),s.jsxDEV("aside",{className:"rounded-md border bg-muted/50 p-4 space-y-3",children:[s.jsxDEV("div",{children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-foreground",children:"Available Variables"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:637,columnNumber:17},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-1",children:"These placeholders are replaced when a session starts."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:638,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:636,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-3 text-sm",children:ece.map(M=>s.jsxDEV("div",{className:"space-y-1",children:[s.jsxDEV("code",{className:"font-mono text-xs bg-background/60 px-2 py-1 rounded",children:M.token},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:645,columnNumber:21},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:M.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:648,columnNumber:21},this)]},M.token,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:644,columnNumber:19},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:642,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:635,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:552,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:543,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:542,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/PromptsPage.tsx",lineNumber:460,columnNumber:5},this)}async function lce(e){const t=await fetch(`/api/profiles?projectId=${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch profiles");return t.json()}async function cce(e){const t=await fetch(`/api/prompts?projectId=${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch prompts");return t.json()}async function uce(){const e=await fetch("/api/providers");if(!e.ok)throw new Error("Failed to fetch providers");return e.json()}async function pce(e){const t=await fetch("/api/profiles",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error("Failed to create profile");return t.json()}async function dce(e,t){const i=await fetch(`/api/profiles/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok)throw new Error("Failed to update profile");return i.json()}async function V9(e,t){const i=await fetch(`/api/profiles/${e}/prompts`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({promptIds:t})});if(!i.ok)throw new Error("Failed to update profile prompts");return i.json()}async function hce(e){if(!(await fetch(`/api/profiles/${e}`,{method:"DELETE"})).ok)throw new Error("Failed to delete profile")}async function mce(e){const t=await fetch(`/api/profiles/${e}/provider-configs`);if(!t.ok)throw new Error("Failed to fetch provider configs");return t.json()}async function fce(e,t){const i=await fetch(`/api/profiles/${e}/provider-configs`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok){const r=await i.json().catch(()=>({}));throw new Error(r.message||"Failed to create provider config")}return i.json()}async function gce(e,t){const i=await fetch(`/api/provider-configs/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok){const r=await i.json().catch(()=>({}));throw new Error(r.message||"Failed to update provider config")}return i.json()}async function vce(e){const t=await fetch(`/api/provider-configs/${e}`,{method:"DELETE"});if(!t.ok){const i=await t.json().catch(()=>({}));throw new Error(i.message||"Failed to delete provider config")}}function bce({prompts:e,orderedPromptIds:t,onReorder:i}){const[r,o]=f.useState(null),[c,u]=f.useState(null),l=t.map(C=>e.find(D=>D.id===C)).filter(C=>C!==void 0),d=C=>{o(C)},h=(C,D)=>{if(C.preventDefault(),r===null||r===D)return;const b=[...t],[w]=b.splice(r,1);b.splice(D,0,w),o(D),i(b)},g=()=>{o(null)},m=C=>{if(C===0)return;const D=[...t];[D[C-1],D[C]]=[D[C],D[C-1]],i(D),u(C-1)},y=C=>{if(C===t.length-1)return;const D=[...t];[D[C],D[C+1]]=[D[C+1],D[C]],i(D),u(C+1)},E=C=>{const D=[...t];D.splice(C,1),i(D)};return l.length===0?s.jsxDEV("div",{className:"text-center text-muted-foreground py-4 border rounded-md",children:"No prompts assigned. Select prompts below to add them."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:264,columnNumber:7},this):s.jsxDEV("div",{className:"space-y-2",children:l.map((C,D)=>s.jsxDEV("div",{draggable:!0,onDragStart:()=>d(D),onDragOver:b=>h(b,D),onDragEnd:g,className:we("flex items-center gap-2 p-3 border rounded-md bg-card cursor-move transition-colors",r===D&&"opacity-50",c===D&&"ring-2 ring-ring"),children:[s.jsxDEV(m2,{className:"h-4 w-4 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:285,columnNumber:11},this),s.jsxDEV("div",{className:"flex-1",children:[s.jsxDEV("div",{className:"font-medium text-sm",children:C.title},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:287,columnNumber:13},this),s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:["Order: ",D+1]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:288,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:286,columnNumber:11},this),s.jsxDEV("div",{className:"flex gap-1",children:[s.jsxDEV(le,{type:"button",variant:"ghost",size:"sm",onClick:()=>m(D),disabled:D===0,"aria-label":"Move up",children:s.jsxDEV(d0,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:299,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:291,columnNumber:13},this),s.jsxDEV(le,{type:"button",variant:"ghost",size:"sm",onClick:()=>y(D),disabled:D===l.length-1,"aria-label":"Move down",children:s.jsxDEV(u2,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:309,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:301,columnNumber:13},this),s.jsxDEV(le,{type:"button",variant:"ghost",size:"sm",onClick:()=>E(D),"aria-label":"Remove",children:s.jsxDEV(jl,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:318,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:311,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:290,columnNumber:11},this)]},C.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:273,columnNumber:9},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:271,columnNumber:5},this)}function T9({env:e,onChange:t}){const[i,r]=f.useState(""),[o,c]=f.useState(""),[u,l]=f.useState(null),d=Object.entries(e),h=E=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(E),g=()=>{const E=i.trim();if(!E){l("Key is required");return}if(!h(E)){l("Key must be alphanumeric with underscores, starting with a letter or underscore");return}if(e[E]!==void 0){l("Key already exists");return}l(null),t({...e,[E]:o}),r(""),c("")},m=E=>{const C={...e};delete C[E],t(C)},y=(E,C)=>{t({...e,[E]:C})};return s.jsxDEV("div",{className:"space-y-3",children:[d.length>0&&s.jsxDEV("div",{className:"space-y-2",children:d.map(([E,C])=>s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Tt,{value:E,readOnly:!0,className:"w-1/3 font-mono text-sm bg-muted"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:385,columnNumber:15},this),s.jsxDEV(Tt,{value:C,onChange:D=>y(E,D.target.value),className:"flex-1 font-mono text-sm",placeholder:"Value"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:386,columnNumber:15},this),s.jsxDEV(le,{type:"button",variant:"ghost",size:"sm",onClick:()=>m(E),"aria-label":"Remove",children:s.jsxDEV(jl,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:399,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:392,columnNumber:15},this)]},E,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:384,columnNumber:13},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:382,columnNumber:9},this),s.jsxDEV("div",{className:"flex items-start gap-2",children:[s.jsxDEV("div",{className:"w-1/3",children:[s.jsxDEV(Tt,{value:i,onChange:E=>{r(E.target.value),l(null)},className:"font-mono text-sm",placeholder:"NEW_KEY"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:407,columnNumber:11},this),u&&s.jsxDEV("p",{className:"text-xs text-destructive mt-1",children:u},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:416,columnNumber:24},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:406,columnNumber:9},this),s.jsxDEV(Tt,{value:o,onChange:E=>c(E.target.value),className:"flex-1 font-mono text-sm",placeholder:"value",onKeyDown:E=>{E.key==="Enter"&&(E.preventDefault(),g())}},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:418,columnNumber:9},this),s.jsxDEV(le,{type:"button",variant:"outline",size:"sm",onClick:g,children:s.jsxDEV(qi,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:431,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:430,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:405,columnNumber:7},this),d.length===0&&s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"No environment variables. Add key-value pairs that will be set when launching sessions."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:435,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:380,columnNumber:5},this)}function Nce({profileId:e,providers:t,providersById:i,onConfigChange:r}){const o=zs(),{toast:c}=ii(),[u,l]=f.useState(!0),[d,h]=f.useState(!1),[g,m]=f.useState(null),[y,E]=f.useState([]),[C,D]=f.useState(null),[b,w]=f.useState({providerId:"",name:"",options:"",env:{}}),{data:N,isLoading:x}=st({queryKey:["provider-configs",e],queryFn:()=>mce(e),enabled:!!e});f.useEffect(()=>{N&&E(N.map($=>$.id))},[N]);const _=yt({mutationFn:$=>fce(e,$),onSuccess:()=>{o.invalidateQueries({queryKey:["provider-configs",e]}),h(!1),j(),c({title:"Success",description:"Provider configuration created"}),r==null||r()},onError:$=>{c({title:"Error",description:$ instanceof Error?$.message:"Failed to create configuration",variant:"destructive"})}}),P=yt({mutationFn:({id:$,data:W})=>gce($,W),onSuccess:()=>{o.invalidateQueries({queryKey:["provider-configs",e]}),m(null),j(),c({title:"Success",description:"Provider configuration updated"}),r==null||r()},onError:$=>{c({title:"Error",description:$ instanceof Error?$.message:"Failed to update configuration",variant:"destructive"})}}),R=yt({mutationFn:vce,onSuccess:()=>{o.invalidateQueries({queryKey:["provider-configs",e]}),c({title:"Success",description:"Provider configuration deleted"}),r==null||r()},onError:$=>{c({title:"Error",description:$ instanceof Error?$.message:"Failed to delete configuration",variant:"destructive"})}}),k=yt({mutationFn:async $=>{const W=await fetch(`/api/profiles/${e}/provider-configs/order`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({configIds:$})});if(!W.ok){const ee=await W.json();throw new Error(ee.message||"Failed to reorder configurations")}return W.json()},onSuccess:()=>{o.invalidateQueries({queryKey:["provider-configs",e]}),c({title:"Success",description:"Provider configurations reordered"}),r==null||r()},onError:$=>{c({title:"Error",description:$ instanceof Error?$.message:"Failed to reorder configurations",variant:"destructive"}),N&&E(N.map(W=>W.id))}}),j=()=>{w({providerId:"",name:"",options:"",env:{}})},V=()=>{if(!b.providerId){c({title:"Error",description:"Please select a provider",variant:"destructive"});return}const $=b.name.trim();if($&&(N!=null&&N.some(W=>W.name===$))){c({title:"Error",description:"A configuration with this name already exists",variant:"destructive"});return}_.mutate({providerId:b.providerId,name:$||void 0,options:b.options.trim()||null,env:Object.keys(b.env).length>0?b.env:null})},M=$=>{const W=b.name.trim();if(W&&(N!=null&&N.some(ee=>ee.id!==$&&ee.name===W))){c({title:"Error",description:"A configuration with this name already exists",variant:"destructive"});return}P.mutate({id:$,data:{name:W||void 0,options:b.options.trim()||null,env:Object.keys(b.env).length>0?b.env:null}})},F=$=>{confirm("Are you sure you want to delete this configuration?")&&R.mutate($)},I=$=>{m($.id),w({providerId:$.providerId,name:$.name||"",options:$.options||"",env:$.env||{}}),h(!1)},A=()=>{m(null),j()},O=$=>{D($)},K=($,W)=>{if($.preventDefault(),C===null||C===W)return;const ee=[...y],[se]=ee.splice(C,1);ee.splice(W,0,se),E(ee),D(W)},q=()=>{D(null),k.mutate(y)},Y=$=>{if($===0)return;const W=[...y];[W[$-1],W[$]]=[W[$],W[$-1]],E(W),k.mutate(W)},H=$=>{if($===y.length-1)return;const W=[...y];[W[$],W[$+1]]=[W[$+1],W[$]],E(W),k.mutate(W)},L=y.map($=>N==null?void 0:N.find(W=>W.id===$)).filter($=>$!==void 0),z=t;return s.jsxDEV("div",{className:"border rounded-lg",children:[s.jsxDEV("button",{type:"button",onClick:()=>l(!u),className:"w-full flex items-center justify-between p-3 hover:bg-muted/50 transition-colors",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(f2,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:701,columnNumber:11},this),s.jsxDEV("span",{className:"font-medium",children:"Provider Configurations"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:702,columnNumber:11},this),s.jsxDEV(Je,{variant:"secondary",children:(N==null?void 0:N.length)||0},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:703,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:700,columnNumber:9},this),u?s.jsxDEV(Gf,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:705,columnNumber:21},this):s.jsxDEV(Fr,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:705,columnNumber:57},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:695,columnNumber:7},this),u&&s.jsxDEV("div",{className:"p-3 pt-0 space-y-3",children:[x&&s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Loading..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:710,columnNumber:25},this),L.length===0&&!d&&s.jsxDEV("p",{className:"text-sm text-muted-foreground py-2",children:"No provider configurations. Add one to enable agent launching."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:713,columnNumber:13},this),L.map(($,W)=>{var ee,se;return s.jsxDEV("div",{draggable:!k.isPending,onDragStart:()=>!k.isPending&&O(W),onDragOver:ge=>!k.isPending&&K(ge,W),onDragEnd:q,className:we("group border rounded-md p-3 space-y-3 transition-colors",C===W&&"opacity-50",k.isPending&&"cursor-not-allowed opacity-70"),children:g===$.id?s.jsxDEV(s.Fragment,{children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Je,{children:((ee=i.get($.providerId))==null?void 0:ee.name)||"Unknown"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:736,columnNumber:21},this),s.jsxDEV("span",{className:"text-sm text-muted-foreground",children:"(editing)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:737,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:735,columnNumber:19},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"text-xs",children:"Name *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:740,columnNumber:21},this),s.jsxDEV(Tt,{value:b.name,onChange:ge=>w({...b,name:ge.target.value}),placeholder:"e.g., claude-glm, claude-default",className:"text-sm h-9"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:741,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:739,columnNumber:19},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"text-xs",children:"Options"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:749,columnNumber:21},this),s.jsxDEV(ta,{value:b.options,onChange:ge=>w({...b,options:ge.target.value}),placeholder:"--model claude-3 --max-tokens 4000",rows:2,className:"text-sm"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:750,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:748,columnNumber:19},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"text-xs",children:"Environment Variables"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:759,columnNumber:21},this),s.jsxDEV(T9,{env:b.env,onChange:ge=>w({...b,env:ge})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:760,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:758,columnNumber:19},this),s.jsxDEV("div",{className:"flex gap-2",children:[s.jsxDEV(le,{type:"button",size:"sm",onClick:()=>M($.id),disabled:P.isPending||!b.name.trim(),children:"Save"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:766,columnNumber:21},this),s.jsxDEV(le,{type:"button",variant:"outline",size:"sm",onClick:A,children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:774,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:765,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:734,columnNumber:17},this):s.jsxDEV(s.Fragment,{children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(m2,{className:"h-4 w-4 text-muted-foreground cursor-move"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:783,columnNumber:21},this),s.jsxDEV("div",{className:"flex-1 flex items-center justify-between",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV("span",{className:"font-medium",children:$.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:786,columnNumber:25},this),s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:((se=i.get($.providerId))==null?void 0:se.name)||"Unknown"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:787,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:785,columnNumber:23},this),s.jsxDEV("div",{className:"flex gap-1 relative",children:[s.jsxDEV("span",{className:"absolute right-full mr-1 inline-flex items-center opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 transition-opacity duration-200",children:[s.jsxDEV(le,{type:"button",variant:"ghost",size:"sm",onClick:()=>Y(W),disabled:W===0||k.isPending,"aria-label":"Move up",children:s.jsxDEV(d0,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:801,columnNumber:29},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:793,columnNumber:27},this),s.jsxDEV(le,{type:"button",variant:"ghost",size:"sm",onClick:()=>H(W),disabled:W===L.length-1||k.isPending,"aria-label":"Move down",children:s.jsxDEV(u2,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:813,columnNumber:29},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:803,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:792,columnNumber:25},this),s.jsxDEV(le,{type:"button",variant:"ghost",size:"sm",onClick:()=>I($),children:"Edit"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:816,columnNumber:25},this),s.jsxDEV(le,{type:"button",variant:"ghost",size:"sm",onClick:()=>F($.id),disabled:R.isPending,children:s.jsxDEV(er,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:831,columnNumber:27},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:824,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:791,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:784,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:782,columnNumber:19},this),$.options&&s.jsxDEV("div",{className:"text-sm",children:[s.jsxDEV("span",{className:"text-muted-foreground",children:"Options:"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:838,columnNumber:23},this)," ",s.jsxDEV("span",{className:"font-mono",children:$.options},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:839,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:837,columnNumber:21},this),$.env&&Object.keys($.env).length>0&&s.jsxDEV("div",{className:"text-sm",children:[s.jsxDEV("span",{className:"text-muted-foreground",children:"Env:"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:844,columnNumber:23},this)," ",s.jsxDEV("span",{className:"font-mono",children:Object.keys($.env).join(", ")},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:845,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:843,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:781,columnNumber:17},this)},$.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:720,columnNumber:13},this)}),d&&s.jsxDEV("div",{className:"border rounded-md p-3 space-y-3 bg-muted/30",children:[s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"text-xs",children:"Provider *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:857,columnNumber:17},this),s.jsxDEV("select",{value:b.providerId,onChange:$=>{const W=$.target.value,ee=i.get(W),se=(ee==null?void 0:ee.name)||"";w({...b,providerId:W,name:se})},className:"flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm",children:[s.jsxDEV("option",{value:"",children:"-- Select provider --"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:869,columnNumber:19},this),z.map($=>s.jsxDEV("option",{value:$.id,children:$.name},$.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:871,columnNumber:21},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:858,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:856,columnNumber:15},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"text-xs",children:"Name"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:878,columnNumber:17},this),s.jsxDEV(Tt,{value:b.name,onChange:$=>w({...b,name:$.target.value}),placeholder:"e.g., claude-glm, claude-default (auto-generated if empty)",className:"text-sm h-9"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:879,columnNumber:17},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-1",children:"Unique name for this configuration. Leave empty to auto-generate."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:885,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:877,columnNumber:15},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"text-xs",children:"Options"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:890,columnNumber:17},this),s.jsxDEV(ta,{value:b.options,onChange:$=>w({...b,options:$.target.value}),placeholder:"--model claude-3 --max-tokens 4000",rows:2,className:"text-sm"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:891,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:889,columnNumber:15},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"text-xs",children:"Environment Variables"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:900,columnNumber:17},this),s.jsxDEV(T9,{env:b.env,onChange:$=>w({...b,env:$})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:901,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:899,columnNumber:15},this),s.jsxDEV("div",{className:"flex gap-2",children:[s.jsxDEV(le,{type:"button",size:"sm",onClick:V,disabled:_.isPending||!b.providerId||!b.name.trim(),children:"Add Configuration"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:907,columnNumber:17},this),s.jsxDEV(le,{type:"button",variant:"outline",size:"sm",onClick:()=>{h(!1),j()},children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:917,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:906,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:855,columnNumber:13},this),!d&&s.jsxDEV(le,{type:"button",variant:"outline",size:"sm",onClick:()=>{h(!0),m(null),j()},className:"w-full",children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:945,columnNumber:15},this),"Add Provider Configuration"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:934,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:709,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:694,columnNumber:5},this)}function xce(){const e=zs(),{toast:t}=ii(),{selectedProjectId:i}=Gi(),[r,o]=f.useState(!1),[c,u]=f.useState(null),[l,d]=f.useState({name:"",familySlug:"",instructions:"",orderedPromptIds:[]}),{data:h,isLoading:g}=st({queryKey:["profiles",i],queryFn:()=>lce(i),enabled:!!i}),{data:m}=st({queryKey:["prompts",i],queryFn:()=>cce(i),enabled:!!i}),{data:y}=st({queryKey:["providers"],queryFn:uce}),E=f.useMemo(()=>{const k=new Map;return y!=null&&y.items&&y.items.forEach(j=>{k.set(j.id,j)}),k},[y]),C=yt({mutationFn:pce,onMutate:async k=>{await e.cancelQueries({queryKey:["profiles",i]});const j=e.getQueryData(["profiles",i]);return e.setQueryData(["profiles",i],V=>({...V,items:[{id:"temp-"+Date.now(),name:k.name,familySlug:k.familySlug??null,instructions:k.instructions??null,prompts:[],agentCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()},...(V==null?void 0:V.items)||[]]})),{previousData:j}},onSuccess:async k=>{try{l.orderedPromptIds.length>0&&(k!=null&&k.id)&&await V9(k.id,l.orderedPromptIds)}catch(j){t({title:"Warning",description:j instanceof Error?j.message:"Failed to persist prompt ordering",variant:"destructive"})}finally{e.invalidateQueries({queryKey:["profiles",i]}),o(!1),w(),t({title:"Success",description:"Profile created successfully"})}},onError:(k,j,V)=>{V!=null&&V.previousData&&e.setQueryData(["profiles",i],V.previousData),t({title:"Error",description:k instanceof Error?k.message:"Failed to create profile",variant:"destructive"})}}),D=yt({mutationFn:({id:k,data:j})=>dce(k,j),onMutate:async({id:k,data:j})=>{await e.cancelQueries({queryKey:["profiles",i]});const V=e.getQueryData(["profiles",i]);return e.setQueryData(["profiles",i],M=>({...M,items:((M==null?void 0:M.items)||[]).map(F=>F.id===k?{...F,name:j.name??F.name,instructions:j.instructions!==void 0?j.instructions??null:F.instructions,updatedAt:new Date().toISOString()}:F)})),{previousData:V}},onSuccess:async(k,j)=>{try{l.orderedPromptIds.length>=0&&(j!=null&&j.id)&&await V9(j.id,l.orderedPromptIds)}catch(V){t({title:"Warning",description:V instanceof Error?V.message:"Failed to persist prompt ordering",variant:"destructive"})}finally{e.invalidateQueries({queryKey:["profiles",i]}),o(!1),u(null),w(),t({title:"Success",description:"Profile updated successfully"})}},onError:(k,j,V)=>{V!=null&&V.previousData&&e.setQueryData(["profiles",i],V.previousData),t({title:"Error",description:k instanceof Error?k.message:"Failed to update profile",variant:"destructive"})}}),b=yt({mutationFn:hce,onMutate:async k=>{await e.cancelQueries({queryKey:["profiles",i]});const j=e.getQueryData(["profiles",i]);return e.setQueryData(["profiles",i],V=>({...V,items:((V==null?void 0:V.items)||[]).filter(M=>M.id!==k)})),{previousData:j}},onSuccess:()=>{e.invalidateQueries({queryKey:["profiles",i]}),t({title:"Success",description:"Profile deleted successfully"})},onError:(k,j,V)=>{V!=null&&V.previousData&&e.setQueryData(["profiles",i],V.previousData),t({title:"Error",description:k instanceof Error?k.message:"Failed to delete profile",variant:"destructive"})}}),w=()=>{d({name:"",familySlug:"",instructions:"",orderedPromptIds:[]}),u(null)},N=k=>{if(k.preventDefault(),!i){t({title:"Error",description:"Please select a project first",variant:"destructive"});return}const j=l.instructions.trim().length>0?l.instructions:null,V=l.familySlug.trim(),M=V.length>0?V:null;c?D.mutate({id:c.id,data:{name:l.name,familySlug:M,promptIds:l.orderedPromptIds,instructions:j}}):C.mutate({projectId:i,name:l.name,familySlug:M,promptIds:l.orderedPromptIds,instructions:j})},x=k=>{u(k),d({name:k.name,familySlug:k.familySlug??"",instructions:k.instructions??"",orderedPromptIds:(k.prompts||[]).sort((j,V)=>j.order-V.order).map(j=>j.promptId)}),o(!0)},_=(k,j)=>{if(j>0){t({title:"Cannot delete",description:`This profile is used by ${j} agent(s). Remove agent assignments first.`,variant:"destructive"});return}confirm("Are you sure you want to delete this profile?")&&b.mutate(k)},P=f.useMemo(()=>(m==null?void 0:m.items)||[],[m]),R=f.useMemo(()=>P.filter(k=>!l.orderedPromptIds.includes(k.id)),[P,l.orderedPromptIds]);return s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"flex justify-between items-center mb-6",children:[s.jsxDEV("h1",{className:"text-3xl font-bold",children:"Agent Profiles"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1251,columnNumber:9},this),s.jsxDEV(le,{onClick:()=>{w(),o(!0)},children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1258,columnNumber:11},this),"Create Profile"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1252,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1250,columnNumber:7},this),g&&s.jsxDEV("p",{className:"text-muted-foreground",children:"Loading..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1263,columnNumber:27},this),i&&h&&s.jsxDEV("div",{className:"grid gap-4",children:[h.items.map(k=>{var j;return s.jsxDEV("div",{className:"border rounded-lg p-4 bg-card",children:[s.jsxDEV("div",{className:"flex justify-between items-start mb-3",children:[s.jsxDEV("div",{className:"flex-1",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-1",children:[s.jsxDEV("h3",{className:"text-lg font-semibold",children:[k.name,k.familySlug&&s.jsxDEV("span",{className:"ml-2 text-sm font-normal text-muted-foreground",children:["(",k.familySlug,")"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1275,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1272,columnNumber:21},this),(j=k.provider)!=null&&j.name?s.jsxDEV(Je,{variant:"secondary",children:k.provider.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1281,columnNumber:23},this):s.jsxDEV(Je,{variant:"outline",className:"text-amber-600 border-amber-400 gap-1",children:[s.jsxDEV(si,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1284,columnNumber:25},this),"No provider config"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1283,columnNumber:23},this),k.agentCount&&k.agentCount>0&&s.jsxDEV(Je,{variant:"outline",className:"gap-1",children:[s.jsxDEV(b2,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1291,columnNumber:25},this),k.agentCount," agent",k.agentCount!==1?"s":""]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1290,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1271,columnNumber:19},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:[(k.prompts||[]).length," prompt",(k.prompts||[]).length!==1?"s":""," assigned"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1296,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1270,columnNumber:17},this),s.jsxDEV("div",{className:"flex gap-2",children:[s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>x(k),children:"Edit"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1302,columnNumber:19},this),s.jsxDEV(le,{variant:"destructive",size:"sm",onClick:()=>_(k.id,k.agentCount||0),children:"Delete"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1305,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1301,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1269,columnNumber:15},this),k.prompts&&k.prompts.length>0&&s.jsxDEV("div",{className:"mt-3 space-y-2",children:[s.jsxDEV("p",{className:"text-sm font-medium",children:"Prompts (in order):"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1316,columnNumber:19},this),s.jsxDEV("div",{className:"space-y-1",children:k.prompts.sort((V,M)=>V.order-M.order).map((V,M)=>s.jsxDEV("div",{className:"flex items-center gap-2 text-sm p-2 bg-muted/50 rounded",children:[s.jsxDEV("span",{className:"text-muted-foreground",children:[M+1,"."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1325,columnNumber:27},this),s.jsxDEV("span",{children:V.prompt.title},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1326,columnNumber:27},this)]},V.promptId,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1321,columnNumber:25},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1317,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1315,columnNumber:17},this)]},k.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1268,columnNumber:13},this)}),h.items.length===0&&s.jsxDEV("p",{className:"text-center text-muted-foreground py-8",children:"No profiles found. Create your first profile to get started."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1335,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1266,columnNumber:9},this),s.jsxDEV(Es,{open:r,onOpenChange:o,children:s.jsxDEV(xs,{className:"max-w-5xl w-full max-h-[90vh] overflow-y-auto",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:c?"Edit Profile":"Create Profile"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1345,columnNumber:13},this),s.jsxDEV(ls,{children:c?"Update profile settings, prompt ordering, and instructions.":"Create a profile with prompts and instructions for agents."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1346,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1344,columnNumber:11},this),s.jsxDEV("form",{onSubmit:N,className:"space-y-4",children:[s.jsxDEV("div",{className:"grid gap-6 lg:grid-cols-[1fr_1.5fr]",children:[s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"name",children:"Name *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1357,columnNumber:19},this),s.jsxDEV(Tt,{id:"name",type:"text",value:l.name,onChange:k=>d({...l,name:k.target.value}),required:!0,placeholder:"Enter profile name"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1358,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1356,columnNumber:17},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"familySlug",children:"Family Slug"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1369,columnNumber:19},this),s.jsxDEV(Tt,{id:"familySlug",type:"text",value:l.familySlug,onChange:k=>d({...l,familySlug:k.target.value}),placeholder:"e.g., coder, architect"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1370,columnNumber:19},this),s.jsxDEV("p",{className:"mt-1 text-sm text-muted-foreground",children:"Groups equivalent profiles across providers. Profiles with the same family slug can be switched between providers."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1377,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1368,columnNumber:17},this),c&&s.jsxDEV(Nce,{profileId:c.id,providers:(y==null?void 0:y.items)||[],providersById:E,onConfigChange:()=>{e.invalidateQueries({queryKey:["profiles",i]})}},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1385,columnNumber:19},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{children:"Assigned Prompts (ordered)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1396,columnNumber:19},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground mb-2",children:"Drag to reorder, or use arrow buttons for keyboard navigation"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1397,columnNumber:19},this),s.jsxDEV(bce,{prompts:P,orderedPromptIds:l.orderedPromptIds,onReorder:k=>d({...l,orderedPromptIds:k})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1400,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1395,columnNumber:17},this),R.length>0&&s.jsxDEV("div",{children:[s.jsxDEV(We,{children:"Add Prompts"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1409,columnNumber:21},this),s.jsxDEV("div",{className:"grid grid-cols-2 gap-2 mt-2",children:R.map(k=>s.jsxDEV("button",{type:"button",onClick:()=>d({...l,orderedPromptIds:[...l.orderedPromptIds,k.id]}),className:"text-left p-2 border rounded-md hover:bg-muted transition-colors text-sm",children:k.title},k.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1412,columnNumber:25},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1410,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1408,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1355,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"instructions",children:"Instructions"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1433,columnNumber:17},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:["Use ",s.jsxDEV("span",{className:"font-mono",children:"#"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1435,columnNumber:23},this)," for grouped references and"," ",s.jsxDEV("span",{className:"font-mono",children:"@"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1436,columnNumber:19},this)," to search documents while you type."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1434,columnNumber:17},this),s.jsxDEV(Ose,{id:"instructions",value:l.instructions,onChange:k=>d({...l,instructions:k}),placeholder:"Add guidance for this profile...",rows:22,projectId:i},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1438,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1432,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1353,columnNumber:13},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{type:"button",variant:"outline",onClick:()=>{o(!1),w()},children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1450,columnNumber:15},this),s.jsxDEV(le,{type:"submit",disabled:C.isPending||D.isPending,children:c?"Update":"Create"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1460,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1449,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1352,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1343,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1342,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProfilesPage.tsx",lineNumber:1249,columnNumber:5},this)}function zb(e){return e==="codex"?"codex":e==="claude"?"claude":e==="gemini"?"gemini":""}function R9(e){return!!(e&&typeof e=="object"&&"field"in e)}async function wce(){const e=await fetch("/api/providers");if(!e.ok)throw new Error("Failed to fetch providers");return e.json()}async function yce(e){const t=await fetch("/api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const i=await t.json().catch(()=>({message:"Failed to create provider"})),r=new Error(i.message||"Failed to create provider");throw i.field&&(r.field=i.field),r}return t.json()}async function Ece(e,t){const i=await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok){const r=await i.json().catch(()=>({message:"Failed to update provider"})),o=new Error(r.message||"Failed to update provider");throw r.field&&(o.field=r.field),o}return i.json()}async function Dce(e){const t=await fetch(`/api/providers/${e}`,{method:"DELETE"});if(!t.ok){const i=await t.json().catch(()=>({message:"Failed to delete provider"})),r=i.message||i.details||"Failed to delete provider";throw new Error(r)}}async function Sce(e,t){const i=JSON.stringify(t?{projectPath:t}:{}),r=await fetch(`/api/providers/${e}/mcp/ensure`,{method:"POST",headers:{"Content-Type":"application/json"},body:i});if(!r.ok){const o=await r.json().catch(()=>({message:"Failed to ensure MCP configuration"}));throw new Error(o.message||"Failed to ensure MCP configuration")}return r.json()}function _ce(){const e=zs(),{toast:t}=ii(),{selectedProject:i}=Gi(),[r,o]=f.useState(!1),[c,u]=f.useState(null),[l,d]=f.useState(null),[h,g]=f.useState({binPath:"",autoCompactThreshold:""}),[m,y]=f.useState(null),[E,C]=f.useState(null),[D,b]=f.useState("codex"),[w,N]=f.useState(!1),{data:x,isLoading:_}=st({queryKey:["providers"],queryFn:wce}),{data:P}=st({queryKey:["preflight","providers-page",(i==null?void 0:i.rootPath)??"global"],queryFn:()=>og(i==null?void 0:i.rootPath),staleTime:3e4,refetchInterval:6e4}),R=f.useMemo(()=>(P==null?void 0:P.supportedMcpProviders)??[],[P==null?void 0:P.supportedMcpProviders]),k=yt({mutationFn:yce,onMutate:async Y=>{await e.cancelQueries({queryKey:["providers"]});const H=e.getQueryData(["providers"]);return e.setQueryData(["providers"],L=>({...L,items:[{id:"temp-"+Date.now(),...Y,mcpConfigured:!1,mcpEndpoint:null,mcpRegisteredAt:null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()},...(L==null?void 0:L.items)||[]]})),{previousData:H}},onSuccess:()=>{e.invalidateQueries({queryKey:["providers"]}),o(!1),g({binPath:"",autoCompactThreshold:""}),y(null),C(null),t({title:"Success",description:"Provider created successfully"})},onError:(Y,H,L)=>{L!=null&&L.previousData&&e.setQueryData(["providers"],L.previousData),R9(Y)&&Y.field&&(y(Y.message),C(Y.field==="autoCompactThreshold"?"autoCompactThreshold":"binPath")),t({title:"Error",description:Y instanceof Error?Y.message:"Failed to create provider",variant:"destructive"})}}),j=yt({mutationFn:({id:Y,data:H})=>Ece(Y,H),onMutate:async({id:Y,data:H})=>{await e.cancelQueries({queryKey:["providers"]});const L=e.getQueryData(["providers"]);return e.setQueryData(["providers"],z=>({...z,items:z==null?void 0:z.items.map($=>$.id===Y?{...$,...H,updatedAt:new Date().toISOString()}:$)})),{previousData:L}},onSuccess:()=>{e.invalidateQueries({queryKey:["providers"]}),o(!1),u(null),g({binPath:"",autoCompactThreshold:""}),y(null),C(null),t({title:"Success",description:"Provider updated successfully"})},onError:(Y,H,L)=>{L!=null&&L.previousData&&e.setQueryData(["providers"],L.previousData),R9(Y)&&Y.field&&(y(Y.message),C(Y.field==="autoCompactThreshold"?"autoCompactThreshold":"binPath")),t({title:"Error",description:Y instanceof Error?Y.message:"Failed to update provider",variant:"destructive"})}}),V=yt({mutationFn:Dce,onMutate:async Y=>{await e.cancelQueries({queryKey:["providers"]});const H=e.getQueryData(["providers"]);return e.setQueryData(["providers"],L=>({...L,items:L==null?void 0:L.items.filter(z=>z.id!==Y)})),{previousData:H}},onSuccess:()=>{e.invalidateQueries({queryKey:["providers"]}),d(null),t({title:"Success",description:"Provider deleted successfully"})},onError:(Y,H,L)=>{L!=null&&L.previousData&&e.setQueryData(["providers"],L.previousData),d(null),t({title:"Error",description:Y instanceof Error?Y.message:"Failed to delete provider",variant:"destructive"})}}),M=yt({mutationFn:Y=>Sce(Y,i==null?void 0:i.rootPath),onSuccess:Y=>{e.invalidateQueries({queryKey:["providers"]}),e.invalidateQueries({queryKey:["preflight"]}),e.refetchQueries({queryKey:["preflight"]});const H={added:"MCP configured successfully",fixed_mismatch:"MCP configuration fixed",already_configured:"MCP already configured"}[Y==null?void 0:Y.action]||"MCP configuration updated";t({title:H,description:`Endpoint: ${window.location.origin}/mcp`})},onError:Y=>{t({title:"MCP configuration failed",description:Y instanceof Error?Y.message:"Failed to configure MCP.",variant:"destructive"})}}),F=Y=>{Y.preventDefault();const H=h.binPath.trim()===""?null:h.binPath.trim(),L=(c==null?void 0:c.name)??D;y(null),C(null);const z=h.autoCompactThreshold.trim();if(z!==""){const $=Number(z);if(isNaN($)||!Number.isInteger($)||$<1||$>100){y("Threshold must be an integer between 1 and 100."),C("autoCompactThreshold");return}}if(c){const $=z===""?null:Number(z);j.mutate({id:c.id,data:{binPath:H,autoCompactThreshold:$}})}else{const $={name:L,binPath:H};z!==""&&D==="claude"&&($.autoCompactThreshold=Number(z)),k.mutate($)}},I=Y=>{u(Y),g({binPath:Y.binPath||"",autoCompactThreshold:Y.autoCompactThreshold!=null?String(Y.autoCompactThreshold):""});const H=Y.name==="codex"?"codex":Y.name==="claude"?"claude":Y.name==="gemini"?"gemini":"codex";b(H),N(!1),y(null),C(null),o(!0)},A=Y=>{d(Y)},O=()=>{l&&V.mutate(l.id)},K=Y=>{if(!R.includes(Y.name)){t({title:"Unsupported provider",description:`${Y.name} does not support MCP registration.`});return}M.mutate(Y.id)},q=()=>{u(null);const Y="codex";g({binPath:zb(Y),autoCompactThreshold:""}),b(Y),N(!1),y(null),C(null),o(!0)};return s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"mb-6 flex justify-between items-start",children:[s.jsxDEV("div",{children:[s.jsxDEV("h1",{className:"text-3xl font-bold mb-2",children:"Providers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:437,columnNumber:11},this),s.jsxDEV("p",{className:"text-muted-foreground",children:"Manage AI provider configurations for agent profiles"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:438,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:436,columnNumber:9},this),s.jsxDEV(le,{onClick:q,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:443,columnNumber:11},this),"Add Provider"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:442,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:435,columnNumber:7},this),_&&s.jsxDEV("p",{className:"text-muted-foreground",children:"Loading providers..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:448,columnNumber:21},this),x&&s.jsxDEV("div",{className:"space-y-4",children:[x.items.length===0&&s.jsxDEV("div",{className:"flex flex-col items-center justify-center py-12 text-center border rounded-lg",children:[s.jsxDEV(qD,{className:"h-12 w-12 text-muted-foreground mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:454,columnNumber:15},this),s.jsxDEV("p",{className:"text-lg font-medium mb-2",children:"No Providers Yet"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:455,columnNumber:15},this),s.jsxDEV("p",{className:"text-muted-foreground mb-4",children:"Add your first AI provider (Claude, Codex, etc.) to get started"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:456,columnNumber:15},this),s.jsxDEV(le,{onClick:q,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:460,columnNumber:17},this),"Add Provider"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:459,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:453,columnNumber:13},this),x.items.map(Y=>{var W;const H=R.includes(Y.name),L=(W=P==null?void 0:P.providers)==null?void 0:W.find(ee=>ee.id===Y.id),z=L==null?void 0:L.mcpStatus,$=z==="pass"?"border border-emerald-500/40 bg-emerald-500/10 text-emerald-600":z==="fail"?"border border-destructive bg-destructive/10 text-destructive":"border border-amber-500/40 bg-amber-500/10 text-amber-600";return s.jsxDEV("div",{className:"border rounded-lg p-4 bg-card",children:s.jsxDEV("div",{className:"flex justify-between items-start gap-4",children:[s.jsxDEV("div",{className:"flex-1 space-y-2",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(qD,{className:"h-5 w-5 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:482,columnNumber:23},this),s.jsxDEV("h3",{className:"text-lg font-semibold",children:Y.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:483,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:481,columnNumber:21},this),s.jsxDEV("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[s.jsxDEV("span",{className:"text-sm",children:"Binary Path:"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:486,columnNumber:23},this),s.jsxDEV("code",{className:"text-sm bg-muted px-2 py-0.5 rounded",children:Y.binPath||"Not configured"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:487,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:485,columnNumber:21},this),Y.name.toLowerCase()==="claude"&&s.jsxDEV("div",{className:"text-sm text-muted-foreground",children:["Auto-compact:"," ",Y.autoCompactThreshold!=null?`${Y.autoCompactThreshold}%`:"disabled"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:492,columnNumber:23},this),s.jsxDEV("div",{className:"flex flex-wrap items-center gap-2",children:[s.jsxDEV(Je,{variant:"secondary",className:we("text-xs",$),children:["MCP ",(z??"warn").toUpperCase()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:500,columnNumber:23},this),Y.mcpRegisteredAt&&s.jsxDEV("span",{className:"text-xs text-muted-foreground",children:["Registered ",new Date(Y.mcpRegisteredAt).toLocaleString()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:504,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:499,columnNumber:21},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:["Created ",new Date(Y.createdAt).toLocaleDateString()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:509,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:480,columnNumber:19},this),s.jsxDEV("div",{className:"flex flex-col gap-2 sm:flex-row",children:[H&&z!=="pass"&&s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>K(Y),disabled:M.isPending,children:"Configure MCP"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:515,columnNumber:23},this),s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>I(Y),children:"Edit"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:524,columnNumber:21},this),s.jsxDEV(le,{variant:"destructive",size:"sm",onClick:()=>A(Y),children:"Delete"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:527,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:513,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:479,columnNumber:17},this)},Y.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:478,columnNumber:15},this)})]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:451,columnNumber:9},this),s.jsxDEV(Es,{open:r,onOpenChange:Y=>{o(Y),Y||(u(null),g({binPath:"",autoCompactThreshold:""}),y(null),C(null))},children:s.jsxDEV(xs,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:c?"Edit Provider":"Add Provider"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:553,columnNumber:13},this),s.jsxDEV(ls,{children:c?"Update the provider configuration":"Configure a new AI provider for use in agent profiles"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:554,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:552,columnNumber:11},this),s.jsxDEV("form",{onSubmit:F,className:"space-y-4",children:[s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"provider-type",children:"Provider Type"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:562,columnNumber:15},this),s.jsxDEV(Ls,{value:D,onValueChange:Y=>{const H=zb(D),L=Y,z=zb(L);b(L),g($=>{const W={};return(!w||$.binPath.trim()===H)&&(W.binPath=z),L!=="claude"&&(W.autoCompactThreshold=""),Object.keys(W).length>0?{...$,...W}:$})},children:[s.jsxDEV(Ts,{id:"provider-type",children:s.jsxDEV($s,{placeholder:"Select provider type"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:585,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:584,columnNumber:17},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"codex",children:"Codex"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:588,columnNumber:19},this),s.jsxDEV(Pt,{value:"claude",children:"Claude"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:589,columnNumber:19},this),s.jsxDEV(Pt,{value:"gemini",children:"Gemini"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:590,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:587,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:563,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-1",children:"Select the provider type (controls default binary name)."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:593,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:561,columnNumber:13},this),s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"provider-binpath",children:"Binary Path"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:600,columnNumber:15},this),s.jsxDEV(Tt,{id:"provider-binpath",type:"text",value:h.binPath,onChange:Y=>{g({...h,binPath:Y.target.value}),N(!0),y(null),C(null)},className:we(E==="binPath"&&"border-destructive focus-visible:ring-destructive"),placeholder:"/path/to/provider/binary"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:601,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-1",children:"Absolute path to provider binary (optional, can be configured later)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:617,columnNumber:15},this),m&&E==="binPath"&&s.jsxDEV("p",{className:"mt-2 text-sm text-destructive",children:m},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:621,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:599,columnNumber:13},this),((c==null?void 0:c.name)??D).toLowerCase()==="claude"&&s.jsxDEV("div",{children:[s.jsxDEV(We,{htmlFor:"provider-threshold",children:"Auto-Compact Threshold (%)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:627,columnNumber:17},this),s.jsxDEV(Tt,{id:"provider-threshold",type:"number",min:1,max:100,value:h.autoCompactThreshold,onChange:Y=>{g({...h,autoCompactThreshold:Y.target.value}),E==="autoCompactThreshold"&&(y(null),C(null))},className:we(E==="autoCompactThreshold"&&"border-destructive focus-visible:ring-destructive"),placeholder:"Default: 85"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:628,columnNumber:17},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-1",children:"Context usage percentage (1-100) that triggers auto-compact. Leave empty to use default on create, or to disable on edit."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:647,columnNumber:17},this),m&&E==="autoCompactThreshold"&&s.jsxDEV("p",{className:"mt-2 text-sm text-destructive",children:m},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:652,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:626,columnNumber:15},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{type:"button",variant:"outline",onClick:()=>{o(!1),u(null);const Y="codex";g({binPath:zb(Y),autoCompactThreshold:""}),b(Y),N(!1),y(null),C(null)},children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:660,columnNumber:15},this),s.jsxDEV(le,{type:"submit",disabled:k.isPending||j.isPending,children:c?"Update":"Create"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:679,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:659,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:560,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:551,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:539,columnNumber:7},this),s.jsxDEV(Es,{open:!!l,onOpenChange:Y=>!Y&&d(null),children:s.jsxDEV(xs,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Delete Provider"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:691,columnNumber:13},this),s.jsxDEV(ls,{children:["Are you sure you want to delete ",s.jsxDEV("strong",{children:l==null?void 0:l.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:693,columnNumber:47},this),"? Any agent profiles using this provider will be affected."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:692,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:690,columnNumber:11},this),s.jsxDEV("div",{className:"bg-amber-50 dark:bg-amber-950 border border-amber-200 dark:border-amber-800 rounded-lg p-3 flex items-start gap-2",children:[s.jsxDEV(si,{className:"h-5 w-5 text-amber-600 dark:text-amber-500 mt-0.5 flex-shrink-0"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:698,columnNumber:13},this),s.jsxDEV("p",{className:"text-sm text-amber-800 dark:text-amber-200",children:"This action cannot be undone. Make sure no profiles are currently using this provider."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:699,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:697,columnNumber:11},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:()=>d(null),children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:704,columnNumber:13},this),s.jsxDEV(le,{variant:"destructive",onClick:O,disabled:V.isPending,children:"Delete"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:707,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:703,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:689,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:688,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ProvidersPage.tsx",lineNumber:434,columnNumber:5},this)}async function Cce(e){const t=await fetch(`/api/projects/${e}/presets`);if(!t.ok)throw new Error("Failed to fetch presets");return t.json()}async function jce(e){const t=await fetch(`/api/profiles/${e}/provider-configs`);if(!t.ok)throw new Error("Failed to fetch provider configs");return t.json()}async function Pce(e,t){const i=await fetch(`/api/projects/${e}/presets/apply`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({presetName:t})});if(!i.ok)throw new Error("Failed to apply preset");return i.json()}function kce({projectId:e,agents:t,agentPresence:i,onAgentsRefresh:r,onEditPreset:o,onDeletePreset:c}){const{toast:u}=ii(),l=zs(),[d,h]=f.useState(""),[g,m]=f.useState(!1),y=f.useRef(!1),{data:E,isLoading:C}=st({queryKey:["project-presets",e],queryFn:()=>Cce(e),enabled:!!e}),{data:D,isLoading:b}=st({queryKey:["provider-configs-by-profile",e,t.map(F=>F.profileId)],queryFn:async()=>{const F=new Set(t.map(O=>O.profileId).filter(Boolean));if(F.size===0)return new Map;const I=await Promise.all(Array.from(F).map(async O=>{try{const K=await jce(O);return{profileId:O,configs:K}}catch{return{profileId:O,configs:[]}}})),A=new Map;return I.forEach(({profileId:O,configs:K})=>{A.set(O,K)}),A},enabled:!!e&&t.length>0}),w=(E==null?void 0:E.presets)||[],N=(E==null?void 0:E.activePreset)??null,x=w.length>0;f.useEffect(()=>{N&&!y.current&&(h(N),y.current=!0)},[N]);const _=f.useMemo(()=>D?w.map((I,A)=>({...H0(I,t,D),originalIndex:A})).sort((I,A)=>I.available&&!A.available?-1:!I.available&&A.available?1:A.originalIndex-I.originalIndex):[],[w,t,D]),P=f.useMemo(()=>d?_.find(F=>F.preset.name===d)??null:null,[d,_]),R=async()=>{if(!d)return;const F=w.find(O=>O.name===d),I=new Set((F==null?void 0:F.agentConfigs.map(O=>O.agentName.trim().toLowerCase()))||[]),A=t.filter(O=>{var K;return I.has(O.name.trim().toLowerCase())&&((K=i[O.id])==null?void 0:K.online)});if(A.length>0){const O=A.map(q=>q.name).join(", ");if(!window.confirm(`The following agents have active sessions: ${O}. Changing their provider configuration may affect running sessions. Continue?`))return}m(!0);try{const O=await Pce(e,d);u({title:"Preset applied",description:`Applied preset to ${O.applied} agent(s)${O.warnings.length>0?` (${O.warnings.length} warning(s))`:""}`}),await l.invalidateQueries({queryKey:["agents",e]}),await l.invalidateQueries({queryKey:["project-presets",e]}),r==null||r()}catch(O){u({title:"Error",description:O instanceof Error?O.message:"Failed to apply preset",variant:"destructive"})}finally{m(!1)}},k=()=>{P&&o&&o(P.preset)},j=()=>{P&&c&&c(P.preset)};if(!x)return null;const V=d&&d!==N,M=!!d;return s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Ls,{value:d,onValueChange:h,disabled:g,children:[s.jsxDEV(Ts,{className:"w-[240px]",children:C||b?s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(ot,{className:"h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:240,columnNumber:15},this),s.jsxDEV("span",{children:"Loading presets..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:241,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:239,columnNumber:13},this):s.jsxDEV($s,{placeholder:"Select a preset..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:244,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:237,columnNumber:9},this),s.jsxDEV(Rs,{children:[_.map(({preset:F,available:I,missingConfigs:A})=>s.jsxDEV(Pt,{value:F.name,children:s.jsxDEV("div",{className:"flex items-center gap-2",children:[I?s.jsxDEV(Or,{className:"h-4 w-4 text-green-500 flex-shrink-0"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:252,columnNumber:19},this):s.jsxDEV(Ir,{children:s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV(si,{className:"h-4 w-4 text-yellow-500 flex-shrink-0"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:257,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:256,columnNumber:23},this),s.jsxDEV(Zi,{side:"right",className:"max-w-xs",children:[s.jsxDEV("p",{className:"font-medium mb-1",children:"Missing configs:"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:260,columnNumber:25},this),s.jsxDEV("ul",{className:"text-sm list-disc pl-4",children:A.map((O,K)=>s.jsxDEV("li",{children:[O.agentName," → ",O.configName]},K,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:263,columnNumber:29},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:261,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:259,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:255,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:254,columnNumber:19},this),s.jsxDEV("span",{className:"font-medium",children:F.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:272,columnNumber:17},this),F.description&&s.jsxDEV("span",{className:"text-xs text-muted-foreground truncate max-w-[100px]",children:F.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:274,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:250,columnNumber:15},this)},F.name,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:249,columnNumber:13},this)),_.length===0&&s.jsxDEV("div",{className:"p-2 text-sm text-muted-foreground text-center",children:"No presets available"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:282,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:247,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:236,columnNumber:7},this),s.jsxDEV(le,{onClick:R,disabled:!V||g,size:"sm",variant:"default",children:[g&&s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:296,columnNumber:24},this),"Apply"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:290,columnNumber:7},this),s.jsxDEV(O0,{children:[s.jsxDEV(I0,{asChild:!0,children:s.jsxDEV(le,{variant:"outline",size:"sm",className:"h-8 w-8 p-0",disabled:!M,children:s.jsxDEV(jV,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:304,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:303,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:302,columnNumber:9},this),s.jsxDEV(lg,{align:"end",children:[o&&s.jsxDEV(Dl,{onClick:k,disabled:!M,children:[s.jsxDEV(Oc,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:310,columnNumber:15},this),"Edit preset"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:309,columnNumber:13},this),c&&s.jsxDEV(Dl,{onClick:j,disabled:!M,className:"text-destructive focus:text-destructive",children:[s.jsxDEV(er,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:320,columnNumber:15},this),"Delete preset"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:315,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:307,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:301,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetSelector.tsx",lineNumber:235,columnNumber:5},this)}async function Vce(e,t){const i=await fetch(`/api/projects/${e}/presets`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok){const r=await i.json().catch(()=>({message:"Failed to create preset"}));throw new Error(r.message||"Failed to create preset")}return i.json()}async function Tce(e,t,i){const r=await fetch(`/api/projects/${e}/presets`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({presetName:t,updates:i})});if(!r.ok){const o=await r.json().catch(()=>({message:"Failed to update preset"}));throw new Error(o.message||"Failed to update preset")}return r.json()}function Rce({open:e,onOpenChange:t,projectId:i,agents:r,existingPresetNames:o=[],presetToEdit:c}){const{toast:u}=ii(),l=zs(),[d,h]=f.useState(!1),[g,m]=f.useState(""),[y,E]=f.useState(""),[C,D]=f.useState([]),b=!!c;f.useEffect(()=>{if(e)if(c)m(c.name),E(c.description||""),D(c.agentConfigs);else{m(""),E("");const F=r.filter(I=>I.providerConfigId&&I.providerConfig);D(F.map(I=>({agentName:I.name,providerConfigName:I.providerConfig.name})))}},[e,c,r]);const w=f.useMemo(()=>r.filter(F=>typeof F.profileId=="string"),[r]),{data:N}=st({queryKey:["provider-configs-by-profile",i,w.map(F=>F.profileId).sort()],queryFn:async()=>{const F=new Set(w.map(O=>O.profileId));if(F.size===0)return new Map;const I=await Promise.all(Array.from(F).map(async O=>{try{const K=await fetch(`/api/profiles/${O}/provider-configs`);if(!K.ok)return{profileId:O,configs:[]};const q=await K.json();return{profileId:O,configs:q}}catch{return{profileId:O,configs:[]}}})),A=new Map;return I.forEach(({profileId:O,configs:K})=>{A.set(O,K)}),A},enabled:e&&w.length>0}),x=g.trim()?o.some(F=>F.trim().toLowerCase()===g.trim().toLowerCase()&&F!==(c==null?void 0:c.name))?"A preset with this name already exists":"":"Name is required",_=!x&&g.trim()!==""&&C.length>0,P=()=>{d||(m(""),E(""),D([]),t(!1))},R=async()=>{if(_){h(!0);try{if(b){const F={name:g.trim(),description:y.trim()||null,agentConfigs:C},I=await Tce(i,c.name,F);u({title:"Preset Updated",description:`Updated preset "${I.name}" with ${C.length} agent configuration(s)`})}else{const F={name:g.trim(),description:y.trim()||null,agentConfigs:C},I=await Vce(i,F);u({title:"Preset Created",description:`Saved preset "${I.name}" with ${C.length} agent configuration(s)`})}await l.invalidateQueries({queryKey:["project-presets",i]}),m(""),E(""),D([]),t(!1)}catch(F){u({title:"Error",description:F instanceof Error?F.message:"Failed to save preset",variant:"destructive"})}finally{h(!1)}}},k=F=>C.some(I=>I.agentName===F),j=F=>{var I;return(I=C.find(A=>A.agentName===F))==null?void 0:I.providerConfigName},V=(F,I)=>{var O,K;const A=C.findIndex(q=>q.agentName===F);if(I&&A<0){const q=r.find(z=>z.name===F),Y=(O=q==null?void 0:q.providerConfig)==null?void 0:O.name,H=q!=null&&q.profileId?(N==null?void 0:N.get(q.profileId))??[]:[],L=Y||((K=H[0])==null?void 0:K.name);L&&D(z=>[...z,{agentName:F,providerConfigName:L}])}else!I&&A>=0&&D(q=>q.filter((Y,H)=>H!==A))},M=(F,I)=>{const A=C.findIndex(O=>O.agentName===F);A>=0?D(O=>O.map((K,q)=>q===A?{agentName:F,providerConfigName:I}:K)):D(O=>[...O,{agentName:F,providerConfigName:I}])};return s.jsxDEV(Es,{open:e,onOpenChange:P,children:s.jsxDEV(xs,{className:"max-w-md",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:b?"Edit Preset":"Save as Preset"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:320,columnNumber:11},this),s.jsxDEV(ls,{children:b?"Modify the preset name, description, or agent configurations":"Create a named configuration from agent provider assignments"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:321,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:319,columnNumber:9},this),s.jsxDEV("div",{className:"space-y-4 py-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"preset-name",children:"Name *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:331,columnNumber:13},this),s.jsxDEV(Tt,{id:"preset-name",value:g,onChange:F=>m(F.target.value),placeholder:"my-preset",className:"font-mono text-sm",disabled:d},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:332,columnNumber:13},this),x&&s.jsxDEV("p",{className:"text-xs text-destructive flex items-center gap-1",children:[s.jsxDEV(si,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:342,columnNumber:17},this),x]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:341,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:330,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"preset-description",children:"Description"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:350,columnNumber:13},this),s.jsxDEV(ta,{id:"preset-description",value:y,onChange:F=>E(F.target.value),placeholder:"Optional description of this preset",rows:2,disabled:d},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:351,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:349,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV(We,{children:"Agent Configurations"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:364,columnNumber:15},this),s.jsxDEV("span",{className:"text-xs text-muted-foreground",children:[C.length," selected"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:365,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:363,columnNumber:13},this),w.length>0?s.jsxDEV(xr,{className:"h-48 border rounded-md p-2",children:s.jsxDEV("div",{className:"space-y-1 pr-4",children:w.map(F=>{var z;const I=k(F.name),A=j(F.name),O=(z=F.providerConfig)==null?void 0:z.name,K=N==null?void 0:N.get(F.profileId),q=Array.isArray(K)?K:[],Y=q.length>0,H=I&&A&&Y&&!q.some($=>$.name===A),L=I&&A?A:I&&O?O:"";return s.jsxDEV("div",{className:"flex items-center gap-2 p-2 rounded hover:bg-muted",children:[s.jsxDEV(Ra,{checked:I,onCheckedChange:$=>V(F.name,$===!0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:398,columnNumber:25},this),s.jsxDEV("span",{className:"flex-1 text-sm",children:F.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:404,columnNumber:25},this),s.jsxDEV(Ls,{value:L,onValueChange:$=>M(F.name,$),disabled:!I||!Y,children:[s.jsxDEV(Ts,{className:"h-7 w-32 text-xs",children:s.jsxDEV($s,{placeholder:H?`Missing: ${A}`:Y?"Select config":"No configs"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:411,columnNumber:29},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:410,columnNumber:27},this),s.jsxDEV(Rs,{children:q.map($=>s.jsxDEV(Pt,{value:$.name,className:"text-xs",children:$.name},$.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:423,columnNumber:31},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:421,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:405,columnNumber:25},this)]},F.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:394,columnNumber:23},this)})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:371,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:370,columnNumber:15},this):s.jsxDEV("div",{className:"border rounded-md p-3 bg-muted/30",children:s.jsxDEV("p",{className:"text-xs text-muted-foreground flex items-center gap-1",children:[s.jsxDEV(si,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:437,columnNumber:19},this),"No agents with profiles found"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:436,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:435,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Check agents to include them, then select a provider configuration for each"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:442,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:362,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:328,columnNumber:9},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:P,disabled:d,children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:449,columnNumber:11},this),s.jsxDEV(le,{onClick:R,disabled:d||!_,children:[d?s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:454,columnNumber:15},this):b?s.jsxDEV(Oc,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:456,columnNumber:15},this):s.jsxDEV(RV,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:458,columnNumber:15},this),b?"Update Preset":"Save Preset"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:452,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:448,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:318,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/PresetDialog.tsx",lineNumber:317,columnNumber:5},this)}async function Ace(e,t){const i=await fetch(`/api/projects/${e}/presets`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({presetName:t})});if(!i.ok){const r=await i.json().catch(()=>({message:"Failed to delete preset"}));throw new Error(r.message||"Failed to delete preset")}}function Mce({open:e,onOpenChange:t,projectId:i,presetToDelete:r}){const{toast:o}=ii(),c=zs(),[u,l]=f.useState(!1),d=async()=>{if(r){l(!0);try{await Ace(i,r.name),o({title:"Preset Deleted",description:`Preset "${r.name}" has been removed`}),await c.invalidateQueries({queryKey:["project-presets",i]}),t(!1)}catch(h){o({title:"Error",description:h instanceof Error?h.message:"Failed to delete preset",variant:"destructive"})}finally{l(!1)}}};return s.jsxDEV(Es,{open:e,onOpenChange:h=>!u&&t(h),children:s.jsxDEV(xs,{className:"max-w-sm",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Delete Preset"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:76,columnNumber:11},this),s.jsxDEV(ls,{children:"Are you sure you want to delete this preset? This action cannot be undone."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:77,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:75,columnNumber:9},this),r&&s.jsxDEV("div",{className:"py-4",children:s.jsxDEV("div",{className:"flex items-center gap-2 p-3 bg-muted/50 rounded-md border border-destructive/20",children:[s.jsxDEV(Bi,{className:"h-5 w-5 text-destructive flex-shrink-0"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:85,columnNumber:15},this),s.jsxDEV("div",{className:"flex-1 min-w-0",children:[s.jsxDEV("p",{className:"font-medium text-sm",children:r.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:87,columnNumber:17},this),r.description&&s.jsxDEV("p",{className:"text-xs text-muted-foreground whitespace-pre-line",children:r.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:89,columnNumber:19},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-1",children:[r.agentConfigs.length," agent configuration(s)"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:93,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:86,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:84,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:83,columnNumber:11},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:()=>t(!1),disabled:u,children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:102,columnNumber:11},this),s.jsxDEV(le,{variant:"destructive",onClick:d,disabled:u,children:[u&&s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:106,columnNumber:28},this),"Delete"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:105,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:101,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:74,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/agents/DeletePresetDialog.tsx",lineNumber:73,columnNumber:5},this)}function Lce(){return`http://127.0.0.1:${window.location.port==="5175"?"3000":window.location.port||"3000"}/mcp`}function Oce(e,t){const i=e.toLowerCase(),r="devchain";switch(i){case"claude":return`claude mcp add --transport http ${r} ${t}`;case"codex":return`codex mcp add --url ${t} ${r}`;case"gemini":return`gemini mcp add -t http ${r} ${t}`;default:return`# Manual MCP configuration for ${e}`}}function fM({open:e,onOpenChange:t,providerName:i,onConfigured:r,onVerify:o}){const[c,u]=f.useState(!1),[l,d]=f.useState(null),[h,g]=f.useState(!1),m=Lce(),y=Oce(i,m),E=async()=>{if(o){u(!0),d(null);try{await o()?(r==null||r(),t(!1)):d("MCP configuration not detected. Please ensure the command was run successfully.")}catch(D){d(D instanceof Error?D.message:"Failed to verify configuration")}finally{u(!1)}}},C=async()=>{try{await navigator.clipboard.writeText(y),g(!0),setTimeout(()=>g(!1),2e3)}catch{const D=document.createElement("textarea");D.value=y,document.body.appendChild(D),D.select(),document.execCommand("copy"),document.body.removeChild(D),g(!0),setTimeout(()=>g(!1),2e3)}};return s.jsxDEV(Es,{open:e,onOpenChange:t,children:s.jsxDEV(xs,{className:"max-w-lg",children:[s.jsxDEV(ds,{children:[s.jsxDEV("div",{className:"flex items-center gap-3",children:[s.jsxDEV("div",{className:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-500/10",children:s.jsxDEV(Bi,{className:"h-5 w-5 text-amber-500"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:115,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:114,columnNumber:13},this),s.jsxDEV(os,{children:"Manual MCP Configuration Required"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:117,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:113,columnNumber:11},this),s.jsxDEV(ls,{className:"text-left",children:["Auto-configuration failed for ",s.jsxDEV("span",{className:"font-medium",children:i},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:120,columnNumber:43},this),". Please run the command below manually to configure MCP."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:119,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:112,columnNumber:9},this),s.jsxDEV("div",{className:"space-y-4",children:[l&&s.jsxDEV(Ti,{variant:"destructive",children:[s.jsxDEV(Bi,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:129,columnNumber:15},this),s.jsxDEV(Lr,{children:"Configuration Error"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:130,columnNumber:15},this),s.jsxDEV(Ri,{children:l},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:131,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:128,columnNumber:13},this),s.jsxDEV("div",{className:"rounded-lg border p-4 space-y-3",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(b0,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:138,columnNumber:15},this),s.jsxDEV("h4",{className:"font-medium",children:"Run in Terminal"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:139,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:137,columnNumber:13},this),s.jsxDEV("div",{className:"relative",children:[s.jsxDEV("pre",{className:"rounded-md bg-muted p-3 text-xs overflow-x-auto",children:s.jsxDEV("code",{children:y},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:143,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:142,columnNumber:15},this),s.jsxDEV(le,{size:"sm",variant:"ghost",className:we("absolute right-1 top-1 h-7 w-7 p-0",h&&"text-green-500"),onClick:C,title:h?"Copied!":"Copy to clipboard",children:h?s.jsxDEV(th,{className:"h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:152,columnNumber:27},this):s.jsxDEV(p2,{className:"h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:152,columnNumber:63},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:145,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:141,columnNumber:13},this),o&&s.jsxDEV(le,{variant:"outline",onClick:E,disabled:c,className:"w-full",children:c?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ot,{className:"mr-2 h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:164,columnNumber:21},this),"Verifying..."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:163,columnNumber:19},this):s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Yf,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:169,columnNumber:21},this),"Verify Configuration"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:168,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:156,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:136,columnNumber:11},this),s.jsxDEV(Ti,{variant:"default",className:"border-muted bg-muted/50",children:s.jsxDEV(Ri,{className:"text-sm",children:["MCP (Model Context Protocol) enables ",i," to communicate with DevChain for task coordination and context sharing."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:179,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:178,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:125,columnNumber:9},this),s.jsxDEV(Ds,{children:s.jsxDEV(le,{variant:"outline",onClick:()=>t(!1),children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:187,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:186,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:111,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/shared/McpConfigurationModal.tsx",lineNumber:110,columnNumber:5},this)}var gM={exports:{}},vM={};/**
959
959
  * @license React
960
960
  * use-sync-external-store-shim.development.js
961
961
  *
@@ -967,7 +967,7 @@ ${jt}`,"aria-label":"Expand sidebar",children:[s.jsxDEV("span",{className:"text-
967
967
  ---
968
968
  `,h6=!0;async function Bde(){const e=await fetch("/api/settings");if(!e.ok)throw new Error("Failed to fetch settings");return e.json()}async function $de(e){const t=await fetch(`/api/prompts?projectId=${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch prompts");return t.json()}async function nd(e){const t=await fetch("/api/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error("Failed to update settings");return t.json()}const m6=`[Epic Assignment]
969
969
  {epic_title} is now assigned to {agent_name} in {project_name}. (Epic ID: {epic_id})`,zde=1024*1024,HE=64*1024,qE=4*1024*1024,Ude=[{token:"{epic_id}",description:"Epic UUID"},{token:"{agent_name}",description:"Agent display name"},{token:"{epic_title}",description:"Epic title"},{token:"{project_name}",description:"Project name"},{token:"{assigner_name}",description:'Who assigned the epic (or "System" if unknown)'}];function KE(e){switch(e){case"pass":return s.jsxDEV(Or,{className:"h-5 w-5 text-green-600"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:129,columnNumber:14},this);case"fail":return s.jsxDEV(fl,{className:"h-5 w-5 text-destructive"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:131,columnNumber:14},this);case"warn":return s.jsxDEV(Bi,{className:"h-5 w-5 text-yellow-600"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:133,columnNumber:14},this);default:return null}}function Wde(){var ce,Be,je,at,xt,Le;const{selectedProject:e}=Gi(),t=e==null?void 0:e.rootPath,i=zs(),{toast:r}=ii(),{data:o,refetch:c,isLoading:u,isRefetching:l}=st({queryKey:["preflight",t??"global"],queryFn:()=>og(t),refetchInterval:6e4,staleTime:6e4}),{data:d}=st({queryKey:["settings"],queryFn:Bde}),{data:h,isLoading:g}=st({queryKey:["prompts",(e==null?void 0:e.id)??null],queryFn:()=>$de(e==null?void 0:e.id),enabled:!!(e!=null&&e.id)}),m=yt({mutationFn:({initialSessionPromptId:ye,projectId:Me})=>nd({initialSessionPromptId:ye,projectId:Me}),onSuccess:()=>{i.invalidateQueries({queryKey:["settings"]}),r({title:"Initial session prompt updated",description:"New sessions will start with the selected prompt."})},onError:ye=>{const Me=ye instanceof Error?ye.message:"Failed to update settings";r({title:"Update failed",description:Me,variant:"destructive"})}}),y=((e==null?void 0:e.id)&&((ce=d==null?void 0:d.initialSessionPromptIds)==null?void 0:ce[e.id]))??null,E=y??"__none__",C=y?(Be=h==null?void 0:h.items)==null?void 0:Be.find(ye=>ye.id===y):void 0,D=((je=h==null?void 0:h.items)==null?void 0:je.length)??0,b=!d||g||m.isPending||!(e!=null&&e.id),w=((xt=(at=d==null?void 0:d.events)==null?void 0:at.epicAssigned)==null?void 0:xt.template)??"",[N,x]=f.useState(""),[_,P]=f.useState(""),[R,k]=f.useState(""),[j,V]=f.useState(""),[M,F]=f.useState("form"),[I,A]=f.useState(i6),[O,K]=f.useState(a6),[q,Y]=f.useState(o6),[H,L]=f.useState(c6),[z,$]=f.useState(d6),[W,ee]=f.useState(h6);f.useEffect(()=>{P(w)},[w]),f.useEffect(()=>{var Me;const ye=((Me=d==null?void 0:d.activity)==null?void 0:Me.idleTimeoutMs)??3e4;x(Math.floor(ye/1e3))},[d]),f.useEffect(()=>{var nt,ke,rt;if(!d)return;const ye=((nt=d.terminal)==null?void 0:nt.scrollbackLines)??sh;k(ye);const Me=((ke=d.terminal)==null?void 0:ke.seedingMaxBytes)??zde;V(Math.round(Me/1024)),F(((rt=d.terminal)==null?void 0:rt.inputMode)??"form")},[d]),f.useEffect(()=>{var ye,Me,nt,ke,rt;d&&(A(((ye=d.messagePool)==null?void 0:ye.enabled)??i6),K(((Me=d.messagePool)==null?void 0:Me.delayMs)??a6),Y(((nt=d.messagePool)==null?void 0:nt.maxWaitMs)??o6),L(((ke=d.messagePool)==null?void 0:ke.maxMessages)??c6),$(((rt=d.messagePool)==null?void 0:rt.separator)??d6))},[d]),f.useEffect(()=>{var ye;d&&ee(((ye=d.skills)==null?void 0:ye.syncOnStartup)??h6)},[d]);const se=ye=>{const Me=ye==="__none__"?null:ye;Me!==y&&m.mutate({initialSessionPromptId:Me,projectId:e==null?void 0:e.id})},ge=yt({mutationFn:({template:ye})=>nd({events:{epicAssigned:{template:ye}}}),onSuccess:()=>{i.invalidateQueries({queryKey:["settings"]}),r({title:"Epic assignment message updated",description:"Agents will see the new message on the next assignment."})},onError:ye=>{const Me=ye instanceof Error?ye.message:"Failed to update template";r({title:"Update failed",description:Me,variant:"destructive"})}}),ve=_!==w,J=yt({mutationFn:({idleTimeoutMs:ye})=>nd({activity:{idleTimeoutMs:ye}}),onSuccess:()=>{i.invalidateQueries({queryKey:["settings"]}),r({title:"Activity idle timeout updated"})},onError:ye=>{const Me=ye instanceof Error?ye.message:"Failed to update setting";r({title:"Update failed",description:Me,variant:"destructive"})}}),G=yt({mutationFn:({scrollbackLines:ye,seedingMaxBytes:Me,inputMode:nt})=>nd({terminal:{scrollbackLines:ye,seedingMaxBytes:Me,inputMode:nt}}),onSuccess:()=>{i.invalidateQueries({queryKey:["settings"]}),r({title:"Terminal settings updated"})},onError:ye=>{const Me=ye instanceof Error?ye.message:"Failed to update terminal settings";r({title:"Update failed",description:Me,variant:"destructive"})}}),be=yt({mutationFn:({enabled:ye,delayMs:Me,maxWaitMs:nt,maxMessages:ke,separator:rt})=>nd({messagePool:{enabled:ye,delayMs:Me,maxWaitMs:nt,maxMessages:ke,separator:rt}}),onSuccess:()=>{i.invalidateQueries({queryKey:["settings"]}),r({title:"Message pool settings updated"})},onError:ye=>{const Me=ye instanceof Error?ye.message:"Failed to update message pool settings";r({title:"Update failed",description:Me,variant:"destructive"})}}),ne=yt({mutationFn:({syncOnStartup:ye})=>nd({skills:{syncOnStartup:ye}}),onSuccess:()=>{i.invalidateQueries({queryKey:["settings"]}),r({title:"Skills settings updated"})},onError:ye=>{const Me=ye instanceof Error?ye.message:"Failed to update skills settings";r({title:"Update failed",description:Me,variant:"destructive"})}}),Ee=ye=>{const Me=W;ee(ye),ne.mutate({syncOnStartup:ye},{onError:()=>{ee(Me)}})};return s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"mb-6",children:[s.jsxDEV("h1",{className:"text-3xl font-bold",children:"Settings"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:398,columnNumber:9},this),s.jsxDEV("p",{className:"text-muted-foreground mt-2",children:"Configure system settings and provider binaries"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:399,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:397,columnNumber:7},this),s.jsxDEV(Ps,{className:"mb-6",children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Initial Session Prompt"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:407,columnNumber:11},this),s.jsxDEV(Fi,{children:"Choose which prompt is pasted into new sessions before the agent begins."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:408,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:406,columnNumber:9},this),s.jsxDEV(Fs,{children:s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"initial-session-prompt",children:"Initial prompt"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:415,columnNumber:15},this),s.jsxDEV(Ls,{value:E,onValueChange:se,disabled:b,children:[s.jsxDEV(Ts,{id:"initial-session-prompt",children:s.jsxDEV($s,{placeholder:g?"Loading prompts…":"Select prompt"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:422,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:421,columnNumber:17},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"__none__",children:"None (use default message)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:427,columnNumber:19},this),(Le=h==null?void 0:h.items)==null?void 0:Le.map(ye=>s.jsxDEV(Pt,{value:ye.id,children:ye.title},ye.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:429,columnNumber:21},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:426,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:416,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:414,columnNumber:13},this),g&&s.jsxDEV("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[s.jsxDEV(ot,{className:"h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:439,columnNumber:17},this),"Loading prompts…"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:438,columnNumber:15},this),m.isPending&&s.jsxDEV("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[s.jsxDEV(ot,{className:"h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:446,columnNumber:17},this),"Saving selection…"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:445,columnNumber:15},this),!g&&D===0&&s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:["No prompts available yet. Create one on the"," ",s.jsxDEV("a",{href:"/prompts",className:"font-semibold underline hover:text-primary",children:"Prompts"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:454,columnNumber:17},this)," ","page."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:452,columnNumber:15},this),!g&&y&&C&&s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:["Selected prompt:"," ",s.jsxDEV("span",{className:"font-semibold text-foreground",children:C.title},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:464,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:462,columnNumber:15},this),!g&&y&&!C&&s.jsxDEV(Ti,{variant:"destructive",children:[s.jsxDEV(si,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:470,columnNumber:17},this),s.jsxDEV(Lr,{children:"Prompt missing"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:471,columnNumber:17},this),s.jsxDEV(Ri,{children:"The previously selected prompt could not be found. Pick another prompt to ensure sessions start with the right instructions."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:472,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:469,columnNumber:15},this),!g&&!y&&s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Using the default built-in message until a prompt is selected."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:480,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:["Supported variables: ",s.jsxDEV("code",{className:"font-mono text-xs",children:"{agent_name}"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:486,columnNumber:36},this),","," ",s.jsxDEV("code",{className:"font-mono text-xs",children:"{project_name}"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:487,columnNumber:15},this),","," ",s.jsxDEV("code",{className:"font-mono text-xs",children:"{epic_title}"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:488,columnNumber:15},this),","," ",s.jsxDEV("code",{className:"font-mono text-xs",children:"{provider_name}"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:489,columnNumber:15},this),","," ",s.jsxDEV("code",{className:"font-mono text-xs",children:"{profile_name}"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:490,columnNumber:15},this),","," ",s.jsxDEV("code",{className:"font-mono text-xs",children:"{session_id}"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:491,columnNumber:15},this),","," ",s.jsxDEV("code",{className:"font-mono text-xs",children:"{session_id_short}"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:492,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:485,columnNumber:13},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:["Need to edit the prompt content? Visit the"," ",s.jsxDEV("a",{href:"/prompts",className:"font-semibold underline hover:text-primary",children:"Prompts"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:497,columnNumber:15},this)," ","page."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:495,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:413,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:412,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:405,columnNumber:7},this),s.jsxDEV(Ps,{className:"mb-6",children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Terminal Settings"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:509,columnNumber:11},this),s.jsxDEV(Fi,{children:"Configure terminal input mode and scrollback behavior. Chat Mode is now the default terminal engine, using tmux-based history seeding."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:510,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:508,columnNumber:9},this),s.jsxDEV(Fs,{children:s.jsxDEV("div",{className:"space-y-4 max-w-md",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"terminal-input-mode",children:"Terminal input mode"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:518,columnNumber:15},this),s.jsxDEV(Ls,{value:M,onValueChange:ye=>F(ye||"form"),disabled:G.isPending,children:[s.jsxDEV(Ts,{id:"terminal-input-mode",className:"w-72",children:s.jsxDEV($s,{placeholder:"Select input mode"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:525,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:524,columnNumber:17},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"form",children:"Form input (simple command entry)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:528,columnNumber:19},this),s.jsxDEV(Pt,{value:"tty",children:"TTY input (direct terminal control)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:529,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:527,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:519,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:M==="form"?"Form mode: Type commands in a text field and press Send. Best for simple command execution.":"TTY mode: Direct keyboard input to terminal. Enables vim, tab completion, Ctrl+C, etc."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:532,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:517,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"terminal-scrollback",children:"Scrollback lines"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:539,columnNumber:15},this),s.jsxDEV("input",{id:"terminal-scrollback",type:"number",min:lf,max:cf,step:100,className:"w-40 rounded border px-3 py-2 text-sm bg-background",value:R,onChange:ye=>{const{value:Me}=ye.target;if(Me===""){k("");return}const nt=Number(Me);Number.isFinite(nt)&&k(nt)},disabled:G.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:540,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:["Controls how many lines the server emulator retains (min ",lf,", max ",cf,")."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:561,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:538,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"terminal-seed-max",children:"Seed snapshot cap (KB)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:567,columnNumber:15},this),s.jsxDEV("input",{id:"terminal-seed-max",type:"number",min:Math.floor(HE/1024),max:Math.floor(qE/1024),step:64,className:"w-40 rounded border px-3 py-2 text-sm bg-background",value:j,onChange:ye=>{const{value:Me}=ye.target;if(Me===""){V("");return}const nt=Number(Me);Number.isFinite(nt)&&V(nt)},disabled:G.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:568,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:["Caps the initial ANSI snapshot size (min ",HE/1024,"KB, max"," ",qE/1024,"KB)."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:589,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:566,columnNumber:13},this),s.jsxDEV("div",{children:s.jsxDEV(le,{disabled:R===""||j===""||G.isPending,onClick:()=>{if(R===""||j==="")return;const ye=Math.round(Math.max(lf,Math.min(Number(R),cf))),nt=Math.round(Math.max(HE/1024,Math.min(Number(j),qE/1024)))*1024;G.mutate({scrollbackLines:ye,seedingMaxBytes:nt,inputMode:M})},children:G.isPending?s.jsxDEV("span",{className:"inline-flex items-center gap-2",children:[s.jsxDEV(ot,{className:"h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:625,columnNumber:21},this)," Saving…"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:624,columnNumber:19},this):"Save"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:595,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:594,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:516,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:515,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:507,columnNumber:7},this),s.jsxDEV(Ps,{className:"mb-6",children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Terminal Activity"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:639,columnNumber:11},this),s.jsxDEV(Fi,{children:"Configure Busy/Idle tracking for sessions."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:640,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:638,columnNumber:9},this),s.jsxDEV(Fs,{children:s.jsxDEV("div",{className:"space-y-4 max-w-md",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"idle-timeout",children:"Idle timeout (seconds)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:645,columnNumber:15},this),s.jsxDEV("input",{id:"idle-timeout",type:"number",min:1,step:1,className:"w-40 rounded border px-3 py-2 text-sm bg-background",value:N,onChange:ye=>{const Me=ye.target.value,nt=Number(Me);x(Number.isFinite(nt)&&nt>0?nt:"")}},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:646,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"After this period without terminal output, sessions switch to Idle."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:659,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:644,columnNumber:13},this),s.jsxDEV("div",{children:s.jsxDEV(le,{disabled:N===""||J.isPending,onClick:()=>{if(N==="")return;const ye=Math.max(1,N)*1e3;J.mutate({idleTimeoutMs:ye})},children:J.isPending?s.jsxDEV("span",{className:"inline-flex items-center gap-2",children:[s.jsxDEV(ot,{className:"h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:674,columnNumber:21},this)," Saving…"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:673,columnNumber:19},this):"Save"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:664,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:663,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:643,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:642,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:637,columnNumber:7},this),s.jsxDEV(Ps,{className:"mb-6",children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Message Pooling"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:688,columnNumber:11},this),s.jsxDEV(Fi,{children:"Configure how messages are batched before delivery to agent sessions. Pooling reduces context fragmentation when multiple events occur rapidly."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:689,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:687,columnNumber:9},this),s.jsxDEV(Fs,{children:s.jsxDEV("div",{className:"space-y-6 max-w-lg",children:[s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{className:"space-y-0.5",children:[s.jsxDEV(We,{htmlFor:"pool-enabled",children:"Enable Message Pooling"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:699,columnNumber:17},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"When disabled, all messages are delivered immediately"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:700,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:698,columnNumber:15},this),s.jsxDEV(Yn,{id:"pool-enabled",checked:I,onCheckedChange:A,disabled:be.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:704,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:697,columnNumber:13},this),!I&&s.jsxDEV(Ti,{children:[s.jsxDEV(Bi,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:714,columnNumber:17},this),s.jsxDEV(Lr,{children:"Pooling Disabled"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:715,columnNumber:17},this),s.jsxDEV(Ri,{children:"Messages will be delivered immediately. This may cause context fragmentation when multiple events occur rapidly."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:716,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:713,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"pool-delay",children:"Debounce Delay (seconds)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:725,columnNumber:15},this),s.jsxDEV("input",{id:"pool-delay",type:"number",min:r6/1e3,max:n6/1e3,step:1,className:"w-24 rounded border px-3 py-2 text-sm bg-background",value:O/1e3,onChange:ye=>{const Me=ye.target.value,nt=Number(Me);Number.isFinite(nt)&&nt>0&&K(nt*1e3)},disabled:!I||be.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:726,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Timer resets on each new message. Range: 1s - 60s"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:743,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:724,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"pool-max-wait",children:"Maximum Wait Time (seconds)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:750,columnNumber:15},this),s.jsxDEV("input",{id:"pool-max-wait",type:"number",min:Fde/1e3,max:l6/1e3,step:5,className:"w-24 rounded border px-3 py-2 text-sm bg-background",value:q/1e3,onChange:ye=>{const Me=ye.target.value,nt=Number(Me);Number.isFinite(nt)&&nt>0&&Y(nt*1e3)},disabled:!I||be.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:751,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:["Forces flush after this time regardless of new messages. Prevents starvation.",q<O&&s.jsxDEV("span",{className:"text-destructive ml-1",children:"(Must be ≥ debounce delay)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:771,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:768,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:749,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"pool-max-messages",children:"Maximum Messages"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:778,columnNumber:15},this),s.jsxDEV("input",{id:"pool-max-messages",type:"number",min:u6,max:p6,step:1,className:"w-24 rounded border px-3 py-2 text-sm bg-background",value:H,onChange:ye=>{const Me=ye.target.value;if(Me===""){L("");return}const nt=Number(Me);Number.isFinite(nt)&&L(nt)},disabled:!I||be.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:779,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Forces flush when this many messages are queued. Range: 1 - 50"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:800,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:777,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"pool-separator",children:"Message Separator"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:807,columnNumber:15},this),s.jsxDEV("input",{id:"pool-separator",type:"text",className:"w-full rounded border px-3 py-2 text-sm bg-background font-mono",value:z.replace(/\n/g,"\\n"),onChange:ye=>{const Me=ye.target.value.replace(/\\n/g,`
970
- `);$(Me)},placeholder:"\\n---\\n",disabled:!I||be.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:808,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Text inserted between batched messages. Use \\n for newlines."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:820,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:806,columnNumber:13},this),s.jsxDEV("div",{children:s.jsxDEV(le,{disabled:H===""||q<O||be.isPending,onClick:()=>{if(H==="")return;const ye=Math.max(u6,Math.min(Number(H),p6)),Me=Math.max(r6,Math.min(O,n6)),nt=Math.max(Me,Math.min(q,l6));be.mutate({enabled:I,delayMs:Me,maxWaitMs:nt,maxMessages:ye,separator:z})},children:be.isPending?s.jsxDEV("span",{className:"inline-flex items-center gap-2",children:[s.jsxDEV(ot,{className:"h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:858,columnNumber:21},this)," Saving…"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:857,columnNumber:19},this):"Save"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:827,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:826,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:695,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:694,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:686,columnNumber:7},this),s.jsxDEV(Ps,{className:"mb-6",children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Skills"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:872,columnNumber:11},this),s.jsxDEV(Fi,{children:"Configure startup behavior for skills synchronization."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:873,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:871,columnNumber:9},this),s.jsxDEV(Fs,{children:s.jsxDEV("div",{className:"space-y-3 max-w-lg",children:[s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{className:"space-y-0.5",children:[s.jsxDEV(We,{htmlFor:"skills-sync-on-startup",children:"Sync skills on startup"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:879,columnNumber:17},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Automatically refresh skills when the app starts."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:880,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:878,columnNumber:15},this),s.jsxDEV(Yn,{id:"skills-sync-on-startup",checked:W,onCheckedChange:Ee,disabled:ne.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:884,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:877,columnNumber:13},this),ne.isPending&&s.jsxDEV("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[s.jsxDEV(ot,{className:"h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:894,columnNumber:17},this),"Saving settings…"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:893,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:876,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:875,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:870,columnNumber:7},this),s.jsxDEV(Ps,{className:"mb-6",children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Events"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:905,columnNumber:11},this),s.jsxDEV(Fi,{children:"Customize agent notifications triggered by events."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:906,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:904,columnNumber:9},this),s.jsxDEV(Fs,{children:s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"epic-assigned-template",children:"Epic Assigned message"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:911,columnNumber:15},this),s.jsxDEV(ta,{id:"epic-assigned-template",value:_,onChange:ye=>P(ye.target.value),placeholder:m6,rows:5,className:"font-mono text-sm"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:912,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Leave blank to use the default message. Supports the placeholders below."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:920,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:910,columnNumber:13},this),s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(le,{onClick:()=>ge.mutate({template:_}),disabled:!ve||ge.isPending,children:ge.isPending?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:932,columnNumber:21},this),"Saving…"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:931,columnNumber:19},this):"Save"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:926,columnNumber:15},this),s.jsxDEV(le,{type:"button",variant:"ghost",onClick:()=>P(m6),disabled:ge.isPending,children:"Reset to default"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:939,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:925,columnNumber:13},this),s.jsxDEV("div",{className:"rounded-lg border bg-muted/30 p-4",children:[s.jsxDEV("p",{className:"text-sm font-semibold mb-2",children:"Available placeholders"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:950,columnNumber:15},this),s.jsxDEV("ul",{className:"space-y-1 text-sm text-muted-foreground",children:Ude.map(({token:ye,description:Me})=>s.jsxDEV("li",{children:[s.jsxDEV("code",{className:"font-mono text-xs mr-2",children:ye},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:954,columnNumber:21},this),Me]},ye,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:953,columnNumber:19},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:951,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:949,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:909,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:908,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:903,columnNumber:7},this),s.jsxDEV(Ps,{className:"mb-6",children:[s.jsxDEV(mi,{children:s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{children:[s.jsxDEV(vi,{children:"System Preflight Checks"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:969,columnNumber:15},this),s.jsxDEV(Fi,{children:"Verify that all required dependencies and configurations are correct"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:970,columnNumber:15},this),e&&s.jsxDEV("p",{className:"mt-2 text-xs text-muted-foreground",children:["Target project:"," ",s.jsxDEV("span",{className:"font-semibold text-foreground",children:e.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:976,columnNumber:19},this),s.jsxDEV("span",{className:"ml-2 font-mono text-[11px] text-muted-foreground/80",children:e.rootPath},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:977,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:974,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:968,columnNumber:13},this),s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>c(),disabled:l,children:[l?s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:990,columnNumber:17},this):s.jsxDEV(Yf,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:992,columnNumber:17},this),"Refresh"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:983,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:967,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:966,columnNumber:9},this),s.jsxDEV(Fs,{children:[u&&s.jsxDEV("div",{className:"flex items-center justify-center py-8",children:[s.jsxDEV(ot,{className:"h-6 w-6 animate-spin text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1001,columnNumber:15},this),s.jsxDEV("span",{className:"ml-2 text-muted-foreground",children:"Running preflight checks..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1002,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1e3,columnNumber:13},this),o&&s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV(Ti,{variant:o.overall==="fail"?"destructive":"default",children:[KE(o.overall),s.jsxDEV(Lr,{children:["Overall Status: ",o.overall.toUpperCase()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1011,columnNumber:17},this),s.jsxDEV(Ri,{children:[o.overall==="pass"&&"All systems operational",o.overall==="warn"&&"Some checks have warnings",o.overall==="fail"&&"Some checks failed. Session launch will be blocked."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1012,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1009,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-3",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"System Checks"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1022,columnNumber:17},this),o.checks.map(ye=>s.jsxDEV(Ps,{className:ye.status==="fail"?"border-destructive":ye.status==="warn"?"border-yellow-600":"border-green-600",children:s.jsxDEV(Fs,{className:"pt-4",children:s.jsxDEV("div",{className:"flex items-start gap-3",children:[s.jsxDEV("div",{className:"mt-0.5",children:KE(ye.status)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1038,columnNumber:25},this),s.jsxDEV("div",{className:"flex-1",children:[s.jsxDEV("h4",{className:"font-semibold mb-1",children:ye.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1040,columnNumber:27},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground mb-2",children:ye.message},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1041,columnNumber:27},this),ye.details&&s.jsxDEV("div",{className:"text-xs bg-muted p-2 rounded font-mono",children:ye.details},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1043,columnNumber:29},this),ye.remediation&&s.jsxDEV("div",{className:"mt-2 text-xs text-muted-foreground",children:[s.jsxDEV("strong",{children:"How to fix:"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1049,columnNumber:31},this)," ",ye.remediation]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1048,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1039,columnNumber:25},this),s.jsxDEV(Je,{variant:ye.status==="pass"?"default":ye.status==="fail"?"destructive":"secondary",children:ye.status.toUpperCase()},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1053,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1037,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1036,columnNumber:21},this)},ye.name,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1026,columnNumber:19},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1021,columnNumber:15},this),o.providers&&o.providers.length>0&&s.jsxDEV("div",{className:"space-y-3 mt-6",children:[s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Provider Checks"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1074,columnNumber:21},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:[o.providers.length," provider",o.providers.length!==1?"s":""," configured"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1077,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1073,columnNumber:19},this),o.providers.map(ye=>s.jsxDEV(Ps,{className:ye.status==="fail"?"border-destructive":ye.status==="warn"?"border-yellow-600":"border-green-600",children:s.jsxDEV(Fs,{className:"pt-4",children:s.jsxDEV("div",{className:"flex items-start gap-3",children:[s.jsxDEV("div",{className:"mt-0.5",children:KE(ye.status)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1095,columnNumber:27},this),s.jsxDEV("div",{className:"flex-1 space-y-2",children:[s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("h4",{className:"font-semibold",children:ye.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1098,columnNumber:31},this),s.jsxDEV(Je,{variant:ye.status==="pass"?"default":ye.status==="fail"?"destructive":"secondary",children:ye.status.toUpperCase()},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1099,columnNumber:31},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1097,columnNumber:29},this),ye.binPath&&s.jsxDEV("div",{className:"text-xs bg-muted p-2 rounded font-mono",children:ye.binPath},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1112,columnNumber:31},this),s.jsxDEV("div",{className:"flex flex-col gap-2",children:[s.jsxDEV("div",{className:"flex flex-wrap items-center gap-2",children:[s.jsxDEV(Je,{variant:"secondary",className:ye.binaryStatus==="fail"?"border border-destructive bg-destructive/10 text-destructive":ye.binaryStatus==="warn"?"border border-yellow-600 bg-yellow-500/10 text-yellow-700":"border border-emerald-500 bg-emerald-500/10 text-emerald-600",children:["Binary ",ye.binaryStatus.toUpperCase()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1118,columnNumber:33},this),s.jsxDEV("span",{className:"text-sm text-muted-foreground",children:ye.binaryMessage},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1130,columnNumber:33},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1117,columnNumber:31},this),ye.mcpStatus&&s.jsxDEV("div",{className:"flex flex-wrap items-center gap-2",children:[s.jsxDEV(Je,{variant:"secondary",className:ye.mcpStatus==="fail"?"border border-destructive bg-destructive/10 text-destructive":ye.mcpStatus==="warn"?"border border-yellow-600 bg-yellow-500/10 text-yellow-700":"border border-emerald-500 bg-emerald-500/10 text-emerald-600",children:["MCP ",ye.mcpStatus.toUpperCase()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1136,columnNumber:35},this),s.jsxDEV("span",{className:"text-sm text-muted-foreground",children:ye.mcpMessage??"MCP not required."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1148,columnNumber:35},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1135,columnNumber:33},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1116,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1096,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1094,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1093,columnNumber:23},this)},ye.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1083,columnNumber:21},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1072,columnNumber:17},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-4",children:["Last checked: ",new Date(o.timestamp).toLocaleString()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1164,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1007,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:998,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:965,columnNumber:7},this),s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Provider Management"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1175,columnNumber:11},this),s.jsxDEV(Fi,{children:"Configure AI provider binaries and settings"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1176,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1174,columnNumber:9},this),s.jsxDEV(Fs,{children:[s.jsxDEV(Ti,{children:[s.jsxDEV(si,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1180,columnNumber:13},this),s.jsxDEV(Lr,{children:"Manage Providers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1181,columnNumber:13},this),s.jsxDEV(Ri,{children:["Provider configurations, including binary paths, are now managed through the dedicated"," ",s.jsxDEV("a",{href:"/providers",className:"font-semibold underline hover:text-primary",children:"Providers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1184,columnNumber:15},this)," ","page. You can add, edit, and configure provider binaries there."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1182,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1179,columnNumber:11},this),s.jsxDEV("div",{className:"mt-4",children:s.jsxDEV(le,{variant:"outline",onClick:()=>window.location.href="/providers",children:"Go to Providers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1191,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1190,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1178,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1173,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:396,columnNumber:5},this)}const od={name:"",handler:"",status:"all",timeRange:"1h"},Hde=[{label:"Last hour",value:"1h"},{label:"Last 24 hours",value:"24h"},{label:"Last 7 days",value:"7d"},{label:"Last 30 days",value:"30d"},{label:"All time",value:"all"}];async function qde(e){const t=new URLSearchParams;e.name&&t.set("name",e.name),e.handler&&t.set("handler",e.handler),e.status&&t.set("status",e.status),e.from&&t.set("from",e.from),e.to&&t.set("to",e.to),e.limit!==void 0&&t.set("limit",String(e.limit)),e.offset!==void 0&&t.set("offset",String(e.offset));const i=await fetch(`/api/events?${t.toString()}`);if(!i.ok)throw new Error("Failed to fetch events");return i.json()}function Kde(e){if(e==="all")return{};const t=new Date;let i;switch(e){case"1h":i=new Date(t.getTime()-60*60*1e3);break;case"24h":i=new Date(t.getTime()-24*60*60*1e3);break;case"7d":i=new Date(t.getTime()-7*24*60*60*1e3);break;case"30d":i=new Date(t.getTime()-30*24*60*60*1e3);break;default:i=void 0;break}return i?{from:i.toISOString(),to:t.toISOString()}:{}}function f6(e){if(e==null)return"null";if(typeof e=="string")try{const t=JSON.parse(e);return JSON.stringify(t,null,2)}catch{return e}try{return JSON.stringify(e,null,2)}catch{return String(e)}}function g6(e){return e.reduce((t,i)=>(t.total+=1,i.status==="success"?t.success+=1:t.failure+=1,t),{total:0,success:0,failure:0})}function Gde(){const e=zs(),[t,i]=f.useState(od),[r,o]=f.useState({limit:50,offset:0}),[c,u]=f.useState(null);f.useEffect(()=>{o(j=>j.offset===0?j:{...j,offset:0})},[t.name,t.handler,t.status,t.timeRange]);const l=f.useCallback(j=>{if(!j)return;const{topic:V,type:M}=j;V==="events/logs"&&(M==="event_created"||M==="handler_recorded")&&e.invalidateQueries({queryKey:["eventLogs"]})},[e]),d=f.useRef(null),h=Bc({connect:()=>{var j;(j=d.current)==null||j.emit("events:subscribe")},message:l},[l]);d.current=h;const g=f.useMemo(()=>Kde(t.timeRange),[t.timeRange]),{data:m,isLoading:y,refetch:E,error:C}=st({queryKey:["eventLogs",t,r],queryFn:()=>qde({name:t.name.trim()||void 0,handler:t.handler.trim()||void 0,status:t.status==="all"?void 0:t.status,...g,limit:r.limit,offset:r.offset})}),D=(m==null?void 0:m.items)??[],b=(m==null?void 0:m.total)??0,w=b===0?0:r.offset+1,N=r.offset+D.length,x=r.offset>0,_=r.offset+r.limit<b;f.useEffect(()=>{if(D.length===0){u(null);return}(!c||!D.some(j=>j.id===c))&&u(D[0].id)},[D,c]);const P=D.find(j=>j.id===c)??null,R=(P==null?void 0:P.handlers)??[],k=P?g6(P.handlers):null;return s.jsxDEV("div",{className:"space-y-6",children:[s.jsxDEV("div",{children:[s.jsxDEV("h1",{className:"text-3xl font-bold",children:"Events Viewer"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:249,columnNumber:9},this),s.jsxDEV("p",{className:"text-muted-foreground mt-2",children:"Monitor published events and handler outcomes in real time."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:250,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:248,columnNumber:7},this),s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Filters"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:257,columnNumber:11},this),s.jsxDEV(Fi,{children:"Refine the events shown below."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:258,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:256,columnNumber:9},this),s.jsxDEV(Fs,{children:[s.jsxDEV("div",{className:"grid gap-4 md:grid-cols-2 lg:grid-cols-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"filter-name",children:"Event name"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:263,columnNumber:15},this),s.jsxDEV(Tt,{id:"filter-name",value:t.name,onChange:j=>i(V=>({...V,name:j.target.value})),placeholder:"e.g. epic.updated"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:264,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:262,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"filter-handler",children:"Handler"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:272,columnNumber:15},this),s.jsxDEV(Tt,{id:"filter-handler",value:t.handler,onChange:j=>i(V=>({...V,handler:j.target.value})),placeholder:"e.g. EpicAssignmentNotifier"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:273,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:271,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{children:"Status"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:283,columnNumber:15},this),s.jsxDEV(Ls,{value:t.status,onValueChange:j=>i(V=>({...V,status:j})),children:[s.jsxDEV(Ts,{children:s.jsxDEV($s,{placeholder:"All statuses"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:291,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:290,columnNumber:17},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"all",children:"All"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:294,columnNumber:19},this),s.jsxDEV(Pt,{value:"success",children:"Success"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:295,columnNumber:19},this),s.jsxDEV(Pt,{value:"failure",children:"Failure"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:296,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:293,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:284,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:282,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{children:"Time range"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:301,columnNumber:15},this),s.jsxDEV(Ls,{value:t.timeRange,onValueChange:j=>i(V=>({...V,timeRange:j})),children:[s.jsxDEV(Ts,{children:s.jsxDEV($s,{placeholder:"Select range"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:309,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:308,columnNumber:17},this),s.jsxDEV(Rs,{children:Hde.map(j=>s.jsxDEV(Pt,{value:j.value,children:j.label},j.value,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:313,columnNumber:21},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:311,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:302,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:300,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:261,columnNumber:11},this),s.jsxDEV("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[s.jsxDEV(le,{onClick:()=>E(),variant:"outline",size:"sm",disabled:y,className:"flex items-center gap-2",children:[s.jsxDEV(Yf,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:329,columnNumber:15},this),"Refresh"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:322,columnNumber:13},this),s.jsxDEV(le,{onClick:()=>i(od),variant:"ghost",size:"sm",disabled:t.name===od.name&&t.handler===od.handler&&t.status===od.status&&t.timeRange===od.timeRange,children:"Clear filters"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:332,columnNumber:13},this),m?s.jsxDEV("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[s.jsxDEV(CV,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:347,columnNumber:17},this),s.jsxDEV("span",{children:["Showing ",b===0?0:`${w}–${N}`," of ",b," events"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:348,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:346,columnNumber:15},this):null]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:321,columnNumber:11},this),C instanceof Error&&s.jsxDEV("p",{className:"mt-4 text-sm text-destructive",children:["Failed to load events: ",C.message]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:355,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:260,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:255,columnNumber:7},this),s.jsxDEV("div",{className:"flex gap-6 h-[calc(100vh-24rem)]",children:[s.jsxDEV(Ps,{className:"flex-1 flex flex-col",children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Event Log"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:364,columnNumber:13},this),s.jsxDEV(Fi,{children:"Newest events appear first."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:365,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:363,columnNumber:11},this),s.jsxDEV(Fs,{className:"flex-1 flex flex-col min-h-0",children:[s.jsxDEV(xr,{className:"flex-1 -mx-6 px-6",children:s.jsxDEV("div",{className:"overflow-hidden rounded-lg border",children:s.jsxDEV(Pc,{children:[s.jsxDEV(kc,{children:s.jsxDEV(Ci,{children:[s.jsxDEV(ki,{className:"w-[200px]",children:"Published"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:373,columnNumber:23},this),s.jsxDEV(ki,{children:"Event"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:374,columnNumber:23},this),s.jsxDEV(ki,{className:"w-[160px] text-center",children:"Handlers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:375,columnNumber:23},this),s.jsxDEV(ki,{className:"w-[180px]",children:"Request ID"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:376,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:372,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:371,columnNumber:19},this),s.jsxDEV(Vc,{children:y&&D.length===0?s.jsxDEV(Ci,{children:s.jsxDEV(fs,{colSpan:4,className:"py-8 text-center text-muted-foreground",children:"Loading events..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:382,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:381,columnNumber:23},this):D.length===0?s.jsxDEV(Ci,{children:s.jsxDEV(fs,{colSpan:4,className:"py-12 text-center text-muted-foreground",children:"No events found. Adjust filters or wait for new activity."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:388,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:387,columnNumber:23},this):D.map(j=>{const V=g6(j.handlers),M=j.id===c;return s.jsxDEV(Ci,{className:we("cursor-pointer",M&&"bg-muted/60 hover:bg-muted/60"),onClick:()=>u(j.id),"aria-selected":M,children:[s.jsxDEV(fs,{className:"font-mono text-xs",children:new Date(j.publishedAt).toLocaleString()},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:406,columnNumber:29},this),s.jsxDEV(fs,{children:s.jsxDEV("div",{className:"font-medium",children:j.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:410,columnNumber:31},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:409,columnNumber:29},this),s.jsxDEV(fs,{className:"text-center",children:s.jsxDEV("div",{className:"flex items-center justify-center gap-2",children:[s.jsxDEV(Je,{variant:"outline",className:"border-emerald-500 text-emerald-600",children:[V.success," OK"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:414,columnNumber:33},this),s.jsxDEV(Je,{variant:"outline",className:"border-destructive text-destructive",children:[V.failure," Fail"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:420,columnNumber:33},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:413,columnNumber:31},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:412,columnNumber:29},this),s.jsxDEV(fs,{className:"font-mono text-xs",children:j.requestId??"--"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:428,columnNumber:29},this)]},j.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:397,columnNumber:27},this)})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:379,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:370,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:369,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:368,columnNumber:13},this),s.jsxDEV("div",{className:"mt-4 flex items-center justify-between gap-2 pt-4 border-t",children:[s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:["Page ",Math.floor(r.offset/r.limit)+1," of"," ",Math.max(1,Math.ceil(b/r.limit))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:441,columnNumber:15},this),s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>o(j=>({...j,offset:Math.max(0,j.offset-j.limit)})),disabled:!x||y,children:"Previous"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:446,columnNumber:17},this),s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>o(j=>({...j,offset:j.offset+j.limit})),disabled:!_||y,children:"Next"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:459,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:445,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:440,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:367,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:362,columnNumber:9},this),s.jsxDEV(Ps,{className:"flex-1 flex flex-col",children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Event Details"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:480,columnNumber:13},this),s.jsxDEV(Fi,{children:"Inspect payload and handler results."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:481,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:479,columnNumber:11},this),s.jsxDEV(Fs,{className:"flex-1 min-h-0",children:s.jsxDEV(xr,{className:"h-full -mx-6 px-6",children:P?s.jsxDEV("div",{className:"space-y-4 pr-4",children:[s.jsxDEV("div",{children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Overview"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:490,columnNumber:21},this),s.jsxDEV("div",{className:"mt-2 grid gap-3 sm:grid-cols-2",children:[s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:"Event"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:495,columnNumber:25},this),s.jsxDEV("div",{className:"font-semibold",children:P.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:496,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:494,columnNumber:23},this),s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:"Published"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:499,columnNumber:25},this),s.jsxDEV("div",{className:"font-mono text-xs",children:new Date(P.publishedAt).toLocaleString()},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:500,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:498,columnNumber:23},this),s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:"Request ID"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:505,columnNumber:25},this),s.jsxDEV("div",{className:"font-mono text-xs",children:P.requestId??"--"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:506,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:504,columnNumber:23},this),k&&s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:"Handlers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:510,columnNumber:27},this),s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Je,{variant:"outline",className:"border-emerald-500 text-emerald-600",children:[k.success," OK"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:512,columnNumber:29},this),s.jsxDEV(Je,{variant:"outline",className:"border-destructive text-destructive",children:[k.failure," Fail"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:518,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:511,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:509,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:493,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:489,columnNumber:19},this),s.jsxDEV("div",{children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Payload"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:531,columnNumber:21},this),s.jsxDEV("pre",{className:"mt-2 h-48 overflow-auto rounded-lg border bg-muted/50 p-4 text-xs whitespace-pre-wrap break-all",children:f6(P.payload)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:534,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:530,columnNumber:19},this),s.jsxDEV("div",{children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Handlers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:540,columnNumber:21},this),R.length===0?s.jsxDEV("p",{className:"mt-2 text-sm text-muted-foreground",children:"No handlers recorded yet."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:544,columnNumber:23},this):s.jsxDEV("div",{className:"mt-2 space-y-3",children:R.map(j=>s.jsxDEV("div",{className:"rounded-lg border p-3",children:[s.jsxDEV("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"text-sm font-semibold",children:j.handler},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:553,columnNumber:33},this),s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:["Started ",new Date(j.startedAt).toLocaleString(),j.endedAt&&s.jsxDEV(s.Fragment,{children:[" - ","Ended ",new Date(j.endedAt).toLocaleString()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:557,columnNumber:37},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:554,columnNumber:33},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:552,columnNumber:31},this),s.jsxDEV(Je,{variant:j.status==="success"?"secondary":"destructive",className:"uppercase",children:j.status},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:563,columnNumber:31},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:551,columnNumber:29},this),j.detail!==void 0&&j.detail!==null&&s.jsxDEV("pre",{className:"mt-2 h-40 overflow-auto rounded bg-muted/50 p-3 text-xs whitespace-pre-wrap break-all",children:f6(j.detail)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:571,columnNumber:31},this)]},j.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:550,columnNumber:27},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:548,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:539,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:488,columnNumber:17},this):s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Select an event to view details."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:486,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:484,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:483,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:478,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:360,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:247,columnNumber:5},this)}async function Yde(e){const t=await fetch(`/api/sessions/pools?projectId=${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch pools");return(await t.json()).pools}function Qde({pool:e,onClick:t,isSelected:i}){const r=Math.round(e.waitingMs/1e3);return s.jsxDEV("button",{type:"button",onClick:t,className:we("p-3 border rounded-lg text-left transition-colors","hover:bg-accent focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",i&&"bg-accent border-primary"),"aria-pressed":i,"aria-label":`${e.agentName}: ${e.messageCount} message${e.messageCount!==1?"s":""}, waiting ${r} seconds`,children:[s.jsxDEV("div",{className:"font-medium",children:e.agentName},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:63,columnNumber:7},this),s.jsxDEV("div",{className:"text-sm text-muted-foreground",children:[e.messageCount," msg",e.messageCount!==1?"s":""]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:64,columnNumber:7},this),s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:["~",r,"s wait"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:67,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:52,columnNumber:5},this)}function Xde({projectId:e,onAgentClick:t,selectedAgentId:i}){const r=zs(),{data:o,isLoading:c,error:u}=st({queryKey:["pools",e],queryFn:()=>Yde(e),refetchInterval:5e3,staleTime:1e3}),l=f.useCallback(d=>{if(!d)return;const{topic:h,type:g}=d;h==="messages/pools"&&g==="updated"&&r.invalidateQueries({queryKey:["pools",e]})},[r,e]);return Bc({message:l},[l]),s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Current Pools"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:106,columnNumber:9},this),s.jsxDEV(Fi,{children:"Messages waiting to be delivered to agents"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:107,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:105,columnNumber:7},this),s.jsxDEV(Fs,{children:[c&&s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Loading pools..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:110,columnNumber:23},this),u instanceof Error&&s.jsxDEV("p",{className:"text-sm text-destructive",children:["Failed to load pools: ",u.message]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:112,columnNumber:11},this),!c&&!u&&s.jsxDEV("div",{className:"flex flex-wrap gap-3",children:[o==null?void 0:o.map(d=>s.jsxDEV(Qde,{pool:d,onClick:()=>t==null?void 0:t(d.agentId),isSelected:i===d.agentId},d.agentId,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:117,columnNumber:15},this)),(o==null?void 0:o.length)===0&&s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"No pending messages"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:125,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:115,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:109,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:104,columnNumber:5},this)}async function Jde(e,t){const i=new URLSearchParams({projectId:e});t!=null&&t.status&&i.set("status",t.status),t!=null&&t.agentId&&i.set("agentId",t.agentId),t!=null&&t.source&&i.set("source",t.source);const r=await fetch(`/api/sessions/messages?${i.toString()}`);if(!r.ok)throw new Error("Failed to fetch messages");return r.json()}function v6(e,t){return e.length<=t?e:e.slice(0,t)+"..."}function Zde(e){return new Date(e).toLocaleTimeString()}function ehe(e=[]){const t=[],i=new Map;for(const r of e)if(r.batchId){const o=i.get(r.batchId)||[];o.push(r),i.set(r.batchId,o)}else t.push({batchId:void 0,messages:[r],status:r.status,timestamp:r.timestamp,agentName:r.agentName});for(const[r,o]of i){const c=o.sort((u,l)=>u.timestamp-l.timestamp);t.push({batchId:r,messages:c,status:c[0].status,timestamp:c[0].timestamp,agentName:c[0].agentName})}return t.sort((r,o)=>o.timestamp-r.timestamp)}function the({status:e}){const t={queued:"bg-muted text-muted-foreground",delivered:"bg-emerald-500/10 text-emerald-600 border-emerald-500/40",failed:"bg-destructive/10 text-destructive border-destructive/40"};return s.jsxDEV(Je,{variant:"outline",className:we("text-xs uppercase",t[e]),children:e},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:134,columnNumber:5},this)}function she({message:e,onClick:t}){return s.jsxDEV("button",{type:"button",onClick:t,className:we("w-full text-left pl-4 py-1 rounded text-sm transition-colors","hover:bg-accent focus:outline-none focus-visible:ring-2 focus-visible:ring-ring"),"aria-label":`Message from ${e.source}: ${v6(e.preview,50)}`,children:[s.jsxDEV("span",{className:"text-muted-foreground",children:["[",e.source,"]"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:156,columnNumber:7},this)," ",s.jsxDEV("span",{children:v6(e.preview,80)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:157,columnNumber:7},this),e.error&&s.jsxDEV("div",{className:"text-destructive text-xs mt-1",children:["Error: ",e.error]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:158,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:147,columnNumber:5},this)}function ihe({group:e,onMessageClick:t}){const i=e.messages.length>1;return s.jsxDEV("div",{className:"border-b py-2 last:border-b-0",children:[s.jsxDEV("div",{className:"flex items-center gap-2 flex-wrap",children:[s.jsxDEV(the,{status:e.status},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:174,columnNumber:9},this),s.jsxDEV("span",{className:"text-sm text-muted-foreground",children:Zde(e.timestamp)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:175,columnNumber:9},this),i&&s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:["batch of ",e.messages.length]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:177,columnNumber:11},this),s.jsxDEV("span",{className:"ml-auto text-sm",children:["→ ",e.agentName]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:181,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:173,columnNumber:7},this),s.jsxDEV("div",{className:"mt-1 space-y-1",children:e.messages.map(r=>s.jsxDEV(she,{message:r,onClick:()=>t(r)},r.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:185,columnNumber:11},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:183,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:172,columnNumber:5},this)}function ahe({projectId:e,filters:t,onMessageClick:i}){const r=zs(),{data:o,isLoading:c,error:u}=st({queryKey:["messages",e,t],queryFn:()=>Jde(e,t),refetchInterval:1e4,staleTime:2e3}),l=f.useCallback(m=>{if(!m)return;const{topic:y}=m;y==="messages/activity"&&r.invalidateQueries({queryKey:["messages",e]})},[r,e]);Bc({message:l},[l]);const d=f.useMemo(()=>ehe(o==null?void 0:o.messages),[o==null?void 0:o.messages]),h=f.useCallback(m=>{i==null||i(m)},[i]),g=f.useMemo(()=>{const m=[];return t!=null&&t.agentId&&m.push("filtered by agent"),t!=null&&t.status&&m.push(`status: ${t.status}`),t!=null&&t.source&&m.push(`source: ${t.source}`),m.length>0?` (${m.join(", ")})`:""},[t]);return s.jsxDEV(Ps,{className:"flex-1 flex flex-col min-h-0",children:[s.jsxDEV(mi,{className:"flex-shrink-0",children:[s.jsxDEV(vi,{children:"Activity Log"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:239,columnNumber:9},this),s.jsxDEV(Fi,{children:["Recent message delivery history",g,o&&` • ${o.total} total`]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:240,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:238,columnNumber:7},this),s.jsxDEV(Fs,{className:"flex-1 min-h-0",children:[c&&s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Loading messages..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:246,columnNumber:23},this),u instanceof Error&&s.jsxDEV("p",{className:"text-sm text-destructive",children:["Failed to load messages: ",u.message]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:248,columnNumber:11},this),!c&&!u&&s.jsxDEV(xr,{className:"h-full",children:d.length===0?s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"No messages found"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:253,columnNumber:15},this):s.jsxDEV("div",{className:"space-y-0 pr-4",children:d.map(m=>s.jsxDEV(ihe,{group:m,onMessageClick:h},m.batchId||m.messages[0].id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:257,columnNumber:19},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:255,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:251,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:245,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:237,columnNumber:5},this)}async function rhe(e){const t=await fetch(`/api/sessions/messages/${e}`);if(!t.ok)throw new Error("Failed to fetch message details");return(await t.json()).message}function nhe(e){return new Date(e).toLocaleString()}function ohe(e){return new Date(e).toLocaleTimeString()}function lhe({status:e}){const t={queued:"bg-muted text-muted-foreground",delivered:"bg-emerald-500/10 text-emerald-600 border-emerald-500/40",failed:"bg-destructive/10 text-destructive border-destructive/40"};return s.jsxDEV(Je,{variant:"outline",className:we("text-xs uppercase font-medium",t[e]),children:e},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:54,columnNumber:5},this)}function Ub({icon:e,title:t,children:i,className:r}){return s.jsxDEV("div",{className:we("space-y-2",r),children:[s.jsxDEV("div",{className:"flex items-center gap-2 text-sm font-medium text-muted-foreground",children:[e&&s.jsxDEV(e,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:75,columnNumber:18},this),s.jsxDEV("span",{children:t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:76,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:74,columnNumber:7},this),s.jsxDEV("div",{className:"pl-6",children:i},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:78,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:73,columnNumber:5},this)}function b6({text:e}){const[t,i]=f.useState(!1),r=async()=>{try{await navigator.clipboard.writeText(e),i(!0),setTimeout(()=>i(!1),2e3)}catch(o){console.error("Failed to copy:",o)}};return s.jsxDEV("div",{className:"relative rounded-lg border bg-muted/50",children:[s.jsxDEV("div",{className:"absolute right-2 top-2 z-10",children:s.jsxDEV(le,{variant:"ghost",size:"sm",onClick:r,className:"h-8 w-8 p-0 hover:bg-background","aria-label":"Copy content",children:t?s.jsxDEV(th,{className:"h-4 w-4 text-emerald-500"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:108,columnNumber:13},this):s.jsxDEV(p2,{className:"h-4 w-4 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:110,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:100,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:99,columnNumber:7},this),s.jsxDEV("pre",{className:"overflow-auto p-4 pr-12 text-sm whitespace-pre-wrap break-words max-h-72",children:e},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:114,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:98,columnNumber:5},this)}function che({message:e,onClose:t}){const[i,r]=f.useState(null),[o,c]=f.useState(!1),[u,l]=f.useState(null);return f.useEffect(()=>{if(!e){r(null),l(null);return}c(!0),l(null),rhe(e.id).then(r).catch(d=>{console.error("Failed to fetch message details:",d),l("Failed to load message content")}).finally(()=>c(!1))},[e==null?void 0:e.id]),s.jsxDEV(WM,{open:!!e,onOpenChange:d=>!d&&t(),children:s.jsxDEV(d3,{children:[s.jsxDEV(h3,{className:"pb-2",children:[s.jsxDEV(f3,{children:"Message Details"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:150,columnNumber:11},this),s.jsxDEV(g3,{children:e&&nhe(e.timestamp)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:151,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:149,columnNumber:9},this),e&&s.jsxDEV(xr,{className:"flex-1 px-4",children:s.jsxDEV("div",{className:"space-y-5 pb-4",children:[s.jsxDEV(Ub,{icon:CV,title:"Status",children:s.jsxDEV("div",{className:"flex items-center gap-3",children:[s.jsxDEV(lhe,{status:e.status},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:160,columnNumber:19},this),e.deliveredAt&&s.jsxDEV("span",{className:"text-sm text-muted-foreground",children:["Delivered at ",ohe(e.deliveredAt)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:162,columnNumber:21},this),e.immediate&&s.jsxDEV(Je,{variant:"secondary",className:"text-xs",children:[s.jsxDEV(OV,{className:"h-3 w-3 mr-1"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:168,columnNumber:23},this),"Immediate"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:167,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:159,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:158,columnNumber:15},this),s.jsxDEV(Ub,{icon:Yu,title:"Routing",children:s.jsxDEV("div",{className:"grid grid-cols-2 gap-4 text-sm",children:[s.jsxDEV("div",{children:[s.jsxDEV("span",{className:"text-muted-foreground",children:"Recipient"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:179,columnNumber:21},this),s.jsxDEV("p",{className:"font-medium",children:e.agentName},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:180,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:178,columnNumber:19},this),s.jsxDEV("div",{children:[s.jsxDEV("span",{className:"text-muted-foreground",children:"Source"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:183,columnNumber:21},this),s.jsxDEV("p",{className:"font-mono text-xs",children:e.source},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:184,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:182,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:177,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:176,columnNumber:15},this),e.error&&s.jsxDEV(Ub,{icon:si,title:"Error",className:"text-destructive",children:s.jsxDEV("div",{className:"rounded-lg border border-destructive/50 bg-destructive/10 p-3",children:s.jsxDEV("p",{className:"text-sm text-destructive",children:e.error},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:193,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:192,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:191,columnNumber:17},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV("div",{className:"flex items-center gap-2 text-sm font-medium text-muted-foreground",children:s.jsxDEV("span",{children:"Content"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:201,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:200,columnNumber:17},this),o?s.jsxDEV("div",{className:"flex items-center justify-center p-8 rounded-lg border bg-muted/50",children:[s.jsxDEV(ot,{className:"h-6 w-6 animate-spin text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:205,columnNumber:21},this),s.jsxDEV("span",{className:"ml-2 text-sm text-muted-foreground",children:"Loading content..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:206,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:204,columnNumber:19},this):u?s.jsxDEV("div",{className:"rounded-lg border border-destructive/50 bg-destructive/10 p-4",children:[s.jsxDEV("p",{className:"text-sm text-destructive",children:u},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:210,columnNumber:21},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-2",children:["Preview: ",e.preview]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:211,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:209,columnNumber:19},this):i?s.jsxDEV(b6,{text:i.text},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:214,columnNumber:19},this):s.jsxDEV(b6,{text:e.preview},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:216,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:199,columnNumber:15},this),s.jsxDEV(Ub,{icon:kV,title:"Metadata",children:s.jsxDEV("div",{className:"rounded-lg border bg-muted/30 p-3",children:s.jsxDEV("dl",{className:"text-sm space-y-2",children:[s.jsxDEV("div",{className:"flex justify-between",children:[s.jsxDEV("dt",{className:"text-muted-foreground",children:"Message ID"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:225,columnNumber:23},this),s.jsxDEV("dd",{className:"font-mono text-xs text-right max-w-[200px] truncate",children:e.id},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:226,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:224,columnNumber:21},this),s.jsxDEV("div",{className:"flex justify-between",children:[s.jsxDEV("dt",{className:"text-muted-foreground",children:"Agent ID"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:231,columnNumber:23},this),s.jsxDEV("dd",{className:"font-mono text-xs text-right max-w-[200px] truncate",children:e.agentId},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:232,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:230,columnNumber:21},this),e.batchId&&s.jsxDEV("div",{className:"flex justify-between",children:[s.jsxDEV("dt",{className:"text-muted-foreground",children:"Batch ID"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:238,columnNumber:25},this),s.jsxDEV("dd",{className:"font-mono text-xs text-right max-w-[200px] truncate",children:e.batchId},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:239,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:237,columnNumber:23},this),e.senderAgentId&&s.jsxDEV("div",{className:"flex justify-between",children:[s.jsxDEV("dt",{className:"text-muted-foreground",children:"Sender Agent"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:246,columnNumber:25},this),s.jsxDEV("dd",{className:"font-mono text-xs text-right max-w-[200px] truncate",children:e.senderAgentId},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:247,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:245,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:223,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:222,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:221,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:156,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:155,columnNumber:11},this),s.jsxDEV(m3,{children:s.jsxDEV(HM,{asChild:!0,children:s.jsxDEV(le,{variant:"outline",children:"Close"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:261,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:260,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:259,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:148,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:147,columnNumber:5},this)}const uhe=[{value:"epic.assigned",label:"Epic Assignment"},{value:"chat.message",label:"Chat Message"},{value:"mcp.send_message",label:"MCP Tool Call"},{value:"subscriber.action",label:"Subscriber Action"},{value:"pool.failure_notice",label:"Failure Notice"}];async function phe(e){const t=await fetch(`/api/agents?projectId=${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch agents");return t.json()}function dhe(e){return!!(e.status||e.agentId||e.source)}function hhe({projectId:e,filters:t,onChange:i}){const{data:r}=st({queryKey:["agents",e],queryFn:()=>phe(e),enabled:!!e,staleTime:3e4}),o=(r==null?void 0:r.items)??[],c=h=>{i({...t,status:h==="all"?void 0:h})},u=h=>{i({...t,agentId:h==="all"?void 0:h})},l=h=>{i({...t,source:h==="all"?void 0:h})},d=()=>{i({})};return s.jsxDEV("div",{className:"flex flex-wrap gap-3 items-center",children:[s.jsxDEV(Ls,{value:t.status||"all",onValueChange:c,children:[s.jsxDEV(Ts,{className:"w-32","aria-label":"Filter by status",children:s.jsxDEV($s,{placeholder:"Status"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:82,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:81,columnNumber:9},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"all",children:"All Status"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:85,columnNumber:11},this),s.jsxDEV(Pt,{value:"queued",children:"Queued"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:86,columnNumber:11},this),s.jsxDEV(Pt,{value:"delivered",children:"Delivered"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:87,columnNumber:11},this),s.jsxDEV(Pt,{value:"failed",children:"Failed"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:88,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:84,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:80,columnNumber:7},this),s.jsxDEV(Ls,{value:t.agentId||"all",onValueChange:u,children:[s.jsxDEV(Ts,{className:"w-40","aria-label":"Filter by agent",children:s.jsxDEV($s,{placeholder:"Agent"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:95,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:94,columnNumber:9},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"all",children:"All Agents"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:98,columnNumber:11},this),o.map(h=>s.jsxDEV(Pt,{value:h.id,children:h.name},h.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:100,columnNumber:13},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:97,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:93,columnNumber:7},this),s.jsxDEV(Ls,{value:t.source||"all",onValueChange:l,children:[s.jsxDEV(Ts,{className:"w-44","aria-label":"Filter by source",children:s.jsxDEV($s,{placeholder:"Source"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:110,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:109,columnNumber:9},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"all",children:"All Sources"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:113,columnNumber:11},this),uhe.map(h=>s.jsxDEV(Pt,{value:h.value,children:h.label},h.value,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:115,columnNumber:13},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:112,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:108,columnNumber:7},this),dhe(t)&&s.jsxDEV(le,{variant:"ghost",size:"sm",onClick:d,className:"gap-1","aria-label":"Clear all filters",children:[s.jsxDEV(jl,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:131,columnNumber:11},this),"Clear"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:124,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:78,columnNumber:5},this)}function mhe(){const{selectedProject:e}=Gi(),[t,i]=f.useState({}),[r,o]=f.useState(null),c=f.useCallback(h=>{i(h)},[]),u=f.useCallback(h=>{o(h)},[]),l=f.useCallback(()=>{o(null)},[]);if(!e)return s.jsxDEV("div",{className:"flex flex-1 items-center justify-center",children:s.jsxDEV(Bte,{icon:Cl,title:"No project selected",description:"Select a project to view message activity"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/MessagesPage.tsx",lineNumber:34,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/MessagesPage.tsx",lineNumber:33,columnNumber:7},this);const d=h=>{i(g=>({...g,agentId:g.agentId===h?void 0:h}))};return s.jsxDEV("div",{className:"flex flex-col gap-6 h-full",children:[s.jsxDEV(Dte,{title:"Messages",description:"Monitor message pools and delivery activity"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/MessagesPage.tsx",lineNumber:53,columnNumber:7},this),s.jsxDEV(Xde,{projectId:e.id,onAgentClick:d,selectedAgentId:t.agentId},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/MessagesPage.tsx",lineNumber:55,columnNumber:7},this),s.jsxDEV(hhe,{projectId:e.id,filters:t,onChange:c},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/MessagesPage.tsx",lineNumber:61,columnNumber:7},this),s.jsxDEV(ahe,{projectId:e.id,filters:Object.keys(t).length>0?t:void 0,onMessageClick:u},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/MessagesPage.tsx",lineNumber:67,columnNumber:7},this),s.jsxDEV(che,{message:r,onClose:l},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/MessagesPage.tsx",lineNumber:73,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/MessagesPage.tsx",lineNumber:52,columnNumber:5},this)}const fhe={contains:"Contains",regex:"Regex",not_contains:"Not Contains"};function ghe(e){return fhe[e]}async function ZM(e){const t=new URLSearchParams({projectId:e}),i=await fetch(`/api/watchers?${t.toString()}`);if(!i.ok)throw new Error("Failed to fetch watchers");return i.json()}async function vhe(e){const t=await fetch("/api/watchers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const i=await t.json().catch(()=>({message:"Failed to create watcher"}));throw new Error(i.message||"Failed to create watcher")}return t.json()}async function bhe(e,t){const i=await fetch(`/api/watchers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok){const r=await i.json().catch(()=>({message:"Failed to update watcher"}));throw new Error(r.message||"Failed to update watcher")}return i.json()}async function Nhe(e){if(!(await fetch(`/api/watchers/${e}`,{method:"DELETE"})).ok)throw new Error("Failed to delete watcher")}async function xhe(e,t){const i=await fetch(`/api/watchers/${e}/toggle`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:t})});if(!i.ok)throw new Error("Failed to toggle watcher");return i.json()}async function whe(e){const t=await fetch(`/api/watchers/${e}/test`,{method:"POST"});if(!t.ok)throw new Error("Failed to test watcher");return t.json()}const N6={name:"",description:"",enabled:!0,scope:"all",scopeFilterId:"",pollIntervalMs:5e3,viewportLines:50,conditionType:"contains",conditionPattern:"",conditionFlags:"",idleAfterSeconds:0,cooldownMode:"time",cooldownMs:3e4,eventName:""};async function yhe(e){const t=await fetch(`/api/agents?projectId=${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch agents");return t.json()}async function Ehe(e){const t=await fetch(`/api/profiles?projectId=${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch profiles");return t.json()}async function Dhe(){const e=await fetch("/api/providers");if(!e.ok)throw new Error("Failed to fetch providers");return e.json()}const She=/^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*$/;function x6({open:e,onOpenChange:t,watcher:i}){const r=zs(),{toast:o}=ii(),{selectedProjectId:c}=Gi(),u=!!i,[l,d]=f.useState(N6),[h,g]=f.useState({}),{data:m}=st({queryKey:["agents",c],queryFn:()=>yhe(c),enabled:!!c&&e}),{data:y}=st({queryKey:["profiles",c],queryFn:()=>Ehe(c),enabled:!!c&&e}),{data:E}=st({queryKey:["providers"],queryFn:Dhe,enabled:e});f.useEffect(()=>{e&&(d(i?{name:i.name,description:i.description||"",enabled:i.enabled,scope:i.scope,scopeFilterId:i.scopeFilterId||"",pollIntervalMs:i.pollIntervalMs,viewportLines:i.viewportLines,conditionType:i.condition.type,conditionPattern:i.condition.pattern,conditionFlags:i.condition.flags||"",idleAfterSeconds:i.idleAfterSeconds??0,cooldownMode:i.cooldownMode,cooldownMs:i.cooldownMs,eventName:i.eventName}:N6),g({}))},[e,i]);const C=yt({mutationFn:P=>vhe(P),onSuccess:()=>{r.invalidateQueries({queryKey:["watchers",c]}),t(!1),o({title:"Success",description:"Watcher created successfully"})},onError:P=>{o({title:"Error",description:P instanceof Error?P.message:"Failed to create watcher",variant:"destructive"})}}),D=yt({mutationFn:({id:P,data:R})=>bhe(P,R),onSuccess:()=>{r.invalidateQueries({queryKey:["watchers",c]}),t(!1),o({title:"Success",description:"Watcher updated successfully"})},onError:P=>{o({title:"Error",description:P instanceof Error?P.message:"Failed to update watcher",variant:"destructive"})}}),b=C.isPending||D.isPending,w=()=>{const P={};if(l.name.trim()?l.name.length>100&&(P.name="Name must be 100 characters or less"):P.name="Name is required",l.scope!=="all"&&!l.scopeFilterId&&(P.scopeFilterId=`Please select a ${l.scope}`),(l.pollIntervalMs<1e3||l.pollIntervalMs>6e4)&&(P.pollIntervalMs="Poll interval must be between 1000ms and 60000ms"),(l.viewportLines<10||l.viewportLines>200)&&(P.viewportLines="Viewport lines must be between 10 and 200"),l.conditionPattern.trim()||(P.conditionPattern="Pattern is required"),l.conditionType==="regex")try{new RegExp(l.conditionPattern,l.conditionFlags)}catch{P.conditionPattern="Invalid regular expression"}return(l.idleAfterSeconds<0||l.idleAfterSeconds>3600)&&(P.idleAfterSeconds="Idle gate must be between 0 and 3600 seconds"),l.cooldownMs<0&&(P.cooldownMs="Cooldown must be 0 or greater"),l.eventName.trim()?She.test(l.eventName)||(P.eventName="Event name must be lowercase, start with letter, use dots for namespacing (e.g., watcher.error_detected)"):P.eventName="Event name is required",g(P),Object.keys(P).length===0},N=P=>{if(P.preventDefault(),!w())return;if(!c){o({title:"Error",description:"Please select a project first",variant:"destructive"});return}const R={type:l.conditionType,pattern:l.conditionPattern};if(l.conditionType==="regex"&&l.conditionFlags&&(R.flags=l.conditionFlags),u&&i){const k={name:l.name,description:l.description||null,enabled:l.enabled,scope:l.scope,scopeFilterId:l.scope==="all"?null:l.scopeFilterId,pollIntervalMs:l.pollIntervalMs,viewportLines:l.viewportLines,condition:R,idleAfterSeconds:l.idleAfterSeconds,cooldownMode:l.cooldownMode,cooldownMs:l.cooldownMs,eventName:l.eventName};D.mutate({id:i.id,data:k})}else{const k={projectId:c,name:l.name,description:l.description||void 0,enabled:l.enabled,scope:l.scope,scopeFilterId:l.scope==="all"?null:l.scopeFilterId,pollIntervalMs:l.pollIntervalMs,viewportLines:l.viewportLines,condition:R,idleAfterSeconds:l.idleAfterSeconds,cooldownMode:l.cooldownMode,cooldownMs:l.cooldownMs,eventName:l.eventName};C.mutate(k)}},x=(P,R)=>{d(k=>({...k,[P]:R})),h[P]&&g(k=>({...k,[P]:void 0}))},_=()=>{switch(l.scope){case"agent":return(m==null?void 0:m.items)||[];case"profile":return(y==null?void 0:y.items)||[];case"provider":return(E==null?void 0:E.items)||[];default:return[]}};return s.jsxDEV(Es,{open:e,onOpenChange:t,children:s.jsxDEV(xs,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:u?"Edit Watcher":"Create Watcher"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:344,columnNumber:11},this),s.jsxDEV(ls,{children:u?"Update the watcher configuration.":"Configure a new watcher to monitor terminal output."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:345,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:343,columnNumber:9},this),s.jsxDEV("form",{onSubmit:N,className:"space-y-6",children:[s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Basic Info"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:355,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"name",children:"Name *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:359,columnNumber:15},this),s.jsxDEV(Tt,{id:"name",value:l.name,onChange:P=>x("name",P.target.value),placeholder:"Error Detector",className:h.name?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:360,columnNumber:15},this),h.name&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:367,columnNumber:31},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:358,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"description",children:"Description"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:370,columnNumber:15},this),s.jsxDEV(ta,{id:"description",value:l.description,onChange:P=>x("description",P.target.value),placeholder:"Monitors for error messages in terminal output",rows:2},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:371,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:369,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:354,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Scope"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:383,columnNumber:13},this),s.jsxDEV("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{children:"Monitor"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:388,columnNumber:17},this),s.jsxDEV(Ls,{value:l.scope,onValueChange:P=>{x("scope",P),x("scopeFilterId","")},children:[s.jsxDEV(Ts,{children:s.jsxDEV($s,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:397,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:396,columnNumber:19},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"all",children:"All Sessions"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:400,columnNumber:21},this),s.jsxDEV(Pt,{value:"agent",children:"Specific Agent"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:401,columnNumber:21},this),s.jsxDEV(Pt,{value:"profile",children:"Specific Profile"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:402,columnNumber:21},this),s.jsxDEV(Pt,{value:"provider",children:"Specific Provider"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:403,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:399,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:389,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:387,columnNumber:15},this),l.scope!=="all"&&s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{children:["Select ",l.scope.charAt(0).toUpperCase()+l.scope.slice(1)," *"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:409,columnNumber:19},this),s.jsxDEV(Ls,{value:l.scopeFilterId,onValueChange:P=>x("scopeFilterId",P),children:[s.jsxDEV(Ts,{className:h.scopeFilterId?"border-destructive":"",children:s.jsxDEV($s,{placeholder:`Select ${l.scope}...`},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:417,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:416,columnNumber:21},this),s.jsxDEV(Rs,{children:_().map(P=>s.jsxDEV(Pt,{value:P.id,children:P.name},P.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:421,columnNumber:25},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:419,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:412,columnNumber:19},this),h.scopeFilterId&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.scopeFilterId},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:428,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:408,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:386,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:382,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Polling"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:437,columnNumber:13},this),s.jsxDEV("div",{className:"grid gap-4 grid-cols-2",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"pollInterval",children:"Poll Interval (ms) *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:442,columnNumber:17},this),s.jsxDEV(Tt,{id:"pollInterval",type:"number",min:1e3,max:6e4,step:1e3,value:l.pollIntervalMs,onChange:P=>x("pollIntervalMs",parseInt(P.target.value)||5e3),className:h.pollIntervalMs?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:443,columnNumber:17},this),h.pollIntervalMs&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.pollIntervalMs},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:454,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:441,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"viewportLines",children:"Viewport Lines *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:458,columnNumber:17},this),s.jsxDEV(Tt,{id:"viewportLines",type:"number",min:10,max:200,step:10,value:l.viewportLines,onChange:P=>x("viewportLines",parseInt(P.target.value)||50),className:h.viewportLines?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:459,columnNumber:17},this),h.viewportLines&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.viewportLines},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:470,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:457,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:440,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:436,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Trigger Condition"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:478,columnNumber:13},this),s.jsxDEV("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{children:"Condition Type"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:483,columnNumber:17},this),s.jsxDEV(Ls,{value:l.conditionType,onValueChange:P=>{x("conditionType",P),P!=="regex"&&x("conditionFlags","")},children:[s.jsxDEV(Ts,{children:s.jsxDEV($s,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:494,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:493,columnNumber:19},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"contains",children:"Contains"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:497,columnNumber:21},this),s.jsxDEV(Pt,{value:"regex",children:"Regex"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:498,columnNumber:21},this),s.jsxDEV(Pt,{value:"not_contains",children:"Not Contains"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:499,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:496,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:484,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:482,columnNumber:15},this),l.conditionType==="regex"&&s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"conditionFlags",children:"Regex Flags"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:505,columnNumber:19},this),s.jsxDEV(Tt,{id:"conditionFlags",value:l.conditionFlags,onChange:P=>x("conditionFlags",P.target.value),placeholder:"gi"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:506,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:504,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:481,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"conditionPattern",children:"Pattern *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:516,columnNumber:15},this),s.jsxDEV(Tt,{id:"conditionPattern",value:l.conditionPattern,onChange:P=>{x("conditionPattern",P.target.value)},placeholder:l.conditionType==="regex"?"error|exception|failed":"Error:",className:h.conditionPattern?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:517,columnNumber:15},this),h.conditionPattern&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.conditionPattern},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:529,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:515,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:477,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Cooldown"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:536,columnNumber:13},this),s.jsxDEV("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-3",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{children:"Cooldown Mode"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:541,columnNumber:17},this),s.jsxDEV(Ls,{value:l.cooldownMode,onValueChange:P=>x("cooldownMode",P),children:[s.jsxDEV(Ts,{children:s.jsxDEV($s,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:547,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:546,columnNumber:19},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"time",children:"Time-based"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:550,columnNumber:21},this),s.jsxDEV(Pt,{value:"until_clear",children:"Until Condition Clears"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:551,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:549,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:542,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:540,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"cooldownMs",children:"Cooldown (ms)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:556,columnNumber:17},this),s.jsxDEV(Tt,{id:"cooldownMs",type:"number",min:0,step:1e3,value:l.cooldownMs,onChange:P=>x("cooldownMs",parseInt(P.target.value)||0),className:h.cooldownMs?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:557,columnNumber:17},this),h.cooldownMs&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.cooldownMs},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:567,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:555,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"idleAfterSeconds",children:"Only when idle for (seconds)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:571,columnNumber:17},this),s.jsxDEV(Tt,{id:"idleAfterSeconds",type:"number",min:0,max:3600,step:1,value:l.idleAfterSeconds,onChange:P=>x("idleAfterSeconds",parseInt(P.target.value,10)||0),placeholder:"0 = disabled",className:h.idleAfterSeconds?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:572,columnNumber:17},this),h.idleAfterSeconds&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.idleAfterSeconds},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:586,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:570,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:539,columnNumber:13},this),l.idleAfterSeconds>0&&s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:'Recommended: use "Until Condition Clears" cooldown mode for idle-gated watchers.'},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:591,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:535,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Event Output"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:600,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"eventName",children:"Event Name *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:604,columnNumber:15},this),s.jsxDEV(Tt,{id:"eventName",value:l.eventName,onChange:P=>x("eventName",P.target.value),placeholder:"watcher.error_detected",className:h.eventName?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:605,columnNumber:15},this),h.eventName&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.eventName},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:612,columnNumber:36},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Lowercase with dots for namespacing (e.g., watcher.build_failed)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:613,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:603,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:599,columnNumber:11},this),s.jsxDEV("div",{className:"flex items-center space-x-2",children:[s.jsxDEV(Ra,{id:"enabled",checked:l.enabled,onCheckedChange:P=>x("enabled",P===!0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:621,columnNumber:13},this),s.jsxDEV(We,{htmlFor:"enabled",className:"cursor-pointer",children:"Enable watcher immediately"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:626,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:620,columnNumber:11},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{type:"button",variant:"outline",onClick:()=>t(!1),children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:632,columnNumber:13},this),s.jsxDEV(le,{type:"submit",disabled:b,children:[b&&s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:636,columnNumber:29},this),u?"Update":"Create"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:635,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:631,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:352,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:342,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:341,columnNumber:5},this)}function _he(){const e=zs(),{toast:t}=ii(),{selectedProjectId:i}=Gi(),[r,o]=f.useState(null),[c,u]=f.useState(null),[l,d]=f.useState(!1),[h,g]=f.useState(null),{data:m,isLoading:y,error:E}=st({queryKey:["watchers",i],queryFn:()=>ZM(i),enabled:!!i}),C=yt({mutationFn:({id:k,enabled:j})=>xhe(k,j),onMutate:async({id:k,enabled:j})=>{await e.cancelQueries({queryKey:["watchers",i]});const V=e.getQueryData(["watchers",i]);return e.setQueryData(["watchers",i],M=>M==null?void 0:M.map(F=>F.id===k?{...F,enabled:j}:F)),{previousWatchers:V}},onError:(k,j,V)=>{V!=null&&V.previousWatchers&&e.setQueryData(["watchers",i],V.previousWatchers),t({title:"Error",description:k instanceof Error?k.message:"Failed to toggle watcher",variant:"destructive"})},onSettled:()=>{e.invalidateQueries({queryKey:["watchers",i]})}}),D=yt({mutationFn:Nhe,onMutate:async k=>{await e.cancelQueries({queryKey:["watchers",i]});const j=e.getQueryData(["watchers",i]);return e.setQueryData(["watchers",i],V=>V==null?void 0:V.filter(M=>M.id!==k)),{previousWatchers:j}},onSuccess:()=>{o(null),t({title:"Success",description:"Watcher deleted successfully"})},onError:(k,j,V)=>{V!=null&&V.previousWatchers&&e.setQueryData(["watchers",i],V.previousWatchers),t({title:"Error",description:k instanceof Error?k.message:"Failed to delete watcher",variant:"destructive"})},onSettled:()=>{e.invalidateQueries({queryKey:["watchers",i]})}}),b=yt({mutationFn:whe,onSuccess:k=>{const j=k.results.filter(V=>V.conditionMatched).length;j>0?t({title:"Test Complete",description:`Condition matched in ${j} of ${k.sessionsChecked} sessions`}):t({title:"Test Complete",description:`No matches found in ${k.sessionsChecked} sessions`}),u(k)},onError:k=>{t({title:"Test Failed",description:k instanceof Error?k.message:"Failed to test watcher",variant:"destructive"})}}),w=()=>{g(null),d(!0)},N=k=>{g(k),d(!0)},x=k=>{d(k),k||g(null)},_=k=>k>=6e4?`${k/6e4}m`:`${k/1e3}s`,P=k=>{const{condition:j,idleAfterSeconds:V}=k,M=j.pattern.length>30?j.pattern.slice(0,30)+"...":j.pattern,F=`${ghe(j.type)}: ${M}`;return V>0?`Idle >= ${V}s + ${F}`:F},R=k=>k.scope==="all"?"All Sessions":k.scopeFilterId?`${k.scope.charAt(0).toUpperCase()+k.scope.slice(1)}: ${k.scopeFilterId.slice(0,8)}...`:k.scope.charAt(0).toUpperCase()+k.scope.slice(1);return y?s.jsxDEV(Ps,{children:s.jsxDEV(Fs,{className:"flex items-center justify-center py-12",children:[s.jsxDEV(ot,{className:"h-8 w-8 animate-spin text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:205,columnNumber:11},this),s.jsxDEV("span",{className:"ml-2 text-muted-foreground",children:"Loading watchers..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:206,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:204,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:203,columnNumber:7},this):E?s.jsxDEV(Ps,{children:s.jsxDEV(Fs,{className:"flex flex-col items-center justify-center py-12",children:[s.jsxDEV(si,{className:"h-8 w-8 text-destructive mb-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:217,columnNumber:11},this),s.jsxDEV("p",{className:"text-destructive",children:E instanceof Error?E.message:"Failed to load watchers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:218,columnNumber:11},this),s.jsxDEV(le,{variant:"outline",className:"mt-4",onClick:()=>e.invalidateQueries({queryKey:["watchers",i]}),children:"Retry"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:221,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:216,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:215,columnNumber:7},this):i?!m||m.length===0?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{children:[s.jsxDEV(vi,{children:"Watchers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:255,columnNumber:17},this),s.jsxDEV(Fi,{children:"Monitor terminal output and trigger events when conditions are met."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:256,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:254,columnNumber:15},this),s.jsxDEV(le,{onClick:w,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:261,columnNumber:17},this),"Add Watcher"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:260,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:253,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:252,columnNumber:11},this),s.jsxDEV(Fs,{className:"flex flex-col items-center justify-center py-12",children:[s.jsxDEV(WD,{className:"h-12 w-12 text-muted-foreground mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:267,columnNumber:13},this),s.jsxDEV("h3",{className:"text-lg font-semibold mb-2",children:"No watchers yet"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:268,columnNumber:13},this),s.jsxDEV("p",{className:"text-muted-foreground text-center max-w-md",children:"Create your first watcher to start monitoring terminal output and triggering automated actions."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:269,columnNumber:13},this),s.jsxDEV(le,{className:"mt-4",onClick:w,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:274,columnNumber:15},this),"Create Watcher"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:273,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:266,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:251,columnNumber:9},this),s.jsxDEV(x6,{open:l,onOpenChange:x,watcher:h},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:280,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:250,columnNumber:7},this):s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{children:[s.jsxDEV(vi,{children:"Watchers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:295,columnNumber:15},this),s.jsxDEV(Fi,{children:"Monitor terminal output and trigger events when conditions are met."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:296,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:294,columnNumber:13},this),s.jsxDEV(le,{onClick:w,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:301,columnNumber:15},this),"Add Watcher"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:300,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:293,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:292,columnNumber:9},this),s.jsxDEV(Fs,{children:s.jsxDEV("div",{className:"space-y-4",children:m.map(k=>s.jsxDEV("div",{className:"flex items-start justify-between p-4 border rounded-lg",children:[s.jsxDEV("div",{className:"flex-1 min-w-0",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-1",children:[s.jsxDEV("h4",{className:"font-semibold truncate",children:k.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:315,columnNumber:21},this),s.jsxDEV(Je,{variant:k.enabled?"default":"secondary",children:k.enabled?"Enabled":"Disabled"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:316,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:314,columnNumber:19},this),k.description&&s.jsxDEV("p",{className:"text-sm text-muted-foreground mb-2 line-clamp-2",children:k.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:321,columnNumber:21},this),s.jsxDEV("div",{className:"flex flex-wrap gap-2 text-xs",children:[s.jsxDEV(Je,{variant:"outline",children:R(k)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:326,columnNumber:21},this),s.jsxDEV(Je,{variant:"outline",children:["Poll: ",_(k.pollIntervalMs)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:327,columnNumber:21},this),s.jsxDEV(Je,{variant:"outline",className:"max-w-[200px] truncate",children:P(k)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:330,columnNumber:21},this),s.jsxDEV(Je,{variant:"secondary",children:k.eventName},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:333,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:325,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:313,columnNumber:17},this),s.jsxDEV("div",{className:"flex items-center gap-2 ml-4",children:[s.jsxDEV(Yn,{checked:k.enabled,onCheckedChange:j=>C.mutate({id:k.id,enabled:j}),disabled:C.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:337,columnNumber:19},this),s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>b.mutate(k.id),disabled:b.isPending,children:[b.isPending&&b.variables===k.id?s.jsxDEV(ot,{className:"h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:351,columnNumber:23},this):s.jsxDEV(gf,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:353,columnNumber:23},this),s.jsxDEV("span",{className:"ml-1",children:"Test"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:355,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:344,columnNumber:19},this),s.jsxDEV(O0,{children:[s.jsxDEV(I0,{asChild:!0,children:s.jsxDEV(le,{variant:"ghost",size:"sm",children:s.jsxDEV(m0,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:360,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:359,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:358,columnNumber:21},this),s.jsxDEV(lg,{align:"end",children:[s.jsxDEV(Dl,{onClick:()=>N(k),children:[s.jsxDEV(Oc,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:365,columnNumber:25},this),"Edit"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:364,columnNumber:23},this),s.jsxDEV(Z2,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:368,columnNumber:23},this),s.jsxDEV(Dl,{className:"text-destructive",onClick:()=>o(k.id),children:[s.jsxDEV(er,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:373,columnNumber:25},this),"Delete"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:369,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:363,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:357,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:336,columnNumber:17},this)]},k.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:309,columnNumber:15},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:307,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:306,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:291,columnNumber:7},this),s.jsxDEV(Es,{open:!!r,onOpenChange:()=>o(null),children:s.jsxDEV(xs,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Delete Watcher"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:389,columnNumber:13},this),s.jsxDEV(ls,{children:"Are you sure you want to delete this watcher? This action cannot be undone."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:390,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:388,columnNumber:11},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:()=>o(null),children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:395,columnNumber:13},this),s.jsxDEV(le,{variant:"destructive",onClick:()=>r&&D.mutate(r),disabled:D.isPending,children:[D.isPending?s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:403,columnNumber:43},this):null,"Delete"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:398,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:394,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:387,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:386,columnNumber:7},this),s.jsxDEV(Es,{open:!!c,onOpenChange:()=>u(null),children:s.jsxDEV(xs,{className:"max-w-2xl",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:["Test Results: ",c==null?void 0:c.watcher.name]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:414,columnNumber:13},this),s.jsxDEV(ls,{children:["Checked ",c==null?void 0:c.sessionsChecked," session",(c==null?void 0:c.sessionsChecked)!==1?"s":""]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:415,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:413,columnNumber:11},this),s.jsxDEV("div",{className:"max-h-[400px] overflow-y-auto",children:(c==null?void 0:c.results.length)===0?s.jsxDEV("p",{className:"text-muted-foreground text-center py-4",children:"No active sessions to test"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:422,columnNumber:15},this):s.jsxDEV("div",{className:"space-y-2",children:c==null?void 0:c.results.map((k,j)=>s.jsxDEV("div",{className:`p-3 rounded-lg border ${k.conditionMatched?"border-green-500 bg-green-500/10":"border-muted"}`,children:[s.jsxDEV("div",{className:"flex items-center justify-between mb-2",children:[s.jsxDEV("span",{className:"font-mono text-sm",children:["Session: ",k.sessionId.slice(0,8),"..."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:433,columnNumber:23},this),s.jsxDEV(Je,{variant:k.conditionMatched?"default":"secondary",children:k.conditionMatched?"Matched":"No Match"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:436,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:432,columnNumber:21},this),k.viewport&&s.jsxDEV("pre",{className:"text-xs bg-muted p-2 rounded overflow-x-auto max-h-[100px]",children:[k.viewport.slice(0,500),k.viewport.length>500?"...":""]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:441,columnNumber:23},this)]},j,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:426,columnNumber:19},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:424,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:420,columnNumber:11},this),s.jsxDEV(Ds,{children:s.jsxDEV(le,{onClick:()=>u(null),children:"Close"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:452,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:451,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:412,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:411,columnNumber:7},this),s.jsxDEV(x6,{open:l,onOpenChange:x,watcher:h},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:458,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:290,columnNumber:5},this):s.jsxDEV(Ps,{children:s.jsxDEV(Fs,{className:"flex flex-col items-center justify-center py-12",children:[s.jsxDEV(WD,{className:"h-8 w-8 text-muted-foreground mb-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:240,columnNumber:11},this),s.jsxDEV("p",{className:"text-muted-foreground",children:"Please select a project to view watchers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:241,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:239,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:238,columnNumber:7},this)}async function eL(){const e=await fetch("/api/subscribers/events");if(!e.ok)throw new Error("Failed to fetch subscribable events");return(await e.json()).events}async function Che(e){const t=new URLSearchParams({projectId:e}),i=await fetch(`/api/subscribers?${t.toString()}`);if(!i.ok)throw new Error("Failed to fetch subscribers");return i.json()}async function jhe(e){const t=await fetch("/api/subscribers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const i=await t.json().catch(()=>({message:"Failed to create subscriber"}));throw new Error(i.message||"Failed to create subscriber")}return t.json()}async function tL(e,t){const i=await fetch(`/api/subscribers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok){const r=await i.json().catch(()=>({message:"Failed to update subscriber"}));throw new Error(r.message||"Failed to update subscriber")}return i.json()}async function Phe(e){if(!(await fetch(`/api/subscribers/${e}`,{method:"DELETE"})).ok)throw new Error("Failed to delete subscriber")}async function khe(e,t){const i=await fetch(`/api/subscribers/${e}/toggle`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:t})});if(!i.ok)throw new Error("Failed to toggle subscriber");return i.json()}async function Vhe(){const e=await fetch("/api/actions");if(!e.ok)throw new Error("Failed to fetch actions");return e.json()}function The(e){return e==="string"||e==="textarea"}function Rhe(e){const t=e.allowedSources;return!t||t.length===0?!1:t.length===1&&t[0]==="custom"}function Ahe({inputDef:e,value:t,onChange:i,availableEventFields:r,error:o}){const c=t.source||"custom",u=h=>{i({source:h,customValue:h==="custom"?t.customValue||"":void 0,eventField:h==="event_field"?t.eventField||"":void 0})},l=h=>{i({source:"custom",customValue:h,eventField:void 0})},d=h=>{i({source:"event_field",customValue:void 0,eventField:h})};return The(e.type)?s.jsxDEV("div",{className:"space-y-2 p-3 border rounded-lg",children:[s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"font-medium",children:[e.label,e.required&&s.jsxDEV("span",{className:"text-destructive ml-1",children:"*"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:87,columnNumber:35},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:85,columnNumber:11},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:e.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:89,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:84,columnNumber:9},this),s.jsxDEV(Mhe,{inputDef:e,value:t.customValue||"",onChange:l,availableEventFields:r,error:o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:91,columnNumber:9},this),o&&s.jsxDEV("p",{className:"text-sm text-destructive",children:o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:98,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:83,columnNumber:7},this):Rhe(e)?s.jsxDEV("div",{className:"space-y-2 p-3 border rounded-lg",children:[s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"font-medium",children:[e.label,e.required&&s.jsxDEV("span",{className:"text-destructive ml-1",children:"*"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:110,columnNumber:35},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:108,columnNumber:11},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:e.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:112,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:107,columnNumber:9},this),s.jsxDEV(w6,{inputDef:e,value:t.customValue||"",onChange:l,error:o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:114,columnNumber:9},this),o&&s.jsxDEV("p",{className:"text-sm text-destructive",children:o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:120,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:106,columnNumber:7},this):s.jsxDEV("div",{className:"space-y-2 p-3 border rounded-lg",children:[s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"font-medium",children:[e.label,e.required&&s.jsxDEV("span",{className:"text-destructive ml-1",children:"*"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:132,columnNumber:35},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:130,columnNumber:11},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:e.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:134,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:129,columnNumber:9},this),s.jsxDEV("div",{className:"flex gap-1",children:[s.jsxDEV("button",{type:"button",onClick:()=>u("custom"),className:`px-2 py-1 text-xs rounded transition-colors ${c==="custom"?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground hover:bg-muted/80"}`,children:"Custom"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:137,columnNumber:11},this),s.jsxDEV("button",{type:"button",onClick:()=>u("event_field"),className:`px-2 py-1 text-xs rounded transition-colors ${c==="event_field"?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground hover:bg-muted/80"}`,children:"Event Field"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:148,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:136,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:128,columnNumber:7},this),c==="custom"?s.jsxDEV(w6,{inputDef:e,value:t.customValue||"",onChange:l,error:o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:163,columnNumber:9},this):s.jsxDEV(Lhe,{value:t.eventField||"",onChange:d,availableEventFields:r,error:o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:170,columnNumber:9},this),o&&s.jsxDEV("p",{className:"text-sm text-destructive",children:o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:178,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:127,columnNumber:5},this)}function Mhe({inputDef:e,value:t,onChange:i,availableEventFields:r,error:o}){var m;const c=f.useRef(null),[u,l]=f.useState(""),d=((m=e.defaultValue)==null?void 0:m.toString())||`Enter ${e.label.toLowerCase()}...`,h=e.type==="textarea"||e.name.toLowerCase().includes("message")||e.name.toLowerCase().includes("text")||e.name.toLowerCase().includes("content"),g=()=>{if(!u||!c.current)return;const y=c.current,E=y.selectionStart??t.length,C=y.selectionEnd??t.length,D=`{{${u}}}`,b=t.slice(0,E)+D+t.slice(C);i(b),setTimeout(()=>{if(c.current){const w=E+D.length;c.current.setSelectionRange(w,w),c.current.focus()}},0)};return s.jsxDEV("div",{className:"space-y-2",children:[h?s.jsxDEV(ta,{ref:c,value:t,onChange:y=>i(y.target.value),placeholder:d,rows:3,className:o?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:239,columnNumber:9},this):s.jsxDEV(Tt,{ref:c,type:"text",value:t,onChange:y=>i(y.target.value),placeholder:d,className:o?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:248,columnNumber:9},this),r.length>0&&s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Ls,{value:u,onValueChange:l,children:[s.jsxDEV(Ts,{className:"flex-1 h-8 text-xs",children:s.jsxDEV($s,{placeholder:"Select variable..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:262,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:261,columnNumber:13},this),s.jsxDEV(Rs,{children:r.map(y=>s.jsxDEV(Pt,{value:y.field,children:[s.jsxDEV("span",{className:"font-mono text-xs",children:`{{${y.field}}}`},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:267,columnNumber:19},this),s.jsxDEV("span",{className:"ml-2 text-muted-foreground",children:y.label},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:268,columnNumber:19},this)]},y.field,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:266,columnNumber:17},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:264,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:260,columnNumber:11},this),s.jsxDEV(le,{type:"button",variant:"outline",size:"sm",onClick:g,disabled:!u,className:"h-8 text-xs",children:"Insert"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:273,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:259,columnNumber:9},this),r.length>0&&s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:["Use ",s.jsxDEV("code",{className:"bg-muted px-1 rounded",children:"{{field}}"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:288,columnNumber:15},this)," syntax to insert event values"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:287,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:237,columnNumber:5},this)}function w6({inputDef:e,value:t,onChange:i,error:r}){var o,c,u;switch(e.type){case"number":return s.jsxDEV(Tt,{type:"number",value:t,onChange:l=>i(l.target.value),placeholder:((o=e.defaultValue)==null?void 0:o.toString())||"0",className:r?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:311,columnNumber:9},this);case"boolean":return s.jsxDEV("div",{className:"flex items-center space-x-2",children:[s.jsxDEV(Ra,{id:`input-${e.name}`,checked:t==="true",onCheckedChange:l=>i(l?"true":"false")},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:323,columnNumber:11},this),s.jsxDEV(We,{htmlFor:`input-${e.name}`,className:"cursor-pointer",children:e.defaultValue===!0?"Enabled by default":"Enable"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:328,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:322,columnNumber:9},this);case"select":return s.jsxDEV(Ls,{value:t,onValueChange:i,children:[s.jsxDEV(Ts,{className:r?"border-destructive":"",children:s.jsxDEV($s,{placeholder:`Select ${e.label.toLowerCase()}...`},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:338,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:337,columnNumber:11},this),s.jsxDEV(Rs,{children:(c=e.options)==null?void 0:c.map(l=>s.jsxDEV(Pt,{value:l.value,children:l.label},l.value,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:342,columnNumber:15},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:340,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:336,columnNumber:9},this);default:return s.jsxDEV(Tt,{type:"text",value:t,onChange:l=>i(l.target.value),placeholder:((u=e.defaultValue)==null?void 0:u.toString())||"",className:r?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:353,columnNumber:9},this)}}function Lhe({value:e,onChange:t,availableEventFields:i,error:r}){return i.length===0?s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(Tt,{type:"text",value:e,onChange:o=>t(o.target.value),placeholder:"Enter event field name...",className:r?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:380,columnNumber:9},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"No predefined event fields available. Enter a custom field name."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:387,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:379,columnNumber:7},this):s.jsxDEV(Ls,{value:e,onValueChange:t,children:[s.jsxDEV(Ts,{className:r?"border-destructive":"",children:s.jsxDEV($s,{placeholder:"Select event field..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:397,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:396,columnNumber:7},this),s.jsxDEV(Rs,{children:i.map(o=>s.jsxDEV(Pt,{value:o.field,children:o.label},o.field,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:401,columnNumber:11},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:399,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:395,columnNumber:5},this)}function Ohe({action:e,values:t,onChange:i,availableEventFields:r=[],errors:o}){if(!e||e.inputs.length===0)return s.jsxDEV("div",{className:"text-sm text-muted-foreground text-center py-4",children:e?"This action has no configurable inputs.":"Select an action to configure inputs."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/ActionInputsForm.tsx",lineNumber:24,columnNumber:7},this);const c=(l,d)=>{i({...t,[l]:d})},u=l=>t[l]||{source:"custom",customValue:""};return s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-2",children:[s.jsxDEV(Je,{variant:"outline",children:e.category},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/ActionInputsForm.tsx",lineNumber:46,columnNumber:9},this),s.jsxDEV("span",{className:"text-sm text-muted-foreground",children:e.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/ActionInputsForm.tsx",lineNumber:47,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/ActionInputsForm.tsx",lineNumber:45,columnNumber:7},this),e.inputs.map(l=>s.jsxDEV(Ahe,{inputDef:l,value:u(l.name),onChange:d=>c(l.name,d),availableEventFields:r,error:o==null?void 0:o[l.name]},l.name,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/ActionInputsForm.tsx",lineNumber:50,columnNumber:9},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/ActionInputsForm.tsx",lineNumber:44,columnNumber:5},this)}function Wb(e,t,i){const r=t?new Set(t.inputs.map(u=>u.name)):null;let o=!1;const c={};for(const[u,l]of Object.entries(i)){if(r&&!r.has(u)){o=!0;continue}if(e==="restart_agent"&&u==="agentId"){o=!0;continue}c[u]=l}return o?c:i}const y6={name:"",description:"",enabled:!0,eventName:"",hasFilter:!1,filterField:"",filterOperator:"equals",filterValue:"",actionType:"",actionInputs:{},delayMs:0,cooldownMs:5e3,retryOnError:!1,groupName:"",priority:0,position:0};function E6({open:e,onOpenChange:t,subscriber:i}){const r=zs(),{toast:o}=ii(),{selectedProjectId:c}=Gi(),u=!!i,[l,d]=f.useState(y6),[h,g]=f.useState({}),[m,y]=f.useState({}),{data:E}=st({queryKey:["subscribableEvents"],queryFn:eL,enabled:e}),{data:C}=st({queryKey:["watchers",c],queryFn:()=>ZM(c),enabled:!!c&&e}),{data:D,isLoading:b}=st({queryKey:["actions"],queryFn:Vhe,enabled:e}),w=(D==null?void 0:D.find(I=>I.type===l.actionType))||null;f.useEffect(()=>{var I,A,O;e&&(d(i?{name:i.name,description:i.description||"",enabled:i.enabled,eventName:i.eventName,hasFilter:!!i.eventFilter,filterField:((I=i.eventFilter)==null?void 0:I.field)||"",filterOperator:((A=i.eventFilter)==null?void 0:A.operator)||"equals",filterValue:((O=i.eventFilter)==null?void 0:O.value)||"",actionType:i.actionType,actionInputs:Wb(i.actionType,null,i.actionInputs||{}),delayMs:i.delayMs,cooldownMs:i.cooldownMs,retryOnError:i.retryOnError,groupName:i.groupName||"",priority:i.priority??0,position:i.position??0}:y6),g({}),y({}))},[e,i]),f.useEffect(()=>{if(!l.actionType||!e)return;const I=Wb(l.actionType,w,l.actionInputs);I!==l.actionInputs&&(k("actionInputs",I),y(A=>{const O={...A};for(const K of Object.keys(A))K in I||delete O[K];return O}))},[e,l.actionType,w]),f.useEffect(()=>{var Y;if(!l.eventName||!E)return;const I=E.find(H=>H.name===l.eventName),A=I?I.fields:((Y=E.find(H=>H.name==="terminal.watcher.triggered"))==null?void 0:Y.fields)||[],O=new Set(A.map(H=>H.field));if(O.size===0)return;let K=!1;const q={...l.actionInputs};for(const[H,L]of Object.entries(q))L.source==="event_field"&&L.eventField&&(O.has(L.eventField)||(q[H]={source:"event_field",eventField:"",customValue:void 0},K=!0));K&&d(H=>({...H,actionInputs:q}))},[l.eventName,l.actionInputs,E]);const N=yt({mutationFn:I=>jhe(I),onSuccess:()=>{r.invalidateQueries({queryKey:["subscribers",c]}),t(!1),o({title:"Success",description:"Subscriber created successfully"})},onError:I=>{o({title:"Error",description:I instanceof Error?I.message:"Failed to create subscriber",variant:"destructive"})}}),x=yt({mutationFn:({id:I,data:A})=>tL(I,A),onSuccess:()=>{r.invalidateQueries({queryKey:["subscribers",c]}),t(!1),o({title:"Success",description:"Subscriber updated successfully"})},onError:I=>{o({title:"Error",description:I instanceof Error?I.message:"Failed to update subscriber",variant:"destructive"})}}),_=N.isPending||x.isPending,P=()=>{var O,K;const I={},A={};if(l.name.trim()?l.name.length>100&&(I.name="Name must be 100 characters or less"):I.name="Name is required",l.eventName.trim()||(I.eventName="Event name is required"),l.hasFilter&&(l.filterField.trim()||(I.filterField="Filter field is required"),l.filterValue.trim()||(I.filterValue="Filter value is required")),l.actionType||(I.actionType="Action type is required"),w){for(const q of w.inputs)if(q.required){const Y=l.actionInputs[q.name];Y?Y.source==="custom"&&!((O=Y.customValue)!=null&&O.trim())?A[q.name]=`${q.label} is required`:Y.source==="event_field"&&!((K=Y.eventField)!=null&&K.trim())&&(A[q.name]=`Please select an event field for ${q.label}`):A[q.name]=`${q.label} is required`}}return l.delayMs<0&&(I.delayMs="Delay must be 0 or greater"),l.cooldownMs<0&&(I.cooldownMs="Cooldown must be 0 or greater"),g(I),y(A),Object.keys(I).length===0&&Object.keys(A).length===0},R=I=>{if(I.preventDefault(),!P())return;if(!c){o({title:"Error",description:"Please select a project first",variant:"destructive"});return}const A=l.hasFilter?{field:l.filterField,operator:l.filterOperator,value:l.filterValue}:null;if(u&&i){const O=Wb(l.actionType,w,l.actionInputs),K={name:l.name,description:l.description||null,enabled:l.enabled,eventName:l.eventName,eventFilter:A,actionType:l.actionType,actionInputs:O,delayMs:l.delayMs,cooldownMs:l.cooldownMs,retryOnError:l.retryOnError,groupName:l.groupName||null,priority:l.priority,position:l.position};x.mutate({id:i.id,data:K})}else{const O=Wb(l.actionType,w,l.actionInputs),K={projectId:c,name:l.name,description:l.description||void 0,enabled:l.enabled,eventName:l.eventName,eventFilter:A,actionType:l.actionType,actionInputs:O,delayMs:l.delayMs,cooldownMs:l.cooldownMs,retryOnError:l.retryOnError,groupName:l.groupName||null,priority:l.priority,position:l.position};N.mutate(K)}},k=(I,A)=>{d(O=>({...O,[I]:A})),h[I]&&g(O=>({...O,[I]:void 0}))},j=[...new Set((C==null?void 0:C.map(I=>I.eventName))||[])],V=E==null?void 0:E.reduce((I,A)=>(I[A.category]||(I[A.category]=[]),I[A.category].push(A),I),{}),F=(()=>{if(!l.eventName||!E)return[];const I=E.find(O=>O.name===l.eventName);if(I)return I.fields;const A=E.find(O=>O.name==="terminal.watcher.triggered");return(A==null?void 0:A.fields)||[]})();return s.jsxDEV(Es,{open:e,onOpenChange:t,children:s.jsxDEV(xs,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:u?"Edit Subscriber":"Create Subscriber"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:458,columnNumber:11},this),s.jsxDEV(ls,{children:u?"Update the subscriber configuration.":"Configure a new subscriber to react to events."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:459,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:457,columnNumber:9},this),s.jsxDEV("form",{onSubmit:R,className:"space-y-6",children:[s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Basic Info"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:469,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"name",children:"Name *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:473,columnNumber:15},this),s.jsxDEV(Tt,{id:"name",value:l.name,onChange:I=>k("name",I.target.value),placeholder:"Error Handler",className:h.name?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:474,columnNumber:15},this),h.name&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:481,columnNumber:31},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:472,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"description",children:"Description"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:484,columnNumber:15},this),s.jsxDEV(ta,{id:"description",value:l.description,onChange:I=>k("description",I.target.value),placeholder:"Handles error events by sending a message",rows:2},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:485,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:483,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:468,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Event Trigger"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:497,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"eventName",children:"Event Name *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:501,columnNumber:15},this),s.jsxDEV(Ls,{value:l.eventName,onValueChange:I=>k("eventName",I),children:[s.jsxDEV(Ts,{className:h.eventName?"border-destructive":"",children:s.jsxDEV($s,{placeholder:"Select event type..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:507,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:506,columnNumber:17},this),s.jsxDEV(Rs,{children:[V&&Object.entries(V).map(([I,A])=>s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"px-2 py-1.5 text-xs font-semibold text-muted-foreground uppercase",children:I},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:514,columnNumber:25},this),A.map(O=>s.jsxDEV(Pt,{value:O.name,children:O.label},O.name,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:518,columnNumber:27},this))]},I,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:513,columnNumber:23},this)),j.length>0&&s.jsxDEV(s.Fragment,{children:[s.jsxDEV("div",{className:"px-2 py-1.5 text-xs font-semibold text-muted-foreground uppercase border-t mt-1 pt-2",children:"Watcher Custom Events"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:527,columnNumber:23},this),j.map(I=>s.jsxDEV(Pt,{value:I,children:I},I,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:531,columnNumber:25},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:526,columnNumber:21},this),l.eventName&&!(E!=null&&E.find(I=>I.name===l.eventName))&&!j.includes(l.eventName)&&s.jsxDEV(Pt,{value:l.eventName,children:[l.eventName," (custom)"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:541,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:509,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:502,columnNumber:15},this),h.eventName&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.eventName},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:547,columnNumber:36},this),s.jsxDEV(Tt,{placeholder:"Or enter custom event name...",value:l.eventName,onChange:I=>k("eventName",I.target.value),className:"mt-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:548,columnNumber:15},this),F.length>0&&s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:["Available fields: ",F.map(I=>I.field).join(", ")]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:555,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:500,columnNumber:13},this),s.jsxDEV("div",{className:"flex items-center space-x-2",children:[s.jsxDEV(Ra,{id:"hasFilter",checked:l.hasFilter,onCheckedChange:I=>k("hasFilter",I===!0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:562,columnNumber:15},this),s.jsxDEV(We,{htmlFor:"hasFilter",className:"cursor-pointer",children:"Add event filter"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:567,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:561,columnNumber:13},this),l.hasFilter&&s.jsxDEV("div",{className:"grid grid-cols-3 gap-2 p-3 border rounded-lg",children:[s.jsxDEV("div",{className:"space-y-1",children:[s.jsxDEV(We,{className:"text-xs",children:"Field"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:575,columnNumber:19},this),s.jsxDEV(Tt,{value:l.filterField,onChange:I=>k("filterField",I.target.value),placeholder:"sessionId",className:h.filterField?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:576,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:574,columnNumber:17},this),s.jsxDEV("div",{className:"space-y-1",children:[s.jsxDEV(We,{className:"text-xs",children:"Operator"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:584,columnNumber:19},this),s.jsxDEV(Ls,{value:l.filterOperator,onValueChange:I=>k("filterOperator",I),children:[s.jsxDEV(Ts,{children:s.jsxDEV($s,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:590,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:589,columnNumber:21},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"equals",children:"Equals"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:593,columnNumber:23},this),s.jsxDEV(Pt,{value:"contains",children:"Contains"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:594,columnNumber:23},this),s.jsxDEV(Pt,{value:"regex",children:"Regex"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:595,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:592,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:585,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:583,columnNumber:17},this),s.jsxDEV("div",{className:"space-y-1",children:[s.jsxDEV(We,{className:"text-xs",children:"Value"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:600,columnNumber:19},this),s.jsxDEV(Tt,{value:l.filterValue,onChange:I=>k("filterValue",I.target.value),placeholder:"value",className:h.filterValue?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:601,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:599,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:573,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:496,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Action"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:614,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{children:"Action Type *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:618,columnNumber:15},this),b?s.jsxDEV("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[s.jsxDEV(ot,{className:"h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:621,columnNumber:19},this),"Loading actions..."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:620,columnNumber:17},this):s.jsxDEV(Ls,{value:l.actionType,onValueChange:I=>{k("actionType",I),k("actionInputs",{})},children:[s.jsxDEV(Ts,{className:h.actionType?"border-destructive":"",children:s.jsxDEV($s,{placeholder:"Select action..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:634,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:633,columnNumber:19},this),s.jsxDEV(Rs,{children:D==null?void 0:D.map(I=>s.jsxDEV(Pt,{value:I.type,children:I.name},I.type,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:638,columnNumber:23},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:636,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:625,columnNumber:17},this),h.actionType&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.actionType},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:645,columnNumber:37},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:617,columnNumber:13},this),l.actionType&&s.jsxDEV(Ohe,{action:w,values:l.actionInputs,onChange:I=>k("actionInputs",I),availableEventFields:F,errors:m},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:649,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:613,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Execution Options"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:661,columnNumber:13},this),s.jsxDEV("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"delayMs",children:"Delay Before Action (ms)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:666,columnNumber:17},this),s.jsxDEV(Tt,{id:"delayMs",type:"number",min:0,step:100,value:l.delayMs,onChange:I=>k("delayMs",parseInt(I.target.value)||0),className:h.delayMs?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:667,columnNumber:17},this),h.delayMs&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.delayMs},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:676,columnNumber:36},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:665,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"cooldownMs",children:"Cooldown (ms)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:679,columnNumber:17},this),s.jsxDEV(Tt,{id:"cooldownMs",type:"number",min:0,step:1e3,value:l.cooldownMs,onChange:I=>k("cooldownMs",parseInt(I.target.value)||0),className:h.cooldownMs?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:680,columnNumber:17},this),h.cooldownMs&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.cooldownMs},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:690,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:678,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:664,columnNumber:13},this),s.jsxDEV("div",{className:"flex items-center space-x-2",children:[s.jsxDEV(Ra,{id:"retryOnError",checked:l.retryOnError,onCheckedChange:I=>k("retryOnError",I===!0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:695,columnNumber:15},this),s.jsxDEV(We,{htmlFor:"retryOnError",className:"cursor-pointer",children:"Retry on error"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:700,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:694,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:660,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Scheduling & Ordering"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:708,columnNumber:13},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Delay schedules execution time. Priority and position break ties when multiple subscribers are due at the same time."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:711,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"groupName",children:"Group Name (optional)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:716,columnNumber:15},this),s.jsxDEV(Tt,{id:"groupName",value:l.groupName,onChange:I=>k("groupName",I.target.value),placeholder:"Leave empty to group by event name"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:717,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Subscribers in the same group are executed sequentially. Empty groups by event."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:723,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:715,columnNumber:13},this),s.jsxDEV("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"priority",children:"Priority"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:729,columnNumber:17},this),s.jsxDEV(Tt,{id:"priority",type:"number",min:-100,max:100,value:l.priority,onChange:I=>k("priority",parseInt(I.target.value)||0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:730,columnNumber:17},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Higher priority runs first (-100 to 100)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:738,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:728,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"position",children:"Position"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:743,columnNumber:17},this),s.jsxDEV(Tt,{id:"position",type:"number",min:0,value:l.position,onChange:I=>k("position",parseInt(I.target.value)||0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:744,columnNumber:17},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Order within group when priority is equal"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:751,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:742,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:727,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:707,columnNumber:11},this),s.jsxDEV("div",{className:"flex items-center space-x-2",children:[s.jsxDEV(Ra,{id:"enabled",checked:l.enabled,onCheckedChange:I=>k("enabled",I===!0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:760,columnNumber:13},this),s.jsxDEV(We,{htmlFor:"enabled",className:"cursor-pointer",children:"Enable subscriber immediately"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:765,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:759,columnNumber:11},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{type:"button",variant:"outline",onClick:()=>t(!1),children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:771,columnNumber:13},this),s.jsxDEV(le,{type:"submit",disabled:_,children:[_&&s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:775,columnNumber:29},this),u?"Update":"Create"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:774,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:770,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:466,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:456,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:455,columnNumber:5},this)}function Ihe(){const e=zs(),{toast:t}=ii(),{selectedProjectId:i}=Gi(),[r,o]=f.useState(null),[c,u]=f.useState(!1),[l,d]=f.useState(null),{data:h,isLoading:g,error:m}=st({queryKey:["subscribers",i],queryFn:()=>Che(i),enabled:!!i}),{data:y}=st({queryKey:["subscribableEvents"],queryFn:eL}),E=f.useMemo(()=>{if(!h||h.length===0)return[];const j=new Map;y==null||y.forEach(F=>{j.set(F.name,F.label)});const V=new Map;for(const F of h){const I=F.groupName??`event:${F.eventName}`;V.has(I)||V.set(I,[]),V.get(I).push(F)}for(const F of V.values())F.sort((I,A)=>I.position!==A.position?I.position-A.position:I.createdAt.localeCompare(A.createdAt));const M=[];for(const[F,I]of V){let A;if(F.startsWith("event:")){const O=F.slice(6),K=j.get(O);A=K?`Event: ${K}`:`Event: ${O}`}else A=`Group: ${F}`;M.push({groupKey:F,label:A,subscribers:I})}return M.sort((F,I)=>F.label.localeCompare(I.label)),M},[h,y]),C=yt({mutationFn:({id:j,enabled:V})=>khe(j,V),onMutate:async({id:j,enabled:V})=>{await e.cancelQueries({queryKey:["subscribers",i]});const M=e.getQueryData(["subscribers",i]);return e.setQueryData(["subscribers",i],F=>F==null?void 0:F.map(I=>I.id===j?{...I,enabled:V}:I)),{previousSubscribers:M}},onError:(j,V,M)=>{M!=null&&M.previousSubscribers&&e.setQueryData(["subscribers",i],M.previousSubscribers),t({title:"Error",description:j instanceof Error?j.message:"Failed to toggle subscriber",variant:"destructive"})},onSettled:()=>{e.invalidateQueries({queryKey:["subscribers",i]})}}),D=yt({mutationFn:Phe,onMutate:async j=>{await e.cancelQueries({queryKey:["subscribers",i]});const V=e.getQueryData(["subscribers",i]);return e.setQueryData(["subscribers",i],M=>M==null?void 0:M.filter(F=>F.id!==j)),{previousSubscribers:V}},onSuccess:()=>{o(null),t({title:"Success",description:"Subscriber deleted successfully"})},onError:(j,V,M)=>{M!=null&&M.previousSubscribers&&e.setQueryData(["subscribers",i],M.previousSubscribers),t({title:"Error",description:j instanceof Error?j.message:"Failed to delete subscriber",variant:"destructive"})},onSettled:()=>{e.invalidateQueries({queryKey:["subscribers",i]})}}),b=yt({mutationFn:async({updates:j})=>{for(const V of j)await tL(V.id,{position:V.position})},onMutate:async({updates:j})=>{await e.cancelQueries({queryKey:["subscribers",i]});const V=e.getQueryData(["subscribers",i]);return e.setQueryData(["subscribers",i],M=>M==null?void 0:M.map(F=>{const I=j.find(A=>A.id===F.id);return I?{...F,position:I.position}:F})),{previousSubscribers:V}},onError:(j,V,M)=>{M!=null&&M.previousSubscribers&&e.setQueryData(["subscribers",i],M.previousSubscribers),t({title:"Error",description:j instanceof Error?j.message:"Failed to reorder subscriber",variant:"destructive"})},onSettled:()=>{e.invalidateQueries({queryKey:["subscribers",i]})}}),w=(j,V)=>{if(V===0)return;const M=j.subscribers,F=M[V],I=M[V-1],A=M.map(K=>K.position);if(new Set(A).size!==A.length){const K=new Map(M.map(H=>[H.id,H.position])),q=M.map((H,L)=>({id:H.id,position:L}));q[V].position=V-1,q[V-1].position=V;const Y=q.filter(H=>H.position!==K.get(H.id));b.mutate({updates:Y});return}b.mutate({updates:[{id:F.id,position:I.position},{id:I.id,position:F.position}]})},N=(j,V)=>{if(V===j.subscribers.length-1)return;const M=j.subscribers,F=M[V],I=M[V+1],A=M.map(K=>K.position);if(new Set(A).size!==A.length){const K=new Map(M.map(H=>[H.id,H.position])),q=M.map((H,L)=>({id:H.id,position:L}));q[V].position=V+1,q[V+1].position=V;const Y=q.filter(H=>H.position!==K.get(H.id));b.mutate({updates:Y});return}b.mutate({updates:[{id:F.id,position:I.position},{id:I.id,position:F.position}]})},x=()=>{d(null),u(!0)},_=j=>{d(j),u(!0)},P=j=>{u(j),j||d(null)},R=j=>{const V=j.actionInputs;if(!V)return null;for(const[M,F]of Object.entries(V)){if(F.source==="custom"&&F.customValue){const I=F.customValue;return I.length>50?`${M}: ${I.slice(0,50)}...`:`${M}: ${I}`}if(F.source==="event_field"&&F.eventField)return`${M}: {${F.eventField}}`}return null},k=j=>j.split("_").map(V=>V.charAt(0).toUpperCase()+V.slice(1)).join(" ");return g?s.jsxDEV(Ps,{children:s.jsxDEV(Fs,{className:"flex items-center justify-center py-12",children:[s.jsxDEV(ot,{className:"h-8 w-8 animate-spin text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:352,columnNumber:11},this),s.jsxDEV("span",{className:"ml-2 text-muted-foreground",children:"Loading subscribers..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:353,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:351,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:350,columnNumber:7},this):m?s.jsxDEV(Ps,{children:s.jsxDEV(Fs,{className:"flex flex-col items-center justify-center py-12",children:[s.jsxDEV(si,{className:"h-8 w-8 text-destructive mb-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:364,columnNumber:11},this),s.jsxDEV("p",{className:"text-destructive",children:m instanceof Error?m.message:"Failed to load subscribers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:365,columnNumber:11},this),s.jsxDEV(le,{variant:"outline",className:"mt-4",onClick:()=>e.invalidateQueries({queryKey:["subscribers",i]}),children:"Retry"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:368,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:363,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:362,columnNumber:7},this):i?!h||h.length===0?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{children:[s.jsxDEV(vi,{children:"Subscribers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:402,columnNumber:17},this),s.jsxDEV(Fi,{children:"React to events by executing automated actions."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:403,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:401,columnNumber:15},this),s.jsxDEV(le,{onClick:x,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:406,columnNumber:17},this),"Add Subscriber"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:405,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:400,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:399,columnNumber:11},this),s.jsxDEV(Fs,{className:"flex flex-col items-center justify-center py-12",children:[s.jsxDEV(UD,{className:"h-12 w-12 text-muted-foreground mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:412,columnNumber:13},this),s.jsxDEV("h3",{className:"text-lg font-semibold mb-2",children:"No subscribers yet"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:413,columnNumber:13},this),s.jsxDEV("p",{className:"text-muted-foreground text-center max-w-md",children:"Create your first subscriber to start reacting to events with automated actions."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:414,columnNumber:13},this),s.jsxDEV(le,{className:"mt-4",onClick:x,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:418,columnNumber:15},this),"Create Subscriber"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:417,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:411,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:398,columnNumber:9},this),s.jsxDEV(E6,{open:c,onOpenChange:P,subscriber:l},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:424,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:397,columnNumber:7},this):s.jsxDEV(Ir,{children:[s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{children:[s.jsxDEV(vi,{children:"Subscribers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:439,columnNumber:15},this),s.jsxDEV(Fi,{children:"React to events by executing automated actions. Delay schedules execution time; priority/position break ties when multiple subscribers are due at the same time."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:440,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:438,columnNumber:13},this),s.jsxDEV(le,{onClick:x,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:446,columnNumber:15},this),"Add Subscriber"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:445,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:437,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:436,columnNumber:9},this),s.jsxDEV(Fs,{children:s.jsxDEV("div",{className:"space-y-6",children:E.map(j=>s.jsxDEV("div",{className:"space-y-3",children:[s.jsxDEV("div",{className:"flex items-center gap-2 pb-2 border-b",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground",children:j.label},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:457,columnNumber:19},this),s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:j.subscribers.length},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:458,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:456,columnNumber:17},this),s.jsxDEV("div",{className:"space-y-3",children:j.subscribers.map((V,M)=>s.jsxDEV("div",{className:"flex items-start justify-between p-4 border rounded-lg",children:[s.jsxDEV("div",{className:"flex flex-col gap-0.5 mr-3",children:[s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV(le,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:()=>w(j,M),disabled:M===0||b.isPending,children:s.jsxDEV(Gf,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:481,columnNumber:31},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:474,columnNumber:29},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:473,columnNumber:27},this),s.jsxDEV(Zi,{children:"Move up"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:484,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:472,columnNumber:25},this),s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV(le,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:()=>N(j,M),disabled:M===j.subscribers.length-1||b.isPending,children:s.jsxDEV(Fr,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:497,columnNumber:31},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:488,columnNumber:29},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:487,columnNumber:27},this),s.jsxDEV(Zi,{children:"Move down"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:500,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:486,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:471,columnNumber:23},this),s.jsxDEV("div",{className:"flex-1 min-w-0",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-1",children:[s.jsxDEV("h4",{className:"font-semibold truncate",children:V.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:506,columnNumber:27},this),s.jsxDEV(Je,{variant:V.enabled?"default":"secondary",children:V.enabled?"Enabled":"Disabled"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:507,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:505,columnNumber:25},this),V.description&&s.jsxDEV("p",{className:"text-sm text-muted-foreground mb-2 line-clamp-2",children:V.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:512,columnNumber:27},this),s.jsxDEV("div",{className:"flex flex-wrap gap-2 text-xs mb-2",children:[s.jsxDEV(Je,{variant:"outline",children:["Listens to: ",V.eventName]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:517,columnNumber:27},this),s.jsxDEV(Je,{variant:"secondary",children:k(V.actionType)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:518,columnNumber:27},this),V.delayMs>0&&s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV(Je,{variant:"outline",children:["Delay: ",V.delayMs,"ms"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:524,columnNumber:33},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:523,columnNumber:31},this),s.jsxDEV(Zi,{children:["Schedules execution ",V.delayMs,"ms after event"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:526,columnNumber:31},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:522,columnNumber:29},this),V.priority!==0&&s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV(Je,{variant:"outline",children:["Priority: ",V.priority]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:534,columnNumber:33},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:533,columnNumber:31},this),s.jsxDEV(Zi,{children:"Higher priority runs first when multiple are due at same time"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:536,columnNumber:31},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:532,columnNumber:29},this),s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV(Je,{variant:"outline",children:["Position: ",V.position]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:543,columnNumber:31},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:542,columnNumber:29},this),s.jsxDEV(Zi,{children:"Order within group when priority is equal"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:545,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:541,columnNumber:27},this),V.retryOnError&&s.jsxDEV(Je,{variant:"outline",children:"Retry on error"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:550,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:516,columnNumber:25},this),R(V)&&s.jsxDEV("p",{className:"text-xs text-muted-foreground font-mono bg-muted px-2 py-1 rounded truncate max-w-md",children:R(V)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:554,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:504,columnNumber:23},this),s.jsxDEV("div",{className:"flex items-center gap-2 ml-4",children:[s.jsxDEV(Yn,{checked:V.enabled,onCheckedChange:F=>C.mutate({id:V.id,enabled:F}),disabled:C.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:560,columnNumber:25},this),s.jsxDEV(O0,{children:[s.jsxDEV(I0,{asChild:!0,children:s.jsxDEV(le,{variant:"ghost",size:"sm",children:s.jsxDEV(m0,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:570,columnNumber:31},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:569,columnNumber:29},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:568,columnNumber:27},this),s.jsxDEV(lg,{align:"end",children:[s.jsxDEV(Dl,{onClick:()=>_(V),children:[s.jsxDEV(Oc,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:575,columnNumber:31},this),"Edit"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:574,columnNumber:29},this),s.jsxDEV(Z2,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:578,columnNumber:29},this),s.jsxDEV(Dl,{className:"text-destructive",onClick:()=>o(V.id),children:[s.jsxDEV(er,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:583,columnNumber:31},this),"Delete"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:579,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:573,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:567,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:559,columnNumber:23},this)]},V.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:466,columnNumber:21},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:464,columnNumber:17},this)]},j.groupKey,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:454,columnNumber:15},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:452,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:451,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:435,columnNumber:7},this),s.jsxDEV(Es,{open:!!r,onOpenChange:()=>o(null),children:s.jsxDEV(xs,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Delete Subscriber"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:602,columnNumber:13},this),s.jsxDEV(ls,{children:"Are you sure you want to delete this subscriber? This action cannot be undone."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:603,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:601,columnNumber:11},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:()=>o(null),children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:608,columnNumber:13},this),s.jsxDEV(le,{variant:"destructive",onClick:()=>r&&D.mutate(r),disabled:D.isPending,children:[D.isPending?s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:616,columnNumber:43},this):null,"Delete"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:611,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:607,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:600,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:599,columnNumber:7},this),s.jsxDEV(E6,{open:c,onOpenChange:P,subscriber:l},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:624,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:434,columnNumber:5},this):s.jsxDEV(Ps,{children:s.jsxDEV(Fs,{className:"flex flex-col items-center justify-center py-12",children:[s.jsxDEV(UD,{className:"h-8 w-8 text-muted-foreground mb-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:387,columnNumber:11},this),s.jsxDEV("p",{className:"text-muted-foreground",children:"Please select a project to view subscribers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:388,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:386,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:385,columnNumber:7},this)}function Fhe(){const[e,t]=f.useState("watchers");return s.jsxDEV("div",{className:"container py-6",children:[s.jsxDEV("div",{className:"flex items-center justify-between mb-6",children:s.jsxDEV("h1",{className:"text-2xl font-bold",children:"Automation"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:15,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:14,columnNumber:7},this),s.jsxDEV(B0,{value:e,onValueChange:i=>t(i),children:[s.jsxDEV(cg,{children:[s.jsxDEV(Sl,{value:"watchers",children:[s.jsxDEV(WD,{className:"w-4 h-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:21,columnNumber:13},this),"Watchers"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:20,columnNumber:11},this),s.jsxDEV(Sl,{value:"subscribers",children:[s.jsxDEV(UD,{className:"w-4 h-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:25,columnNumber:13},this),"Subscribers"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:24,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:19,columnNumber:9},this),s.jsxDEV(Hu,{value:"watchers",children:s.jsxDEV(_he,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:31,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:30,columnNumber:9},this),s.jsxDEV(Hu,{value:"subscribers",children:s.jsxDEV(Ihe,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:34,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:33,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:18,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:13,columnNumber:5},this)}const Bhe=f.lazy(()=>YS(()=>import("./ReviewDetailPage-CZZQtaY7.js"),__vite__mapDeps([3,1,2])).then(e=>({default:e.ReviewDetailPage})));function $he(){return s.jsxDEV("div",{className:"flex flex-col h-full",children:[s.jsxDEV("div",{className:"border-b p-4 bg-card",children:s.jsxDEV("div",{className:"flex items-center gap-4",children:[s.jsxDEV(Kt,{className:"h-9 w-9"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:37,columnNumber:11},this),s.jsxDEV("div",{className:"flex-1",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-2",children:[s.jsxDEV(Kt,{className:"h-6 w-48"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:40,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-5 w-20"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:41,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:39,columnNumber:13},this),s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Kt,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:44,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-4 w-40"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:45,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:43,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:38,columnNumber:11},this),s.jsxDEV(Kt,{className:"h-4 w-16"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:48,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:36,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:35,columnNumber:7},this),s.jsxDEV("div",{className:"flex-1 flex min-h-0",children:[s.jsxDEV("div",{className:"w-64 border-r bg-card p-3 space-y-2",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-3",children:[s.jsxDEV(Kt,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:57,columnNumber:13},this),s.jsxDEV(Kt,{className:"h-4 w-12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:58,columnNumber:13},this),s.jsxDEV(Kt,{className:"h-5 w-6"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:59,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:56,columnNumber:11},this),Array.from({length:8}).map((e,t)=>s.jsxDEV(Kt,{className:"h-8 w-full"},t,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:62,columnNumber:13},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:55,columnNumber:9},this),s.jsxDEV("div",{className:"flex-1 min-w-0 bg-background p-4",children:s.jsxDEV("div",{className:"space-y-3",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-4",children:[s.jsxDEV(Kt,{className:"h-5 w-48"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:70,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-5 w-12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:71,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-5 w-12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:72,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:69,columnNumber:13},this),Array.from({length:12}).map((e,t)=>s.jsxDEV(Kt,{className:"h-6 w-full",style:{width:`${60+Math.random()*40}%`}},t,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:75,columnNumber:15},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:68,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:67,columnNumber:9},this),s.jsxDEV("div",{className:"w-80 border-l bg-card p-4 space-y-3",children:[s.jsxDEV(Kt,{className:"h-5 w-24 mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:86,columnNumber:11},this),Array.from({length:4}).map((e,t)=>s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Kt,{className:"h-6 w-6 rounded-full"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:90,columnNumber:17},this),s.jsxDEV(Kt,{className:"h-4 w-20"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:91,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:89,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-16 w-full"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:93,columnNumber:15},this)]},t,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:88,columnNumber:13},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:85,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:53,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:33,columnNumber:5},this)}function zhe(){return s.jsxDEV(f.Suspense,{fallback:s.jsxDEV($he,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:108,columnNumber:25},this),children:s.jsxDEV(Bhe,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:109,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:108,columnNumber:5},this)}function Uhe(){return s.jsxDEV("div",{className:"flex min-h-[60vh] flex-col items-center justify-center text-center",children:s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV("h1",{className:"text-9xl font-bold text-muted-foreground",children:"404"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:10,columnNumber:11},this),s.jsxDEV("h2",{className:"text-3xl font-bold",children:"Page Not Found"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:11,columnNumber:11},this),s.jsxDEV("p",{className:"text-muted-foreground max-w-md",children:"The page you're looking for doesn't exist or has been moved."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:12,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:9,columnNumber:9},this),s.jsxDEV("div",{className:"flex items-center justify-center gap-3 pt-4",children:[s.jsxDEV(le,{variant:"outline",asChild:!0,children:s.jsxDEV(So,{to:"/",children:[s.jsxDEV(Dee,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:20,columnNumber:15},this),"Go Home"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:19,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:18,columnNumber:11},this),s.jsxDEV(le,{variant:"default",onClick:()=>window.history.back(),children:[s.jsxDEV(p0,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:25,columnNumber:13},this),"Go Back"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:24,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:17,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:8,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:7,columnNumber:5},this)}function Whe(){const e=Dr();return s.jsxDEV("div",{className:"flex min-h-[60vh] flex-col items-center justify-center px-4 text-center",children:s.jsxDEV("div",{className:"max-w-xl space-y-6 rounded-lg border bg-card p-8 shadow-sm",children:[s.jsxDEV("div",{className:"mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-muted",children:s.jsxDEV(AV,{className:"h-6 w-6 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:12,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:11,columnNumber:9},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV("h1",{className:"text-2xl font-semibold",children:"Documents is currently disabled"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:16,columnNumber:11},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"The Documents feature is temporarily hidden while we prepare the release. Existing documents remain intact and will return when the feature is re-enabled."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:17,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:15,columnNumber:9},this),s.jsxDEV("div",{className:"flex flex-col items-center gap-3 sm:flex-row sm:justify-center",children:[s.jsxDEV(le,{asChild:!0,children:s.jsxDEV(So,{to:"/projects",children:[s.jsxDEV(f0,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:26,columnNumber:15},this),"Go to Projects"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:25,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:24,columnNumber:11},this),s.jsxDEV(le,{variant:"outline",onClick:()=>e(-1),children:[s.jsxDEV(p0,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:31,columnNumber:13},this),"Go Back"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:30,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:23,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:10,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:9,columnNumber:5},this)}function Hhe(){const e=Dr();return s.jsxDEV("div",{className:"flex min-h-[60vh] flex-col items-center justify-center px-4 text-center",children:s.jsxDEV("div",{className:"max-w-xl space-y-6 rounded-lg border bg-card p-8 shadow-sm",children:[s.jsxDEV("div",{className:"mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-muted",children:s.jsxDEV(AV,{className:"h-6 w-6 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:12,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:11,columnNumber:9},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV("h1",{className:"text-2xl font-semibold",children:"Records is currently disabled"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:16,columnNumber:11},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"The Records feature is hidden for this release. Existing records remain intact and will return when the feature is re-enabled."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:17,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:15,columnNumber:9},this),s.jsxDEV("div",{className:"flex flex-col items-center gap-3 sm:flex-row sm:justify-center",children:[s.jsxDEV(le,{asChild:!0,children:s.jsxDEV(So,{to:"/projects",children:[s.jsxDEV(f0,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:26,columnNumber:15},this),"Go to Projects"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:25,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:24,columnNumber:11},this),s.jsxDEV(le,{variant:"outline",onClick:()=>e(-1),children:[s.jsxDEV(p0,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:31,columnNumber:13},this),"Go Back"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:30,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:23,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:10,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:9,columnNumber:5},this)}function qhe({template:e,onSelect:t}){return s.jsxDEV(Ps,{className:"cursor-pointer transition-colors hover:border-primary",onClick:()=>t(e.slug),children:[s.jsxDEV(mi,{className:"pb-3",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(vi,{className:"text-lg",children:e.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:32,columnNumber:11},this),e.isOfficial&&s.jsxDEV(Je,{variant:"secondary",className:"gap-1",children:[s.jsxDEV(Or,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:35,columnNumber:15},this),"Official"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:34,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:31,columnNumber:9},this),s.jsxDEV(Fi,{className:"line-clamp-2",children:e.description||"No description available"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:40,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:30,columnNumber:7},this),s.jsxDEV(Fs,{children:[s.jsxDEV("div",{className:"mb-3 flex flex-wrap gap-1",children:[e.tags.slice(0,3).map(i=>s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:i},i,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:47,columnNumber:13},this)),e.tags.length>3&&s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:["+",e.tags.length-3]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:52,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:45,columnNumber:9},this),s.jsxDEV("div",{className:"flex items-center justify-between text-sm text-muted-foreground",children:[s.jsxDEV("span",{children:["v",e.latestVersion||"0.0.0"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:58,columnNumber:11},this),e.totalDownloads!=null&&s.jsxDEV("span",{className:"flex items-center gap-1",children:[s.jsxDEV(Mu,{className:"h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:61,columnNumber:15},this),e.totalDownloads.toLocaleString()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:60,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:57,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:44,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:26,columnNumber:5},this)}function Khe({templates:e,onSelect:t}){return e.length===0?s.jsxDEV("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[s.jsxDEV("p",{className:"text-lg font-medium text-muted-foreground",children:"No templates found"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:14,columnNumber:9},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Try adjusting your search or filters"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:15,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:13,columnNumber:7},this):s.jsxDEV("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:e.map(i=>s.jsxDEV(qhe,{template:i,onSelect:t},i.slug,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:23,columnNumber:9},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:21,columnNumber:5},this)}function Ghe(){return s.jsxDEV("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:Array.from({length:6}).map((e,t)=>s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{className:"pb-3",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Kt,{className:"h-6 w-32"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:36,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-5 w-16"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:37,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:35,columnNumber:13},this),s.jsxDEV(Kt,{className:"mt-2 h-4 w-full"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:39,columnNumber:13},this),s.jsxDEV(Kt,{className:"mt-1 h-4 w-3/4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:40,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:34,columnNumber:11},this),s.jsxDEV(Fs,{children:[s.jsxDEV("div",{className:"mb-3 flex gap-1",children:[s.jsxDEV(Kt,{className:"h-5 w-12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:44,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-5 w-14"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:45,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-5 w-10"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:46,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:43,columnNumber:13},this),s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV(Kt,{className:"h-4 w-16"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:49,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-4 w-12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:50,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:48,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:42,columnNumber:11},this)]},t,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:33,columnNumber:9},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:31,columnNumber:5},this)}var Yhe=Symbol.for("react.lazy"),UN=PS[" use ".trim().toString()];function Qhe(e){return typeof e=="object"&&e!==null&&"then"in e}function sL(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===Yhe&&"_payload"in e&&Qhe(e._payload)}function Xhe(e){const t=Jhe(e),i=f.forwardRef((r,o)=>{let{children:c,...u}=r;sL(c)&&typeof UN=="function"&&(c=UN(c._payload));const l=f.Children.toArray(c),d=l.find(eme);if(d){const h=d.props.children,g=l.map(m=>m===d?f.Children.count(h)>1?f.Children.only(null):f.isValidElement(h)?h.props.children:null:m);return ae.jsx(t,{...u,ref:o,children:f.isValidElement(h)?f.cloneElement(h,void 0,g):null})}return ae.jsx(t,{...u,ref:o,children:c})});return i.displayName=`${e}.Slot`,i}function Jhe(e){const t=f.forwardRef((i,r)=>{let{children:o,...c}=i;if(sL(o)&&typeof UN=="function"&&(o=UN(o._payload)),f.isValidElement(o)){const u=sme(o),l=tme(c,o.props);return o.type!==f.Fragment&&(l.ref=r?Bf(r,u):u),f.cloneElement(o,l)}return f.Children.count(o)>1?f.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Zhe=Symbol("radix.slottable");function eme(e){return f.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Zhe}function tme(e,t){const i={...t};for(const r in t){const o=e[r],c=t[r];/^on[A-Z]/.test(r)?o&&c?i[r]=(...l)=>{const d=c(...l);return o(...l),d}:o&&(i[r]=o):r==="style"?i[r]={...o,...c}:r==="className"&&(i[r]=[o,c].filter(Boolean).join(" "))}return{...e,...i}}function sme(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,i=t&&"isReactWarning"in t&&t.isReactWarning;return i?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,i=t&&"isReactWarning"in t&&t.isReactWarning,i?e.props.ref:e.props.ref||e.ref)}var ime=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],ame=ime.reduce((e,t)=>{const i=Xhe(`Primitive.${t}`),r=f.forwardRef((o,c)=>{const{asChild:u,...l}=o,d=u?i:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),ae.jsx(d,{...l,ref:c})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),rme=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),nme="VisuallyHidden",uN=f.forwardRef((e,t)=>ae.jsx(ame.span,{...e,ref:t,style:{...rme,...e.style}}));uN.displayName=nme;async function ome(e){const t=await fetch(`/api/registry/cache/${encodeURIComponent(e)}/versions`);if(!t.ok)throw new Error("Failed to fetch cached versions");return t.json()}async function lme(e,t){const i=await fetch(`/api/registry/download/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{method:"POST"});if(!i.ok)throw new Error("Failed to download template");return i.json()}async function cme(){const e=await fetch("/health");if(!e.ok)return null;const t=await e.json();return(t==null?void 0:t.version)||null}function ume(e,t){if(!e||!t)return!0;try{return!_f(t,e)}catch{return!0}}function pme({versions:e,slug:t}){const i=zs(),[r,o]=f.useState(!1),{data:c}=st({queryKey:["registry-cache-versions",t],queryFn:()=>ome(t),enabled:!!t}),{data:u}=st({queryKey:["health"],queryFn:cme,staleTime:1/0}),l=new Set((c==null?void 0:c.versions)||[]),d=yt({mutationFn:({version:C})=>lme(t,C),onSuccess:()=>{i.invalidateQueries({queryKey:["registry-cache-versions",t]}),i.invalidateQueries({queryKey:["unified-templates"]}),i.invalidateQueries({queryKey:["templates-for-upgrade"]})}});if(!e||e.length===0)return s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"No versions available"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:101,columnNumber:12},this);const h=[...e].sort((C,D)=>new Date(D.publishedAt).getTime()-new Date(C.publishedAt).getTime()),g=h[0],m=h.slice(1),y=m.length>0,E=C=>{var N;const D=l.has(C.version),b=d.isPending&&((N=d.variables)==null?void 0:N.version)===C.version,w=ume(C.minDevchainVersion,u??null);return s.jsxDEV("div",{className:"rounded-lg border p-3",children:s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{className:"flex-1",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV("span",{className:"font-mono font-medium",children:["v",C.version]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:125,columnNumber:15},this),C.isLatest&&s.jsxDEV(Je,{variant:"secondary",className:"text-xs",children:"Latest"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:127,columnNumber:17},this),!w&&C.minDevchainVersion&&s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV(Je,{variant:"outline",className:"gap-1 border-amber-500/50 bg-amber-500/10 text-amber-600 text-xs",children:[s.jsxDEV(Bi,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:138,columnNumber:23},this),"Incompatible"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:134,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:133,columnNumber:19},this),s.jsxDEV(Zi,{children:s.jsxDEV("p",{children:["Requires Devchain v",C.minDevchainVersion,"+",s.jsxDEV("br",{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:145,columnNumber:23},this),"Current: v",u]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:143,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:142,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:132,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:124,columnNumber:13},this),s.jsxDEV("div",{className:"mt-1 flex items-center gap-3 text-sm text-muted-foreground",children:[s.jsxDEV("span",{children:new Date(C.publishedAt).toLocaleDateString()},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:153,columnNumber:15},this),C.downloadCount!=null&&s.jsxDEV("span",{className:"flex items-center gap-1",children:[s.jsxDEV(Mu,{className:"h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:156,columnNumber:19},this),C.downloadCount.toLocaleString()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:155,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:152,columnNumber:13},this),C.changelog&&s.jsxDEV("p",{className:"mt-2 text-sm text-muted-foreground",children:C.changelog},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:162,columnNumber:15},this),C.minDevchainVersion&&w&&s.jsxDEV("p",{className:"mt-1 text-xs text-muted-foreground",children:["Requires Devchain v",C.minDevchainVersion,"+"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:165,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:123,columnNumber:11},this),s.jsxDEV("div",{className:"ml-4",children:D?s.jsxDEV(Je,{variant:"outline",className:"gap-1",children:[s.jsxDEV(th,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:175,columnNumber:17},this),"Downloaded"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:174,columnNumber:15},this):w?s.jsxDEV(le,{size:"sm",variant:"outline",onClick:()=>d.mutate({version:C.version}),disabled:b,children:b?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ot,{className:"mr-1 h-3.5 w-3.5 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:205,columnNumber:21},this),"Downloading"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:204,columnNumber:19},this):s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Mu,{className:"mr-1 h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:210,columnNumber:21},this),"Download"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:209,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:197,columnNumber:15},this):s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV("span",{children:s.jsxDEV(le,{size:"sm",variant:"outline",disabled:!0,children:[s.jsxDEV(Mu,{className:"mr-1 h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:183,columnNumber:23},this),"Download"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:182,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:181,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:180,columnNumber:17},this),s.jsxDEV(Zi,{children:s.jsxDEV("p",{children:["Requires Devchain v",C.minDevchainVersion,"+",s.jsxDEV("br",{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:191,columnNumber:21},this),"Current: v",u]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:189,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:188,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:179,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:172,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:122,columnNumber:9},this)},C.version,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:121,columnNumber:7},this)};return s.jsxDEV(Ir,{children:s.jsxDEV("div",{className:"space-y-3",children:[E(g),y&&s.jsxDEV(s.Fragment,{children:[s.jsxDEV(le,{variant:"ghost",size:"sm",className:"w-full text-muted-foreground hover:text-foreground",onClick:()=>o(!r),children:r?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Gf,{className:"mr-1 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:239,columnNumber:19},this),"Hide ",m.length," older version",m.length>1?"s":""]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:238,columnNumber:17},this):s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Fr,{className:"mr-1 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:244,columnNumber:19},this),"Show ",m.length," older version",m.length>1?"s":""]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:243,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:231,columnNumber:13},this),r&&m.map(E)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:230,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:224,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:223,columnNumber:5},this)}async function dme(e){const t=await fetch("/api/registry/create-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const i=await t.json().catch(()=>({message:"Failed to create project"}));throw new Error(i.message||"Failed to create project")}return t.json()}function hme({slug:e,version:t,templateName:i,open:r,onClose:o}){const[c,u]=f.useState(""),[l,d]=f.useState(""),[h,g]=f.useState(""),[m,y]=f.useState(null),E=Dr(),C=zs(),{toast:D}=ii(),b=yt({mutationFn:dme,onSuccess:x=>{D({title:"Project Created",description:`${x.project.name} created from ${i}`}),C.invalidateQueries({queryKey:["projects"]}),o(),E("/projects")},onError:x=>{y(x.message)}}),w=()=>{if(y(null),!c.trim()){y("Project name is required");return}if(!h.trim()){y("Root path is required");return}b.mutate({slug:e,version:t,projectName:c.trim(),projectDescription:l.trim()||void 0,rootPath:h.trim()})},N=()=>{b.isPending||(u(""),d(""),g(""),y(null),o())};return s.jsxDEV(Es,{open:r,onOpenChange:x=>!x&&N(),children:s.jsxDEV(xs,{className:"sm:max-w-md",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{className:"flex items-center gap-2",children:[s.jsxDEV(cee,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:135,columnNumber:13},this),"Create Project from Template"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:134,columnNumber:11},this),s.jsxDEV(ls,{children:["Using ",s.jsxDEV("span",{className:"font-medium",children:i},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:139,columnNumber:19},this)," v",t]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:138,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:133,columnNumber:9},this),s.jsxDEV("div",{className:"space-y-4 py-4",children:[m&&s.jsxDEV(Ti,{variant:"destructive",children:[s.jsxDEV(si,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:146,columnNumber:15},this),s.jsxDEV(Ri,{children:m},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:147,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:145,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"projectName",children:"Project Name"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:152,columnNumber:13},this),s.jsxDEV(Tt,{id:"projectName",value:c,onChange:x=>u(x.target.value),placeholder:"My New Project",disabled:b.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:153,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:151,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"projectDescription",children:"Description (optional)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:163,columnNumber:13},this),s.jsxDEV(ta,{id:"projectDescription",value:l,onChange:x=>d(x.target.value),placeholder:"A brief description of your project",rows:2,disabled:b.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:164,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:162,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"rootPath",children:"Root Path"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:175,columnNumber:13},this),s.jsxDEV(Tt,{id:"rootPath",value:h,onChange:x=>g(x.target.value),placeholder:"/path/to/project",disabled:b.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:176,columnNumber:13},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"The directory where your project files are located"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:183,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:174,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:143,columnNumber:9},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:N,disabled:b.isPending,children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:190,columnNumber:11},this),s.jsxDEV(le,{onClick:w,disabled:!c.trim()||!h.trim()||b.isPending,children:b.isPending?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ot,{className:"mr-2 h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:199,columnNumber:17},this),"Creating..."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:198,columnNumber:15},this):"Create Project"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:193,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:189,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:132,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:131,columnNumber:5},this)}async function mme(e){const t=await fetch(`/api/registry/templates/${encodeURIComponent(e)}`);if(!t.ok){if(t.status===404)return null;throw new Error("Failed to fetch template details")}return t.json()}async function fme(e){const t=await fetch(`/api/registry/projects/${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch projects");return t.json()}async function gme(){const e=await fetch("/health");if(!e.ok)return null;const t=await e.json();return(t==null?void 0:t.version)||null}function vme(e,t){if(!e||!t)return!0;try{return!_f(t,e)}catch{return!0}}const D6=200;function bme({slug:e,onClose:t}){const[i,r]=f.useState(!1),[o,c]=f.useState(!1),[u,l]=f.useState(!1),{data:d,isLoading:h,error:g}=st({queryKey:["registry-template",e],queryFn:()=>mme(e),enabled:!!e}),{data:m}=st({queryKey:["registry-projects-using",e],queryFn:()=>fme(e),enabled:!!e}),{data:y}=st({queryKey:["health"],queryFn:gme,staleTime:1/0}),E=d==null?void 0:d.template,C=(d==null?void 0:d.versions)||[],D=C.find(x=>x.isLatest),b=(m==null?void 0:m.projects)||[],w=vme((D==null?void 0:D.minDevchainVersion)??null,y??null),N=x=>D?x!==D.version:!1;return s.jsxDEV(Es,{open:!!e,onOpenChange:x=>!x&&t(),children:s.jsxDEV(xs,{className:"max-h-[90vh] max-w-2xl overflow-hidden p-0",children:h?s.jsxDEV("div",{className:"p-6",children:[s.jsxDEV(uN,{children:[s.jsxDEV(os,{children:"Loading Template Details"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:171,columnNumber:15},this),s.jsxDEV(ls,{children:"Loading template metadata and version information."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:172,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:170,columnNumber:13},this),s.jsxDEV(Kt,{className:"mb-2 h-8 w-48"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:176,columnNumber:13},this),s.jsxDEV(Kt,{className:"mb-4 h-4 w-full"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:177,columnNumber:13},this),s.jsxDEV(Kt,{className:"h-32 w-full"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:178,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:169,columnNumber:11},this):g?s.jsxDEV("div",{className:"p-6",children:[s.jsxDEV(uN,{children:[s.jsxDEV(os,{children:"Error Loading Template"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:183,columnNumber:15},this),s.jsxDEV(ls,{children:"An error occurred while loading template details."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:184,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:182,columnNumber:13},this),s.jsxDEV("p",{className:"text-destructive",children:"Failed to load template details"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:188,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:181,columnNumber:11},this):E?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ds,{className:"border-b px-6 py-4",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(os,{className:"text-lg",children:E.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:204,columnNumber:17},this),E.isOfficial&&s.jsxDEV(Je,{variant:"secondary",className:"gap-1 text-xs",children:[s.jsxDEV(Or,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:207,columnNumber:21},this),"Official"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:206,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:203,columnNumber:15},this),s.jsxDEV(ls,{className:"sr-only",children:"Template metadata, versions, and project usage details."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:212,columnNumber:15},this),E.description&&s.jsxDEV("div",{className:"mt-2",children:E.description.length>D6?s.jsxDEV("div",{children:[s.jsxDEV("p",{className:"whitespace-pre-line text-sm text-muted-foreground",children:o?E.description:`${E.description.slice(0,D6)}...`},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:220,columnNumber:23},this),s.jsxDEV(le,{variant:"link",size:"sm",className:"h-auto p-0 text-xs",onClick:()=>c(!o),children:o?"Show less":"Show more"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:225,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:219,columnNumber:21},this):s.jsxDEV("p",{className:"whitespace-pre-line text-sm text-muted-foreground",children:E.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:235,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:217,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:202,columnNumber:13},this),s.jsxDEV(xr,{className:"max-h-[55vh]",children:s.jsxDEV("div",{className:"space-y-4 px-6 py-4",children:[s.jsxDEV("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-2 text-sm text-muted-foreground",children:[E.authorName&&s.jsxDEV("span",{className:"flex items-center gap-1",children:[s.jsxDEV(Yu,{className:"h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:249,columnNumber:23},this),E.authorName]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:248,columnNumber:21},this),E.category&&s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:E.category},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:254,columnNumber:21},this),E.requiredProviders.length>0&&E.requiredProviders.map(x=>s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:x},x,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:260,columnNumber:23},this)),s.jsxDEV("span",{className:"flex items-center gap-1",children:[s.jsxDEV(jZ,{className:"h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:265,columnNumber:21},this),new Date(E.updatedAt).toLocaleDateString()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:264,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:246,columnNumber:17},this),E.tags.length>0&&s.jsxDEV("div",{className:"flex flex-wrap items-center gap-1 text-sm",children:[s.jsxDEV("span",{className:"text-muted-foreground",children:"Tags:"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:273,columnNumber:21},this),E.tags.map(x=>s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:x},x,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:275,columnNumber:23},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:272,columnNumber:19},this),b.length>0&&s.jsxDEV(s.Fragment,{children:[s.jsxDEV(br,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:285,columnNumber:21},this),s.jsxDEV("div",{children:[s.jsxDEV(le,{variant:"ghost",size:"sm",className:"h-auto w-full justify-between p-0 font-medium hover:bg-transparent",onClick:()=>l(!u),children:[s.jsxDEV("span",{className:"text-sm",children:["Installed In (",b.length," project",b.length>1?"s":"",")"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:293,columnNumber:25},this),u?s.jsxDEV(Gf,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:298,columnNumber:27},this):s.jsxDEV(Fr,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:300,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:287,columnNumber:23},this),u&&s.jsxDEV("div",{className:"mt-2 space-y-1",children:b.map(x=>{const _=N(x.installedVersion),P=x.projectName||`ID: ${x.projectId.slice(0,8)}...`;return s.jsxDEV("div",{className:"flex items-center justify-between rounded-md border px-2 py-1.5 text-sm",title:`Project ID: ${x.projectId}`,children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Cl,{className:"h-3.5 w-3.5 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:316,columnNumber:35},this),s.jsxDEV("span",{children:P},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:317,columnNumber:35},this),s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:["v",x.installedVersion]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:318,columnNumber:35},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:315,columnNumber:33},this),_&&s.jsxDEV(Je,{variant:"default",className:"gap-1 text-xs",children:[s.jsxDEV(si,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:324,columnNumber:37},this),"Update"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:323,columnNumber:35},this)]},x.projectId,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:310,columnNumber:31},this)})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:304,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:286,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:284,columnNumber:19},this),s.jsxDEV(br,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:337,columnNumber:17},this),s.jsxDEV("div",{children:[s.jsxDEV("h4",{className:"mb-2 text-sm font-medium",children:"Versions"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:341,columnNumber:19},this),s.jsxDEV(pme,{versions:C,slug:e},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:342,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:340,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:244,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:243,columnNumber:13},this),s.jsxDEV("div",{className:"flex items-center justify-end gap-2 border-t p-4",children:[s.jsxDEV(le,{variant:"outline",onClick:t,children:"Close"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:349,columnNumber:15},this),s.jsxDEV(Ir,{children:!w&&(D!=null&&D.minDevchainVersion)?s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV("span",{children:s.jsxDEV(le,{disabled:!0,children:[s.jsxDEV(Bi,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:358,columnNumber:27},this),"Incompatible Version"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:357,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:356,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:355,columnNumber:21},this),s.jsxDEV(Zi,{children:s.jsxDEV("p",{children:["Requires Devchain v",D.minDevchainVersion,"+",s.jsxDEV("br",{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:366,columnNumber:25},this),"Current: v",y]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:364,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:363,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:354,columnNumber:19},this):s.jsxDEV(le,{onClick:()=>r(!0),disabled:!D,children:[s.jsxDEV(qi,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:373,columnNumber:21},this),"Create New Project"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:372,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:352,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:348,columnNumber:13},this),D&&s.jsxDEV(hme,{slug:e,version:D.version,templateName:E.name,open:i,onClose:()=>r(!1)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:382,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:201,columnNumber:11},this):s.jsxDEV("div",{className:"p-6",children:[s.jsxDEV(uN,{children:[s.jsxDEV(os,{children:"Template Not Found"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:193,columnNumber:15},this),s.jsxDEV(ls,{children:"The requested template could not be found in the registry."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:194,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:192,columnNumber:13},this),s.jsxDEV("p",{className:"text-muted-foreground",children:"Template not found"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:198,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:191,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:167,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:166,columnNumber:5},this)}async function Nme(e){var o,c;const t=await fetch(`/api/registry/templates/${encodeURIComponent(e)}`);if(!t.ok)throw new Error(`Registry request failed: ${t.status}`);const i=await t.json();if(!i)return null;const r=((c=(o=i.versions)==null?void 0:o.find(u=>u.isLatest))==null?void 0:c.version)??null;return{slug:e,latestVersion:r}}async function xme(e){if(e.source==="registry"&&!e.latestVersion)return{status:"idle"};let t;try{t=await Nme(e.slug)}catch{return{status:"offline"}}if(!t)return{status:"not-in-registry"};if(!t.latestVersion)return{status:"not-in-registry"};if(e.source==="bundled"&&e.latestVersion)try{return _f(e.latestVersion,t.latestVersion)?{status:"update-available",remoteVersion:t.latestVersion}:{status:"up-to-date"}}catch{return{status:"up-to-date"}}if(e.source==="bundled")return{status:"update-available",remoteVersion:t.latestVersion};try{return _f(e.latestVersion,t.latestVersion)?{status:"update-available",remoteVersion:t.latestVersion}:{status:"up-to-date"}}catch{return{status:"up-to-date"}}}async function wme(e){if(e.length===0)return{};const t=await Promise.allSettled(e.map(async r=>{const o=await xme(r);return{slug:r.slug,status:o}})),i={};for(const r of t)r.status==="fulfilled"&&(i[r.value.slug]=r.value.status);return i}async function yme(){const e=await fetch("/api/templates");if(!e.ok)throw new Error("Failed to fetch templates");return e.json()}async function Eme(e,t){const i=await fetch(`/api/templates/${encodeURIComponent(e)}/versions/${encodeURIComponent(t)}`,{method:"DELETE"});if(!i.ok){const r=await i.json().catch(()=>({message:"Failed to delete version"}));throw new Error(r.message||"Failed to delete version")}}async function Dme(e,t){const i=await fetch(`/api/registry/download/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{method:"POST"});if(!i.ok){const r=await i.json().catch(()=>({message:"Failed to download template"}));throw new Error(r.message||"Failed to download template")}}function Sme({status:e,source:t,onDownload:i,isDownloading:r}){const o=t==="bundled";switch(e.status){case"checking":return s.jsxDEV(Je,{variant:"outline",className:"gap-1 text-muted-foreground",children:[s.jsxDEV(Yf,{className:"h-3 w-3 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:103,columnNumber:11},this),"Checking..."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:102,columnNumber:9},this);case"update-available":return s.jsxDEV(le,{size:"sm",variant:"default",className:"h-6 gap-1 bg-blue-600 hover:bg-blue-700 text-xs",onClick:c=>{c.stopPropagation(),i==null||i()},disabled:r,children:r?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ot,{className:"h-3 w-3 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:121,columnNumber:15},this),"Downloading..."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:120,columnNumber:13},this):s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Mu,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:126,columnNumber:15},this),"Download v",e.remoteVersion]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:125,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:109,columnNumber:9},this);case"up-to-date":return s.jsxDEV(Je,{variant:"outline",className:"gap-1 text-green-600 border-green-600/50",children:[s.jsxDEV(Or,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:135,columnNumber:11},this),"Up to date"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:134,columnNumber:9},this);case"offline":return o?null:s.jsxDEV(Je,{variant:"outline",className:"gap-1 text-muted-foreground",children:[s.jsxDEV(si,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:146,columnNumber:11},this),"Offline"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:145,columnNumber:9},this);case"not-in-registry":return s.jsxDEV(Je,{variant:"outline",className:"gap-1 text-muted-foreground text-xs",children:"Not in registry"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:153,columnNumber:9},this);default:return null}}function _me({template:e,updateStatus:t,onRemoveVersion:i,deletingVersion:r,onDownload:o,isDownloading:c}){var C,D;const[u,l]=f.useState(!1),d=`template-versions-${e.slug}`,h=e.source==="bundled",g=e.versions&&e.versions.length>0,m=!h&&g,y=b=>{m&&(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),l(!u))},E=()=>{m&&l(!u)};return s.jsxDEV("div",{className:"rounded-lg border bg-card",children:[s.jsxDEV("div",{role:m?"button":void 0,tabIndex:m?0:void 0,className:`flex w-full items-center justify-between p-4 text-left ${m?"hover:bg-muted/50 cursor-pointer":""}`,onClick:E,onKeyDown:y,"aria-expanded":m?u:void 0,"aria-controls":m?d:void 0,children:[s.jsxDEV("div",{className:"flex items-center gap-3",children:[s.jsxDEV(Lu,{className:"h-5 w-5 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:215,columnNumber:11},this),s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV("span",{className:"font-medium",children:e.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:218,columnNumber:15},this),s.jsxDEV(Je,{variant:h?"outline":"secondary",className:"text-xs",children:h?"Bundled":"Downloaded"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:219,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:217,columnNumber:13},this),s.jsxDEV("div",{className:"text-sm text-muted-foreground",children:h?"Built-in template":s.jsxDEV(s.Fragment,{children:[((C=e.versions)==null?void 0:C.length)||0," version",(((D=e.versions)==null?void 0:D.length)||0)!==1?"s":""," cached"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:227,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:223,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:216,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:214,columnNumber:9},this),s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Sme,{status:t,source:e.source,onDownload:t.status==="update-available"?()=>o(e.slug,t.remoteVersion):void 0,isDownloading:c},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:236,columnNumber:11},this),e.latestVersion&&s.jsxDEV(Je,{variant:"secondary",children:["v",e.latestVersion]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:246,columnNumber:38},this),m&&(u?s.jsxDEV(Fr,{className:"h-4 w-4 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:249,columnNumber:15},this):s.jsxDEV(jc,{className:"h-4 w-4 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:251,columnNumber:15},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:235,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:205,columnNumber:7},this),m&&u&&s.jsxDEV("div",{id:d,className:"border-t px-4 py-3",children:[s.jsxDEV("div",{className:"mb-2 text-sm font-medium text-muted-foreground",children:"Cached Versions"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:258,columnNumber:11},this),s.jsxDEV("div",{className:"flex flex-wrap gap-2",children:e.versions.map(b=>s.jsxDEV("div",{className:"flex items-center gap-1",children:[s.jsxDEV(Je,{variant:b===e.latestVersion?"default":"outline",className:"gap-1",children:[s.jsxDEV(Mu,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:266,columnNumber:19},this),"v",b]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:262,columnNumber:17},this),s.jsxDEV(le,{variant:"ghost",size:"icon",className:"h-5 w-5 text-muted-foreground hover:text-destructive",onClick:w=>{w.stopPropagation(),i(e.slug,b)},disabled:r===b,children:s.jsxDEV(jl,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:278,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:268,columnNumber:17},this)]},b,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:261,columnNumber:15},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:259,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:257,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:204,columnNumber:5},this)}function Cme(){return s.jsxDEV("div",{className:"space-y-3",children:[1,2,3].map(e=>s.jsxDEV("div",{className:"rounded-lg border p-4",children:s.jsxDEV("div",{className:"flex items-center gap-3",children:[s.jsxDEV(Kt,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:298,columnNumber:13},this),s.jsxDEV("div",{className:"flex-1",children:[s.jsxDEV(Kt,{className:"mb-2 h-4 w-32"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:300,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-3 w-24"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:301,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:299,columnNumber:13},this),s.jsxDEV(Kt,{className:"h-5 w-16"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:303,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:297,columnNumber:11},this)},e,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:296,columnNumber:9},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:294,columnNumber:5},this)}function jme(){return s.jsxDEV("div",{className:"flex flex-col items-center justify-center rounded-lg border border-dashed p-8 text-center",children:[s.jsxDEV(Lu,{className:"mb-3 h-10 w-10 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:317,columnNumber:7},this),s.jsxDEV("div",{className:"mb-1 font-medium",children:"No installed templates"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:318,columnNumber:7},this),s.jsxDEV("div",{className:"text-sm text-muted-foreground",children:"Download templates from the registry or add bundled templates"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:319,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:316,columnNumber:5},this)}function Pme(){const e=zs(),{toast:t}=ii(),{data:i,isLoading:r,error:o}=st({queryKey:["unified-templates"],queryFn:yme}),[c,u]=f.useState({}),[l,d]=f.useState(null),h=yt({mutationFn:({slug:w,version:N})=>Eme(w,N),onSuccess:()=>{e.invalidateQueries({queryKey:["unified-templates"]}),t({title:"Success",description:"Template version removed successfully"}),d(null)},onError:w=>{t({title:"Error",description:w instanceof Error?w.message:"Failed to remove version",variant:"destructive"}),d(null)}}),g=(w,N)=>{d({slug:w,version:N})},m=()=>{l&&h.mutate(l)},[y,E]=f.useState(null),C=yt({mutationFn:({slug:w,version:N})=>Dme(w,N),onMutate:({slug:w})=>{E(w)},onSuccess:(w,{slug:N,version:x})=>{e.invalidateQueries({queryKey:["unified-templates"]}),t({title:"Success",description:`Downloaded version ${x} successfully`}),E(null),u(_=>({..._,[N]:{status:"up-to-date"}}))},onError:w=>{t({title:"Error",description:w instanceof Error?w.message:"Failed to download template",variant:"destructive"}),E(null)}}),D=(w,N)=>{C.mutate({slug:w,version:N})},b=(i==null?void 0:i.templates)||[];return f.useEffect(()=>{if(b.length===0)return;const w={};b.forEach(x=>{w[x.slug]={status:"checking"}}),u(w),(async()=>{const x=await wme(b);u(x)})()},[i]),r?s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:s.jsxDEV(vi,{className:"flex items-center gap-2",children:[s.jsxDEV(Lu,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:442,columnNumber:13},this),"Installed Templates"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:441,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:440,columnNumber:9},this),s.jsxDEV(Fs,{children:s.jsxDEV(Cme,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:447,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:446,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:439,columnNumber:7},this):o?s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:s.jsxDEV(vi,{className:"flex items-center gap-2",children:[s.jsxDEV(Lu,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:458,columnNumber:13},this),"Installed Templates"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:457,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:456,columnNumber:9},this),s.jsxDEV(Fs,{children:s.jsxDEV("div",{className:"rounded-lg border border-destructive/50 bg-destructive/10 p-4 text-center text-sm text-destructive",children:"Failed to load templates. Please try again later."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:463,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:462,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:455,columnNumber:7},this):s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:s.jsxDEV(vi,{className:"flex items-center gap-2",children:[s.jsxDEV(Lu,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:475,columnNumber:11},this),"Installed Templates",b.length>0&&s.jsxDEV(Je,{variant:"secondary",className:"ml-2",children:b.length},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:478,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:474,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:473,columnNumber:7},this),s.jsxDEV(Fs,{className:"max-h-[280px] overflow-y-auto",children:b.length===0?s.jsxDEV(jme,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:486,columnNumber:11},this):s.jsxDEV("div",{className:"space-y-3",children:b.map(w=>s.jsxDEV(_me,{template:w,updateStatus:c[w.slug]||{status:"idle"},onRemoveVersion:g,deletingVersion:(l==null?void 0:l.slug)===w.slug&&h.isPending?l.version:null,onDownload:D,isDownloading:y===w.slug&&C.isPending},w.slug,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:490,columnNumber:15},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:488,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:484,columnNumber:7},this),s.jsxDEV(Nf,{open:l!==null,onOpenChange:w=>{w||d(null)},onConfirm:m,title:"Remove template version",description:l?`Are you sure you want to remove version ${l.version} of "${l.slug}"? This will delete the cached files from disk.`:"Are you sure you want to remove this version?",confirmText:"Remove",variant:"destructive",loading:h.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:508,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:472,columnNumber:5},this)}const kme=!1;async function Vme(){const e=await fetch("/api/registry/status");if(!e.ok)throw new Error("Failed to check registry status");return e.json()}async function Tme(e){const t=new URLSearchParams;e.search&&t.set("search",e.search),e.category&&t.set("category",e.category);const i=`/api/registry/templates${t.toString()?`?${t}`:""}`,r=await fetch(i);if(!r.ok)throw new Error("Failed to fetch templates");return r.json()}function Rme(e,t){const[i,r]=f.useState(e);return f.useEffect(()=>{const o=setTimeout(()=>{r(e)},t);return()=>{clearTimeout(o)}},[e,t]),i}function Ame(){const[e,t]=f.useState(""),[i,r]=f.useState(),[o,c]=f.useState(),u=Rme(e,300),{data:l}=st({queryKey:["registry-status"],queryFn:Vme,refetchInterval:6e4,staleTime:3e4}),{data:d,isLoading:h,error:g}=st({queryKey:["registry-templates",u,i],queryFn:()=>Tme({search:u||void 0,category:i})}),m=f.useMemo(()=>(d==null?void 0:d.templates)||[],[d]);return s.jsxDEV("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:[s.jsxDEV("div",{className:"mb-6 flex-shrink-0",children:s.jsxDEV("div",{className:"flex items-center gap-3",children:[s.jsxDEV(Lu,{className:"h-8 w-8 text-primary"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:104,columnNumber:11},this),s.jsxDEV("div",{children:[s.jsxDEV("h1",{className:"text-2xl font-bold",children:"Template Registry"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:106,columnNumber:13},this),s.jsxDEV("p",{className:"text-muted-foreground",children:"Browse and install project templates"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:107,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:105,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:103,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:102,columnNumber:7},this),l&&!l.available&&s.jsxDEV(Ti,{variant:"destructive",className:"mb-4",children:[s.jsxDEV(Bi,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:115,columnNumber:11},this),s.jsxDEV(Ri,{children:"Registry unavailable. Showing cached templates only."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:116,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:114,columnNumber:9},this),s.jsxDEV("div",{className:"mb-8 flex-shrink-0",children:s.jsxDEV(Pme,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:122,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:121,columnNumber:7},this),kme,s.jsxDEV("div",{className:"mb-4 flex-shrink-0",children:[s.jsxDEV("h2",{className:"flex items-center gap-2 text-lg font-semibold",children:[s.jsxDEV(xee,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:140,columnNumber:11},this),"Browse Registry"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:139,columnNumber:9},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Discover and download templates from the online registry"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:143,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:138,columnNumber:7},this),s.jsxDEV("div",{className:"flex-1 min-h-0 overflow-auto",children:h?s.jsxDEV(Ghe,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:151,columnNumber:11},this):g?s.jsxDEV("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[s.jsxDEV(Bi,{className:"mb-4 h-12 w-12 text-destructive"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:154,columnNumber:13},this),s.jsxDEV("p",{className:"text-lg font-medium text-destructive",children:"Failed to load templates"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:155,columnNumber:13},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Please check your connection and try again"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:156,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:153,columnNumber:11},this):s.jsxDEV(Khe,{templates:m,onSelect:c},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:161,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:149,columnNumber:7},this),s.jsxDEV(bme,{slug:o,onClose:()=>c(void 0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:166,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:100,columnNumber:5},this)}var iL="AlertDialog",[Mme]=Aa(iL,[zV]),Vl=zV(),aL=e=>{const{__scopeAlertDialog:t,...i}=e,r=Vl(t);return ae.jsx(y2,{...r,...i,modal:!0})};aL.displayName=iL;var Lme="AlertDialogTrigger",rL=f.forwardRef((e,t)=>{const{__scopeAlertDialog:i,...r}=e,o=Vl(i);return ae.jsx(Ite,{...o,...r,ref:t})});rL.displayName=Lme;var Ome="AlertDialogPortal",nL=e=>{const{__scopeAlertDialog:t,...i}=e,r=Vl(t);return ae.jsx(x0,{...r,...i})};nL.displayName=Ome;var Ime="AlertDialogOverlay",oL=f.forwardRef((e,t)=>{const{__scopeAlertDialog:i,...r}=e,o=Vl(i);return ae.jsx(Xf,{...o,...r,ref:t})});oL.displayName=Ime;var Nd="AlertDialogContent",[Fme,Bme]=Mme(Nd),$me=ck("AlertDialogContent"),lL=f.forwardRef((e,t)=>{const{__scopeAlertDialog:i,children:r,...o}=e,c=Vl(i),u=f.useRef(null),l=Is(t,u),d=f.useRef(null);return ae.jsx(Ate,{contentName:Nd,titleName:cL,docsSlug:"alert-dialog",children:ae.jsx(Fme,{scope:i,cancelRef:d,children:ae.jsxs(Jf,{role:"alertdialog",...c,...o,ref:l,onOpenAutoFocus:gt(o.onOpenAutoFocus,h=>{var g;h.preventDefault(),(g=d.current)==null||g.focus({preventScroll:!0})}),onPointerDownOutside:h=>h.preventDefault(),onInteractOutside:h=>h.preventDefault(),children:[ae.jsx($me,{children:r}),ae.jsx(Ume,{contentRef:u})]})})})});lL.displayName=Nd;var cL="AlertDialogTitle",uL=f.forwardRef((e,t)=>{const{__scopeAlertDialog:i,...r}=e,o=Vl(i);return ae.jsx(Zf,{...o,...r,ref:t})});uL.displayName=cL;var pL="AlertDialogDescription",dL=f.forwardRef((e,t)=>{const{__scopeAlertDialog:i,...r}=e,o=Vl(i);return ae.jsx(eg,{...o,...r,ref:t})});dL.displayName=pL;var zme="AlertDialogAction",hL=f.forwardRef((e,t)=>{const{__scopeAlertDialog:i,...r}=e,o=Vl(i);return ae.jsx(w0,{...o,...r,ref:t})});hL.displayName=zme;var mL="AlertDialogCancel",fL=f.forwardRef((e,t)=>{const{__scopeAlertDialog:i,...r}=e,{cancelRef:o}=Bme(mL,i),c=Vl(i),u=Is(t,o);return ae.jsx(w0,{...c,...r,ref:u})});fL.displayName=mL;var Ume=({contentRef:e})=>{const t=`\`${Nd}\` requires a description for the component to be accessible for screen reader users.
970
+ `);$(Me)},placeholder:"\\n---\\n",disabled:!I||be.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:808,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Text inserted between batched messages. Use \\n for newlines."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:820,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:806,columnNumber:13},this),s.jsxDEV("div",{children:s.jsxDEV(le,{disabled:H===""||q<O||be.isPending,onClick:()=>{if(H==="")return;const ye=Math.max(u6,Math.min(Number(H),p6)),Me=Math.max(r6,Math.min(O,n6)),nt=Math.max(Me,Math.min(q,l6));be.mutate({enabled:I,delayMs:Me,maxWaitMs:nt,maxMessages:ye,separator:z})},children:be.isPending?s.jsxDEV("span",{className:"inline-flex items-center gap-2",children:[s.jsxDEV(ot,{className:"h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:858,columnNumber:21},this)," Saving…"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:857,columnNumber:19},this):"Save"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:827,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:826,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:695,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:694,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:686,columnNumber:7},this),s.jsxDEV(Ps,{className:"mb-6",children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Skills"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:872,columnNumber:11},this),s.jsxDEV(Fi,{children:"Configure startup behavior for skills synchronization."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:873,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:871,columnNumber:9},this),s.jsxDEV(Fs,{children:s.jsxDEV("div",{className:"space-y-3 max-w-lg",children:[s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{className:"space-y-0.5",children:[s.jsxDEV(We,{htmlFor:"skills-sync-on-startup",children:"Sync skills on startup"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:879,columnNumber:17},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Automatically refresh skills when the app starts."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:880,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:878,columnNumber:15},this),s.jsxDEV(Yn,{id:"skills-sync-on-startup",checked:W,onCheckedChange:Ee,disabled:ne.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:884,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:877,columnNumber:13},this),ne.isPending&&s.jsxDEV("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[s.jsxDEV(ot,{className:"h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:894,columnNumber:17},this),"Saving settings…"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:893,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:876,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:875,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:870,columnNumber:7},this),s.jsxDEV(Ps,{className:"mb-6",children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Events"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:905,columnNumber:11},this),s.jsxDEV(Fi,{children:"Customize agent notifications triggered by events."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:906,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:904,columnNumber:9},this),s.jsxDEV(Fs,{children:s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"epic-assigned-template",children:"Epic Assigned message"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:911,columnNumber:15},this),s.jsxDEV(ta,{id:"epic-assigned-template",value:_,onChange:ye=>P(ye.target.value),placeholder:m6,rows:5,className:"font-mono text-sm"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:912,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Leave blank to use the default message. Supports the placeholders below."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:920,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:910,columnNumber:13},this),s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(le,{onClick:()=>ge.mutate({template:_}),disabled:!ve||ge.isPending,children:ge.isPending?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:932,columnNumber:21},this),"Saving…"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:931,columnNumber:19},this):"Save"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:926,columnNumber:15},this),s.jsxDEV(le,{type:"button",variant:"ghost",onClick:()=>P(m6),disabled:ge.isPending,children:"Reset to default"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:939,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:925,columnNumber:13},this),s.jsxDEV("div",{className:"rounded-lg border bg-muted/30 p-4",children:[s.jsxDEV("p",{className:"text-sm font-semibold mb-2",children:"Available placeholders"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:950,columnNumber:15},this),s.jsxDEV("ul",{className:"space-y-1 text-sm text-muted-foreground",children:Ude.map(({token:ye,description:Me})=>s.jsxDEV("li",{children:[s.jsxDEV("code",{className:"font-mono text-xs mr-2",children:ye},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:954,columnNumber:21},this),Me]},ye,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:953,columnNumber:19},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:951,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:949,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:909,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:908,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:903,columnNumber:7},this),s.jsxDEV(Ps,{className:"mb-6",children:[s.jsxDEV(mi,{children:s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{children:[s.jsxDEV(vi,{children:"System Preflight Checks"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:969,columnNumber:15},this),s.jsxDEV(Fi,{children:"Verify that all required dependencies and configurations are correct"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:970,columnNumber:15},this),e&&s.jsxDEV("p",{className:"mt-2 text-xs text-muted-foreground",children:["Target project:"," ",s.jsxDEV("span",{className:"font-semibold text-foreground",children:e.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:976,columnNumber:19},this),s.jsxDEV("span",{className:"ml-2 font-mono text-[11px] text-muted-foreground/80",children:e.rootPath},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:977,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:974,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:968,columnNumber:13},this),s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>c(),disabled:l,children:[l?s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:990,columnNumber:17},this):s.jsxDEV(Yf,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:992,columnNumber:17},this),"Refresh"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:983,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:967,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:966,columnNumber:9},this),s.jsxDEV(Fs,{children:[u&&s.jsxDEV("div",{className:"flex items-center justify-center py-8",children:[s.jsxDEV(ot,{className:"h-6 w-6 animate-spin text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1001,columnNumber:15},this),s.jsxDEV("span",{className:"ml-2 text-muted-foreground",children:"Running preflight checks..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1002,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1e3,columnNumber:13},this),o&&s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV(Ti,{variant:o.overall==="fail"?"destructive":"default",children:[KE(o.overall),s.jsxDEV(Lr,{children:["Overall Status: ",o.overall.toUpperCase()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1011,columnNumber:17},this),s.jsxDEV(Ri,{children:[o.overall==="pass"&&"All systems operational",o.overall==="warn"&&"Some checks have warnings",o.overall==="fail"&&"Some checks failed. Session launch will be blocked."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1012,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1009,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-3",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"System Checks"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1022,columnNumber:17},this),o.checks.map(ye=>s.jsxDEV(Ps,{className:ye.status==="fail"?"border-destructive":ye.status==="warn"?"border-yellow-600":"border-green-600",children:s.jsxDEV(Fs,{className:"pt-4",children:s.jsxDEV("div",{className:"flex items-start gap-3",children:[s.jsxDEV("div",{className:"mt-0.5",children:KE(ye.status)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1038,columnNumber:25},this),s.jsxDEV("div",{className:"flex-1",children:[s.jsxDEV("h4",{className:"font-semibold mb-1",children:ye.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1040,columnNumber:27},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground mb-2",children:ye.message},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1041,columnNumber:27},this),ye.details&&s.jsxDEV("div",{className:"text-xs bg-muted p-2 rounded font-mono",children:ye.details},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1043,columnNumber:29},this),ye.remediation&&s.jsxDEV("div",{className:"mt-2 text-xs text-muted-foreground",children:[s.jsxDEV("strong",{children:"How to fix:"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1049,columnNumber:31},this)," ",ye.remediation]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1048,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1039,columnNumber:25},this),s.jsxDEV(Je,{variant:ye.status==="pass"?"default":ye.status==="fail"?"destructive":"secondary",children:ye.status.toUpperCase()},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1053,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1037,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1036,columnNumber:21},this)},ye.name,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1026,columnNumber:19},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1021,columnNumber:15},this),o.providers&&o.providers.length>0&&s.jsxDEV("div",{className:"space-y-3 mt-6",children:[s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Provider Checks"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1074,columnNumber:21},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:[o.providers.length," provider",o.providers.length!==1?"s":""," configured"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1077,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1073,columnNumber:19},this),o.providers.map(ye=>s.jsxDEV(Ps,{className:ye.status==="fail"?"border-destructive":ye.status==="warn"?"border-yellow-600":"border-green-600",children:s.jsxDEV(Fs,{className:"pt-4",children:s.jsxDEV("div",{className:"flex items-start gap-3",children:[s.jsxDEV("div",{className:"mt-0.5",children:KE(ye.status)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1095,columnNumber:27},this),s.jsxDEV("div",{className:"flex-1 space-y-2",children:[s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("h4",{className:"font-semibold",children:ye.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1098,columnNumber:31},this),s.jsxDEV(Je,{variant:ye.status==="pass"?"default":ye.status==="fail"?"destructive":"secondary",children:ye.status.toUpperCase()},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1099,columnNumber:31},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1097,columnNumber:29},this),ye.binPath&&s.jsxDEV("div",{className:"text-xs bg-muted p-2 rounded font-mono",children:ye.binPath},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1112,columnNumber:31},this),s.jsxDEV("div",{className:"flex flex-col gap-2",children:[s.jsxDEV("div",{className:"flex flex-wrap items-center gap-2",children:[s.jsxDEV(Je,{variant:"secondary",className:ye.binaryStatus==="fail"?"border border-destructive bg-destructive/10 text-destructive":ye.binaryStatus==="warn"?"border border-yellow-600 bg-yellow-500/10 text-yellow-700":"border border-emerald-500 bg-emerald-500/10 text-emerald-600",children:["Binary ",ye.binaryStatus.toUpperCase()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1118,columnNumber:33},this),s.jsxDEV("span",{className:"text-sm text-muted-foreground",children:ye.binaryMessage},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1130,columnNumber:33},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1117,columnNumber:31},this),ye.mcpStatus&&s.jsxDEV("div",{className:"flex flex-wrap items-center gap-2",children:[s.jsxDEV(Je,{variant:"secondary",className:ye.mcpStatus==="fail"?"border border-destructive bg-destructive/10 text-destructive":ye.mcpStatus==="warn"?"border border-yellow-600 bg-yellow-500/10 text-yellow-700":"border border-emerald-500 bg-emerald-500/10 text-emerald-600",children:["MCP ",ye.mcpStatus.toUpperCase()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1136,columnNumber:35},this),s.jsxDEV("span",{className:"text-sm text-muted-foreground",children:ye.mcpMessage??"MCP not required."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1148,columnNumber:35},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1135,columnNumber:33},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1116,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1096,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1094,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1093,columnNumber:23},this)},ye.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1083,columnNumber:21},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1072,columnNumber:17},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-4",children:["Last checked: ",new Date(o.timestamp).toLocaleString()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1164,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1007,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:998,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:965,columnNumber:7},this),s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Provider Management"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1175,columnNumber:11},this),s.jsxDEV(Fi,{children:"Configure AI provider binaries and settings"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1176,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1174,columnNumber:9},this),s.jsxDEV(Fs,{children:[s.jsxDEV(Ti,{children:[s.jsxDEV(si,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1180,columnNumber:13},this),s.jsxDEV(Lr,{children:"Manage Providers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1181,columnNumber:13},this),s.jsxDEV(Ri,{children:["Provider configurations, including binary paths, are now managed through the dedicated"," ",s.jsxDEV("a",{href:"/providers",className:"font-semibold underline hover:text-primary",children:"Providers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1184,columnNumber:15},this)," ","page. You can add, edit, and configure provider binaries there."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1182,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1179,columnNumber:11},this),s.jsxDEV("div",{className:"mt-4",children:s.jsxDEV(le,{variant:"outline",onClick:()=>window.location.href="/providers",children:"Go to Providers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1191,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1190,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1178,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:1173,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/SettingsPage.tsx",lineNumber:396,columnNumber:5},this)}const od={name:"",handler:"",status:"all",timeRange:"1h"},Hde=[{label:"Last hour",value:"1h"},{label:"Last 24 hours",value:"24h"},{label:"Last 7 days",value:"7d"},{label:"Last 30 days",value:"30d"},{label:"All time",value:"all"}];async function qde(e){const t=new URLSearchParams;e.name&&t.set("name",e.name),e.handler&&t.set("handler",e.handler),e.status&&t.set("status",e.status),e.from&&t.set("from",e.from),e.to&&t.set("to",e.to),e.limit!==void 0&&t.set("limit",String(e.limit)),e.offset!==void 0&&t.set("offset",String(e.offset));const i=await fetch(`/api/events?${t.toString()}`);if(!i.ok)throw new Error("Failed to fetch events");return i.json()}function Kde(e){if(e==="all")return{};const t=new Date;let i;switch(e){case"1h":i=new Date(t.getTime()-60*60*1e3);break;case"24h":i=new Date(t.getTime()-24*60*60*1e3);break;case"7d":i=new Date(t.getTime()-7*24*60*60*1e3);break;case"30d":i=new Date(t.getTime()-30*24*60*60*1e3);break;default:i=void 0;break}return i?{from:i.toISOString(),to:t.toISOString()}:{}}function f6(e){if(e==null)return"null";if(typeof e=="string")try{const t=JSON.parse(e);return JSON.stringify(t,null,2)}catch{return e}try{return JSON.stringify(e,null,2)}catch{return String(e)}}function g6(e){return e.reduce((t,i)=>(t.total+=1,i.status==="success"?t.success+=1:t.failure+=1,t),{total:0,success:0,failure:0})}function Gde(){const e=zs(),[t,i]=f.useState(od),[r,o]=f.useState({limit:50,offset:0}),[c,u]=f.useState(null);f.useEffect(()=>{o(j=>j.offset===0?j:{...j,offset:0})},[t.name,t.handler,t.status,t.timeRange]);const l=f.useCallback(j=>{if(!j)return;const{topic:V,type:M}=j;V==="events/logs"&&(M==="event_created"||M==="handler_recorded")&&e.invalidateQueries({queryKey:["eventLogs"]})},[e]),d=f.useRef(null),h=Bc({connect:()=>{var j;(j=d.current)==null||j.emit("events:subscribe")},message:l},[l]);d.current=h;const g=f.useMemo(()=>Kde(t.timeRange),[t.timeRange]),{data:m,isLoading:y,refetch:E,error:C}=st({queryKey:["eventLogs",t,r],queryFn:()=>qde({name:t.name.trim()||void 0,handler:t.handler.trim()||void 0,status:t.status==="all"?void 0:t.status,...g,limit:r.limit,offset:r.offset})}),D=(m==null?void 0:m.items)??[],b=(m==null?void 0:m.total)??0,w=b===0?0:r.offset+1,N=r.offset+D.length,x=r.offset>0,_=r.offset+r.limit<b;f.useEffect(()=>{if(D.length===0){u(null);return}(!c||!D.some(j=>j.id===c))&&u(D[0].id)},[D,c]);const P=D.find(j=>j.id===c)??null,R=(P==null?void 0:P.handlers)??[],k=P?g6(P.handlers):null;return s.jsxDEV("div",{className:"space-y-6",children:[s.jsxDEV("div",{children:[s.jsxDEV("h1",{className:"text-3xl font-bold",children:"Events Viewer"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:249,columnNumber:9},this),s.jsxDEV("p",{className:"text-muted-foreground mt-2",children:"Monitor published events and handler outcomes in real time."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:250,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:248,columnNumber:7},this),s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Filters"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:257,columnNumber:11},this),s.jsxDEV(Fi,{children:"Refine the events shown below."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:258,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:256,columnNumber:9},this),s.jsxDEV(Fs,{children:[s.jsxDEV("div",{className:"grid gap-4 md:grid-cols-2 lg:grid-cols-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"filter-name",children:"Event name"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:263,columnNumber:15},this),s.jsxDEV(Tt,{id:"filter-name",value:t.name,onChange:j=>i(V=>({...V,name:j.target.value})),placeholder:"e.g. epic.updated"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:264,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:262,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"filter-handler",children:"Handler"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:272,columnNumber:15},this),s.jsxDEV(Tt,{id:"filter-handler",value:t.handler,onChange:j=>i(V=>({...V,handler:j.target.value})),placeholder:"e.g. EpicAssignmentNotifier"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:273,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:271,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{children:"Status"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:283,columnNumber:15},this),s.jsxDEV(Ls,{value:t.status,onValueChange:j=>i(V=>({...V,status:j})),children:[s.jsxDEV(Ts,{children:s.jsxDEV($s,{placeholder:"All statuses"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:291,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:290,columnNumber:17},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"all",children:"All"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:294,columnNumber:19},this),s.jsxDEV(Pt,{value:"success",children:"Success"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:295,columnNumber:19},this),s.jsxDEV(Pt,{value:"failure",children:"Failure"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:296,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:293,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:284,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:282,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{children:"Time range"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:301,columnNumber:15},this),s.jsxDEV(Ls,{value:t.timeRange,onValueChange:j=>i(V=>({...V,timeRange:j})),children:[s.jsxDEV(Ts,{children:s.jsxDEV($s,{placeholder:"Select range"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:309,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:308,columnNumber:17},this),s.jsxDEV(Rs,{children:Hde.map(j=>s.jsxDEV(Pt,{value:j.value,children:j.label},j.value,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:313,columnNumber:21},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:311,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:302,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:300,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:261,columnNumber:11},this),s.jsxDEV("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[s.jsxDEV(le,{onClick:()=>E(),variant:"outline",size:"sm",disabled:y,className:"flex items-center gap-2",children:[s.jsxDEV(Yf,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:329,columnNumber:15},this),"Refresh"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:322,columnNumber:13},this),s.jsxDEV(le,{onClick:()=>i(od),variant:"ghost",size:"sm",disabled:t.name===od.name&&t.handler===od.handler&&t.status===od.status&&t.timeRange===od.timeRange,children:"Clear filters"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:332,columnNumber:13},this),m?s.jsxDEV("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[s.jsxDEV(CV,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:347,columnNumber:17},this),s.jsxDEV("span",{children:["Showing ",b===0?0:`${w}–${N}`," of ",b," events"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:348,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:346,columnNumber:15},this):null]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:321,columnNumber:11},this),C instanceof Error&&s.jsxDEV("p",{className:"mt-4 text-sm text-destructive",children:["Failed to load events: ",C.message]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:355,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:260,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:255,columnNumber:7},this),s.jsxDEV("div",{className:"flex gap-6 h-[calc(100vh-24rem)]",children:[s.jsxDEV(Ps,{className:"flex-1 flex flex-col",children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Event Log"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:364,columnNumber:13},this),s.jsxDEV(Fi,{children:"Newest events appear first."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:365,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:363,columnNumber:11},this),s.jsxDEV(Fs,{className:"flex-1 flex flex-col min-h-0",children:[s.jsxDEV(xr,{className:"flex-1 -mx-6 px-6",children:s.jsxDEV("div",{className:"overflow-hidden rounded-lg border",children:s.jsxDEV(Pc,{children:[s.jsxDEV(kc,{children:s.jsxDEV(Ci,{children:[s.jsxDEV(ki,{className:"w-[200px]",children:"Published"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:373,columnNumber:23},this),s.jsxDEV(ki,{children:"Event"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:374,columnNumber:23},this),s.jsxDEV(ki,{className:"w-[160px] text-center",children:"Handlers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:375,columnNumber:23},this),s.jsxDEV(ki,{className:"w-[180px]",children:"Request ID"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:376,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:372,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:371,columnNumber:19},this),s.jsxDEV(Vc,{children:y&&D.length===0?s.jsxDEV(Ci,{children:s.jsxDEV(fs,{colSpan:4,className:"py-8 text-center text-muted-foreground",children:"Loading events..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:382,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:381,columnNumber:23},this):D.length===0?s.jsxDEV(Ci,{children:s.jsxDEV(fs,{colSpan:4,className:"py-12 text-center text-muted-foreground",children:"No events found. Adjust filters or wait for new activity."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:388,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:387,columnNumber:23},this):D.map(j=>{const V=g6(j.handlers),M=j.id===c;return s.jsxDEV(Ci,{className:we("cursor-pointer",M&&"bg-muted/60 hover:bg-muted/60"),onClick:()=>u(j.id),"aria-selected":M,children:[s.jsxDEV(fs,{className:"font-mono text-xs",children:new Date(j.publishedAt).toLocaleString()},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:406,columnNumber:29},this),s.jsxDEV(fs,{children:s.jsxDEV("div",{className:"font-medium",children:j.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:410,columnNumber:31},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:409,columnNumber:29},this),s.jsxDEV(fs,{className:"text-center",children:s.jsxDEV("div",{className:"flex items-center justify-center gap-2",children:[s.jsxDEV(Je,{variant:"outline",className:"border-emerald-500 text-emerald-600",children:[V.success," OK"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:414,columnNumber:33},this),s.jsxDEV(Je,{variant:"outline",className:"border-destructive text-destructive",children:[V.failure," Fail"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:420,columnNumber:33},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:413,columnNumber:31},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:412,columnNumber:29},this),s.jsxDEV(fs,{className:"font-mono text-xs",children:j.requestId??"--"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:428,columnNumber:29},this)]},j.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:397,columnNumber:27},this)})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:379,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:370,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:369,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:368,columnNumber:13},this),s.jsxDEV("div",{className:"mt-4 flex items-center justify-between gap-2 pt-4 border-t",children:[s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:["Page ",Math.floor(r.offset/r.limit)+1," of"," ",Math.max(1,Math.ceil(b/r.limit))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:441,columnNumber:15},this),s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>o(j=>({...j,offset:Math.max(0,j.offset-j.limit)})),disabled:!x||y,children:"Previous"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:446,columnNumber:17},this),s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>o(j=>({...j,offset:j.offset+j.limit})),disabled:!_||y,children:"Next"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:459,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:445,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:440,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:367,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:362,columnNumber:9},this),s.jsxDEV(Ps,{className:"flex-1 flex flex-col",children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Event Details"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:480,columnNumber:13},this),s.jsxDEV(Fi,{children:"Inspect payload and handler results."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:481,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:479,columnNumber:11},this),s.jsxDEV(Fs,{className:"flex-1 min-h-0",children:s.jsxDEV(xr,{className:"h-full -mx-6 px-6",children:P?s.jsxDEV("div",{className:"space-y-4 pr-4",children:[s.jsxDEV("div",{children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Overview"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:490,columnNumber:21},this),s.jsxDEV("div",{className:"mt-2 grid gap-3 sm:grid-cols-2",children:[s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:"Event"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:495,columnNumber:25},this),s.jsxDEV("div",{className:"font-semibold",children:P.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:496,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:494,columnNumber:23},this),s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:"Published"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:499,columnNumber:25},this),s.jsxDEV("div",{className:"font-mono text-xs",children:new Date(P.publishedAt).toLocaleString()},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:500,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:498,columnNumber:23},this),s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:"Request ID"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:505,columnNumber:25},this),s.jsxDEV("div",{className:"font-mono text-xs",children:P.requestId??"--"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:506,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:504,columnNumber:23},this),k&&s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:"Handlers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:510,columnNumber:27},this),s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Je,{variant:"outline",className:"border-emerald-500 text-emerald-600",children:[k.success," OK"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:512,columnNumber:29},this),s.jsxDEV(Je,{variant:"outline",className:"border-destructive text-destructive",children:[k.failure," Fail"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:518,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:511,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:509,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:493,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:489,columnNumber:19},this),s.jsxDEV("div",{children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Payload"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:531,columnNumber:21},this),s.jsxDEV("pre",{className:"mt-2 h-48 overflow-auto rounded-lg border bg-muted/50 p-4 text-xs whitespace-pre-wrap break-all",children:f6(P.payload)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:534,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:530,columnNumber:19},this),s.jsxDEV("div",{children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Handlers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:540,columnNumber:21},this),R.length===0?s.jsxDEV("p",{className:"mt-2 text-sm text-muted-foreground",children:"No handlers recorded yet."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:544,columnNumber:23},this):s.jsxDEV("div",{className:"mt-2 space-y-3",children:R.map(j=>s.jsxDEV("div",{className:"rounded-lg border p-3",children:[s.jsxDEV("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"text-sm font-semibold",children:j.handler},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:553,columnNumber:33},this),s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:["Started ",new Date(j.startedAt).toLocaleString(),j.endedAt&&s.jsxDEV(s.Fragment,{children:[" - ","Ended ",new Date(j.endedAt).toLocaleString()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:557,columnNumber:37},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:554,columnNumber:33},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:552,columnNumber:31},this),s.jsxDEV(Je,{variant:j.status==="success"?"secondary":"destructive",className:"uppercase",children:j.status},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:563,columnNumber:31},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:551,columnNumber:29},this),j.detail!==void 0&&j.detail!==null&&s.jsxDEV("pre",{className:"mt-2 h-40 overflow-auto rounded bg-muted/50 p-3 text-xs whitespace-pre-wrap break-all",children:f6(j.detail)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:571,columnNumber:31},this)]},j.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:550,columnNumber:27},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:548,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:539,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:488,columnNumber:17},this):s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Select an event to view details."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:486,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:484,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:483,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:478,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:360,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/EventsPage.tsx",lineNumber:247,columnNumber:5},this)}async function Yde(e){const t=await fetch(`/api/sessions/pools?projectId=${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch pools");return(await t.json()).pools}function Qde({pool:e,onClick:t,isSelected:i}){const r=Math.round(e.waitingMs/1e3);return s.jsxDEV("button",{type:"button",onClick:t,className:we("p-3 border rounded-lg text-left transition-colors","hover:bg-accent focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",i&&"bg-accent border-primary"),"aria-pressed":i,"aria-label":`${e.agentName}: ${e.messageCount} message${e.messageCount!==1?"s":""}, waiting ${r} seconds`,children:[s.jsxDEV("div",{className:"font-medium",children:e.agentName},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:63,columnNumber:7},this),s.jsxDEV("div",{className:"text-sm text-muted-foreground",children:[e.messageCount," msg",e.messageCount!==1?"s":""]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:64,columnNumber:7},this),s.jsxDEV("div",{className:"text-xs text-muted-foreground",children:["~",r,"s wait"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:67,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:52,columnNumber:5},this)}function Xde({projectId:e,onAgentClick:t,selectedAgentId:i}){const r=zs(),{data:o,isLoading:c,error:u}=st({queryKey:["pools",e],queryFn:()=>Yde(e),refetchInterval:5e3,staleTime:1e3}),l=f.useCallback(d=>{if(!d)return;const{topic:h,type:g}=d;h==="messages/pools"&&g==="updated"&&r.invalidateQueries({queryKey:["pools",e]})},[r,e]);return Bc({message:l},[l]),s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:[s.jsxDEV(vi,{children:"Current Pools"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:106,columnNumber:9},this),s.jsxDEV(Fi,{children:"Messages waiting to be delivered to agents"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:107,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:105,columnNumber:7},this),s.jsxDEV(Fs,{children:[c&&s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Loading pools..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:110,columnNumber:23},this),u instanceof Error&&s.jsxDEV("p",{className:"text-sm text-destructive",children:["Failed to load pools: ",u.message]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:112,columnNumber:11},this),!c&&!u&&s.jsxDEV("div",{className:"flex flex-wrap gap-3",children:[o==null?void 0:o.map(d=>s.jsxDEV(Qde,{pool:d,onClick:()=>t==null?void 0:t(d.agentId),isSelected:i===d.agentId},d.agentId,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:117,columnNumber:15},this)),(o==null?void 0:o.length)===0&&s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"No pending messages"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:125,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:115,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:109,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/CurrentPoolsPanel.tsx",lineNumber:104,columnNumber:5},this)}async function Jde(e,t){const i=new URLSearchParams({projectId:e});t!=null&&t.status&&i.set("status",t.status),t!=null&&t.agentId&&i.set("agentId",t.agentId),t!=null&&t.source&&i.set("source",t.source);const r=await fetch(`/api/sessions/messages?${i.toString()}`);if(!r.ok)throw new Error("Failed to fetch messages");return r.json()}function v6(e,t){return e.length<=t?e:e.slice(0,t)+"..."}function Zde(e){return new Date(e).toLocaleTimeString()}function ehe(e=[]){const t=[],i=new Map;for(const r of e)if(r.batchId){const o=i.get(r.batchId)||[];o.push(r),i.set(r.batchId,o)}else t.push({batchId:void 0,messages:[r],status:r.status,timestamp:r.timestamp,agentName:r.agentName});for(const[r,o]of i){const c=o.sort((u,l)=>u.timestamp-l.timestamp);t.push({batchId:r,messages:c,status:c[0].status,timestamp:c[0].timestamp,agentName:c[0].agentName})}return t.sort((r,o)=>o.timestamp-r.timestamp)}function the({status:e}){const t={queued:"bg-muted text-muted-foreground",delivered:"bg-emerald-500/10 text-emerald-600 border-emerald-500/40",failed:"bg-destructive/10 text-destructive border-destructive/40"};return s.jsxDEV(Je,{variant:"outline",className:we("text-xs uppercase",t[e]),children:e},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:134,columnNumber:5},this)}function she({message:e,onClick:t}){return s.jsxDEV("button",{type:"button",onClick:t,className:we("w-full text-left pl-4 py-1 rounded text-sm transition-colors","hover:bg-accent focus:outline-none focus-visible:ring-2 focus-visible:ring-ring"),"aria-label":`Message from ${e.source}: ${v6(e.preview,50)}`,children:[s.jsxDEV("span",{className:"text-muted-foreground",children:["[",e.source,"]"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:156,columnNumber:7},this)," ",s.jsxDEV("span",{children:v6(e.preview,80)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:157,columnNumber:7},this),e.error&&s.jsxDEV("div",{className:"text-destructive text-xs mt-1",children:["Error: ",e.error]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:158,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:147,columnNumber:5},this)}function ihe({group:e,onMessageClick:t}){const i=e.messages.length>1;return s.jsxDEV("div",{className:"border-b py-2 last:border-b-0",children:[s.jsxDEV("div",{className:"flex items-center gap-2 flex-wrap",children:[s.jsxDEV(the,{status:e.status},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:174,columnNumber:9},this),s.jsxDEV("span",{className:"text-sm text-muted-foreground",children:Zde(e.timestamp)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:175,columnNumber:9},this),i&&s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:["batch of ",e.messages.length]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:177,columnNumber:11},this),s.jsxDEV("span",{className:"ml-auto text-sm",children:["→ ",e.agentName]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:181,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:173,columnNumber:7},this),s.jsxDEV("div",{className:"mt-1 space-y-1",children:e.messages.map(r=>s.jsxDEV(she,{message:r,onClick:()=>t(r)},r.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:185,columnNumber:11},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:183,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:172,columnNumber:5},this)}function ahe({projectId:e,filters:t,onMessageClick:i}){const r=zs(),{data:o,isLoading:c,error:u}=st({queryKey:["messages",e,t],queryFn:()=>Jde(e,t),refetchInterval:1e4,staleTime:2e3}),l=f.useCallback(m=>{if(!m)return;const{topic:y}=m;y==="messages/activity"&&r.invalidateQueries({queryKey:["messages",e]})},[r,e]);Bc({message:l},[l]);const d=f.useMemo(()=>ehe(o==null?void 0:o.messages),[o==null?void 0:o.messages]),h=f.useCallback(m=>{i==null||i(m)},[i]),g=f.useMemo(()=>{const m=[];return t!=null&&t.agentId&&m.push("filtered by agent"),t!=null&&t.status&&m.push(`status: ${t.status}`),t!=null&&t.source&&m.push(`source: ${t.source}`),m.length>0?` (${m.join(", ")})`:""},[t]);return s.jsxDEV(Ps,{className:"flex-1 flex flex-col min-h-0",children:[s.jsxDEV(mi,{className:"flex-shrink-0",children:[s.jsxDEV(vi,{children:"Activity Log"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:239,columnNumber:9},this),s.jsxDEV(Fi,{children:["Recent message delivery history",g,o&&` • ${o.total} total`]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:240,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:238,columnNumber:7},this),s.jsxDEV(Fs,{className:"flex-1 min-h-0",children:[c&&s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Loading messages..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:246,columnNumber:23},this),u instanceof Error&&s.jsxDEV("p",{className:"text-sm text-destructive",children:["Failed to load messages: ",u.message]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:248,columnNumber:11},this),!c&&!u&&s.jsxDEV(xr,{className:"h-full",children:d.length===0?s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"No messages found"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:253,columnNumber:15},this):s.jsxDEV("div",{className:"space-y-0 pr-4",children:d.map(m=>s.jsxDEV(ihe,{group:m,onMessageClick:h},m.batchId||m.messages[0].id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:257,columnNumber:19},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:255,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:251,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:245,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageActivityList.tsx",lineNumber:237,columnNumber:5},this)}async function rhe(e){const t=await fetch(`/api/sessions/messages/${e}`);if(!t.ok)throw new Error("Failed to fetch message details");return(await t.json()).message}function nhe(e){return new Date(e).toLocaleString()}function ohe(e){return new Date(e).toLocaleTimeString()}function lhe({status:e}){const t={queued:"bg-muted text-muted-foreground",delivered:"bg-emerald-500/10 text-emerald-600 border-emerald-500/40",failed:"bg-destructive/10 text-destructive border-destructive/40"};return s.jsxDEV(Je,{variant:"outline",className:we("text-xs uppercase font-medium",t[e]),children:e},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:54,columnNumber:5},this)}function Ub({icon:e,title:t,children:i,className:r}){return s.jsxDEV("div",{className:we("space-y-2",r),children:[s.jsxDEV("div",{className:"flex items-center gap-2 text-sm font-medium text-muted-foreground",children:[e&&s.jsxDEV(e,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:75,columnNumber:18},this),s.jsxDEV("span",{children:t},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:76,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:74,columnNumber:7},this),s.jsxDEV("div",{className:"pl-6",children:i},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:78,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:73,columnNumber:5},this)}function b6({text:e}){const[t,i]=f.useState(!1),r=async()=>{try{await navigator.clipboard.writeText(e),i(!0),setTimeout(()=>i(!1),2e3)}catch(o){console.error("Failed to copy:",o)}};return s.jsxDEV("div",{className:"relative rounded-lg border bg-muted/50",children:[s.jsxDEV("div",{className:"absolute right-2 top-2 z-10",children:s.jsxDEV(le,{variant:"ghost",size:"sm",onClick:r,className:"h-8 w-8 p-0 hover:bg-background","aria-label":"Copy content",children:t?s.jsxDEV(th,{className:"h-4 w-4 text-emerald-500"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:108,columnNumber:13},this):s.jsxDEV(p2,{className:"h-4 w-4 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:110,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:100,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:99,columnNumber:7},this),s.jsxDEV("pre",{className:"overflow-auto p-4 pr-12 text-sm whitespace-pre-wrap break-words max-h-72",children:e},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:114,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:98,columnNumber:5},this)}function che({message:e,onClose:t}){const[i,r]=f.useState(null),[o,c]=f.useState(!1),[u,l]=f.useState(null);return f.useEffect(()=>{if(!e){r(null),l(null);return}c(!0),l(null),rhe(e.id).then(r).catch(d=>{console.error("Failed to fetch message details:",d),l("Failed to load message content")}).finally(()=>c(!1))},[e==null?void 0:e.id]),s.jsxDEV(WM,{open:!!e,onOpenChange:d=>!d&&t(),children:s.jsxDEV(d3,{children:[s.jsxDEV(h3,{className:"pb-2",children:[s.jsxDEV(f3,{children:"Message Details"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:150,columnNumber:11},this),s.jsxDEV(g3,{children:e&&nhe(e.timestamp)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:151,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:149,columnNumber:9},this),e&&s.jsxDEV(xr,{className:"flex-1 px-4",children:s.jsxDEV("div",{className:"space-y-5 pb-4",children:[s.jsxDEV(Ub,{icon:CV,title:"Status",children:s.jsxDEV("div",{className:"flex items-center gap-3",children:[s.jsxDEV(lhe,{status:e.status},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:160,columnNumber:19},this),e.deliveredAt&&s.jsxDEV("span",{className:"text-sm text-muted-foreground",children:["Delivered at ",ohe(e.deliveredAt)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:162,columnNumber:21},this),e.immediate&&s.jsxDEV(Je,{variant:"secondary",className:"text-xs",children:[s.jsxDEV(OV,{className:"h-3 w-3 mr-1"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:168,columnNumber:23},this),"Immediate"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:167,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:159,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:158,columnNumber:15},this),s.jsxDEV(Ub,{icon:Yu,title:"Routing",children:s.jsxDEV("div",{className:"grid grid-cols-2 gap-4 text-sm",children:[s.jsxDEV("div",{children:[s.jsxDEV("span",{className:"text-muted-foreground",children:"Recipient"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:179,columnNumber:21},this),s.jsxDEV("p",{className:"font-medium",children:e.agentName},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:180,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:178,columnNumber:19},this),s.jsxDEV("div",{children:[s.jsxDEV("span",{className:"text-muted-foreground",children:"Source"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:183,columnNumber:21},this),s.jsxDEV("p",{className:"font-mono text-xs",children:e.source},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:184,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:182,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:177,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:176,columnNumber:15},this),e.error&&s.jsxDEV(Ub,{icon:si,title:"Error",className:"text-destructive",children:s.jsxDEV("div",{className:"rounded-lg border border-destructive/50 bg-destructive/10 p-3",children:s.jsxDEV("p",{className:"text-sm text-destructive",children:e.error},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:193,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:192,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:191,columnNumber:17},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV("div",{className:"flex items-center gap-2 text-sm font-medium text-muted-foreground",children:s.jsxDEV("span",{children:"Content"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:201,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:200,columnNumber:17},this),o?s.jsxDEV("div",{className:"flex items-center justify-center p-8 rounded-lg border bg-muted/50",children:[s.jsxDEV(ot,{className:"h-6 w-6 animate-spin text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:205,columnNumber:21},this),s.jsxDEV("span",{className:"ml-2 text-sm text-muted-foreground",children:"Loading content..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:206,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:204,columnNumber:19},this):u?s.jsxDEV("div",{className:"rounded-lg border border-destructive/50 bg-destructive/10 p-4",children:[s.jsxDEV("p",{className:"text-sm text-destructive",children:u},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:210,columnNumber:21},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground mt-2",children:["Preview: ",e.preview]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:211,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:209,columnNumber:19},this):i?s.jsxDEV(b6,{text:i.text},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:214,columnNumber:19},this):s.jsxDEV(b6,{text:e.preview},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:216,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:199,columnNumber:15},this),s.jsxDEV(Ub,{icon:kV,title:"Metadata",children:s.jsxDEV("div",{className:"rounded-lg border bg-muted/30 p-3",children:s.jsxDEV("dl",{className:"text-sm space-y-2",children:[s.jsxDEV("div",{className:"flex justify-between",children:[s.jsxDEV("dt",{className:"text-muted-foreground",children:"Message ID"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:225,columnNumber:23},this),s.jsxDEV("dd",{className:"font-mono text-xs text-right max-w-[200px] truncate",children:e.id},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:226,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:224,columnNumber:21},this),s.jsxDEV("div",{className:"flex justify-between",children:[s.jsxDEV("dt",{className:"text-muted-foreground",children:"Agent ID"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:231,columnNumber:23},this),s.jsxDEV("dd",{className:"font-mono text-xs text-right max-w-[200px] truncate",children:e.agentId},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:232,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:230,columnNumber:21},this),e.batchId&&s.jsxDEV("div",{className:"flex justify-between",children:[s.jsxDEV("dt",{className:"text-muted-foreground",children:"Batch ID"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:238,columnNumber:25},this),s.jsxDEV("dd",{className:"font-mono text-xs text-right max-w-[200px] truncate",children:e.batchId},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:239,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:237,columnNumber:23},this),e.senderAgentId&&s.jsxDEV("div",{className:"flex justify-between",children:[s.jsxDEV("dt",{className:"text-muted-foreground",children:"Sender Agent"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:246,columnNumber:25},this),s.jsxDEV("dd",{className:"font-mono text-xs text-right max-w-[200px] truncate",children:e.senderAgentId},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:247,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:245,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:223,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:222,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:221,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:156,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:155,columnNumber:11},this),s.jsxDEV(m3,{children:s.jsxDEV(HM,{asChild:!0,children:s.jsxDEV(le,{variant:"outline",children:"Close"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:261,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:260,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:259,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:148,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageDetailDrawer.tsx",lineNumber:147,columnNumber:5},this)}const uhe=[{value:"epic.assigned",label:"Epic Assignment"},{value:"chat.message",label:"Chat Message"},{value:"mcp.send_message",label:"MCP Tool Call"},{value:"subscriber.action",label:"Subscriber Action"},{value:"pool.failure_notice",label:"Failure Notice"}];async function phe(e){const t=await fetch(`/api/agents?projectId=${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch agents");return t.json()}function dhe(e){return!!(e.status||e.agentId||e.source)}function hhe({projectId:e,filters:t,onChange:i}){const{data:r}=st({queryKey:["agents",e],queryFn:()=>phe(e),enabled:!!e,staleTime:3e4}),o=(r==null?void 0:r.items)??[],c=h=>{i({...t,status:h==="all"?void 0:h})},u=h=>{i({...t,agentId:h==="all"?void 0:h})},l=h=>{i({...t,source:h==="all"?void 0:h})},d=()=>{i({})};return s.jsxDEV("div",{className:"flex flex-wrap gap-3 items-center",children:[s.jsxDEV(Ls,{value:t.status||"all",onValueChange:c,children:[s.jsxDEV(Ts,{className:"w-32","aria-label":"Filter by status",children:s.jsxDEV($s,{placeholder:"Status"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:82,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:81,columnNumber:9},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"all",children:"All Status"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:85,columnNumber:11},this),s.jsxDEV(Pt,{value:"queued",children:"Queued"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:86,columnNumber:11},this),s.jsxDEV(Pt,{value:"delivered",children:"Delivered"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:87,columnNumber:11},this),s.jsxDEV(Pt,{value:"failed",children:"Failed"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:88,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:84,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:80,columnNumber:7},this),s.jsxDEV(Ls,{value:t.agentId||"all",onValueChange:u,children:[s.jsxDEV(Ts,{className:"w-40","aria-label":"Filter by agent",children:s.jsxDEV($s,{placeholder:"Agent"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:95,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:94,columnNumber:9},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"all",children:"All Agents"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:98,columnNumber:11},this),o.map(h=>s.jsxDEV(Pt,{value:h.id,children:h.name},h.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:100,columnNumber:13},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:97,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:93,columnNumber:7},this),s.jsxDEV(Ls,{value:t.source||"all",onValueChange:l,children:[s.jsxDEV(Ts,{className:"w-44","aria-label":"Filter by source",children:s.jsxDEV($s,{placeholder:"Source"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:110,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:109,columnNumber:9},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"all",children:"All Sources"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:113,columnNumber:11},this),uhe.map(h=>s.jsxDEV(Pt,{value:h.value,children:h.label},h.value,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:115,columnNumber:13},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:112,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:108,columnNumber:7},this),dhe(t)&&s.jsxDEV(le,{variant:"ghost",size:"sm",onClick:d,className:"gap-1","aria-label":"Clear all filters",children:[s.jsxDEV(jl,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:131,columnNumber:11},this),"Clear"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:124,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/messages/MessageFiltersPanel.tsx",lineNumber:78,columnNumber:5},this)}function mhe(){const{selectedProject:e}=Gi(),[t,i]=f.useState({}),[r,o]=f.useState(null),c=f.useCallback(h=>{i(h)},[]),u=f.useCallback(h=>{o(h)},[]),l=f.useCallback(()=>{o(null)},[]);if(!e)return s.jsxDEV("div",{className:"flex flex-1 items-center justify-center",children:s.jsxDEV(Bte,{icon:Cl,title:"No project selected",description:"Select a project to view message activity"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/MessagesPage.tsx",lineNumber:34,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/MessagesPage.tsx",lineNumber:33,columnNumber:7},this);const d=h=>{i(g=>({...g,agentId:g.agentId===h?void 0:h}))};return s.jsxDEV("div",{className:"flex flex-col gap-6 h-full",children:[s.jsxDEV(Dte,{title:"Messages",description:"Monitor message pools and delivery activity"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/MessagesPage.tsx",lineNumber:53,columnNumber:7},this),s.jsxDEV(Xde,{projectId:e.id,onAgentClick:d,selectedAgentId:t.agentId},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/MessagesPage.tsx",lineNumber:55,columnNumber:7},this),s.jsxDEV(hhe,{projectId:e.id,filters:t,onChange:c},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/MessagesPage.tsx",lineNumber:61,columnNumber:7},this),s.jsxDEV(ahe,{projectId:e.id,filters:Object.keys(t).length>0?t:void 0,onMessageClick:u},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/MessagesPage.tsx",lineNumber:67,columnNumber:7},this),s.jsxDEV(che,{message:r,onClose:l},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/MessagesPage.tsx",lineNumber:73,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/MessagesPage.tsx",lineNumber:52,columnNumber:5},this)}const fhe={contains:"Contains",regex:"Regex",not_contains:"Not Contains"};function ghe(e){return fhe[e]}async function ZM(e){const t=new URLSearchParams({projectId:e}),i=await fetch(`/api/watchers?${t.toString()}`);if(!i.ok)throw new Error("Failed to fetch watchers");return i.json()}async function vhe(e){const t=await fetch("/api/watchers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const i=await t.json().catch(()=>({message:"Failed to create watcher"}));throw new Error(i.message||"Failed to create watcher")}return t.json()}async function bhe(e,t){const i=await fetch(`/api/watchers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok){const r=await i.json().catch(()=>({message:"Failed to update watcher"}));throw new Error(r.message||"Failed to update watcher")}return i.json()}async function Nhe(e){if(!(await fetch(`/api/watchers/${e}`,{method:"DELETE"})).ok)throw new Error("Failed to delete watcher")}async function xhe(e,t){const i=await fetch(`/api/watchers/${e}/toggle`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:t})});if(!i.ok)throw new Error("Failed to toggle watcher");return i.json()}async function whe(e){const t=await fetch(`/api/watchers/${e}/test`,{method:"POST"});if(!t.ok)throw new Error("Failed to test watcher");return t.json()}const N6={name:"",description:"",enabled:!0,scope:"all",scopeFilterId:"",pollIntervalMs:5e3,viewportLines:50,conditionType:"contains",conditionPattern:"",conditionFlags:"",idleAfterSeconds:0,cooldownMode:"time",cooldownMs:3e4,eventName:""};async function yhe(e){const t=await fetch(`/api/agents?projectId=${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch agents");return t.json()}async function Ehe(e){const t=await fetch(`/api/profiles?projectId=${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch profiles");return t.json()}async function Dhe(){const e=await fetch("/api/providers");if(!e.ok)throw new Error("Failed to fetch providers");return e.json()}const She=/^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*$/;function x6({open:e,onOpenChange:t,watcher:i}){const r=zs(),{toast:o}=ii(),{selectedProjectId:c}=Gi(),u=!!i,[l,d]=f.useState(N6),[h,g]=f.useState({}),{data:m}=st({queryKey:["agents",c],queryFn:()=>yhe(c),enabled:!!c&&e}),{data:y}=st({queryKey:["profiles",c],queryFn:()=>Ehe(c),enabled:!!c&&e}),{data:E}=st({queryKey:["providers"],queryFn:Dhe,enabled:e});f.useEffect(()=>{e&&(d(i?{name:i.name,description:i.description||"",enabled:i.enabled,scope:i.scope,scopeFilterId:i.scopeFilterId||"",pollIntervalMs:i.pollIntervalMs,viewportLines:i.viewportLines,conditionType:i.condition.type,conditionPattern:i.condition.pattern,conditionFlags:i.condition.flags||"",idleAfterSeconds:i.idleAfterSeconds??0,cooldownMode:i.cooldownMode,cooldownMs:i.cooldownMs,eventName:i.eventName}:N6),g({}))},[e,i]);const C=yt({mutationFn:P=>vhe(P),onSuccess:()=>{r.invalidateQueries({queryKey:["watchers",c]}),t(!1),o({title:"Success",description:"Watcher created successfully"})},onError:P=>{o({title:"Error",description:P instanceof Error?P.message:"Failed to create watcher",variant:"destructive"})}}),D=yt({mutationFn:({id:P,data:R})=>bhe(P,R),onSuccess:()=>{r.invalidateQueries({queryKey:["watchers",c]}),t(!1),o({title:"Success",description:"Watcher updated successfully"})},onError:P=>{o({title:"Error",description:P instanceof Error?P.message:"Failed to update watcher",variant:"destructive"})}}),b=C.isPending||D.isPending,w=()=>{const P={};if(l.name.trim()?l.name.length>100&&(P.name="Name must be 100 characters or less"):P.name="Name is required",l.scope!=="all"&&!l.scopeFilterId&&(P.scopeFilterId=`Please select a ${l.scope}`),(l.pollIntervalMs<1e3||l.pollIntervalMs>6e4)&&(P.pollIntervalMs="Poll interval must be between 1000ms and 60000ms"),(l.viewportLines<10||l.viewportLines>200)&&(P.viewportLines="Viewport lines must be between 10 and 200"),l.conditionPattern.trim()||(P.conditionPattern="Pattern is required"),l.conditionType==="regex")try{new RegExp(l.conditionPattern,l.conditionFlags)}catch{P.conditionPattern="Invalid regular expression"}return(l.idleAfterSeconds<0||l.idleAfterSeconds>3600)&&(P.idleAfterSeconds="Idle gate must be between 0 and 3600 seconds"),l.cooldownMs<0&&(P.cooldownMs="Cooldown must be 0 or greater"),l.eventName.trim()?She.test(l.eventName)||(P.eventName="Event name must be lowercase, start with letter, use dots for namespacing (e.g., watcher.error_detected)"):P.eventName="Event name is required",g(P),Object.keys(P).length===0},N=P=>{if(P.preventDefault(),!w())return;if(!c){o({title:"Error",description:"Please select a project first",variant:"destructive"});return}const R={type:l.conditionType,pattern:l.conditionPattern};if(l.conditionType==="regex"&&l.conditionFlags&&(R.flags=l.conditionFlags),u&&i){const k={name:l.name,description:l.description||null,enabled:l.enabled,scope:l.scope,scopeFilterId:l.scope==="all"?null:l.scopeFilterId,pollIntervalMs:l.pollIntervalMs,viewportLines:l.viewportLines,condition:R,idleAfterSeconds:l.idleAfterSeconds,cooldownMode:l.cooldownMode,cooldownMs:l.cooldownMs,eventName:l.eventName};D.mutate({id:i.id,data:k})}else{const k={projectId:c,name:l.name,description:l.description||void 0,enabled:l.enabled,scope:l.scope,scopeFilterId:l.scope==="all"?null:l.scopeFilterId,pollIntervalMs:l.pollIntervalMs,viewportLines:l.viewportLines,condition:R,idleAfterSeconds:l.idleAfterSeconds,cooldownMode:l.cooldownMode,cooldownMs:l.cooldownMs,eventName:l.eventName};C.mutate(k)}},x=(P,R)=>{d(k=>({...k,[P]:R})),h[P]&&g(k=>({...k,[P]:void 0}))},_=()=>{switch(l.scope){case"agent":return(m==null?void 0:m.items)||[];case"profile":return(y==null?void 0:y.items)||[];case"provider":return(E==null?void 0:E.items)||[];default:return[]}};return s.jsxDEV(Es,{open:e,onOpenChange:t,children:s.jsxDEV(xs,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:u?"Edit Watcher":"Create Watcher"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:344,columnNumber:11},this),s.jsxDEV(ls,{children:u?"Update the watcher configuration.":"Configure a new watcher to monitor terminal output."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:345,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:343,columnNumber:9},this),s.jsxDEV("form",{onSubmit:N,className:"space-y-6",children:[s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Basic Info"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:355,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"name",children:"Name *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:359,columnNumber:15},this),s.jsxDEV(Tt,{id:"name",value:l.name,onChange:P=>x("name",P.target.value),placeholder:"Error Detector",className:h.name?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:360,columnNumber:15},this),h.name&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:367,columnNumber:31},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:358,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"description",children:"Description"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:370,columnNumber:15},this),s.jsxDEV(ta,{id:"description",value:l.description,onChange:P=>x("description",P.target.value),placeholder:"Monitors for error messages in terminal output",rows:2},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:371,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:369,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:354,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Scope"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:383,columnNumber:13},this),s.jsxDEV("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{children:"Monitor"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:388,columnNumber:17},this),s.jsxDEV(Ls,{value:l.scope,onValueChange:P=>{x("scope",P),x("scopeFilterId","")},children:[s.jsxDEV(Ts,{children:s.jsxDEV($s,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:397,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:396,columnNumber:19},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"all",children:"All Sessions"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:400,columnNumber:21},this),s.jsxDEV(Pt,{value:"agent",children:"Specific Agent"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:401,columnNumber:21},this),s.jsxDEV(Pt,{value:"profile",children:"Specific Profile"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:402,columnNumber:21},this),s.jsxDEV(Pt,{value:"provider",children:"Specific Provider"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:403,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:399,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:389,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:387,columnNumber:15},this),l.scope!=="all"&&s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{children:["Select ",l.scope.charAt(0).toUpperCase()+l.scope.slice(1)," *"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:409,columnNumber:19},this),s.jsxDEV(Ls,{value:l.scopeFilterId,onValueChange:P=>x("scopeFilterId",P),children:[s.jsxDEV(Ts,{className:h.scopeFilterId?"border-destructive":"",children:s.jsxDEV($s,{placeholder:`Select ${l.scope}...`},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:417,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:416,columnNumber:21},this),s.jsxDEV(Rs,{children:_().map(P=>s.jsxDEV(Pt,{value:P.id,children:P.name},P.id,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:421,columnNumber:25},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:419,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:412,columnNumber:19},this),h.scopeFilterId&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.scopeFilterId},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:428,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:408,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:386,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:382,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Polling"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:437,columnNumber:13},this),s.jsxDEV("div",{className:"grid gap-4 grid-cols-2",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"pollInterval",children:"Poll Interval (ms) *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:442,columnNumber:17},this),s.jsxDEV(Tt,{id:"pollInterval",type:"number",min:1e3,max:6e4,step:1e3,value:l.pollIntervalMs,onChange:P=>x("pollIntervalMs",parseInt(P.target.value)||5e3),className:h.pollIntervalMs?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:443,columnNumber:17},this),h.pollIntervalMs&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.pollIntervalMs},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:454,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:441,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"viewportLines",children:"Viewport Lines *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:458,columnNumber:17},this),s.jsxDEV(Tt,{id:"viewportLines",type:"number",min:10,max:200,step:10,value:l.viewportLines,onChange:P=>x("viewportLines",parseInt(P.target.value)||50),className:h.viewportLines?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:459,columnNumber:17},this),h.viewportLines&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.viewportLines},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:470,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:457,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:440,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:436,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Trigger Condition"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:478,columnNumber:13},this),s.jsxDEV("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{children:"Condition Type"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:483,columnNumber:17},this),s.jsxDEV(Ls,{value:l.conditionType,onValueChange:P=>{x("conditionType",P),P!=="regex"&&x("conditionFlags","")},children:[s.jsxDEV(Ts,{children:s.jsxDEV($s,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:494,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:493,columnNumber:19},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"contains",children:"Contains"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:497,columnNumber:21},this),s.jsxDEV(Pt,{value:"regex",children:"Regex"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:498,columnNumber:21},this),s.jsxDEV(Pt,{value:"not_contains",children:"Not Contains"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:499,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:496,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:484,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:482,columnNumber:15},this),l.conditionType==="regex"&&s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"conditionFlags",children:"Regex Flags"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:505,columnNumber:19},this),s.jsxDEV(Tt,{id:"conditionFlags",value:l.conditionFlags,onChange:P=>x("conditionFlags",P.target.value),placeholder:"gi"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:506,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:504,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:481,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"conditionPattern",children:"Pattern *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:516,columnNumber:15},this),s.jsxDEV(Tt,{id:"conditionPattern",value:l.conditionPattern,onChange:P=>{x("conditionPattern",P.target.value)},placeholder:l.conditionType==="regex"?"error|exception|failed":"Error:",className:h.conditionPattern?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:517,columnNumber:15},this),h.conditionPattern&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.conditionPattern},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:529,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:515,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:477,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Cooldown"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:536,columnNumber:13},this),s.jsxDEV("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-3",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{children:"Cooldown Mode"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:541,columnNumber:17},this),s.jsxDEV(Ls,{value:l.cooldownMode,onValueChange:P=>x("cooldownMode",P),children:[s.jsxDEV(Ts,{children:s.jsxDEV($s,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:547,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:546,columnNumber:19},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"time",children:"Time-based"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:550,columnNumber:21},this),s.jsxDEV(Pt,{value:"until_clear",children:"Until Condition Clears"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:551,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:549,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:542,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:540,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"cooldownMs",children:"Cooldown (ms)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:556,columnNumber:17},this),s.jsxDEV(Tt,{id:"cooldownMs",type:"number",min:0,step:1e3,value:l.cooldownMs,onChange:P=>x("cooldownMs",parseInt(P.target.value)||0),className:h.cooldownMs?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:557,columnNumber:17},this),h.cooldownMs&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.cooldownMs},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:567,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:555,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"idleAfterSeconds",children:"Only when idle for (seconds)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:571,columnNumber:17},this),s.jsxDEV(Tt,{id:"idleAfterSeconds",type:"number",min:0,max:3600,step:1,value:l.idleAfterSeconds,onChange:P=>x("idleAfterSeconds",parseInt(P.target.value,10)||0),placeholder:"0 = disabled",className:h.idleAfterSeconds?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:572,columnNumber:17},this),h.idleAfterSeconds&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.idleAfterSeconds},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:586,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:570,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:539,columnNumber:13},this),l.idleAfterSeconds>0&&s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:'Recommended: use "Until Condition Clears" cooldown mode for idle-gated watchers.'},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:591,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:535,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Event Output"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:600,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"eventName",children:"Event Name *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:604,columnNumber:15},this),s.jsxDEV(Tt,{id:"eventName",value:l.eventName,onChange:P=>x("eventName",P.target.value),placeholder:"watcher.error_detected",className:h.eventName?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:605,columnNumber:15},this),h.eventName&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.eventName},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:612,columnNumber:36},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Lowercase with dots for namespacing (e.g., watcher.build_failed)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:613,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:603,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:599,columnNumber:11},this),s.jsxDEV("div",{className:"flex items-center space-x-2",children:[s.jsxDEV(Ra,{id:"enabled",checked:l.enabled,onCheckedChange:P=>x("enabled",P===!0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:621,columnNumber:13},this),s.jsxDEV(We,{htmlFor:"enabled",className:"cursor-pointer",children:"Enable watcher immediately"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:626,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:620,columnNumber:11},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{type:"button",variant:"outline",onClick:()=>t(!1),children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:632,columnNumber:13},this),s.jsxDEV(le,{type:"submit",disabled:b,children:[b&&s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:636,columnNumber:29},this),u?"Update":"Create"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:635,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:631,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:352,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:342,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatcherDialog.tsx",lineNumber:341,columnNumber:5},this)}function _he(){const e=zs(),{toast:t}=ii(),{selectedProjectId:i}=Gi(),[r,o]=f.useState(null),[c,u]=f.useState(null),[l,d]=f.useState(!1),[h,g]=f.useState(null),{data:m,isLoading:y,error:E}=st({queryKey:["watchers",i],queryFn:()=>ZM(i),enabled:!!i}),C=yt({mutationFn:({id:k,enabled:j})=>xhe(k,j),onMutate:async({id:k,enabled:j})=>{await e.cancelQueries({queryKey:["watchers",i]});const V=e.getQueryData(["watchers",i]);return e.setQueryData(["watchers",i],M=>M==null?void 0:M.map(F=>F.id===k?{...F,enabled:j}:F)),{previousWatchers:V}},onError:(k,j,V)=>{V!=null&&V.previousWatchers&&e.setQueryData(["watchers",i],V.previousWatchers),t({title:"Error",description:k instanceof Error?k.message:"Failed to toggle watcher",variant:"destructive"})},onSettled:()=>{e.invalidateQueries({queryKey:["watchers",i]})}}),D=yt({mutationFn:Nhe,onMutate:async k=>{await e.cancelQueries({queryKey:["watchers",i]});const j=e.getQueryData(["watchers",i]);return e.setQueryData(["watchers",i],V=>V==null?void 0:V.filter(M=>M.id!==k)),{previousWatchers:j}},onSuccess:()=>{o(null),t({title:"Success",description:"Watcher deleted successfully"})},onError:(k,j,V)=>{V!=null&&V.previousWatchers&&e.setQueryData(["watchers",i],V.previousWatchers),t({title:"Error",description:k instanceof Error?k.message:"Failed to delete watcher",variant:"destructive"})},onSettled:()=>{e.invalidateQueries({queryKey:["watchers",i]})}}),b=yt({mutationFn:whe,onSuccess:k=>{const j=k.results.filter(V=>V.conditionMatched).length;j>0?t({title:"Test Complete",description:`Condition matched in ${j} of ${k.sessionsChecked} sessions`}):t({title:"Test Complete",description:`No matches found in ${k.sessionsChecked} sessions`}),u(k)},onError:k=>{t({title:"Test Failed",description:k instanceof Error?k.message:"Failed to test watcher",variant:"destructive"})}}),w=()=>{g(null),d(!0)},N=k=>{g(k),d(!0)},x=k=>{d(k),k||g(null)},_=k=>k>=6e4?`${k/6e4}m`:`${k/1e3}s`,P=k=>{const{condition:j,idleAfterSeconds:V}=k,M=j.pattern.length>30?j.pattern.slice(0,30)+"...":j.pattern,F=`${ghe(j.type)}: ${M}`;return V>0?`Idle >= ${V}s + ${F}`:F},R=k=>k.scope==="all"?"All Sessions":k.scopeFilterId?`${k.scope.charAt(0).toUpperCase()+k.scope.slice(1)}: ${k.scopeFilterId.slice(0,8)}...`:k.scope.charAt(0).toUpperCase()+k.scope.slice(1);return y?s.jsxDEV(Ps,{children:s.jsxDEV(Fs,{className:"flex items-center justify-center py-12",children:[s.jsxDEV(ot,{className:"h-8 w-8 animate-spin text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:205,columnNumber:11},this),s.jsxDEV("span",{className:"ml-2 text-muted-foreground",children:"Loading watchers..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:206,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:204,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:203,columnNumber:7},this):E?s.jsxDEV(Ps,{children:s.jsxDEV(Fs,{className:"flex flex-col items-center justify-center py-12",children:[s.jsxDEV(si,{className:"h-8 w-8 text-destructive mb-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:217,columnNumber:11},this),s.jsxDEV("p",{className:"text-destructive",children:E instanceof Error?E.message:"Failed to load watchers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:218,columnNumber:11},this),s.jsxDEV(le,{variant:"outline",className:"mt-4",onClick:()=>e.invalidateQueries({queryKey:["watchers",i]}),children:"Retry"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:221,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:216,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:215,columnNumber:7},this):i?!m||m.length===0?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{children:[s.jsxDEV(vi,{children:"Watchers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:255,columnNumber:17},this),s.jsxDEV(Fi,{children:"Monitor terminal output and trigger events when conditions are met."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:256,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:254,columnNumber:15},this),s.jsxDEV(le,{onClick:w,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:261,columnNumber:17},this),"Add Watcher"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:260,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:253,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:252,columnNumber:11},this),s.jsxDEV(Fs,{className:"flex flex-col items-center justify-center py-12",children:[s.jsxDEV(WD,{className:"h-12 w-12 text-muted-foreground mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:267,columnNumber:13},this),s.jsxDEV("h3",{className:"text-lg font-semibold mb-2",children:"No watchers yet"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:268,columnNumber:13},this),s.jsxDEV("p",{className:"text-muted-foreground text-center max-w-md",children:"Create your first watcher to start monitoring terminal output and triggering automated actions."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:269,columnNumber:13},this),s.jsxDEV(le,{className:"mt-4",onClick:w,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:274,columnNumber:15},this),"Create Watcher"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:273,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:266,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:251,columnNumber:9},this),s.jsxDEV(x6,{open:l,onOpenChange:x,watcher:h},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:280,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:250,columnNumber:7},this):s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{children:[s.jsxDEV(vi,{children:"Watchers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:295,columnNumber:15},this),s.jsxDEV(Fi,{children:"Monitor terminal output and trigger events when conditions are met."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:296,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:294,columnNumber:13},this),s.jsxDEV(le,{onClick:w,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:301,columnNumber:15},this),"Add Watcher"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:300,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:293,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:292,columnNumber:9},this),s.jsxDEV(Fs,{children:s.jsxDEV("div",{className:"space-y-4",children:m.map(k=>s.jsxDEV("div",{className:"flex items-start justify-between p-4 border rounded-lg",children:[s.jsxDEV("div",{className:"flex-1 min-w-0",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-1",children:[s.jsxDEV("h4",{className:"font-semibold truncate",children:k.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:315,columnNumber:21},this),s.jsxDEV(Je,{variant:k.enabled?"default":"secondary",children:k.enabled?"Enabled":"Disabled"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:316,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:314,columnNumber:19},this),k.description&&s.jsxDEV("p",{className:"text-sm text-muted-foreground mb-2 line-clamp-2",children:k.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:321,columnNumber:21},this),s.jsxDEV("div",{className:"flex flex-wrap gap-2 text-xs",children:[s.jsxDEV(Je,{variant:"outline",children:R(k)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:326,columnNumber:21},this),s.jsxDEV(Je,{variant:"outline",children:["Poll: ",_(k.pollIntervalMs)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:327,columnNumber:21},this),s.jsxDEV(Je,{variant:"outline",className:"max-w-[200px] truncate",children:P(k)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:330,columnNumber:21},this),s.jsxDEV(Je,{variant:"secondary",children:k.eventName},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:333,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:325,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:313,columnNumber:17},this),s.jsxDEV("div",{className:"flex items-center gap-2 ml-4",children:[s.jsxDEV(Yn,{checked:k.enabled,onCheckedChange:j=>C.mutate({id:k.id,enabled:j}),disabled:C.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:337,columnNumber:19},this),s.jsxDEV(le,{variant:"outline",size:"sm",onClick:()=>b.mutate(k.id),disabled:b.isPending,children:[b.isPending&&b.variables===k.id?s.jsxDEV(ot,{className:"h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:351,columnNumber:23},this):s.jsxDEV(gf,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:353,columnNumber:23},this),s.jsxDEV("span",{className:"ml-1",children:"Test"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:355,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:344,columnNumber:19},this),s.jsxDEV(O0,{children:[s.jsxDEV(I0,{asChild:!0,children:s.jsxDEV(le,{variant:"ghost",size:"sm",children:s.jsxDEV(m0,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:360,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:359,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:358,columnNumber:21},this),s.jsxDEV(lg,{align:"end",children:[s.jsxDEV(Dl,{onClick:()=>N(k),children:[s.jsxDEV(Oc,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:365,columnNumber:25},this),"Edit"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:364,columnNumber:23},this),s.jsxDEV(Z2,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:368,columnNumber:23},this),s.jsxDEV(Dl,{className:"text-destructive",onClick:()=>o(k.id),children:[s.jsxDEV(er,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:373,columnNumber:25},this),"Delete"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:369,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:363,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:357,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:336,columnNumber:17},this)]},k.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:309,columnNumber:15},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:307,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:306,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:291,columnNumber:7},this),s.jsxDEV(Es,{open:!!r,onOpenChange:()=>o(null),children:s.jsxDEV(xs,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Delete Watcher"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:389,columnNumber:13},this),s.jsxDEV(ls,{children:"Are you sure you want to delete this watcher? This action cannot be undone."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:390,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:388,columnNumber:11},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:()=>o(null),children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:395,columnNumber:13},this),s.jsxDEV(le,{variant:"destructive",onClick:()=>r&&D.mutate(r),disabled:D.isPending,children:[D.isPending?s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:403,columnNumber:43},this):null,"Delete"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:398,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:394,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:387,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:386,columnNumber:7},this),s.jsxDEV(Es,{open:!!c,onOpenChange:()=>u(null),children:s.jsxDEV(xs,{className:"max-w-2xl",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:["Test Results: ",c==null?void 0:c.watcher.name]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:414,columnNumber:13},this),s.jsxDEV(ls,{children:["Checked ",c==null?void 0:c.sessionsChecked," session",(c==null?void 0:c.sessionsChecked)!==1?"s":""]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:415,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:413,columnNumber:11},this),s.jsxDEV("div",{className:"max-h-[400px] overflow-y-auto",children:(c==null?void 0:c.results.length)===0?s.jsxDEV("p",{className:"text-muted-foreground text-center py-4",children:"No active sessions to test"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:422,columnNumber:15},this):s.jsxDEV("div",{className:"space-y-2",children:c==null?void 0:c.results.map((k,j)=>s.jsxDEV("div",{className:`p-3 rounded-lg border ${k.conditionMatched?"border-green-500 bg-green-500/10":"border-muted"}`,children:[s.jsxDEV("div",{className:"flex items-center justify-between mb-2",children:[s.jsxDEV("span",{className:"font-mono text-sm",children:["Session: ",k.sessionId.slice(0,8),"..."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:433,columnNumber:23},this),s.jsxDEV(Je,{variant:k.conditionMatched?"default":"secondary",children:k.conditionMatched?"Matched":"No Match"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:436,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:432,columnNumber:21},this),k.viewport&&s.jsxDEV("pre",{className:"text-xs bg-muted p-2 rounded overflow-x-auto max-h-[100px]",children:[k.viewport.slice(0,500),k.viewport.length>500?"...":""]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:441,columnNumber:23},this)]},j,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:426,columnNumber:19},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:424,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:420,columnNumber:11},this),s.jsxDEV(Ds,{children:s.jsxDEV(le,{onClick:()=>u(null),children:"Close"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:452,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:451,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:412,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:411,columnNumber:7},this),s.jsxDEV(x6,{open:l,onOpenChange:x,watcher:h},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:458,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:290,columnNumber:5},this):s.jsxDEV(Ps,{children:s.jsxDEV(Fs,{className:"flex flex-col items-center justify-center py-12",children:[s.jsxDEV(WD,{className:"h-8 w-8 text-muted-foreground mb-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:240,columnNumber:11},this),s.jsxDEV("p",{className:"text-muted-foreground",children:"Please select a project to view watchers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:241,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:239,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/WatchersTab.tsx",lineNumber:238,columnNumber:7},this)}async function eL(){const e=await fetch("/api/subscribers/events");if(!e.ok)throw new Error("Failed to fetch subscribable events");return(await e.json()).events}async function Che(e){const t=new URLSearchParams({projectId:e}),i=await fetch(`/api/subscribers?${t.toString()}`);if(!i.ok)throw new Error("Failed to fetch subscribers");return i.json()}async function jhe(e){const t=await fetch("/api/subscribers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const i=await t.json().catch(()=>({message:"Failed to create subscriber"}));throw new Error(i.message||"Failed to create subscriber")}return t.json()}async function tL(e,t){const i=await fetch(`/api/subscribers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok){const r=await i.json().catch(()=>({message:"Failed to update subscriber"}));throw new Error(r.message||"Failed to update subscriber")}return i.json()}async function Phe(e){if(!(await fetch(`/api/subscribers/${e}`,{method:"DELETE"})).ok)throw new Error("Failed to delete subscriber")}async function khe(e,t){const i=await fetch(`/api/subscribers/${e}/toggle`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:t})});if(!i.ok)throw new Error("Failed to toggle subscriber");return i.json()}async function Vhe(){const e=await fetch("/api/actions");if(!e.ok)throw new Error("Failed to fetch actions");return e.json()}function The(e){return e==="string"||e==="textarea"}function Rhe(e){const t=e.allowedSources;return!t||t.length===0?!1:t.length===1&&t[0]==="custom"}function Ahe({inputDef:e,value:t,onChange:i,availableEventFields:r,error:o}){const c=t.source||"custom",u=h=>{i({source:h,customValue:h==="custom"?t.customValue||"":void 0,eventField:h==="event_field"?t.eventField||"":void 0})},l=h=>{i({source:"custom",customValue:h,eventField:void 0})},d=h=>{i({source:"event_field",customValue:void 0,eventField:h})};return The(e.type)?s.jsxDEV("div",{className:"space-y-2 p-3 border rounded-lg",children:[s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"font-medium",children:[e.label,e.required&&s.jsxDEV("span",{className:"text-destructive ml-1",children:"*"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:87,columnNumber:35},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:85,columnNumber:11},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:e.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:89,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:84,columnNumber:9},this),s.jsxDEV(Mhe,{inputDef:e,value:t.customValue||"",onChange:l,availableEventFields:r,error:o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:91,columnNumber:9},this),o&&s.jsxDEV("p",{className:"text-sm text-destructive",children:o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:98,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:83,columnNumber:7},this):Rhe(e)?s.jsxDEV("div",{className:"space-y-2 p-3 border rounded-lg",children:[s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"font-medium",children:[e.label,e.required&&s.jsxDEV("span",{className:"text-destructive ml-1",children:"*"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:110,columnNumber:35},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:108,columnNumber:11},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:e.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:112,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:107,columnNumber:9},this),s.jsxDEV(w6,{inputDef:e,value:t.customValue||"",onChange:l,error:o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:114,columnNumber:9},this),o&&s.jsxDEV("p",{className:"text-sm text-destructive",children:o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:120,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:106,columnNumber:7},this):s.jsxDEV("div",{className:"space-y-2 p-3 border rounded-lg",children:[s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{children:[s.jsxDEV(We,{className:"font-medium",children:[e.label,e.required&&s.jsxDEV("span",{className:"text-destructive ml-1",children:"*"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:132,columnNumber:35},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:130,columnNumber:11},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:e.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:134,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:129,columnNumber:9},this),s.jsxDEV("div",{className:"flex gap-1",children:[s.jsxDEV("button",{type:"button",onClick:()=>u("custom"),className:`px-2 py-1 text-xs rounded transition-colors ${c==="custom"?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground hover:bg-muted/80"}`,children:"Custom"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:137,columnNumber:11},this),s.jsxDEV("button",{type:"button",onClick:()=>u("event_field"),className:`px-2 py-1 text-xs rounded transition-colors ${c==="event_field"?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground hover:bg-muted/80"}`,children:"Event Field"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:148,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:136,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:128,columnNumber:7},this),c==="custom"?s.jsxDEV(w6,{inputDef:e,value:t.customValue||"",onChange:l,error:o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:163,columnNumber:9},this):s.jsxDEV(Lhe,{value:t.eventField||"",onChange:d,availableEventFields:r,error:o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:170,columnNumber:9},this),o&&s.jsxDEV("p",{className:"text-sm text-destructive",children:o},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:178,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:127,columnNumber:5},this)}function Mhe({inputDef:e,value:t,onChange:i,availableEventFields:r,error:o}){var m;const c=f.useRef(null),[u,l]=f.useState(""),d=((m=e.defaultValue)==null?void 0:m.toString())||`Enter ${e.label.toLowerCase()}...`,h=e.type==="textarea"||e.name.toLowerCase().includes("message")||e.name.toLowerCase().includes("text")||e.name.toLowerCase().includes("content"),g=()=>{if(!u||!c.current)return;const y=c.current,E=y.selectionStart??t.length,C=y.selectionEnd??t.length,D=`{{${u}}}`,b=t.slice(0,E)+D+t.slice(C);i(b),setTimeout(()=>{if(c.current){const w=E+D.length;c.current.setSelectionRange(w,w),c.current.focus()}},0)};return s.jsxDEV("div",{className:"space-y-2",children:[h?s.jsxDEV(ta,{ref:c,value:t,onChange:y=>i(y.target.value),placeholder:d,rows:3,className:o?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:239,columnNumber:9},this):s.jsxDEV(Tt,{ref:c,type:"text",value:t,onChange:y=>i(y.target.value),placeholder:d,className:o?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:248,columnNumber:9},this),r.length>0&&s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Ls,{value:u,onValueChange:l,children:[s.jsxDEV(Ts,{className:"flex-1 h-8 text-xs",children:s.jsxDEV($s,{placeholder:"Select variable..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:262,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:261,columnNumber:13},this),s.jsxDEV(Rs,{children:r.map(y=>s.jsxDEV(Pt,{value:y.field,children:[s.jsxDEV("span",{className:"font-mono text-xs",children:`{{${y.field}}}`},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:267,columnNumber:19},this),s.jsxDEV("span",{className:"ml-2 text-muted-foreground",children:y.label},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:268,columnNumber:19},this)]},y.field,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:266,columnNumber:17},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:264,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:260,columnNumber:11},this),s.jsxDEV(le,{type:"button",variant:"outline",size:"sm",onClick:g,disabled:!u,className:"h-8 text-xs",children:"Insert"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:273,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:259,columnNumber:9},this),r.length>0&&s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:["Use ",s.jsxDEV("code",{className:"bg-muted px-1 rounded",children:"{{field}}"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:288,columnNumber:15},this)," syntax to insert event values"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:287,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:237,columnNumber:5},this)}function w6({inputDef:e,value:t,onChange:i,error:r}){var o,c,u;switch(e.type){case"number":return s.jsxDEV(Tt,{type:"number",value:t,onChange:l=>i(l.target.value),placeholder:((o=e.defaultValue)==null?void 0:o.toString())||"0",className:r?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:311,columnNumber:9},this);case"boolean":return s.jsxDEV("div",{className:"flex items-center space-x-2",children:[s.jsxDEV(Ra,{id:`input-${e.name}`,checked:t==="true",onCheckedChange:l=>i(l?"true":"false")},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:323,columnNumber:11},this),s.jsxDEV(We,{htmlFor:`input-${e.name}`,className:"cursor-pointer",children:e.defaultValue===!0?"Enabled by default":"Enable"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:328,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:322,columnNumber:9},this);case"select":return s.jsxDEV(Ls,{value:t,onValueChange:i,children:[s.jsxDEV(Ts,{className:r?"border-destructive":"",children:s.jsxDEV($s,{placeholder:`Select ${e.label.toLowerCase()}...`},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:338,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:337,columnNumber:11},this),s.jsxDEV(Rs,{children:(c=e.options)==null?void 0:c.map(l=>s.jsxDEV(Pt,{value:l.value,children:l.label},l.value,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:342,columnNumber:15},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:340,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:336,columnNumber:9},this);default:return s.jsxDEV(Tt,{type:"text",value:t,onChange:l=>i(l.target.value),placeholder:((u=e.defaultValue)==null?void 0:u.toString())||"",className:r?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:353,columnNumber:9},this)}}function Lhe({value:e,onChange:t,availableEventFields:i,error:r}){return i.length===0?s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(Tt,{type:"text",value:e,onChange:o=>t(o.target.value),placeholder:"Enter event field name...",className:r?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:380,columnNumber:9},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"No predefined event fields available. Enter a custom field name."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:387,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:379,columnNumber:7},this):s.jsxDEV(Ls,{value:e,onValueChange:t,children:[s.jsxDEV(Ts,{className:r?"border-destructive":"",children:s.jsxDEV($s,{placeholder:"Select event field..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:397,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:396,columnNumber:7},this),s.jsxDEV(Rs,{children:i.map(o=>s.jsxDEV(Pt,{value:o.field,children:o.label},o.field,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:401,columnNumber:11},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:399,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/InputSourceSelector.tsx",lineNumber:395,columnNumber:5},this)}function Ohe({action:e,values:t,onChange:i,availableEventFields:r=[],errors:o}){if(!e||e.inputs.length===0)return s.jsxDEV("div",{className:"text-sm text-muted-foreground text-center py-4",children:e?"This action has no configurable inputs.":"Select an action to configure inputs."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/ActionInputsForm.tsx",lineNumber:24,columnNumber:7},this);const c=(l,d)=>{i({...t,[l]:d})},u=l=>t[l]||{source:"custom",customValue:""};return s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-2",children:[s.jsxDEV(Je,{variant:"outline",children:e.category},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/ActionInputsForm.tsx",lineNumber:46,columnNumber:9},this),s.jsxDEV("span",{className:"text-sm text-muted-foreground",children:e.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/ActionInputsForm.tsx",lineNumber:47,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/ActionInputsForm.tsx",lineNumber:45,columnNumber:7},this),e.inputs.map(l=>s.jsxDEV(Ahe,{inputDef:l,value:u(l.name),onChange:d=>c(l.name,d),availableEventFields:r,error:o==null?void 0:o[l.name]},l.name,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/ActionInputsForm.tsx",lineNumber:50,columnNumber:9},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/ActionInputsForm.tsx",lineNumber:44,columnNumber:5},this)}function Wb(e,t,i){const r=t?new Set(t.inputs.map(u=>u.name)):null;let o=!1;const c={};for(const[u,l]of Object.entries(i)){if(r&&!r.has(u)){o=!0;continue}if(e==="restart_agent"&&u==="agentId"){o=!0;continue}c[u]=l}return o?c:i}const y6={name:"",description:"",enabled:!0,eventName:"",hasFilter:!1,filterField:"",filterOperator:"equals",filterValue:"",actionType:"",actionInputs:{},delayMs:0,cooldownMs:5e3,retryOnError:!1,groupName:"",priority:0,position:0};function E6({open:e,onOpenChange:t,subscriber:i}){const r=zs(),{toast:o}=ii(),{selectedProjectId:c}=Gi(),u=!!i,[l,d]=f.useState(y6),[h,g]=f.useState({}),[m,y]=f.useState({}),{data:E}=st({queryKey:["subscribableEvents"],queryFn:eL,enabled:e}),{data:C}=st({queryKey:["watchers",c],queryFn:()=>ZM(c),enabled:!!c&&e}),{data:D,isLoading:b}=st({queryKey:["actions"],queryFn:Vhe,enabled:e}),w=(D==null?void 0:D.find(I=>I.type===l.actionType))||null;f.useEffect(()=>{var I,A,O;e&&(d(i?{name:i.name,description:i.description||"",enabled:i.enabled,eventName:i.eventName,hasFilter:!!i.eventFilter,filterField:((I=i.eventFilter)==null?void 0:I.field)||"",filterOperator:((A=i.eventFilter)==null?void 0:A.operator)||"equals",filterValue:((O=i.eventFilter)==null?void 0:O.value)||"",actionType:i.actionType,actionInputs:Wb(i.actionType,null,i.actionInputs||{}),delayMs:i.delayMs,cooldownMs:i.cooldownMs,retryOnError:i.retryOnError,groupName:i.groupName||"",priority:i.priority??0,position:i.position??0}:y6),g({}),y({}))},[e,i]),f.useEffect(()=>{if(!l.actionType||!e)return;const I=Wb(l.actionType,w,l.actionInputs);I!==l.actionInputs&&(k("actionInputs",I),y(A=>{const O={...A};for(const K of Object.keys(A))K in I||delete O[K];return O}))},[e,l.actionType,w]),f.useEffect(()=>{var Y;if(!l.eventName||!E)return;const I=E.find(H=>H.name===l.eventName),A=I?I.fields:((Y=E.find(H=>H.name==="terminal.watcher.triggered"))==null?void 0:Y.fields)||[],O=new Set(A.map(H=>H.field));if(O.size===0)return;let K=!1;const q={...l.actionInputs};for(const[H,L]of Object.entries(q))L.source==="event_field"&&L.eventField&&(O.has(L.eventField)||(q[H]={source:"event_field",eventField:"",customValue:void 0},K=!0));K&&d(H=>({...H,actionInputs:q}))},[l.eventName,l.actionInputs,E]);const N=yt({mutationFn:I=>jhe(I),onSuccess:()=>{r.invalidateQueries({queryKey:["subscribers",c]}),t(!1),o({title:"Success",description:"Subscriber created successfully"})},onError:I=>{o({title:"Error",description:I instanceof Error?I.message:"Failed to create subscriber",variant:"destructive"})}}),x=yt({mutationFn:({id:I,data:A})=>tL(I,A),onSuccess:()=>{r.invalidateQueries({queryKey:["subscribers",c]}),t(!1),o({title:"Success",description:"Subscriber updated successfully"})},onError:I=>{o({title:"Error",description:I instanceof Error?I.message:"Failed to update subscriber",variant:"destructive"})}}),_=N.isPending||x.isPending,P=()=>{var O,K;const I={},A={};if(l.name.trim()?l.name.length>100&&(I.name="Name must be 100 characters or less"):I.name="Name is required",l.eventName.trim()||(I.eventName="Event name is required"),l.hasFilter&&(l.filterField.trim()||(I.filterField="Filter field is required"),l.filterValue.trim()||(I.filterValue="Filter value is required")),l.actionType||(I.actionType="Action type is required"),w){for(const q of w.inputs)if(q.required){const Y=l.actionInputs[q.name];Y?Y.source==="custom"&&!((O=Y.customValue)!=null&&O.trim())?A[q.name]=`${q.label} is required`:Y.source==="event_field"&&!((K=Y.eventField)!=null&&K.trim())&&(A[q.name]=`Please select an event field for ${q.label}`):A[q.name]=`${q.label} is required`}}return l.delayMs<0&&(I.delayMs="Delay must be 0 or greater"),l.cooldownMs<0&&(I.cooldownMs="Cooldown must be 0 or greater"),g(I),y(A),Object.keys(I).length===0&&Object.keys(A).length===0},R=I=>{if(I.preventDefault(),!P())return;if(!c){o({title:"Error",description:"Please select a project first",variant:"destructive"});return}const A=l.hasFilter?{field:l.filterField,operator:l.filterOperator,value:l.filterValue}:null;if(u&&i){const O=Wb(l.actionType,w,l.actionInputs),K={name:l.name,description:l.description||null,enabled:l.enabled,eventName:l.eventName,eventFilter:A,actionType:l.actionType,actionInputs:O,delayMs:l.delayMs,cooldownMs:l.cooldownMs,retryOnError:l.retryOnError,groupName:l.groupName||null,priority:l.priority,position:l.position};x.mutate({id:i.id,data:K})}else{const O=Wb(l.actionType,w,l.actionInputs),K={projectId:c,name:l.name,description:l.description||void 0,enabled:l.enabled,eventName:l.eventName,eventFilter:A,actionType:l.actionType,actionInputs:O,delayMs:l.delayMs,cooldownMs:l.cooldownMs,retryOnError:l.retryOnError,groupName:l.groupName||null,priority:l.priority,position:l.position};N.mutate(K)}},k=(I,A)=>{d(O=>({...O,[I]:A})),h[I]&&g(O=>({...O,[I]:void 0}))},j=[...new Set((C==null?void 0:C.map(I=>I.eventName))||[])],V=E==null?void 0:E.reduce((I,A)=>(I[A.category]||(I[A.category]=[]),I[A.category].push(A),I),{}),F=(()=>{if(!l.eventName||!E)return[];const I=E.find(O=>O.name===l.eventName);if(I)return I.fields;const A=E.find(O=>O.name==="terminal.watcher.triggered");return(A==null?void 0:A.fields)||[]})();return s.jsxDEV(Es,{open:e,onOpenChange:t,children:s.jsxDEV(xs,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:u?"Edit Subscriber":"Create Subscriber"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:458,columnNumber:11},this),s.jsxDEV(ls,{children:u?"Update the subscriber configuration.":"Configure a new subscriber to react to events."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:459,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:457,columnNumber:9},this),s.jsxDEV("form",{onSubmit:R,className:"space-y-6",children:[s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Basic Info"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:469,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"name",children:"Name *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:473,columnNumber:15},this),s.jsxDEV(Tt,{id:"name",value:l.name,onChange:I=>k("name",I.target.value),placeholder:"Error Handler",className:h.name?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:474,columnNumber:15},this),h.name&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:481,columnNumber:31},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:472,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"description",children:"Description"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:484,columnNumber:15},this),s.jsxDEV(ta,{id:"description",value:l.description,onChange:I=>k("description",I.target.value),placeholder:"Handles error events by sending a message",rows:2},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:485,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:483,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:468,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Event Trigger"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:497,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"eventName",children:"Event Name *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:501,columnNumber:15},this),s.jsxDEV(Ls,{value:l.eventName,onValueChange:I=>k("eventName",I),children:[s.jsxDEV(Ts,{className:h.eventName?"border-destructive":"",children:s.jsxDEV($s,{placeholder:"Select event type..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:507,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:506,columnNumber:17},this),s.jsxDEV(Rs,{children:[V&&Object.entries(V).map(([I,A])=>s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"px-2 py-1.5 text-xs font-semibold text-muted-foreground uppercase",children:I},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:514,columnNumber:25},this),A.map(O=>s.jsxDEV(Pt,{value:O.name,children:O.label},O.name,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:518,columnNumber:27},this))]},I,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:513,columnNumber:23},this)),j.length>0&&s.jsxDEV(s.Fragment,{children:[s.jsxDEV("div",{className:"px-2 py-1.5 text-xs font-semibold text-muted-foreground uppercase border-t mt-1 pt-2",children:"Watcher Custom Events"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:527,columnNumber:23},this),j.map(I=>s.jsxDEV(Pt,{value:I,children:I},I,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:531,columnNumber:25},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:526,columnNumber:21},this),l.eventName&&!(E!=null&&E.find(I=>I.name===l.eventName))&&!j.includes(l.eventName)&&s.jsxDEV(Pt,{value:l.eventName,children:[l.eventName," (custom)"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:541,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:509,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:502,columnNumber:15},this),h.eventName&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.eventName},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:547,columnNumber:36},this),s.jsxDEV(Tt,{placeholder:"Or enter custom event name...",value:l.eventName,onChange:I=>k("eventName",I.target.value),className:"mt-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:548,columnNumber:15},this),F.length>0&&s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:["Available fields: ",F.map(I=>I.field).join(", ")]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:555,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:500,columnNumber:13},this),s.jsxDEV("div",{className:"flex items-center space-x-2",children:[s.jsxDEV(Ra,{id:"hasFilter",checked:l.hasFilter,onCheckedChange:I=>k("hasFilter",I===!0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:562,columnNumber:15},this),s.jsxDEV(We,{htmlFor:"hasFilter",className:"cursor-pointer",children:"Add event filter"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:567,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:561,columnNumber:13},this),l.hasFilter&&s.jsxDEV("div",{className:"grid grid-cols-3 gap-2 p-3 border rounded-lg",children:[s.jsxDEV("div",{className:"space-y-1",children:[s.jsxDEV(We,{className:"text-xs",children:"Field"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:575,columnNumber:19},this),s.jsxDEV(Tt,{value:l.filterField,onChange:I=>k("filterField",I.target.value),placeholder:"sessionId",className:h.filterField?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:576,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:574,columnNumber:17},this),s.jsxDEV("div",{className:"space-y-1",children:[s.jsxDEV(We,{className:"text-xs",children:"Operator"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:584,columnNumber:19},this),s.jsxDEV(Ls,{value:l.filterOperator,onValueChange:I=>k("filterOperator",I),children:[s.jsxDEV(Ts,{children:s.jsxDEV($s,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:590,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:589,columnNumber:21},this),s.jsxDEV(Rs,{children:[s.jsxDEV(Pt,{value:"equals",children:"Equals"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:593,columnNumber:23},this),s.jsxDEV(Pt,{value:"contains",children:"Contains"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:594,columnNumber:23},this),s.jsxDEV(Pt,{value:"regex",children:"Regex"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:595,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:592,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:585,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:583,columnNumber:17},this),s.jsxDEV("div",{className:"space-y-1",children:[s.jsxDEV(We,{className:"text-xs",children:"Value"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:600,columnNumber:19},this),s.jsxDEV(Tt,{value:l.filterValue,onChange:I=>k("filterValue",I.target.value),placeholder:"value",className:h.filterValue?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:601,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:599,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:573,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:496,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Action"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:614,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{children:"Action Type *"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:618,columnNumber:15},this),b?s.jsxDEV("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[s.jsxDEV(ot,{className:"h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:621,columnNumber:19},this),"Loading actions..."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:620,columnNumber:17},this):s.jsxDEV(Ls,{value:l.actionType,onValueChange:I=>{k("actionType",I),k("actionInputs",{})},children:[s.jsxDEV(Ts,{className:h.actionType?"border-destructive":"",children:s.jsxDEV($s,{placeholder:"Select action..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:634,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:633,columnNumber:19},this),s.jsxDEV(Rs,{children:D==null?void 0:D.map(I=>s.jsxDEV(Pt,{value:I.type,children:I.name},I.type,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:638,columnNumber:23},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:636,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:625,columnNumber:17},this),h.actionType&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.actionType},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:645,columnNumber:37},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:617,columnNumber:13},this),l.actionType&&s.jsxDEV(Ohe,{action:w,values:l.actionInputs,onChange:I=>k("actionInputs",I),availableEventFields:F,errors:m},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:649,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:613,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Execution Options"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:661,columnNumber:13},this),s.jsxDEV("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"delayMs",children:"Delay Before Action (ms)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:666,columnNumber:17},this),s.jsxDEV(Tt,{id:"delayMs",type:"number",min:0,step:100,value:l.delayMs,onChange:I=>k("delayMs",parseInt(I.target.value)||0),className:h.delayMs?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:667,columnNumber:17},this),h.delayMs&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.delayMs},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:676,columnNumber:36},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:665,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"cooldownMs",children:"Cooldown (ms)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:679,columnNumber:17},this),s.jsxDEV(Tt,{id:"cooldownMs",type:"number",min:0,step:1e3,value:l.cooldownMs,onChange:I=>k("cooldownMs",parseInt(I.target.value)||0),className:h.cooldownMs?"border-destructive":""},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:680,columnNumber:17},this),h.cooldownMs&&s.jsxDEV("p",{className:"text-sm text-destructive",children:h.cooldownMs},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:690,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:678,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:664,columnNumber:13},this),s.jsxDEV("div",{className:"flex items-center space-x-2",children:[s.jsxDEV(Ra,{id:"retryOnError",checked:l.retryOnError,onCheckedChange:I=>k("retryOnError",I===!0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:695,columnNumber:15},this),s.jsxDEV(We,{htmlFor:"retryOnError",className:"cursor-pointer",children:"Retry on error"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:700,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:694,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:660,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Scheduling & Ordering"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:708,columnNumber:13},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Delay schedules execution time. Priority and position break ties when multiple subscribers are due at the same time."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:711,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"groupName",children:"Group Name (optional)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:716,columnNumber:15},this),s.jsxDEV(Tt,{id:"groupName",value:l.groupName,onChange:I=>k("groupName",I.target.value),placeholder:"Leave empty to group by event name"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:717,columnNumber:15},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Subscribers in the same group are executed sequentially. Empty groups by event."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:723,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:715,columnNumber:13},this),s.jsxDEV("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"priority",children:"Priority"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:729,columnNumber:17},this),s.jsxDEV(Tt,{id:"priority",type:"number",min:-100,max:100,value:l.priority,onChange:I=>k("priority",parseInt(I.target.value)||0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:730,columnNumber:17},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Higher priority runs first (-100 to 100)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:738,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:728,columnNumber:15},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"position",children:"Position"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:743,columnNumber:17},this),s.jsxDEV(Tt,{id:"position",type:"number",min:0,value:l.position,onChange:I=>k("position",parseInt(I.target.value)||0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:744,columnNumber:17},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"Order within group when priority is equal"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:751,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:742,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:727,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:707,columnNumber:11},this),s.jsxDEV("div",{className:"flex items-center space-x-2",children:[s.jsxDEV(Ra,{id:"enabled",checked:l.enabled,onCheckedChange:I=>k("enabled",I===!0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:760,columnNumber:13},this),s.jsxDEV(We,{htmlFor:"enabled",className:"cursor-pointer",children:"Enable subscriber immediately"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:765,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:759,columnNumber:11},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{type:"button",variant:"outline",onClick:()=>t(!1),children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:771,columnNumber:13},this),s.jsxDEV(le,{type:"submit",disabled:_,children:[_&&s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:775,columnNumber:29},this),u?"Update":"Create"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:774,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:770,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:466,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:456,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscriberDialog.tsx",lineNumber:455,columnNumber:5},this)}function Ihe(){const e=zs(),{toast:t}=ii(),{selectedProjectId:i}=Gi(),[r,o]=f.useState(null),[c,u]=f.useState(!1),[l,d]=f.useState(null),{data:h,isLoading:g,error:m}=st({queryKey:["subscribers",i],queryFn:()=>Che(i),enabled:!!i}),{data:y}=st({queryKey:["subscribableEvents"],queryFn:eL}),E=f.useMemo(()=>{if(!h||h.length===0)return[];const j=new Map;y==null||y.forEach(F=>{j.set(F.name,F.label)});const V=new Map;for(const F of h){const I=F.groupName??`event:${F.eventName}`;V.has(I)||V.set(I,[]),V.get(I).push(F)}for(const F of V.values())F.sort((I,A)=>I.position!==A.position?I.position-A.position:I.createdAt.localeCompare(A.createdAt));const M=[];for(const[F,I]of V){let A;if(F.startsWith("event:")){const O=F.slice(6),K=j.get(O);A=K?`Event: ${K}`:`Event: ${O}`}else A=`Group: ${F}`;M.push({groupKey:F,label:A,subscribers:I})}return M.sort((F,I)=>F.label.localeCompare(I.label)),M},[h,y]),C=yt({mutationFn:({id:j,enabled:V})=>khe(j,V),onMutate:async({id:j,enabled:V})=>{await e.cancelQueries({queryKey:["subscribers",i]});const M=e.getQueryData(["subscribers",i]);return e.setQueryData(["subscribers",i],F=>F==null?void 0:F.map(I=>I.id===j?{...I,enabled:V}:I)),{previousSubscribers:M}},onError:(j,V,M)=>{M!=null&&M.previousSubscribers&&e.setQueryData(["subscribers",i],M.previousSubscribers),t({title:"Error",description:j instanceof Error?j.message:"Failed to toggle subscriber",variant:"destructive"})},onSettled:()=>{e.invalidateQueries({queryKey:["subscribers",i]})}}),D=yt({mutationFn:Phe,onMutate:async j=>{await e.cancelQueries({queryKey:["subscribers",i]});const V=e.getQueryData(["subscribers",i]);return e.setQueryData(["subscribers",i],M=>M==null?void 0:M.filter(F=>F.id!==j)),{previousSubscribers:V}},onSuccess:()=>{o(null),t({title:"Success",description:"Subscriber deleted successfully"})},onError:(j,V,M)=>{M!=null&&M.previousSubscribers&&e.setQueryData(["subscribers",i],M.previousSubscribers),t({title:"Error",description:j instanceof Error?j.message:"Failed to delete subscriber",variant:"destructive"})},onSettled:()=>{e.invalidateQueries({queryKey:["subscribers",i]})}}),b=yt({mutationFn:async({updates:j})=>{for(const V of j)await tL(V.id,{position:V.position})},onMutate:async({updates:j})=>{await e.cancelQueries({queryKey:["subscribers",i]});const V=e.getQueryData(["subscribers",i]);return e.setQueryData(["subscribers",i],M=>M==null?void 0:M.map(F=>{const I=j.find(A=>A.id===F.id);return I?{...F,position:I.position}:F})),{previousSubscribers:V}},onError:(j,V,M)=>{M!=null&&M.previousSubscribers&&e.setQueryData(["subscribers",i],M.previousSubscribers),t({title:"Error",description:j instanceof Error?j.message:"Failed to reorder subscriber",variant:"destructive"})},onSettled:()=>{e.invalidateQueries({queryKey:["subscribers",i]})}}),w=(j,V)=>{if(V===0)return;const M=j.subscribers,F=M[V],I=M[V-1],A=M.map(K=>K.position);if(new Set(A).size!==A.length){const K=new Map(M.map(H=>[H.id,H.position])),q=M.map((H,L)=>({id:H.id,position:L}));q[V].position=V-1,q[V-1].position=V;const Y=q.filter(H=>H.position!==K.get(H.id));b.mutate({updates:Y});return}b.mutate({updates:[{id:F.id,position:I.position},{id:I.id,position:F.position}]})},N=(j,V)=>{if(V===j.subscribers.length-1)return;const M=j.subscribers,F=M[V],I=M[V+1],A=M.map(K=>K.position);if(new Set(A).size!==A.length){const K=new Map(M.map(H=>[H.id,H.position])),q=M.map((H,L)=>({id:H.id,position:L}));q[V].position=V+1,q[V+1].position=V;const Y=q.filter(H=>H.position!==K.get(H.id));b.mutate({updates:Y});return}b.mutate({updates:[{id:F.id,position:I.position},{id:I.id,position:F.position}]})},x=()=>{d(null),u(!0)},_=j=>{d(j),u(!0)},P=j=>{u(j),j||d(null)},R=j=>{const V=j.actionInputs;if(!V)return null;for(const[M,F]of Object.entries(V)){if(F.source==="custom"&&F.customValue){const I=F.customValue;return I.length>50?`${M}: ${I.slice(0,50)}...`:`${M}: ${I}`}if(F.source==="event_field"&&F.eventField)return`${M}: {${F.eventField}}`}return null},k=j=>j.split("_").map(V=>V.charAt(0).toUpperCase()+V.slice(1)).join(" ");return g?s.jsxDEV(Ps,{children:s.jsxDEV(Fs,{className:"flex items-center justify-center py-12",children:[s.jsxDEV(ot,{className:"h-8 w-8 animate-spin text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:352,columnNumber:11},this),s.jsxDEV("span",{className:"ml-2 text-muted-foreground",children:"Loading subscribers..."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:353,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:351,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:350,columnNumber:7},this):m?s.jsxDEV(Ps,{children:s.jsxDEV(Fs,{className:"flex flex-col items-center justify-center py-12",children:[s.jsxDEV(si,{className:"h-8 w-8 text-destructive mb-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:364,columnNumber:11},this),s.jsxDEV("p",{className:"text-destructive",children:m instanceof Error?m.message:"Failed to load subscribers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:365,columnNumber:11},this),s.jsxDEV(le,{variant:"outline",className:"mt-4",onClick:()=>e.invalidateQueries({queryKey:["subscribers",i]}),children:"Retry"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:368,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:363,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:362,columnNumber:7},this):i?!h||h.length===0?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{children:[s.jsxDEV(vi,{children:"Subscribers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:402,columnNumber:17},this),s.jsxDEV(Fi,{children:"React to events by executing automated actions."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:403,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:401,columnNumber:15},this),s.jsxDEV(le,{onClick:x,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:406,columnNumber:17},this),"Add Subscriber"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:405,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:400,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:399,columnNumber:11},this),s.jsxDEV(Fs,{className:"flex flex-col items-center justify-center py-12",children:[s.jsxDEV(UD,{className:"h-12 w-12 text-muted-foreground mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:412,columnNumber:13},this),s.jsxDEV("h3",{className:"text-lg font-semibold mb-2",children:"No subscribers yet"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:413,columnNumber:13},this),s.jsxDEV("p",{className:"text-muted-foreground text-center max-w-md",children:"Create your first subscriber to start reacting to events with automated actions."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:414,columnNumber:13},this),s.jsxDEV(le,{className:"mt-4",onClick:x,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:418,columnNumber:15},this),"Create Subscriber"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:417,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:411,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:398,columnNumber:9},this),s.jsxDEV(E6,{open:c,onOpenChange:P,subscriber:l},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:424,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:397,columnNumber:7},this):s.jsxDEV(Ir,{children:[s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{children:[s.jsxDEV(vi,{children:"Subscribers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:439,columnNumber:15},this),s.jsxDEV(Fi,{children:"React to events by executing automated actions. Delay schedules execution time; priority/position break ties when multiple subscribers are due at the same time."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:440,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:438,columnNumber:13},this),s.jsxDEV(le,{onClick:x,children:[s.jsxDEV(qi,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:446,columnNumber:15},this),"Add Subscriber"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:445,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:437,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:436,columnNumber:9},this),s.jsxDEV(Fs,{children:s.jsxDEV("div",{className:"space-y-6",children:E.map(j=>s.jsxDEV("div",{className:"space-y-3",children:[s.jsxDEV("div",{className:"flex items-center gap-2 pb-2 border-b",children:[s.jsxDEV("h3",{className:"text-sm font-semibold text-muted-foreground",children:j.label},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:457,columnNumber:19},this),s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:j.subscribers.length},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:458,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:456,columnNumber:17},this),s.jsxDEV("div",{className:"space-y-3",children:j.subscribers.map((V,M)=>s.jsxDEV("div",{className:"flex items-start justify-between p-4 border rounded-lg",children:[s.jsxDEV("div",{className:"flex flex-col gap-0.5 mr-3",children:[s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV(le,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:()=>w(j,M),disabled:M===0||b.isPending,children:s.jsxDEV(Gf,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:481,columnNumber:31},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:474,columnNumber:29},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:473,columnNumber:27},this),s.jsxDEV(Zi,{children:"Move up"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:484,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:472,columnNumber:25},this),s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV(le,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:()=>N(j,M),disabled:M===j.subscribers.length-1||b.isPending,children:s.jsxDEV(Fr,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:497,columnNumber:31},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:488,columnNumber:29},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:487,columnNumber:27},this),s.jsxDEV(Zi,{children:"Move down"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:500,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:486,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:471,columnNumber:23},this),s.jsxDEV("div",{className:"flex-1 min-w-0",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-1",children:[s.jsxDEV("h4",{className:"font-semibold truncate",children:V.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:506,columnNumber:27},this),s.jsxDEV(Je,{variant:V.enabled?"default":"secondary",children:V.enabled?"Enabled":"Disabled"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:507,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:505,columnNumber:25},this),V.description&&s.jsxDEV("p",{className:"text-sm text-muted-foreground mb-2 line-clamp-2",children:V.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:512,columnNumber:27},this),s.jsxDEV("div",{className:"flex flex-wrap gap-2 text-xs mb-2",children:[s.jsxDEV(Je,{variant:"outline",children:["Listens to: ",V.eventName]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:517,columnNumber:27},this),s.jsxDEV(Je,{variant:"secondary",children:k(V.actionType)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:518,columnNumber:27},this),V.delayMs>0&&s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV(Je,{variant:"outline",children:["Delay: ",V.delayMs,"ms"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:524,columnNumber:33},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:523,columnNumber:31},this),s.jsxDEV(Zi,{children:["Schedules execution ",V.delayMs,"ms after event"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:526,columnNumber:31},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:522,columnNumber:29},this),V.priority!==0&&s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV(Je,{variant:"outline",children:["Priority: ",V.priority]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:534,columnNumber:33},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:533,columnNumber:31},this),s.jsxDEV(Zi,{children:"Higher priority runs first when multiple are due at same time"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:536,columnNumber:31},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:532,columnNumber:29},this),s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV(Je,{variant:"outline",children:["Position: ",V.position]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:543,columnNumber:31},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:542,columnNumber:29},this),s.jsxDEV(Zi,{children:"Order within group when priority is equal"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:545,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:541,columnNumber:27},this),V.retryOnError&&s.jsxDEV(Je,{variant:"outline",children:"Retry on error"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:550,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:516,columnNumber:25},this),R(V)&&s.jsxDEV("p",{className:"text-xs text-muted-foreground font-mono bg-muted px-2 py-1 rounded truncate max-w-md",children:R(V)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:554,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:504,columnNumber:23},this),s.jsxDEV("div",{className:"flex items-center gap-2 ml-4",children:[s.jsxDEV(Yn,{checked:V.enabled,onCheckedChange:F=>C.mutate({id:V.id,enabled:F}),disabled:C.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:560,columnNumber:25},this),s.jsxDEV(O0,{children:[s.jsxDEV(I0,{asChild:!0,children:s.jsxDEV(le,{variant:"ghost",size:"sm",children:s.jsxDEV(m0,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:570,columnNumber:31},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:569,columnNumber:29},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:568,columnNumber:27},this),s.jsxDEV(lg,{align:"end",children:[s.jsxDEV(Dl,{onClick:()=>_(V),children:[s.jsxDEV(Oc,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:575,columnNumber:31},this),"Edit"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:574,columnNumber:29},this),s.jsxDEV(Z2,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:578,columnNumber:29},this),s.jsxDEV(Dl,{className:"text-destructive",onClick:()=>o(V.id),children:[s.jsxDEV(er,{className:"h-4 w-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:583,columnNumber:31},this),"Delete"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:579,columnNumber:29},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:573,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:567,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:559,columnNumber:23},this)]},V.id,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:466,columnNumber:21},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:464,columnNumber:17},this)]},j.groupKey,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:454,columnNumber:15},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:452,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:451,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:435,columnNumber:7},this),s.jsxDEV(Es,{open:!!r,onOpenChange:()=>o(null),children:s.jsxDEV(xs,{children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{children:"Delete Subscriber"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:602,columnNumber:13},this),s.jsxDEV(ls,{children:"Are you sure you want to delete this subscriber? This action cannot be undone."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:603,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:601,columnNumber:11},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:()=>o(null),children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:608,columnNumber:13},this),s.jsxDEV(le,{variant:"destructive",onClick:()=>r&&D.mutate(r),disabled:D.isPending,children:[D.isPending?s.jsxDEV(ot,{className:"h-4 w-4 mr-2 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:616,columnNumber:43},this):null,"Delete"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:611,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:607,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:600,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:599,columnNumber:7},this),s.jsxDEV(E6,{open:c,onOpenChange:P,subscriber:l},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:624,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:434,columnNumber:5},this):s.jsxDEV(Ps,{children:s.jsxDEV(Fs,{className:"flex flex-col items-center justify-center py-12",children:[s.jsxDEV(UD,{className:"h-8 w-8 text-muted-foreground mb-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:387,columnNumber:11},this),s.jsxDEV("p",{className:"text-muted-foreground",children:"Please select a project to view subscribers"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:388,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:386,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/components/automation/SubscribersTab.tsx",lineNumber:385,columnNumber:7},this)}function Fhe(){const[e,t]=f.useState("watchers");return s.jsxDEV("div",{className:"container py-6",children:[s.jsxDEV("div",{className:"flex items-center justify-between mb-6",children:s.jsxDEV("h1",{className:"text-2xl font-bold",children:"Automation"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:15,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:14,columnNumber:7},this),s.jsxDEV(B0,{value:e,onValueChange:i=>t(i),children:[s.jsxDEV(cg,{children:[s.jsxDEV(Sl,{value:"watchers",children:[s.jsxDEV(WD,{className:"w-4 h-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:21,columnNumber:13},this),"Watchers"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:20,columnNumber:11},this),s.jsxDEV(Sl,{value:"subscribers",children:[s.jsxDEV(UD,{className:"w-4 h-4 mr-2"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:25,columnNumber:13},this),"Subscribers"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:24,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:19,columnNumber:9},this),s.jsxDEV(Hu,{value:"watchers",children:s.jsxDEV(_he,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:31,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:30,columnNumber:9},this),s.jsxDEV(Hu,{value:"subscribers",children:s.jsxDEV(Ihe,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:34,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:33,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:18,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/AutomationPage.tsx",lineNumber:13,columnNumber:5},this)}const Bhe=f.lazy(()=>YS(()=>import("./ReviewDetailPage-CvHhaFJw.js"),__vite__mapDeps([3,1,2])).then(e=>({default:e.ReviewDetailPage})));function $he(){return s.jsxDEV("div",{className:"flex flex-col h-full",children:[s.jsxDEV("div",{className:"border-b p-4 bg-card",children:s.jsxDEV("div",{className:"flex items-center gap-4",children:[s.jsxDEV(Kt,{className:"h-9 w-9"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:37,columnNumber:11},this),s.jsxDEV("div",{className:"flex-1",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-2",children:[s.jsxDEV(Kt,{className:"h-6 w-48"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:40,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-5 w-20"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:41,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:39,columnNumber:13},this),s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Kt,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:44,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-4 w-40"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:45,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:43,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:38,columnNumber:11},this),s.jsxDEV(Kt,{className:"h-4 w-16"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:48,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:36,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:35,columnNumber:7},this),s.jsxDEV("div",{className:"flex-1 flex min-h-0",children:[s.jsxDEV("div",{className:"w-64 border-r bg-card p-3 space-y-2",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-3",children:[s.jsxDEV(Kt,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:57,columnNumber:13},this),s.jsxDEV(Kt,{className:"h-4 w-12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:58,columnNumber:13},this),s.jsxDEV(Kt,{className:"h-5 w-6"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:59,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:56,columnNumber:11},this),Array.from({length:8}).map((e,t)=>s.jsxDEV(Kt,{className:"h-8 w-full"},t,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:62,columnNumber:13},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:55,columnNumber:9},this),s.jsxDEV("div",{className:"flex-1 min-w-0 bg-background p-4",children:s.jsxDEV("div",{className:"space-y-3",children:[s.jsxDEV("div",{className:"flex items-center gap-2 mb-4",children:[s.jsxDEV(Kt,{className:"h-5 w-48"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:70,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-5 w-12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:71,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-5 w-12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:72,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:69,columnNumber:13},this),Array.from({length:12}).map((e,t)=>s.jsxDEV(Kt,{className:"h-6 w-full",style:{width:`${60+Math.random()*40}%`}},t,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:75,columnNumber:15},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:68,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:67,columnNumber:9},this),s.jsxDEV("div",{className:"w-80 border-l bg-card p-4 space-y-3",children:[s.jsxDEV(Kt,{className:"h-5 w-24 mb-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:86,columnNumber:11},this),Array.from({length:4}).map((e,t)=>s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Kt,{className:"h-6 w-6 rounded-full"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:90,columnNumber:17},this),s.jsxDEV(Kt,{className:"h-4 w-20"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:91,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:89,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-16 w-full"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:93,columnNumber:15},this)]},t,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:88,columnNumber:13},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:85,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:53,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:33,columnNumber:5},this)}function zhe(){return s.jsxDEV(f.Suspense,{fallback:s.jsxDEV($he,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:108,columnNumber:25},this),children:s.jsxDEV(Bhe,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:109,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/ReviewDetailPage.lazy.tsx",lineNumber:108,columnNumber:5},this)}function Uhe(){return s.jsxDEV("div",{className:"flex min-h-[60vh] flex-col items-center justify-center text-center",children:s.jsxDEV("div",{className:"space-y-4",children:[s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV("h1",{className:"text-9xl font-bold text-muted-foreground",children:"404"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:10,columnNumber:11},this),s.jsxDEV("h2",{className:"text-3xl font-bold",children:"Page Not Found"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:11,columnNumber:11},this),s.jsxDEV("p",{className:"text-muted-foreground max-w-md",children:"The page you're looking for doesn't exist or has been moved."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:12,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:9,columnNumber:9},this),s.jsxDEV("div",{className:"flex items-center justify-center gap-3 pt-4",children:[s.jsxDEV(le,{variant:"outline",asChild:!0,children:s.jsxDEV(So,{to:"/",children:[s.jsxDEV(Dee,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:20,columnNumber:15},this),"Go Home"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:19,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:18,columnNumber:11},this),s.jsxDEV(le,{variant:"default",onClick:()=>window.history.back(),children:[s.jsxDEV(p0,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:25,columnNumber:13},this),"Go Back"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:24,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:17,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:8,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/NotFoundPage.tsx",lineNumber:7,columnNumber:5},this)}function Whe(){const e=Dr();return s.jsxDEV("div",{className:"flex min-h-[60vh] flex-col items-center justify-center px-4 text-center",children:s.jsxDEV("div",{className:"max-w-xl space-y-6 rounded-lg border bg-card p-8 shadow-sm",children:[s.jsxDEV("div",{className:"mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-muted",children:s.jsxDEV(AV,{className:"h-6 w-6 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:12,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:11,columnNumber:9},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV("h1",{className:"text-2xl font-semibold",children:"Documents is currently disabled"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:16,columnNumber:11},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"The Documents feature is temporarily hidden while we prepare the release. Existing documents remain intact and will return when the feature is re-enabled."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:17,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:15,columnNumber:9},this),s.jsxDEV("div",{className:"flex flex-col items-center gap-3 sm:flex-row sm:justify-center",children:[s.jsxDEV(le,{asChild:!0,children:s.jsxDEV(So,{to:"/projects",children:[s.jsxDEV(f0,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:26,columnNumber:15},this),"Go to Projects"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:25,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:24,columnNumber:11},this),s.jsxDEV(le,{variant:"outline",onClick:()=>e(-1),children:[s.jsxDEV(p0,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:31,columnNumber:13},this),"Go Back"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:30,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:23,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:10,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/DocumentsDisabledPage.tsx",lineNumber:9,columnNumber:5},this)}function Hhe(){const e=Dr();return s.jsxDEV("div",{className:"flex min-h-[60vh] flex-col items-center justify-center px-4 text-center",children:s.jsxDEV("div",{className:"max-w-xl space-y-6 rounded-lg border bg-card p-8 shadow-sm",children:[s.jsxDEV("div",{className:"mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-muted",children:s.jsxDEV(AV,{className:"h-6 w-6 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:12,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:11,columnNumber:9},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV("h1",{className:"text-2xl font-semibold",children:"Records is currently disabled"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:16,columnNumber:11},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"The Records feature is hidden for this release. Existing records remain intact and will return when the feature is re-enabled."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:17,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:15,columnNumber:9},this),s.jsxDEV("div",{className:"flex flex-col items-center gap-3 sm:flex-row sm:justify-center",children:[s.jsxDEV(le,{asChild:!0,children:s.jsxDEV(So,{to:"/projects",children:[s.jsxDEV(f0,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:26,columnNumber:15},this),"Go to Projects"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:25,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:24,columnNumber:11},this),s.jsxDEV(le,{variant:"outline",onClick:()=>e(-1),children:[s.jsxDEV(p0,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:31,columnNumber:13},this),"Go Back"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:30,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:23,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:10,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RecordsDisabledPage.tsx",lineNumber:9,columnNumber:5},this)}function qhe({template:e,onSelect:t}){return s.jsxDEV(Ps,{className:"cursor-pointer transition-colors hover:border-primary",onClick:()=>t(e.slug),children:[s.jsxDEV(mi,{className:"pb-3",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(vi,{className:"text-lg",children:e.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:32,columnNumber:11},this),e.isOfficial&&s.jsxDEV(Je,{variant:"secondary",className:"gap-1",children:[s.jsxDEV(Or,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:35,columnNumber:15},this),"Official"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:34,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:31,columnNumber:9},this),s.jsxDEV(Fi,{className:"line-clamp-2",children:e.description||"No description available"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:40,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:30,columnNumber:7},this),s.jsxDEV(Fs,{children:[s.jsxDEV("div",{className:"mb-3 flex flex-wrap gap-1",children:[e.tags.slice(0,3).map(i=>s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:i},i,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:47,columnNumber:13},this)),e.tags.length>3&&s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:["+",e.tags.length-3]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:52,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:45,columnNumber:9},this),s.jsxDEV("div",{className:"flex items-center justify-between text-sm text-muted-foreground",children:[s.jsxDEV("span",{children:["v",e.latestVersion||"0.0.0"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:58,columnNumber:11},this),e.totalDownloads!=null&&s.jsxDEV("span",{className:"flex items-center gap-1",children:[s.jsxDEV(Mu,{className:"h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:61,columnNumber:15},this),e.totalDownloads.toLocaleString()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:60,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:57,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:44,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateCard.tsx",lineNumber:26,columnNumber:5},this)}function Khe({templates:e,onSelect:t}){return e.length===0?s.jsxDEV("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[s.jsxDEV("p",{className:"text-lg font-medium text-muted-foreground",children:"No templates found"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:14,columnNumber:9},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Try adjusting your search or filters"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:15,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:13,columnNumber:7},this):s.jsxDEV("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:e.map(i=>s.jsxDEV(qhe,{template:i,onSelect:t},i.slug,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:23,columnNumber:9},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:21,columnNumber:5},this)}function Ghe(){return s.jsxDEV("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:Array.from({length:6}).map((e,t)=>s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{className:"pb-3",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Kt,{className:"h-6 w-32"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:36,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-5 w-16"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:37,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:35,columnNumber:13},this),s.jsxDEV(Kt,{className:"mt-2 h-4 w-full"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:39,columnNumber:13},this),s.jsxDEV(Kt,{className:"mt-1 h-4 w-3/4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:40,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:34,columnNumber:11},this),s.jsxDEV(Fs,{children:[s.jsxDEV("div",{className:"mb-3 flex gap-1",children:[s.jsxDEV(Kt,{className:"h-5 w-12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:44,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-5 w-14"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:45,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-5 w-10"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:46,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:43,columnNumber:13},this),s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV(Kt,{className:"h-4 w-16"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:49,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-4 w-12"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:50,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:48,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:42,columnNumber:11},this)]},t,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:33,columnNumber:9},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateGrid.tsx",lineNumber:31,columnNumber:5},this)}var Yhe=Symbol.for("react.lazy"),UN=PS[" use ".trim().toString()];function Qhe(e){return typeof e=="object"&&e!==null&&"then"in e}function sL(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===Yhe&&"_payload"in e&&Qhe(e._payload)}function Xhe(e){const t=Jhe(e),i=f.forwardRef((r,o)=>{let{children:c,...u}=r;sL(c)&&typeof UN=="function"&&(c=UN(c._payload));const l=f.Children.toArray(c),d=l.find(eme);if(d){const h=d.props.children,g=l.map(m=>m===d?f.Children.count(h)>1?f.Children.only(null):f.isValidElement(h)?h.props.children:null:m);return ae.jsx(t,{...u,ref:o,children:f.isValidElement(h)?f.cloneElement(h,void 0,g):null})}return ae.jsx(t,{...u,ref:o,children:c})});return i.displayName=`${e}.Slot`,i}function Jhe(e){const t=f.forwardRef((i,r)=>{let{children:o,...c}=i;if(sL(o)&&typeof UN=="function"&&(o=UN(o._payload)),f.isValidElement(o)){const u=sme(o),l=tme(c,o.props);return o.type!==f.Fragment&&(l.ref=r?Bf(r,u):u),f.cloneElement(o,l)}return f.Children.count(o)>1?f.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Zhe=Symbol("radix.slottable");function eme(e){return f.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Zhe}function tme(e,t){const i={...t};for(const r in t){const o=e[r],c=t[r];/^on[A-Z]/.test(r)?o&&c?i[r]=(...l)=>{const d=c(...l);return o(...l),d}:o&&(i[r]=o):r==="style"?i[r]={...o,...c}:r==="className"&&(i[r]=[o,c].filter(Boolean).join(" "))}return{...e,...i}}function sme(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,i=t&&"isReactWarning"in t&&t.isReactWarning;return i?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,i=t&&"isReactWarning"in t&&t.isReactWarning,i?e.props.ref:e.props.ref||e.ref)}var ime=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],ame=ime.reduce((e,t)=>{const i=Xhe(`Primitive.${t}`),r=f.forwardRef((o,c)=>{const{asChild:u,...l}=o,d=u?i:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),ae.jsx(d,{...l,ref:c})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),rme=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),nme="VisuallyHidden",uN=f.forwardRef((e,t)=>ae.jsx(ame.span,{...e,ref:t,style:{...rme,...e.style}}));uN.displayName=nme;async function ome(e){const t=await fetch(`/api/registry/cache/${encodeURIComponent(e)}/versions`);if(!t.ok)throw new Error("Failed to fetch cached versions");return t.json()}async function lme(e,t){const i=await fetch(`/api/registry/download/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{method:"POST"});if(!i.ok)throw new Error("Failed to download template");return i.json()}async function cme(){const e=await fetch("/health");if(!e.ok)return null;const t=await e.json();return(t==null?void 0:t.version)||null}function ume(e,t){if(!e||!t)return!0;try{return!_f(t,e)}catch{return!0}}function pme({versions:e,slug:t}){const i=zs(),[r,o]=f.useState(!1),{data:c}=st({queryKey:["registry-cache-versions",t],queryFn:()=>ome(t),enabled:!!t}),{data:u}=st({queryKey:["health"],queryFn:cme,staleTime:1/0}),l=new Set((c==null?void 0:c.versions)||[]),d=yt({mutationFn:({version:C})=>lme(t,C),onSuccess:()=>{i.invalidateQueries({queryKey:["registry-cache-versions",t]}),i.invalidateQueries({queryKey:["unified-templates"]}),i.invalidateQueries({queryKey:["templates-for-upgrade"]})}});if(!e||e.length===0)return s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"No versions available"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:101,columnNumber:12},this);const h=[...e].sort((C,D)=>new Date(D.publishedAt).getTime()-new Date(C.publishedAt).getTime()),g=h[0],m=h.slice(1),y=m.length>0,E=C=>{var N;const D=l.has(C.version),b=d.isPending&&((N=d.variables)==null?void 0:N.version)===C.version,w=ume(C.minDevchainVersion,u??null);return s.jsxDEV("div",{className:"rounded-lg border p-3",children:s.jsxDEV("div",{className:"flex items-center justify-between",children:[s.jsxDEV("div",{className:"flex-1",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV("span",{className:"font-mono font-medium",children:["v",C.version]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:125,columnNumber:15},this),C.isLatest&&s.jsxDEV(Je,{variant:"secondary",className:"text-xs",children:"Latest"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:127,columnNumber:17},this),!w&&C.minDevchainVersion&&s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV(Je,{variant:"outline",className:"gap-1 border-amber-500/50 bg-amber-500/10 text-amber-600 text-xs",children:[s.jsxDEV(Bi,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:138,columnNumber:23},this),"Incompatible"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:134,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:133,columnNumber:19},this),s.jsxDEV(Zi,{children:s.jsxDEV("p",{children:["Requires Devchain v",C.minDevchainVersion,"+",s.jsxDEV("br",{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:145,columnNumber:23},this),"Current: v",u]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:143,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:142,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:132,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:124,columnNumber:13},this),s.jsxDEV("div",{className:"mt-1 flex items-center gap-3 text-sm text-muted-foreground",children:[s.jsxDEV("span",{children:new Date(C.publishedAt).toLocaleDateString()},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:153,columnNumber:15},this),C.downloadCount!=null&&s.jsxDEV("span",{className:"flex items-center gap-1",children:[s.jsxDEV(Mu,{className:"h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:156,columnNumber:19},this),C.downloadCount.toLocaleString()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:155,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:152,columnNumber:13},this),C.changelog&&s.jsxDEV("p",{className:"mt-2 text-sm text-muted-foreground",children:C.changelog},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:162,columnNumber:15},this),C.minDevchainVersion&&w&&s.jsxDEV("p",{className:"mt-1 text-xs text-muted-foreground",children:["Requires Devchain v",C.minDevchainVersion,"+"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:165,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:123,columnNumber:11},this),s.jsxDEV("div",{className:"ml-4",children:D?s.jsxDEV(Je,{variant:"outline",className:"gap-1",children:[s.jsxDEV(th,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:175,columnNumber:17},this),"Downloaded"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:174,columnNumber:15},this):w?s.jsxDEV(le,{size:"sm",variant:"outline",onClick:()=>d.mutate({version:C.version}),disabled:b,children:b?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ot,{className:"mr-1 h-3.5 w-3.5 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:205,columnNumber:21},this),"Downloading"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:204,columnNumber:19},this):s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Mu,{className:"mr-1 h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:210,columnNumber:21},this),"Download"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:209,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:197,columnNumber:15},this):s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV("span",{children:s.jsxDEV(le,{size:"sm",variant:"outline",disabled:!0,children:[s.jsxDEV(Mu,{className:"mr-1 h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:183,columnNumber:23},this),"Download"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:182,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:181,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:180,columnNumber:17},this),s.jsxDEV(Zi,{children:s.jsxDEV("p",{children:["Requires Devchain v",C.minDevchainVersion,"+",s.jsxDEV("br",{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:191,columnNumber:21},this),"Current: v",u]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:189,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:188,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:179,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:172,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:122,columnNumber:9},this)},C.version,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:121,columnNumber:7},this)};return s.jsxDEV(Ir,{children:s.jsxDEV("div",{className:"space-y-3",children:[E(g),y&&s.jsxDEV(s.Fragment,{children:[s.jsxDEV(le,{variant:"ghost",size:"sm",className:"w-full text-muted-foreground hover:text-foreground",onClick:()=>o(!r),children:r?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Gf,{className:"mr-1 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:239,columnNumber:19},this),"Hide ",m.length," older version",m.length>1?"s":""]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:238,columnNumber:17},this):s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Fr,{className:"mr-1 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:244,columnNumber:19},this),"Show ",m.length," older version",m.length>1?"s":""]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:243,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:231,columnNumber:13},this),r&&m.map(E)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:230,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:224,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/VersionList.tsx",lineNumber:223,columnNumber:5},this)}async function dme(e){const t=await fetch("/api/registry/create-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const i=await t.json().catch(()=>({message:"Failed to create project"}));throw new Error(i.message||"Failed to create project")}return t.json()}function hme({slug:e,version:t,templateName:i,open:r,onClose:o}){const[c,u]=f.useState(""),[l,d]=f.useState(""),[h,g]=f.useState(""),[m,y]=f.useState(null),E=Dr(),C=zs(),{toast:D}=ii(),b=yt({mutationFn:dme,onSuccess:x=>{D({title:"Project Created",description:`${x.project.name} created from ${i}`}),C.invalidateQueries({queryKey:["projects"]}),o(),E("/projects")},onError:x=>{y(x.message)}}),w=()=>{if(y(null),!c.trim()){y("Project name is required");return}if(!h.trim()){y("Root path is required");return}b.mutate({slug:e,version:t,projectName:c.trim(),projectDescription:l.trim()||void 0,rootPath:h.trim()})},N=()=>{b.isPending||(u(""),d(""),g(""),y(null),o())};return s.jsxDEV(Es,{open:r,onOpenChange:x=>!x&&N(),children:s.jsxDEV(xs,{className:"sm:max-w-md",children:[s.jsxDEV(ds,{children:[s.jsxDEV(os,{className:"flex items-center gap-2",children:[s.jsxDEV(cee,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:135,columnNumber:13},this),"Create Project from Template"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:134,columnNumber:11},this),s.jsxDEV(ls,{children:["Using ",s.jsxDEV("span",{className:"font-medium",children:i},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:139,columnNumber:19},this)," v",t]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:138,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:133,columnNumber:9},this),s.jsxDEV("div",{className:"space-y-4 py-4",children:[m&&s.jsxDEV(Ti,{variant:"destructive",children:[s.jsxDEV(si,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:146,columnNumber:15},this),s.jsxDEV(Ri,{children:m},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:147,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:145,columnNumber:13},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"projectName",children:"Project Name"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:152,columnNumber:13},this),s.jsxDEV(Tt,{id:"projectName",value:c,onChange:x=>u(x.target.value),placeholder:"My New Project",disabled:b.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:153,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:151,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"projectDescription",children:"Description (optional)"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:163,columnNumber:13},this),s.jsxDEV(ta,{id:"projectDescription",value:l,onChange:x=>d(x.target.value),placeholder:"A brief description of your project",rows:2,disabled:b.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:164,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:162,columnNumber:11},this),s.jsxDEV("div",{className:"space-y-2",children:[s.jsxDEV(We,{htmlFor:"rootPath",children:"Root Path"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:175,columnNumber:13},this),s.jsxDEV(Tt,{id:"rootPath",value:h,onChange:x=>g(x.target.value),placeholder:"/path/to/project",disabled:b.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:176,columnNumber:13},this),s.jsxDEV("p",{className:"text-xs text-muted-foreground",children:"The directory where your project files are located"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:183,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:174,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:143,columnNumber:9},this),s.jsxDEV(Ds,{children:[s.jsxDEV(le,{variant:"outline",onClick:N,disabled:b.isPending,children:"Cancel"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:190,columnNumber:11},this),s.jsxDEV(le,{onClick:w,disabled:!c.trim()||!h.trim()||b.isPending,children:b.isPending?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ot,{className:"mr-2 h-4 w-4 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:199,columnNumber:17},this),"Creating..."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:198,columnNumber:15},this):"Create Project"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:193,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:189,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:132,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/CreateFromRegistryDialog.tsx",lineNumber:131,columnNumber:5},this)}async function mme(e){const t=await fetch(`/api/registry/templates/${encodeURIComponent(e)}`);if(!t.ok){if(t.status===404)return null;throw new Error("Failed to fetch template details")}return t.json()}async function fme(e){const t=await fetch(`/api/registry/projects/${encodeURIComponent(e)}`);if(!t.ok)throw new Error("Failed to fetch projects");return t.json()}async function gme(){const e=await fetch("/health");if(!e.ok)return null;const t=await e.json();return(t==null?void 0:t.version)||null}function vme(e,t){if(!e||!t)return!0;try{return!_f(t,e)}catch{return!0}}const D6=200;function bme({slug:e,onClose:t}){const[i,r]=f.useState(!1),[o,c]=f.useState(!1),[u,l]=f.useState(!1),{data:d,isLoading:h,error:g}=st({queryKey:["registry-template",e],queryFn:()=>mme(e),enabled:!!e}),{data:m}=st({queryKey:["registry-projects-using",e],queryFn:()=>fme(e),enabled:!!e}),{data:y}=st({queryKey:["health"],queryFn:gme,staleTime:1/0}),E=d==null?void 0:d.template,C=(d==null?void 0:d.versions)||[],D=C.find(x=>x.isLatest),b=(m==null?void 0:m.projects)||[],w=vme((D==null?void 0:D.minDevchainVersion)??null,y??null),N=x=>D?x!==D.version:!1;return s.jsxDEV(Es,{open:!!e,onOpenChange:x=>!x&&t(),children:s.jsxDEV(xs,{className:"max-h-[90vh] max-w-2xl overflow-hidden p-0",children:h?s.jsxDEV("div",{className:"p-6",children:[s.jsxDEV(uN,{children:[s.jsxDEV(os,{children:"Loading Template Details"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:171,columnNumber:15},this),s.jsxDEV(ls,{children:"Loading template metadata and version information."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:172,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:170,columnNumber:13},this),s.jsxDEV(Kt,{className:"mb-2 h-8 w-48"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:176,columnNumber:13},this),s.jsxDEV(Kt,{className:"mb-4 h-4 w-full"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:177,columnNumber:13},this),s.jsxDEV(Kt,{className:"h-32 w-full"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:178,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:169,columnNumber:11},this):g?s.jsxDEV("div",{className:"p-6",children:[s.jsxDEV(uN,{children:[s.jsxDEV(os,{children:"Error Loading Template"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:183,columnNumber:15},this),s.jsxDEV(ls,{children:"An error occurred while loading template details."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:184,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:182,columnNumber:13},this),s.jsxDEV("p",{className:"text-destructive",children:"Failed to load template details"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:188,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:181,columnNumber:11},this):E?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ds,{className:"border-b px-6 py-4",children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(os,{className:"text-lg",children:E.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:204,columnNumber:17},this),E.isOfficial&&s.jsxDEV(Je,{variant:"secondary",className:"gap-1 text-xs",children:[s.jsxDEV(Or,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:207,columnNumber:21},this),"Official"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:206,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:203,columnNumber:15},this),s.jsxDEV(ls,{className:"sr-only",children:"Template metadata, versions, and project usage details."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:212,columnNumber:15},this),E.description&&s.jsxDEV("div",{className:"mt-2",children:E.description.length>D6?s.jsxDEV("div",{children:[s.jsxDEV("p",{className:"whitespace-pre-line text-sm text-muted-foreground",children:o?E.description:`${E.description.slice(0,D6)}...`},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:220,columnNumber:23},this),s.jsxDEV(le,{variant:"link",size:"sm",className:"h-auto p-0 text-xs",onClick:()=>c(!o),children:o?"Show less":"Show more"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:225,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:219,columnNumber:21},this):s.jsxDEV("p",{className:"whitespace-pre-line text-sm text-muted-foreground",children:E.description},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:235,columnNumber:21},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:217,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:202,columnNumber:13},this),s.jsxDEV(xr,{className:"max-h-[55vh]",children:s.jsxDEV("div",{className:"space-y-4 px-6 py-4",children:[s.jsxDEV("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-2 text-sm text-muted-foreground",children:[E.authorName&&s.jsxDEV("span",{className:"flex items-center gap-1",children:[s.jsxDEV(Yu,{className:"h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:249,columnNumber:23},this),E.authorName]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:248,columnNumber:21},this),E.category&&s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:E.category},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:254,columnNumber:21},this),E.requiredProviders.length>0&&E.requiredProviders.map(x=>s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:x},x,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:260,columnNumber:23},this)),s.jsxDEV("span",{className:"flex items-center gap-1",children:[s.jsxDEV(jZ,{className:"h-3.5 w-3.5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:265,columnNumber:21},this),new Date(E.updatedAt).toLocaleDateString()]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:264,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:246,columnNumber:17},this),E.tags.length>0&&s.jsxDEV("div",{className:"flex flex-wrap items-center gap-1 text-sm",children:[s.jsxDEV("span",{className:"text-muted-foreground",children:"Tags:"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:273,columnNumber:21},this),E.tags.map(x=>s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:x},x,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:275,columnNumber:23},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:272,columnNumber:19},this),b.length>0&&s.jsxDEV(s.Fragment,{children:[s.jsxDEV(br,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:285,columnNumber:21},this),s.jsxDEV("div",{children:[s.jsxDEV(le,{variant:"ghost",size:"sm",className:"h-auto w-full justify-between p-0 font-medium hover:bg-transparent",onClick:()=>l(!u),children:[s.jsxDEV("span",{className:"text-sm",children:["Installed In (",b.length," project",b.length>1?"s":"",")"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:293,columnNumber:25},this),u?s.jsxDEV(Gf,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:298,columnNumber:27},this):s.jsxDEV(Fr,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:300,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:287,columnNumber:23},this),u&&s.jsxDEV("div",{className:"mt-2 space-y-1",children:b.map(x=>{const _=N(x.installedVersion),P=x.projectName||`ID: ${x.projectId.slice(0,8)}...`;return s.jsxDEV("div",{className:"flex items-center justify-between rounded-md border px-2 py-1.5 text-sm",title:`Project ID: ${x.projectId}`,children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Cl,{className:"h-3.5 w-3.5 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:316,columnNumber:35},this),s.jsxDEV("span",{children:P},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:317,columnNumber:35},this),s.jsxDEV(Je,{variant:"outline",className:"text-xs",children:["v",x.installedVersion]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:318,columnNumber:35},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:315,columnNumber:33},this),_&&s.jsxDEV(Je,{variant:"default",className:"gap-1 text-xs",children:[s.jsxDEV(si,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:324,columnNumber:37},this),"Update"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:323,columnNumber:35},this)]},x.projectId,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:310,columnNumber:31},this)})},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:304,columnNumber:25},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:286,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:284,columnNumber:19},this),s.jsxDEV(br,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:337,columnNumber:17},this),s.jsxDEV("div",{children:[s.jsxDEV("h4",{className:"mb-2 text-sm font-medium",children:"Versions"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:341,columnNumber:19},this),s.jsxDEV(pme,{versions:C,slug:e},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:342,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:340,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:244,columnNumber:15},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:243,columnNumber:13},this),s.jsxDEV("div",{className:"flex items-center justify-end gap-2 border-t p-4",children:[s.jsxDEV(le,{variant:"outline",onClick:t,children:"Close"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:349,columnNumber:15},this),s.jsxDEV(Ir,{children:!w&&(D!=null&&D.minDevchainVersion)?s.jsxDEV(aa,{children:[s.jsxDEV(ra,{asChild:!0,children:s.jsxDEV("span",{children:s.jsxDEV(le,{disabled:!0,children:[s.jsxDEV(Bi,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:358,columnNumber:27},this),"Incompatible Version"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:357,columnNumber:25},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:356,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:355,columnNumber:21},this),s.jsxDEV(Zi,{children:s.jsxDEV("p",{children:["Requires Devchain v",D.minDevchainVersion,"+",s.jsxDEV("br",{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:366,columnNumber:25},this),"Current: v",y]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:364,columnNumber:23},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:363,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:354,columnNumber:19},this):s.jsxDEV(le,{onClick:()=>r(!0),disabled:!D,children:[s.jsxDEV(qi,{className:"mr-2 h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:373,columnNumber:21},this),"Create New Project"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:372,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:352,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:348,columnNumber:13},this),D&&s.jsxDEV(hme,{slug:e,version:D.version,templateName:E.name,open:i,onClose:()=>r(!1)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:382,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:201,columnNumber:11},this):s.jsxDEV("div",{className:"p-6",children:[s.jsxDEV(uN,{children:[s.jsxDEV(os,{children:"Template Not Found"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:193,columnNumber:15},this),s.jsxDEV(ls,{children:"The requested template could not be found in the registry."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:194,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:192,columnNumber:13},this),s.jsxDEV("p",{className:"text-muted-foreground",children:"Template not found"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:198,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:191,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:167,columnNumber:7},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/TemplateDetailDrawer.tsx",lineNumber:166,columnNumber:5},this)}async function Nme(e){var o,c;const t=await fetch(`/api/registry/templates/${encodeURIComponent(e)}`);if(!t.ok)throw new Error(`Registry request failed: ${t.status}`);const i=await t.json();if(!i)return null;const r=((c=(o=i.versions)==null?void 0:o.find(u=>u.isLatest))==null?void 0:c.version)??null;return{slug:e,latestVersion:r}}async function xme(e){if(e.source==="registry"&&!e.latestVersion)return{status:"idle"};let t;try{t=await Nme(e.slug)}catch{return{status:"offline"}}if(!t)return{status:"not-in-registry"};if(!t.latestVersion)return{status:"not-in-registry"};if(e.source==="bundled"&&e.latestVersion)try{return _f(e.latestVersion,t.latestVersion)?{status:"update-available",remoteVersion:t.latestVersion}:{status:"up-to-date"}}catch{return{status:"up-to-date"}}if(e.source==="bundled")return{status:"update-available",remoteVersion:t.latestVersion};try{return _f(e.latestVersion,t.latestVersion)?{status:"update-available",remoteVersion:t.latestVersion}:{status:"up-to-date"}}catch{return{status:"up-to-date"}}}async function wme(e){if(e.length===0)return{};const t=await Promise.allSettled(e.map(async r=>{const o=await xme(r);return{slug:r.slug,status:o}})),i={};for(const r of t)r.status==="fulfilled"&&(i[r.value.slug]=r.value.status);return i}async function yme(){const e=await fetch("/api/templates");if(!e.ok)throw new Error("Failed to fetch templates");return e.json()}async function Eme(e,t){const i=await fetch(`/api/templates/${encodeURIComponent(e)}/versions/${encodeURIComponent(t)}`,{method:"DELETE"});if(!i.ok){const r=await i.json().catch(()=>({message:"Failed to delete version"}));throw new Error(r.message||"Failed to delete version")}}async function Dme(e,t){const i=await fetch(`/api/registry/download/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{method:"POST"});if(!i.ok){const r=await i.json().catch(()=>({message:"Failed to download template"}));throw new Error(r.message||"Failed to download template")}}function Sme({status:e,source:t,onDownload:i,isDownloading:r}){const o=t==="bundled";switch(e.status){case"checking":return s.jsxDEV(Je,{variant:"outline",className:"gap-1 text-muted-foreground",children:[s.jsxDEV(Yf,{className:"h-3 w-3 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:103,columnNumber:11},this),"Checking..."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:102,columnNumber:9},this);case"update-available":return s.jsxDEV(le,{size:"sm",variant:"default",className:"h-6 gap-1 bg-blue-600 hover:bg-blue-700 text-xs",onClick:c=>{c.stopPropagation(),i==null||i()},disabled:r,children:r?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ot,{className:"h-3 w-3 animate-spin"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:121,columnNumber:15},this),"Downloading..."]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:120,columnNumber:13},this):s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Mu,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:126,columnNumber:15},this),"Download v",e.remoteVersion]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:125,columnNumber:13},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:109,columnNumber:9},this);case"up-to-date":return s.jsxDEV(Je,{variant:"outline",className:"gap-1 text-green-600 border-green-600/50",children:[s.jsxDEV(Or,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:135,columnNumber:11},this),"Up to date"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:134,columnNumber:9},this);case"offline":return o?null:s.jsxDEV(Je,{variant:"outline",className:"gap-1 text-muted-foreground",children:[s.jsxDEV(si,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:146,columnNumber:11},this),"Offline"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:145,columnNumber:9},this);case"not-in-registry":return s.jsxDEV(Je,{variant:"outline",className:"gap-1 text-muted-foreground text-xs",children:"Not in registry"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:153,columnNumber:9},this);default:return null}}function _me({template:e,updateStatus:t,onRemoveVersion:i,deletingVersion:r,onDownload:o,isDownloading:c}){var C,D;const[u,l]=f.useState(!1),d=`template-versions-${e.slug}`,h=e.source==="bundled",g=e.versions&&e.versions.length>0,m=!h&&g,y=b=>{m&&(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),l(!u))},E=()=>{m&&l(!u)};return s.jsxDEV("div",{className:"rounded-lg border bg-card",children:[s.jsxDEV("div",{role:m?"button":void 0,tabIndex:m?0:void 0,className:`flex w-full items-center justify-between p-4 text-left ${m?"hover:bg-muted/50 cursor-pointer":""}`,onClick:E,onKeyDown:y,"aria-expanded":m?u:void 0,"aria-controls":m?d:void 0,children:[s.jsxDEV("div",{className:"flex items-center gap-3",children:[s.jsxDEV(Lu,{className:"h-5 w-5 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:215,columnNumber:11},this),s.jsxDEV("div",{children:[s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV("span",{className:"font-medium",children:e.name},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:218,columnNumber:15},this),s.jsxDEV(Je,{variant:h?"outline":"secondary",className:"text-xs",children:h?"Bundled":"Downloaded"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:219,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:217,columnNumber:13},this),s.jsxDEV("div",{className:"text-sm text-muted-foreground",children:h?"Built-in template":s.jsxDEV(s.Fragment,{children:[((C=e.versions)==null?void 0:C.length)||0," version",(((D=e.versions)==null?void 0:D.length)||0)!==1?"s":""," cached"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:227,columnNumber:17},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:223,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:216,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:214,columnNumber:9},this),s.jsxDEV("div",{className:"flex items-center gap-2",children:[s.jsxDEV(Sme,{status:t,source:e.source,onDownload:t.status==="update-available"?()=>o(e.slug,t.remoteVersion):void 0,isDownloading:c},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:236,columnNumber:11},this),e.latestVersion&&s.jsxDEV(Je,{variant:"secondary",children:["v",e.latestVersion]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:246,columnNumber:38},this),m&&(u?s.jsxDEV(Fr,{className:"h-4 w-4 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:249,columnNumber:15},this):s.jsxDEV(jc,{className:"h-4 w-4 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:251,columnNumber:15},this))]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:235,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:205,columnNumber:7},this),m&&u&&s.jsxDEV("div",{id:d,className:"border-t px-4 py-3",children:[s.jsxDEV("div",{className:"mb-2 text-sm font-medium text-muted-foreground",children:"Cached Versions"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:258,columnNumber:11},this),s.jsxDEV("div",{className:"flex flex-wrap gap-2",children:e.versions.map(b=>s.jsxDEV("div",{className:"flex items-center gap-1",children:[s.jsxDEV(Je,{variant:b===e.latestVersion?"default":"outline",className:"gap-1",children:[s.jsxDEV(Mu,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:266,columnNumber:19},this),"v",b]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:262,columnNumber:17},this),s.jsxDEV(le,{variant:"ghost",size:"icon",className:"h-5 w-5 text-muted-foreground hover:text-destructive",onClick:w=>{w.stopPropagation(),i(e.slug,b)},disabled:r===b,children:s.jsxDEV(jl,{className:"h-3 w-3"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:278,columnNumber:19},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:268,columnNumber:17},this)]},b,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:261,columnNumber:15},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:259,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:257,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:204,columnNumber:5},this)}function Cme(){return s.jsxDEV("div",{className:"space-y-3",children:[1,2,3].map(e=>s.jsxDEV("div",{className:"rounded-lg border p-4",children:s.jsxDEV("div",{className:"flex items-center gap-3",children:[s.jsxDEV(Kt,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:298,columnNumber:13},this),s.jsxDEV("div",{className:"flex-1",children:[s.jsxDEV(Kt,{className:"mb-2 h-4 w-32"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:300,columnNumber:15},this),s.jsxDEV(Kt,{className:"h-3 w-24"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:301,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:299,columnNumber:13},this),s.jsxDEV(Kt,{className:"h-5 w-16"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:303,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:297,columnNumber:11},this)},e,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:296,columnNumber:9},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:294,columnNumber:5},this)}function jme(){return s.jsxDEV("div",{className:"flex flex-col items-center justify-center rounded-lg border border-dashed p-8 text-center",children:[s.jsxDEV(Lu,{className:"mb-3 h-10 w-10 text-muted-foreground"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:317,columnNumber:7},this),s.jsxDEV("div",{className:"mb-1 font-medium",children:"No installed templates"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:318,columnNumber:7},this),s.jsxDEV("div",{className:"text-sm text-muted-foreground",children:"Download templates from the registry or add bundled templates"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:319,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:316,columnNumber:5},this)}function Pme(){const e=zs(),{toast:t}=ii(),{data:i,isLoading:r,error:o}=st({queryKey:["unified-templates"],queryFn:yme}),[c,u]=f.useState({}),[l,d]=f.useState(null),h=yt({mutationFn:({slug:w,version:N})=>Eme(w,N),onSuccess:()=>{e.invalidateQueries({queryKey:["unified-templates"]}),t({title:"Success",description:"Template version removed successfully"}),d(null)},onError:w=>{t({title:"Error",description:w instanceof Error?w.message:"Failed to remove version",variant:"destructive"}),d(null)}}),g=(w,N)=>{d({slug:w,version:N})},m=()=>{l&&h.mutate(l)},[y,E]=f.useState(null),C=yt({mutationFn:({slug:w,version:N})=>Dme(w,N),onMutate:({slug:w})=>{E(w)},onSuccess:(w,{slug:N,version:x})=>{e.invalidateQueries({queryKey:["unified-templates"]}),t({title:"Success",description:`Downloaded version ${x} successfully`}),E(null),u(_=>({..._,[N]:{status:"up-to-date"}}))},onError:w=>{t({title:"Error",description:w instanceof Error?w.message:"Failed to download template",variant:"destructive"}),E(null)}}),D=(w,N)=>{C.mutate({slug:w,version:N})},b=(i==null?void 0:i.templates)||[];return f.useEffect(()=>{if(b.length===0)return;const w={};b.forEach(x=>{w[x.slug]={status:"checking"}}),u(w),(async()=>{const x=await wme(b);u(x)})()},[i]),r?s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:s.jsxDEV(vi,{className:"flex items-center gap-2",children:[s.jsxDEV(Lu,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:442,columnNumber:13},this),"Installed Templates"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:441,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:440,columnNumber:9},this),s.jsxDEV(Fs,{children:s.jsxDEV(Cme,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:447,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:446,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:439,columnNumber:7},this):o?s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:s.jsxDEV(vi,{className:"flex items-center gap-2",children:[s.jsxDEV(Lu,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:458,columnNumber:13},this),"Installed Templates"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:457,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:456,columnNumber:9},this),s.jsxDEV(Fs,{children:s.jsxDEV("div",{className:"rounded-lg border border-destructive/50 bg-destructive/10 p-4 text-center text-sm text-destructive",children:"Failed to load templates. Please try again later."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:463,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:462,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:455,columnNumber:7},this):s.jsxDEV(Ps,{children:[s.jsxDEV(mi,{children:s.jsxDEV(vi,{className:"flex items-center gap-2",children:[s.jsxDEV(Lu,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:475,columnNumber:11},this),"Installed Templates",b.length>0&&s.jsxDEV(Je,{variant:"secondary",className:"ml-2",children:b.length},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:478,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:474,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:473,columnNumber:7},this),s.jsxDEV(Fs,{className:"max-h-[280px] overflow-y-auto",children:b.length===0?s.jsxDEV(jme,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:486,columnNumber:11},this):s.jsxDEV("div",{className:"space-y-3",children:b.map(w=>s.jsxDEV(_me,{template:w,updateStatus:c[w.slug]||{status:"idle"},onRemoveVersion:g,deletingVersion:(l==null?void 0:l.slug)===w.slug&&h.isPending?l.version:null,onDownload:D,isDownloading:y===w.slug&&C.isPending},w.slug,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:490,columnNumber:15},this))},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:488,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:484,columnNumber:7},this),s.jsxDEV(Nf,{open:l!==null,onOpenChange:w=>{w||d(null)},onConfirm:m,title:"Remove template version",description:l?`Are you sure you want to remove version ${l.version} of "${l.slug}"? This will delete the cached files from disk.`:"Are you sure you want to remove this version?",confirmText:"Remove",variant:"destructive",loading:h.isPending},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:508,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/DownloadedTemplates.tsx",lineNumber:472,columnNumber:5},this)}const kme=!1;async function Vme(){const e=await fetch("/api/registry/status");if(!e.ok)throw new Error("Failed to check registry status");return e.json()}async function Tme(e){const t=new URLSearchParams;e.search&&t.set("search",e.search),e.category&&t.set("category",e.category);const i=`/api/registry/templates${t.toString()?`?${t}`:""}`,r=await fetch(i);if(!r.ok)throw new Error("Failed to fetch templates");return r.json()}function Rme(e,t){const[i,r]=f.useState(e);return f.useEffect(()=>{const o=setTimeout(()=>{r(e)},t);return()=>{clearTimeout(o)}},[e,t]),i}function Ame(){const[e,t]=f.useState(""),[i,r]=f.useState(),[o,c]=f.useState(),u=Rme(e,300),{data:l}=st({queryKey:["registry-status"],queryFn:Vme,refetchInterval:6e4,staleTime:3e4}),{data:d,isLoading:h,error:g}=st({queryKey:["registry-templates",u,i],queryFn:()=>Tme({search:u||void 0,category:i})}),m=f.useMemo(()=>(d==null?void 0:d.templates)||[],[d]);return s.jsxDEV("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:[s.jsxDEV("div",{className:"mb-6 flex-shrink-0",children:s.jsxDEV("div",{className:"flex items-center gap-3",children:[s.jsxDEV(Lu,{className:"h-8 w-8 text-primary"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:104,columnNumber:11},this),s.jsxDEV("div",{children:[s.jsxDEV("h1",{className:"text-2xl font-bold",children:"Template Registry"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:106,columnNumber:13},this),s.jsxDEV("p",{className:"text-muted-foreground",children:"Browse and install project templates"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:107,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:105,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:103,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:102,columnNumber:7},this),l&&!l.available&&s.jsxDEV(Ti,{variant:"destructive",className:"mb-4",children:[s.jsxDEV(Bi,{className:"h-4 w-4"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:115,columnNumber:11},this),s.jsxDEV(Ri,{children:"Registry unavailable. Showing cached templates only."},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:116,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:114,columnNumber:9},this),s.jsxDEV("div",{className:"mb-8 flex-shrink-0",children:s.jsxDEV(Pme,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:122,columnNumber:9},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:121,columnNumber:7},this),kme,s.jsxDEV("div",{className:"mb-4 flex-shrink-0",children:[s.jsxDEV("h2",{className:"flex items-center gap-2 text-lg font-semibold",children:[s.jsxDEV(xee,{className:"h-5 w-5"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:140,columnNumber:11},this),"Browse Registry"]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:139,columnNumber:9},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Discover and download templates from the online registry"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:143,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:138,columnNumber:7},this),s.jsxDEV("div",{className:"flex-1 min-h-0 overflow-auto",children:h?s.jsxDEV(Ghe,{},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:151,columnNumber:11},this):g?s.jsxDEV("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[s.jsxDEV(Bi,{className:"mb-4 h-12 w-12 text-destructive"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:154,columnNumber:13},this),s.jsxDEV("p",{className:"text-lg font-medium text-destructive",children:"Failed to load templates"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:155,columnNumber:13},this),s.jsxDEV("p",{className:"text-sm text-muted-foreground",children:"Please check your connection and try again"},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:156,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:153,columnNumber:11},this):s.jsxDEV(Khe,{templates:m,onSelect:c},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:161,columnNumber:11},this)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:149,columnNumber:7},this),s.jsxDEV(bme,{slug:o,onClose:()=>c(void 0)},void 0,!1,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:166,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ngsupb/repos/twitech/devchain/apps/local-app/src/ui/pages/RegistryPage/RegistryPage.tsx",lineNumber:100,columnNumber:5},this)}var iL="AlertDialog",[Mme]=Aa(iL,[zV]),Vl=zV(),aL=e=>{const{__scopeAlertDialog:t,...i}=e,r=Vl(t);return ae.jsx(y2,{...r,...i,modal:!0})};aL.displayName=iL;var Lme="AlertDialogTrigger",rL=f.forwardRef((e,t)=>{const{__scopeAlertDialog:i,...r}=e,o=Vl(i);return ae.jsx(Ite,{...o,...r,ref:t})});rL.displayName=Lme;var Ome="AlertDialogPortal",nL=e=>{const{__scopeAlertDialog:t,...i}=e,r=Vl(t);return ae.jsx(x0,{...r,...i})};nL.displayName=Ome;var Ime="AlertDialogOverlay",oL=f.forwardRef((e,t)=>{const{__scopeAlertDialog:i,...r}=e,o=Vl(i);return ae.jsx(Xf,{...o,...r,ref:t})});oL.displayName=Ime;var Nd="AlertDialogContent",[Fme,Bme]=Mme(Nd),$me=ck("AlertDialogContent"),lL=f.forwardRef((e,t)=>{const{__scopeAlertDialog:i,children:r,...o}=e,c=Vl(i),u=f.useRef(null),l=Is(t,u),d=f.useRef(null);return ae.jsx(Ate,{contentName:Nd,titleName:cL,docsSlug:"alert-dialog",children:ae.jsx(Fme,{scope:i,cancelRef:d,children:ae.jsxs(Jf,{role:"alertdialog",...c,...o,ref:l,onOpenAutoFocus:gt(o.onOpenAutoFocus,h=>{var g;h.preventDefault(),(g=d.current)==null||g.focus({preventScroll:!0})}),onPointerDownOutside:h=>h.preventDefault(),onInteractOutside:h=>h.preventDefault(),children:[ae.jsx($me,{children:r}),ae.jsx(Ume,{contentRef:u})]})})})});lL.displayName=Nd;var cL="AlertDialogTitle",uL=f.forwardRef((e,t)=>{const{__scopeAlertDialog:i,...r}=e,o=Vl(i);return ae.jsx(Zf,{...o,...r,ref:t})});uL.displayName=cL;var pL="AlertDialogDescription",dL=f.forwardRef((e,t)=>{const{__scopeAlertDialog:i,...r}=e,o=Vl(i);return ae.jsx(eg,{...o,...r,ref:t})});dL.displayName=pL;var zme="AlertDialogAction",hL=f.forwardRef((e,t)=>{const{__scopeAlertDialog:i,...r}=e,o=Vl(i);return ae.jsx(w0,{...o,...r,ref:t})});hL.displayName=zme;var mL="AlertDialogCancel",fL=f.forwardRef((e,t)=>{const{__scopeAlertDialog:i,...r}=e,{cancelRef:o}=Bme(mL,i),c=Vl(i),u=Is(t,o);return ae.jsx(w0,{...c,...r,ref:u})});fL.displayName=mL;var Ume=({contentRef:e})=>{const t=`\`${Nd}\` requires a description for the component to be accessible for screen reader users.
971
971
 
972
972
  You can add a description to the \`${Nd}\` by passing a \`${pL}\` component as a child, which also benefits sighted users by adding visible context to the dialog.
973
973