qpilot 0.10.0 → 0.12.0

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 (77) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +27 -26
  3. package/.next/standalone/.next/app-path-routes-manifest.json +5 -5
  4. package/.next/standalone/.next/build-manifest.json +2 -2
  5. package/.next/standalone/.next/prerender-manifest.json +14 -14
  6. package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  7. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  9. package/.next/standalone/.next/server/app/_not-found.rsc +3 -3
  10. package/.next/standalone/.next/server/app/api/run/[id]/answer/route_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/api/run/[id]/pause/route_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/api/run/[id]/shot/[num]/route_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/api/run/[id]/stream/route_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/api/run/route.js +35 -5
  15. package/.next/standalone/.next/server/app/api/run/route_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/api/runs/route_client-reference-manifest.js +1 -1
  17. package/.next/standalone/.next/server/app/api/settings/models/route_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/index.html +1 -1
  20. package/.next/standalone/.next/server/app/index.rsc +4 -4
  21. package/.next/standalone/.next/server/app/page.js +3 -3
  22. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/run/[id]/page.js +40 -2
  25. package/.next/standalone/.next/server/app/run/[id]/page.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/run/[id]/page_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/settings/page.js +2 -2
  28. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/settings.html +1 -1
  31. package/.next/standalone/.next/server/app/settings.rsc +4 -4
  32. package/.next/standalone/.next/server/app-paths-manifest.json +5 -5
  33. package/.next/standalone/.next/server/chunks/12.js +1 -1
  34. package/.next/standalone/.next/server/chunks/146.js +1 -0
  35. package/.next/standalone/.next/server/chunks/864.js +1 -1
  36. package/.next/standalone/.next/server/functions-config-manifest.json +3 -3
  37. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  38. package/.next/standalone/.next/server/pages/404.html +1 -1
  39. package/.next/standalone/.next/server/pages/500.html +1 -1
  40. package/.next/standalone/.next/server/pages-manifest.json +1 -1
  41. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  42. package/.next/standalone/.next/static/chunks/576-49360824ca68332a.js +1 -0
  43. package/.next/standalone/.next/static/chunks/628-c8e9b74cd568418b.js +1 -0
  44. package/.next/standalone/.next/static/chunks/677-f779c1efc6740046.js +1 -0
  45. package/.next/standalone/.next/static/chunks/app/page-c306a6ca88010f4b.js +1 -0
  46. package/.next/standalone/.next/static/chunks/app/run/[id]/page-f257e38c4222e3f4.js +1 -0
  47. package/.next/standalone/.next/static/chunks/app/settings/page-cebc318548783c8b.js +1 -0
  48. package/.next/standalone/.next/static/css/6a883a6c62470f9e.css +3 -0
  49. package/.next/standalone/package.json +1 -1
  50. package/.next/static/chunks/576-49360824ca68332a.js +1 -0
  51. package/.next/static/chunks/628-c8e9b74cd568418b.js +1 -0
  52. package/.next/static/chunks/677-f779c1efc6740046.js +1 -0
  53. package/.next/static/chunks/app/page-c306a6ca88010f4b.js +1 -0
  54. package/.next/static/chunks/app/run/[id]/page-f257e38c4222e3f4.js +1 -0
  55. package/.next/static/chunks/app/settings/page-cebc318548783c8b.js +1 -0
  56. package/.next/static/css/6a883a6c62470f9e.css +3 -0
  57. package/README.md +34 -0
  58. package/package.json +1 -1
  59. package/.next/standalone/.next/server/chunks/163.js +0 -1
  60. package/.next/standalone/.next/static/chunks/31-1c2a3eeb8e019e61.js +0 -1
  61. package/.next/standalone/.next/static/chunks/798-d4ad8791de5691eb.js +0 -1
  62. package/.next/standalone/.next/static/chunks/934-97e8acde71124af1.js +0 -1
  63. package/.next/standalone/.next/static/chunks/app/page-a5128dbb0726b27f.js +0 -1
  64. package/.next/standalone/.next/static/chunks/app/run/[id]/page-657e04995da73df5.js +0 -1
  65. package/.next/standalone/.next/static/chunks/app/settings/page-ca6715866c73dcf1.js +0 -1
  66. package/.next/standalone/.next/static/css/d44803215e16790d.css +0 -3
  67. package/.next/static/chunks/31-1c2a3eeb8e019e61.js +0 -1
  68. package/.next/static/chunks/798-d4ad8791de5691eb.js +0 -1
  69. package/.next/static/chunks/934-97e8acde71124af1.js +0 -1
  70. package/.next/static/chunks/app/page-a5128dbb0726b27f.js +0 -1
  71. package/.next/static/chunks/app/run/[id]/page-657e04995da73df5.js +0 -1
  72. package/.next/static/chunks/app/settings/page-ca6715866c73dcf1.js +0 -1
  73. package/.next/static/css/d44803215e16790d.css +0 -3
  74. /package/.next/standalone/.next/static/{hLCHLsmQIuQhDSh9WjZhW → EOq9QYmT4qq45HCYnlju6}/_buildManifest.js +0 -0
  75. /package/.next/standalone/.next/static/{hLCHLsmQIuQhDSh9WjZhW → EOq9QYmT4qq45HCYnlju6}/_ssgManifest.js +0 -0
  76. /package/.next/static/{hLCHLsmQIuQhDSh9WjZhW → EOq9QYmT4qq45HCYnlju6}/_buildManifest.js +0 -0
  77. /package/.next/static/{hLCHLsmQIuQhDSh9WjZhW → EOq9QYmT4qq45HCYnlju6}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{2324:(e,t,s)=>{Promise.resolve().then(s.bind(s,4166))},3410:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});let n=(0,s(6479).A)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]])},4166:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>U});var n=s(5155),a=s(63),r=s(2115),l=s(2619),i=s.n(l),o=s(6479);let c=(0,o.A)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),d=(0,o.A)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]),u=(0,o.A)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]),x=(0,o.A)("upload",[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]]);var h=s(4788);let m=(0,o.A)("square-check-big",[["path",{d:"M21 10.656V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.344",key:"2acyp4"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]),p=(0,o.A)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]),f=(0,o.A)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]),g=(0,o.A)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);var v=s(9746);let b=(0,o.A)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var k=s(3916);let j=(0,o.A)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);var y=s(8215),w=s(8316),N=s(5352),z=s(3410),A=s(7003),M=s(5016);function S(e){let{className:t,...s}=e;return(0,n.jsx)("textarea",{"data-slot":"textarea",className:(0,M.cn)("flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",t),...s})}var C=s(6329),E=s(2391);let I=new Set(["running","waiting","paused"]),F="rounded-xl border border-border overflow-hidden",D="px-4 py-2.5 bg-surface",q="text-[10.5px] font-semibold uppercase tracking-widest text-subtle",P="",R=[],L=null,O=new Set,$=[],H=[],_=!1,B=!1,T=null,V=null,K=null;function U(){let e=(0,a.useRouter)(),t=(0,r.useRef)(null),s=(0,r.useRef)(null),l=(0,r.useRef)(null),o=(0,r.useRef)(null),w=(0,r.useRef)(null),[N,z]=(0,r.useState)(P),[U,Z]=(0,r.useState)(!1),[G,Q]=(0,r.useState)(null),[X,ee]=(0,r.useState)(!1),[et,es]=(0,r.useState)(!1),[en,ea]=(0,r.useState)(!1),[er,el]=(0,r.useState)(R),[ei,eo]=(0,r.useState)(L),[ec,ed]=(0,r.useState)($),[eu,ex]=(0,r.useState)([]),[eh,em]=(0,r.useState)(O),[ep,ef]=(0,r.useState)(H),[eg,ev]=(0,r.useState)(_),[eb,ek]=(0,r.useState)(()=>Date.now()),[ej,ey]=(0,r.useState)("en"),ew=(0,E.jd)(ej).home;function eN(e){P=e,z(e);try{sessionStorage.setItem("qpilot:text",e)}catch(e){}}function ez(e){L=e,eo(e)}function eA(e){O=e,em(e)}function eM(e){let t="function"==typeof e?e(H):e;H=t,ef([...t])}async function eS(e){eN(await e.file.text()),ez(e.name)}async function eC(e,t){let s=new FormData;for(let n of(s.append("testCase",e),s.append("headless",String(t)),$))s.append("files",n);let n=await fetch("/api/run",{method:"POST",body:s}),a=await n.json();if(!n.ok)throw Error(a.error||"error");return a.id}async function eE(t){if(N.trim()){Z(!0),Q(null);try{let s=await eC(N,t);e.push("/run/".concat(s))}catch(e){Q(e instanceof Error?e.message:String(e)),Z(!1)}}}async function eI(){B=!0;let e=T;e&&fetch("/api/run/".concat(e,"/pause"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"pause"})}).catch(()=>{})}async function eF(e){let t=er.filter(e=>eh.has(e.name));if(!t.length)return;let s=t.map(e=>({file:e,id:null,status:"queued"}));eM(s),_=!0,ev(!0),B=!1,T=null,V=Date.now(),K=null;for(let t=0;t<s.length;t++){if(B){eM(e=>e.map((e,s)=>s>=t?{...e,status:"skipped"}:e));break}let n=Date.now();eM(e=>e.map((e,s)=>s===t?{...e,status:"running",startedAt:n}:e));try{let n=await s[t].file.file.text(),a=await eC(n,e);T=a,eM(e=>e.map((e,s)=>s===t?{...e,id:a}:e));let r=await function(e){return new Promise(t=>{let s=new EventSource("/api/run/".concat(e,"/stream")),n=setInterval(()=>{B&&(clearInterval(n),s.close(),t("paused"))},150);s.onmessage=e=>{var a;let r=null==(a=JSON.parse(e.data).run)?void 0:a.status;if(B){clearInterval(n),s.close(),t("paused");return}r&&!I.has(r)&&(clearInterval(n),s.close(),t(r))},s.onerror=()=>{clearInterval(n),s.close(),t("error")}})}(a),l=Date.now();if(eM(e=>e.map((e,s)=>s===t?{...e,status:r,finishedAt:l}:e)),B){eM(e=>e.map((e,s)=>s>t?{...e,status:"skipped"}:e));break}}catch(e){eM(e=>e.map((e,s)=>s===t?{...e,status:"error",finishedAt:Date.now()}:e))}}T=null,K=Date.now(),_=!1,ev(!1),fetch("/api/runs").then(e=>e.ok?e.json():[]).then(ex).catch(()=>{})}(0,r.useEffect)(()=>{var e;(null==(e=navigator.language)?void 0:e.toLowerCase().startsWith("ru"))&&ey("ru")},[]),(0,r.useEffect)(()=>{if(!eg)return;let e=setInterval(()=>ek(Date.now()),1e3);return()=>clearInterval(e)},[eg]),(0,r.useEffect)(()=>{fetch("/api/runs").then(e=>e.ok?e.json():[]).then(ex).catch(()=>{})},[]),(0,r.useEffect)(()=>{fetch("/api/settings").then(e=>e.ok?e.json():null).then(t=>{t&&!t.configured&&e.replace("/settings?welcome=1")}).catch(()=>{})},[]),(0,r.useEffect)(()=>{let e=w.current;e&&ea(e.scrollHeight>364)},[N]),(0,r.useEffect)(()=>{if(!_)return;let e=setInterval(()=>{ef([...H]),ev(_),_||clearInterval(e)},200);return()=>clearInterval(e)},[]),(0,r.useEffect)(()=>{if(eg)(0,C.O)("running");else if(H.length>0){let e=H.some(e=>"failed"===e.status||"error"===e.status),t=H.every(e=>"passed"===e.status);(0,C.O)(e?"failed":t?"passed":"default")}},[eg]),(0,r.useEffect)(()=>()=>{(0,C.g)()},[]),(0,r.useEffect)(()=>{try{let e=sessionStorage.getItem("qpilot:prefill");if(null!==e)sessionStorage.removeItem("qpilot:prefill"),eN(e),ez(null);else if(!P){let e=sessionStorage.getItem("qpilot:text");e&&eN(e)}}catch(e){}},[]);let eD=eh.size,eq=er.length>0&&eh.size===er.length,eP=eD>0,eR=er.length>0&&!eP,eL=er.length>0?"max-w-3xl":"max-w-2xl";return(0,n.jsxs)("main",{className:"flex flex-col items-center min-h-screen px-6 pt-20 pb-24",children:[(0,n.jsx)("div",{className:"absolute right-4 top-4 flex items-center gap-2 sm:right-6 sm:top-6",children:(0,n.jsxs)(i(),{href:"/settings",title:ew.settings,className:"inline-flex items-center gap-1.5 rounded-lg border border-border bg-surface px-2.5 py-1.5 text-xs text-muted-foreground hover:text-foreground hover:bg-surface-hover transition-colors",children:[(0,n.jsx)(c,{className:"size-3.5"}),(0,n.jsx)("span",{className:"hidden sm:inline",children:ew.settings})]})}),(0,n.jsx)("div",{className:"flex items-center justify-center size-11 rounded-2xl border border-border bg-surface-hover mb-6 shadow-lg",children:(0,n.jsx)(d,{className:"size-5 text-foreground/80"})}),(0,n.jsx)("h1",{className:"text-3xl font-semibold tracking-tight mb-2",children:"qpilot"}),(0,n.jsx)("p",{className:"text-sm text-muted-foreground mb-10",children:ew.tagline}),(0,n.jsxs)("div",{className:(0,M.cn)("w-full space-y-3",eL),children:[(0,n.jsx)("input",{ref:l,type:"file",webkitdirectory:"",multiple:!0,className:"hidden",onChange:function(e){var t;let s=Array.from(null!=(t=e.target.files)?t:[]).filter(e=>e.name.endsWith(".md")).map(e=>({name:e.webkitRelativePath||e.name,file:e}));s.sort((e,t)=>e.name.localeCompare(t.name)),R=s,el(s),ez(null),eA(new Set),eM([]),e.target.value=""}}),(0,n.jsx)("input",{ref:s,type:"file",accept:".md,text/markdown",className:"hidden",onChange:function(e){var t;let s=null==(t=e.target.files)?void 0:t[0];if(!s)return;let n=new FileReader;n.onload=e=>{var t;"string"==typeof(null==(t=e.target)?void 0:t.result)&&eN(e.target.result)},n.readAsText(s,"utf-8"),e.target.value=""}}),(0,n.jsx)("input",{ref:o,type:"file",multiple:!0,className:"hidden",onChange:function(e){var t;!function(e){if(!e.length)return;let t=e.find(e=>e.size>0x1900000);if(t)return Q('"'.concat(t.name,'" is larger than ').concat(25," MB"));let s=new Map(ec.map(e=>[e.name,e]));for(let t of e)s.set(t.name,t);let n=[...s.values()];if(n.length>10)return Q("At most ".concat(10," attachments per run"));Q(null),$=n,ed(n)}(Array.from(null!=(t=e.target.files)?t:[])),e.target.value=""}}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsxs)(A.$,{type:"button",variant:"outline",size:"sm",onClick:()=>{var e;return null==(e=l.current)?void 0:e.click()},className:"gap-2 text-muted-foreground hover:text-foreground",children:[(0,n.jsx)(u,{className:"size-4"}),ew.chooseFolder]}),(0,n.jsxs)(A.$,{type:"button",variant:"outline",size:"sm",onClick:()=>{var e;return null==(e=s.current)?void 0:e.click()},className:"gap-2 text-muted-foreground hover:text-foreground",children:[(0,n.jsx)(x,{className:"size-4"}),ew.uploadMd]}),er.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("span",{className:"text-xs text-muted-foreground",children:[er.length," .md ",ew.files]}),(0,n.jsx)(A.$,{type:"button",variant:"ghost",size:"sm",onClick:function(){var e;R=e=[],el(e),ez(null),eA(new Set),eM([])},title:ew.clearList,className:"ml-auto size-7 p-0 text-subtle hover:text-foreground",children:(0,n.jsx)(h.A,{className:"size-3.5"})})]})]}),(0,n.jsxs)("div",{className:(0,M.cn)(eR&&"flex gap-4 items-start"),children:[er.length>0&&(0,n.jsxs)("div",{className:(0,M.cn)(eR?"w-64 shrink-0":"w-full","space-y-3"),children:[(0,n.jsxs)("ul",{className:(0,M.cn)(F,"divide-y divide-border"),children:[(0,n.jsx)("li",{children:(0,n.jsxs)("div",{className:(0,M.cn)(D,"flex items-center gap-3 py-2"),children:[(0,n.jsxs)("button",{type:"button",onClick:function(){eA(eh.size===er.length?new Set:new Set(er.map(e=>e.name)))},className:"flex items-center gap-2 shrink-0 text-subtle hover:text-foreground transition-colors",children:[eq?(0,n.jsx)(m,{className:"size-4 text-foreground/75"}):(0,n.jsx)(p,{className:"size-4"}),(0,n.jsx)("span",{className:"text-[11px] text-muted-foreground select-none",children:eD>0?"".concat(eD," ").concat(ew.selected):ew.selectAll})]}),eD>0&&!eg&&(0,n.jsxs)("div",{className:"ml-auto flex items-center gap-1.5",children:[(0,n.jsxs)(A.$,{type:"button",size:"sm",className:"h-7 gap-1.5 text-xs font-medium",onClick:()=>eF(!0),children:[(0,n.jsx)(f,{className:"size-3.5"}),ew.runN," ",eD]}),(0,n.jsxs)(A.$,{type:"button",size:"sm",variant:"outline",className:"h-7 gap-1.5 text-xs",onClick:()=>eF(!1),children:[(0,n.jsx)(g,{className:"size-3.5"}),ew.withPreview]})]}),eg&&(0,n.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[(0,n.jsx)(v.A,{className:"size-3.5 text-subtle animate-spin"}),(0,n.jsx)(A.$,{type:"button",size:"sm",variant:"ghost",className:"h-7 text-xs text-destructive hover:text-destructive",onClick:eI,children:ew.stop})]})]})}),er.map(e=>(0,n.jsxs)("li",{className:"flex items-center",children:[(0,n.jsx)("button",{type:"button",onClick:()=>(function(e){let t=new Set(eh);t.has(e)?t.delete(e):t.add(e),eA(t)})(e.name),className:"shrink-0 px-4 py-2.5 text-subtle hover:text-foreground transition-colors",children:eh.has(e.name)?(0,n.jsx)(m,{className:"size-4 text-foreground/75"}):(0,n.jsx)(p,{className:"size-4"})}),(0,n.jsx)("button",{type:"button",onClick:()=>eS(e),className:(0,M.cn)("flex-1 text-left py-2.5 pr-4 text-sm font-mono transition-colors truncate",ei===e.name?"text-foreground":"text-muted-foreground hover:text-foreground"),children:e.name})]},e.name))]}),ep.length>0&&(0,n.jsxs)("div",{className:F,children:[(0,n.jsxs)("div",{className:(0,M.cn)(D,"flex items-center gap-2"),children:[(0,n.jsx)("span",{className:q,children:ew.batchRun}),V&&(0,n.jsx)("span",{className:"ml-auto text-[11px] font-mono tabular-nums text-subtle",children:(0,M.a)((null!=K?K:eb)-V)})]}),(0,n.jsx)("ul",{className:"divide-y divide-border",children:ep.map((e,t)=>{var s;return(0,n.jsxs)("li",{className:"flex items-center gap-3 px-4 py-2.5",children:[(0,n.jsx)(J,{status:e.status}),e.id?(0,n.jsx)(i(),{href:"/run/".concat(e.id),className:"flex-1 min-w-0 text-sm font-mono text-foreground/75 hover:text-foreground truncate transition-colors",children:e.file.name}):(0,n.jsx)("span",{className:"flex-1 min-w-0 text-sm font-mono text-subtle truncate",children:e.file.name}),(0,n.jsx)("span",{className:"shrink-0 text-[11px] font-mono tabular-nums text-faint",children:e.startedAt?(0,M.a)((null!=(s=e.finishedAt)?s:"running"===e.status?eb:e.startedAt)-e.startedAt):""}),"queued"!==e.status&&"running"!==e.status&&"skipped"!==e.status&&(0,n.jsx)("span",{className:(0,M.cn)("shrink-0 text-[10.5px] font-semibold uppercase tracking-wide","passed"===e.status?"text-success":"failed"===e.status||"error"===e.status?"text-destructive":"text-subtle"),children:e.status})]},t)})})]})]}),!eP&&(0,n.jsxs)("form",{ref:t,onSubmit:function(e){e.preventDefault(),eE(!0)},className:(0,M.cn)("space-y-3",eR&&"flex-1 min-w-0"),children:[(0,n.jsxs)("div",{className:(0,M.cn)("relative rounded-xl border transition-all duration-200",X?"border-border-strong ring-3 ring-ring/15":"border-border"),children:[(0,n.jsx)(S,{ref:w,placeholder:ew.placeholder,value:N,onChange:e=>eN(e.target.value),onFocus:()=>ee(!0),onBlur:()=>ee(!1),onKeyDown:e=>{if((e.metaKey||e.ctrlKey)&&"Enter"===e.key){var s;e.preventDefault(),null==(s=t.current)||s.requestSubmit()}},rows:16,className:(0,M.cn)("min-h-[320px] font-mono text-[12.5px] leading-relaxed resize-none border-0 bg-transparent focus-visible:ring-0 focus-visible:ring-offset-0 rounded-xl p-4 overflow-y-auto",et?"max-h-[65vh]":"max-h-[360px]",en&&"pb-9")}),en&&(0,n.jsx)("button",{type:"button",onClick:()=>es(e=>!e),className:"absolute bottom-2 right-3 flex items-center gap-1 rounded-md border border-border bg-background/80 backdrop-blur px-2 py-1 text-[11px] text-muted-foreground hover:text-foreground transition-colors",children:et?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(b,{className:"size-3.5"}),ew.collapse]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(k.A,{className:"size-3.5"}),ew.expand]})})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(A.$,{type:"submit",disabled:!N.trim()||U,size:"lg",className:"gap-2 font-medium",children:U?ew.running:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(f,{className:"size-4"}),ew.run]})}),(0,n.jsx)(A.$,{type:"button",disabled:!N.trim()||U,size:"lg",variant:"outline",onClick:()=>eE(!1),className:"gap-2",children:U?ew.running:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(g,{className:"size-4"}),ew.runPreview]})}),(0,n.jsxs)(A.$,{type:"button",variant:"ghost",size:"lg",onClick:()=>eN('TC-001 — Login and add item to cart\nURL: https://www.saucedemo.com/\nCredentials: standard_user / secret_sauce\n\nSteps:\n1. Open the home page.\n Expected: login form with Username and Password fields is visible.\n2. Enter Username "standard_user" and Password "secret_sauce", click Login.\n Expected: Products page opens with 6 items.\n3. Click "Add to cart" on "Sauce Labs Backpack".\n Expected: cart counter shows 1.\n4. Click the cart icon.\n Expected: cart contains exactly one item — Sauce Labs Backpack at $29.99.'),className:"ml-auto text-muted-foreground hover:text-foreground",children:[(0,n.jsx)(j,{className:"size-4"}),ew.example]})]})]})]}),(0,n.jsx)(W,{t:(0,E.jd)(ej).home,files:ec,onPick:()=>{var e;return null==(e=o.current)?void 0:e.click()},onRemove:function(e){var t;$=t=ec.filter(t=>t.name!==e),ed(t)}}),G&&(0,n.jsxs)("div",{className:"flex items-start gap-2 rounded-xl border border-destructive/25 bg-destructive/[0.06] px-4 py-3",children:[(0,n.jsx)(y.A,{className:"size-4 shrink-0 text-destructive mt-px"}),(0,n.jsx)("span",{className:"text-xs leading-relaxed text-destructive",children:G})]})]}),eu.length>0&&(0,n.jsxs)("div",{className:(0,M.cn)("w-full mt-12",eL),children:[(0,n.jsx)("div",{className:(0,M.cn)(q,"mb-3"),children:ew.recentRuns}),(0,n.jsx)("ul",{className:"space-y-1.5",children:eu.map(e=>(0,n.jsx)("li",{children:(0,n.jsxs)(i(),{href:"/run/".concat(e.id),className:"flex items-center gap-3 rounded-xl border border-border px-4 py-3 hover:bg-surface-hover transition-colors",children:[(0,n.jsx)(Y,{status:e.status}),(0,n.jsx)("span",{className:"flex-1 min-w-0 text-sm text-foreground/80 truncate",children:e.title}),(0,n.jsx)("span",{className:"shrink-0 text-[11px] text-subtle font-mono tabular-nums",children:function(e){let t=new Date(e),s=new Date;return t.getDate()===s.getDate()&&t.getMonth()===s.getMonth()&&t.getFullYear()===s.getFullYear()?t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):t.toLocaleDateString([],{month:"short",day:"numeric"})+" "+t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}(e.createdAt)})]})},e.id))})]})]})}function W(e){let{files:t,onPick:s,onRemove:a,t:r}=e;return(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,n.jsxs)(A.$,{type:"button",variant:"ghost",size:"sm",onClick:s,className:"gap-2 text-muted-foreground hover:text-foreground",children:[(0,n.jsx)(w.A,{className:"size-3.5"}),t.length?r.addFile:r.attach]}),0===t.length?(0,n.jsx)("span",{className:"text-[11px] text-subtle",children:r.attachHint}):t.map(e=>{var t;return(0,n.jsxs)("span",{className:"group inline-flex items-center gap-1.5 rounded-lg border border-border bg-surface pl-2.5 pr-1 py-1",children:[(0,n.jsx)("span",{className:"text-[11px] font-mono text-foreground/75 max-w-[180px] truncate",children:e.name}),(0,n.jsx)("span",{className:"text-[10px] tabular-nums text-subtle",children:(t=e.size)<1024?"".concat(t," B"):t<1048576?"".concat(Math.round(t/1024)," KB"):"".concat((t/1024/1024).toFixed(1)," MB")}),(0,n.jsx)("button",{type:"button",onClick:()=>a(e.name),title:"".concat(r.remove," ").concat(e.name),className:"rounded p-0.5 text-subtle hover:text-destructive transition-colors",children:(0,n.jsx)(h.A,{className:"size-3"})})]},e.name)})]})}function J(e){let{status:t}=e;return"running"===t?(0,n.jsx)(v.A,{className:"size-3.5 shrink-0 text-subtle animate-spin"}):"passed"===t?(0,n.jsx)(N.A,{className:"size-3.5 shrink-0 text-success",strokeWidth:2.5}):"failed"===t||"error"===t?(0,n.jsx)(y.A,{className:"size-3.5 shrink-0 text-destructive"}):"paused"===t?(0,n.jsx)("span",{className:"size-3.5 shrink-0 text-[10px] text-subtle font-mono",children:"▐▐"}):"skipped"===t?(0,n.jsx)("span",{className:"size-3.5 shrink-0 text-[10px] text-faint font-mono",children:"—"}):(0,n.jsx)("span",{className:"size-3.5 shrink-0 rounded-sm border border-border-strong inline-block"})}function Y(e){let{status:t}=e;return"passed"===t?(0,n.jsx)(N.A,{className:"size-3.5 shrink-0 text-success",strokeWidth:2.5}):"failed"===t||"error"===t?(0,n.jsx)(y.A,{className:"size-3.5 shrink-0 text-destructive"}):(0,n.jsx)(z.A,{className:"size-3.5 shrink-0 text-subtle"})}},4788:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});let n=(0,s(6479).A)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},6329:(e,t,s)=>{"use strict";function n(e){return"data:image/svg+xml,".concat(encodeURIComponent(e))}function a(e){let t=document.querySelector('link[rel="icon"]');t||(t=Object.assign(document.createElement("link"),{rel:"icon"}),document.head.appendChild(t)),t.href=e}function r(e){return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">'.concat(e,"</svg>")}s.d(t,{O:()=>u,g:()=>x});let l=Array.from({length:10},(e,t)=>{let s=t/10*Math.PI*2-Math.PI/2,a=.65*Math.PI,l=12+10*Math.cos(s),i=12+10*Math.sin(s),o=12+10*Math.cos(s+a),c=12+10*Math.sin(s+a);return n(r('<circle cx="12" cy="12" r="10" stroke="#38bdf8" stroke-width="2.5" fill="none" opacity="0.15"/>'+'<path d="M'.concat(l.toFixed(3)," ").concat(i.toFixed(3)," A10 10 0 0 1 ").concat(o.toFixed(3)," ").concat(c.toFixed(3),'" stroke="#38bdf8" stroke-width="2.5" fill="none" stroke-linecap="round"/>')))}),i={passed:n(r('<circle cx="12" cy="12" r="10" fill="#22c55e"/><path d="M7 12.5l3.5 3.5 6.5-7" stroke="white" stroke-width="2.2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>')),failed:n(r('<circle cx="12" cy="12" r="10" fill="#ef4444"/><path d="M8 8l8 8M16 8l-8 8" stroke="white" stroke-width="2.2" stroke-linecap="round"/>')),error:n(r('<circle cx="12" cy="12" r="10" fill="#ef4444"/><path d="M8 8l8 8M16 8l-8 8" stroke="white" stroke-width="2.2" stroke-linecap="round"/>')),waiting:n(r('<circle cx="12" cy="12" r="10" fill="#facc15"/><path d="M12 7v5.5l3 3" stroke="white" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>')),paused:n(r('<circle cx="12" cy="12" r="10" fill="#64748b"/><path d="M9 8v8M15 8v8" stroke="white" stroke-width="2.2" stroke-linecap="round"/>')),default:n(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="'.concat(e,'" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">').concat('<path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/>').concat(t,"</svg>")}("#7c7c8a"))},o=null,c=0;function d(){o&&(clearInterval(o),o=null)}function u(e){var t;if(d(),"running"===e){c=0,a(l[0]),o=setInterval(()=>{a(l[c=(c+1)%10])},100);return}a(null!=(t=i[e])?t:i.default)}function x(){d(),a(i.default)}},8316:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});let n=(0,s(6479).A)("paperclip",[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]])}},e=>{e.O(0,[628,677,441,255,358],()=>e(e.s=2324)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[170],{6170:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var s=n(5155);n(2115);var a=n(2045),r=n(5016);function o(e){let{className:t,type:n,...o}=e;return(0,s.jsx)(a.p,{type:n,"data-slot":"input",className:(0,r.cn)("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",t),...o})}},6329:(e,t,n)=>{"use strict";function s(e){return"data:image/svg+xml,".concat(encodeURIComponent(e))}function a(e){let t=document.querySelector('link[rel="icon"]');t||(t=Object.assign(document.createElement("link"),{rel:"icon"}),document.head.appendChild(t)),t.href=e}function r(e){return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">'.concat(e,"</svg>")}n.d(t,{O:()=>u,g:()=>p});let o=Array.from({length:10},(e,t)=>{let n=t/10*Math.PI*2-Math.PI/2,a=.65*Math.PI,o=12+10*Math.cos(n),c=12+10*Math.sin(n),l=12+10*Math.cos(n+a),i=12+10*Math.sin(n+a);return s(r('<circle cx="12" cy="12" r="10" stroke="#38bdf8" stroke-width="2.5" fill="none" opacity="0.15"/>'+'<path d="M'.concat(o.toFixed(3)," ").concat(c.toFixed(3)," A10 10 0 0 1 ").concat(l.toFixed(3)," ").concat(i.toFixed(3),'" stroke="#38bdf8" stroke-width="2.5" fill="none" stroke-linecap="round"/>')))}),c={passed:s(r('<circle cx="12" cy="12" r="10" fill="#22c55e"/><path d="M7 12.5l3.5 3.5 6.5-7" stroke="white" stroke-width="2.2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>')),failed:s(r('<circle cx="12" cy="12" r="10" fill="#ef4444"/><path d="M8 8l8 8M16 8l-8 8" stroke="white" stroke-width="2.2" stroke-linecap="round"/>')),error:s(r('<circle cx="12" cy="12" r="10" fill="#ef4444"/><path d="M8 8l8 8M16 8l-8 8" stroke="white" stroke-width="2.2" stroke-linecap="round"/>')),waiting:s(r('<circle cx="12" cy="12" r="10" fill="#facc15"/><path d="M12 7v5.5l3 3" stroke="white" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>')),paused:s(r('<circle cx="12" cy="12" r="10" fill="#64748b"/><path d="M9 8v8M15 8v8" stroke="white" stroke-width="2.2" stroke-linecap="round"/>')),default:s(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="'.concat(e,'" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">').concat('<path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/>').concat(t,"</svg>")}("#7c7c8a"))},l=null,i=0;function d(){l&&(clearInterval(l),l=null)}function u(e){var t;if(d(),"running"===e){i=0,a(o[0]),l=setInterval(()=>{a(o[i=(i+1)%10])},100);return}a(null!=(t=c[e])?t:c.default)}function p(){d(),a(c.default)}},8446:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>ea});var s=n(5155),a=n(2115),r=n(2619),o=n.n(r),c=n(63),l=n(3229),i=n(3228),d=n(2638),u=n(3410),p=n(340),x=n(8129),m=n(5352),g=n(7081),h=n(7906),f=n(9746),b=n(8215),v=n(7212),j=n(3916),w=n(8316),N=n(7274),y=n(4788),k=n(6329),S=n(2391),z=n(1083),A=n(2027),C=n(3101),E=n(5016);let M=(0,C.F)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function _(e){let{className:t,variant:n="default",render:s,...a}=e;return(0,A.C)({defaultTagName:"span",props:(0,z.v6)({className:(0,E.cn)(M({variant:n}),t)},a),render:s,state:{slot:"badge",variant:n}})}var q=n(7003),R=n(4036),T=n(5949),U=n(4915),O=n(8502),D=n(8905),F=n(989);function P(e){let{...t}=e;return(0,s.jsx)(R.D,{"data-slot":"dialog",...t})}function I(e){let{...t}=e;return(0,s.jsx)(T.Z,{"data-slot":"dialog-portal",...t})}function B(e){let{className:t,...n}=e;return(0,s.jsx)(U.X,{"data-slot":"dialog-overlay",className:(0,E.cn)("fixed inset-0 isolate z-50 bg-black/30 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",t),...n})}function L(e){let{className:t,children:n,showCloseButton:a=!0,...r}=e;return(0,s.jsxs)(I,{children:[(0,s.jsx)(B,{}),(0,s.jsxs)(O.h,{"data-slot":"dialog-content",className:(0,E.cn)("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...r,children:[n,a&&(0,s.jsxs)(D.H,{"data-slot":"dialog-close",render:(0,s.jsx)(q.$,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[(0,s.jsx)(y.A,{}),(0,s.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function $(e){let{className:t,...n}=e;return(0,s.jsx)("div",{"data-slot":"dialog-header",className:(0,E.cn)("flex flex-col gap-2",t),...n})}function H(e){let{className:t,...n}=e;return(0,s.jsx)(F.L,{"data-slot":"dialog-title",className:(0,E.cn)("font-heading text-base leading-none font-medium",t),...n})}var W=n(6170),J=n(8521),V=n(2577),G=n(1127);function K(e){let{...t}=e;return(0,s.jsx)(J.N,{"data-slot":"collapsible",...t})}function X(e){let{...t}=e;return(0,s.jsx)(V.R,{"data-slot":"collapsible-trigger",...t})}function Z(e){let{...t}=e;return(0,s.jsx)(G.j,{"data-slot":"collapsible-content",...t})}let Q={pass:"✅",fail:"❌",warn:"⚠️",skipped:"⏭",queued:"⏳"};function Y(e){let t=[];for(let n of e){let e=t[t.length-1];e&&e.title===n.group?e.steps.push(n):t.push({title:n.group,steps:[n]})}return t}function ee(e,t){let n=t=>e.steps.filter(e=>e.status===t).length,s=["".concat(n("pass")," ").concat(t.passedCount)];return n("warn")&&s.push("".concat(n("warn")," ").concat(t.warnCount)),n("fail")&&s.push("".concat(n("fail")," ").concat(t.failedCount)),"".concat(e.steps.length," ").concat(t.steps,": ").concat(s.join(", "))}let et=(e,t)=>{var n,s;return null!=(s=null==(n=t.status[e.status])?void 0:n.label)?s:e.status},en=e=>e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"),es={pass:"#15803d",fail:"#b91c1c",warn:"#b45309",skipped:"#6b7280",queued:"#6b7280"};function ea(e){var t,n,r,N,y;let{params:z}=e,{id:A}=(0,a.use)(z),C=(0,c.useRouter)(),[M,_]=(0,a.useState)(null),[R,T]=(0,a.useState)([]),[U,O]=(0,a.useState)(!1),[D,F]=(0,a.useState)(null),[I,B]=(0,a.useState)(()=>Date.now()),[$,H]=(0,a.useState)(!1),[W,J]=(0,a.useState)(!1),[V,G]=(0,a.useState)(!1),[ea,eo]=(0,a.useState)(null),el=(0,a.useRef)(!1);(0,a.useEffect)(()=>{el.current=!1;let e=new EventSource("/api/run/".concat(A,"/stream"));return e.onmessage=e=>{let t=JSON.parse(e.data);if(el.current=!0,t.events?T(t.events):t.event&&T(e=>[...e,t.event]),_({...t.run,events:[]}),!["running","waiting","paused"].includes(t.run.status)){var n,s,a,r,o;let e=null!=(o=null!=(r=null==(n=t.event)?void 0:n.ts)?r:null==(a=t.events)||null==(s=a.at(-1))?void 0:s.ts)?o:Date.now();F(t=>null!=t?t:e)}},e.onerror=()=>{e.close(),el.current||O(!0)},()=>e.close()},[A]);let ei=(0,S.jd)(null==M?void 0:M.language),ed=null!=(n=null==M?void 0:M.status)?n:"running",ep=null!=(r=null==M?void 0:M.steps)?r:[],em=ep.filter(e=>"pass"===e.status).length,eg=ep.filter(e=>"fail"===e.status).length,eh=ep.filter(e=>"warn"===e.status).length,ef="running"===ed||"waiting"===ed,eb=ef||"paused"===ed;async function ev(){eb&&(H(!0),await fetch("/api/run/".concat(A,"/pause"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"paused"===ed?"resume":"pause"})}).catch(()=>{}),H(!1))}async function ej(){if(M)try{await navigator.clipboard.writeText(function(e,t,n){let s=["# ".concat(e.title),"","**".concat(n.reportResult,":** ").concat(et(e,n).toUpperCase()," — ").concat(ee(e,n)),"**".concat(n.reportDuration,":** ").concat((0,E.a)(t)," \xb7 ").concat(new Date(e.createdAt).toLocaleString())];for(let t of Y(e.steps))s.push(""),t.title&&s.push("## ".concat(t.title),""),t.steps.forEach((e,t)=>{var a,r,o;let c=(null!=(r=n.stepStatus[e.status])?r:e.status).toUpperCase();s.push("".concat(t+1,". ").concat(null!=(o=Q[e.status])?o:""," **").concat(c,"** — ").concat(e.description));let l="fail"===e.status||"warn"===e.status;l&&e.expected&&s.push(" - ".concat(n.expected,": ").concat(e.expected)),e.evidence&&s.push(l?" - ".concat(n.actual,": ").concat(e.evidence):" - ".concat(e.evidence)),e.mockUnverified&&s.push(" - ⚠ ".concat(n.mockUnverified)),(null==(a=e.consoleErrors)?void 0:a.length)&&s.push(" - ".concat(n.consoleErrors,": ").concat(e.consoleErrors.join(" | ")))});return e.summary&&s.push("","**".concat(n.summary,":** ").concat(e.summary)),s.join("\n")}(M,ek,ei)),J(!0),setTimeout(()=>J(!1),1500)}catch(e){eo(e instanceof Error?e.message:String(e))}}async function ew(){if(!M)return;let e={};await Promise.all(M.steps.filter(e=>e.screenshot).map(async t=>{try{let n=await (await fetch(t.screenshot)).blob();e[t.num]=await new Promise((e,t)=>{let s=new FileReader;s.onload=()=>e(String(s.result)),s.onerror=()=>t(s.error),s.readAsDataURL(n)})}catch(e){}}));let t=function(e,t,n,s){let a="passed"===e.status?es.pass:es.fail,r=Y(e.steps).map(e=>"".concat(e.title?"<h2>".concat(en(e.title),"</h2>"):"","<ol>").concat(e.steps.map((e,t)=>((e,t)=>{var a,r,o,c;let l="fail"===e.status||"warn"===e.status,i=[];l&&e.expected&&i.push("<dt>".concat(en(n.expected),"</dt><dd>").concat(en(e.expected),"</dd>")),l&&e.evidence&&i.push("<dt>".concat(en(n.actual),'</dt><dd style="color:').concat(es[e.status],'">').concat(en(e.evidence),"</dd>"));let d=(!l&&e.evidence?'<p class="ev">'.concat(en(e.evidence),"</p>"):"")+(e.mockUnverified?'<p class="ev" style="color:'.concat(es.warn,'">⚠ ').concat(en(n.mockUnverified),"</p>"):"");(null==(a=e.consoleErrors)?void 0:a.length)&&i.push("<dt>".concat(en(n.consoleErrors),"</dt><dd>").concat(e.consoleErrors.map(en).join("<br>"),"</dd>"));let u=s[e.num]?'<img src="'.concat(s[e.num],'" alt="').concat(en(n.reportScreenshot)," ").concat(t,'">'):"";return'<li class="step" style="border-left-color:'.concat(null!=(r=es[e.status])?r:"#6b7280",'">\n <div class="head"><span class="badge" style="color:').concat(null!=(o=es[e.status])?o:"#6b7280",'">').concat(en((null!=(c=n.stepStatus[e.status])?c:e.status).toUpperCase()),'</span><span class="num">').concat(String(t).padStart(2,"0"),"</span>").concat(en(e.description),"</div>\n ").concat(d).concat(i.length?"<dl>".concat(i.join(""),"</dl>"):"","\n ").concat(u,"\n</li>")})(e,t+1)).join(""),"</ol>")).join("");return'<!doctype html>\n<html lang="'.concat(e.language,'">\n<head>\n<meta charset="utf-8">\n<meta name="viewport" content="width=device-width, initial-scale=1">\n<title>').concat(en(e.title)," — ").concat(en(n.reportTitle),'</title>\n<style>\n body { font: 14px/1.55 -apple-system, "Segoe UI", Roboto, sans-serif; color: #111827; background: #fff; max-width: 860px; margin: 0 auto; padding: 32px 20px 64px; }\n h1 { font-size: 20px; margin: 0 0 6px; overflow-wrap: anywhere; }\n h2 { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: #6b7280; margin: 28px 0 8px; }\n .meta { color: #4b5563; font-size: 13px; }\n .verdict { font-weight: 700; }\n ol { list-style: none; margin: 0; padding: 0; }\n .step { border: 1px solid #e5e7eb; border-left-width: 3px; border-radius: 8px; padding: 10px 14px; margin: 8px 0; break-inside: avoid; }\n .head { overflow-wrap: anywhere; }\n .badge { font-size: 11px; font-weight: 700; letter-spacing: .06em; margin-right: 8px; }\n .num { color: #9ca3af; font-family: ui-monospace, Menlo, monospace; font-size: 12px; margin-right: 8px; }\n dl { display: grid; grid-template-columns: max-content 1fr; gap: 4px 12px; margin: 8px 0 0; font-size: 12.5px; }\n dt { color: #6b7280; }\n .ev { margin: 6px 0 0; font: 12.5px/1.5 ui-monospace, Menlo, monospace; color: #374151; overflow-wrap: anywhere; }\n dd { margin: 0; font-family: ui-monospace, Menlo, monospace; overflow-wrap: anywhere; }\n img { display: block; max-width: 100%; margin-top: 10px; border: 1px solid #e5e7eb; border-radius: 6px; }\n .summary, pre { border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px 14px; margin-top: 20px; }\n pre { white-space: pre-wrap; overflow-wrap: anywhere; font: 12px/1.5 ui-monospace, Menlo, monospace; color: #374151; }\n</style>\n</head>\n<body>\n<h1>').concat(en(e.title),'</h1>\n<p class="meta"><span class="verdict" style="color:').concat(a,'">').concat(en(et(e,n).toUpperCase()),"</span> — ").concat(en(ee(e,n))," \xb7 ").concat(en(n.reportDuration),": ").concat(en((0,E.a)(t))," \xb7 ").concat(en(new Date(e.createdAt).toLocaleString()),"</p>\n").concat(r,"\n").concat(e.summary?'<div class="summary"><h2 style="margin-top:0">'.concat(en(n.summary),"</h2>").concat(en(e.summary),"</div>"):"","\n<h2>").concat(en(n.testCase),"</h2>\n<pre>").concat(en(e.testCase),"</pre>\n</body>\n</html>")}(M,ek,ei,e),n=URL.createObjectURL(new Blob([t],{type:"text/html;charset=utf-8"})),s=document.createElement("a");s.href=n,s.download="qpilot-".concat(M.id,".html"),s.click(),URL.revokeObjectURL(n)}async function eN(){if(M){G(!0),eo(null);try{let e=await fetch("/api/run",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({testCase:M.testCase,headless:M.headless})}),t=await e.json();if(!e.ok)throw Error(t.error||"HTTP ".concat(e.status));C.push("/run/".concat(t.id))}catch(e){eo(e instanceof Error?e.message:String(e)),G(!1)}}}let ey=ef&&null!=(N=null==(t=ep.find(e=>"queued"===e.status))?void 0:t.num)?N:null;(0,a.useEffect)(()=>{if(!ef)return;let e=setInterval(()=>B(Date.now()),1e3);return()=>clearInterval(e)},[ef]),(0,a.useEffect)(()=>((0,k.O)(ed),()=>{(0,k.g)()}),[ed]),(0,a.useEffect)(()=>{if(!(null==M?void 0:M.title))return;let e=document.title;return document.title=M.title,()=>{document.title=e}},[null==M?void 0:M.title]),(0,a.useEffect)(()=>{var e;null!=ey&&(null==(e=document.getElementById("step-".concat(ey)))||e.scrollIntoView({behavior:"smooth",block:"center"}))},[ey]);let ek=M?(null!=D?D:I)-M.createdAt:0,eS=ep.filter(e=>"queued"!==e.status).length,ez=ep.length?eS/ep.length*100:0,eA=[];for(let e of ep){let t=eA[eA.length-1];t&&t.title===e.group?t.steps.push(e):eA.push({title:e.group,steps:[e]})}return U?(0,s.jsxs)("main",{className:"flex flex-col items-center justify-center min-h-screen px-6 text-center",children:[(0,s.jsx)("p",{className:"text-6xl font-semibold text-faint mb-4",children:"404"}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground mb-6",children:ei.notFound}),(0,s.jsxs)(o(),{href:"/",className:"inline-flex items-center gap-1.5 text-sm text-foreground/75 hover:text-foreground transition-colors",children:[(0,s.jsx)(l.A,{className:"size-3.5"}),ei.newRun]})]}):(0,s.jsxs)("main",{className:"mx-auto max-w-2xl px-6 pt-10 pb-24",children:[(0,s.jsxs)(o(),{href:"/",className:"inline-flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors mb-8",children:[(0,s.jsx)(l.A,{className:"size-3.5"}),ei.back]}),(0,s.jsxs)("section",{className:"mb-8",children:[(0,s.jsx)(ec,{status:ed,t:ei}),(0,s.jsx)("h1",{className:"text-lg font-semibold tracking-tight mt-5 break-words text-foreground/90",children:null!=(y=null==M?void 0:M.title)?y:A}),M&&(0,s.jsxs)("div",{className:"flex items-center justify-between gap-3 mt-1.5",children:[(0,s.jsx)("p",{className:"text-xs text-muted-foreground font-mono",children:ep.length>0?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("span",{className:"text-foreground/75",children:[eS,"/",ep.length," ",ei.steps]}),em>0&&(0,s.jsxs)("span",{className:"text-success ml-2",children:["\xb7 ",em," ",ei.passedCount]}),eh>0&&(0,s.jsxs)("span",{className:"text-warning ml-2",children:["\xb7 ",eh," ",ei.warnCount]}),eg>0&&(0,s.jsxs)("span",{className:"text-destructive ml-2",children:["\xb7 ",eg," ",ei.failedCount]})]}):(0,s.jsx)("span",{className:"text-subtle",children:eb?ei.waitingForPlan:ei.noSteps})}),(0,s.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[eb&&(0,s.jsx)(q.$,{variant:"ghost",size:"sm",onClick:ev,disabled:$||"waiting"===ed,className:"h-7 px-2 text-muted-foreground hover:text-foreground",children:"paused"===ed?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.A,{className:"size-3.5 mr-1"}),ei.resume]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(d.A,{className:"size-3.5 mr-1"}),ei.pause]})}),(0,s.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs text-muted-foreground font-mono tabular-nums",children:[(0,s.jsx)(u.A,{className:"size-3"}),(0,E.a)(ek)]})]})]}),ep.length>0&&(0,s.jsx)("div",{className:"relative mt-3 h-[3px] rounded-full bg-surface-hover overflow-hidden",children:(0,s.jsx)("div",{className:(0,E.cn)("absolute inset-y-0 left-0 rounded-full transition-all duration-700 ease-out","failed"===ed||"error"===ed?"bg-destructive":"bg-success"),style:{width:"".concat(ez,"%")}})}),M&&!eb&&(0,s.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-1.5",children:[0===M.attachments.length&&(0,s.jsxs)(q.$,{size:"sm",onClick:eN,disabled:V,className:"gap-1.5",children:[(0,s.jsx)(p.A,{className:(0,E.cn)("size-3.5",V&&"animate-spin")}),ei.runAgain]}),(0,s.jsxs)(q.$,{size:"sm",variant:"outline",onClick:function(){if(M){try{sessionStorage.setItem("qpilot:prefill",M.testCase)}catch(e){}C.push("/")}},className:"gap-1.5",children:[(0,s.jsx)(x.A,{className:"size-3.5"}),ei.editAndRun]}),ep.length>0&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(q.$,{size:"sm",variant:"outline",onClick:ej,className:"gap-1.5 sm:ml-auto",children:[W?(0,s.jsx)(m.A,{className:"size-3.5 text-success"}):(0,s.jsx)(g.A,{className:"size-3.5"}),W?ei.copied:ei.copyReport]}),(0,s.jsxs)(q.$,{size:"sm",variant:"outline",onClick:ew,className:"gap-1.5",children:[(0,s.jsx)(h.A,{className:"size-3.5"}),ei.downloadReport]})]})]}),ea&&(0,s.jsx)("p",{className:"mt-2 text-xs text-destructive",children:ea})]}),(0,s.jsxs)("section",{className:"space-y-2",children:[0===ep.length&&(eb?(0,s.jsxs)("div",{className:"flex flex-col items-center justify-center py-16 text-center",children:[(0,s.jsx)(f.A,{className:"size-5 text-faint animate-spin mb-3"}),(0,s.jsx)("p",{className:"text-sm text-subtle",children:ei.waitingToStart})]}):(0,s.jsxs)("div",{className:"flex flex-col items-center justify-center py-16 text-center",children:[(0,s.jsx)(b.A,{className:"size-5 text-faint mb-3"}),(0,s.jsx)("p",{className:"text-sm text-subtle",children:ei.endedBeforePlan}),(0,s.jsx)("p",{className:"text-xs text-subtle mt-1",children:ei.seeReason})]})),eA.map((e,t)=>(0,s.jsxs)("div",{className:"space-y-2",children:[e.title&&(0,s.jsx)("div",{className:"pt-4 first:pt-0 text-[10.5px] font-semibold uppercase tracking-widest text-subtle",children:e.title}),e.steps.map((e,t)=>(0,s.jsx)("div",{id:"step-".concat(e.num),className:"scroll-mt-6",children:(0,s.jsx)(eu,{t:ei,step:e,displayNum:t+1,active:e.num===ey,events:R.filter(t=>t.stepNum===e.num)})},e.num))]},t))]}),(null==M?void 0:M.summary)&&(0,s.jsxs)("div",{className:"mt-6 rounded-xl border border-border bg-card/60 px-4 py-3",children:[(0,s.jsx)("div",{className:"text-[10px] font-semibold uppercase tracking-widest text-subtle mb-1.5",children:ei.summary}),(0,s.jsx)("div",{className:"text-sm leading-relaxed text-foreground/80",children:M.summary})]}),(null==M?void 0:M.testCase)&&(0,s.jsx)(K,{className:"mt-3",children:(0,s.jsxs)("div",{className:"rounded-xl border border-border bg-card/60 overflow-hidden",children:[(0,s.jsxs)(X,{className:"group w-full flex items-center justify-between px-4 py-3 hover:bg-surface transition-colors",children:[(0,s.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-widest text-subtle",children:ei.testCase}),(0,s.jsx)(v.A,{className:"size-3.5 text-faint group-data-open:hidden"}),(0,s.jsx)(j.A,{className:"size-3.5 text-faint hidden group-data-open:inline"})]}),(0,s.jsx)(Z,{children:(0,s.jsx)("pre",{className:"px-4 pb-4 text-[11.5px] font-mono leading-relaxed text-foreground/75 whitespace-pre-wrap break-words border-t border-border pt-3",children:M.testCase})})]})}),(null==M?void 0:M.attachments)&&M.attachments.length>0&&(0,s.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-1.5",children:[(0,s.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-widest text-subtle mr-1",children:[(0,s.jsx)(w.A,{className:"size-3"}),ei.attached]}),M.attachments.map(e=>{var t;return(0,s.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-lg border border-border bg-surface px-2.5 py-1",children:[(0,s.jsx)("span",{className:"text-[11px] font-mono text-foreground/75 max-w-[200px] truncate",children:e.name}),(0,s.jsx)("span",{className:"text-[10px] tabular-nums text-subtle",children:(t=e.size)<1024?"".concat(t," B"):t<1048576?"".concat(Math.round(t/1024)," KB"):"".concat((t/1024/1024).toFixed(1)," MB")})]},e.name)})]}),("passed"===ed||"failed"===ed)&&(0,s.jsx)(er,{}),(0,s.jsx)(P,{open:!!(null==M?void 0:M.pending),children:(0,s.jsx)(L,{showCloseButton:!1,children:(null==M?void 0:M.pending)&&(0,s.jsx)(ex,{runId:A,question:M.pending,t:ei})})})]})}function er(){return(0,s.jsxs)("a",{href:"https://github.com/broxhq/qpilot",target:"_blank",rel:"noreferrer",className:"group mt-6 flex items-center gap-3 rounded-xl border border-border bg-card/60 px-4 py-3 transition-colors hover:border-warning/30 hover:bg-warning/[0.03]",children:[(0,s.jsx)(N.A,{className:"size-4 shrink-0 text-subtle transition-colors group-hover:text-warning group-hover:fill-warning"}),(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("div",{className:"text-sm text-foreground/80",children:["Did qpilot save you time?"," ",(0,s.jsx)("span",{className:"text-foreground/95 group-hover:text-warning transition-colors",children:"Star it on GitHub"})]}),(0,s.jsx)("div",{className:"text-xs text-subtle",children:"A ⭐ helps more people find it — takes two seconds."})]})]})}let eo={running:{icon:(0,s.jsx)(f.A,{className:"size-4 animate-spin"}),color:"text-foreground/75",bg:"bg-surface-hover",border:"border-border"},waiting:{icon:(0,s.jsx)(b.A,{className:"size-4"}),color:"text-warning",bg:"bg-warning/10",border:"border-warning/20"},paused:{icon:(0,s.jsx)(d.A,{className:"size-4"}),color:"text-foreground/75",bg:"bg-surface-hover",border:"border-border"},passed:{icon:(0,s.jsx)(m.A,{className:"size-4",strokeWidth:2.5}),color:"text-success",bg:"bg-success/10",border:"border-success/20"},failed:{icon:(0,s.jsx)(y.A,{className:"size-4",strokeWidth:2.5}),color:"text-destructive",bg:"bg-destructive/10",border:"border-destructive/20"},error:{icon:(0,s.jsx)(b.A,{className:"size-4"}),color:"text-destructive",bg:"bg-destructive/10",border:"border-destructive/20"}};function ec(e){var t,n;let{status:a,t:r}=e,o=null!=(t=eo[a])?t:eo.running,c=null!=(n=r.status[a])?n:r.status.running;return(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("div",{className:(0,E.cn)("flex items-center justify-center size-9 rounded-xl border transition-colors",o.bg,o.border,o.color),children:o.icon}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:(0,E.cn)("text-sm font-semibold tracking-tight",o.color),children:c.label}),(0,s.jsx)("div",{className:"text-xs text-muted-foreground",children:c.sub})]})]})}let el={queued:{border:"border-l-border-strong",badge:"bg-surface-hover text-subtle",bg:""},pass:{border:"border-l-success/60",badge:"bg-success/10 text-success",bg:""},warn:{border:"border-l-warning/60",badge:"bg-warning/10 text-warning",bg:""},fail:{border:"border-l-destructive/60",badge:"bg-destructive/10 text-destructive",bg:"bg-destructive/[0.03]"},skipped:{border:"border-l-border-strong",badge:"bg-surface text-faint",bg:""}},ei={border:"border-l-warning/80",badge:"bg-warning/10 text-warning",bg:"bg-warning/[0.03]"};function ed(e){if("action"===e.kind&&("report_step"===e.toolName||"finish"===e.toolName||"set_plan"===e.toolName))return!1;if("observation"===e.kind){var t;let n=null!=(t=e.text)?t:"";return n.startsWith("Error:")||n.startsWith("[debug]")}return!0}function eu(e){var t,n;let{step:r,events:o,active:c,displayNum:l,t:i}=e,d=null!=(t=el[r.status])?t:el.queued,u=c?{...d,...ei}:d,p=o.filter(ed),x=p.filter(e=>"thought"===e.kind).length,[m,g]=(0,a.useState)(!1),h=m?p:p.filter(e=>"thought"!==e.kind),b="fail"===r.status||"warn"===r.status,w=c||"fail"===r.status,[N,y]=(0,a.useState)(w);return(0,a.useEffect)(()=>y(w),[w]),(0,s.jsx)(K,{open:N,onOpenChange:y,children:(0,s.jsxs)("div",{className:(0,E.cn)("rounded-xl border border-border border-l-2 overflow-hidden transition-colors",u.border,u.bg),children:[(0,s.jsxs)(X,{className:"group w-full flex items-center gap-3 px-4 py-3 text-left hover:bg-surface transition-colors",children:[(0,s.jsx)(_,{className:(0,E.cn)("border-0 text-[9.5px] tracking-widest font-semibold shrink-0 gap-1 uppercase rounded-md px-1.5",u.badge),children:c?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(f.A,{className:"size-2.5 animate-spin"}),i.stepStatus.running]}):null!=(n=i.stepStatus[r.status])?n:r.status}),(0,s.jsxs)("span",{className:"flex-1 min-w-0 text-[13px] text-foreground/80",children:[(0,s.jsx)("span",{className:"text-subtle mr-2 font-mono text-[11px]",children:String(null!=l?l:r.num).padStart(2,"0")}),r.description]}),(0,s.jsx)(v.A,{className:"size-3.5 text-faint shrink-0 group-data-open:hidden"}),(0,s.jsx)(j.A,{className:"size-3.5 text-faint shrink-0 hidden group-data-open:inline"})]}),b&&r.expected?(0,s.jsxs)("dl",{className:"px-4 pb-3 -mt-0.5 grid grid-cols-[auto_1fr] gap-x-3 gap-y-1.5 text-[11.5px] leading-relaxed",children:[(0,s.jsx)("dt",{className:"text-subtle",children:i.expected}),(0,s.jsx)("dd",{className:"font-mono text-foreground/80",children:r.expected}),r.evidence&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("dt",{className:"text-subtle",children:i.actual}),(0,s.jsx)("dd",{className:(0,E.cn)("font-mono","fail"===r.status?"text-destructive":"text-warning"),children:r.evidence})]})]}):r.evidence&&(0,s.jsx)("div",{className:"px-4 pb-3 -mt-0.5 text-[11.5px] text-muted-foreground leading-relaxed font-mono",children:r.evidence}),r.mockUnverified&&(0,s.jsxs)("p",{className:"px-4 pb-3 -mt-1 text-[11px] leading-relaxed text-warning/90",children:["⚠ ",i.mockUnverified]}),r.consoleErrors&&r.consoleErrors.length>0&&(0,s.jsxs)("details",{className:"px-4 pb-3 -mt-1 text-[11px] text-warning/90",children:[(0,s.jsxs)("summary",{className:"cursor-pointer select-none",children:[i.consoleErrors,": ",r.consoleErrors.length]}),(0,s.jsx)("ul",{className:"mt-1.5 space-y-1 font-mono text-muted-foreground",children:r.consoleErrors.map((e,t)=>(0,s.jsx)("li",{className:"break-words",children:e},t))})]}),(0,s.jsx)(Z,{children:(0,s.jsxs)("div",{className:"px-4 pb-4 pt-3 space-y-3 border-t border-border",children:[r.screenshot&&(0,s.jsx)("a",{href:r.screenshot,target:"_blank",rel:"noreferrer",className:"block rounded-lg overflow-hidden border border-border hover:border-border-strong transition-colors",children:(0,s.jsx)("img",{src:r.screenshot,alt:"screenshot step ".concat(r.num),className:"max-h-64 w-full object-contain bg-surface"})}),h.length>0?(0,s.jsx)("div",{className:"space-y-0.5",children:h.map((e,t)=>(0,s.jsx)(ep,{event:e,t:i},t))}):0===x&&(0,s.jsx)("div",{className:"text-[11px] text-faint",children:i.noEvents}),x>0&&(0,s.jsx)("button",{type:"button",onClick:()=>g(e=>!e),className:"text-[11px] text-subtle hover:text-foreground transition-colors",children:m?i.hideReasoning:"".concat(i.showReasoning," (").concat(x,")")})]})})]})})}function ep(e){let{event:t,t:n}=e,{icon:a,text:r,cls:o}=function(e,t){var n,s,a,r,o,c,l,i,d,u,p,x,m,g;switch(e.kind){case"action":return{icon:"→",text:function(e,t){var n,s,a,r,o,c,l,i,d,u,p,x;let m=arguments.length>2&&void 0!==arguments[2]?arguments[2]:(0,S.jd)("en"),g=null!=t?t:{},h=m.action;switch(e){case"navigate":return"".concat(h.opening," ").concat(null!=(n=g.url)?n:"");case"snapshot":return g.near?"".concat(h.readingBlock,' "').concat(g.near,'"'):h.readingPage;case"click":return g.name?"".concat(h.clicking,' "').concat(g.name,'"'):h.clickingElement;case"fill":return g.name?"".concat(h.filling,' "').concat(g.name,'" → "').concat(null!=(s=g.value)?s:"",'"'):"".concat(h.filling,' "').concat(null!=(a=g.value)?a:"",'"');case"select":return g.name?"".concat(h.selecting,' "').concat(null!=(r=g.value)?r:"",'" — "').concat(g.name,'"'):"".concat(h.selecting,' "').concat(null!=(o=g.value)?o:"",'"');case"hover":return g.name?"".concat(h.hovering,' "').concat(g.name,'"'):h.hoveringElement;case"scroll_to":return"".concat(h.scrollingTo," ").concat(g.text?'"'.concat(g.text,'"'):null!=(c=g.ref)?c:"");case"scroll":{let e=[Number(g.y)?"".concat(Number(g.y)>0?h.down:h.up," ").concat(Math.abs(Number(g.y)),"px"):"",Number(g.x)?"".concat(Number(g.x)>0?h.right:h.left," ").concat(Math.abs(Number(g.x)),"px"):""].filter(Boolean).join(", "),t=g.ref?" ".concat(h.inside," ").concat(g.ref):"";return"".concat(h.scrolling," ").concat(e||"0px").concat(t)}case"press":return"".concat(h.pressing," ").concat(null!=(l=g.key)?l:"");case"upload_file":return"".concat(h.uploading,' "').concat(null!=(i=g.file)?i:"",'"').concat(g.name?" ".concat(h.to,' "').concat(g.name,'"'):"");case"dismiss":return h.closingOverlay;case"wait":return"".concat(h.waiting," ").concat(null!=(d=g.ms)?d:""," ms");case"ask_user":return h.askingUser;case"switch_tab":return"".concat(h.switchingTab," ").concat(null!=(u=g.index)?u:"");case"handle_dialog":return"".concat(h.nextDialog," ").concat("dismiss"===g.action?h.dialogDismiss:h.dialogAccept);case"mock_request":{let e=g.abort?h.mockAbort:void 0!==g.patch?h.mockPatch:void 0!==g.status||void 0!==g.body?String(null!=(p=g.status)?p:200):"",t=g.delay_ms?"".concat(h.mockDelay," ").concat(g.delay_ms," ms"):"",n="".concat(g.method?"".concat(g.method," "):"").concat(null!=(x=g.url)?x:"");return"".concat(h.mocking," ").concat(n," → ").concat([e,t].filter(Boolean).join(", "))}case"clear_mocks":return h.clearingMocks;case"set_offline":return!1===g.offline?h.goingOnline:h.goingOffline;case"get_requests":return g.url?"".concat(h.readingRequests,' "').concat(g.url,'"'):h.readingRequests;case"get_console":return h.readingConsole;default:return null!=e?e:"action"}}(e.toolName,e.toolInput,t),cls:"text-foreground/75"};case"step":{let o=null!=(a=null==(n=e.step)?void 0:n.status)?a:"",c="pass"===o?"text-success":"fail"===o?"text-destructive":"text-warning";return{icon:"pass"===o?"✓":"fail"===o?"✗":"!",text:"".concat(t.stepLabel," ").concat(null==(s=e.step)?void 0:s.num," — ").concat((null!=(r=t.stepStatus[o])?r:o).toUpperCase()),cls:c}}case"observation":{let t=null!=(o=e.text)?o:"";if(t.startsWith("Error:"))return{icon:"✗",text:t,cls:"text-destructive"};return{icon:"\xb7",text:t,cls:"text-subtle"}}case"info":{let n=e.info;return{icon:"•",text:n?"dialog"===n.type?"".concat(t.infoDialog," (").concat(n.dialog,"): \xab").concat(n.message,"\xbb — ").concat(n.accepted?t.infoAccepted:t.infoDismissed):"".concat("newTab"===n.type?t.infoNewTab:t.infoTabClosed,": ").concat(n.url):null!=(c=e.text)?c:"",cls:"text-warning/90"}}case"question":return{icon:"?",text:"".concat(t.asking,": ").concat(null!=(i=null==(l=e.question)?void 0:l.prompt)?i:""),cls:"text-warning"};case"answer":return{icon:"✎",text:t.userAnswered,cls:"text-foreground/75"};case"thought":return{icon:"›",text:null!=(d=e.text)?d:"",cls:"text-subtle italic"};case"done":return{icon:"■",text:"".concat(t.runFinished," — ").concat(null!=(m=null!=(x=null==(u=t.status[null!=(p=e.status)?p:""])?void 0:u.label)?x:e.status)?m:""),cls:"text-foreground/75"};case"error":return{icon:"✗",text:null!=(g=e.text)?g:"",cls:"text-destructive"};default:return{icon:"\xb7",text:"",cls:"text-faint"}}}(t,n),c=new Date(t.ts).toLocaleTimeString("en-US",{hour12:!1});return(0,s.jsxs)("div",{className:"flex gap-2.5 text-[11.5px] leading-relaxed items-baseline font-mono",children:[(0,s.jsx)("span",{className:"shrink-0 tabular-nums text-faint text-[10px]",children:c}),(0,s.jsx)("span",{className:(0,E.cn)("shrink-0 w-3.5 text-center",o),children:a}),(0,s.jsx)("span",{className:(0,E.cn)("min-w-0 break-words",o),children:r})]})}function ex(e){let{runId:t,question:n,t:r}=e,[o,c]=(0,a.useState)(""),[l,i]=(0,a.useState)(!1),[d,u]=(0,a.useState)(null);async function p(e){if(e.preventDefault(),o){i(!0),u(null);try{let e=await fetch("/api/run/".concat(t,"/answer"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({questionId:n.id,answer:o})});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error||"HTTP ".concat(e.status))}c("")}catch(e){u(e instanceof Error?e.message:String(e)),i(!1)}}}return(0,s.jsxs)("form",{onSubmit:p,className:"space-y-4",children:[(0,s.jsx)($,{children:(0,s.jsxs)(H,{className:"flex items-center gap-2 text-base",children:[(0,s.jsx)(b.A,{className:"size-4 text-warning shrink-0"}),r.needInput]})}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground leading-relaxed",children:n.prompt}),(0,s.jsx)(W.p,{autoFocus:!0,type:n.secret?"password":"text",value:o,onChange:e=>c(e.target.value),placeholder:n.secret?r.secretPlaceholder:r.answerPlaceholder,className:"font-mono"}),d&&(0,s.jsx)("p",{className:"text-destructive text-xs",children:d}),(0,s.jsx)(q.$,{type:"submit",disabled:!o||l,className:"w-full",children:l?r.sending:r.submit})]})}},9578:(e,t,n)=>{Promise.resolve().then(n.bind(n,8446))}},e=>{e.O(0,[628,777,576,677,441,255,358],()=>e(e.s=9578)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[662],{6170:(e,t,s)=>{"use strict";s.d(t,{p:()=>l});var r=s(5155);s(2115);var a=s(2045),n=s(5016);function l(e){let{className:t,type:s,...l}=e;return(0,r.jsx)(a.p,{type:s,"data-slot":"input",className:(0,n.cn)("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",t),...l})}},7414:(e,t,s)=>{Promise.resolve().then(s.bind(s,8036))},8036:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>q});var r=s(5155),a=s(2115),n=s(2619),l=s.n(n),i=s(63),o=s(3229),d=s(6479);let c=(0,d.A)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]),u=(0,d.A)("cpu",[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]]),m=(0,d.A)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);var x=s(8215),h=s(5352),p=s(9746);let f=(0,d.A)("palette",[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]]);var b=s(3916),v=s(7003),g=s(6170);let y=(0,d.A)("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]),k=(0,d.A)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]),j=(0,d.A)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);var N=s(5016);let w="qpilot.theme";function C(){try{let e=localStorage.getItem(w);return"light"===e||"dark"===e?e:"system"}catch(e){return"system"}}function M(e){let t="dark"===e||"system"===e&&window.matchMedia("(prefers-color-scheme: dark)").matches,s=document.documentElement;s.classList.toggle("dark",t),s.style.colorScheme=t?"dark":"light"}let S=[{value:"system",icon:y,label:"themeSystem"},{value:"light",icon:k,label:"themeLight"},{value:"dark",icon:j,label:"themeDark"}];function E(e){let{labels:t,withLabels:s=!1,className:n}=e,[l,i]=(0,a.useState)("system");return(0,a.useEffect)(()=>{i(C());let e=e=>i(e.detail);window.addEventListener("qpilot-theme",e);let t=function(){let e=window.matchMedia("(prefers-color-scheme: dark)"),t=()=>{"system"===C()&&M("system")};return e.addEventListener("change",t),()=>e.removeEventListener("change",t)}();return()=>{window.removeEventListener("qpilot-theme",e),t()}},[]),(0,r.jsx)("div",{role:"radiogroup",className:(0,N.cn)("inline-flex items-center gap-0.5 rounded-lg border border-border bg-surface p-0.5",n),children:S.map(e=>{let{value:a,icon:n,label:i}=e;return(0,r.jsxs)("button",{type:"button",role:"radio","aria-checked":l===a,title:t[i],onClick:()=>(function(e){try{"system"===e?localStorage.removeItem(w):localStorage.setItem(w,e)}catch(e){}M(e),window.dispatchEvent(new CustomEvent("qpilot-theme",{detail:e}))})(a),className:(0,N.cn)("inline-flex items-center gap-1.5 rounded-md text-xs transition-colors",s?"px-2.5 py-1.5":"p-1.5",l===a?"bg-background text-foreground shadow-sm ring-1 ring-border":"text-subtle hover:text-foreground"),children:[(0,r.jsx)(n,{className:"size-3.5"}),s&&t[i]]},a)})})}var L=s(2391);let z="rounded-xl border border-border bg-card shadow-sm",A="text-[13px] font-medium text-foreground",T="text-xs leading-relaxed text-subtle",U=e=>(null!=e?e:"").trim().replace(/\/+$/,"");function q(){return(0,r.jsx)(a.Suspense,{children:(0,r.jsx)(R,{})})}function R(){var e;let t=(0,i.useRouter)(),s="1"===(0,i.useSearchParams)().get("welcome"),[n,d]=(0,a.useState)("en"),b=(0,L.jd)(n).settings,[y,k]=(0,a.useState)(null),[j,w]=(0,a.useState)("anthropic"),[C,M]=(0,a.useState)(""),[S,q]=(0,a.useState)(""),[R,_]=(0,a.useState)(""),[O,D]=(0,a.useState)(!1),[F,I]=(0,a.useState)(null),[B,J]=(0,a.useState)(!1),[$,W]=(0,a.useState)(null),[G,Q]=(0,a.useState)(!1),[V,X]=(0,a.useState)(null),Y=(0,a.useRef)(0);(0,a.useEffect)(()=>{var e;(null==(e=navigator.language)?void 0:e.toLowerCase().startsWith("ru"))&&d("ru"),fetch("/api/settings").then(e=>e.json()).then(e=>{k(e),w(e.provider),q(e.baseURL),_(e.model),et(e.provider,"",e.baseURL,e)}).catch(()=>{})},[]);let Z=function(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:y;return!!((null==s?void 0:s.hasKey)&&s.provider===e&&U(s.baseURL)===U(t))},ee=function(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:S,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:y;return!!(t.trim()||Z(e,s,r))};async function et(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:j,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:C,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:S,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:y,a=++Y.current;if(X(null),!ee(e,t,s,r)||"custom"===e&&!s.trim())return void W(null);Q(!0);try{let r=await fetch("/api/settings/models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e,apiKey:t,baseURL:s})}),n=await r.json().catch(()=>({}));if(a!==Y.current)return;if(!r.ok)throw Error(n.error||"HTTP ".concat(r.status));W(n.models)}catch(e){if(a!==Y.current)return;W(null),X(e instanceof Error?e.message:String(e))}finally{a===Y.current&&Q(!1)}}async function es(e){e.preventDefault(),D(!0),I(null);try{let e=await fetch("/api/settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:j,apiKey:C,model:R,baseURL:S})}),r=await e.json().catch(()=>({}));if(!e.ok)throw Error(r.error||"HTTP ".concat(e.status));if(k(r),M(""),s)return void t.push("/");J(!0),setTimeout(()=>J(!1),2500)}catch(e){I(e instanceof Error?e.message:String(e))}finally{D(!1)}}let er=!!((null==y?void 0:y.hasKey)&&y.provider===j),ea=!y||!er||C.trim()?null:Z(j,S)?("env"===y.source?b.keyFromEnv:b.keySaved).replace("{hint}",y.keyHint):b.keyRebind,en=R||("anthropic"===j&&null!=(e=null==y?void 0:y.defaultModel)?e:"");return(0,r.jsxs)("main",{className:"mx-auto max-w-xl px-6 pt-10 pb-24",children:[(0,r.jsxs)(l(),{href:"/",className:"inline-flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors mb-8",children:[(0,r.jsx)(o.A,{className:"size-3.5"}),b.back]}),(0,r.jsx)("h1",{className:"text-2xl font-semibold tracking-tight mb-6",children:b.title}),s&&y&&!y.configured&&(0,r.jsxs)("div",{className:"mb-6 flex gap-3 rounded-xl border border-ring/30 bg-ring/[0.07] px-4 py-3.5",children:[(0,r.jsx)(c,{className:"size-4 shrink-0 mt-0.5 text-ring"}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-sm font-medium",children:b.welcome}),(0,r.jsx)("div",{className:(0,N.cn)(T,"mt-0.5"),children:b.welcomeSub})]})]}),(0,r.jsxs)("form",{onSubmit:es,className:(0,N.cn)(z,"mb-6"),children:[(0,r.jsx)(H,{icon:(0,r.jsx)(u,{className:"size-4"}),title:b.model}),(0,r.jsxs)("div",{className:"space-y-5 px-5 pb-5",children:[(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("div",{className:A,children:b.provider}),(0,r.jsx)("div",{role:"radiogroup",className:"grid grid-cols-2 gap-1 rounded-lg border border-border bg-surface p-1",children:["anthropic","custom"].map(e=>(0,r.jsx)("button",{type:"button",role:"radio","aria-checked":j===e,onClick:()=>(function(e){if(e===j)return;w(e),M(""),_(e===(null==y?void 0:y.provider)?y.model:"");let t=e===(null==y?void 0:y.provider)?y.baseURL:"";q(t),W(null),et(e,"",t)})(e),className:(0,N.cn)("rounded-md px-3 py-1.5 text-sm transition-colors",j===e?"bg-background text-foreground font-medium shadow-sm ring-1 ring-border":"text-muted-foreground hover:text-foreground"),children:"anthropic"===e?b.anthropic:b.custom},e))})]}),"custom"===j&&(0,r.jsx)(P,{label:b.baseUrl,hint:b.baseUrlHintCustom,children:(0,r.jsx)(g.p,{value:S,onChange:e=>q(e.target.value),onBlur:()=>et(),placeholder:"https://…/v1",spellCheck:!1,autoComplete:"off",className:"font-mono text-[13px]"})}),(0,r.jsx)(P,{label:"anthropic"===j?b.apiKey:b.apiToken,hint:null!=ea?ea:void 0,children:(0,r.jsx)(g.p,{type:"password",value:C,onChange:e=>M(e.target.value),onBlur:()=>{C.trim()&&et()},placeholder:Z(j,S)?"••••••••":"anthropic"===j?"sk-ant-…":"",spellCheck:!1,autoComplete:"off",autoFocus:s,className:"font-mono text-[13px]"})}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,r.jsx)("span",{className:A,children:b.modelLabel}),(0,r.jsxs)("button",{type:"button",onClick:()=>et(),disabled:G||!ee(j,C),className:"inline-flex items-center gap-1 text-xs text-subtle hover:text-foreground disabled:opacity-50 disabled:pointer-events-none transition-colors",children:[(0,r.jsx)(m,{className:(0,N.cn)("size-3",G&&"animate-spin")}),b.refreshModels]})]}),(0,r.jsx)(K,{t:b,value:en,models:$,loading:G,defaultModel:"anthropic"===j?null==y?void 0:y.defaultModel:void 0,onChange:_}),V?(0,r.jsxs)("div",{className:"flex items-start gap-1.5 text-xs leading-relaxed text-destructive",children:[(0,r.jsx)(x.A,{className:"size-3.5 shrink-0 mt-px"}),(0,r.jsx)("span",{className:"break-words min-w-0",children:V})]}):(0,r.jsx)("div",{className:T,children:ee(j,C)?"anthropic"===j?b.modelHintAnthropic:b.modelHintCustom:b.modelsNeedKey})]}),"anthropic"===j&&(0,r.jsx)(P,{label:b.baseUrl,optional:b.optional,hint:b.baseUrlHintAnthropic,children:(0,r.jsx)(g.p,{value:S,onChange:e=>q(e.target.value),onBlur:()=>et(),placeholder:"https://api.anthropic.com",spellCheck:!1,autoComplete:"off",className:"font-mono text-[13px]"})}),F&&(0,r.jsxs)("div",{className:"flex items-start gap-2 rounded-lg border border-destructive/30 bg-destructive/[0.07] px-3 py-2.5 text-xs leading-relaxed text-destructive",children:[(0,r.jsx)(x.A,{className:"size-3.5 shrink-0 mt-px"}),(0,r.jsx)("span",{className:"break-words min-w-0",children:F})]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-3 border-t border-border bg-surface px-5 py-3 rounded-b-xl",children:[(0,r.jsx)("span",{className:"mr-auto min-w-0 truncate text-[11px] font-mono text-faint",children:y&&b.storedIn.replace("{path}",y.configPath.replace(/^\/(Users|home)\/[^/]+/,"~"))}),B&&(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs text-success",children:[(0,r.jsx)(h.A,{className:"size-3.5"}),b.saved]}),(0,r.jsxs)(v.$,{type:"submit",disabled:O||!y,className:"gap-1.5 px-4",children:[O&&(0,r.jsx)(p.A,{className:"size-3.5 animate-spin"}),O?b.saving:b.save]})]})]}),(0,r.jsxs)("section",{className:z,children:[(0,r.jsx)(H,{icon:(0,r.jsx)(f,{className:"size-4"}),title:b.appearance}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-3 px-5 pb-5",children:[(0,r.jsx)("span",{className:A,children:b.theme}),(0,r.jsx)(E,{labels:b,withLabels:!0})]})]})]})}function H(e){let{icon:t,title:s}=e;return(0,r.jsxs)("div",{className:"flex items-center gap-2 px-5 pt-4 pb-4 text-sm font-semibold",children:[(0,r.jsx)("span",{className:"text-subtle",children:t}),s]})}function P(e){let{label:t,hint:s,optional:a,children:n}=e;return(0,r.jsxs)("label",{className:"block space-y-2",children:[(0,r.jsxs)("span",{className:"flex items-baseline justify-between gap-2",children:[(0,r.jsx)("span",{className:A,children:t}),a&&(0,r.jsx)("span",{className:"text-[11px] text-faint",children:a})]}),n,s&&(0,r.jsx)("span",{className:(0,N.cn)(T,"block"),children:s})]})}function K(e){var t,s;let{t:n,value:l,models:i,loading:o,defaultModel:d,onChange:c}=e,[u,m]=(0,a.useState)(!1),[x,f]=(0,a.useState)(""),v=(0,a.useRef)(null);s=()=>m(!1),(0,a.useEffect)(()=>{if(!u)return;let e=e=>{var t;(null==(t=v.current)?void 0:t.contains(e.target))||s()},t=e=>{"Escape"===e.key&&s()};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[u]),(0,a.useEffect)(()=>{u&&f("")},[u]);let y=null==i?void 0:i.find(e=>e.id===l),k=x.trim().toLowerCase(),j=(null!=i?i:[]).filter(e=>!k||e.id.toLowerCase().includes(k)||e.name.toLowerCase().includes(k)),w=x.trim(),C=w&&!(null!=i?i:[]).some(e=>e.id===w);function M(e){c(e),m(!1)}return(0,r.jsxs)("div",{ref:v,className:"relative",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>m(e=>!e),"aria-expanded":u,className:(0,N.cn)("flex w-full items-center gap-3 rounded-lg border border-input bg-transparent px-3 py-2 text-left transition-colors","hover:border-border-strong focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-ring/30",u&&"border-border-strong"),children:[(0,r.jsx)("span",{className:"min-w-0 flex-1",children:l?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"block truncate text-sm text-foreground",children:null!=(t=null==y?void 0:y.name)?t:l}),y&&y.name!==y.id&&(0,r.jsx)("span",{className:"block truncate font-mono text-[11px] text-subtle",children:y.id})]}):(0,r.jsx)("span",{className:"text-sm text-subtle",children:n.chooseModel})}),o?(0,r.jsx)(p.A,{className:"size-4 shrink-0 animate-spin text-subtle"}):(0,r.jsx)(b.A,{className:"size-4 shrink-0 text-subtle"})]}),u&&(0,r.jsxs)("div",{className:"absolute inset-x-0 top-full z-40 mt-1.5 overflow-hidden rounded-xl border border-border bg-popover shadow-xl",children:[(0,r.jsx)("div",{className:"border-b border-border p-2",children:(0,r.jsx)(g.p,{value:x,onChange:e=>f(e.target.value),autoFocus:!0,placeholder:n.modelSearch,spellCheck:!1,onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),1===j.length||j[0]&&!C?M(j[0].id):C&&M(w))},className:"h-8 font-mono text-[12.5px]"})}),(0,r.jsxs)("ul",{className:"max-h-80 overflow-y-auto py-1",children:[o&&!i&&(0,r.jsxs)("li",{className:"flex items-center gap-2 px-3 py-2.5 text-xs text-subtle",children:[(0,r.jsx)(p.A,{className:"size-3.5 animate-spin"}),n.modelsLoading]}),j.map(e=>(0,r.jsx)("li",{children:(0,r.jsxs)("button",{type:"button",onClick:()=>M(e.id),className:"flex w-full items-start gap-2.5 px-3 py-2 text-left hover:bg-surface-hover transition-colors",children:[(0,r.jsx)(h.A,{className:(0,N.cn)("size-3.5 shrink-0 mt-0.5",e.id===l?"text-foreground":"opacity-0")}),(0,r.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,r.jsxs)("span",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"truncate text-sm text-foreground",children:e.name}),e.id===d&&(0,r.jsx)("span",{className:"shrink-0 rounded border border-border px-1.5 text-[10px] text-subtle",children:n.defaultTag})]}),e.name!==e.id&&(0,r.jsx)("span",{className:"block truncate font-mono text-[11px] text-subtle",children:e.id})]}),e.created&&(0,r.jsx)("span",{className:"shrink-0 pt-0.5 text-[11px] tabular-nums text-faint",children:e.created.slice(0,10)})]})},e.id)),i&&0===j.length&&!C&&(0,r.jsx)("li",{className:"px-3 py-2.5 text-xs text-subtle",children:n.noModels}),C&&(0,r.jsx)("li",{children:(0,r.jsxs)("button",{type:"button",onClick:()=>M(w),className:"flex w-full items-center gap-2.5 border-t border-border px-3 py-2 text-left text-sm text-muted-foreground hover:bg-surface-hover hover:text-foreground transition-colors",children:[(0,r.jsx)("span",{className:"size-3.5 shrink-0"}),(0,r.jsx)("span",{className:"truncate",children:n.useTyped.replace("{id}",w)})]})})]})]})]})}}},e=>{e.O(0,[628,777,677,441,255,358],()=>e(e.s=7414)),_N_E=e.O()}]);
@@ -0,0 +1,3 @@
1
+ @font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/f639721981034f88-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/9766a7e9e2e0ad5a-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/b66cf8e69499582a-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/aa016aab0e6d1295-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/22a5144ee8d83bca-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Geist Fallback;src:local("Arial");ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.00%;size-adjust:104.76%}.__className_8eaea4{font-family:Geist,Geist Fallback;font-style:normal}.__variable_8eaea4{--font-sans:"Geist","Geist Fallback"}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/013b72fa676f92e0-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/b9408752a0c24fb9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/65f03d54ccadf4a8-s.woff2) format("woff2");unicode-range:u+2000-2001,u+2004-2008,u+200a,u+23b8-23bd,u+2500-259f}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e038a29029a234f2-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/2b5b02fc7e511755-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/7d4881bb7e1bf84d-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Geist Mono Fallback;src:local("Arial");ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.00%;size-adjust:134.59%}.__className_8c25df{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.__variable_8c25df{--font-mono:"Geist Mono","Geist Mono Fallback"}
2
+
3
+ /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:host,:root{--font-sans:var(--font-sans);--font-mono:var(--font-mono);--color-black:#000;--spacing:.25rem;--container-sm:24rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-md:calc(var(--radius) * .8);--radius-2xl:1rem;--radius-4xl:2rem;--ease-out:cubic-bezier(0,0,.2,1);--animate-spin:spin 1s linear infinite;--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}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;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 40%,transparent)}}html{scroll-behavior:smooth}body{background-color:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"rlig" 1,"calt" 1;letter-spacing:-.01em;background-image:radial-gradient(var(--dot) 1px,transparent 1px);background-size:22px 22px;background-attachment:fixed}body:before{content:"";background:radial-gradient(ellipse 80% 40% at 50% -10%,var(--glow),transparent);pointer-events:none;z-index:0;position:fixed;inset:0}#__next,main{z-index:1;position:relative}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.absolute,.sr-only{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-full{top:100%}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.bottom-2{bottom:calc(var(--spacing) * 2)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.isolate{isolation:isolate}.z-40{z-index:40}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-auto{margin-inline:auto}.-mt-0\.5{margin-top:calc(var(--spacing) * -.5)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mt-px{margin-top:1px}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-auto{margin-right:auto}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.field-sizing-content{field-sizing:content}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-\[3px\]{height:3px}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[65vh\]{max-height:65vh}.max-h-\[360px\]{max-height:360px}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-\[320px\]{min-height:320px}.min-h-screen{min-height:100vh}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-64{width:calc(var(--spacing) * 64)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1)}.-translate-x-1\/2,.-translate-y-1\/2{translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.scroll-mt-6{scroll-margin-top:calc(var(--spacing) * 6)}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--border)}.truncate{text-overflow:ellipsis;white-space:nowrap}.overflow-hidden,.truncate{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-4xl{border-radius:var(--radius-4xl)}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md),10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md),12px)}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) * .8)}.rounded-sm{border-radius:calc(var(--radius) * .6)}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-b-xl{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-border{border-color:var(--border)}.border-border-strong{border-color:var(--border-strong)}.border-destructive\/20{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/20{border-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.border-destructive\/25{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/25{border-color:color-mix(in oklab,var(--destructive) 25%,transparent)}}.border-destructive\/30{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/30{border-color:color-mix(in oklab,var(--destructive) 30%,transparent)}}.border-input{border-color:var(--input)}.border-ring\/30{border-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.border-ring\/30{border-color:color-mix(in oklab,var(--ring) 30%,transparent)}}.border-success\/20{border-color:var(--success)}@supports (color:color-mix(in lab,red,red)){.border-success\/20{border-color:color-mix(in oklab,var(--success) 20%,transparent)}}.border-transparent{border-color:#0000}.border-warning\/20{border-color:var(--warning)}@supports (color:color-mix(in lab,red,red)){.border-warning\/20{border-color:color-mix(in oklab,var(--warning) 20%,transparent)}}.border-l-border-strong{border-left-color:var(--border-strong)}.border-l-destructive\/60{border-left-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-l-destructive\/60{border-left-color:color-mix(in oklab,var(--destructive) 60%,transparent)}}.border-l-success\/60{border-left-color:var(--success)}@supports (color:color-mix(in lab,red,red)){.border-l-success\/60{border-left-color:color-mix(in oklab,var(--success) 60%,transparent)}}.border-l-warning\/60{border-left-color:var(--warning)}@supports (color:color-mix(in lab,red,red)){.border-l-warning\/60{border-left-color:color-mix(in oklab,var(--warning) 60%,transparent)}}.border-l-warning\/80{border-left-color:var(--warning)}@supports (color:color-mix(in lab,red,red)){.border-l-warning\/80{border-left-color:color-mix(in oklab,var(--warning) 80%,transparent)}}.bg-background,.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/80{background-color:color-mix(in oklab,var(--background) 80%,transparent)}}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black) 30%,transparent)}}.bg-card,.bg-card\/60{background-color:var(--card)}@supports (color:color-mix(in lab,red,red)){.bg-card\/60{background-color:color-mix(in oklab,var(--card) 60%,transparent)}}.bg-destructive,.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.bg-destructive\/\[0\.03\]{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/\[0\.03\]{background-color:color-mix(in oklab,var(--destructive) 3%,transparent)}}.bg-destructive\/\[0\.06\]{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/\[0\.06\]{background-color:color-mix(in oklab,var(--destructive) 6%,transparent)}}.bg-destructive\/\[0\.07\]{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/\[0\.07\]{background-color:color-mix(in oklab,var(--destructive) 7%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-ring\/\[0\.07\]{background-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.bg-ring\/\[0\.07\]{background-color:color-mix(in oklab,var(--ring) 7%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-success,.bg-success\/10{background-color:var(--success)}@supports (color:color-mix(in lab,red,red)){.bg-success\/10{background-color:color-mix(in oklab,var(--success) 10%,transparent)}}.bg-surface{background-color:var(--surface)}.bg-surface-hover{background-color:var(--surface-hover)}.bg-transparent{background-color:#0000}.bg-warning\/10{background-color:var(--warning)}@supports (color:color-mix(in lab,red,red)){.bg-warning\/10{background-color:color-mix(in oklab,var(--warning) 10%,transparent)}}.bg-warning\/\[0\.03\]{background-color:var(--warning)}@supports (color:color-mix(in lab,red,red)){.bg-warning\/\[0\.03\]{background-color:color-mix(in oklab,var(--warning) 3%,transparent)}}.bg-clip-padding{background-clip:padding-box}.object-contain{object-fit:contain}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-10{padding-top:calc(var(--spacing) * 10)}.pt-20{padding-top:calc(var(--spacing) * 20)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-9{padding-bottom:calc(var(--spacing) * 9)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.text-center{text-align:center}.text-left{text-align:left}.font-heading{font-family:var(--font-sans)}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[9\.5px\]{font-size:9.5px}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[13px\]{font-size:13px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-destructive{color:var(--destructive)}.text-faint{color:var(--faint)}.text-foreground,.text-foreground\/75{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/75{color:color-mix(in oklab,var(--foreground) 75%,transparent)}}.text-foreground\/80{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/80{color:color-mix(in oklab,var(--foreground) 80%,transparent)}}.text-foreground\/90{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/90{color:color-mix(in oklab,var(--foreground) 90%,transparent)}}.text-foreground\/95{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/95{color:color-mix(in oklab,var(--foreground) 95%,transparent)}}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-ring{color:var(--ring)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-subtle{color:var(--subtle)}.text-success{color:var(--success)}.text-warning,.text-warning\/90{color:var(--warning)}@supports (color:color-mix(in lab,red,red)){.text-warning\/90{color:color-mix(in oklab,var(--warning) 90%,transparent)}}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-lg,.shadow-sm{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a)}.ring-1,.shadow-xl{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)}.ring-3{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-border{--tw-ring-color:var(--border)}.ring-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab,var(--foreground) 10%,transparent)}}.ring-ring\/15{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.ring-ring\/15{--tw-ring-color:color-mix(in oklab,var(--ring) 15%,transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.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{--tw-backdrop-blur:blur(8px);-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,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.paused{animation-play-state:paused}.running{animation-play-state:running}@media (hover:hover){.group-hover\:fill-warning:is(:where(.group):hover *){fill:var(--warning)}.group-hover\:text-warning:is(:where(.group):hover *){color:var(--warning)}}.group-data-open\:hidden:is(:where(.group)[data-open] *){display:none}.group-data-open\:inline:is(:where(.group)[data-open] *){display:inline}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-6::file-selector-button{height:calc(var(--spacing) * 6)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.first\:pt-0:first-child{padding-top:calc(var(--spacing) * 0)}@media (hover:hover){.hover\:border-border-strong:hover{border-color:var(--border-strong)}.hover\:border-warning\/30:hover{border-color:var(--warning)}@supports (color:color-mix(in lab,red,red)){.hover\:border-warning\/30:hover{border-color:color-mix(in oklab,var(--warning) 30%,transparent)}}.hover\:bg-destructive\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.hover\:bg-surface:hover{background-color:var(--surface)}.hover\:bg-surface-hover:hover{background-color:var(--surface-hover)}.hover\:bg-warning\/\[0\.03\]:hover{background-color:var(--warning)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-warning\/\[0\.03\]:hover{background-color:color-mix(in oklab,var(--warning) 3%,transparent)}}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-3:focus-visible,.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.focus-visible\:ring-ring\/30:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/30:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring) 30%,transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring) 50%,transparent)}}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-input\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.disabled\:opacity-50:disabled{opacity:.5}:where([data-slot=button-group]) .in-data-\[slot\=button-group\]\:rounded-lg{border-radius:var(--radius)}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.data-closed\:animate-out[data-closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0[data-closed]{--tw-exit-opacity:0}.data-closed\:zoom-out-95[data-closed]{--tw-exit-scale:.95}.data-open\:animate-in[data-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0[data-open]{--tw-enter-opacity:0}.data-open\:zoom-in-95[data-open]{--tw-enter-scale:.95}@supports ((-webkit-backdrop-filter:var(--tw )) or (backdrop-filter:var(--tw ))){.supports-backdrop-filter\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-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,)}}@media (min-width:40rem){.sm\:top-6{top:calc(var(--spacing) * 6)}.sm\:right-6{right:calc(var(--spacing) * 6)}.sm\:ml-auto{margin-left:auto}.sm\:inline{display:inline}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}}@media (min-width:48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}@media (hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--destructive) 30%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab,var(--destructive) 50%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media (hover:hover){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.\[a\]\:hover\:bg-muted:is(a):hover{background-color:var(--muted)}.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:color-mix(in oklab,var(--primary) 80%,transparent)}}.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.\[a\]\:hover\:text-muted-foreground:is(a):hover{color:var(--muted-foreground)}:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--foreground)}}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3\!>svg{width:calc(var(--spacing) * 3)!important;height:calc(var(--spacing) * 3)!important}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:oklch(98.5% .002 270);--foreground:oklch(20% .012 270);--card:oklch(100% 0 0);--card-foreground:var(--foreground);--popover:oklch(100% 0 0);--popover-foreground:var(--foreground);--primary:oklch(24% .02 270);--primary-foreground:oklch(99% 0 0);--secondary:oklch(94% .005 270);--secondary-foreground:var(--foreground);--muted:oklch(95% .004 270);--muted-foreground:oklch(42% .014 270);--accent:oklch(94% .005 270);--accent-foreground:var(--foreground);--destructive:oklch(54% .2 25);--success:oklch(52% .14 152);--warning:oklch(60% .15 65);--border:oklch(90% .005 270);--border-strong:oklch(82% .008 270);--input:oklch(87% .006 270);--ring:oklch(55% .12 270);--surface:oklch(97% .003 270);--surface-hover:oklch(94% .005 270);--subtle:oklch(52% .012 270);--faint:oklch(64% .01 270);--dot:oklch(20% .02 270/.06);--glow:oklch(75% .09 270/.18);--scrollbar:oklch(20% .02 270/.16);--scrollbar-hover:oklch(20% .02 270/.28)}.dark{--background:oklch(16.5% .006 270);--foreground:oklch(96.5% 0 0);--card:oklch(20.5% .007 270);--card-foreground:var(--foreground);--popover:oklch(21.5% .008 270);--popover-foreground:var(--foreground);--primary:oklch(96.5% 0 0);--primary-foreground:oklch(17% .006 270);--secondary:oklch(27% .008 270);--secondary-foreground:var(--foreground);--muted:oklch(25% .008 270);--muted-foreground:oklch(79% .01 270);--accent:oklch(27% .008 270);--accent-foreground:var(--foreground);--destructive:oklch(70% .19 22);--success:oklch(77% .16 152);--warning:oklch(81% .15 80);--border:oklch(100% 0 0/.11);--border-strong:oklch(100% 0 0/.2);--input:oklch(100% 0 0/.14);--ring:oklch(68% .1 270);--surface:oklch(20% .007 270);--surface-hover:oklch(24.5% .008 270);--subtle:oklch(68% .01 270);--faint:oklch(57% .01 270);--dot:oklch(100% 0 0/.04);--glow:oklch(45% .09 270/.22);--scrollbar:oklch(100% 0 0/.12);--scrollbar-hover:oklch(100% 0 0/.22)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--scrollbar);border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-hover)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(1turn)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
package/README.md CHANGED
@@ -77,6 +77,40 @@ control on the page — including the hidden `<input type=file>` behind a styled
77
77
  Files live only for the duration of the run and are deleted when it ends. The agent
78
78
  can upload them, but never sees what is inside them.
79
79
 
80
+ ## Mocking and inspecting requests
81
+
82
+ What you would do with Charles or the DevTools Network tab is one line of the test case:
83
+
84
+ ```
85
+ 3. Replace the response of GET /api/cart with an empty list and open the cart.
86
+ Expected: the "Your cart is empty" placeholder is shown.
87
+ 4. Make POST /api/orders return 500 and click "Place order".
88
+ Expected: an error message is shown.
89
+ 5. Place the order for real.
90
+ Expected: POST /api/orders was sent with amount=3980 and returned 201.
91
+ ```
92
+
93
+ The agent can answer a request with made-up data (it invents a realistic body when
94
+ you give none), patch one field of the real response, fail or delay a request, go
95
+ offline, and read back what the page actually sent and received. JavaScript console
96
+ errors are noted on the step where they happened.
97
+
98
+ Tokens, passwords and cookies in request and response bodies are masked before the
99
+ model or the report sees them.
100
+
101
+ ## Tabs, dialogs and passwords
102
+
103
+ - A link that opens a new tab moves the agent to that tab; it can switch back.
104
+ - Native `alert` / `confirm` / `prompt` dialogs are accepted by default. Write "press
105
+ Cancel" in the step and the agent dismisses the dialog instead.
106
+ - Whatever is typed into a password field is masked in the log and the report.
107
+
108
+ ## The report
109
+
110
+ A failed step shows **Expected** next to **Actual**, with a screenshot. When the run
111
+ ends you can **Copy report** (Markdown, for a ticket), **Download report** (one HTML
112
+ file with screenshots inside), **Run again**, or **Edit test case** and rerun.
113
+
80
114
  ## A folder of test cases
81
115
 
82
116
  **Choose folder** points qpilot at a directory of `.md` files. Tick the ones you
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qpilot",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
4
4
  "description": "Run manual test cases with an AI agent in a real browser",
5
5
  "bin": {
6
6
  "qpilot": "bin/qa-agent.js"