spec-cat 0.1.22 → 0.1.24

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.
Files changed (52) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{D2jWy6Yv.js → 4fNBhYih.js} +1 -1
  3. package/.output/public/_nuxt/{DuDc88rI.js → 9w_2Mmlc.js} +1 -1
  4. package/.output/public/_nuxt/{NsKpYGKU.js → B5CkRg11.js} +1 -1
  5. package/.output/public/_nuxt/BIEXFa_-.js +1 -0
  6. package/.output/public/_nuxt/{B6Qdx9x3.js → BXYy_1q3.js} +1 -1
  7. package/.output/public/_nuxt/{xDSloGc6.js → BwGW6ro4.js} +2 -2
  8. package/.output/public/_nuxt/{CnyGP5yJ.js → C3zox5gF.js} +1 -1
  9. package/.output/public/_nuxt/{CXlw6va7.js → CTvl5rYA.js} +1 -1
  10. package/.output/public/_nuxt/Cdz7yq-9.js +156 -0
  11. package/.output/public/_nuxt/{DYq0avGL.js → D9HkWjwL.js} +1 -1
  12. package/.output/public/_nuxt/{BDt4jGdk.js → DCQ8fVjv.js} +1 -1
  13. package/.output/public/_nuxt/{hWTomhWa.js → DEYVPkjx.js} +1 -1
  14. package/.output/public/_nuxt/builds/latest.json +1 -1
  15. package/.output/public/_nuxt/builds/meta/3ad3d42f-406b-41b2-a79c-2b068cdf0ccd.json +1 -0
  16. package/.output/public/_nuxt/{default.eSO6fRPf.css → default.D3bZ26KV.css} +1 -1
  17. package/.output/public/_nuxt/entry.CE6x3Mpw.css +1 -0
  18. package/.output/public/_nuxt/{CXuoBUW5.js → q7giXQYI.js} +1 -1
  19. package/.output/public/_nuxt/useTheme.Dp77PlfC.css +1 -0
  20. package/.output/server/chunks/_/conversationStore.mjs +13 -1
  21. package/.output/server/chunks/_/conversationStore.mjs.map +1 -1
  22. package/.output/server/chunks/_/jobPersister.mjs +326 -0
  23. package/.output/server/chunks/_/jobPersister.mjs.map +1 -0
  24. package/.output/server/chunks/_/jobQueue.mjs +714 -0
  25. package/.output/server/chunks/_/jobQueue.mjs.map +1 -0
  26. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  27. package/.output/server/chunks/build/client.precomputed.mjs.map +1 -1
  28. package/.output/server/chunks/nitro/nitro.mjs +651 -643
  29. package/.output/server/chunks/routes/_ws.mjs +133 -527
  30. package/.output/server/chunks/routes/_ws.mjs.map +1 -1
  31. package/.output/server/chunks/routes/api/index.get.mjs +25 -14
  32. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  33. package/.output/server/chunks/routes/api/index.get2.mjs +14 -141
  34. package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
  35. package/.output/server/chunks/routes/api/index.get3.mjs +167 -0
  36. package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -0
  37. package/.output/server/chunks/routes/api/index.post.mjs +77 -116
  38. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  39. package/.output/server/chunks/routes/api/index.post2.mjs +149 -0
  40. package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -0
  41. package/.output/server/chunks/routes/api/jobs/_id/cancel.post.mjs +48 -0
  42. package/.output/server/chunks/routes/api/jobs/_id/cancel.post.mjs.map +1 -0
  43. package/.output/server/chunks/routes/api/jobs/_id_.get.mjs +55 -0
  44. package/.output/server/chunks/routes/api/jobs/_id_.get.mjs.map +1 -0
  45. package/.output/server/package.json +1 -1
  46. package/bin/spec-cat.js +15 -0
  47. package/package.json +1 -1
  48. package/.output/public/_nuxt/Ce5fR5lE.js +0 -150
  49. package/.output/public/_nuxt/builds/meta/23707bc3-d223-45cd-b9db-ffcc7aca2680.json +0 -1
  50. package/.output/public/_nuxt/entry.BtencOYX.css +0 -1
  51. package/.output/public/_nuxt/useTheme.CYXKgjUm.css +0 -1
  52. package/.output/public/_nuxt/z5m_gN1E.js +0 -1
@@ -1 +1 @@
1
- import{a as q,aa as C,ab as G,W as U,ac as X,M as L,ad as z,k as M,ae as j,af as J,g as Y,s as k,Y as Q,ag as Z,G as K,ah as ee,ai as te,aj as V,d as ae,y as h,z as p,A as b,B as E,P,I,J as T,K as O,E as se}from"./xDSloGc6.js";const re={trailing:!0};function ne(e,t=25,o={}){if(o={...re,...o},!Number.isFinite(t))throw new TypeError("Expected `wait` to be a finite number");let l,r,_=[],s,a;const g=(d,u)=>(s=oe(e,d,u),s.finally(()=>{if(s=null,o.trailing&&a&&!r){const y=g(d,a);return a=null,y}}),s),D=function(...d){return o.trailing&&(a=d),s||new Promise(u=>{const y=!r&&o.leading;clearTimeout(r),r=setTimeout(()=>{r=null;const n=o.leading?l:g(this,d);a=null;for(const c of _)c(n);_=[]},t),y?(l=g(this,d),u(l)):_.push(u)})},i=d=>{d&&(clearTimeout(d),r=null)};return D.isPending=()=>!!r,D.cancel=()=>{i(r),_=[],a=null},D.flush=()=>{if(i(r),!a||s)return;const d=a;return a=null,g(this,d)},D}async function oe(e,t,o){return await e.apply(t,o)}const ie=Symbol.for("nuxt:client-only"),ce=e=>e==="defer"||e===!1;function He(...e){const t=typeof e[e.length-1]=="string"?e.pop():void 0;le(e[0],e[1])&&e.unshift(t);let[o,l,r={}]=e,_=!1;const s=M(()=>te(o));if(typeof s.value!="string")throw new TypeError("[nuxt] [useAsyncData] key must be a string.");if(typeof l!="function")throw new TypeError("[nuxt] [useAsyncData] handler must be a function.");const a=q();r.server??=!0,r.default??=de,r.getCachedData??=F,r.lazy??=!1,r.immediate??=!0,r.deep??=C.deep,r.dedupe??="cancel",r._functionName,a._asyncData[s.value];function g(){const n={cause:"initial",dedupe:r.dedupe};return a._asyncData[s.value]?._init||(n.cachedData=r.getCachedData(s.value,a,{cause:"initial"}),a._asyncData[s.value]=H(a,s.value,l,r,n.cachedData)),()=>a._asyncData[s.value].execute(n)}const D=g(),i=a._asyncData[s.value];i._deps++;const d=r.server!==!1&&a.payload.serverRendered;{let n=function(m){const f=a._asyncData[m];f?._deps&&(f._deps--,f._deps===0&&f?._off())};const c=j();if(c&&d&&r.immediate&&!c.sp&&(c.sp=[]),c&&!c._nuxtOnBeforeMountCbs){c._nuxtOnBeforeMountCbs=[];const m=c._nuxtOnBeforeMountCbs;G(()=>{m.forEach(f=>{f()}),m.splice(0,m.length)}),U(()=>m.splice(0,m.length))}const S=c&&(c._nuxtClientOnly||X(ie,!1));d&&a.isHydrating&&(i.error.value||i.data.value!=null)?(i.pending.value=!1,i.status.value=i.error.value?"error":"success"):c&&(!S&&a.payload.serverRendered&&a.isHydrating||r.lazy)&&r.immediate?c._nuxtOnBeforeMountCbs.push(D):r.immediate&&D();const v=J(),x=L(s,(m,f)=>{if((m||f)&&m!==f){_=!0;const B=a._asyncData[f]?.data.value!==C.value,W=a._asyncDataPromises[f]!==void 0,R={cause:"initial",dedupe:r.dedupe};if(!a._asyncData[m]?._init){let A;f&&B?A=a._asyncData[f].data.value:(A=r.getCachedData(m,a,{cause:"initial"}),R.cachedData=A),a._asyncData[m]=H(a,m,l,r,A)}a._asyncData[m]._deps++,f&&n(f),(r.immediate||B||W)&&a._asyncData[m].execute(R),V(()=>{_=!1})}},{flush:"sync"}),w=r.watch?L(r.watch,()=>{_||(a._asyncData[s.value]?._execute.isPending()&&V(()=>{a._asyncData[s.value]?._execute.flush()}),a._asyncData[s.value]?._execute({cause:"watch",dedupe:r.dedupe}))}):()=>{};v&&z(()=>{x(),w(),n(s.value)})}const u={data:N(()=>a._asyncData[s.value]?.data),pending:N(()=>a._asyncData[s.value]?.pending),status:N(()=>a._asyncData[s.value]?.status),error:N(()=>a._asyncData[s.value]?.error),refresh:(...n)=>a._asyncData[s.value]?._init?a._asyncData[s.value].execute(...n):g()(),execute:(...n)=>u.refresh(...n),clear:()=>{const n=a._asyncData[s.value];if(n?._abortController)try{n._abortController.abort(new DOMException("AsyncData aborted by user.","AbortError"))}finally{n._abortController=void 0}$(a,s.value)}},y=Promise.resolve(a._asyncDataPromises[s.value]).then(()=>u);return Object.assign(y,u),y}function N(e){return M({get(){return e()?.value},set(t){const o=e();o&&(o.value=t)}})}function le(e,t){return!(typeof e=="string"||typeof e=="object"&&e!==null||typeof e=="function"&&typeof t=="function")}function $(e,t){t in e.payload.data&&(e.payload.data[t]=void 0),t in e.payload._errors&&(e.payload._errors[t]=C.errorValue),e._asyncData[t]&&(e._asyncData[t].data.value=void 0,e._asyncData[t].error.value=C.errorValue,e._asyncData[t].pending.value=!1,e._asyncData[t].status.value="idle"),t in e._asyncDataPromises&&(e._asyncDataPromises[t]=void 0)}function ue(e,t){const o={};for(const l of t)o[l]=e[l];return o}function H(e,t,o,l,r){e.payload._errors[t]??=C.errorValue;const _=l.getCachedData!==F,s=o,a=l.deep?Y:k,g=r!=null,D=e.hook("app:data:refresh",async d=>{(!d||d.includes(t))&&await i.execute({cause:"refresh:hook"})}),i={data:a(g?r:l.default()),pending:k(!g),error:ee(e.payload._errors,t),status:k("idle"),execute:(...d)=>{const[u,y=void 0]=d,n=u&&y===void 0&&typeof u=="object"?u:{};if(e._asyncDataPromises[t]&&ce(n.dedupe??l.dedupe))return e._asyncDataPromises[t];if(n.cause==="initial"||e.isHydrating){const v="cachedData"in n?n.cachedData:l.getCachedData(t,e,{cause:n.cause??"refresh:manual"});if(v!=null)return e.payload.data[t]=i.data.value=v,i.error.value=C.errorValue,i.status.value="success",Promise.resolve(v)}i.pending.value=!0,i._abortController&&i._abortController.abort(new DOMException("AsyncData request cancelled by deduplication","AbortError")),i._abortController=new AbortController,i.status.value="pending";const c=new AbortController,S=new Promise((v,x)=>{try{const w=n.timeout??l.timeout,m=fe([i._abortController?.signal,n?.signal],c.signal,w);if(m.aborted){const f=m.reason;x(f instanceof Error?f:new DOMException(String(f??"Aborted"),"AbortError"));return}return m.addEventListener("abort",()=>{const f=m.reason;x(f instanceof Error?f:new DOMException(String(f??"Aborted"),"AbortError"))},{once:!0,signal:c.signal}),Promise.resolve(s(e,{signal:m})).then(v,x)}catch(w){x(w)}}).then(async v=>{let x=v;l.transform&&(x=await l.transform(v)),l.pick&&(x=ue(x,l.pick)),e.payload.data[t]=x,i.data.value=x,i.error.value=C.errorValue,i.status.value="success"}).catch(v=>{if(e._asyncDataPromises[t]&&e._asyncDataPromises[t]!==S||i._abortController?.signal.aborted)return e._asyncDataPromises[t];if(typeof DOMException<"u"&&v instanceof DOMException&&v.name==="AbortError")return i.status.value="idle",e._asyncDataPromises[t];i.error.value=Z(v),i.data.value=K(l.default()),i.status.value="error"}).finally(()=>{i.pending.value=!1,c.abort(),delete e._asyncDataPromises[t]});return e._asyncDataPromises[t]=S,e._asyncDataPromises[t]},_execute:ne((...d)=>i.execute(...d),0,{leading:!0}),_default:l.default,_deps:0,_init:!0,_hash:void 0,_off:()=>{D(),e._asyncData[t]?._init&&(e._asyncData[t]._init=!1),_||Q(()=>{e._asyncData[t]?._init||($(e,t),i.execute=()=>Promise.resolve(),i.data.value=C.value)})}};return i}const de=()=>C.value,F=(e,t,o)=>{if(t.isHydrating)return t.payload.data[e];if(o.cause!=="refresh:manual"&&o.cause!=="refresh:hook")return t.static.data[e]};function fe(e,t,o){const l=e.filter(s=>!!s);if(typeof o=="number"&&o>=0){const s=AbortSignal.timeout?.(o);s&&l.push(s)}if(AbortSignal.any)return AbortSignal.any(l);const r=new AbortController;for(const s of l)if(s.aborted){const a=s.reason??new DOMException("Aborted","AbortError");try{r.abort(a)}catch{r.abort()}return r.signal}const _=()=>{const a=l.find(g=>g.aborted)?.reason??new DOMException("Aborted","AbortError");try{r.abort(a)}catch{r.abort()}};for(const s of l)s.addEventListener?.("abort",_,{once:!0,signal:t});return r.signal}function $e(){return`blk-${Date.now()}-${Math.random().toString(36).substring(2,6)}`}function Fe(e){return Array.isArray(e.contentBlocks)&&e.contentBlocks.length>0}const me={plan:"Plan Mode",ask:"Ask Before",auto:"Auto Edit",bypass:"Bypass"},We={plan:"The assistant will create a plan before making changes",ask:"The assistant will ask before each action",auto:"The assistant can read and edit files automatically",bypass:"Skip all permission checks (dangerous)"},qe=300,Ge=600,Ue=400;function Xe(){return`msg-${Date.now()}-${Math.random().toString(36).substring(2,8)}`}const ze=2,je=100,Je=80;function Ye(){return`conv-${Math.random().toString(36).slice(2,12)}`}function Qe(e){const o=e.trim().replace(/\n/g," ");return o.length<=50?o:o.slice(0,50).trim()+"..."}function Ze(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.id=="string"&&typeof t.title=="string"&&Array.isArray(t.messages)&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"&&typeof t.cwd=="string"}function Ke(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.id=="string"&&typeof t.sourceConversationId=="string"&&typeof t.title=="string"&&Array.isArray(t.messages)&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"&&typeof t.archivedAt=="string"&&typeof t.cwd=="string"}const ye={class:"space-y-3"},_e={key:0,class:"rounded border border-retro-border bg-retro-panel px-4 py-3"},be={key:1,class:"rounded border border-retro-border bg-retro-panel px-4 py-3"},ge={class:"text-xs font-mono text-retro-yellow"},he={key:2,class:"rounded border border-retro-border bg-retro-panel px-4 py-3"},pe={key:3,class:"space-y-4"},ve={key:0,class:"text-xs font-mono text-retro-muted"},De={key:1,class:"text-xs font-mono text-retro-muted"},xe={class:"flex flex-col gap-2"},Ce={class:"flex flex-col gap-2"},Ee={class:"flex items-start justify-between gap-3"},Se={class:"text-sm font-mono text-retro-text"},we={key:0,class:"text-xs font-mono text-retro-yellow"},Pe={key:1,class:"text-xs font-mono text-retro-yellow"},Me={class:"text-xs text-retro-muted leading-tight"},Ae={class:"flex flex-wrap gap-2"},Oe={key:0,class:"text-xs font-mono text-retro-yellow"},Ne={class:"space-y-1.5"},ke=["value","checked","disabled","onChange"],Ie={class:"flex-1 space-y-0.5"},Te={class:"flex items-center gap-2"},Be={class:"text-sm font-mono text-retro-text"},Re={key:0,class:"text-[0.55rem] font-mono uppercase tracking-[0.25em] text-retro-cyan border border-retro-cyan rounded-full px-2 py-0.5"},Le={class:"text-xs text-retro-muted leading-tight"},et=ae({__name:"ProviderSelector",props:{providers:{},selected:{},permissionMode:{},pending:{type:Boolean},errorMessage:{}},emits:["select"],setup(e,{emit:t}){const o=e,l=t,r=[{key:"streaming",label:"Streaming"},{key:"permissions",label:"Permissions"},{key:"resume",label:"Session Resume"},{key:"autoCommit",label:"Auto Commit"}],_=M(()=>o.permissionMode==="ask"||o.permissionMode==="plan"),s=M(()=>me[o.permissionMode]),a=M(()=>!0);function g(u){const y=!_.value||u.capabilities.permissions,n=!a.value||u.capabilities.streaming;return y&&n}function D(u){return _.value&&!u.capabilities.permissions?`${u.name} cannot be used with ${s.value} because it does not expose permission prompts.`:a.value&&!u.capabilities.streaming?`${u.name} is unavailable because streaming runtime prerequisites are not satisfied.`:null}function i(u,y){g(u)&&l("select",{providerId:u.id,modelKey:y})}function d(u,y){return o.selected.providerId===u&&o.selected.modelKey===y}return(u,y)=>(h(),p("div",ye,[e.pending?(h(),p("div",_e,[...y[0]||(y[0]=[b("p",{class:"text-xs font-mono text-retro-text"},"Loading providers…",-1)])])):e.errorMessage?(h(),p("div",be,[b("p",ge,"Unable to load providers: "+E(e.errorMessage),1)])):e.providers.length===0?(h(),p("div",he,[...y[1]||(y[1]=[b("p",{class:"text-xs font-mono text-retro-muted"},"No AI providers are configured on the server. Check with your administrator.",-1)])])):(h(),p("div",pe,[_.value?(h(),p("p",ve," Permission mode "+E(s.value)+" requires a provider that supports permission prompts. Incompatible providers are disabled. ",1)):P("",!0),a.value?(h(),p("p",De," Chat currently requires a provider with streaming support. Providers without streaming are shown for preparation but disabled. ")):P("",!0),(h(!0),p(I,null,T(e.providers,n=>(h(),p("article",{key:n.id,class:O(["rounded border border-retro-border bg-retro-panel p-4 space-y-3 transition",{"border-retro-cyan bg-retro-cyan/5":e.selected.providerId===n.id,"hover:border-retro-muted":e.selected.providerId!==n.id}])},[b("div",xe,[b("div",Ce,[b("div",Ee,[b("span",Se,E(n.name),1),_.value&&!n.capabilities.permissions?(h(),p("div",we," Permissions missing ")):a.value&&!n.capabilities.streaming?(h(),p("div",Pe," Streaming missing ")):P("",!0)]),b("p",Me,E(n.description),1),b("div",Ae,[(h(),p(I,null,T(r,c=>b("span",{key:c.key,class:O(["inline-flex items-center gap-1.5 rounded-full border px-2.5 py-0.5 text-[0.6rem] font-mono uppercase tracking-[0.18em]",n.capabilities[c.key]?"border-retro-cyan/70 text-retro-cyan bg-retro-cyan/10":"border-retro-border text-retro-muted bg-retro-dark/60"])},[b("span",{class:O(["h-1.5 w-1.5 rounded-full",n.capabilities[c.key]?"bg-retro-cyan":"bg-retro-muted"])},null,2),se(" "+E(c.label),1)],2)),64))])])]),D(n)?(h(),p("p",Oe,E(D(n)),1)):P("",!0),b("div",Ne,[(h(!0),p(I,null,T(n.models,c=>(h(),p("label",{key:c.key,class:O(["flex items-start gap-3 px-3 py-2 rounded border cursor-pointer transition-colors",[d(n.id,c.key)?"border-retro-cyan bg-retro-cyan/10":"border-retro-border bg-retro-panel hover:border-retro-muted",g(n)?"":"opacity-60 cursor-not-allowed"]])},[b("input",{type:"radio",name:"provider-model",value:`${n.id}:${c.key}`,checked:d(n.id,c.key),disabled:!g(n),class:"mt-1 h-3.5 w-3.5 text-retro-cyan accent-retro-cyan",onChange:S=>i(n,c.key)},null,40,ke),b("div",Ie,[b("div",Te,[b("span",Be,E(c.label),1),c.default?(h(),p("span",Re," Default ")):P("",!0)]),b("p",Le,E(c.description),1)])],2))),128))])],2))),128))]))]))}});export{je as M,Ue as P,ze as S,Je as W,et as _,Ke as a,qe as b,Ge as c,Ye as d,Qe as e,$e as f,Xe as g,Fe as h,Ze as i,me as j,We as k,He as u};
1
+ import{a as q,aa as C,ab as G,W as U,ac as X,M as L,ad as z,k as M,ae as j,af as J,g as Y,s as k,Y as Q,ag as Z,G as K,ah as ee,ai as te,aj as V,d as ae,y as h,z as p,A as b,B as E,P,I,J as T,K as O,E as se}from"./BwGW6ro4.js";const re={trailing:!0};function ne(e,t=25,o={}){if(o={...re,...o},!Number.isFinite(t))throw new TypeError("Expected `wait` to be a finite number");let l,r,_=[],s,a;const g=(d,u)=>(s=oe(e,d,u),s.finally(()=>{if(s=null,o.trailing&&a&&!r){const y=g(d,a);return a=null,y}}),s),D=function(...d){return o.trailing&&(a=d),s||new Promise(u=>{const y=!r&&o.leading;clearTimeout(r),r=setTimeout(()=>{r=null;const n=o.leading?l:g(this,d);a=null;for(const c of _)c(n);_=[]},t),y?(l=g(this,d),u(l)):_.push(u)})},i=d=>{d&&(clearTimeout(d),r=null)};return D.isPending=()=>!!r,D.cancel=()=>{i(r),_=[],a=null},D.flush=()=>{if(i(r),!a||s)return;const d=a;return a=null,g(this,d)},D}async function oe(e,t,o){return await e.apply(t,o)}const ie=Symbol.for("nuxt:client-only"),ce=e=>e==="defer"||e===!1;function He(...e){const t=typeof e[e.length-1]=="string"?e.pop():void 0;le(e[0],e[1])&&e.unshift(t);let[o,l,r={}]=e,_=!1;const s=M(()=>te(o));if(typeof s.value!="string")throw new TypeError("[nuxt] [useAsyncData] key must be a string.");if(typeof l!="function")throw new TypeError("[nuxt] [useAsyncData] handler must be a function.");const a=q();r.server??=!0,r.default??=de,r.getCachedData??=F,r.lazy??=!1,r.immediate??=!0,r.deep??=C.deep,r.dedupe??="cancel",r._functionName,a._asyncData[s.value];function g(){const n={cause:"initial",dedupe:r.dedupe};return a._asyncData[s.value]?._init||(n.cachedData=r.getCachedData(s.value,a,{cause:"initial"}),a._asyncData[s.value]=H(a,s.value,l,r,n.cachedData)),()=>a._asyncData[s.value].execute(n)}const D=g(),i=a._asyncData[s.value];i._deps++;const d=r.server!==!1&&a.payload.serverRendered;{let n=function(m){const f=a._asyncData[m];f?._deps&&(f._deps--,f._deps===0&&f?._off())};const c=j();if(c&&d&&r.immediate&&!c.sp&&(c.sp=[]),c&&!c._nuxtOnBeforeMountCbs){c._nuxtOnBeforeMountCbs=[];const m=c._nuxtOnBeforeMountCbs;G(()=>{m.forEach(f=>{f()}),m.splice(0,m.length)}),U(()=>m.splice(0,m.length))}const S=c&&(c._nuxtClientOnly||X(ie,!1));d&&a.isHydrating&&(i.error.value||i.data.value!=null)?(i.pending.value=!1,i.status.value=i.error.value?"error":"success"):c&&(!S&&a.payload.serverRendered&&a.isHydrating||r.lazy)&&r.immediate?c._nuxtOnBeforeMountCbs.push(D):r.immediate&&D();const v=J(),x=L(s,(m,f)=>{if((m||f)&&m!==f){_=!0;const B=a._asyncData[f]?.data.value!==C.value,W=a._asyncDataPromises[f]!==void 0,R={cause:"initial",dedupe:r.dedupe};if(!a._asyncData[m]?._init){let A;f&&B?A=a._asyncData[f].data.value:(A=r.getCachedData(m,a,{cause:"initial"}),R.cachedData=A),a._asyncData[m]=H(a,m,l,r,A)}a._asyncData[m]._deps++,f&&n(f),(r.immediate||B||W)&&a._asyncData[m].execute(R),V(()=>{_=!1})}},{flush:"sync"}),w=r.watch?L(r.watch,()=>{_||(a._asyncData[s.value]?._execute.isPending()&&V(()=>{a._asyncData[s.value]?._execute.flush()}),a._asyncData[s.value]?._execute({cause:"watch",dedupe:r.dedupe}))}):()=>{};v&&z(()=>{x(),w(),n(s.value)})}const u={data:N(()=>a._asyncData[s.value]?.data),pending:N(()=>a._asyncData[s.value]?.pending),status:N(()=>a._asyncData[s.value]?.status),error:N(()=>a._asyncData[s.value]?.error),refresh:(...n)=>a._asyncData[s.value]?._init?a._asyncData[s.value].execute(...n):g()(),execute:(...n)=>u.refresh(...n),clear:()=>{const n=a._asyncData[s.value];if(n?._abortController)try{n._abortController.abort(new DOMException("AsyncData aborted by user.","AbortError"))}finally{n._abortController=void 0}$(a,s.value)}},y=Promise.resolve(a._asyncDataPromises[s.value]).then(()=>u);return Object.assign(y,u),y}function N(e){return M({get(){return e()?.value},set(t){const o=e();o&&(o.value=t)}})}function le(e,t){return!(typeof e=="string"||typeof e=="object"&&e!==null||typeof e=="function"&&typeof t=="function")}function $(e,t){t in e.payload.data&&(e.payload.data[t]=void 0),t in e.payload._errors&&(e.payload._errors[t]=C.errorValue),e._asyncData[t]&&(e._asyncData[t].data.value=void 0,e._asyncData[t].error.value=C.errorValue,e._asyncData[t].pending.value=!1,e._asyncData[t].status.value="idle"),t in e._asyncDataPromises&&(e._asyncDataPromises[t]=void 0)}function ue(e,t){const o={};for(const l of t)o[l]=e[l];return o}function H(e,t,o,l,r){e.payload._errors[t]??=C.errorValue;const _=l.getCachedData!==F,s=o,a=l.deep?Y:k,g=r!=null,D=e.hook("app:data:refresh",async d=>{(!d||d.includes(t))&&await i.execute({cause:"refresh:hook"})}),i={data:a(g?r:l.default()),pending:k(!g),error:ee(e.payload._errors,t),status:k("idle"),execute:(...d)=>{const[u,y=void 0]=d,n=u&&y===void 0&&typeof u=="object"?u:{};if(e._asyncDataPromises[t]&&ce(n.dedupe??l.dedupe))return e._asyncDataPromises[t];if(n.cause==="initial"||e.isHydrating){const v="cachedData"in n?n.cachedData:l.getCachedData(t,e,{cause:n.cause??"refresh:manual"});if(v!=null)return e.payload.data[t]=i.data.value=v,i.error.value=C.errorValue,i.status.value="success",Promise.resolve(v)}i.pending.value=!0,i._abortController&&i._abortController.abort(new DOMException("AsyncData request cancelled by deduplication","AbortError")),i._abortController=new AbortController,i.status.value="pending";const c=new AbortController,S=new Promise((v,x)=>{try{const w=n.timeout??l.timeout,m=fe([i._abortController?.signal,n?.signal],c.signal,w);if(m.aborted){const f=m.reason;x(f instanceof Error?f:new DOMException(String(f??"Aborted"),"AbortError"));return}return m.addEventListener("abort",()=>{const f=m.reason;x(f instanceof Error?f:new DOMException(String(f??"Aborted"),"AbortError"))},{once:!0,signal:c.signal}),Promise.resolve(s(e,{signal:m})).then(v,x)}catch(w){x(w)}}).then(async v=>{let x=v;l.transform&&(x=await l.transform(v)),l.pick&&(x=ue(x,l.pick)),e.payload.data[t]=x,i.data.value=x,i.error.value=C.errorValue,i.status.value="success"}).catch(v=>{if(e._asyncDataPromises[t]&&e._asyncDataPromises[t]!==S||i._abortController?.signal.aborted)return e._asyncDataPromises[t];if(typeof DOMException<"u"&&v instanceof DOMException&&v.name==="AbortError")return i.status.value="idle",e._asyncDataPromises[t];i.error.value=Z(v),i.data.value=K(l.default()),i.status.value="error"}).finally(()=>{i.pending.value=!1,c.abort(),delete e._asyncDataPromises[t]});return e._asyncDataPromises[t]=S,e._asyncDataPromises[t]},_execute:ne((...d)=>i.execute(...d),0,{leading:!0}),_default:l.default,_deps:0,_init:!0,_hash:void 0,_off:()=>{D(),e._asyncData[t]?._init&&(e._asyncData[t]._init=!1),_||Q(()=>{e._asyncData[t]?._init||($(e,t),i.execute=()=>Promise.resolve(),i.data.value=C.value)})}};return i}const de=()=>C.value,F=(e,t,o)=>{if(t.isHydrating)return t.payload.data[e];if(o.cause!=="refresh:manual"&&o.cause!=="refresh:hook")return t.static.data[e]};function fe(e,t,o){const l=e.filter(s=>!!s);if(typeof o=="number"&&o>=0){const s=AbortSignal.timeout?.(o);s&&l.push(s)}if(AbortSignal.any)return AbortSignal.any(l);const r=new AbortController;for(const s of l)if(s.aborted){const a=s.reason??new DOMException("Aborted","AbortError");try{r.abort(a)}catch{r.abort()}return r.signal}const _=()=>{const a=l.find(g=>g.aborted)?.reason??new DOMException("Aborted","AbortError");try{r.abort(a)}catch{r.abort()}};for(const s of l)s.addEventListener?.("abort",_,{once:!0,signal:t});return r.signal}function $e(){return`blk-${Date.now()}-${Math.random().toString(36).substring(2,6)}`}function Fe(e){return Array.isArray(e.contentBlocks)&&e.contentBlocks.length>0}const me={plan:"Plan Mode",ask:"Ask Before",auto:"Auto Edit",bypass:"Bypass"},We={plan:"The assistant will create a plan before making changes",ask:"The assistant will ask before each action",auto:"The assistant can read and edit files automatically",bypass:"Skip all permission checks (dangerous)"},qe=300,Ge=600,Ue=400;function Xe(){return`msg-${Date.now()}-${Math.random().toString(36).substring(2,8)}`}const ze=2,je=100,Je=80;function Ye(){return`conv-${Math.random().toString(36).slice(2,12)}`}function Qe(e){const o=e.trim().replace(/\n/g," ");return o.length<=50?o:o.slice(0,50).trim()+"..."}function Ze(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.id=="string"&&typeof t.title=="string"&&Array.isArray(t.messages)&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"&&typeof t.cwd=="string"}function Ke(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.id=="string"&&typeof t.sourceConversationId=="string"&&typeof t.title=="string"&&Array.isArray(t.messages)&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"&&typeof t.archivedAt=="string"&&typeof t.cwd=="string"}const ye={class:"space-y-3"},_e={key:0,class:"rounded border border-retro-border bg-retro-panel px-4 py-3"},be={key:1,class:"rounded border border-retro-border bg-retro-panel px-4 py-3"},ge={class:"text-xs font-mono text-retro-yellow"},he={key:2,class:"rounded border border-retro-border bg-retro-panel px-4 py-3"},pe={key:3,class:"space-y-4"},ve={key:0,class:"text-xs font-mono text-retro-muted"},De={key:1,class:"text-xs font-mono text-retro-muted"},xe={class:"flex flex-col gap-2"},Ce={class:"flex flex-col gap-2"},Ee={class:"flex items-start justify-between gap-3"},Se={class:"text-sm font-mono text-retro-text"},we={key:0,class:"text-xs font-mono text-retro-yellow"},Pe={key:1,class:"text-xs font-mono text-retro-yellow"},Me={class:"text-xs text-retro-muted leading-tight"},Ae={class:"flex flex-wrap gap-2"},Oe={key:0,class:"text-xs font-mono text-retro-yellow"},Ne={class:"space-y-1.5"},ke=["value","checked","disabled","onChange"],Ie={class:"flex-1 space-y-0.5"},Te={class:"flex items-center gap-2"},Be={class:"text-sm font-mono text-retro-text"},Re={key:0,class:"text-[0.55rem] font-mono uppercase tracking-[0.25em] text-retro-cyan border border-retro-cyan rounded-full px-2 py-0.5"},Le={class:"text-xs text-retro-muted leading-tight"},et=ae({__name:"ProviderSelector",props:{providers:{},selected:{},permissionMode:{},pending:{type:Boolean},errorMessage:{}},emits:["select"],setup(e,{emit:t}){const o=e,l=t,r=[{key:"streaming",label:"Streaming"},{key:"permissions",label:"Permissions"},{key:"resume",label:"Session Resume"},{key:"autoCommit",label:"Auto Commit"}],_=M(()=>o.permissionMode==="ask"||o.permissionMode==="plan"),s=M(()=>me[o.permissionMode]),a=M(()=>!0);function g(u){const y=!_.value||u.capabilities.permissions,n=!a.value||u.capabilities.streaming;return y&&n}function D(u){return _.value&&!u.capabilities.permissions?`${u.name} cannot be used with ${s.value} because it does not expose permission prompts.`:a.value&&!u.capabilities.streaming?`${u.name} is unavailable because streaming runtime prerequisites are not satisfied.`:null}function i(u,y){g(u)&&l("select",{providerId:u.id,modelKey:y})}function d(u,y){return o.selected.providerId===u&&o.selected.modelKey===y}return(u,y)=>(h(),p("div",ye,[e.pending?(h(),p("div",_e,[...y[0]||(y[0]=[b("p",{class:"text-xs font-mono text-retro-text"},"Loading providers…",-1)])])):e.errorMessage?(h(),p("div",be,[b("p",ge,"Unable to load providers: "+E(e.errorMessage),1)])):e.providers.length===0?(h(),p("div",he,[...y[1]||(y[1]=[b("p",{class:"text-xs font-mono text-retro-muted"},"No AI providers are configured on the server. Check with your administrator.",-1)])])):(h(),p("div",pe,[_.value?(h(),p("p",ve," Permission mode "+E(s.value)+" requires a provider that supports permission prompts. Incompatible providers are disabled. ",1)):P("",!0),a.value?(h(),p("p",De," Chat currently requires a provider with streaming support. Providers without streaming are shown for preparation but disabled. ")):P("",!0),(h(!0),p(I,null,T(e.providers,n=>(h(),p("article",{key:n.id,class:O(["rounded border border-retro-border bg-retro-panel p-4 space-y-3 transition",{"border-retro-cyan bg-retro-cyan/5":e.selected.providerId===n.id,"hover:border-retro-muted":e.selected.providerId!==n.id}])},[b("div",xe,[b("div",Ce,[b("div",Ee,[b("span",Se,E(n.name),1),_.value&&!n.capabilities.permissions?(h(),p("div",we," Permissions missing ")):a.value&&!n.capabilities.streaming?(h(),p("div",Pe," Streaming missing ")):P("",!0)]),b("p",Me,E(n.description),1),b("div",Ae,[(h(),p(I,null,T(r,c=>b("span",{key:c.key,class:O(["inline-flex items-center gap-1.5 rounded-full border px-2.5 py-0.5 text-[0.6rem] font-mono uppercase tracking-[0.18em]",n.capabilities[c.key]?"border-retro-cyan/70 text-retro-cyan bg-retro-cyan/10":"border-retro-border text-retro-muted bg-retro-dark/60"])},[b("span",{class:O(["h-1.5 w-1.5 rounded-full",n.capabilities[c.key]?"bg-retro-cyan":"bg-retro-muted"])},null,2),se(" "+E(c.label),1)],2)),64))])])]),D(n)?(h(),p("p",Oe,E(D(n)),1)):P("",!0),b("div",Ne,[(h(!0),p(I,null,T(n.models,c=>(h(),p("label",{key:c.key,class:O(["flex items-start gap-3 px-3 py-2 rounded border cursor-pointer transition-colors",[d(n.id,c.key)?"border-retro-cyan bg-retro-cyan/10":"border-retro-border bg-retro-panel hover:border-retro-muted",g(n)?"":"opacity-60 cursor-not-allowed"]])},[b("input",{type:"radio",name:"provider-model",value:`${n.id}:${c.key}`,checked:d(n.id,c.key),disabled:!g(n),class:"mt-1 h-3.5 w-3.5 text-retro-cyan accent-retro-cyan",onChange:S=>i(n,c.key)},null,40,ke),b("div",Ie,[b("div",Te,[b("span",Be,E(c.label),1),c.default?(h(),p("span",Re," Default ")):P("",!0)]),b("p",Le,E(c.description),1)])],2))),128))])],2))),128))]))]))}});export{je as M,Ue as P,ze as S,Je as W,et as _,Ke as a,qe as b,Ge as c,Ye as d,Qe as e,$e as f,Xe as g,Fe as h,Ze as i,me as j,We as k,He as u};
@@ -1 +1 @@
1
- import{$ as h,a0 as u,g as M}from"./xDSloGc6.js";const v="claude",l="sonnet",f=[{value:"sonnet",label:"Sonnet",description:"Balanced performance and cost"},{value:"opus",label:"Opus",description:"Most capable, higher cost"},{value:"haiku",label:"Haiku",description:"Fast and cost-effective"}];function g(e){if(!e)return{};const o={},t=typeof e.claudeModel=="string"&&f.some(d=>d.value===e.claudeModel)?e.claudeModel:void 0;typeof e.providerId=="string"?(o.providerId=e.providerId,typeof e.providerModelKey=="string"&&e.providerModelKey.length>0?o.providerModelKey=e.providerModelKey:t?o.providerModelKey=t:o.providerModelKey=l):t&&(o.providerId="claude",o.providerModelKey=t),(e.theme==="dark"||e.theme==="light")&&(o.theme=e.theme);const r=e.permissionMode;return r&&["plan","ask","auto","bypass"].includes(String(r))&&(o.permissionMode=r),typeof e.autoGenerateCommitMessages=="boolean"&&(o.autoGenerateCommitMessages=e.autoGenerateCommitMessages),o}const y=h("settings",{state:()=>({providerId:v,providerModelKey:l,theme:"dark",permissionMode:"ask",autoGenerateCommitMessages:!1,_hydrated:!1}),getters:{providerSelection:e=>({providerId:e.providerId,modelKey:e.providerModelKey})},actions:{async hydrate(){if(!this._hydrated)try{const e=await $fetch("/api/settings"),o=g(e);o.providerId!==void 0&&(this.providerId=o.providerId),o.providerModelKey!==void 0&&(this.providerModelKey=o.providerModelKey),o.theme!==void 0&&(this.theme=o.theme),o.permissionMode!==void 0&&(this.permissionMode=o.permissionMode),o.autoGenerateCommitMessages!==void 0&&(this.autoGenerateCommitMessages=o.autoGenerateCommitMessages),this._hydrated=!0}catch(e){console.error("Failed to load settings:",e)}},setTheme(e){this.theme=e,this._saveToServer()},setProviderSelection(e){this.providerId=e.providerId,this.providerModelKey=typeof e.modelKey=="string"&&e.modelKey.length>0?e.modelKey:l,this._saveToServer(!0)},setPermissionMode(e){this.permissionMode=e,this._saveToServer()},setAutoGenerateCommitMessages(e){this.autoGenerateCommitMessages=e,this._saveToServer()},resetToDefaults(){this.providerId=v,this.providerModelKey=l,this.theme="dark",this.permissionMode="ask",this.autoGenerateCommitMessages=!1,this._saveToServer()},_saveToServer(e=!1){const o={providerId:this.providerId,providerModelKey:this.providerModelKey,claudeModel:this.providerId==="claude"?this.providerModelKey:void 0,theme:this.theme,permissionMode:this.permissionMode,autoGenerateCommitMessages:this.autoGenerateCommitMessages};$fetch("/api/settings",{method:"POST",body:o}).then(t=>{if(!e||!t?.settings)return;const r=t.settings.providerId,d=t.settings.providerModelKey;typeof r=="string"&&(this.providerId=r),typeof d=="string"&&d.length>0&&(this.providerModelKey=d)}).catch(t=>{console.error("Failed to save settings:",t)})}}}),_=Object.freeze(Object.defineProperty({__proto__:null,useSettingsStore:y},Symbol.toStringTag,{value:"Module"})),n=M([]);function K(){const e=(i,s="info",a=3e3)=>{const p=`toast-${Date.now()}-${Math.random().toString(36).slice(2)}`,c={id:p,message:i,type:s,duration:a};return n.value.push(c),a>0&&setTimeout(()=>{o(p)},a),p},o=i=>{const s=n.value.findIndex(a=>a.id===i);s!==-1&&n.value.splice(s,1)},t=(i,s)=>e(i,"success",s),r=(i,s)=>e(i,"error",s),d=(i,s)=>e(i,"info",s),m=(i,s)=>e(i,"warning",s);return{toasts:u(n),add:e,remove:o,success:t,error:r,info:d,warning:m}}const S=Object.freeze(Object.defineProperty({__proto__:null,useToast:K},Symbol.toStringTag,{value:"Module"}));export{l as D,K as a,v as b,S as c,_ as s,y as u};
1
+ import{$ as h,a0 as u,g as M}from"./BwGW6ro4.js";const v="claude",l="sonnet",f=[{value:"sonnet",label:"Sonnet",description:"Balanced performance and cost"},{value:"opus",label:"Opus",description:"Most capable, higher cost"},{value:"haiku",label:"Haiku",description:"Fast and cost-effective"}];function g(e){if(!e)return{};const o={},t=typeof e.claudeModel=="string"&&f.some(d=>d.value===e.claudeModel)?e.claudeModel:void 0;typeof e.providerId=="string"?(o.providerId=e.providerId,typeof e.providerModelKey=="string"&&e.providerModelKey.length>0?o.providerModelKey=e.providerModelKey:t?o.providerModelKey=t:o.providerModelKey=l):t&&(o.providerId="claude",o.providerModelKey=t),(e.theme==="dark"||e.theme==="light")&&(o.theme=e.theme);const r=e.permissionMode;return r&&["plan","ask","auto","bypass"].includes(String(r))&&(o.permissionMode=r),typeof e.autoGenerateCommitMessages=="boolean"&&(o.autoGenerateCommitMessages=e.autoGenerateCommitMessages),o}const y=h("settings",{state:()=>({providerId:v,providerModelKey:l,theme:"dark",permissionMode:"ask",autoGenerateCommitMessages:!1,_hydrated:!1}),getters:{providerSelection:e=>({providerId:e.providerId,modelKey:e.providerModelKey})},actions:{async hydrate(){if(!this._hydrated)try{const e=await $fetch("/api/settings"),o=g(e);o.providerId!==void 0&&(this.providerId=o.providerId),o.providerModelKey!==void 0&&(this.providerModelKey=o.providerModelKey),o.theme!==void 0&&(this.theme=o.theme),o.permissionMode!==void 0&&(this.permissionMode=o.permissionMode),o.autoGenerateCommitMessages!==void 0&&(this.autoGenerateCommitMessages=o.autoGenerateCommitMessages),this._hydrated=!0}catch(e){console.error("Failed to load settings:",e)}},setTheme(e){this.theme=e,this._saveToServer()},setProviderSelection(e){this.providerId=e.providerId,this.providerModelKey=typeof e.modelKey=="string"&&e.modelKey.length>0?e.modelKey:l,this._saveToServer(!0)},setPermissionMode(e){this.permissionMode=e,this._saveToServer()},setAutoGenerateCommitMessages(e){this.autoGenerateCommitMessages=e,this._saveToServer()},resetToDefaults(){this.providerId=v,this.providerModelKey=l,this.theme="dark",this.permissionMode="ask",this.autoGenerateCommitMessages=!1,this._saveToServer()},_saveToServer(e=!1){const o={providerId:this.providerId,providerModelKey:this.providerModelKey,claudeModel:this.providerId==="claude"?this.providerModelKey:void 0,theme:this.theme,permissionMode:this.permissionMode,autoGenerateCommitMessages:this.autoGenerateCommitMessages};$fetch("/api/settings",{method:"POST",body:o}).then(t=>{if(!e||!t?.settings)return;const r=t.settings.providerId,d=t.settings.providerModelKey;typeof r=="string"&&(this.providerId=r),typeof d=="string"&&d.length>0&&(this.providerModelKey=d)}).catch(t=>{console.error("Failed to save settings:",t)})}}}),_=Object.freeze(Object.defineProperty({__proto__:null,useSettingsStore:y},Symbol.toStringTag,{value:"Module"})),n=M([]);function K(){const e=(i,s="info",a=3e3)=>{const p=`toast-${Date.now()}-${Math.random().toString(36).slice(2)}`,c={id:p,message:i,type:s,duration:a};return n.value.push(c),a>0&&setTimeout(()=>{o(p)},a),p},o=i=>{const s=n.value.findIndex(a=>a.id===i);s!==-1&&n.value.splice(s,1)},t=(i,s)=>e(i,"success",s),r=(i,s)=>e(i,"error",s),d=(i,s)=>e(i,"info",s),m=(i,s)=>e(i,"warning",s);return{toasts:u(n),add:e,remove:o,success:t,error:r,info:d,warning:m}}const S=Object.freeze(Object.defineProperty({__proto__:null,useToast:K},Symbol.toStringTag,{value:"Module"}));export{l as D,K as a,v as b,S as c,_ as s,y as u};
@@ -1 +1 @@
1
- import{u as f,a as g}from"./BDt4jGdk.js";import{_ as x,u as S}from"./DYq0avGL.js";import{d as _,o as y,F as M,y as w,z as C,A as s,C as h,G as n,k as i}from"./xDSloGc6.js";const A={class:"p-6 max-w-2xl"},E={class:"mt-8 space-y-8"},D=_({__name:"settings",async setup(P){let r,a;const o=f(),d=g();y(()=>{o.hydrate()});const{data:p,pending:l,error:c}=([r,a]=M(()=>S("ai-providers",()=>$fetch("/api/ai/providers"))),r=await r,a(),r),m=i(()=>p.value?.providers??[]),u=i(()=>{const t=c.value;return t?t instanceof Error?t.message:String(t):null}),v=t=>{o.setProviderSelection(t),d.success("Settings saved")};return(t,e)=>(w(),C("div",A,[e[2]||(e[2]=s("h1",{class:"text-2xl font-bold text-retro-cyan font-mono"},"Settings",-1)),e[3]||(e[3]=s("p",{class:"mt-2 text-retro-muted"},"Configure your Spec Cat preferences.",-1)),s("div",E,[s("section",null,[e[0]||(e[0]=s("h2",{class:"text-lg font-mono text-retro-text mb-4"},"AI Provider",-1)),e[1]||(e[1]=s("p",{class:"text-sm text-retro-muted mb-4"}," Select the provider and model that should power new conversations. ",-1)),h(x,{providers:m.value,selected:n(o).providerSelection,permissionMode:n(o).permissionMode,pending:n(l),errorMessage:u.value,onSelect:v},null,8,["providers","selected","permissionMode","pending","errorMessage"])])])]))}});export{D as default};
1
+ import{u as f,a as g}from"./DCQ8fVjv.js";import{_ as x,u as S}from"./D9HkWjwL.js";import{d as _,o as y,F as M,y as w,z as C,A as s,C as h,G as n,k as i}from"./BwGW6ro4.js";const A={class:"p-6 max-w-2xl"},E={class:"mt-8 space-y-8"},D=_({__name:"settings",async setup(P){let r,a;const o=f(),d=g();y(()=>{o.hydrate()});const{data:p,pending:l,error:c}=([r,a]=M(()=>S("ai-providers",()=>$fetch("/api/ai/providers"))),r=await r,a(),r),m=i(()=>p.value?.providers??[]),u=i(()=>{const t=c.value;return t?t instanceof Error?t.message:String(t):null}),v=t=>{o.setProviderSelection(t),d.success("Settings saved")};return(t,e)=>(w(),C("div",A,[e[2]||(e[2]=s("h1",{class:"text-2xl font-bold text-retro-cyan font-mono"},"Settings",-1)),e[3]||(e[3]=s("p",{class:"mt-2 text-retro-muted"},"Configure your Spec Cat preferences.",-1)),s("div",E,[s("section",null,[e[0]||(e[0]=s("h2",{class:"text-lg font-mono text-retro-text mb-4"},"AI Provider",-1)),e[1]||(e[1]=s("p",{class:"text-sm text-retro-muted mb-4"}," Select the provider and model that should power new conversations. ",-1)),h(x,{providers:m.value,selected:n(o).providerSelection,permissionMode:n(o).permissionMode,pending:n(l),errorMessage:u.value,onSelect:v},null,8,["providers","selected","permissionMode","pending","errorMessage"])])])]))}});export{D as default};
@@ -1 +1 @@
1
- {"id":"23707bc3-d223-45cd-b9db-ffcc7aca2680","timestamp":1773985853063}
1
+ {"id":"3ad3d42f-406b-41b2-a79c-2b068cdf0ccd","timestamp":1774063617181}
@@ -0,0 +1 @@
1
+ {"id":"3ad3d42f-406b-41b2-a79c-2b068cdf0ccd","timestamp":1774063617181,"prerendered":[]}
@@ -1 +1 @@
1
- .commit-body-rendered[data-v-29f450ea] a{color:var(--retro-blue,#60a5fa)}.commit-body-rendered[data-v-29f450ea] a:hover{text-decoration:underline}.commit-body-rendered[data-v-29f450ea] p{margin-bottom:.5rem}.commit-body-rendered[data-v-29f450ea] p:last-child{margin-bottom:0}.commit-body-rendered[data-v-29f450ea] ol,.commit-body-rendered[data-v-29f450ea] ul{margin-bottom:.5rem;padding-left:1.5rem}.commit-body-rendered[data-v-29f450ea] li{margin-bottom:.25rem}.commit-body-rendered[data-v-29f450ea] code{background-color:var(--retro-panel,#1e293b);border-radius:.25rem;font-size:.8125rem;padding:.125rem .375rem}.commit-body-rendered[data-v-29f450ea] pre{background-color:var(--retro-panel,#1e293b);border-radius:.25rem;margin-bottom:.5rem;overflow-x:auto;padding:.75rem}.commit-body-rendered[data-v-29f450ea] blockquote{border-left:3px solid var(--retro-muted,#64748b);color:var(--retro-muted,#64748b);margin-bottom:.5rem;margin-left:0;padding-left:.75rem}.fade-enter-active[data-v-52ace892],.fade-leave-active[data-v-52ace892]{transition:opacity .2s ease}.fade-enter-from[data-v-52ace892],.fade-leave-to[data-v-52ace892]{opacity:0}[data-v-d77d4160] .cm-target-line{background:linear-gradient(90deg,rgba(244,63,94,.28),rgba(244,63,94,.08) 75%,transparent);transition:background-color .24s ease}.spec-markdown h1{border-bottom:1px solid rgb(var(--color-retro-border));font-size:1.5rem;margin-bottom:.75rem;padding-bottom:.5rem}.spec-markdown h1,.spec-markdown h2{color:rgb(var(--color-retro-cyan));font-weight:700}.spec-markdown h2{font-size:1.25rem;margin-bottom:.5rem;margin-top:1.5rem}.spec-markdown h3{color:rgb(var(--color-retro-text));font-size:1.1rem;font-weight:600;margin-bottom:.375rem;margin-top:1.25rem}.spec-markdown h4,.spec-markdown h5,.spec-markdown h6{color:rgb(var(--color-retro-muted));font-size:.95rem;font-weight:600;margin-bottom:.25rem;margin-top:1rem}.spec-markdown p{line-height:1.7;margin-bottom:.625rem}.spec-markdown ol,.spec-markdown ul{margin-bottom:.625rem;padding-left:1.5rem}.spec-markdown ul{list-style-type:disc}.spec-markdown ol{list-style-type:decimal}.spec-markdown li{line-height:1.6;margin-bottom:.25rem}.spec-markdown strong{color:rgb(var(--color-retro-text));font-weight:700}.spec-markdown em{color:rgb(var(--color-retro-muted));font-style:italic}.spec-markdown a{color:rgb(var(--color-retro-cyan));text-decoration:underline}.spec-markdown code{border-radius:.25rem;color:rgb(var(--color-retro-green));font-size:.8125rem;padding:.125rem .375rem}.spec-markdown code,.spec-markdown pre{background:rgb(var(--color-retro-dark))}.spec-markdown pre{border:1px solid rgb(var(--color-retro-border));border-radius:.375rem;margin-bottom:.75rem;overflow-x:auto;padding:.75rem}.spec-markdown pre code{background:transparent;color:rgb(var(--color-retro-text));font-size:.8125rem;padding:0}.spec-markdown table{border-collapse:collapse;font-size:.8125rem;margin-bottom:.75rem;width:100%}.spec-markdown th{background:rgb(var(--color-retro-dark));color:rgb(var(--color-retro-cyan));font-weight:600;text-align:left}.spec-markdown td,.spec-markdown th{border:1px solid rgb(var(--color-retro-border));padding:.375rem .5rem}.spec-markdown hr{border:none;border-top:1px solid rgb(var(--color-retro-border));margin:1.25rem 0}.spec-markdown blockquote{border-left:3px solid rgb(var(--color-retro-cyan));color:rgb(var(--color-retro-muted));margin-bottom:.5rem;padding-left:.75rem}.spec-markdown input[type=checkbox]{margin-right:.375rem}.spec-markdown li:has(input[type=checkbox]){list-style-type:none;margin-left:-1.5rem}.snippet-markdown[data-v-5199b408] p{margin:0}.snippet-markdown[data-v-5199b408] code{color:rgb(var(--color-retro-cyan));font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.snippet-markdown[data-v-5199b408] strong{color:rgb(var(--color-retro-text))}.snippet-markdown[data-v-5199b408] mark{background:rgba(var(--color-retro-cyan),.24);border-radius:2px;color:rgb(var(--color-retro-text));padding:0 2px}.conflict-viewer{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px;line-height:1.6}.conflict-code{min-width:-moz-fit-content;min-width:fit-content;padding:0}.conflict-line{display:flex;min-height:1.6em;padding:0 16px 0 0;white-space:pre}.conflict-line .line-number{color:rgb(var(--color-retro-muted)/.5);display:inline-block;flex-shrink:0;min-width:48px;padding:0 12px;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none}.conflict-line .line-content{flex:1;white-space:pre}.conflict-line.conflict-ours{background-color:rgb(var(--color-retro-cyan)/.08);border-left:3px solid rgb(var(--color-retro-cyan)/.4)}.conflict-line.conflict-ours .line-number{color:rgb(var(--color-retro-cyan)/.6)}.conflict-line.conflict-theirs{background-color:rgb(var(--color-retro-magenta)/.08);border-left:3px solid rgb(var(--color-retro-magenta)/.4)}.conflict-line.conflict-theirs .line-number{color:rgb(var(--color-retro-magenta)/.6)}.conflict-line.conflict-marker-line{background-color:rgb(var(--color-retro-yellow)/.1);border-left:3px solid rgb(var(--color-retro-yellow)/.5)}.conflict-line.conflict-marker-line .line-content{color:rgb(var(--color-retro-yellow)/.7);font-style:italic}.conflict-line.conflict-marker-line .line-number{color:rgb(var(--color-retro-yellow)/.5)}.conflict-inline-actions{background-color:rgb(var(--color-retro-yellow)/.06);border-left:3px solid rgb(var(--color-retro-yellow)/.35);display:flex;gap:6px;padding:4px 12px 6px 60px}.conflict-inline-button{background:rgb(var(--color-retro-panel)/.6);border:1px solid rgb(var(--color-retro-subtle)/.6);border-radius:4px;color:rgb(var(--color-retro-text));cursor:pointer;font-family:inherit;font-size:11px;height:20px;line-height:18px;padding:0 8px}.conflict-inline-button:hover{background:rgb(var(--color-retro-panel))}.conflict-inline-button-ours{border-color:rgb(var(--color-retro-cyan)/.55);color:rgb(var(--color-retro-cyan))}.conflict-inline-button-theirs{border-color:rgb(var(--color-retro-magenta)/.55);color:rgb(var(--color-retro-magenta))}.conflict-inline-button-both{border-color:rgb(var(--color-retro-green)/.55);color:rgb(var(--color-retro-green))}.conflict-line:not(.conflict-ours):not(.conflict-theirs):not(.conflict-marker-line){border-left:3px solid transparent}.diff-table[data-v-74bf9bf3]{line-height:1.5}.diff-line-num[data-v-74bf9bf3]{color:var(--retro-muted,#64748b);min-width:3rem;vertical-align:top}.diff-line-num[data-v-74bf9bf3],.diff-sign[data-v-74bf9bf3]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.diff-sign[data-v-74bf9bf3]{display:inline-block;width:1ch}.diff-add[data-v-74bf9bf3]{background-color:#10b9811f}.diff-add .diff-line-num[data-v-74bf9bf3]{background-color:#10b9812e}.diff-add .diff-line-content[data-v-74bf9bf3],.diff-add .diff-sign[data-v-74bf9bf3]{color:var(--retro-green,#10b981)}.diff-delete[data-v-74bf9bf3]{background-color:#ef44441f}.diff-delete .diff-line-num[data-v-74bf9bf3]{background-color:#ef44442e}.diff-delete .diff-line-content[data-v-74bf9bf3],.diff-delete .diff-sign[data-v-74bf9bf3]{color:var(--retro-red,#ef4444)}.diff-context .diff-line-content[data-v-74bf9bf3]{color:var(--retro-text,#e2e8f0)}.diff-hunk-header[data-v-74bf9bf3]{background-color:#06b6d414;color:var(--retro-cyan,#06b6d4);font-style:italic}.diff-warning td[data-v-74bf9bf3]{border-bottom:1px solid var(--retro-border,#334155)}
1
+ .commit-body-rendered[data-v-29f450ea] a{color:var(--retro-blue,#60a5fa)}.commit-body-rendered[data-v-29f450ea] a:hover{text-decoration:underline}.commit-body-rendered[data-v-29f450ea] p{margin-bottom:.5rem}.commit-body-rendered[data-v-29f450ea] p:last-child{margin-bottom:0}.commit-body-rendered[data-v-29f450ea] ol,.commit-body-rendered[data-v-29f450ea] ul{margin-bottom:.5rem;padding-left:1.5rem}.commit-body-rendered[data-v-29f450ea] li{margin-bottom:.25rem}.commit-body-rendered[data-v-29f450ea] code{background-color:var(--retro-panel,#1e293b);border-radius:.25rem;font-size:.8125rem;padding:.125rem .375rem}.commit-body-rendered[data-v-29f450ea] pre{background-color:var(--retro-panel,#1e293b);border-radius:.25rem;margin-bottom:.5rem;overflow-x:auto;padding:.75rem}.commit-body-rendered[data-v-29f450ea] blockquote{border-left:3px solid var(--retro-muted,#64748b);color:var(--retro-muted,#64748b);margin-bottom:.5rem;margin-left:0;padding-left:.75rem}.fade-enter-active[data-v-52ace892],.fade-leave-active[data-v-52ace892]{transition:opacity .2s ease}.fade-enter-from[data-v-52ace892],.fade-leave-to[data-v-52ace892]{opacity:0}[data-v-d77d4160] .cm-target-line{background:linear-gradient(90deg,rgba(244,63,94,.28),rgba(244,63,94,.08) 75%,transparent);transition:background-color .24s ease}.spec-markdown h1{border-bottom:1px solid rgb(var(--color-retro-border));font-size:1.5rem;margin-bottom:.75rem;padding-bottom:.5rem}.spec-markdown h1,.spec-markdown h2{color:rgb(var(--color-retro-cyan));font-weight:700}.spec-markdown h2{font-size:1.25rem;margin-bottom:.5rem;margin-top:1.5rem}.spec-markdown h3{color:rgb(var(--color-retro-text));font-size:1.1rem;font-weight:600;margin-bottom:.375rem;margin-top:1.25rem}.spec-markdown h4,.spec-markdown h5,.spec-markdown h6{color:rgb(var(--color-retro-muted));font-size:.95rem;font-weight:600;margin-bottom:.25rem;margin-top:1rem}.spec-markdown p{line-height:1.7;margin-bottom:.625rem}.spec-markdown ol,.spec-markdown ul{margin-bottom:.625rem;padding-left:1.5rem}.spec-markdown ul{list-style-type:disc}.spec-markdown ol{list-style-type:decimal}.spec-markdown li{line-height:1.6;margin-bottom:.25rem}.spec-markdown strong{color:rgb(var(--color-retro-text));font-weight:700}.spec-markdown em{color:rgb(var(--color-retro-muted));font-style:italic}.spec-markdown a{color:rgb(var(--color-retro-cyan));text-decoration:underline}.spec-markdown code{border-radius:.25rem;color:rgb(var(--color-retro-green));font-size:.8125rem;padding:.125rem .375rem}.spec-markdown code,.spec-markdown pre{background:rgb(var(--color-retro-dark))}.spec-markdown pre{border:1px solid rgb(var(--color-retro-border));border-radius:.375rem;margin-bottom:.75rem;overflow-x:auto;padding:.75rem}.spec-markdown pre code{background:transparent;color:rgb(var(--color-retro-text));font-size:.8125rem;padding:0}.spec-markdown table{border-collapse:collapse;font-size:.8125rem;margin-bottom:.75rem;width:100%}.spec-markdown th{background:rgb(var(--color-retro-dark));color:rgb(var(--color-retro-cyan));font-weight:600;text-align:left}.spec-markdown td,.spec-markdown th{border:1px solid rgb(var(--color-retro-border));padding:.375rem .5rem}.spec-markdown hr{border:none;border-top:1px solid rgb(var(--color-retro-border));margin:1.25rem 0}.spec-markdown blockquote{border-left:3px solid rgb(var(--color-retro-cyan));color:rgb(var(--color-retro-muted));margin-bottom:.5rem;padding-left:.75rem}.spec-markdown input[type=checkbox]{margin-right:.375rem}.spec-markdown li:has(input[type=checkbox]){list-style-type:none;margin-left:-1.5rem}.snippet-markdown[data-v-5199b408] p{margin:0}.snippet-markdown[data-v-5199b408] code{color:rgb(var(--color-retro-cyan));font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.snippet-markdown[data-v-5199b408] strong{color:rgb(var(--color-retro-text))}.snippet-markdown[data-v-5199b408] mark{background:rgba(var(--color-retro-cyan),.24);border-radius:2px;color:rgb(var(--color-retro-text));padding:0 2px}.conflict-viewer{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px;line-height:1.6}.conflict-code{min-width:-moz-fit-content;min-width:fit-content;padding:0}.conflict-line{display:flex;min-height:1.6em;padding:0 16px 0 0;white-space:pre}.conflict-line .line-number{color:rgb(var(--color-retro-muted)/.5);display:inline-block;flex-shrink:0;min-width:48px;padding:0 12px;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none}.conflict-line .line-content{flex:1;white-space:pre}.conflict-line.conflict-ours{background-color:rgb(var(--color-retro-cyan)/.08);border-left:3px solid rgb(var(--color-retro-cyan)/.4)}.conflict-line.conflict-ours .line-number{color:rgb(var(--color-retro-cyan)/.6)}.conflict-line.conflict-theirs{background-color:rgb(var(--color-retro-magenta)/.08);border-left:3px solid rgb(var(--color-retro-magenta)/.4)}.conflict-line.conflict-theirs .line-number{color:rgb(var(--color-retro-magenta)/.6)}.conflict-line.conflict-marker-line{background-color:rgb(var(--color-retro-yellow)/.1);border-left:3px solid rgb(var(--color-retro-yellow)/.5)}.conflict-line.conflict-marker-line .line-content{color:rgb(var(--color-retro-yellow)/.7);font-style:italic}.conflict-line.conflict-marker-line .line-number{color:rgb(var(--color-retro-yellow)/.5)}.conflict-inline-actions{background-color:rgb(var(--color-retro-yellow)/.06);border-left:3px solid rgb(var(--color-retro-yellow)/.35);display:flex;gap:6px;padding:4px 12px 6px 60px}.conflict-inline-button{background:rgb(var(--color-retro-panel)/.6);border:1px solid rgb(var(--color-retro-subtle)/.6);border-radius:4px;color:rgb(var(--color-retro-text));cursor:pointer;font-family:inherit;font-size:11px;height:20px;line-height:18px;padding:0 8px}.conflict-inline-button:hover{background:rgb(var(--color-retro-panel))}.conflict-inline-button-ours{border-color:rgb(var(--color-retro-cyan)/.55);color:rgb(var(--color-retro-cyan))}.conflict-inline-button-theirs{border-color:rgb(var(--color-retro-magenta)/.55);color:rgb(var(--color-retro-magenta))}.conflict-inline-button-both{border-color:rgb(var(--color-retro-green)/.55);color:rgb(var(--color-retro-green))}.conflict-line:not(.conflict-ours):not(.conflict-theirs):not(.conflict-marker-line){border-left:3px solid transparent}.diff-table[data-v-74bf9bf3]{line-height:1.5}.diff-line-num[data-v-74bf9bf3]{color:var(--retro-muted,#64748b);min-width:3rem;vertical-align:top}.diff-line-num[data-v-74bf9bf3],.diff-sign[data-v-74bf9bf3]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.diff-sign[data-v-74bf9bf3]{display:inline-block;width:1ch}.diff-add[data-v-74bf9bf3]{background-color:#10b9811f}.diff-add .diff-line-num[data-v-74bf9bf3]{background-color:#10b9812e}.diff-add .diff-line-content[data-v-74bf9bf3],.diff-add .diff-sign[data-v-74bf9bf3]{color:var(--retro-green,#10b981)}.diff-delete[data-v-74bf9bf3]{background-color:#ef44441f}.diff-delete .diff-line-num[data-v-74bf9bf3]{background-color:#ef44442e}.diff-delete .diff-line-content[data-v-74bf9bf3],.diff-delete .diff-sign[data-v-74bf9bf3]{color:var(--retro-red,#ef4444)}.diff-context .diff-line-content[data-v-74bf9bf3]{color:var(--retro-text,#e2e8f0)}.diff-hunk-header[data-v-74bf9bf3]{background-color:#06b6d414;color:var(--retro-cyan,#06b6d4);font-style:italic}.diff-warning td[data-v-74bf9bf3]{border-bottom:1px solid var(--retro-border,#334155)}.splash-glow[data-v-7fddb179]{animation:flicker-7fddb179 .15s ease-in-out .3s 1;text-shadow:0 0 10px rgb(var(--color-retro-cyan)/.6),0 0 30px rgb(var(--color-retro-cyan)/.3)}@keyframes flicker-7fddb179{0%,to{opacity:1}50%{opacity:.7}}
@@ -0,0 +1 @@
1
+ *,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}body,html{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-black)/var(--tw-bg-opacity,1));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace,monospace;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(var(--color-retro-text)/var(--tw-text-opacity,1));overflow:hidden}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.panel{border-width:1px;--tw-border-opacity:1;border-color:rgb(var(--color-retro-border)/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(var(--color-retro-panel)/var(--tw-bg-opacity,1));padding:.75rem}.\!input,.input{border-width:1px;--tw-border-opacity:1;border-color:rgb(var(--color-retro-border)/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(var(--color-retro-dark)/var(--tw-bg-opacity,1));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace,monospace;font-size:.875rem;line-height:1.25rem;padding:.5rem .75rem;--tw-text-opacity:1;color:rgb(var(--color-retro-text)/var(--tw-text-opacity,1))}.\!input:focus,.input:focus{--tw-border-opacity:1;border-color:rgb(var(--color-retro-cyan)/var(--tw-border-opacity,1));outline:2px solid transparent;outline-offset:2px}.\!input::-moz-placeholder{--tw-text-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-text-opacity,1))}.\!input::placeholder{--tw-text-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-text-opacity,1))}.input::-moz-placeholder{--tw-text-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-text-opacity,1))}.input::placeholder{--tw-text-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-text-opacity,1))}.scrollbar-custom::-webkit-scrollbar{height:8px;width:8px}.scrollbar-custom::-webkit-scrollbar-track{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-black)/var(--tw-bg-opacity,1))}.scrollbar-custom::-webkit-scrollbar-thumb{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(var(--color-retro-border)/var(--tw-bg-opacity,1))}.scrollbar-custom::-webkit-scrollbar-thumb:hover{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-muted)/var(--tw-bg-opacity,1))}.feature-card-light{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-image:radial-gradient(circle at 15% 0,rgba(var(--color-retro-cyan),.18),transparent 40%),radial-gradient(circle at 85% 5%,rgba(var(--color-retro-magenta),.12),transparent 50%),linear-gradient(145deg,rgb(var(--color-feature-panel)) 0,rgb(var(--color-feature-border)));border-color:rgb(var(--color-feature-border));box-shadow:0 25px 45px #0f172a1f;transition:box-shadow .15s ease,border-color .15s ease}.feature-card-light:hover{border-color:rgb(var(--color-retro-muted));box-shadow:0 30px 55px #0f172a2e}.feature-card-active{background-image:radial-gradient(circle at 110% -15%,rgba(var(--color-retro-cyan),.35),transparent 55%),radial-gradient(circle at 45% 15%,rgba(var(--color-retro-pink),.18),transparent 60%),linear-gradient(150deg,rgba(var(--color-feature-panel),.9) 0,rgba(var(--color-retro-magenta),.2) 70%,rgb(var(--color-feature-border)));border-color:rgb(var(--color-retro-cyan));box-shadow:0 0 0 1px rgb(var(--color-retro-cyan)/.5),0 30px 60px rgba(var(--color-retro-cyan),.25);position:relative;z-index:1}.dark .feature-card-light{-webkit-backdrop-filter:none;backdrop-filter:none;background-image:linear-gradient(135deg,rgb(var(--color-retro-panel)) 0 55%,rgba(var(--color-retro-cyan),.05));border-color:rgb(var(--color-retro-border));box-shadow:none}.dark .feature-card-light:hover{border-color:rgb(var(--color-retro-muted))}.dark .feature-card-active{background-image:linear-gradient(135deg,rgba(var(--color-retro-cyan),.1) 0,rgb(var(--color-retro-panel)) 60%,rgba(var(--color-retro-magenta),.05));box-shadow:none}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-right-2{right:-.5rem}.-top-2{top:-.5rem}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-full{bottom:100%}.left-0{left:0}.left-2\.5{left:.625rem}.left-3{left:.75rem}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-4{top:1rem}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.z-\[9999\]{z-index:9999}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-bottom:.25rem;margin-top:.25rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-8{margin-bottom:2rem;margin-top:2rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-9{height:2.25rem}.h-\[80vh\]{height:80vh}.h-\[94vh\]{height:94vh}.h-full{height:100%}.h-screen{height:100vh}.max-h-20{max-height:5rem}.max-h-36{max-height:9rem}.max-h-40{max-height:10rem}.max-h-52{max-height:13rem}.max-h-60{max-height:15rem}.max-h-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-\[50\%\]{max-height:50%}.max-h-\[58vh\]{max-height:58vh}.max-h-\[70vh\]{max-height:70vh}.min-h-0{min-height:0}.min-h-\[132px\]{min-height:132px}.min-h-\[40px\]{min-height:40px}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-\[90vw\]{width:90vw}.w-\[96vw\]{width:96vw}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.min-w-12{min-width:3rem}.min-w-\[140px\]{min-width:140px}.min-w-\[200px\]{min-width:200px}.min-w-\[220px\]{min-width:220px}.min-w-\[320px\]{min-width:320px}.min-w-\[60px\]{min-width:60px}.min-w-\[760px\]{min-width:760px}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-\[154px\]{max-width:154px}.max-w-\[280px\]{max-width:280px}.max-w-\[42\%\]{max-width:42%}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.flex-grow-0{flex-grow:0}.border-collapse{border-collapse:collapse}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-4{--tw-translate-x:1rem}.translate-x-4,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px}.translate-y-1{--tw-translate-y:.25rem}.translate-y-1,.translate-y-2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-2{--tw-translate-y:.5rem}.rotate-90{--tw-rotate:90deg}.rotate-90,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-95,.scale-\[0\.995\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\[0\.995\]{--tw-scale-x:.995;--tw-scale-y:.995}.scale-\[0\.99\]{--tw-scale-x:.99;--tw-scale-y:.99}.scale-\[0\.99\],.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}.animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s ease-in-out infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-context-menu{cursor:context-menu}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize-none{resize:none}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[140px_1fr_1fr_1fr_120px\]{grid-template-columns:140px 1fr 1fr 1fr 120px}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.125rem*var(--tw-space-y-reverse));margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.375rem*var(--tw-space-y-reverse));margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-r{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-red-400\/40{border-color:#f8727266}.border-retro-border{--tw-border-opacity:1;border-color:rgb(var(--color-retro-border)/var(--tw-border-opacity,1))}.border-retro-border\/20{border-color:rgb(var(--color-retro-border)/.2)}.border-retro-border\/30{border-color:rgb(var(--color-retro-border)/.3)}.border-retro-border\/40{border-color:rgb(var(--color-retro-border)/.4)}.border-retro-border\/50{border-color:rgb(var(--color-retro-border)/.5)}.border-retro-border\/60{border-color:rgb(var(--color-retro-border)/.6)}.border-retro-border\/70{border-color:rgb(var(--color-retro-border)/.7)}.border-retro-border\/80{border-color:rgb(var(--color-retro-border)/.8)}.border-retro-cyan{--tw-border-opacity:1;border-color:rgb(var(--color-retro-cyan)/var(--tw-border-opacity,1))}.border-retro-cyan\/30{border-color:rgb(var(--color-retro-cyan)/.3)}.border-retro-cyan\/40{border-color:rgb(var(--color-retro-cyan)/.4)}.border-retro-cyan\/50{border-color:rgb(var(--color-retro-cyan)/.5)}.border-retro-cyan\/70{border-color:rgb(var(--color-retro-cyan)/.7)}.border-retro-cyan\/80{border-color:rgb(var(--color-retro-cyan)/.8)}.border-retro-green\/30{border-color:rgb(var(--color-retro-green)/.3)}.border-retro-green\/40{border-color:rgb(var(--color-retro-green)/.4)}.border-retro-green\/50{border-color:rgb(var(--color-retro-green)/.5)}.border-retro-magenta{--tw-border-opacity:1;border-color:rgb(var(--color-retro-magenta)/var(--tw-border-opacity,1))}.border-retro-magenta\/30{border-color:rgb(var(--color-retro-magenta)/.3)}.border-retro-magenta\/40{border-color:rgb(var(--color-retro-magenta)/.4)}.border-retro-magenta\/50{border-color:rgb(var(--color-retro-magenta)/.5)}.border-retro-muted{--tw-border-opacity:1;border-color:rgb(var(--color-retro-muted)/var(--tw-border-opacity,1))}.border-retro-muted\/30{border-color:rgb(var(--color-retro-muted)/.3)}.border-retro-orange\/30{border-color:rgb(var(--color-retro-orange)/.3)}.border-retro-orange\/50{border-color:rgb(var(--color-retro-orange)/.5)}.border-retro-red{--tw-border-opacity:1;border-color:rgb(var(--color-retro-red)/var(--tw-border-opacity,1))}.border-retro-red\/30{border-color:rgb(var(--color-retro-red)/.3)}.border-retro-red\/40{border-color:rgb(var(--color-retro-red)/.4)}.border-retro-red\/50{border-color:rgb(var(--color-retro-red)/.5)}.border-retro-subtle\/50{border-color:rgb(var(--color-retro-subtle)/.5)}.border-retro-yellow{--tw-border-opacity:1;border-color:rgb(var(--color-retro-yellow)/var(--tw-border-opacity,1))}.border-retro-yellow\/25{border-color:rgb(var(--color-retro-yellow)/.25)}.border-retro-yellow\/30{border-color:rgb(var(--color-retro-yellow)/.3)}.border-retro-yellow\/40{border-color:rgb(var(--color-retro-yellow)/.4)}.border-retro-yellow\/50{border-color:rgb(var(--color-retro-yellow)/.5)}.border-transparent{border-color:transparent}.border-t-retro-cyan{--tw-border-opacity:1;border-top-color:rgb(var(--color-retro-cyan)/var(--tw-border-opacity,1))}.border-t-transparent{border-top-color:transparent}.bg-black\/50{background-color:#00000080}.bg-black\/60{background-color:#0009}.bg-black\/70{background-color:#000000b3}.bg-black\/75{background-color:#000000bf}.bg-black\/80{background-color:#000c}.bg-retro-black{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-black)/var(--tw-bg-opacity,1))}.bg-retro-black\/50{background-color:rgb(var(--color-retro-black)/.5)}.bg-retro-black\/70{background-color:rgb(var(--color-retro-black)/.7)}.bg-retro-black\/80{background-color:rgb(var(--color-retro-black)/.8)}.bg-retro-border{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-border)/var(--tw-bg-opacity,1))}.bg-retro-cyan{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-cyan)/var(--tw-bg-opacity,1))}.bg-retro-cyan\/10{background-color:rgb(var(--color-retro-cyan)/.1)}.bg-retro-cyan\/15{background-color:rgb(var(--color-retro-cyan)/.15)}.bg-retro-cyan\/20{background-color:rgb(var(--color-retro-cyan)/.2)}.bg-retro-cyan\/5{background-color:rgb(var(--color-retro-cyan)/.05)}.bg-retro-dark{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-dark)/var(--tw-bg-opacity,1))}.bg-retro-dark\/30{background-color:rgb(var(--color-retro-dark)/.3)}.bg-retro-dark\/50{background-color:rgb(var(--color-retro-dark)/.5)}.bg-retro-dark\/60{background-color:rgb(var(--color-retro-dark)/.6)}.bg-retro-dark\/70{background-color:rgb(var(--color-retro-dark)/.7)}.bg-retro-dark\/80{background-color:rgb(var(--color-retro-dark)/.8)}.bg-retro-dark\/90{background-color:rgb(var(--color-retro-dark)/.9)}.bg-retro-green{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-green)/var(--tw-bg-opacity,1))}.bg-retro-green\/10{background-color:rgb(var(--color-retro-green)/.1)}.bg-retro-green\/15{background-color:rgb(var(--color-retro-green)/.15)}.bg-retro-green\/20{background-color:rgb(var(--color-retro-green)/.2)}.bg-retro-green\/30{background-color:rgb(var(--color-retro-green)/.3)}.bg-retro-magenta\/10{background-color:rgb(var(--color-retro-magenta)/.1)}.bg-retro-magenta\/15{background-color:rgb(var(--color-retro-magenta)/.15)}.bg-retro-magenta\/20{background-color:rgb(var(--color-retro-magenta)/.2)}.bg-retro-magenta\/5{background-color:rgb(var(--color-retro-magenta)/.05)}.bg-retro-muted{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-muted)/var(--tw-bg-opacity,1))}.bg-retro-muted\/50{background-color:rgb(var(--color-retro-muted)/.5)}.bg-retro-orange\/10{background-color:rgb(var(--color-retro-orange)/.1)}.bg-retro-orange\/15{background-color:rgb(var(--color-retro-orange)/.15)}.bg-retro-orange\/20{background-color:rgb(var(--color-retro-orange)/.2)}.bg-retro-panel{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-panel)/var(--tw-bg-opacity,1))}.bg-retro-panel\/40{background-color:rgb(var(--color-retro-panel)/.4)}.bg-retro-panel\/50{background-color:rgb(var(--color-retro-panel)/.5)}.bg-retro-panel\/60{background-color:rgb(var(--color-retro-panel)/.6)}.bg-retro-panel\/70{background-color:rgb(var(--color-retro-panel)/.7)}.bg-retro-panel\/95{background-color:rgb(var(--color-retro-panel)/.95)}.bg-retro-pink\/20{background-color:rgb(var(--color-retro-pink)/.2)}.bg-retro-red{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-red)/var(--tw-bg-opacity,1))}.bg-retro-red\/10{background-color:rgb(var(--color-retro-red)/.1)}.bg-retro-red\/20{background-color:rgb(var(--color-retro-red)/.2)}.bg-retro-red\/5{background-color:rgb(var(--color-retro-red)/.05)}.bg-retro-red\/80{background-color:rgb(var(--color-retro-red)/.8)}.bg-retro-red\/90{background-color:rgb(var(--color-retro-red)/.9)}.bg-retro-subtle\/10{background-color:rgb(var(--color-retro-subtle)/.1)}.bg-retro-yellow{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-yellow)/var(--tw-bg-opacity,1))}.bg-retro-yellow\/10{background-color:rgb(var(--color-retro-yellow)/.1)}.bg-retro-yellow\/15{background-color:rgb(var(--color-retro-yellow)/.15)}.bg-retro-yellow\/20{background-color:rgb(var(--color-retro-yellow)/.2)}.bg-retro-yellow\/30{background-color:rgb(var(--color-retro-yellow)/.3)}.bg-transparent{background-color:transparent}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-8{padding-left:2rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-7{padding-right:1.75rem}.pr-8{padding-right:2rem}.pt-16{padding-top:4rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[0\.55rem\]{font-size:.55rem}.text-\[0\.6rem\]{font-size:.6rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-\[0\.18em\]{letter-spacing:.18em}.tracking-\[0\.25em\]{letter-spacing:.25em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.text-retro-black{--tw-text-opacity:1;color:rgb(var(--color-retro-black)/var(--tw-text-opacity,1))}.text-retro-border{--tw-text-opacity:1;color:rgb(var(--color-retro-border)/var(--tw-text-opacity,1))}.text-retro-cyan{--tw-text-opacity:1;color:rgb(var(--color-retro-cyan)/var(--tw-text-opacity,1))}.text-retro-cyan\/80{color:rgb(var(--color-retro-cyan)/.8)}.text-retro-cyan\/90{color:rgb(var(--color-retro-cyan)/.9)}.text-retro-dark{--tw-text-opacity:1;color:rgb(var(--color-retro-dark)/var(--tw-text-opacity,1))}.text-retro-green{--tw-text-opacity:1;color:rgb(var(--color-retro-green)/var(--tw-text-opacity,1))}.text-retro-magenta{--tw-text-opacity:1;color:rgb(var(--color-retro-magenta)/var(--tw-text-opacity,1))}.text-retro-magenta\/80{color:rgb(var(--color-retro-magenta)/.8)}.text-retro-muted{--tw-text-opacity:1;color:rgb(var(--color-retro-muted)/var(--tw-text-opacity,1))}.text-retro-muted\/50{color:rgb(var(--color-retro-muted)/.5)}.text-retro-muted\/60{color:rgb(var(--color-retro-muted)/.6)}.text-retro-muted\/70{color:rgb(var(--color-retro-muted)/.7)}.text-retro-muted\/80{color:rgb(var(--color-retro-muted)/.8)}.text-retro-orange{--tw-text-opacity:1;color:rgb(var(--color-retro-orange)/var(--tw-text-opacity,1))}.text-retro-pink{--tw-text-opacity:1;color:rgb(var(--color-retro-pink)/var(--tw-text-opacity,1))}.text-retro-red{--tw-text-opacity:1;color:rgb(var(--color-retro-red)/var(--tw-text-opacity,1))}.text-retro-red\/60{color:rgb(var(--color-retro-red)/.6)}.text-retro-red\/70{color:rgb(var(--color-retro-red)/.7)}.text-retro-red\/80{color:rgb(var(--color-retro-red)/.8)}.text-retro-subtle{--tw-text-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-text-opacity,1))}.text-retro-text{--tw-text-opacity:1;color:rgb(var(--color-retro-text)/var(--tw-text-opacity,1))}.text-retro-yellow{--tw-text-opacity:1;color:rgb(var(--color-retro-yellow)/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.placeholder-retro-muted::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(var(--color-retro-muted)/var(--tw-placeholder-opacity,1))}.placeholder-retro-muted::placeholder{--tw-placeholder-opacity:1;color:rgb(var(--color-retro-muted)/var(--tw-placeholder-opacity,1))}.placeholder-retro-muted\/50::-moz-placeholder{color:rgb(var(--color-retro-muted)/.5)}.placeholder-retro-muted\/50::placeholder{color:rgb(var(--color-retro-muted)/.5)}.placeholder-retro-subtle::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-placeholder-opacity,1))}.placeholder-retro-subtle::placeholder{--tw-placeholder-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-placeholder-opacity,1))}.accent-retro-cyan{accent-color:rgb(var(--color-retro-cyan)/1)}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.shadow-2xl,.shadow-\[0_0_0_1px_rgba\(34\,211\,238\,0\.18\)\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(34\,211\,238\,0\.18\)\]{--tw-shadow:0 0 0 1px rgba(34,211,238,.18);--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color)}.shadow-\[0_24px_70px_rgba\(0\,0\,0\,0\.55\)\]{--tw-shadow:0 24px 70px rgba(0,0,0,.55);--tw-shadow-colored:0 24px 70px var(--tw-shadow-color)}.shadow-\[0_24px_70px_rgba\(0\,0\,0\,0\.55\)\],.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-retro{--tw-shadow:0 0 0 1px rgb(var(--color-retro-cyan)/.4);--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color)}.shadow-retro,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-1{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-retro-magenta\/40{--tw-ring-color:rgb(var(--color-retro-magenta)/.4)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-\[1px\]{--tw-backdrop-blur:blur(1px)}.backdrop-blur-\[1px\],.backdrop-blur-sm{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-transform{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--color-retro-black:255 255 255;--color-retro-dark:246 248 250;--color-retro-panel:234 238 242;--color-retro-border:208 215 222;--color-retro-cyan:9 105 218;--color-retro-green:26 127 55;--color-retro-yellow:154 103 0;--color-retro-orange:188 76 0;--color-retro-red:207 34 46;--color-retro-magenta:130 80 223;--color-retro-pink:191 57 137;--color-retro-text:31 35 40;--color-retro-muted:101 109 118;--color-retro-subtle:110 118 129;--color-feature-panel:249 250 251;--color-feature-border:223 227 233}.dark{--color-retro-black:13 17 23;--color-retro-dark:22 27 34;--color-retro-panel:33 38 45;--color-retro-border:48 54 61;--color-retro-cyan:88 166 255;--color-retro-green:63 185 80;--color-retro-yellow:210 153 34;--color-retro-orange:219 109 40;--color-retro-red:248 81 73;--color-retro-magenta:188 140 255;--color-retro-pink:247 120 186;--color-retro-text:230 237 243;--color-retro-muted:139 148 158;--color-retro-subtle:110 118 129}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-black)/var(--tw-bg-opacity,1))}::-webkit-scrollbar-thumb{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(var(--color-retro-border)/var(--tw-bg-opacity,1))}::-webkit-scrollbar-thumb:hover{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-muted)/var(--tw-bg-opacity,1))}::-moz-selection{background-color:rgb(var(--color-retro-cyan)/.3);--tw-text-opacity:1;color:rgb(var(--color-retro-text)/var(--tw-text-opacity,1))}::selection{background-color:rgb(var(--color-retro-cyan)/.3);--tw-text-opacity:1;color:rgb(var(--color-retro-text)/var(--tw-text-opacity,1))}:focus-visible{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-retro-cyan)/var(--tw-ring-opacity,1));--tw-ring-offset-width:1px;--tw-ring-offset-color:rgb(var(--color-retro-black)/1)}a:focus:not(:focus-visible),button:focus:not(:focus-visible),input:focus:not(:focus-visible),textarea:focus:not(:focus-visible){outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.chat-markdown{line-height:1.7}.chat-markdown>:first-child:is(p,ul,ol,pre,blockquote,table){margin-top:0}.chat-markdown>:last-child{margin-bottom:0}.chat-markdown p{margin-bottom:.75em;margin-top:.75em}.chat-markdown h1,.chat-markdown h2,.chat-markdown h3,.chat-markdown h4,.chat-markdown h5,.chat-markdown h6{font-weight:700;line-height:1.3;margin-bottom:.5em;margin-top:1.25em}.chat-markdown h1{border-bottom:1px solid rgb(var(--color-retro-border));font-size:1.25em;padding-bottom:.3em}.chat-markdown h2{border-bottom:1px solid rgb(var(--color-retro-border)/.5);font-size:1.125em;padding-bottom:.25em}.chat-markdown h3{color:rgb(var(--color-retro-cyan));font-size:1em}.chat-markdown h4,.chat-markdown h5,.chat-markdown h6{color:rgb(var(--color-retro-muted));font-size:.95em}.chat-markdown ol,.chat-markdown ul{margin-bottom:.5em;margin-top:.5em;padding-left:1.75em}.chat-markdown ul{list-style-type:disc}.chat-markdown ol{list-style-type:decimal}.chat-markdown li{margin-bottom:.25em;margin-top:.25em}.chat-markdown li>ol,.chat-markdown li>ul{margin-bottom:.125em;margin-top:.125em}.chat-markdown ul ul{list-style-type:circle}.chat-markdown ul ul ul{list-style-type:square}.chat-markdown pre{background-color:rgb(var(--color-retro-panel));border:1px solid rgb(var(--color-retro-border)/.5);border-radius:.375rem;line-height:1.5;margin-bottom:.75em;margin-top:.75em;overflow-x:auto;padding:.75em 1em}.chat-markdown pre code{background:none;border:none;border-radius:0;padding:0}.chat-markdown code,.chat-markdown pre code{color:rgb(var(--color-retro-cyan));font-size:.9em}.chat-markdown code{background-color:rgb(var(--color-retro-panel));border:1px solid rgb(var(--color-retro-border)/.3);border-radius:.25rem;padding:.15em .4em}.chat-markdown table{border-collapse:collapse;display:block;font-size:.9em;margin-bottom:.75em;margin-top:.75em;overflow-x:auto;width:100%}.chat-markdown thead{border-bottom:2px solid rgb(var(--color-retro-border))}.chat-markdown th{background-color:rgb(var(--color-retro-panel));border:1px solid rgb(var(--color-retro-border)/.5);color:rgb(var(--color-retro-cyan));font-weight:700;padding:.5em .75em;text-align:left;white-space:nowrap}.chat-markdown td{border:1px solid rgb(var(--color-retro-border)/.3);padding:.4em .75em}.chat-markdown tbody tr:nth-child(2n){background-color:rgb(var(--color-retro-dark)/.5)}.chat-markdown tbody tr:hover{background-color:rgb(var(--color-retro-panel)/.5)}.chat-markdown blockquote{border-left:3px solid rgb(var(--color-retro-cyan)/.5);color:rgb(var(--color-retro-muted));margin-bottom:.75em;margin-top:.75em;padding-left:1em}.chat-markdown blockquote p{margin-bottom:.25em;margin-top:.25em}.chat-markdown hr{border:none;border-top:1px solid rgb(var(--color-retro-border));margin-bottom:1.25em;margin-top:1.25em}.chat-markdown a{color:rgb(var(--color-retro-cyan));text-decoration:underline;text-underline-offset:2px}.chat-markdown a:hover,.chat-markdown strong{color:rgb(var(--color-retro-text))}.chat-markdown strong{font-weight:700}.chat-markdown em{font-style:italic}.chat-markdown img{border-radius:.375rem;max-width:100%}.chat-markdown input[type=checkbox]{accent-color:rgb(var(--color-retro-cyan));margin-right:.5em}.chat-markdown dl{margin-bottom:.5em;margin-top:.5em}.chat-markdown dt{font-weight:700;margin-top:.5em}.chat-markdown dd{margin-bottom:.25em;padding-left:1.5em}.sr-only{border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px;clip:rect(0,0,0,0)}.sr-only-focusable:focus{height:auto;margin:0;overflow:visible;padding:.5rem;position:static;white-space:normal;width:auto;clip:auto}.placeholder\:text-retro-subtle::-moz-placeholder{--tw-text-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-text-opacity,1))}.placeholder\:text-retro-subtle::placeholder{--tw-text-opacity:1;color:rgb(var(--color-retro-subtle)/var(--tw-text-opacity,1))}.hover\:border-retro-border:hover{--tw-border-opacity:1;border-color:rgb(var(--color-retro-border)/var(--tw-border-opacity,1))}.hover\:border-retro-cyan:hover{--tw-border-opacity:1;border-color:rgb(var(--color-retro-cyan)/var(--tw-border-opacity,1))}.hover\:border-retro-cyan\/40:hover{border-color:rgb(var(--color-retro-cyan)/.4)}.hover\:border-retro-cyan\/50:hover{border-color:rgb(var(--color-retro-cyan)/.5)}.hover\:border-retro-cyan\/60:hover{border-color:rgb(var(--color-retro-cyan)/.6)}.hover\:border-retro-green:hover{--tw-border-opacity:1;border-color:rgb(var(--color-retro-green)/var(--tw-border-opacity,1))}.hover\:border-retro-muted:hover{--tw-border-opacity:1;border-color:rgb(var(--color-retro-muted)/var(--tw-border-opacity,1))}.hover\:border-retro-text:hover{--tw-border-opacity:1;border-color:rgb(var(--color-retro-text)/var(--tw-border-opacity,1))}.hover\:border-retro-text\/30:hover{border-color:rgb(var(--color-retro-text)/.3)}.hover\:bg-red-500\/10:hover{background-color:#ef44441a}.hover\:bg-retro-border:hover{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-border)/var(--tw-bg-opacity,1))}.hover\:bg-retro-cyan\/10:hover{background-color:rgb(var(--color-retro-cyan)/.1)}.hover\:bg-retro-cyan\/20:hover{background-color:rgb(var(--color-retro-cyan)/.2)}.hover\:bg-retro-cyan\/30:hover{background-color:rgb(var(--color-retro-cyan)/.3)}.hover\:bg-retro-cyan\/5:hover{background-color:rgb(var(--color-retro-cyan)/.05)}.hover\:bg-retro-cyan\/80:hover{background-color:rgb(var(--color-retro-cyan)/.8)}.hover\:bg-retro-dark:hover{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-dark)/var(--tw-bg-opacity,1))}.hover\:bg-retro-dark\/40:hover{background-color:rgb(var(--color-retro-dark)/.4)}.hover\:bg-retro-green\/10:hover{background-color:rgb(var(--color-retro-green)/.1)}.hover\:bg-retro-green\/20:hover{background-color:rgb(var(--color-retro-green)/.2)}.hover\:bg-retro-green\/30:hover{background-color:rgb(var(--color-retro-green)/.3)}.hover\:bg-retro-green\/90:hover{background-color:rgb(var(--color-retro-green)/.9)}.hover\:bg-retro-magenta\/10:hover{background-color:rgb(var(--color-retro-magenta)/.1)}.hover\:bg-retro-magenta\/30:hover{background-color:rgb(var(--color-retro-magenta)/.3)}.hover\:bg-retro-muted\/10:hover{background-color:rgb(var(--color-retro-muted)/.1)}.hover\:bg-retro-orange\/10:hover{background-color:rgb(var(--color-retro-orange)/.1)}.hover\:bg-retro-orange\/20:hover{background-color:rgb(var(--color-retro-orange)/.2)}.hover\:bg-retro-panel:hover{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-panel)/var(--tw-bg-opacity,1))}.hover\:bg-retro-panel\/50:hover{background-color:rgb(var(--color-retro-panel)/.5)}.hover\:bg-retro-panel\/90:hover{background-color:rgb(var(--color-retro-panel)/.9)}.hover\:bg-retro-pink\/30:hover{background-color:rgb(var(--color-retro-pink)/.3)}.hover\:bg-retro-red:hover{--tw-bg-opacity:1;background-color:rgb(var(--color-retro-red)/var(--tw-bg-opacity,1))}.hover\:bg-retro-red\/10:hover{background-color:rgb(var(--color-retro-red)/.1)}.hover\:bg-retro-red\/20:hover{background-color:rgb(var(--color-retro-red)/.2)}.hover\:bg-retro-red\/30:hover{background-color:rgb(var(--color-retro-red)/.3)}.hover\:bg-retro-subtle\/10:hover{background-color:rgb(var(--color-retro-subtle)/.1)}.hover\:bg-retro-yellow\/10:hover{background-color:rgb(var(--color-retro-yellow)/.1)}.hover\:bg-retro-yellow\/30:hover{background-color:rgb(var(--color-retro-yellow)/.3)}.hover\:bg-white\/20:hover{background-color:#fff3}.hover\:text-retro-cyan:hover{--tw-text-opacity:1;color:rgb(var(--color-retro-cyan)/var(--tw-text-opacity,1))}.hover\:text-retro-cyan\/80:hover{color:rgb(var(--color-retro-cyan)/.8)}.hover\:text-retro-green:hover{--tw-text-opacity:1;color:rgb(var(--color-retro-green)/var(--tw-text-opacity,1))}.hover\:text-retro-green\/80:hover{color:rgb(var(--color-retro-green)/.8)}.hover\:text-retro-red:hover{--tw-text-opacity:1;color:rgb(var(--color-retro-red)/var(--tw-text-opacity,1))}.hover\:text-retro-text:hover{--tw-text-opacity:1;color:rgb(var(--color-retro-text)/var(--tw-text-opacity,1))}.hover\:text-retro-yellow:hover{--tw-text-opacity:1;color:rgb(var(--color-retro-yellow)/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:no-underline:hover{text-decoration-line:none}.hover\:ring-1:hover{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.hover\:ring-retro-cyan\/50:hover{--tw-ring-color:rgb(var(--color-retro-cyan)/.5)}.hover\:ring-retro-yellow\/50:hover{--tw-ring-color:rgb(var(--color-retro-yellow)/.5)}.focus\:border-retro-cyan:focus{--tw-border-opacity:1;border-color:rgb(var(--color-retro-cyan)/var(--tw-border-opacity,1))}.focus\:bg-retro-cyan\/10:focus{background-color:rgb(var(--color-retro-cyan)/.1)}.focus\:bg-retro-red\/10:focus{background-color:rgb(var(--color-retro-red)/.1)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-1:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-inset:focus{--tw-ring-inset:inset}.focus\:ring-retro-cyan:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(var(--color-retro-cyan)/var(--tw-ring-opacity,1))}.focus\:ring-retro-cyan\/50:focus{--tw-ring-color:rgb(var(--color-retro-cyan)/.5)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.group:hover .group-hover\:bg-retro-panel\/50{background-color:rgb(var(--color-retro-panel)/.5)}.group:hover .group-hover\:text-retro-cyan{--tw-text-opacity:1;color:rgb(var(--color-retro-cyan)/var(--tw-text-opacity,1))}.group:hover .group-hover\:opacity-100{opacity:1}.dark\:bg-gradient-to-br:is(.dark *){background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.dark\:from-retro-cyan\/10:is(.dark *){--tw-gradient-from:rgb(var(--color-retro-cyan)/.1) var(--tw-gradient-from-position);--tw-gradient-to:rgb(var(--color-retro-cyan)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-retro-panel:is(.dark *){--tw-gradient-from:rgb(var(--color-retro-panel)/1) var(--tw-gradient-from-position);--tw-gradient-to:rgb(var(--color-retro-panel)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:via-retro-panel:is(.dark *){--tw-gradient-to:rgb(var(--color-retro-panel)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgb(var(--color-retro-panel)/1) var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:to-retro-cyan\/5:is(.dark *){--tw-gradient-to:rgb(var(--color-retro-cyan)/.05) var(--tw-gradient-to-position)}.dark\:to-retro-magenta\/5:is(.dark *){--tw-gradient-to:rgb(var(--color-retro-magenta)/.05) var(--tw-gradient-to-position)}.dark\:hover\:from-retro-cyan\/5:hover:is(.dark *){--tw-gradient-from:rgb(var(--color-retro-cyan)/.05) var(--tw-gradient-from-position);--tw-gradient-to:rgb(var(--color-retro-cyan)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:hover\:via-retro-panel:hover:is(.dark *){--tw-gradient-to:rgb(var(--color-retro-panel)/0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgb(var(--color-retro-panel)/1) var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:hover\:to-retro-magenta\/5:hover:is(.dark *){--tw-gradient-to:rgb(var(--color-retro-magenta)/.05) var(--tw-gradient-to-position)}@media(min-width:640px){.sm\:inline{display:inline}}@media(min-width:1024px){.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}
@@ -1 +1 @@
1
- import{d as j,u as N,a as L,o as T,b as B,r as E,c as O,e as H,h as R,f as q,p as I,s as U,g as V,i as A,j as D,n as F,k as g,l as M,m as z,q as $,w as W,t as G,v as K,x as Q,y as J,z as X,A as S,B as _,C as Y,D as Z,E as ee}from"./xDSloGc6.js";import{_ as te}from"./DlAUqK2U.js";const re=(...t)=>t.find(o=>o!==void 0);function ne(t){const o=t.componentName||"NuxtLink";function f(e){return typeof e=="string"&&e.startsWith("#")}function b(e,l,d){const n=d??t.trailingSlash;if(!e||n!=="append"&&n!=="remove")return e;if(typeof e=="string")return C(e,n);const i="path"in e&&e.path!==void 0?e.path:l(e).path;return{...e,name:void 0,path:C(i,n)}}function w(e){const l=N(),d=$(),n=g(()=>!!e.target&&e.target!=="_self"),i=g(()=>{const s=e.to||e.href||"";return typeof s=="string"&&z(s,{acceptRelative:!0})}),y=q("RouterLink"),h=typeof y!="string"?y.useLink:void 0,c=g(()=>{if(e.external)return!0;const s=e.to||e.href||"";return typeof s=="object"?!1:s===""||i.value}),a=g(()=>{const s=e.to||e.href||"";return c.value?s:b(s,l.resolve,e.trailingSlash)}),p=c.value?void 0:h?.({...e,to:a}),m=g(()=>{const s=e.trailingSlash??t.trailingSlash;if(!a.value||i.value||f(a.value))return a.value;if(c.value){const x=typeof a.value=="object"&&"path"in a.value?A(a.value):a.value,k=typeof x=="object"?l.resolve(x).href:x;return C(k,s)}return typeof a.value=="object"?l.resolve(a.value)?.href??null:C(M(d.app.baseURL,a.value),s)});return{to:a,hasTarget:n,isAbsoluteUrl:i,isExternal:c,href:m,isActive:p?.isActive??g(()=>a.value===l.currentRoute.value.path),isExactActive:p?.isExactActive??g(()=>a.value===l.currentRoute.value.path),route:p?.route??g(()=>l.resolve(a.value)),async navigate(s){await F(m.value,{replace:e.replace,external:c.value||n.value})}}}return j({name:o,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},prefetchOn:{type:[String,Object],default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1},trailingSlash:{type:String,default:void 0,required:!1}},useLink:w,setup(e,{slots:l}){const d=N(),{to:n,href:i,navigate:y,isExternal:h,hasTarget:c,isAbsoluteUrl:a}=w(e),p=U(!1),m=V(null),s=u=>{m.value=e.custom?u?.$el?.nextElementSibling:u?.$el};function x(u){return!p.value&&(typeof e.prefetchOn=="string"?e.prefetchOn===u:e.prefetchOn?.[u]??t.prefetchOn?.[u])&&(e.prefetch??t.prefetch)!==!1&&e.noPrefetch!==!0&&e.target!=="_blank"&&!le()}async function k(u=L()){if(p.value)return;p.value=!0;const v=typeof n.value=="string"?n.value:h.value?A(n.value):d.resolve(n.value).fullPath,r=h.value?new URL(v,window.location.href).href:v;await Promise.all([u.hooks.callHook("link:prefetch",r).catch(()=>{}),!h.value&&!c.value&&D(n.value,d).catch(()=>{})])}if(x("visibility")){const u=L();let v,r=null;T(()=>{const P=ie();B(()=>{v=E(()=>{m?.value?.tagName&&(r=P.observe(m.value,async()=>{r?.(),r=null,await k(u)}))})})}),O(()=>{v&&H(v),r?.(),r=null})}return()=>{if(!h.value&&!c.value&&!f(n.value)){const r={ref:s,to:n.value,activeClass:e.activeClass||t.activeClass,exactActiveClass:e.exactActiveClass||t.exactActiveClass,replace:e.replace,ariaCurrentValue:e.ariaCurrentValue,custom:e.custom};return e.custom||(x("interaction")&&(r.onPointerenter=k.bind(null,void 0),r.onFocus=k.bind(null,void 0)),p.value&&(r.class=e.prefetchedClass||t.prefetchedClass),r.rel=e.rel||void 0),R(q("RouterLink"),r,l.default)}const u=e.target||null,v=re(e.noRel?"":e.rel,t.externalRelAttribute,a.value||c.value?"noopener noreferrer":"")||null;return e.custom?l.default?l.default({href:i.value,navigate:y,prefetch:k,get route(){if(!i.value)return;const r=new URL(i.value,window.location.href);return{path:r.pathname,fullPath:r.pathname,get query(){return I(r.search)},hash:r.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:i.value}},rel:v,target:u,isExternal:h.value||c.value,isActive:!1,isExactActive:!1}):null:R("a",{ref:m,href:i.value||null,rel:v,target:u,onClick:r=>{if(!(h.value||c.value))return r.preventDefault(),e.replace?d.replace(i.value):d.push(i.value)}},l.default?.())}}})}const ae=ne(K);function C(t,o){const f=o==="append"?W:G;return z(t)&&!t.startsWith("http")?t:f(t,!0)}function ie(){const t=L();if(t._observer)return t._observer;let o=null;const f=new Map,b=(e,l)=>(o||=new IntersectionObserver(d=>{for(const n of d){const i=f.get(n.target);(n.isIntersecting||n.intersectionRatio>0)&&i&&i()}}),f.set(e,l),o.observe(e),()=>{f.delete(e),o?.unobserve(e),f.size===0&&(o?.disconnect(),o=null)});return t._observer={observe:b}}const oe=/2g/;function le(){const t=navigator.connection;return!!(t&&(t.saveData||oe.test(t.effectiveType)))}const se={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},ue={class:"max-w-520px text-center z-20"},ce=["textContent"],fe=["textContent"],de={class:"flex items-center justify-center w-full"},ve={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},status:{type:Number,default:404},statusText:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const o=t;return Q({title:`${o.status} - ${o.statusText} | ${o.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(f,b)=>{const w=ae;return J(),X("div",se,[b[0]||(b[0]=S("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),S("div",ue,[S("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:_(t.status)},null,8,ce),S("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:_(t.description)},null,8,fe),S("div",de,[Y(w,{to:"/",class:"cursor-pointer gradient-border px-4 py-2 sm:px-6 sm:py-3 sm:text-xl text-md"},{default:Z(()=>[ee(_(t.backHome),1)]),_:1})])])])}}},ge=te(ve,[["__scopeId","data-v-5b1d1387"]]);export{ge as default};
1
+ import{d as j,u as N,a as L,o as T,b as B,r as E,c as O,e as H,h as R,f as q,p as I,s as U,g as V,i as A,j as D,n as F,k as g,l as M,m as z,q as $,w as W,t as G,v as K,x as Q,y as J,z as X,A as S,B as _,C as Y,D as Z,E as ee}from"./BwGW6ro4.js";import{_ as te}from"./DlAUqK2U.js";const re=(...t)=>t.find(o=>o!==void 0);function ne(t){const o=t.componentName||"NuxtLink";function f(e){return typeof e=="string"&&e.startsWith("#")}function b(e,l,d){const n=d??t.trailingSlash;if(!e||n!=="append"&&n!=="remove")return e;if(typeof e=="string")return C(e,n);const i="path"in e&&e.path!==void 0?e.path:l(e).path;return{...e,name:void 0,path:C(i,n)}}function w(e){const l=N(),d=$(),n=g(()=>!!e.target&&e.target!=="_self"),i=g(()=>{const s=e.to||e.href||"";return typeof s=="string"&&z(s,{acceptRelative:!0})}),y=q("RouterLink"),h=typeof y!="string"?y.useLink:void 0,c=g(()=>{if(e.external)return!0;const s=e.to||e.href||"";return typeof s=="object"?!1:s===""||i.value}),a=g(()=>{const s=e.to||e.href||"";return c.value?s:b(s,l.resolve,e.trailingSlash)}),p=c.value?void 0:h?.({...e,to:a}),m=g(()=>{const s=e.trailingSlash??t.trailingSlash;if(!a.value||i.value||f(a.value))return a.value;if(c.value){const x=typeof a.value=="object"&&"path"in a.value?A(a.value):a.value,k=typeof x=="object"?l.resolve(x).href:x;return C(k,s)}return typeof a.value=="object"?l.resolve(a.value)?.href??null:C(M(d.app.baseURL,a.value),s)});return{to:a,hasTarget:n,isAbsoluteUrl:i,isExternal:c,href:m,isActive:p?.isActive??g(()=>a.value===l.currentRoute.value.path),isExactActive:p?.isExactActive??g(()=>a.value===l.currentRoute.value.path),route:p?.route??g(()=>l.resolve(a.value)),async navigate(s){await F(m.value,{replace:e.replace,external:c.value||n.value})}}}return j({name:o,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},prefetchOn:{type:[String,Object],default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1},trailingSlash:{type:String,default:void 0,required:!1}},useLink:w,setup(e,{slots:l}){const d=N(),{to:n,href:i,navigate:y,isExternal:h,hasTarget:c,isAbsoluteUrl:a}=w(e),p=U(!1),m=V(null),s=u=>{m.value=e.custom?u?.$el?.nextElementSibling:u?.$el};function x(u){return!p.value&&(typeof e.prefetchOn=="string"?e.prefetchOn===u:e.prefetchOn?.[u]??t.prefetchOn?.[u])&&(e.prefetch??t.prefetch)!==!1&&e.noPrefetch!==!0&&e.target!=="_blank"&&!le()}async function k(u=L()){if(p.value)return;p.value=!0;const v=typeof n.value=="string"?n.value:h.value?A(n.value):d.resolve(n.value).fullPath,r=h.value?new URL(v,window.location.href).href:v;await Promise.all([u.hooks.callHook("link:prefetch",r).catch(()=>{}),!h.value&&!c.value&&D(n.value,d).catch(()=>{})])}if(x("visibility")){const u=L();let v,r=null;T(()=>{const P=ie();B(()=>{v=E(()=>{m?.value?.tagName&&(r=P.observe(m.value,async()=>{r?.(),r=null,await k(u)}))})})}),O(()=>{v&&H(v),r?.(),r=null})}return()=>{if(!h.value&&!c.value&&!f(n.value)){const r={ref:s,to:n.value,activeClass:e.activeClass||t.activeClass,exactActiveClass:e.exactActiveClass||t.exactActiveClass,replace:e.replace,ariaCurrentValue:e.ariaCurrentValue,custom:e.custom};return e.custom||(x("interaction")&&(r.onPointerenter=k.bind(null,void 0),r.onFocus=k.bind(null,void 0)),p.value&&(r.class=e.prefetchedClass||t.prefetchedClass),r.rel=e.rel||void 0),R(q("RouterLink"),r,l.default)}const u=e.target||null,v=re(e.noRel?"":e.rel,t.externalRelAttribute,a.value||c.value?"noopener noreferrer":"")||null;return e.custom?l.default?l.default({href:i.value,navigate:y,prefetch:k,get route(){if(!i.value)return;const r=new URL(i.value,window.location.href);return{path:r.pathname,fullPath:r.pathname,get query(){return I(r.search)},hash:r.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:i.value}},rel:v,target:u,isExternal:h.value||c.value,isActive:!1,isExactActive:!1}):null:R("a",{ref:m,href:i.value||null,rel:v,target:u,onClick:r=>{if(!(h.value||c.value))return r.preventDefault(),e.replace?d.replace(i.value):d.push(i.value)}},l.default?.())}}})}const ae=ne(K);function C(t,o){const f=o==="append"?W:G;return z(t)&&!t.startsWith("http")?t:f(t,!0)}function ie(){const t=L();if(t._observer)return t._observer;let o=null;const f=new Map,b=(e,l)=>(o||=new IntersectionObserver(d=>{for(const n of d){const i=f.get(n.target);(n.isIntersecting||n.intersectionRatio>0)&&i&&i()}}),f.set(e,l),o.observe(e),()=>{f.delete(e),o?.unobserve(e),f.size===0&&(o?.disconnect(),o=null)});return t._observer={observe:b}}const oe=/2g/;function le(){const t=navigator.connection;return!!(t&&(t.saveData||oe.test(t.effectiveType)))}const se={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},ue={class:"max-w-520px text-center z-20"},ce=["textContent"],fe=["textContent"],de={class:"flex items-center justify-center w-full"},ve={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},status:{type:Number,default:404},statusText:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const o=t;return Q({title:`${o.status} - ${o.statusText} | ${o.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(f,b)=>{const w=ae;return J(),X("div",se,[b[0]||(b[0]=S("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),S("div",ue,[S("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:_(t.status)},null,8,ce),S("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:_(t.description)},null,8,fe),S("div",de,[Y(w,{to:"/",class:"cursor-pointer gradient-border px-4 py-2 sm:px-6 sm:py-3 sm:text-xl text-md"},{default:Z(()=>[ee(_(t.backHome),1)]),_:1})])])])}}},ge=te(ve,[["__scopeId","data-v-5b1d1387"]]);export{ge as default};
@@ -0,0 +1 @@
1
+ .streaming-border[data-v-3d162cc0]{animation:streaming-bg-sweep-3d162cc0 3s ease-in-out infinite;background-image:linear-gradient(270deg,rgb(var(--color-retro-cyan)/.04),rgb(var(--color-retro-cyan)/.12),rgb(var(--color-retro-cyan)/.04),rgb(var(--color-retro-cyan)/.12))!important;border-color:rgb(var(--color-retro-cyan)/.4)!important}.streaming-active-border[data-v-3d162cc0],.streaming-border[data-v-3d162cc0]{background-color:transparent!important;background-size:300% 100%!important;overflow:hidden;position:relative}.streaming-active-border[data-v-3d162cc0]{animation:streaming-bg-sweep-3d162cc0 2s ease-in-out infinite;background-image:linear-gradient(270deg,rgb(var(--color-retro-cyan)/.08),rgb(var(--color-retro-cyan)/.2),rgb(var(--color-retro-cyan)/.08),rgb(var(--color-retro-cyan)/.2))!important;border-color:rgb(var(--color-retro-cyan)/.8)!important;box-shadow:0 0 8px rgb(var(--color-retro-cyan)/.3),0 0 0 1px rgb(var(--color-retro-cyan)/.4)}.streaming-preview-border[data-v-3d162cc0]{background-image:linear-gradient(270deg,rgb(var(--color-retro-magenta)/.03),rgb(var(--color-retro-magenta)/.08),rgb(var(--color-retro-magenta)/.03),rgb(var(--color-retro-magenta)/.08))!important;border-color:rgb(var(--color-retro-magenta)/.3)!important}.streaming-preview-active-border[data-v-3d162cc0],.streaming-preview-border[data-v-3d162cc0]{animation:streaming-bg-sweep-3d162cc0 3s ease-in-out infinite;background-color:transparent!important;background-size:300% 100%!important;overflow:hidden;position:relative}.streaming-preview-active-border[data-v-3d162cc0]{background-image:linear-gradient(270deg,rgb(var(--color-retro-cyan)/.06),rgb(var(--color-retro-magenta)/.18),rgb(var(--color-retro-cyan)/.06),rgb(var(--color-retro-magenta)/.18))!important;border-color:rgb(var(--color-retro-magenta)/.7)!important;box-shadow:0 0 0 1px rgb(var(--color-retro-magenta)/.3)}@keyframes streaming-bg-sweep-3d162cc0{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}
@@ -3,6 +3,12 @@ import { writeFile, readdir, rm, readFile, mkdir } from 'node:fs/promises';
3
3
  import { join } from 'node:path';
4
4
  import { i as readSpecCatStore, j as getSpecCatDataDir } from '../nitro/nitro.mjs';
5
5
 
6
+ function generateBlockId() {
7
+ return `blk-${Date.now()}-${Math.random().toString(36).substring(2, 6)}`;
8
+ }
9
+ function generateMessageId() {
10
+ return `msg-${Date.now()}-${Math.random().toString(36).substring(2, 8)}`;
11
+ }
6
12
  const STORAGE_VERSION = 2;
7
13
  function generateConversationId() {
8
14
  return `conv-${Math.random().toString(36).slice(2, 12)}`;
@@ -10,6 +16,12 @@ function generateConversationId() {
10
16
  function generateArchivedConversationId() {
11
17
  return `arch-${Date.now()}-${Math.random().toString(36).substring(2, 8)}`;
12
18
  }
19
+ function generateConversationTitle(firstMessage) {
20
+ const MAX_LENGTH = 50;
21
+ const cleaned = firstMessage.trim().replace(/\n/g, " ");
22
+ if (cleaned.length <= MAX_LENGTH) return cleaned;
23
+ return cleaned.slice(0, MAX_LENGTH).trim() + "...";
24
+ }
13
25
  function isValidConversation(obj) {
14
26
  if (!obj || typeof obj !== "object") return false;
15
27
  const conv = obj;
@@ -186,5 +198,5 @@ async function upsertConversationInStorage(conversation, version) {
186
198
  }
187
199
  }
188
200
 
189
- export { STORAGE_VERSION as S, generateConversationId as a, generateArchivedConversationId as g, isValidConversation as i, readConversationStorageState as r, upsertConversationInStorage as u, writeConversationStorageState as w };
201
+ export { STORAGE_VERSION as S, generateConversationId as a, generateConversationTitle as b, generateMessageId as c, generateBlockId as d, generateArchivedConversationId as g, isValidConversation as i, readConversationStorageState as r, upsertConversationInStorage as u, writeConversationStorageState as w };
190
202
  //# sourceMappingURL=conversationStore.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversationStore.mjs","sources":["../../../../types/chat.ts","../../../../server/utils/conversationStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversationStore.mjs","sources":["../../../../types/chat.ts","../../../../server/utils/conversationStore.ts"],"names":[],"mappings":";;;;;AAgFO,SAAS,eAAA,GAA0B;AACxC,EAAA,OAAO,CAAA,IAAA,EAAO,IAAA,CAAK,GAAA,EAAK,IAAI,IAAA,CAAK,MAAA,EAAO,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,SAAA,CAAU,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AACxE;AA6SO,SAAS,iBAAA,GAA4B;AAC1C,EAAA,OAAO,CAAA,IAAA,EAAO,IAAA,CAAK,GAAA,EAAK,IAAI,IAAA,CAAK,MAAA,EAAO,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,SAAA,CAAU,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AACxE;AA+DO,MAAM,eAAA,GAAkB;AAOxB,SAAS,sBAAA,GAAiC;AAC/C,EAAA,OAAO,CAAA,KAAA,EAAQ,IAAA,CAAK,MAAA,EAAO,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAA,CAAA;AACxD;AAEO,SAAS,8BAAA,GAAyC;AACvD,EAAA,OAAO,CAAA,KAAA,EAAQ,IAAA,CAAK,GAAA,EAAK,IAAI,IAAA,CAAK,MAAA,EAAO,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,SAAA,CAAU,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AACzE;AAKO,SAAS,0BAA0B,YAAA,EAA8B;AACtE,EAAA,MAAM,UAAA,GAAa,EAAA;AACnB,EAAA,MAAM,UAAU,YAAA,CAAa,IAAA,EAAK,CAAE,OAAA,CAAQ,OAAO,GAAG,CAAA;AACtD,EAAA,IAAI,OAAA,CAAQ,MAAA,IAAU,UAAA,EAAY,OAAO,OAAA;AACzC,EAAA,OAAO,QAAQ,KAAA,CAAM,CAAA,EAAG,UAAU,CAAA,CAAE,MAAK,GAAI,KAAA;AAC/C;AAKO,SAAS,oBAAoB,GAAA,EAAmC;AACrE,EAAA,IAAI,CAAC,GAAA,IAAO,OAAO,GAAA,KAAQ,UAAU,OAAO,KAAA;AAC5C,EAAA,MAAM,IAAA,GAAO,GAAA;AACb,EAAA,OACE,OAAO,KAAK,EAAA,KAAO,QAAA,IACnB,OAAO,IAAA,CAAK,KAAA,KAAU,QAAA,IACtB,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,QAAQ,CAAA,IAC3B,OAAO,IAAA,CAAK,SAAA,KAAc,QAAA,IAC1B,OAAO,KAAK,SAAA,KAAc,QAAA,IAC1B,OAAO,IAAA,CAAK,GAAA,KAAQ,QAAA;AAExB;;ACtdA,MAAM,eAAA,GAAkB,oBAAA;AACxB,MAAM,iBAAA,GAAoB,6BAAA;AAC1B,MAAM,qBAAA,GAAwB,eAAA;AAC9B,MAAM,QAAA,GAAgC;AAAA,EACpC,OAAA,EAAS,eAAA;AAAA,EACT,eAAe,EAAC;AAAA,EAChB,uBAAuB;AACzB,CAAA;AAEA,SAAS,uBAAA,GAAkC;AACzC,EAAA,OAAO,IAAA,CAAK,iBAAA,EAAkB,EAAG,qBAAqB,CAAA;AACxD;AAEA,SAAS,wBAAwB,cAAA,EAAgC;AAC/D,EAAA,OAAO,IAAA,CAAK,uBAAA,EAAwB,EAAG,CAAA,EAAG,cAAc,CAAA,KAAA,CAAO,CAAA;AACjE;AAEA,SAAS,qBAAqB,KAAA,EAAiC;AAC7D,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,mBAAA,CAAoB,KAAK,KAAK,CAAA;AACpE;AAEA,SAAS,YAAY,KAAA,EAA+B;AAClD,EAAA,IAAI,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,UAAU,OAAO,IAAA;AAChD,EAAA,MAAM,QAAS,KAAA,CAAkC,EAAA;AACjD,EAAA,OAAO,oBAAA,CAAqB,KAAK,CAAA,GAAI,KAAA,GAAQ,IAAA;AAC/C;AAEA,eAAe,aAAA,GAA+B;AAC5C,EAAA,MAAM,OAAO,iBAAA,EAAkB;AAC/B,EAAA,IAAI,CAAC,UAAA,CAAW,IAAI,CAAA,EAAG;AACrB,IAAA,MAAM,KAAA,CAAM,IAAA,EAAM,EAAE,SAAA,EAAW,MAAM,CAAA;AAAA,EACvC;AACF;AAEA,eAAe,sBAAA,GAAwC;AACrD,EAAA,MAAM,MAAM,uBAAA,EAAwB;AACpC,EAAA,IAAI,CAAC,UAAA,CAAW,GAAG,CAAA,EAAG;AACpB,IAAA,MAAM,KAAA,CAAM,GAAA,EAAK,EAAE,SAAA,EAAW,MAAM,CAAA;AAAA,EACtC;AACF;AAEA,eAAe,gBAAA,GAAuD;AACpE,EAAA,MAAM,IAAA,GAAO,MAAM,gBAAA,CAA4C,iBAAA,EAAmB;AAAA,IAChF,OAAA,EAAS,eAAA;AAAA,IACT,uBAAuB;AAAC,GACzB,CAAA;AAED,EAAA,OAAO;AAAA,IACL,SAAS,OAAO,IAAA,CAAK,OAAA,KAAY,QAAA,GAAW,KAAK,OAAA,GAAU,eAAA;AAAA,IAC3D,qBAAA,EAAuB,MAAM,OAAA,CAAQ,IAAA,CAAK,qBAAqB,CAAA,GAAI,IAAA,CAAK,wBAAwB;AAAC,GACnG;AACF;AAEA,eAAe,kBAAkB,IAAA,EAAgD;AAC/E,EAAA,MAAM,aAAA,EAAc;AACpB,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,iBAAA,EAAkB,EAAG,iBAAiB,CAAA;AAC5D,EAAA,MAAM,SAAA,CAAU,UAAU,IAAA,CAAK,SAAA,CAAU,MAAM,IAAA,EAAM,CAAC,GAAG,OAAO,CAAA;AAClE;AAEA,eAAe,qBAAA,GAA4C;AACzD,EAAA,MAAM,MAAM,uBAAA,EAAwB;AACpC,EAAA,IAAI,CAAC,UAAA,CAAW,GAAG,CAAA,SAAU,EAAC;AAE9B,EAAA,MAAM,UAAU,MAAM,OAAA,CAAQ,KAAK,EAAE,aAAA,EAAe,MAAM,CAAA;AAC1D,EAAA,MAAM,gBAA2B,EAAC;AAElC,EAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,IAAA,IAAI,CAAC,MAAM,MAAA,EAAO,IAAK,CAAC,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA,EAAG;AACtD,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,EAAK,KAAA,CAAM,IAAI,CAAA;AACrC,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,GAAM,MAAM,QAAA,CAAS,QAAA,EAAU,OAAO,CAAA;AAC5C,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC7B,MAAA,aAAA,CAAc,KAAK,MAAM,CAAA;AAAA,IAC3B,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AAEA,EAAA,OAAO,aAAA;AACT;AAEA,eAAe,0BAAA,CACb,wBACA,gBAAA,EAC4E;AAC5E,EAAA,MAAM,MAAA,GAAS,MAAM,gBAAA,CAAsC,eAAA,EAAiB,QAAQ,CAAA;AACpF,EAAA,MAAM,mBAAA,GAAsB,MAAM,OAAA,CAAQ,MAAA,CAAO,aAAa,CAAA,GAAI,MAAA,CAAO,gBAAgB,EAAC;AAC1F,EAAA,MAAM,cAAA,GAAiB,MAAM,OAAA,CAAQ,MAAA,CAAO,qBAAqB,CAAA,GAAI,MAAA,CAAO,wBAAwB,EAAC;AAErG,EAAA,MAAM,mBAAA,GAAsB,uBAAuB,KAAA,EAAM;AACzD,EAAA,MAAM,uBAAA,uBAA8B,GAAA,EAAY;AAChD,EAAA,KAAA,MAAW,QAAQ,mBAAA,EAAqB;AACtC,IAAA,MAAM,EAAA,GAAK,YAAY,IAAI,CAAA;AAC3B,IAAA,IAAI,EAAA,EAAI,uBAAA,CAAwB,GAAA,CAAI,EAAE,CAAA;AAAA,EACxC;AAEA,EAAA,IAAI,oBAAA,GAAuB,KAAA;AAC3B,EAAA,KAAA,MAAW,sBAAsB,mBAAA,EAAqB;AACpD,IAAA,MAAM,EAAA,GAAK,YAAY,kBAAkB,CAAA;AACzC,IAAA,IAAI,CAAC,EAAA,IAAM,uBAAA,CAAwB,GAAA,CAAI,EAAE,CAAA,EAAG;AAC5C,IAAA,mBAAA,CAAoB,KAAK,kBAAkB,CAAA;AAC3C,IAAA,uBAAA,CAAwB,IAAI,EAAE,CAAA;AAC9B,IAAA,oBAAA,GAAuB,IAAA;AAAA,EACzB;AAEA,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,qBAAA,CAAsB,KAAA,EAAM;AAC9D,EAAA,MAAM,WAAA,uBAAkB,GAAA,EAAY;AACpC,EAAA,KAAA,MAAW,QAAQ,QAAA,EAAU;AAC3B,IAAA,MAAM,EAAA,GAAK,YAAY,IAAI,CAAA;AAC3B,IAAA,IAAI,EAAA,EAAI,WAAA,CAAY,GAAA,CAAI,EAAE,CAAA;AAAA,EAC5B;AAEA,EAAA,IAAI,eAAA,GAAkB,KAAA;AACtB,EAAA,KAAA,MAAW,iBAAiB,cAAA,EAAgB;AAC1C,IAAA,MAAM,EAAA,GAAK,YAAY,aAAa,CAAA;AACpC,IAAA,IAAI,CAAC,EAAA,IAAM,WAAA,CAAY,GAAA,CAAI,EAAE,CAAA,EAAG;AAChC,IAAA,QAAA,CAAS,KAAK,aAAa,CAAA;AAC3B,IAAA,WAAA,CAAY,IAAI,EAAE,CAAA;AAClB,IAAA,eAAA,GAAkB,IAAA;AAAA,EACpB;AAEA,EAAA,IAAI,oBAAA,EAAsB;AACxB,IAAA,MAAM,sBAAA,EAAuB;AAC7B,IAAA,KAAA,MAAW,QAAQ,mBAAA,EAAqB;AACtC,MAAA,MAAM,EAAA,GAAK,YAAY,IAAI,CAAA;AAC3B,MAAA,IAAI,CAAC,EAAA,EAAI;AACT,MAAA,MAAM,SAAA,CAAU,uBAAA,CAAwB,EAAE,CAAA,EAAG,IAAA,CAAK,UAAU,IAAA,EAAM,IAAA,EAAM,CAAC,CAAA,EAAG,OAAO,CAAA;AAAA,IACrF;AAAA,EACF;AAEA,EAAA,MAAM,kBAAkB,OAAO,MAAA,CAAO,YAAY,QAAA,GAC9C,MAAA,CAAO,UACP,gBAAA,CAAiB,OAAA;AAErB,EAAA,IAAI,eAAA,IAAoB,cAAA,CAAe,MAAA,GAAS,CAAA,IAAK,CAAC,UAAA,CAAW,IAAA,CAAK,iBAAA,EAAkB,EAAG,iBAAiB,CAAC,CAAA,EAAI;AAC/G,IAAA,MAAM,iBAAA,CAAkB;AAAA,MACtB,OAAA,EAAS,eAAA;AAAA,MACT,qBAAA,EAAuB;AAAA,KACxB,CAAA;AAAA,EACH;AAEA,EAAA,OAAO;AAAA,IACL,aAAA,EAAe,mBAAA;AAAA,IACf,QAAA,EAAU;AAAA,MACR,OAAA,EAAS,eAAA;AAAA,MACT,qBAAA,EAAuB;AAAA;AACzB,GACF;AACF;AAEA,eAAsB,4BAAA,GAA6D;AACjF,EAAA,MAAM,sBAAA,GAAyB,MAAM,qBAAA,EAAsB;AAC3D,EAAA,MAAM,gBAAA,GAAmB,MAAM,gBAAA,EAAiB;AAChD,EAAA,MAAM,QAAA,GAAW,MAAM,0BAAA,CAA2B,sBAAA,EAAwB,gBAAgB,CAAA;AAE1F,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,OAAO,QAAA,CAAS,QAAA,CAAS,YAAY,QAAA,GAC1C,QAAA,CAAS,SAAS,OAAA,GAClB,eAAA;AAAA,IACJ,eAAe,QAAA,CAAS,aAAA;AAAA,IACxB,qBAAA,EAAuB,SAAS,QAAA,CAAS;AAAA,GAC3C;AACF;AAEA,eAAsB,8BAA8B,KAAA,EAA2C;AAC7F,EAAA,MAAM,sBAAA,EAAuB;AAE7B,EAAA,MAAM,aAAA,GAAgB,MAAM,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAA,GAAI,KAAA,CAAM,gBAAgB,EAAC;AAClF,EAAA,MAAM,qBAAA,GAAwB,MAAM,OAAA,CAAQ,KAAA,CAAM,qBAAqB,CAAA,GAAI,KAAA,CAAM,wBAAwB,EAAC;AAC1G,EAAA,MAAM,UAAU,OAAO,KAAA,CAAM,OAAA,KAAY,QAAA,GAAW,MAAM,OAAA,GAAU,eAAA;AAEpE,EAAA,MAAM,aAAA,uBAAoB,GAAA,EAAY;AACtC,EAAA,KAAA,MAAW,gBAAgB,aAAA,EAAe;AACxC,IAAA,MAAM,EAAA,GAAK,YAAY,YAAY,CAAA;AACnC,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,aAAA,CAAc,GAAA,CAAI,CAAA,EAAG,EAAE,CAAA,KAAA,CAAO,CAAA;AAC9B,IAAA,MAAM,SAAA,CAAU,uBAAA,CAAwB,EAAE,CAAA,EAAG,IAAA,CAAK,UAAU,YAAA,EAAc,IAAA,EAAM,CAAC,CAAA,EAAG,OAAO,CAAA;AAAA,EAC7F;AAEA,EAAA,MAAM,MAAM,uBAAA,EAAwB;AACpC,EAAA,MAAM,UAAU,MAAM,OAAA,CAAQ,KAAK,EAAE,aAAA,EAAe,MAAM,CAAA;AAC1D,EAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,IAAA,IAAI,CAAC,MAAM,MAAA,EAAO,IAAK,CAAC,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA,EAAG;AACtD,IAAA,IAAI,aAAA,CAAc,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA,EAAG;AACnC,IAAA,MAAM,EAAA,CAAG,KAAK,GAAA,EAAK,KAAA,CAAM,IAAI,CAAA,EAAG,EAAE,KAAA,EAAO,IAAA,EAAM,CAAA;AAAA,EACjD;AAEA,EAAA,MAAM,iBAAA,CAAkB;AAAA,IACtB,OAAA;AAAA,IACA;AAAA,GACD,CAAA;AACH;AAEA,eAAsB,2BAAA,CAA4B,cAAuB,OAAA,EAAiC;AACxG,EAAA,MAAM,EAAA,GAAK,YAAY,YAAY,CAAA;AACnC,EAAA,IAAI,CAAC,EAAA,EAAI;AACP,IAAA,MAAM,IAAI,MAAM,uCAAuC,CAAA;AAAA,EACzD;AAEA,EAAA,MAAM,sBAAA,EAAuB;AAC7B,EAAA,MAAM,SAAA,CAAU,uBAAA,CAAwB,EAAE,CAAA,EAAG,IAAA,CAAK,UAAU,YAAA,EAAc,IAAA,EAAM,CAAC,CAAA,EAAG,OAAO,CAAA;AAE3F,EAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,IAAA,MAAM,QAAA,GAAW,MAAM,gBAAA,EAAiB;AACxC,IAAA,IAAI,QAAA,CAAS,YAAY,OAAA,EAAS;AAChC,MAAA,MAAM,iBAAA,CAAkB,EAAE,GAAG,QAAA,EAAU,SAAS,CAAA;AAAA,IAClD;AAAA,EACF;AACF;;;;"}