expect-cli 0.0.12 → 0.0.13
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.
- package/dist/index.js +2 -2
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{n as e,r as t,t as n}from"./chunk-wdO_pP5q.js";import{a as r,i}from"./server-D776aGSk.js";import{createRequire as a}from"node:module";import{Array as o,Cause as s,Config as c,DateTime as l,Effect as u,Exit as d,FiberMap as f,FileSystem as p,Layer as m,Logger as h,Match as g,Option as _,Predicate as v,PubSub as y,Queue as b,References as x,Schema as S,ServiceMap as C,Stream as w,String as ee}from"effect";import{Command as T}from"commander";import{Box as E,Static as D,Text as O,render as k,useApp as A,useInput as te,useStdout as ne}from"ink";import{QueryClient as re,QueryClientProvider as j,useMutation as M,useQuery as N}from"@tanstack/react-query";import{c as ie}from"react/compiler-runtime";import{createContext as ae,useCallback as oe,useContext as P,useEffect as se,useMemo as F,useRef as I,useState as L}from"react";import*as R from"node:child_process";import{exec as z,execFile as ce,execSync as le,spawnSync as B}from"node:child_process";import{Fragment as ue,jsx as V,jsxs as H}from"react/jsx-runtime";import U from"figures";import W from"picocolors";import*as G from"node:path";import de,{join as fe,normalize as pe}from"node:path";import*as me from"node:url";import{fileURLToPath as he,pathToFileURL as ge}from"node:url";import{z as _e}from"zod";import{z as K}from"zod/v4";import{ChildProcess as ve,ChildProcessSpawner as ye}from"effect/unstable/process";import*as be from"@effect/platform-node/NodeServices";import*as xe from"effect/Array";import*as q from"effect/String";import*as Se from"effect/Function";import*as Ce from"node:crypto";import{createHash as we}from"node:crypto";import{Buffer as Te}from"node:buffer";import{execSync as Ee,spawn as De}from"child_process";import{EventEmitter as Oe}from"node:events";import{FileSystem as ke}from"effect/FileSystem";import*as Ae from"node:os";import{platform as je}from"node:os";import*as Me from"@effect/platform-node/NodeHttpClient";import*as Ne from"@effect/platform-node/NodeSocket";import{ChildProcessSpawner as Pe}from"effect/unstable/process/ChildProcessSpawner";import{request as Fe}from"node:http";import*as Ie from"node:fs/promises";import Le from"ink-spinner";import Re from"cli-truncate";import ze from"string-width";import{create as Be}from"zustand";import*as Ve from"effect/Data";import*as He from"@effect/platform-node/NodeFileSystem";import{dirname as Ue,posix as We,sep as Ge}from"path";import*as Ke from"node:fs";import{appendFileSync as qe,createReadStream as Je}from"node:fs";import{createInterface as Ye}from"node:readline";import{AsyncLocalStorage as Xe}from"node:async_hooks";import{DevTools as Ze}from"effect/unstable/devtools";import*as Qe from"effect/unstable/observability/Otlp";import{createJSONStorage as $e,persist as et}from"zustand/middleware";import*as tt from"effect/unstable/reactivity/AsyncResult";import*as nt from"effect/unstable/reactivity/Atom";import{RegistryProvider as rt,useAtom as it,useAtomSet as at,useAtomValue as ot}from"@effect/atom-react";import st from"pretty-ms";import{detectTerminal as ct}from"detect-terminal";import lt from"supports-terminal-graphics";import ut from"ink-link";import{Hono as dt}from"hono";import{proxy as ft}from"hono/proxy";import{serve as pt}from"@hono/node-server";import"node-notifier";import mt from"prompts";import ht from"ora";const gt=`0.0.
|
|
2
|
+
import{n as e,r as t,t as n}from"./chunk-wdO_pP5q.js";import{a as r,i}from"./server-D776aGSk.js";import{createRequire as a}from"node:module";import{Array as o,Cause as s,Config as c,DateTime as l,Effect as u,Exit as d,FiberMap as f,FileSystem as p,Layer as m,Logger as h,Match as g,Option as _,Predicate as v,PubSub as y,Queue as b,References as x,Schema as S,ServiceMap as C,Stream as w,String as ee}from"effect";import{Command as T}from"commander";import{Box as E,Static as D,Text as O,render as k,useApp as A,useInput as te,useStdout as ne}from"ink";import{QueryClient as re,QueryClientProvider as j,useMutation as M,useQuery as N}from"@tanstack/react-query";import{c as ie}from"react/compiler-runtime";import{createContext as ae,useCallback as oe,useContext as P,useEffect as se,useMemo as F,useRef as I,useState as L}from"react";import*as R from"node:child_process";import{exec as z,execFile as ce,execSync as le,spawnSync as B}from"node:child_process";import{Fragment as ue,jsx as V,jsxs as H}from"react/jsx-runtime";import U from"figures";import W from"picocolors";import*as G from"node:path";import de,{join as fe,normalize as pe}from"node:path";import*as me from"node:url";import{fileURLToPath as he,pathToFileURL as ge}from"node:url";import{z as _e}from"zod";import{z as K}from"zod/v4";import{ChildProcess as ve,ChildProcessSpawner as ye}from"effect/unstable/process";import*as be from"@effect/platform-node/NodeServices";import*as xe from"effect/Array";import*as q from"effect/String";import*as Se from"effect/Function";import*as Ce from"node:crypto";import{createHash as we}from"node:crypto";import{Buffer as Te}from"node:buffer";import{execSync as Ee,spawn as De}from"child_process";import{EventEmitter as Oe}from"node:events";import{FileSystem as ke}from"effect/FileSystem";import*as Ae from"node:os";import{platform as je}from"node:os";import*as Me from"@effect/platform-node/NodeHttpClient";import*as Ne from"@effect/platform-node/NodeSocket";import{ChildProcessSpawner as Pe}from"effect/unstable/process/ChildProcessSpawner";import{request as Fe}from"node:http";import*as Ie from"node:fs/promises";import Le from"ink-spinner";import Re from"cli-truncate";import ze from"string-width";import{create as Be}from"zustand";import*as Ve from"effect/Data";import*as He from"@effect/platform-node/NodeFileSystem";import{dirname as Ue,posix as We,sep as Ge}from"path";import*as Ke from"node:fs";import{appendFileSync as qe,createReadStream as Je}from"node:fs";import{createInterface as Ye}from"node:readline";import{AsyncLocalStorage as Xe}from"node:async_hooks";import{DevTools as Ze}from"effect/unstable/devtools";import*as Qe from"effect/unstable/observability/Otlp";import{createJSONStorage as $e,persist as et}from"zustand/middleware";import*as tt from"effect/unstable/reactivity/AsyncResult";import*as nt from"effect/unstable/reactivity/Atom";import{RegistryProvider as rt,useAtom as it,useAtomSet as at,useAtomValue as ot}from"@effect/atom-react";import st from"pretty-ms";import{detectTerminal as ct}from"detect-terminal";import lt from"supports-terminal-graphics";import ut from"ink-link";import{Hono as dt}from"hono";import{proxy as ft}from"hono/proxy";import{serve as pt}from"@hono/node-server";import"node-notifier";import mt from"prompts";import ht from"ora";const gt=`0.0.13`,_t=`\x1B[?1049l`,vt=process.env.SUPPORT_CLICK===`true`||process.env.SUPPORT_CLICK===`1`,yt=[`lint`,`check`,`format`,`typecheck`,`type-check`],bt=`expect-cli`,xt={"pnpm-lock.yaml":`pnpm`,"pnpm-workspace.yaml":`pnpm`,"yarn.lock":`yarn`,"package-lock.json":`npm`,"npm-shrinkwrap.json":`npm`,"bun.lock":`bun`,"bun.lockb":`bun`,"deno.lock":`deno`},St=()=>{},Ct=ae({subscribeClick:()=>St}),wt=/\x1b\[<(\d+);(\d+);(\d+)([Mm])|\x1b\[[\d;?<>=]*[A-Za-z~]|\[<[\d;]+[Mm]|\[\d+;\d+R|\[\?[\d;]+[a-z]/g,Tt=({children:e})=>{if(!vt)return V(ue,{children:e});let t=I(new Set),n=I(!1);if(!n.current){n.current=!0,process.stdout.write(`\x1B[?1003l\x1B[?1002l\x1B[?1000h\x1B[?1006h`);let e=process.stdin.emit.bind(process.stdin);process.stdin.emit=function(n,...r){if(n===`data`){let i=(typeof r[0]==`string`?r[0]:String(r[0])).replace(wt,(e,n,r,i,a)=>{if(n===`0`)for(let e of t.current)e({x:Number(r),y:Number(i)},a===`M`?`press`:`release`);return``});return i.length===0?!0:e(n,i)}return e(n,...r)}}let r=oe(e=>(t.current.add(e),()=>{t.current.delete(e)}),[]);return V(Ct.Provider,{value:{subscribeClick:r},children:e})},Et=()=>{let e=ie(1);if(e[0]!==`35703fbc37b9d963e330527161df9fe36b70875a77771f1d737994ab88cecbb3`){for(let t=0;t<1;t+=1)e[t]=Symbol.for(`react.memo_cache_sentinel`);e[0]=`35703fbc37b9d963e330527161df9fe36b70875a77771f1d737994ab88cecbb3`}return P(Ct)},Dt=/\x1b\[[\d;?<>=]*[A-Za-z~]|\[<[\d;]+[Mm]|\[\?[\d;]+[a-z]|\[\d+;\d+R/g,Ot=e=>vt?e.replace(Dt,``):e,kt=e=>e&&e>0?e:80,At=e=>e&&e>0?e:24,jt=()=>{let{stdout:e}=ne(),[t,n]=L([kt(e.columns),At(e.rows)]),r=I(!1);return r.current||(r.current=!0,e.on(`resize`,()=>n([kt(e.columns),At(e.rows)]))),t},Mt=`NO_COLOR`in process.env,J={primary:Mt?``:`whiteBright`,secondary:Mt?``:`gray`,accent:Mt?``:`white`,error:Mt?``:`red`,warning:Mt?``:`yellow`,success:Mt?``:`green`,info:Mt?``:`gray`,text:Mt?``:`white`,textMuted:Mt?``:`gray`,border:Mt?``:`gray`,borderActive:Mt?``:`white`,borderSubtle:Mt?``:`blackBright`,shimmerBase:Mt?``:`#555555`,shimmerHighlight:Mt?``:`#ffffff`,inputBg:Mt?``:`#1e1e1e`,bannerBg:Mt?``:`#332b00`,errorBg:Mt?``:`#330b0b`},Nt={TEXT:J.text,DIM:J.textMuted,GREEN:J.success,PRIMARY:J.primary,SELECTION:J.accent,RED:J.error,BORDER:J.border,DIVIDER:J.borderSubtle,YELLOW:J.warning,PURPLE:J.secondary,CYAN:J.info,INPUT_BG:J.inputBg,BANNER_BG:J.bannerBg,ERROR_BG:J.errorBg},Pt=()=>Nt,Ft=e=>{let t=ie(21);if(t[0]!==`c91257771a99332d5805ee6c49b36d74b00fa9357a1ef3353879ee4c78179ae7`){for(let e=0;e<21;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`c91257771a99332d5805ee6c49b36d74b00fa9357a1ef3353879ee4c78179ae7`}let{color:n,children:r,marginTop:i,marginBottom:a,paddingX:o,ref:s}=e,c=o===void 0?1:o,[l]=jt(),u;t[1]===l?u=t[2]:(u=`─`.repeat(l),t[1]=l,t[2]=u);let d;t[3]!==n||t[4]!==u?(d=V(O,{color:n,wrap:`truncate`,children:u}),t[3]=n,t[4]=u,t[5]=d):d=t[5];let f;t[6]!==r||t[7]!==c?(f=V(E,{flexDirection:`column`,paddingX:c,children:r}),t[6]=r,t[7]=c,t[8]=f):f=t[8];let p;t[9]===l?p=t[10]:(p=`─`.repeat(l),t[9]=l,t[10]=p);let m;t[11]!==n||t[12]!==p?(m=V(O,{color:n,wrap:`truncate`,children:p}),t[11]=n,t[12]=p,t[13]=m):m=t[13];let h;return t[14]!==a||t[15]!==i||t[16]!==s||t[17]!==d||t[18]!==f||t[19]!==m?(h=H(E,{flexDirection:`column`,width:`100%`,marginTop:i,marginBottom:a,ref:s,children:[d,f,m]}),t[14]=a,t[15]=i,t[16]=s,t[17]=d,t[18]=f,t[19]=m,t[20]=h):h=t[20],h},It=e=>{let t=e,n=1,r=1;for(;t;){if(!t.yogaNode)return{left:n,top:r};let e=t.yogaNode.getComputedLayout();n+=e.left,r+=e.top,t=t.parentNode}return{left:n,top:r}},Lt=({onClick:e,children:t,fullWidth:n=!0})=>{let{subscribeClick:r}=Et(),i=I(e);return i.current=e,V(E,{ref:oe(e=>{if(e)return r((t,n)=>{if(n!==`press`||!e.yogaNode)return;let r=It(e),a=e.yogaNode.getComputedLayout(),o=t.x<r.left||t.x>=r.left+a.width,s=t.y<r.top||t.y>=r.top+a.height;!o&&!s&&i.current?.()})},[r]),width:n?`100%`:void 0,children:t})},Rt=e=>/\w/.test(e),zt=(e,t)=>{let n=t-1;for(;n>0&&!Rt(e[n]);)n--;for(;n>0&&Rt(e[n-1]);)n--;return n},Bt=(e,t)=>{let n=t;for(;n<e.length&&Rt(e[n]);)n++;for(;n<e.length&&!Rt(e[n]);)n++;return n},Vt=(e,t)=>{let n=e.split(`
|
|
3
3
|
`),r=0;for(let e=0;e<n.length;e++){let i=n[e].length;if(t<=r+i)return{lineIndex:e,column:t-r,lines:n};r+=i+1}let i=n.length-1;return{lineIndex:i,column:n[i].length,lines:n}},Ht=(e,t,n)=>{let r=0;for(let n=0;n<t;n++)r+=e[n].length+1;return r+Math.min(n,e[t].length)},Ut=({value:e,placeholder:t=``,focus:n=!0,mask:r,highlightPastedText:i=!1,showCursor:a=!0,multiline:o=!1,onChange:s,onSubmit:c,onUpArrowAtTop:l,onDownArrowAtBottom:u})=>{let[d,f]=L({cursorOffset:(e||``).length,cursorWidth:0}),{cursorOffset:p,cursorWidth:m}=d,h=I({originalValue:e,focus:n,showCursor:a});(h.current.originalValue!==e||h.current.focus!==n||h.current.showCursor!==a)&&(h.current={originalValue:e,focus:n,showCursor:a},f(t=>{if(!n||!a)return t;let r=e||``;return t.cursorOffset>r.length-1?{cursorOffset:r.length,cursorWidth:0}:t}));let g=i?m:0,_=r?r.repeat(e.length):e,v=_,y=t?W.gray(t):void 0;if(a&&n){y=t.length>0?W.inverse(t[0])+W.gray(t.slice(1)):W.inverse(` `),v=_.length>0?``:W.inverse(` `);let e=0;for(let t of _){let n=e>=p-g&&e<=p;n&&t===`
|
|
4
4
|
`?v+=W.inverse(` `)+`
|
|
5
5
|
`:v+=n?W.inverse(t):t,e++}_.length>0&&p===_.length&&(v+=W.inverse(` `))}return te((t,n)=>{if(!o&&(n.upArrow||n.downArrow)||n.ctrl&&t===`c`||n.tab||n.shift&&n.tab)return;let r=p,i=e,d=0,m=!1;if(o&&n.upArrow&&a){let{lineIndex:t,column:n,lines:i}=Vt(e,p);t>0?r=Ht(i,t-1,n):l?.(),m=!0}else if(o&&n.downArrow&&a){let{lineIndex:t,column:n,lines:i}=Vt(e,p);t<i.length-1?r=Ht(i,t+1,n):u?.(),m=!0}else if(n.ctrl&&t===`a`&&a)r=0,m=!0;else if(n.ctrl&&t===`e`&&a)r=e.length,m=!0;else if(n.ctrl&&t===`f`&&a)r=p+1,m=!0;else if(n.ctrl&&t===`b`&&a)r=p-1,m=!0;else if(n.ctrl&&t===`k`)i=e.slice(0,p),m=!0;else if(n.ctrl&&t===`u`)p>0&&(i=e.slice(p),r=0),m=!0;else if(n.ctrl&&t===`w`){if(p>0){let t=zt(e,p);i=e.slice(0,t)+e.slice(p),r=t}m=!0}else if(n.ctrl&&t===`d`)p<e.length&&(i=e.slice(0,p)+e.slice(p+1)),m=!0;else if(n.ctrl&&t===`t`)p>0&&p<e.length&&(i=e.slice(0,p-1)+e[p]+e[p-1]+e.slice(p+1),r=p+1),m=!0;else if(n.meta&&t===`b`&&a)r=zt(e,p),m=!0;else if(n.meta&&t===`f`&&a)r=Bt(e,p),m=!0;else if(n.meta&&(n.backspace||n.delete)){if(p>0){let t=zt(e,p);i=e.slice(0,t)+e.slice(p),r=t}m=!0}else if(n.meta)return;if(!m)if(n.return)if(o&&n.shift)i=e.slice(0,p)+`
|
|
@@ -40,7 +40,7 @@ import{n as e,r as t,t as n}from"./chunk-wdO_pP5q.js";import{a as r,i}from"./ser
|
|
|
40
40
|
`).map(e=>e.trim()).filter(e=>e.length>0),r=n.find(e=>e.startsWith(uy))?.replace(uy,``),i=n.find(e=>e.startsWith(dy))?.replace(dy,``);return{localReplayUrl:r&&r.trim().length>0?ge(r.trim()).href:void 0,videoUrl:i&&i.trim().length>0?ge(i.trim()).href:void 0}},my=nt.make([]),hy=u.fnUntraced(function*(e,t){let n=yield*$p,r=yield*Qp,i=yield*J_,a=yield*Xp,o=Date.now(),s=`http://localhost:${fy()}`,c;e.replayHost&&(c=`${(yield*ay({replayHost:e.replayHost,liveViewUrl:s})).url}/replay?live=true`,yield*u.logInfo(`Replay viewer available`,{replayUrl:c}),yield*u.sync(()=>e.onReplayUrl?.(c)));let l={...e.options,liveViewUrl:s};yield*i.capture(`run:started`,{plan_id:`direct`});let d=yield*r.execute(l).pipe(w.tap(t=>u.gen(function*(){e.onUpdate(t),yield*ly(s,cy(t))})),w.runLast,u.map(t=>(t._tag===`Some`?t.value:new Qn({...e.options,id:``,changesFor:e.options.changesFor,currentBranch:``,diffPreview:``,fileStats:[],instruction:e.options.instruction,baseUrl:void 0,isHeadless:e.options.isHeadless,requiresCookies:e.options.requiresCookies,testCoverage:_.none(),title:e.options.instruction,rationale:`Direct execution`,steps:[],events:[]})).finalizeTextBlock())),f=py(d.events);if(c){let e=c.split(`/replay`)[0];yield*u.tryPromise(()=>fetch(`${s}/latest.json`).then(async t=>{if(!t.ok)return;let n=await t.json();await fetch(`${e}/latest.json`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)})})).pipe(u.catchCause(()=>u.void)),yield*ly(e,cy(d))}let p=yield*n.report(d),m=p.steps.filter(e=>p.stepStatuses.get(e.id)?.status===`passed`).length,h=p.steps.filter(e=>p.stepStatuses.get(e.id)?.status===`failed`).length;return yield*i.capture(`run:completed`,{plan_id:d.id??`direct`,passed:m,failed:h,step_count:d.steps.length,file_count:0,duration_ms:Date.now()-o}),p.status===`passed`&&(yield*a.saveTestedFingerprint()),{executedPlan:d,report:p,replayUrl:c??f.localReplayUrl,localReplayUrl:f.localReplayUrl,videoUrl:f.videoUrl}},u.annotateLogs({fn:`executeFn`})),gy=ty.fn()((e,t)=>ny(hy(e,t)).pipe(u.tapError(e=>u.gen(function*(){let t=yield*J_,n=e instanceof Error?e.constructor.name:`UnknownError`;yield*t.capture(`run:failed`,{plan_id:`direct`,error_tag:n})}).pipe(u.catchCause(()=>u.void))),u.provide(be.layer)));ty.fn(u.fnUntraced(function*(e,t){let n=yield*$p,r=yield*Qp,i=yield*J_,a=yield*Xp,o=Date.now(),s=`http://localhost:${fy()}`,c;e.replayHost&&(c=`${(yield*ay({replayHost:e.replayHost,liveViewUrl:s})).url}/replay?live=true`,yield*u.logInfo(`Replay viewer available`,{replayUrl:c}),yield*u.sync(()=>e.onReplayUrl?.(c)));let l={...e.options,liveViewUrl:s};yield*i.capture(`run:started`,{plan_id:`direct`});let d=yield*r.execute(l).pipe(w.tap(t=>u.gen(function*(){e.onUpdate(t),yield*ly(s,cy(t))})),w.runLast,u.map(t=>(t._tag===`Some`?t.value:new Qn({...e.options,id:``,changesFor:e.options.changesFor,currentBranch:``,diffPreview:``,fileStats:[],instruction:e.options.instruction,baseUrl:void 0,isHeadless:e.options.isHeadless,requiresCookies:e.options.requiresCookies,testCoverage:_.none(),title:e.options.instruction,rationale:`Direct execution`,steps:[],events:[]})).finalizeTextBlock())),f=py(d.events);if(c){let e=c.split(`/replay`)[0];yield*u.tryPromise(()=>fetch(`${s}/latest.json`).then(async t=>{if(!t.ok)return;let n=await t.json();await fetch(`${e}/latest.json`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)})})).pipe(u.catchCause(()=>u.void)),yield*ly(e,cy(d))}let p=yield*n.report(d),m=p.steps.filter(e=>p.stepStatuses.get(e.id)?.status===`passed`).length,h=p.steps.filter(e=>p.stepStatuses.get(e.id)?.status===`failed`).length;return yield*i.capture(`run:completed`,{plan_id:d.id??`direct`,passed:m,failed:h,step_count:d.steps.length,file_count:0,duration_ms:Date.now()-o}),p.status===`passed`&&(yield*a.saveTestedFingerprint()),{executedPlan:d,report:p,replayUrl:c??f.localReplayUrl,localReplayUrl:f.localReplayUrl,videoUrl:f.videoUrl}},u.annotateLogs({fn:`executeAtomFn`})));const _y=e=>{if(typeof e==`string`)try{let t=JSON.parse(e);if(v.isObject(t))return t}catch{return{}}return v.isObject(e)?e:{}},vy=e=>e.replace(/\s+/g,` `).trim(),yy=e=>{let t=e.match(/^mcp__.+__(.+)$/);return t?t[1]:e},by=(e,t)=>{let n=yy(e),r=typeof t==`string`?t:JSON.stringify(t??{}),i=_y(t),a=g.value(n).pipe(g.when(`open`,()=>i.url?`"${i.url}"`:``),g.when(`screenshot`,()=>{let e=i.mode??`screenshot`;return e===`screenshot`?``:e}),g.when(`playwright`,()=>Re(vy(i.code??r),100)),g.when(`console_logs`,()=>i.type?`type: "${i.type}"`:``),g.when(`network_requests`,()=>{let e=[];return i.method&&e.push(i.method),i.url&&e.push(`"${i.url}"`),e.join(`, `)}),g.when(`performance_metrics`,()=>``),g.when(`close`,()=>``),g.orElse(()=>xy(i))),o=(i.code??r).trim();return{name:n,args:a,multilineArgs:n===`playwright`&&o.includes(`
|
|
41
41
|
`)?o:void 0}},xy=e=>{let t=Object.values(e).filter(e=>typeof e==`string`&&e.length>0);return t.length===0?``:Re(vy(t.join(`, `)),100)},Sy=e=>e>=1e3?`${(e/1e3).toFixed(1)}k`:`${e}`,Cy=(e,t,n=e.length)=>{let r=[];for(let i=t;i<n;i++){let t=e[i];if(t._tag===`ToolCall`&&r.push({tool:by(t.toolName,t.input),isRunning:!1,resultTokens:void 0}),t._tag===`ToolProgress`&&r.length>0){let e=r[r.length-1];r[r.length-1]={...e,resultTokens:Math.round(t.outputSize/4)}}if(t._tag===`ToolResult`&&r.length>0){let e=r[r.length-1];r[r.length-1]={...e,resultTokens:Math.round(t.result.length/4)}}}return r},wy=(e,t)=>{if(e.length===0)return e;let n=t.at(-1)?._tag===`ToolResult`,r=[...e];return r[r.length-1]={...r[r.length-1],isRunning:!n},r},Ty=(e,t=!1)=>{let n=-1;for(let t=e.length-1;t>=0;t--)if(e[t]._tag===`StepStarted`){n=t;break}if(n===-1)return[];let r=wy(Cy(e,n+1),e);return t?r:r.slice(-5)},Ey=(e,t=!1)=>{let n=wy(Cy(e,0),e);return t?n:n.slice(-5)},Dy=(e,t)=>{let n=-1,r=0;for(let i=0;i<e.length;i++)if(e[i]._tag===`StepStarted`&&(n++,n===t&&(r=i+1),n===t+1))return[r,i];return[r,e.length]},Oy=(e,t)=>{let[n,r]=Dy(e,t);return Cy(e,n,r)},ky=e=>{let t=ie(15);if(t[0]!==`1d0983dd3879f9a5a019acea17cc4fd75140d170e89f34badca2fe82be71c373`){for(let e=0;e<15;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`1d0983dd3879f9a5a019acea17cc4fd75140d170e89f34badca2fe82be71c373`}let{display:n,indent:r}=e,i=Pt(),a;t[1]!==i.TEXT||t[2]!==n.tool.name?(a=V(O,{color:i.TEXT,children:n.tool.name}),t[1]=i.TEXT,t[2]=n.tool.name,t[3]=a):a=t[3];let o;t[4]===n.isRunning?o=t[5]:(o=n.isRunning&&H(O,{children:[` `,V(Le,{type:`line`})]}),t[4]=n.isRunning,t[5]=o);let s;t[6]===n.resultTokens?s=t[7]:(s=n.resultTokens!==void 0&&` ${U.arrowDown} ${Sy(n.resultTokens)} tokens`,t[6]=n.resultTokens,t[7]=s);let c;return t[8]!==i.DIM||t[9]!==n.tool.args||t[10]!==r||t[11]!==a||t[12]!==o||t[13]!==s?(c=H(O,{color:i.DIM,wrap:`truncate`,children:[r,U.lineVertical,` `,a,`(`,n.tool.args,`)`,o,s]}),t[8]=i.DIM,t[9]=n.tool.args,t[10]=r,t[11]=a,t[12]=o,t[13]=s,t[14]=c):c=t[14],c},Ay=e=>{if(!_.isNone(e.startedAt))return(_.isSome(e.endedAt)?l.toEpochMillis(e.endedAt.value):Date.now())-l.toEpochMillis(e.startedAt.value)},jy=(e,t,n,r)=>{let i=[];for(let a=0;a<e.length;a++){let o=e[a],s=`${n}-t${a}`;if(o.tool.multilineArgs){let e=o.tool.multilineArgs.split(`
|
|
42
42
|
`);i.push(H(O,{color:r.DIM,wrap:`truncate`,children:[t,U.lineVertical,` `,V(O,{color:r.TEXT,children:o.tool.name}),`(`,o.isRunning&&H(O,{children:[` `,V(Le,{type:`line`})]}),o.resultTokens!==void 0&&` ${U.arrowDown} ${Sy(o.resultTokens)} tokens`]},`${s}-h`));for(let n=0;n<e.length;n++)i.push(H(O,{color:r.DIM,children:[t,U.lineVertical,` `,` `,V(O,{color:r.TEXT,children:e[n]})]},`${s}-${n}`));i.push(H(O,{color:r.DIM,children:[t,U.lineVertical,` )`]},`${s}-c`))}else i.push(H(O,{color:r.DIM,wrap:`truncate`,children:[t,U.lineVertical,` `,V(O,{color:r.TEXT,children:o.tool.name}),`(`,o.tool.args,`)`,o.isRunning&&H(O,{children:[` `,V(Le,{type:`line`})]}),o.resultTokens!==void 0&&` ${U.arrowDown} ${Sy(o.resultTokens)} tokens`]},s))}return i},My=t=>{let n=ie(113);if(n[0]!==`1d0983dd3879f9a5a019acea17cc4fd75140d170e89f34badca2fe82be71c373`){for(let e=0;e<113;e+=1)n[e]=Symbol.for(`react.memo_cache_sentinel`);n[0]=`1d0983dd3879f9a5a019acea17cc4fd75140d170e89f34badca2fe82be71c373`}let{changesFor:r,instruction:i,savedFlow:a,requiresCookies:o,baseUrls:s}=t,c=o===void 0?!1:o,l=Zm(Ny),u=Pt(),[,d]=jt(),f=Z_(Py),p=Z_(Fy),m=Z_(Iy),h=Z_(Ly),g;n[1]===Symbol.for(`react.memo_cache_sentinel`)?(g={mode:`promiseExit`},n[1]=g):g=n[1];let[v,y]=it(gy,g),b=ot(my),[x,S]=L(void 0),C;n[2]===v?C=n[3]:(C=tt.isWaiting(v),n[2]=v,n[3]=C);let w=C,ee;n[4]===v?ee=n[5]:(ee=tt.isSuccess(v),n[4]=v,n[5]=ee);let T=ee,k=T?v.value.report:void 0,[A,ne]=L(void 0),[re,j]=L(void 0),[M,N]=L(0),[ae,oe]=L(!1),P=Nv(Ry),F=Nv(zy),R=Nv(By),z;n[6]===M?z=n[7]:(z=Pv(M),n[6]=M,n[7]=z);let ce=z,le=A?.steps?A.steps.length:0,B;if(n[8]!==u||n[9]!==ce||n[10]!==A||n[11]!==P||n[12]!==w){if(B=[],P&&A){let e=A.steps??[];if(e.length===0&&w){let e=Ey(A.events,!0);B.push(...jy(e,` `,`planning`,u))}for(let t=0;t<e.length;t++){let n=e[t],r=_.isSome(n.summary)?n.summary.value:n.title,i=Ay(n),a=i===void 0?void 0:Pv(i),o=`${t+1}.`;if(n.status===`active`){B.push(H(E,{children:[H(O,{color:u.DIM,children:[` `,o,` `]}),V(Wm,{}),V(O,{children:` `}),V(Mv,{text:`${n.title} ${ce}`,baseColor:J.shimmerBase,highlightColor:J.shimmerHighlight})]},`step-${t}`));let e=Ty(A.events,!0);B.push(...jy(e,` `,`s${t}`,u))}else if(n.status===`passed`){B.push(H(O,{children:[H(O,{color:u.DIM,children:[` `,o]}),H(O,{color:u.GREEN,children:[` `,U.tick,` `,Re(r,100)]}),a&&H(O,{color:u.DIM,children:[` `,a]})]},`step-${t}`));let e=Oy(A.events,t);B.push(...jy(e,` `,`s${t}`,u))}else if(n.status===`failed`){B.push(H(O,{children:[H(O,{color:u.DIM,children:[` `,o]}),H(O,{color:u.RED,children:[` `,U.cross,` `,Re(r,100)]}),a&&H(O,{color:u.DIM,children:[` `,a]})]},`step-${t}`));let e=Oy(A.events,t);B.push(...jy(e,` `,`s${t}`,u))}else n.status===`skipped`?B.push(H(O,{children:[H(O,{color:u.DIM,children:[` `,o]}),H(O,{color:u.YELLOW,children:[` `,U.arrowRight,` `,Re(r,100)]}),a&&H(O,{color:u.DIM,children:[` `,a]})]},`step-${t}`)):B.push(H(O,{color:u.DIM,children:[` `,o,` `,U.circle,` `,n.title]},`step-${t}`))}}n[8]=u,n[9]=ce,n[10]=A,n[11]=P,n[12]=w,n[13]=B}else B=n[13];let W=Math.max(1,d-6),G;n[14]!==B.length||n[15]!==W?(G={itemCount:B.length,visibleCount:W},n[14]=B.length,n[15]=W,n[16]=G):G=n[16];let de=Km(G),fe=I(!1),pe,me;n[17]!==P||n[18]!==B.length||n[19]!==de?(pe=()=>{P&&!fe.current&&B.length>0&&de.setHighlightedIndex(B.length-1),fe.current=P},me=[P,B.length,de],n[17]=P,n[18]=B.length,n[19]=de,n[20]=pe,n[21]=me):(pe=n[20],me=n[21]),se(pe,me);let he,ge;n[22]!==f||n[23]!==s||n[24]!==p||n[25]!==r||n[26]!==i||n[27]!==m||n[28]!==c||n[29]!==a||n[30]!==y?(ge=()=>{j(Date.now());let e=s&&s.length>0?s.join(`, `):void 0,t=s?s.map(Vy).join(` `):void 0;return y({options:{changesFor:r,instruction:t?`${i} ${t}`:i,isHeadless:!p,requiresCookies:c,savedFlow:a,baseUrl:e},agentBackend:f,replayHost:m,onUpdate:ne,onReplayUrl:S}),()=>{y(nt.Interrupt)}},he=[y,f,p,r,i,a,c,s,m],n[22]=f,n[23]=s,n[24]=p,n[25]=r,n[26]=i,n[27]=m,n[28]=c,n[29]=a,n[30]=y,n[31]=he,n[32]=ge):(he=n[31],ge=n[32]),se(ge,he);let _e=T?v.value.replayUrl:void 0,K=T?v.value.localReplayUrl:void 0,ve=T?v.value.videoUrl:void 0,ye,be;n[33]!==A||n[34]!==T||n[35]!==K||n[36]!==_e||n[37]!==k||n[38]!==l||n[39]!==ve?(ye=()=>{T&&A&&k&&(Nv.getState().setExecutedPlan(A),l(Ym.Results({report:k,replayUrl:_e,localReplayUrl:K,videoUrl:ve})))},be=[T,A,k,_e,K,ve,l],n[33]=A,n[34]=T,n[35]=K,n[36]=_e,n[37]=k,n[38]=l,n[39]=ve,n[40]=ye,n[41]=be):(ye=n[40],be=n[41]),se(ye,be);let xe;n[42]===l?xe=n[43]:(xe=()=>{Nv.getState().setExecutedPlan(void 0),l(Ym.Main())},n[42]=l,n[43]=xe);let q=xe,Se,Ce;n[44]!==w||n[45]!==re?(Se=()=>{if(re===void 0||!w)return;let e=setInterval(()=>{N(Date.now()-re)},1e3);return()=>clearInterval(e)},Ce=[re,w],n[44]=w,n[45]=re,n[46]=Se,n[47]=Ce):(Se=n[46],Ce=n[47]),se(Se,Ce);let we;n[48]!==A||n[49]!==v||n[50]!==P||n[51]!==de||n[52]!==q||n[53]!==w||n[54]!==x||n[55]!==K||n[56]!==_e||n[57]!==k||n[58]!==F||n[59]!==l||n[60]!==ae||n[61]!==R||n[62]!==h||n[63]!==ve?(we=(t,n)=>{let r=t.toLowerCase();if(ae){if(n.return||r===`y`){oe(!1),$_(`run:cancelled`),q();return}(n.escape||r===`n`)&&oe(!1);return}if(r===`o`&&!n.ctrl&&!n.meta&&x){let{exec:t}=e(`node:child_process`);t(`open "${x.replace(/"/g,`\\"`)}"`),$_(`live_preview:opened`);return}if(n.ctrl&&t===`o`){R();return}if(n.ctrl&&t===`n`){h();return}if(P){if(de.handleNavigation(t,n))return;if(n.escape){F(!1);return}return}if(n.escape){if(tt.isFailure(v)){q();return}if(w){oe(!0);return}if(A&&k){Nv.getState().setExecutedPlan(A),l(Ym.Results({report:k,replayUrl:_e,localReplayUrl:K,videoUrl:ve}));return}q()}},n[48]=A,n[49]=v,n[50]=P,n[51]=de,n[52]=q,n[53]=w,n[54]=x,n[55]=K,n[56]=_e,n[57]=k,n[58]=F,n[59]=l,n[60]=ae,n[61]=R,n[62]=h,n[63]=ve,n[64]=we):we=n[64],te(we);let Te;n[65]!==B||n[66]!==de.scrollOffset||n[67]!==W?(Te=B.slice(de.scrollOffset,de.scrollOffset+W),n[65]=B,n[66]=de.scrollOffset,n[67]=W,n[68]=Te):Te=n[68];let Ee=Te,De;n[69]===b?De=n[70]:(De=V(D,{items:[...b],children:Hy}),n[69]=b,n[70]=De);let Oe;n[71]===Symbol.for(`react.memo_cache_sentinel`)?(Oe=V(nv,{}),n[71]=Oe):Oe=n[71];let ke;n[72]===u.DIM?ke=n[73]:(ke=V(O,{color:u.DIM,children:U.pointerSmall}),n[72]=u.DIM,n[73]=ke);let Ae;n[74]!==u.TEXT||n[75]!==i?(Ae=V(O,{color:u.TEXT,children:i}),n[74]=u.TEXT,n[75]=i,n[76]=Ae):Ae=n[76];let je;n[77]!==ke||n[78]!==Ae?(je=H(E,{children:[Oe,H(O,{wrap:`truncate`,children:[` `,ke,` `,Ae]})]}),n[77]=ke,n[78]=Ae,n[79]=je):je=n[79];let Me;n[80]!==u.DIM||n[81]!==u.PRIMARY||n[82]!==w||n[83]!==x?(Me=x&&w&&V(E,{marginTop:0,children:H(O,{color:u.DIM,children:[` `,`Press `,V(O,{color:u.PRIMARY,children:`o`}),` to open live preview`]})}),n[80]=u.DIM,n[81]=u.PRIMARY,n[82]=w,n[83]=x,n[84]=Me):Me=n[84];let Ne;n[85]!==u.DIM||n[86]!==u.GREEN||n[87]!==u.RED||n[88]!==u.YELLOW||n[89]!==ce||n[90]!==A||n[91]!==P||n[92]!==w||n[93]!==le||n[94]!==Ee?(Ne=P?V(E,{flexDirection:`column`,marginTop:1,children:Ee}):H(ue,{children:[le===0&&w&&(()=>{let e=A?Ey(A.events,!1):[];return H(E,{marginTop:1,flexDirection:`column`,children:[H(E,{children:[V(Wm,{}),V(O,{children:` `}),V(Mv,{text:`Starting${U.ellipsis} ${ce}`,baseColor:J.shimmerBase,highlightColor:J.shimmerHighlight})]}),e.map(Uy)]})})(),V(E,{flexDirection:`column`,marginTop:1,children:(A?.steps??[]).map((e,t)=>{let n=_.isSome(e.summary)?e.summary.value:e.title,r=Ay(e),i=r===void 0?void 0:Pv(r),a=`${t+1}.`;if(e.status===`active`){let t=A?Ty(A.events,!1):[];return H(E,{flexDirection:`column`,children:[H(E,{children:[H(O,{color:u.DIM,children:[` `,a,` `]}),V(Wm,{}),V(O,{children:` `}),V(Mv,{text:`${e.title} ${ce}`,baseColor:J.shimmerBase,highlightColor:J.shimmerHighlight})]}),t.map(Wy)]},e.id)}return e.status===`passed`?H(O,{children:[H(O,{color:u.DIM,children:[` `,a]}),H(O,{color:u.GREEN,children:[` `,U.tick,` `,Re(n,100)]}),i&&H(O,{color:u.DIM,children:[` `,i]})]},e.id):e.status===`failed`?H(O,{children:[H(O,{color:u.DIM,children:[` `,a]}),H(O,{color:u.RED,children:[` `,U.cross,` `,Re(n,100)]}),i&&H(O,{color:u.DIM,children:[` `,i]})]},e.id):e.status===`skipped`?H(O,{children:[H(O,{color:u.DIM,children:[` `,a]}),H(O,{color:u.YELLOW,children:[` `,U.arrowRight,` `,Re(n,100)]}),i&&H(O,{color:u.DIM,children:[` `,i]})]},e.id):H(O,{color:u.DIM,children:[` `,a,` `,U.circle,` `,e.title]},e.id)})})]}),n[85]=u.DIM,n[86]=u.GREEN,n[87]=u.RED,n[88]=u.YELLOW,n[89]=ce,n[90]=A,n[91]=P,n[92]=w,n[93]=le,n[94]=Ee,n[95]=Ne):Ne=n[95];let Pe;n[96]!==u.PRIMARY||n[97]!==u.YELLOW||n[98]!==ae?(Pe=ae&&V(E,{marginTop:1,children:H(O,{color:u.YELLOW,children:[`Stop run? `,V(O,{color:u.PRIMARY,children:`enter`}),` to stop,`,` `,V(O,{color:u.PRIMARY,children:`esc`}),` to dismiss`]})}),n[96]=u.PRIMARY,n[97]=u.YELLOW,n[98]=ae,n[99]=Pe):Pe=n[99];let Fe;n[100]!==je||n[101]!==Me||n[102]!==Ne||n[103]!==Pe?(Fe=H(E,{flexDirection:`column`,width:`100%`,paddingY:1,paddingX:1,children:[je,Me,Ne,Pe]}),n[100]=je,n[101]=Me,n[102]=Ne,n[103]=Pe,n[104]=Fe):Fe=n[104];let Ie;n[105]===v?Ie=n[106]:(Ie=tt.builder(v).onError(Gy).onDefect(Ky).orNull(),n[105]=v,n[106]=Ie);let Le;n[107]!==Fe||n[108]!==Ie?(Le=H(E,{flexDirection:`column`,width:`100%`,children:[Fe,Ie]}),n[107]=Fe,n[108]=Ie,n[109]=Le):Le=n[109];let ze;return n[110]!==De||n[111]!==Le?(ze=H(ue,{children:[De,Le]}),n[110]=De,n[111]=Le,n[112]=ze):ze=n[112],ze};function Ny(e){return e.setScreen}function Py(e){return e.agentBackend}function Fy(e){return e.browserHeaded}function Iy(e){return e.replayHost}function Ly(e){return e.toggleNotifications}function Ry(e){return e.expanded}function zy(e){return e.setExpanded}function By(e){return e.toggleExpanded}function Vy(e){return`[url: ${e}]`}function Hy(e){return V(E,{paddingX:1,children:V(Xv,{src:e,alt:e})},e)}function Uy(e,t){return V(ky,{display:e,indent:` `},t)}function Wy(e,t){return V(ky,{display:e,indent:` `},t)}function Gy(e){return V(Zv,{type:`error`,error:e})}function Ky(e){return V(Zv,{type:`defect`,error:{_tag:`Defect`,message:s.pretty(s.fail(e))}})}const qy=e=>{try{return R.execSync(`pbcopy`,{input:e,stdio:[`pipe`,`ignore`,`ignore`]}),!0}catch{return!1}},Jy=(e,t)=>u.runPromise(pm.use(n=>n.addComment(process.cwd(),e,t)).pipe(u.provide(pm.layer))),Yy=()=>M({mutationFn:({pullRequest:e,body:t})=>Jy(e,t)}),Xy=ty.fn(u.fnUntraced(function*(e,t){return yield*(yield*um).save(e.plan)},u.annotateLogs({fn:`saveFlowFn`}),u.provide(be.layer))),Zy=e=>{if(!(_.isNone(e.startedAt)||_.isNone(e.endedAt)))return l.toEpochMillis(e.endedAt.value)-l.toEpochMillis(e.startedAt.value)},Qy=e=>{let t=0;for(let n of e){let e=Zy(n);e!==void 0&&(t+=e)}return t},$y=e=>{let t=ie(141);if(t[0]!==`b7e547f8ebc01ced52659efc05613f9ccf6a352b61760b052762a2223144f2e9`){for(let e=0;e<141;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`b7e547f8ebc01ced52659efc05613f9ccf6a352b61760b052762a2223144f2e9`}let{report:n,replayUrl:r,localReplayUrl:i,videoUrl:a}=e,o=Pt(),s=Zm(eb),[c,l]=L(void 0),u=Yy(),d;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(d={mode:`promiseExit`},t[1]=d):d=t[1];let[f,p]=it(Xy,d),m=f.waiting,h;t[2]===f?h=t[3]:(h=tt.isSuccess(f),t[2]=f,t[3]=h);let g=h,v;t[4]!==u||t[5]!==n.pullRequest||t[6]!==n.toPlainText?(v=()=>{_.isSome(n.pullRequest)&&($_(`results:posted_to_pr`),u.mutate({pullRequest:n.pullRequest.value,body:n.toPlainText}))},t[4]=u,t[5]=n.pullRequest,t[6]=n.toPlainText,t[7]=v):v=t[7];let y=v,b;t[8]!==o.GREEN||t[9]!==o.RED||t[10]!==n.toPlainText?(b=()=>{qy(n.toPlainText)?($_(`results:copied_to_clipboard`),l({text:`${U.tick} Copied to clipboard`,color:o.GREEN})):l({text:`${U.cross} Failed to copy to clipboard`,color:o.RED})},t[8]=o.GREEN,t[9]=o.RED,t[10]=n.toPlainText,t[11]=b):b=t[11];let x=b,S;t[12]!==n||t[13]!==m||t[14]!==g||t[15]!==p?(S=async()=>{m||g||($_(`flow:saved`,{step_count:n.steps.length}),await p({plan:n}))},t[12]=n,t[13]=m,t[14]=g,t[15]=p,t[16]=S):S=t[16];let C=S,w;t[17]!==n.changesFor||t[18]!==n.instruction||t[19]!==s?(w=()=>{$_(`results:restarted`),Nv.getState().setExecutedPlan(void 0),s(Xm({changesFor:n.changesFor,instruction:n.instruction}))},t[17]=n.changesFor,t[18]=n.instruction,t[19]=s,t[20]=w):w=t[20];let ee=w,T;t[21]!==x||t[22]!==y||t[23]!==ee||t[24]!==C?(T=e=>{let t=e.toLowerCase();t===`y`&&x(),t===`p`&&y(),t===`s`&&C(),t===`r`&&ee()},t[21]=x,t[22]=y,t[23]=ee,t[24]=C,t[25]=T):T=t[25],te(T);let D=n.status===`passed`,k=D?o.GREEN:o.RED,A=D?U.tick:U.cross,ne=D?`Passed`:`Failed`,re,j,M,N,ae,oe,P,se,F,I,R;if(t[26]!==o.DIM||t[27]!==o.GREEN||t[28]!==o.RED||t[29]!==o.TEXT||t[30]!==o.YELLOW||t[31]!==i||t[32]!==r||t[33]!==n.instruction||t[34]!==n.stepStatuses||t[35]!==n.steps||t[36]!==k||t[37]!==A||t[38]!==ne){let e=Qy(n.steps);j=r??i,M=!!r&&!!i&&r!==i&&i!==void 0,re=E,I=`column`,R=`100%`,N=1,ae=1;let a;t[50]===Symbol.for(`react.memo_cache_sentinel`)?(a=V(nv,{}),t[50]=a):a=t[50];let s;t[51]===o.DIM?s=t[52]:(s=V(O,{color:o.DIM,children:U.pointerSmall}),t[51]=o.DIM,t[52]=s);let c;t[53]!==o.TEXT||t[54]!==n.instruction?(c=V(O,{color:o.TEXT,children:n.instruction}),t[53]=o.TEXT,t[54]=n.instruction,t[55]=c):c=t[55],t[56]!==s||t[57]!==c?(oe=H(E,{children:[a,H(O,{wrap:`truncate`,children:[` `,s,` `,c]})]}),t[56]=s,t[57]=c,t[58]=oe):oe=t[58];let l;t[59]!==k||t[60]!==A||t[61]!==ne?(l=H(O,{color:k,bold:!0,children:[A,` `,ne]}),t[59]=k,t[60]=A,t[61]=ne,t[62]=l):l=t[62];let u=n.steps.length===1?``:`s`,d;t[63]!==o.DIM||t[64]!==n.steps.length||t[65]!==u?(d=H(O,{color:o.DIM,children:[` `,n.steps.length,` step`,u]}),t[63]=o.DIM,t[64]=n.steps.length,t[65]=u,t[66]=d):d=t[66],t[67]!==l||t[68]!==d?(P=H(E,{marginTop:1,children:[l,d]}),t[67]=l,t[68]=d,t[69]=P):P=t[69];let f;if(t[70]!==o.DIM||t[71]!==o.GREEN||t[72]!==o.RED||t[73]!==o.YELLOW||t[74]!==n.stepStatuses||t[75]!==n.steps){let e;t[77]!==o.DIM||t[78]!==o.GREEN||t[79]!==o.RED||t[80]!==o.YELLOW||t[81]!==n.stepStatuses?(e=(e,t)=>{let r=Zy(e),i=r===void 0?void 0:Pv(r),a=n.stepStatuses.get(e.id),s=a?.status===`failed`,c=a?.status===`skipped`,l=s?o.RED:c?o.YELLOW:o.GREEN,u=s?U.cross:c?U.arrowRight:U.tick,d=`${t+1}.`;return H(E,{flexDirection:`column`,children:[H(O,{children:[H(O,{color:o.DIM,children:[` `,d]}),H(O,{color:l,children:[` `,u,` `,e.title]}),i&&H(O,{color:o.DIM,children:[` `,i]})]}),(s||c)&&a?.summary&&H(O,{color:o.DIM,children:[` `,a.summary]})]},e.id)},t[77]=o.DIM,t[78]=o.GREEN,t[79]=o.RED,t[80]=o.YELLOW,t[81]=n.stepStatuses,t[82]=e):e=t[82],f=n.steps.map(e),t[70]=o.DIM,t[71]=o.GREEN,t[72]=o.RED,t[73]=o.YELLOW,t[74]=n.stepStatuses,t[75]=n.steps,t[76]=f}else f=t[76];t[83]===f?se=t[84]:(se=V(E,{flexDirection:`column`,marginTop:1,children:f}),t[83]=f,t[84]=se),F=e>0&&V(E,{marginTop:1,children:H(O,{color:o.DIM,children:[`Worked for `,Pv(e)]})}),t[26]=o.DIM,t[27]=o.GREEN,t[28]=o.RED,t[29]=o.TEXT,t[30]=o.YELLOW,t[31]=i,t[32]=r,t[33]=n.instruction,t[34]=n.stepStatuses,t[35]=n.steps,t[36]=k,t[37]=A,t[38]=ne,t[39]=re,t[40]=j,t[41]=M,t[42]=N,t[43]=ae,t[44]=oe,t[45]=P,t[46]=se,t[47]=F,t[48]=I,t[49]=R}else re=t[39],j=t[40],M=t[41],N=t[42],ae=t[43],oe=t[44],P=t[45],se=t[46],F=t[47],I=t[48],R=t[49];let z;t[85]===c?z=t[86]:(z=c&&V(E,{marginTop:1,children:V(O,{color:c.color,children:c.text})}),t[85]=c,t[86]=z);let ce;t[87]!==o.DIM||t[88]!==u.isPending?(ce=u.isPending&&V(E,{marginTop:1,children:H(O,{color:o.DIM,children:[`Posting to PR`,U.ellipsis]})}),t[87]=o.DIM,t[88]=u.isPending,t[89]=ce):ce=t[89];let le;t[90]!==o.GREEN||t[91]!==u.isSuccess?(le=u.isSuccess&&V(E,{marginTop:1,children:H(O,{color:o.GREEN,children:[U.tick,` Posted to PR`]})}),t[90]=o.GREEN,t[91]=u.isSuccess,t[92]=le):le=t[92];let B;t[93]!==o.RED||t[94]!==u.isError?(B=u.isError&&V(E,{marginTop:1,children:H(O,{color:o.RED,children:[U.cross,` Failed to post to PR`]})}),t[93]=o.RED,t[94]=u.isError,t[95]=B):B=t[95];let ue;t[96]!==o.DIM||t[97]!==m?(ue=m&&V(E,{marginTop:1,children:H(O,{color:o.DIM,children:[`Saving flow`,U.ellipsis]})}),t[96]=o.DIM,t[97]=m,t[98]=ue):ue=t[98];let W;t[99]!==o.GREEN||t[100]!==g?(W=g&&V(E,{marginTop:1,children:H(O,{color:o.GREEN,children:[U.tick,` Flow saved`]})}),t[99]=o.GREEN,t[100]=g,t[101]=W):W=t[101];let G;t[102]!==o.RED||t[103]!==f?(G=tt.isFailure(f)&&V(E,{marginTop:1,children:H(O,{color:o.RED,children:[U.cross,` Failed to save flow`]})}),t[102]=o.RED,t[103]=f,t[104]=G):G=t[104];let de;t[105]!==o.DIM||t[106]!==o.PRIMARY||t[107]!==j?(de=j&&V(E,{flexDirection:`column`,paddingX:1,marginTop:1,children:H(O,{color:o.DIM,children:[`Replay:`,` `,V(O,{color:o.PRIMARY,bold:!0,children:j})]})}),t[105]=o.DIM,t[106]=o.PRIMARY,t[107]=j,t[108]=de):de=t[108];let fe;t[109]!==o.DIM||t[110]!==o.PRIMARY||t[111]!==i||t[112]!==M?(fe=M&&V(E,{flexDirection:`column`,paddingX:1,children:H(O,{color:o.DIM,children:[`Local Replay:`,` `,V(O,{color:o.PRIMARY,bold:!0,children:i})]})}),t[109]=o.DIM,t[110]=o.PRIMARY,t[111]=i,t[112]=M,t[113]=fe):fe=t[113];let pe;t[114]!==o.DIM||t[115]!==o.PRIMARY||t[116]!==a?(pe=a&&V(E,{flexDirection:`column`,paddingX:1,children:H(O,{color:o.DIM,children:[`Video:`,` `,V(O,{color:o.PRIMARY,bold:!0,children:a})]})}),t[114]=o.DIM,t[115]=o.PRIMARY,t[116]=a,t[117]=pe):pe=t[117];let me;t[118]===n.screenshotPaths?me=t[119]:(me=n.screenshotPaths.map(tb),t[118]=n.screenshotPaths,t[119]=me);let he;return t[120]!==re||t[121]!==N||t[122]!==ae||t[123]!==oe||t[124]!==P||t[125]!==se||t[126]!==F||t[127]!==z||t[128]!==ce||t[129]!==le||t[130]!==B||t[131]!==ue||t[132]!==W||t[133]!==G||t[134]!==de||t[135]!==fe||t[136]!==pe||t[137]!==me||t[138]!==I||t[139]!==R?(he=H(re,{flexDirection:I,width:R,paddingY:N,paddingX:ae,children:[oe,P,se,F,z,ce,le,B,ue,W,G,de,fe,pe,me]}),t[120]=re,t[121]=N,t[122]=ae,t[123]=oe,t[124]=P,t[125]=se,t[126]=F,t[127]=z,t[128]=ce,t[129]=le,t[130]=B,t[131]=ue,t[132]=W,t[133]=G,t[134]=de,t[135]=fe,t[136]=pe,t[137]=me,t[138]=I,t[139]=R,t[140]=he):he=t[140],he};function eb(e){return e.setScreen}function tb(e){return V(E,{marginTop:1,children:V(Xv,{src:e,alt:`Screenshot: ${e}`})},e)}const nb=m.mergeAll(um.layer,Xp.withRepoRoot(process.cwd())),rb=()=>N({queryKey:[`saved-flows`],queryFn:()=>u.gen(function*(){return yield*(yield*um).list()}).pipe(u.provide(nb),u.provide(be.layer),u.catchTag(`FindRepoRootError`,()=>u.succeed([])),u.runPromise)}),ib=new pn({isGitRepo:!1,currentBranch:`HEAD`,mainBranch:void 0,isOnMain:!1,hasChangesFromMain:!1,hasUnstagedChanges:!1,hasBranchCommits:!1,branchCommitCount:0,fileStats:[],workingTreeFileStats:[],fingerprint:void 0,savedFingerprint:void 0}),ab=()=>N({queryKey:[`git-state`],queryFn:async()=>{let e=await u.runPromiseExit(u.gen(function*(){return yield*(yield*Xp).getState()}).pipe(u.provide(Xp.withRepoRoot(process.cwd())),u.catchTag(`FindRepoRootError`,()=>u.succeed(ib)),u.timeoutOrElse({duration:1e4,onTimeout:()=>u.succeed(ib)}),u.provide(be.layer)));return d.isSuccess(e)?e.value:ib}}),ob=e=>Array.isArray(e.flow?.steps)?e.flow.steps:[],sb=(e,t)=>{let n=gn.makeUnsafe({_tag:`Changes`,mainBranch:t}),r=ob(e),i={title:e.flow.title,userInstruction:e.flow.userInstruction,steps:r},a=e.environment.cookies;$_(`flow:reused`,{slug:e.slug,step_count:r.length}),Zm.getState().setScreen(Xm({changesFor:n,instruction:e.flow.userInstruction,savedFlow:i,requiresCookies:a}))},cb=()=>{let e=ie(11);if(e[0]!==`53939b05c229418d7d52eba403172d78da52d4f06481f5625a9cf002fc443ae8`){for(let t=0;t<11;t+=1)e[t]=Symbol.for(`react.memo_cache_sentinel`);e[0]=`53939b05c229418d7d52eba403172d78da52d4f06481f5625a9cf002fc443ae8`}let t=Pt(),[n]=jt(),r=Zm(lb),{data:i}=ab(),{data:a,isLoading:o}=rb(),s=a===void 0?[]:a,{highlightedIndex:c,setHighlightedIndex:l,scrollOffset:u,handleNavigation:d}=Km({itemCount:s.length,visibleCount:15}),f=Math.min(40,Math.floor(n*.35)),p=Math.max(20,n-f-8),m=s.slice(u,u+15);te((e,t)=>{if(!d(e,t)){if(t.return){let e=s[c];e&&sb(e,i?.mainBranch??`main`)}t.escape&&r(Ym.Main())}});let h=E,g=`${s.length} flow${s.length===1?``:`s`}`,_;e[1]===g?_=e[2]:(_=V(E,{paddingX:1,children:V($m,{title:`Saved flows`,subtitle:g})}),e[1]=g,e[2]=_);let v;e[3]===o?v=e[4]:(v=o&&V(E,{marginTop:1,paddingX:1,children:V(Wm,{message:`Loading saved flows...`})}),e[3]=o,e[4]=v);let y=!o&&s.length===0&&V(E,{marginTop:1,paddingX:1,flexDirection:`column`,children:H(O,{color:t.DIM,children:[`No saved flows yet. Run a test and press `,V(O,{color:t.PRIMARY,children:`s`}),` on the results screen to save a flow.`]})}),b=!o&&s.length>0&&V(E,{marginTop:1,flexDirection:`column`,height:15,overflow:`hidden`,paddingX:1,children:m.map((e,n)=>{let r=n+u,a=r===c,o=ob(e).length;return H(Lt,{onClick:()=>{l(r),sb(e,i?.mainBranch??`main`)},children:[V(O,{color:a?t.PRIMARY:t.DIM,children:a?`${U.pointer} `:` `}),V(O,{color:a?t.PRIMARY:t.TEXT,bold:a,children:Gm(Re(e.title,f-1),f)}),V(O,{color:t.DIM,children:Gm(`${o} step${o===1?``:`s`}`,10)}),V(O,{color:t.DIM,children:Re(e.description,p)})]},e.slug)})}),x;return e[5]!==h||e[6]!==_||e[7]!==v||e[8]!==y||e[9]!==b?(x=H(h,{flexDirection:`column`,width:`100%`,paddingY:1,children:[_,v,y,b]}),e[5]=h,e[6]=_,e[7]=v,e[8]=y,e[9]=b,e[10]=x):x=e[10],x};function lb(e){return e.setScreen}const ub=e=>{let t=ie(7);if(t[0]!==`4fad32b1608f5dc4d90407ad58143bc83cfcba6f2b87af31eb3b6ad187111fee`){for(let e=0;e<7;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`4fad32b1608f5dc4d90407ad58143bc83cfcba6f2b87af31eb3b6ad187111fee`}let{status:n}=e,r=Pt();if(n===`open`){let e;return t[1]===r.GREEN?e=t[2]:(e=H(O,{color:r.GREEN,children:[U.bullet,` `]}),t[1]=r.GREEN,t[2]=e),e}if(n===`merged`){let e;return t[3]===r.PURPLE?e=t[4]:(e=H(O,{color:r.PURPLE,children:[U.bullet,` `]}),t[3]=r.PURPLE,t[4]=e),e}if(n===`draft`){let e;return t[5]===r.DIM?e=t[6]:(e=H(O,{color:r.DIM,children:[U.bullet,` `]}),t[5]=r.DIM,t[6]=e),e}return null},db=e=>{let t=ie(30);if(t[0]!==`4fad32b1608f5dc4d90407ad58143bc83cfcba6f2b87af31eb3b6ad187111fee`){for(let e=0;e<30;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`4fad32b1608f5dc4d90407ad58143bc83cfcba6f2b87af31eb3b6ad187111fee`}let{options:n,selectedIndex:r,isLoading:i,gitState:a}=e,o=Pt(),s;bb0:{if(n.length<=8){s=0;break bb0}let e=n.length-8;s=Math.min(e,Math.max(0,r-4))}let c=s,l,u,d,f;if(t[1]!==o||t[2]!==a||t[3]!==i||t[4]!==n||t[5]!==c||t[6]!==r){f=Symbol.for(`react.early_return_sentinel`);bb1:{let e=n.slice(c,c+8);if(n.length===0&&!i){let e;t[11]===o.DIM?e=t[12]:(e=V(E,{flexDirection:`column`,children:V(O,{color:o.DIM,children:`No matching results`})}),t[11]=o.DIM,t[12]=e),f=e;break bb1}l=E,u=`column`;let s;t[13]!==o||t[14]!==a||t[15]!==c||t[16]!==r?(s=(e,t)=>{let n=t+c===r,i=zm(e,a),s=Bm(e,a),l=e._tag===`PullRequest`||e._tag===`Branch`?e.branch.prNumber:null,u=e._tag===`PullRequest`||e._tag===`Branch`?e.branch.prStatus:null;return H(O,{wrap:`truncate`,children:[V(O,{color:n?o.PRIMARY:o.DIM,children:n?`${U.pointer} `:` `}),e._tag===`WorkingTree`?H(O,{color:o.GREEN,children:[U.bullet,` `]}):null,u?V(ub,{status:u}):null,V(O,{color:n?o.PRIMARY:o.TEXT,bold:n,children:i}),l?H(O,{children:[` `,H(O,{color:u===`open`?o.GREEN:u===`merged`?o.PURPLE:o.DIM,children:[`#`,l]}),u?H(O,{color:o.DIM,children:[` `,u]}):null]}):null,s&&!l?H(O,{color:o.DIM,children:[` `,s]}):null]},qn(e))},t[13]=o,t[14]=a,t[15]=c,t[16]=r,t[17]=s):s=t[17],d=e.map(s)}t[1]=o,t[2]=a,t[3]=i,t[4]=n,t[5]=c,t[6]=r,t[7]=l,t[8]=u,t[9]=d,t[10]=f}else l=t[7],u=t[8],d=t[9],f=t[10];if(f!==Symbol.for(`react.early_return_sentinel`))return f;let p;t[18]!==o||t[19]!==i?(p=i?V(E,{children:H(O,{color:o.DIM,children:[` Loading PRs and branches`,U.ellipsis]})}):null,t[18]=o,t[19]=i,t[20]=p):p=t[20];let m;t[21]!==o||t[22]!==n.length?(m=n.length>8?V(E,{children:H(O,{color:o.DIM,children:[` `,n.length-8,` more `,U.arrowUp,`/`,U.arrowDown]})}):null,t[21]=o,t[22]=n.length,t[23]=m):m=t[23];let h;return t[24]!==l||t[25]!==u||t[26]!==d||t[27]!==p||t[28]!==m?(h=H(l,{flexDirection:u,children:[d,p,m]}),t[24]=l,t[25]=u,t[26]=d,t[27]=p,t[28]=m,t[29]=h):h=t[29],h},fb=({gitState:e,onSelect:t})=>{let[n,r]=L(!1),[i,a]=L(``),[o,s]=L(0),{data:c=[]}=N({queryKey:[`local-context-options`,e?.currentBranch],queryFn:()=>Im(e),enabled:!!e}),{data:l=[],isLoading:u}=N({queryKey:[`remote-context-options`,e?.currentBranch],queryFn:()=>Rm(e),enabled:n&&!!e}),d=F(()=>[...c,...l],[c,l]),f=F(()=>Hm(d,i,e),[d,i,e]);se(()=>{s(0)},[i]);let p=oe(()=>{r(!0),a(``),s(0)},[]),m=oe(()=>{r(!1),a(``)},[]);return{pickerOpen:n,pickerQuery:i,pickerIndex:o,filteredOptions:f,localOptions:c,remoteLoading:u,openPicker:p,closePicker:m,handleContextSelect:oe(e=>{t(e),m()},[t,m]),setPickerQuery:a,setPickerIndex:s,createInputChangeHandler:(e,t)=>r=>{let i=Ot(r),o=e.current;if(i.length>o.length&&i[i.length-1]===`@`&&(o.length===0||i[i.length-2]===` `)){t(i.slice(0,-1)),p();return}if(n){i.length-o.length<0?(m(),t(i)):a(e=>{let n=i.slice(o.length);return n.includes(` `)?(m(),t(i),``):e+n});return}t(i)}}},pb=e=>{let t=new Set;return e.filter(e=>t.has(e.path)?!1:(t.add(e.path),!0))},mb=e=>N({queryKey:[`test-coverage`,e?.fingerprint],queryFn:async()=>{if(!e?.isGitRepo||!e.hasChangesFromMain&&!e.hasUnstagedChanges)return;let t=e.mainBranch??`main`,n=await u.runPromiseExit(u.gen(function*(){let e=yield*Xp,n=yield*Pm,r=yield*e.getChangedFiles(gn.makeUnsafe({_tag:`WorkingTree`})),i=yield*e.getChangedFiles(gn.makeUnsafe({_tag:`Changes`,mainBranch:t})),a=pb([...r,...i]);if(a.length!==0)return yield*n.analyze(a)}).pipe(u.provide(Xp.withRepoRoot(process.cwd())),u.provide(Pm.layer),u.timeoutOrElse({duration:15e3,onTimeout:()=>u.succeed(void 0)}),u.provide(be.layer)));if(d.isSuccess(n))return n.value},enabled:!!(e?.isGitRepo&&(e.hasChangesFromMain||e.hasUnstagedChanges)),staleTime:3e4}),hb=[`Test the main user flow end to end`,`Smoke test the homepage and key pages`,`Check authentication and protected routes`],gb=[`Verify my recent changes work as expected`,`Check for regressions in related features`,`Test the main user flow end to end`],_b=[`Test the changes on this branch`,`Smoke test this branch end to end`,`Check for regressions on this branch`],vb=[`Test the changes in this pull request`,`Check for regressions introduced by this PR`,`Verify the PR works end to end`],yb=[`Test the changes from this commit`,`Check if this commit introduces regressions`,`Verify this commit works as expected`],bb=(e,t)=>{if(!e)return hb;switch(e._tag){case`WorkingTree`:return gb;case`Branch`:return _b;case`PullRequest`:return vb;case`Commit`:return yb;default:return hb}},xb=e=>e>=70?Nt.GREEN:e>=40?Nt.YELLOW:Nt.RED,Sb=e=>e>=70?`#0a2b0a`:e>=40?`#332b00`:`#331510`,Cb=e=>`Use Expect to test your changes.`,wb=e=>{let t=Math.round(e/100*10),n=10-t;return{filled:`█`.repeat(t),empty:`░`.repeat(n)}},Tb=({gitState:e})=>{let t=Pt(),[n]=jt(),r=Z_(e=>e.instructionHistory),i=Zm(e=>e.setScreen),[a,o]=L(void 0),[s,c]=L(``),[l,u]=L(0),[d,f]=L(0),[p,m]=L(!1),[h,g]=L(void 0),[_,v]=L(-1),[y,b]=L(``),x=cv(e=>e.cookiesEnabled),S=cv(e=>e.toggleCookies),{data:C}=mb(e),w=()=>{if(r.length===0)return;let e=_+1;e>=r.length||(_===-1&&b(s),v(e),c(r[e]),u(e=>e+1))},ee=()=>{if(_<=-1)return;let e=_-1;v(e),c(e===-1?y:r[e]),u(e=>e+1)},T=fb({gitState:e??null,onSelect:e=>{o(e),$_(`context:selected`,{context_type:{WorkingTree:`working_tree`,Branch:`branch`,PullRequest:`pull_request`,Commit:`commit`}[e._tag]})}}),D=T.localOptions.find(e=>e._tag===`WorkingTree`)??void 0,k=a??D??null,A=bb(k,e??null);se(()=>{f(0)},[k,e]);let ne=t=>{let n=(t??s).trim();if(!n){g(`Describe what you want the browser agent to test.`);return}if(!e)return;let r=e.mainBranch??`main`,a;k?._tag===`Commit`?a=gn.makeUnsafe({_tag:`Commit`,hash:k.hash}):k?._tag===`Branch`||k?._tag===`PullRequest`?(k.branch.name&&(dm(process.cwd(),k.branch.name),Qm.invalidateQueries({queryKey:[`git-state`]})),a=gn.makeUnsafe({_tag:`Branch`,mainBranch:r})):a=gn.makeUnsafe({_tag:`Changes`,mainBranch:r}),Z_.getState().rememberInstruction(n),x||Jm(n)?i(Xm({changesFor:a,instruction:n,requiresCookies:x})):i(Ym.CookieSyncConfirm({changesFor:a,instruction:n}))},re=I(s);re.current=s;let j=T.createInputChangeHandler(re,e=>{c(e),h&&g(void 0)}),M=!s.includes(`
|
|
43
|
-
`),N=s===``&&!T.pickerOpen&&A.length>0,ie=N&&!p&&n>=80,ae=A[d%A.length];return te((e,t)=>{if(T.pickerOpen){if(t.escape){T.closePicker();return}if(t.downArrow||t.ctrl&&e===`n`){T.setPickerIndex(Math.min(T.filteredOptions.length-1,T.pickerIndex+1));return}if(t.upArrow||t.ctrl&&e===`p`){T.setPickerIndex(Math.max(0,T.pickerIndex-1));return}if(t.return||t.tab){let e=T.filteredOptions[T.pickerIndex];e&&T.handleContextSelect(e);return}if(t.backspace||t.delete){T.pickerQuery.length===0?T.closePicker():T.setPickerQuery(T.pickerQuery.slice(0,-1));return}e&&!t.ctrl&&!t.meta&&T.setPickerQuery(T.pickerQuery+e);return}if(M&&t.upArrow){w();return}if(M&&t.downArrow){ee();return}if(t.ctrl&&e===`k`){S(),$_(`cookies:toggled`,{enabled:!x});return}if(t.tab&&!t.shift&&N&&ae){c(ae),u(e=>e+1),$_(`suggestion:accepted`);return}if(!(t.tab&&t.shift)&&N){if(t.rightArrow){f(e=>(e+1)%A.length),m(!0);return}if(t.leftArrow){f(e=>(e-1+A.length)%A.length),m(!0);return}}},{isActive:!0}),H(E,{flexDirection:`column`,width:`100%`,paddingY:1,children:[V(E,{flexDirection:`column`,marginBottom:1,paddingX:1,children:V(nv,{})}),(e?.hasUntestedChanges||C&&C.totalCount>0)&&!(C&&C.totalCount>0&&C.percent>=90)&&H(E,{paddingX:1,paddingY:1,marginBottom:1,backgroundColor:C&&C.totalCount>0?Sb(C.percent):t.BANNER_BG,width:`100%`,flexDirection:`column`,gap:0,children:[(()=>{if(C&&C.totalCount>0)return H(E,{children:[H(O,{color:xb(C.percent),bold:!0,children:[U.warning,` Untested changes`]}),V(O,{children:` `}),V(O,{color:xb(C.percent),children:wb(C.percent).filled}),V(O,{color:t.DIM,children:wb(C.percent).empty}),H(O,{color:xb(C.percent),children:[` `,C.percent,`% test coverage`]})]});if(!e)return null;let n=e.workingTreeFileStats,r=n.reduce((e,t)=>e+t.added,0),i=n.reduce((e,t)=>e+t.removed,0);return H(E,{children:[H(O,{color:t.YELLOW,bold:!0,children:[U.warning,` Untested changes detected`]}),n.length>0&&H(ue,{children:[H(O,{color:t.DIM,children:[` `,n.length,` file`,n.length===1?``:`s`,` `]}),r>0&&H(O,{color:t.GREEN,children:[`+`,r]}),r>0&&i>0&&V(O,{color:t.DIM,children:` `}),i>0&&H(O,{color:t.RED,children:[`-`,i]})]})]})})(),V(O,{color:t.DIM,children:C&&C.totalCount>0?Cb(C.percent):`Describe what to test and hit enter to verify your changes.`})]}),H(E,{flexDirection:`column`,width:`100%`,children:[H(E,{paddingX:1,children:[!e&&V(Wm,{message:`loading context`}),e&&e.isGitRepo&&k&&V(Lt,{fullWidth:!1,onClick:()=>{T.pickerOpen?T.closePicker():T.openPicker()},children:H(O,{color:t.DIM,children:[U.bullet,` `,H(O,{color:t.PRIMARY,children:[`@`,Vm(k,e)]}),Bm(k,e)&&` (${Bm(k,e)})`]})})]}),V(Lt,{children:V(E,{flexDirection:`column`,marginTop:1,backgroundColor:t.INPUT_BG,width:`100%`,paddingX:1,paddingY:1,children:H(E,{children:[V(O,{color:t.PRIMARY,children:`❯ `}),V(E,{flexGrow:1,children:V(Ut,{focus:!T.pickerOpen,multiline:!0,placeholder:ae?`${ae} [tab]`:``,value:s,onSubmit:ne,onUpArrowAtTop:M?void 0:w,onDownArrowAtBottom:M?void 0:ee,onChange:j},l)}),ie?V(O,{color:t.DIM,children:` ←→ cycle test suggestions`}):null]})})}),e?.isGitRepo&&T.pickerOpen&&H(Ft,{color:t.BORDER,children:[H(E,{marginBottom:0,children:[V(O,{color:t.DIM,children:`@ `}),V(O,{color:t.PRIMARY,children:T.pickerQuery}),V(O,{color:t.DIM,children:T.pickerQuery?``:`type to filter`})]}),V(db,{options:T.filteredOptions,selectedIndex:T.pickerIndex,isLoading:T.remoteLoading,gitState:e})]}),e?.isGitRepo&&!T.pickerOpen&&V(E,{marginTop:1,paddingX:1,children:H(O,{color:t.DIM,children:[V(O,{color:t.PRIMARY,children:`@`}),` add context`]})})]}),V(Qv,{message:h})]})},Eb=e=>{let t=ie(10);if(t[0]!==`e8c3ad7624de558f1292f5717cd6dbce82fb6c0767dc4ab19348dc7a7975d8f5`){for(let e=0;e<10;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e8c3ad7624de558f1292f5717cd6dbce82fb6c0767dc4ab19348dc7a7975d8f5`}let{segment:n,mutedColor:r}=e,i=n.color??r,a;t[1]!==n.label||t[2]!==i?(a=H(O,{color:i,children:[n.label,` `]}),t[1]=n.label,t[2]=i,t[3]=a):a=t[3];let o=n.color??r,s;t[4]!==n.key||t[5]!==o?(s=H(O,{color:o,children:[`[`,n.key,`]`]}),t[4]=n.key,t[5]=o,t[6]=s):s=t[6];let c;return t[7]!==a||t[8]!==s?(c=H(ue,{children:[a,s]}),t[7]=a,t[8]=s,t[9]=c):c=t[9],c},Db=e=>{let t=ie(12);if(t[0]!==`e8c3ad7624de558f1292f5717cd6dbce82fb6c0767dc4ab19348dc7a7975d8f5`){for(let e=0;e<12;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e8c3ad7624de558f1292f5717cd6dbce82fb6c0767dc4ab19348dc7a7975d8f5`}let{segments:n,color:r,mutedColor:i}=e,a;t[1]===r?a=t[2]:(a=V(O,{color:r,children:` `}),t[1]=r,t[2]=a);let o;if(t[3]!==i||t[4]!==n){let e;t[6]!==i||t[7]!==n.length?(e=(e,t)=>H(E,{children:[e.onClick?V(Lt,{fullWidth:!1,onClick:e.onClick,children:V(Eb,{segment:e,mutedColor:i})}):V(Eb,{segment:e,mutedColor:i}),t<n.length-1&&V(O,{color:i,children:` `})]},e.key+e.label),t[6]=i,t[7]=n.length,t[8]=e):e=t[8],o=n.map(e),t[3]=i,t[4]=n,t[5]=o}else o=t[5];let s;return t[9]!==a||t[10]!==o?(s=H(E,{children:[a,o]}),t[9]=a,t[10]=o,t[11]=s):s=t[11],s},Ob=S.Struct({version:S.String}),kb=(e,t)=>{let n=e.split(`.`).map(Number),r=t.split(`.`).map(Number);for(let e=0;e<3;e++){if((n[e]??0)>(r[e]??0))return!0;if((n[e]??0)<(r[e]??0))return!1}return!1},Ab=u.gen(function*(){let e=yield*u.tryPromise({try:()=>fetch(`https://registry.npmjs.org/${bt}/latest`).then(e=>e.json()),catch:e=>Error(`npm registry fetch failed: ${e}`)});return(yield*u.try({try:()=>S.decodeUnknownSync(Ob)(e),catch:e=>Error(`npm response decode failed: ${e}`)})).version}).pipe(u.timeoutOrElse({duration:5e3,onTimeout:()=>u.succeed(void 0)})),jb=()=>{let{data:e}=N({queryKey:[`update-check`],queryFn:async()=>{let e=await u.runPromiseExit(Ab);if(d.isSuccess(e))return e.value},staleTime:36e5,retry:!1,refetchOnWindowFocus:!1});return{latestVersion:e,updateAvailable:e!==void 0&&kb(e,`0.0.12`)}},Mb=(e,t)=>{let n=ie(87);if(n[0]!==`0545e7691866a2045c1228f27b801065cf39232a2a018c782c9ae2928aa6e0a5`){for(let e=0;e<87;e+=1)n[e]=Symbol.for(`react.memo_cache_sentinel`);n[0]=`0545e7691866a2045c1228f27b801065cf39232a2a018c782c9ae2928aa6e0a5`}let r=Pt(),i=Zm(Fb),a=cv(Ib),o=cv(Lb),s=Z_(Rb),c=Z_(zb),l=Nv(Bb);switch(e._tag){case`Main`:{let e=a?`cookies on`:`cookies off`,r;n[1]!==e||n[2]!==o?(r={key:`ctrl+k`,label:e,cta:!0,onClick:o},n[1]=e,n[2]=o,n[3]=r):r=n[3];let s;n[4]===i?s=n[5]:(s={key:`ctrl+r`,label:`saved flows`,cta:!0,onClick:()=>i(Ym.SavedFlowPicker())},n[4]=i,n[5]=s);let c;if(n[6]!==t?.isGitRepo||n[7]!==i||n[8]!==r||n[9]!==s){if(c=[r,s],t?.isGitRepo){let e;n[11]===i?e=n[12]:(e={key:`ctrl+p`,label:`pick pr`,cta:!0,onClick:()=>i(Ym.SelectPr())},n[11]=i,n[12]=e),c.push(e)}n[6]=t?.isGitRepo,n[7]=i,n[8]=r,n[9]=s,n[10]=c}else c=n[10];return c}case`SelectPr`:{let e,t,a;n[13]===Symbol.for(`react.memo_cache_sentinel`)?(e={key:`↑↓`,label:`nav`},t={key:`←→`,label:`filter`},a={key:`/`,label:`search`},n[13]=e,n[14]=t,n[15]=a):(e=n[13],t=n[14],a=n[15]);let o;n[16]===i?o=n[17]:(o={key:`esc`,label:`back`,cta:!0,onClick:()=>i(Ym.Main())},n[16]=i,n[17]=o);let s;n[18]===r.PRIMARY?s=n[19]:(s={key:`enter`,label:`select`,color:r.PRIMARY,cta:!0},n[18]=r.PRIMARY,n[19]=s);let c;return n[20]!==o||n[21]!==s?(c=[e,t,a,o,s],n[20]=o,n[21]=s,n[22]=c):c=n[22],c}case`SavedFlowPicker`:{let e;n[23]===Symbol.for(`react.memo_cache_sentinel`)?(e={key:`↑↓`,label:`nav`},n[23]=e):e=n[23];let t;n[24]===i?t=n[25]:(t={key:`esc`,label:`back`,cta:!0,onClick:()=>i(Ym.Main())},n[24]=i,n[25]=t);let a;n[26]===r.PRIMARY?a=n[27]:(a={key:`enter`,label:`select`,color:r.PRIMARY,cta:!0},n[26]=r.PRIMARY,n[27]=a);let o;return n[28]!==t||n[29]!==a?(o=[e,t,a],n[28]=t,n[29]=a,n[30]=o):o=n[30],o}case`CookieSyncConfirm`:{let t;n[31]===Symbol.for(`react.memo_cache_sentinel`)?(t={key:`↑↓`,label:`nav`},n[31]=t):t=n[31];let a;n[32]===i?a=n[33]:(a={key:`esc`,label:`back`,onClick:()=>i(Ym.Main())},n[32]=i,n[33]=a);let o;n[34]!==e.changesFor||n[35]!==e.instruction||n[36]!==e.savedFlow||n[37]!==i?(o={key:`c`,label:`enable sync`,cta:!0,onClick:()=>{i(Xm({changesFor:e.changesFor,instruction:e.instruction,savedFlow:e.savedFlow,requiresCookies:!0}))}},n[34]=e.changesFor,n[35]=e.instruction,n[36]=e.savedFlow,n[37]=i,n[38]=o):o=n[38];let s;n[39]!==e.changesFor||n[40]!==e.instruction||n[41]!==e.savedFlow||n[42]!==i?(s=()=>{i(Xm({changesFor:e.changesFor,instruction:e.instruction,savedFlow:e.savedFlow,requiresCookies:!1}))},n[39]=e.changesFor,n[40]=e.instruction,n[41]=e.savedFlow,n[42]=i,n[43]=s):s=n[43];let c;n[44]!==r.PRIMARY||n[45]!==s?(c={key:`a`,label:`run anyway`,color:r.PRIMARY,cta:!0,onClick:s},n[44]=r.PRIMARY,n[45]=s,n[46]=c):c=n[46];let l;return n[47]!==a||n[48]!==o||n[49]!==c?(l=[t,a,o,c],n[47]=a,n[48]=o,n[49]=c,n[50]=l):l=n[50],l}case`PortPicker`:{let e,t,a;n[51]===Symbol.for(`react.memo_cache_sentinel`)?(e={key:`↑↓`,label:`nav`},t={key:`space`,label:`toggle`},a={key:`/`,label:`custom port`},n[51]=e,n[52]=t,n[53]=a):(e=n[51],t=n[52],a=n[53]);let o;n[54]===i?o=n[55]:(o={key:`esc`,label:`back`,cta:!0,onClick:()=>i(Ym.Main())},n[54]=i,n[55]=o);let s;n[56]===r.PRIMARY?s=n[57]:(s={key:`enter`,label:`confirm`,color:r.PRIMARY,cta:!0},n[56]=r.PRIMARY,n[57]=s);let c;return n[58]!==o||n[59]!==s?(c=[e,t,a,o,s],n[58]=o,n[59]=s,n[60]=c):c=n[60],c}case`Testing`:{let e=s===!0?`notify on`:`notify off`,t=l?`collapse`:`expand`,r;n[61]!==e||n[62]!==c?(r={key:`ctrl+n`,label:e,cta:!0,onClick:c},n[61]=e,n[62]=c,n[63]=r):r=n[63];let i;n[64]===t?i=n[65]:(i={key:`ctrl+o`,label:t,cta:!0},n[64]=t,n[65]=i);let a=l?`collapse`:`cancel`,o;n[66]===a?o=n[67]:(o={key:`esc`,label:a},n[66]=a,n[67]=o);let u;return n[68]!==r||n[69]!==i||n[70]!==o?(u=[r,i,o],n[68]=r,n[69]=i,n[70]=o,n[71]=u):u=n[71],u}case`Results`:{let t;n[72]===Symbol.for(`react.memo_cache_sentinel`)?(t={key:`y`,label:`copy`,cta:!0},n[72]=t):t=n[72];let r;if(n[73]!==e.report.changesFor||n[74]!==e.report.instruction||n[75]!==e.report.pullRequest||n[76]!==i){if(r=[t],_.isSome(e.report.pullRequest)){let e;n[78]===Symbol.for(`react.memo_cache_sentinel`)?(e={key:`p`,label:`post to PR`,cta:!0},n[78]=e):e=n[78],r.push(e)}let a;n[79]===Symbol.for(`react.memo_cache_sentinel`)?(a={key:`s`,label:`save flow`,cta:!0},n[79]=a):a=n[79],r.push(a);let o;n[80]!==e.report.changesFor||n[81]!==e.report.instruction||n[82]!==i?(o={key:`r`,label:`restart`,cta:!0,onClick:()=>{Nv.getState().setExecutedPlan(void 0),i(Xm({changesFor:e.report.changesFor,instruction:e.report.instruction}))}},n[80]=e.report.changesFor,n[81]=e.report.instruction,n[82]=i,n[83]=o):o=n[83],r.push(o);let s;n[84]===i?s=n[85]:(s={key:`esc`,label:`main menu`,cta:!0,onClick:()=>{Nv.getState().setExecutedPlan(void 0),i(Ym.Main())}},n[84]=i,n[85]=s),r.push(s),n[73]=e.report.changesFor,n[74]=e.report.instruction,n[75]=e.report.pullRequest,n[76]=i,n[77]=r}else r=n[77];return r}default:{let e;return n[86]===Symbol.for(`react.memo_cache_sentinel`)?(e=[],n[86]=e):e=n[86],e}}},Nb=e=>e.length>0?` ${e.map(e=>`${e.label} [${e.key}]`).join(` `)}`:``,Pb=()=>{let e=ie(34);if(e[0]!==`0545e7691866a2045c1228f27b801065cf39232a2a018c782c9ae2928aa6e0a5`){for(let t=0;t<34;t+=1)e[t]=Symbol.for(`react.memo_cache_sentinel`);e[0]=`0545e7691866a2045c1228f27b801065cf39232a2a018c782c9ae2928aa6e0a5`}let[t]=jt(),{data:n}=ab(),r=Zm(Vb),{latestVersion:i,updateAvailable:a}=jb(),o=Mb(r,n),s,c,l,u,d,f,p,m;if(e[1]!==o||e[2]!==t||e[3]!==i||e[4]!==r._tag||e[5]!==a){let n=a?[...o,{key:`ctrl+u`,label:`v${i} available`,cta:!0,color:J.warning}]:o;u=n.filter(Hb);let h=ze(Nb(u)),g=Wb,_=n.filter(Gb),v=g(_)+h+2>t?_.filter(Kb):_,y=g(v);l=Math.max(0,t-y-h-2),c=E,p=`column`,e[14]!==t||e[15]!==r._tag?(m=r._tag===`Testing`?V(Mv,{text:`─`.repeat(t),baseColor:J.shimmerBase,highlightColor:J.shimmerHighlight,speed:3}):V(O,{color:J.border,children:`─`.repeat(t)}),e[14]=t,e[15]=r._tag,e[16]=m):m=e[16],s=E,d=1,f=v.map(qb),e[1]=o,e[2]=t,e[3]=i,e[4]=r._tag,e[5]=a,e[6]=s,e[7]=c,e[8]=l,e[9]=u,e[10]=d,e[11]=f,e[12]=p,e[13]=m}else s=e[6],c=e[7],l=e[8],u=e[9],d=e[10],f=e[11],p=e[12],m=e[13];let h;e[17]===l?h=e[18]:(h=` `.repeat(l),e[17]=l,e[18]=h);let g;e[19]===h?g=e[20]:(g=V(O,{children:h}),e[19]=h,e[20]=g);let _;e[21]===u?_=e[22]:(_=u.length>0?V(Db,{segments:u,color:J.primary,mutedColor:J.textMuted}):null,e[21]=u,e[22]=_);let v;e[23]!==s||e[24]!==d||e[25]!==f||e[26]!==g||e[27]!==_?(v=H(s,{paddingX:d,children:[f,g,_]}),e[23]=s,e[24]=d,e[25]=f,e[26]=g,e[27]=_,e[28]=v):v=e[28];let y;return e[29]!==c||e[30]!==p||e[31]!==m||e[32]!==v?(y=H(c,{flexDirection:p,children:[m,v]}),e[29]=c,e[30]=p,e[31]=m,e[32]=v,e[33]=y):y=e[33],y};function Fb(e){return e.setScreen}function Ib(e){return e.cookiesEnabled}function Lb(e){return e.toggleCookies}function Rb(e){return e.notifications}function zb(e){return e.toggleNotifications}function Bb(e){return e.expanded}function Vb(e){return e.screen}function Hb(e){return!e.cta}function Ub(e){return e.color?` ${e.label} [${e.key}] `:`${e.label} [${e.key}]`}function Wb(e){return ze(e.map(Ub).join(` `))}function Gb(e){return e.cta}function Kb(e){return e.key!==`ctrl+p`}function qb(e,t){let n=H(O,{children:[t>0?` `:``,e.color?H(O,{backgroundColor:e.color,color:`black`,children:[` `,V(O,{bold:!0,children:e.label}),` `,H(O,{children:[`[`,e.key,`]`]}),` `]}):H(O,{children:[H(O,{color:J.textMuted,children:[e.label,` `]}),H(O,{color:J.textMuted,children:[`[`,e.key,`]`]})]})]},e.key+e.label);return e.onClick?V(Lt,{onClick:e.onClick,fullWidth:!1,children:n},e.key+e.label):n}let Jb=null;const Yb=e=>{Jb=e},Xb=()=>Jb?.clear(),Zb=e=>{let t=ie(34);if(t[0]!==`e6ac87aa0f631766a38fac7cfbcee5d6c83ce6fd1edd967a6457097df0e89416`){for(let e=0;e<34;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e6ac87aa0f631766a38fac7cfbcee5d6c83ce6fd1edd967a6457097df0e89416`}let{agent:n}=e,r=Zm(Qb),i=Zm($b),a=Zm(ex),{data:o}=ab(),s=at(ey),c,l;t[1]!==n||t[2]!==s?(c=()=>{s(_.some(n))},l=[n,s],t[1]=n,t[2]=s,t[3]=c,t[4]=l):(c=t[3],l=t[4]),se(c,l);let u;t[5]!==r._tag||t[6]!==i?(u=()=>{if(r._tag===`CookieSyncConfirm`){i(Ym.Main());return}if(r._tag===`PortPicker`){i(Ym.Main());return}if(r._tag===`Results`){Nv.getState().setExecutedPlan(void 0),i(Ym.Main());return}r._tag!==`Testing`&&i(Ym.Main())},t[5]=r._tag,t[6]=i,t[7]=u):u=t[7];let d=u,{updateAvailable:f}=jb(),{exit:p}=A(),[,m]=L(0),[,h]=jt(),g;t[8]!==p||t[9]!==o?.isGitRepo||t[10]!==d||t[11]!==a||t[12]!==r._tag||t[13]!==m||t[14]!==f?(g=(e,t)=>{if(t.ctrl&&e===`l`){Xb(),m(tx);return}if(t.ctrl&&e===`u`&&f){p(),process.stdout.write(_t),B(`npm`,[`install`,`-g`,`${bt}@latest`],{stdio:`inherit`});return}t.escape&&r._tag!==`Main`&&d(),t.ctrl&&e===`p`&&r._tag===`Main`&&o?.isGitRepo&&a(Ym.SelectPr()),t.ctrl&&e===`r`&&r._tag===`Main`&&a(Ym.SavedFlowPicker())},t[8]=p,t[9]=o?.isGitRepo,t[10]=d,t[11]=a,t[12]=r._tag,t[13]=m,t[14]=f,t[15]=g):g=t[15],te(g);let v;t[16]!==o||t[17]!==r._tag||t[18]!==r.baseUrls||t[19]!==r.changesFor||t[20]!==r.instruction||t[21]!==r.localReplayUrl||t[22]!==r.replayUrl||t[23]!==r.report||t[24]!==r.requiresCookies||t[25]!==r.savedFlow||t[26]!==r.videoUrl?(v=()=>{if(!o)return V(Tb,{gitState:void 0});switch(r._tag){case`PortPicker`:return V(bv,{changesFor:r.changesFor,instruction:r.instruction,savedFlow:r.savedFlow,requiresCookies:r.requiresCookies});case`Testing`:return V(My,{changesFor:r.changesFor,instruction:r.instruction,savedFlow:r.savedFlow,requiresCookies:r.requiresCookies,baseUrls:r.baseUrls});case`Results`:return V($y,{report:r.report,replayUrl:r.replayUrl,localReplayUrl:r.localReplayUrl,videoUrl:r.videoUrl});case`SelectPr`:return V(eh,{});case`CookieSyncConfirm`:return V(iv,{changesFor:r.changesFor,instruction:r.instruction,savedFlow:r.savedFlow});case`SavedFlowPicker`:return V(cb,{});default:return V(Tb,{gitState:o})}},t[16]=o,t[17]=r._tag,t[18]=r.baseUrls,t[19]=r.changesFor,t[20]=r.instruction,t[21]=r.localReplayUrl,t[22]=r.replayUrl,t[23]=r.report,t[24]=r.requiresCookies,t[25]=r.savedFlow,t[26]=r.videoUrl,t[27]=v):v=t[27];let y=v,b;t[28]===y?b=t[29]:(b=V(E,{flexGrow:1,children:y()}),t[28]=y,t[29]=b);let x;t[30]===Symbol.for(`react.memo_cache_sentinel`)?(x=V(Pb,{}),t[30]=x):x=t[30];let S;return t[31]!==h||t[32]!==b?(S=V(Tt,{children:H(E,{flexDirection:`column`,width:`100%`,height:h,children:[b,x]})}),t[31]=h,t[32]=b,t[33]=S):S=t[33],S};function Qb(e){return e.screen}function $b(e){return e.setScreen}function ex(e){return e.navigateTo}function tx(e){return e+1}const nx=()=>{let e=je();return e===`darwin`?`afplay /System/Library/Sounds/Glass.aiff`:e===`win32`?`powershell -c (New-Object Media.SoundPlayer 'C:\\Windows\\Media\\chimes.wav').PlaySync()`:`paplay /usr/share/sounds/freedesktop/stereo/complete.oga 2>/dev/null || aplay /usr/share/sounds/freedesktop/stereo/complete.oga 2>/dev/null`},rx=()=>new Promise(e=>{z(nx(),()=>e())});var ix=class extends S.ErrorClass(`ExecutionTimeoutError`)({_tag:S.tag(`ExecutionTimeoutError`),timeoutMs:S.Number}){message=`expect execution timed out after ${this.timeoutMs}ms`};const ax=e=>`[${((Date.now()-e)/1e3).toFixed(1)}s]`,ox=e=>e.replace(/\r?\n/g,` `).replace(/::/g,`: :`),sx=e=>u.runPromise(ny(u.gen(function*(){let t=yield*Qp,n=yield*$p,r=yield*J_,i=Date.now();yield*r.capture(`session:started`,{mode:`headless`,skip_planning:!1,browser_headed:e.headed});let a=(yield*c.string(`GITHUB_ACTIONS`).pipe(c.withDefault(``)))!==``,o=e.ci?` [CI mode]`:``;console.log(`expect v${gt}${o}`),_.isSome(e.timeoutMs)&&console.log(`Timeout: ${e.timeoutMs.value}ms`),console.log(`Agent: ${e.agent}`),console.log(`Target: ${_n(e.changesFor)}`),console.log(`Starting browser test...`),a&&console.log(`::group::expect test execution`);let s=Date.now(),l=Date.now(),d=e.ci?setInterval(()=>{let e=Date.now();if(e-l>=6e4){let t=Math.floor((e-s)/6e4);console.log(`${ax(s)} Still running... (${t} minute${t===1?``:`s`} elapsed)`),l=e}},6e4):void 0;yield*r.capture(`run:started`,{plan_id:`direct`});let f=new Set,p=e=>{for(let t of e.events){if(f.has(t.id))continue;f.add(t.id),l=Date.now();let e=ax(s);switch(t._tag){case`RunStarted`:console.log(`${e} Starting ${t.plan.title}`);break;case`StepStarted`:console.log(`${e} ${U.arrowRight} ${t.stepId} ${t.title}`);break;case`StepCompleted`:console.log(`${e} ${U.tick} ${t.stepId} ${t.summary}`);break;case`StepFailed`:console.log(`${e} ${U.cross} ${t.stepId} ${t.message}`),a&&console.log(`::error title=${ox(t.stepId)} failed::${ox(t.message)}`);break;case`StepSkipped`:console.log(`${e} ${U.arrowRight} ${t.stepId} [skipped] ${t.reason}`);break}}},m=t.execute({changesFor:e.changesFor,instruction:e.instruction,isHeadless:!e.headed,requiresCookies:!1}).pipe(w.tap(e=>u.sync(()=>p(e))),w.runLast,u.map(t=>(t._tag===`Some`?t.value:new Qn({id:``,changesFor:e.changesFor,currentBranch:``,diffPreview:``,fileStats:[],instruction:e.instruction,baseUrl:void 0,isHeadless:!e.headed,requiresCookies:!1,testCoverage:_.none(),title:e.instruction,rationale:`Direct execution`,steps:[],events:[]})).finalizeTextBlock())),h=_.getOrUndefined(e.timeoutMs),g=yield*(h===void 0?m:m.pipe(u.timeoutOrElse({duration:`${h} millis`,onTimeout:()=>u.fail(new ix({timeoutMs:h}))}))).pipe(u.tapError(()=>u.sync(()=>{d&&clearInterval(d),a&&console.log(`::endgroup::`)})),u.catchTag(`ExecutionTimeoutError`,e=>u.sync(()=>{a&&console.log(`::error title=Execution timed out::${ox(e.message)}`),console.error(`\n${e.message}`),process.exit(1)})));d&&clearInterval(d),p(g),a&&console.log(`::endgroup::`);let v=yield*n.report(g),y=v.steps.filter(e=>v.stepStatuses.get(e.id)?.status===`passed`).length,b=v.steps.filter(e=>v.stepStatuses.get(e.id)?.status===`failed`).length;yield*r.capture(`run:completed`,{plan_id:g.id??`direct`,passed:y,failed:b,step_count:g.steps.length,file_count:0,duration_ms:Date.now()-s}),yield*r.capture(`session:ended`,{session_ms:Date.now()-i}),yield*r.flush;let x=v.toPlainText;console.error(`\n${x}`);let S=yield*c.option(c.string(`GITHUB_STEP_SUMMARY`));if(_.isSome(S)){let e=`## expect test results\n\n${v.status===`passed`?`**Result: PASSED**`:`**Result: FAILED**`}\n\n\`\`\`\n${x}\n\`\`\`\n`;yield*u.sync(()=>qe(S.value,e))}yield*u.promise(()=>rx()),process.exit(v.status===`passed`?0:1)}).pipe(u.provide($v({verbose:e.verbose,agent:e.agent}))))),cx={error:W.red,warn:W.yellow,info:W.cyan,success:W.green,dim:W.dim},$={error:(...e)=>{console.log(cx.error(e.join(` `)))},warn:(...e)=>{console.log(cx.warn(e.join(` `)))},info:(...e)=>{console.log(cx.info(e.join(` `)))},success:(...e)=>{console.log(cx.success(e.join(` `)))},dim:(...e)=>{console.log(cx.dim(e.join(` `)))},log:(...e)=>{console.log(e.join(` `))},break:()=>{console.log(``)}},lx=()=>{$.break(),$.log(`Cancelled.`),$.break(),process.exit(0)},ux=e=>mt(e,{onCancel:lx}),dx=(e,t)=>ht({text:e,isSilent:t?.silent}),fx=[`CI`,`CLAUDECODE`,`CURSOR_AGENT`,`CODEX_CI`,`OPENCODE`,`AMP_HOME`,`AMI`],px=()=>fx.some(e=>!!process.env[e]),mx=()=>!process.stdin.isTTY,hx={npm:`npm install -g expect-cli@latest`,pnpm:`pnpm add -g expect-cli@latest`,yarn:`yarn global add expect-cli@latest`,bun:`bun add -g expect-cli@latest`,vp:`vp install -g expect-cli@latest`},gx={npm:`npx -y skills add https://github.com/millionco/expect --skill expect -y`,pnpm:`pnpm dlx skills add https://github.com/millionco/expect --skill expect -y`,yarn:`npx -y skills add https://github.com/millionco/expect --skill expect -y`,bun:`bunx skills add https://github.com/millionco/expect --skill expect -y`,vp:`npx -y skills add https://github.com/millionco/expect --skill expect -y`},_x=()=>{if(process.env.VITE_PLUS_CLI_BIN)return`vp`;let e=process.env.npm_config_user_agent;if(e){if(e.startsWith(`pnpm`))return`pnpm`;if(e.startsWith(`yarn`))return`yarn`;if(e.startsWith(`bun`))return`bun`;if(e.startsWith(`npm`))return`npm`}return`npm`},vx=e=>e||px()||mx(),yx=e=>new Promise(t=>{z(e,{timeout:1e4},e=>{t(!e)}).stdin?.end()}),bx=async(e={})=>{let t=vx(e.yes??!1),n=_x(),r=hx[n];$.break(),$.log(` ${W.red(U.cross)}${W.green(U.tick)} ${W.bold(`Expect`)} ${cx.dim(`v${gt}`)}`),$.dim(` Let agents test your code in a real browser.`),$.break(),Ya().length===0&&($.error(`No supported coding agent found. expect requires one of: Claude Code, Codex, or Cursor.`),$.break(),$.log(` Install one to get started:`),$.log(` ${cx.info(`Claude Code`)} ${cx.dim(`https://docs.anthropic.com/en/docs/claude-code`)}`),$.log(` ${cx.info(`Codex`)} ${cx.dim(`https://github.com/openai/codex`)}`),$.log(` ${cx.info(`Cursor`)} ${cx.dim(`https://cursor.com`)}`),$.break(),process.exit(1));let i=dx(`Installing expect-cli globally...`).start();await yx(r)?i.succeed(`Installed! ${cx.info(`expect-cli`)} is now available globally.`):(i.fail(`Failed to install globally.`),$.dim(` Run manually: ${cx.info(r)}`)),$.break();let a=t;if(t||(a=(await ux({type:`confirm`,name:`installSkill`,message:`Install the ${cx.info(`expect`)} skill for your coding agent?`,initial:!0})).installSkill),a){let e=gx[n],t=dx(`Installing skill...`).start();await yx(e)?t.succeed(`Skill installed.`):(t.fail(`Failed to install skill.`),$.dim(` Run manually: ${cx.info(e)}`))}$.break(),$.success(`Setup complete! Here's how to get started:`),$.break(),$.log(` 1. ${cx.info(`cd`)} into your project directory`),$.log(` 2. Start your dev server (e.g. ${cx.dim(`npm run dev`)})`),$.log(` 3. Run ${cx.info(`expect-cli`)} to open the interactive test runner`),$.break(),$.log(` Or run headlessly from your coding agent:`),$.break(),$.log(` ${cx.dim(`$`)} ${cx.info(`expect-cli -m "test the login flow" -y`)}`),$.break(),$.log(` Set ${cx.info(`EXPECT_BASE_URL`)} if your app is not on localhost:3000:`),$.break(),$.log(` ${cx.dim(`$`)} ${cx.info(`EXPECT_BASE_URL=http://localhost:5173 expect-cli -m "test the homepage" -y`)}`),$.break()},xx=[`packages/*`,`apps/*`],Sx=e=>yt.some(t=>e.includes(t)),Cx=u.fn(`detectAgent`)(function*(e){let t=yield*p.FileSystem;for(let[n,r]of Object.entries(xt)){let i=G.join(e,n);if(yield*t.exists(i).pipe(u.catchTag(`PlatformError`,()=>u.succeed(!1))))return r}let n=G.join(e,`package.json`),r=yield*t.readFileString(n).pipe(u.catchTag(`PlatformError`,()=>u.succeed(``)));if(r){let e=yield*u.try({try:()=>JSON.parse(r),catch:()=>({_tag:`JsonParseError`})}).pipe(u.catchTag(`JsonParseError`,()=>u.succeed(void 0)));if(e?.packageManager){let t=e.packageManager.split(`@`)[0];if(t)return t}}return`npm`}),wx=u.fn(`readPackageJson`)(function*(e){let t=yield*p.FileSystem,n=G.join(e,`package.json`),r=yield*t.readFileString(n);return yield*u.try({try:()=>JSON.parse(r),catch:()=>({_tag:`JsonParseError`})})}),Tx=u.fn(`listWorkspaceDirectories`)(function*(e){let t=yield*p.FileSystem,n=[];for(let r of xx){let i=G.join(e,G.dirname(r)),a=yield*t.readDirectory(i).pipe(u.catchTag(`PlatformError`,()=>u.succeed([])));for(let e of a){let r=G.join(i,e);(yield*t.stat(r).pipe(u.catchTag(`PlatformError`,()=>u.succeed(void 0))))?.type===`Directory`&&n.push(r)}}return n}),Ex=(e,t,n)=>new Promise(r=>{ce(e,[`run`,n],{cwd:t,timeout:12e4,maxBuffer:5*1024*1024},(e,t,i)=>{let a=(t+`
|
|
43
|
+
`),N=s===``&&!T.pickerOpen&&A.length>0,ie=N&&!p&&n>=80,ae=A[d%A.length];return te((e,t)=>{if(T.pickerOpen){if(t.escape){T.closePicker();return}if(t.downArrow||t.ctrl&&e===`n`){T.setPickerIndex(Math.min(T.filteredOptions.length-1,T.pickerIndex+1));return}if(t.upArrow||t.ctrl&&e===`p`){T.setPickerIndex(Math.max(0,T.pickerIndex-1));return}if(t.return||t.tab){let e=T.filteredOptions[T.pickerIndex];e&&T.handleContextSelect(e);return}if(t.backspace||t.delete){T.pickerQuery.length===0?T.closePicker():T.setPickerQuery(T.pickerQuery.slice(0,-1));return}e&&!t.ctrl&&!t.meta&&T.setPickerQuery(T.pickerQuery+e);return}if(M&&t.upArrow){w();return}if(M&&t.downArrow){ee();return}if(t.ctrl&&e===`k`){S(),$_(`cookies:toggled`,{enabled:!x});return}if(t.tab&&!t.shift&&N&&ae){c(ae),u(e=>e+1),$_(`suggestion:accepted`);return}if(!(t.tab&&t.shift)&&N){if(t.rightArrow){f(e=>(e+1)%A.length),m(!0);return}if(t.leftArrow){f(e=>(e-1+A.length)%A.length),m(!0);return}}},{isActive:!0}),H(E,{flexDirection:`column`,width:`100%`,paddingY:1,children:[V(E,{flexDirection:`column`,marginBottom:1,paddingX:1,children:V(nv,{})}),(e?.hasUntestedChanges||C&&C.totalCount>0)&&!(C&&C.totalCount>0&&C.percent>=90)&&H(E,{paddingX:1,paddingY:1,marginBottom:1,backgroundColor:C&&C.totalCount>0?Sb(C.percent):t.BANNER_BG,width:`100%`,flexDirection:`column`,gap:0,children:[(()=>{if(C&&C.totalCount>0)return H(E,{children:[H(O,{color:xb(C.percent),bold:!0,children:[U.warning,` Untested changes`]}),V(O,{children:` `}),V(O,{color:xb(C.percent),children:wb(C.percent).filled}),V(O,{color:t.DIM,children:wb(C.percent).empty}),H(O,{color:xb(C.percent),children:[` `,C.percent,`% test coverage`]})]});if(!e)return null;let n=e.workingTreeFileStats,r=n.reduce((e,t)=>e+t.added,0),i=n.reduce((e,t)=>e+t.removed,0);return H(E,{children:[H(O,{color:t.YELLOW,bold:!0,children:[U.warning,` Untested changes detected`]}),n.length>0&&H(ue,{children:[H(O,{color:t.DIM,children:[` `,n.length,` file`,n.length===1?``:`s`,` `]}),r>0&&H(O,{color:t.GREEN,children:[`+`,r]}),r>0&&i>0&&V(O,{color:t.DIM,children:` `}),i>0&&H(O,{color:t.RED,children:[`-`,i]})]})]})})(),V(O,{color:t.DIM,children:C&&C.totalCount>0?Cb(C.percent):`Describe what to test and hit enter to verify your changes.`})]}),H(E,{flexDirection:`column`,width:`100%`,children:[H(E,{paddingX:1,children:[!e&&V(Wm,{message:`loading context`}),e&&e.isGitRepo&&k&&V(Lt,{fullWidth:!1,onClick:()=>{T.pickerOpen?T.closePicker():T.openPicker()},children:H(O,{color:t.DIM,children:[U.bullet,` `,H(O,{color:t.PRIMARY,children:[`@`,Vm(k,e)]}),Bm(k,e)&&` (${Bm(k,e)})`]})})]}),V(Lt,{children:V(E,{flexDirection:`column`,marginTop:1,backgroundColor:t.INPUT_BG,width:`100%`,paddingX:1,paddingY:1,children:H(E,{children:[V(O,{color:t.PRIMARY,children:`❯ `}),V(E,{flexGrow:1,children:V(Ut,{focus:!T.pickerOpen,multiline:!0,placeholder:ae?`${ae} [tab]`:``,value:s,onSubmit:ne,onUpArrowAtTop:M?void 0:w,onDownArrowAtBottom:M?void 0:ee,onChange:j},l)}),ie?V(O,{color:t.DIM,children:` ←→ cycle test suggestions`}):null]})})}),e?.isGitRepo&&T.pickerOpen&&H(Ft,{color:t.BORDER,children:[H(E,{marginBottom:0,children:[V(O,{color:t.DIM,children:`@ `}),V(O,{color:t.PRIMARY,children:T.pickerQuery}),V(O,{color:t.DIM,children:T.pickerQuery?``:`type to filter`})]}),V(db,{options:T.filteredOptions,selectedIndex:T.pickerIndex,isLoading:T.remoteLoading,gitState:e})]}),e?.isGitRepo&&!T.pickerOpen&&V(E,{marginTop:1,paddingX:1,children:H(O,{color:t.DIM,children:[V(O,{color:t.PRIMARY,children:`@`}),` add context`]})})]}),V(Qv,{message:h})]})},Eb=e=>{let t=ie(10);if(t[0]!==`e8c3ad7624de558f1292f5717cd6dbce82fb6c0767dc4ab19348dc7a7975d8f5`){for(let e=0;e<10;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e8c3ad7624de558f1292f5717cd6dbce82fb6c0767dc4ab19348dc7a7975d8f5`}let{segment:n,mutedColor:r}=e,i=n.color??r,a;t[1]!==n.label||t[2]!==i?(a=H(O,{color:i,children:[n.label,` `]}),t[1]=n.label,t[2]=i,t[3]=a):a=t[3];let o=n.color??r,s;t[4]!==n.key||t[5]!==o?(s=H(O,{color:o,children:[`[`,n.key,`]`]}),t[4]=n.key,t[5]=o,t[6]=s):s=t[6];let c;return t[7]!==a||t[8]!==s?(c=H(ue,{children:[a,s]}),t[7]=a,t[8]=s,t[9]=c):c=t[9],c},Db=e=>{let t=ie(12);if(t[0]!==`e8c3ad7624de558f1292f5717cd6dbce82fb6c0767dc4ab19348dc7a7975d8f5`){for(let e=0;e<12;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e8c3ad7624de558f1292f5717cd6dbce82fb6c0767dc4ab19348dc7a7975d8f5`}let{segments:n,color:r,mutedColor:i}=e,a;t[1]===r?a=t[2]:(a=V(O,{color:r,children:` `}),t[1]=r,t[2]=a);let o;if(t[3]!==i||t[4]!==n){let e;t[6]!==i||t[7]!==n.length?(e=(e,t)=>H(E,{children:[e.onClick?V(Lt,{fullWidth:!1,onClick:e.onClick,children:V(Eb,{segment:e,mutedColor:i})}):V(Eb,{segment:e,mutedColor:i}),t<n.length-1&&V(O,{color:i,children:` `})]},e.key+e.label),t[6]=i,t[7]=n.length,t[8]=e):e=t[8],o=n.map(e),t[3]=i,t[4]=n,t[5]=o}else o=t[5];let s;return t[9]!==a||t[10]!==o?(s=H(E,{children:[a,o]}),t[9]=a,t[10]=o,t[11]=s):s=t[11],s},Ob=S.Struct({version:S.String}),kb=(e,t)=>{let n=e.split(`.`).map(Number),r=t.split(`.`).map(Number);for(let e=0;e<3;e++){if((n[e]??0)>(r[e]??0))return!0;if((n[e]??0)<(r[e]??0))return!1}return!1},Ab=u.gen(function*(){let e=yield*u.tryPromise({try:()=>fetch(`https://registry.npmjs.org/${bt}/latest`).then(e=>e.json()),catch:e=>Error(`npm registry fetch failed: ${e}`)});return(yield*u.try({try:()=>S.decodeUnknownSync(Ob)(e),catch:e=>Error(`npm response decode failed: ${e}`)})).version}).pipe(u.timeoutOrElse({duration:5e3,onTimeout:()=>u.succeed(void 0)})),jb=()=>{let{data:e}=N({queryKey:[`update-check`],queryFn:async()=>{let e=await u.runPromiseExit(Ab);if(d.isSuccess(e))return e.value},staleTime:36e5,retry:!1,refetchOnWindowFocus:!1});return{latestVersion:e,updateAvailable:e!==void 0&&kb(e,`0.0.13`)}},Mb=(e,t)=>{let n=ie(87);if(n[0]!==`0545e7691866a2045c1228f27b801065cf39232a2a018c782c9ae2928aa6e0a5`){for(let e=0;e<87;e+=1)n[e]=Symbol.for(`react.memo_cache_sentinel`);n[0]=`0545e7691866a2045c1228f27b801065cf39232a2a018c782c9ae2928aa6e0a5`}let r=Pt(),i=Zm(Fb),a=cv(Ib),o=cv(Lb),s=Z_(Rb),c=Z_(zb),l=Nv(Bb);switch(e._tag){case`Main`:{let e=a?`cookies on`:`cookies off`,r;n[1]!==e||n[2]!==o?(r={key:`ctrl+k`,label:e,cta:!0,onClick:o},n[1]=e,n[2]=o,n[3]=r):r=n[3];let s;n[4]===i?s=n[5]:(s={key:`ctrl+r`,label:`saved flows`,cta:!0,onClick:()=>i(Ym.SavedFlowPicker())},n[4]=i,n[5]=s);let c;if(n[6]!==t?.isGitRepo||n[7]!==i||n[8]!==r||n[9]!==s){if(c=[r,s],t?.isGitRepo){let e;n[11]===i?e=n[12]:(e={key:`ctrl+p`,label:`pick pr`,cta:!0,onClick:()=>i(Ym.SelectPr())},n[11]=i,n[12]=e),c.push(e)}n[6]=t?.isGitRepo,n[7]=i,n[8]=r,n[9]=s,n[10]=c}else c=n[10];return c}case`SelectPr`:{let e,t,a;n[13]===Symbol.for(`react.memo_cache_sentinel`)?(e={key:`↑↓`,label:`nav`},t={key:`←→`,label:`filter`},a={key:`/`,label:`search`},n[13]=e,n[14]=t,n[15]=a):(e=n[13],t=n[14],a=n[15]);let o;n[16]===i?o=n[17]:(o={key:`esc`,label:`back`,cta:!0,onClick:()=>i(Ym.Main())},n[16]=i,n[17]=o);let s;n[18]===r.PRIMARY?s=n[19]:(s={key:`enter`,label:`select`,color:r.PRIMARY,cta:!0},n[18]=r.PRIMARY,n[19]=s);let c;return n[20]!==o||n[21]!==s?(c=[e,t,a,o,s],n[20]=o,n[21]=s,n[22]=c):c=n[22],c}case`SavedFlowPicker`:{let e;n[23]===Symbol.for(`react.memo_cache_sentinel`)?(e={key:`↑↓`,label:`nav`},n[23]=e):e=n[23];let t;n[24]===i?t=n[25]:(t={key:`esc`,label:`back`,cta:!0,onClick:()=>i(Ym.Main())},n[24]=i,n[25]=t);let a;n[26]===r.PRIMARY?a=n[27]:(a={key:`enter`,label:`select`,color:r.PRIMARY,cta:!0},n[26]=r.PRIMARY,n[27]=a);let o;return n[28]!==t||n[29]!==a?(o=[e,t,a],n[28]=t,n[29]=a,n[30]=o):o=n[30],o}case`CookieSyncConfirm`:{let t;n[31]===Symbol.for(`react.memo_cache_sentinel`)?(t={key:`↑↓`,label:`nav`},n[31]=t):t=n[31];let a;n[32]===i?a=n[33]:(a={key:`esc`,label:`back`,onClick:()=>i(Ym.Main())},n[32]=i,n[33]=a);let o;n[34]!==e.changesFor||n[35]!==e.instruction||n[36]!==e.savedFlow||n[37]!==i?(o={key:`c`,label:`enable sync`,cta:!0,onClick:()=>{i(Xm({changesFor:e.changesFor,instruction:e.instruction,savedFlow:e.savedFlow,requiresCookies:!0}))}},n[34]=e.changesFor,n[35]=e.instruction,n[36]=e.savedFlow,n[37]=i,n[38]=o):o=n[38];let s;n[39]!==e.changesFor||n[40]!==e.instruction||n[41]!==e.savedFlow||n[42]!==i?(s=()=>{i(Xm({changesFor:e.changesFor,instruction:e.instruction,savedFlow:e.savedFlow,requiresCookies:!1}))},n[39]=e.changesFor,n[40]=e.instruction,n[41]=e.savedFlow,n[42]=i,n[43]=s):s=n[43];let c;n[44]!==r.PRIMARY||n[45]!==s?(c={key:`a`,label:`run anyway`,color:r.PRIMARY,cta:!0,onClick:s},n[44]=r.PRIMARY,n[45]=s,n[46]=c):c=n[46];let l;return n[47]!==a||n[48]!==o||n[49]!==c?(l=[t,a,o,c],n[47]=a,n[48]=o,n[49]=c,n[50]=l):l=n[50],l}case`PortPicker`:{let e,t,a;n[51]===Symbol.for(`react.memo_cache_sentinel`)?(e={key:`↑↓`,label:`nav`},t={key:`space`,label:`toggle`},a={key:`/`,label:`custom port`},n[51]=e,n[52]=t,n[53]=a):(e=n[51],t=n[52],a=n[53]);let o;n[54]===i?o=n[55]:(o={key:`esc`,label:`back`,cta:!0,onClick:()=>i(Ym.Main())},n[54]=i,n[55]=o);let s;n[56]===r.PRIMARY?s=n[57]:(s={key:`enter`,label:`confirm`,color:r.PRIMARY,cta:!0},n[56]=r.PRIMARY,n[57]=s);let c;return n[58]!==o||n[59]!==s?(c=[e,t,a,o,s],n[58]=o,n[59]=s,n[60]=c):c=n[60],c}case`Testing`:{let e=s===!0?`notify on`:`notify off`,t=l?`collapse`:`expand`,r;n[61]!==e||n[62]!==c?(r={key:`ctrl+n`,label:e,cta:!0,onClick:c},n[61]=e,n[62]=c,n[63]=r):r=n[63];let i;n[64]===t?i=n[65]:(i={key:`ctrl+o`,label:t,cta:!0},n[64]=t,n[65]=i);let a=l?`collapse`:`cancel`,o;n[66]===a?o=n[67]:(o={key:`esc`,label:a},n[66]=a,n[67]=o);let u;return n[68]!==r||n[69]!==i||n[70]!==o?(u=[r,i,o],n[68]=r,n[69]=i,n[70]=o,n[71]=u):u=n[71],u}case`Results`:{let t;n[72]===Symbol.for(`react.memo_cache_sentinel`)?(t={key:`y`,label:`copy`,cta:!0},n[72]=t):t=n[72];let r;if(n[73]!==e.report.changesFor||n[74]!==e.report.instruction||n[75]!==e.report.pullRequest||n[76]!==i){if(r=[t],_.isSome(e.report.pullRequest)){let e;n[78]===Symbol.for(`react.memo_cache_sentinel`)?(e={key:`p`,label:`post to PR`,cta:!0},n[78]=e):e=n[78],r.push(e)}let a;n[79]===Symbol.for(`react.memo_cache_sentinel`)?(a={key:`s`,label:`save flow`,cta:!0},n[79]=a):a=n[79],r.push(a);let o;n[80]!==e.report.changesFor||n[81]!==e.report.instruction||n[82]!==i?(o={key:`r`,label:`restart`,cta:!0,onClick:()=>{Nv.getState().setExecutedPlan(void 0),i(Xm({changesFor:e.report.changesFor,instruction:e.report.instruction}))}},n[80]=e.report.changesFor,n[81]=e.report.instruction,n[82]=i,n[83]=o):o=n[83],r.push(o);let s;n[84]===i?s=n[85]:(s={key:`esc`,label:`main menu`,cta:!0,onClick:()=>{Nv.getState().setExecutedPlan(void 0),i(Ym.Main())}},n[84]=i,n[85]=s),r.push(s),n[73]=e.report.changesFor,n[74]=e.report.instruction,n[75]=e.report.pullRequest,n[76]=i,n[77]=r}else r=n[77];return r}default:{let e;return n[86]===Symbol.for(`react.memo_cache_sentinel`)?(e=[],n[86]=e):e=n[86],e}}},Nb=e=>e.length>0?` ${e.map(e=>`${e.label} [${e.key}]`).join(` `)}`:``,Pb=()=>{let e=ie(34);if(e[0]!==`0545e7691866a2045c1228f27b801065cf39232a2a018c782c9ae2928aa6e0a5`){for(let t=0;t<34;t+=1)e[t]=Symbol.for(`react.memo_cache_sentinel`);e[0]=`0545e7691866a2045c1228f27b801065cf39232a2a018c782c9ae2928aa6e0a5`}let[t]=jt(),{data:n}=ab(),r=Zm(Vb),{latestVersion:i,updateAvailable:a}=jb(),o=Mb(r,n),s,c,l,u,d,f,p,m;if(e[1]!==o||e[2]!==t||e[3]!==i||e[4]!==r._tag||e[5]!==a){let n=a?[...o,{key:`ctrl+u`,label:`v${i} available`,cta:!0,color:J.warning}]:o;u=n.filter(Hb);let h=ze(Nb(u)),g=Wb,_=n.filter(Gb),v=g(_)+h+2>t?_.filter(Kb):_,y=g(v);l=Math.max(0,t-y-h-2),c=E,p=`column`,e[14]!==t||e[15]!==r._tag?(m=r._tag===`Testing`?V(Mv,{text:`─`.repeat(t),baseColor:J.shimmerBase,highlightColor:J.shimmerHighlight,speed:3}):V(O,{color:J.border,children:`─`.repeat(t)}),e[14]=t,e[15]=r._tag,e[16]=m):m=e[16],s=E,d=1,f=v.map(qb),e[1]=o,e[2]=t,e[3]=i,e[4]=r._tag,e[5]=a,e[6]=s,e[7]=c,e[8]=l,e[9]=u,e[10]=d,e[11]=f,e[12]=p,e[13]=m}else s=e[6],c=e[7],l=e[8],u=e[9],d=e[10],f=e[11],p=e[12],m=e[13];let h;e[17]===l?h=e[18]:(h=` `.repeat(l),e[17]=l,e[18]=h);let g;e[19]===h?g=e[20]:(g=V(O,{children:h}),e[19]=h,e[20]=g);let _;e[21]===u?_=e[22]:(_=u.length>0?V(Db,{segments:u,color:J.primary,mutedColor:J.textMuted}):null,e[21]=u,e[22]=_);let v;e[23]!==s||e[24]!==d||e[25]!==f||e[26]!==g||e[27]!==_?(v=H(s,{paddingX:d,children:[f,g,_]}),e[23]=s,e[24]=d,e[25]=f,e[26]=g,e[27]=_,e[28]=v):v=e[28];let y;return e[29]!==c||e[30]!==p||e[31]!==m||e[32]!==v?(y=H(c,{flexDirection:p,children:[m,v]}),e[29]=c,e[30]=p,e[31]=m,e[32]=v,e[33]=y):y=e[33],y};function Fb(e){return e.setScreen}function Ib(e){return e.cookiesEnabled}function Lb(e){return e.toggleCookies}function Rb(e){return e.notifications}function zb(e){return e.toggleNotifications}function Bb(e){return e.expanded}function Vb(e){return e.screen}function Hb(e){return!e.cta}function Ub(e){return e.color?` ${e.label} [${e.key}] `:`${e.label} [${e.key}]`}function Wb(e){return ze(e.map(Ub).join(` `))}function Gb(e){return e.cta}function Kb(e){return e.key!==`ctrl+p`}function qb(e,t){let n=H(O,{children:[t>0?` `:``,e.color?H(O,{backgroundColor:e.color,color:`black`,children:[` `,V(O,{bold:!0,children:e.label}),` `,H(O,{children:[`[`,e.key,`]`]}),` `]}):H(O,{children:[H(O,{color:J.textMuted,children:[e.label,` `]}),H(O,{color:J.textMuted,children:[`[`,e.key,`]`]})]})]},e.key+e.label);return e.onClick?V(Lt,{onClick:e.onClick,fullWidth:!1,children:n},e.key+e.label):n}let Jb=null;const Yb=e=>{Jb=e},Xb=()=>Jb?.clear(),Zb=e=>{let t=ie(34);if(t[0]!==`e6ac87aa0f631766a38fac7cfbcee5d6c83ce6fd1edd967a6457097df0e89416`){for(let e=0;e<34;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e6ac87aa0f631766a38fac7cfbcee5d6c83ce6fd1edd967a6457097df0e89416`}let{agent:n}=e,r=Zm(Qb),i=Zm($b),a=Zm(ex),{data:o}=ab(),s=at(ey),c,l;t[1]!==n||t[2]!==s?(c=()=>{s(_.some(n))},l=[n,s],t[1]=n,t[2]=s,t[3]=c,t[4]=l):(c=t[3],l=t[4]),se(c,l);let u;t[5]!==r._tag||t[6]!==i?(u=()=>{if(r._tag===`CookieSyncConfirm`){i(Ym.Main());return}if(r._tag===`PortPicker`){i(Ym.Main());return}if(r._tag===`Results`){Nv.getState().setExecutedPlan(void 0),i(Ym.Main());return}r._tag!==`Testing`&&i(Ym.Main())},t[5]=r._tag,t[6]=i,t[7]=u):u=t[7];let d=u,{updateAvailable:f}=jb(),{exit:p}=A(),[,m]=L(0),[,h]=jt(),g;t[8]!==p||t[9]!==o?.isGitRepo||t[10]!==d||t[11]!==a||t[12]!==r._tag||t[13]!==m||t[14]!==f?(g=(e,t)=>{if(t.ctrl&&e===`l`){Xb(),m(tx);return}if(t.ctrl&&e===`u`&&f){p(),process.stdout.write(_t),B(`npm`,[`install`,`-g`,`${bt}@latest`],{stdio:`inherit`});return}t.escape&&r._tag!==`Main`&&d(),t.ctrl&&e===`p`&&r._tag===`Main`&&o?.isGitRepo&&a(Ym.SelectPr()),t.ctrl&&e===`r`&&r._tag===`Main`&&a(Ym.SavedFlowPicker())},t[8]=p,t[9]=o?.isGitRepo,t[10]=d,t[11]=a,t[12]=r._tag,t[13]=m,t[14]=f,t[15]=g):g=t[15],te(g);let v;t[16]!==o||t[17]!==r._tag||t[18]!==r.baseUrls||t[19]!==r.changesFor||t[20]!==r.instruction||t[21]!==r.localReplayUrl||t[22]!==r.replayUrl||t[23]!==r.report||t[24]!==r.requiresCookies||t[25]!==r.savedFlow||t[26]!==r.videoUrl?(v=()=>{if(!o)return V(Tb,{gitState:void 0});switch(r._tag){case`PortPicker`:return V(bv,{changesFor:r.changesFor,instruction:r.instruction,savedFlow:r.savedFlow,requiresCookies:r.requiresCookies});case`Testing`:return V(My,{changesFor:r.changesFor,instruction:r.instruction,savedFlow:r.savedFlow,requiresCookies:r.requiresCookies,baseUrls:r.baseUrls});case`Results`:return V($y,{report:r.report,replayUrl:r.replayUrl,localReplayUrl:r.localReplayUrl,videoUrl:r.videoUrl});case`SelectPr`:return V(eh,{});case`CookieSyncConfirm`:return V(iv,{changesFor:r.changesFor,instruction:r.instruction,savedFlow:r.savedFlow});case`SavedFlowPicker`:return V(cb,{});default:return V(Tb,{gitState:o})}},t[16]=o,t[17]=r._tag,t[18]=r.baseUrls,t[19]=r.changesFor,t[20]=r.instruction,t[21]=r.localReplayUrl,t[22]=r.replayUrl,t[23]=r.report,t[24]=r.requiresCookies,t[25]=r.savedFlow,t[26]=r.videoUrl,t[27]=v):v=t[27];let y=v,b;t[28]===y?b=t[29]:(b=V(E,{flexGrow:1,children:y()}),t[28]=y,t[29]=b);let x;t[30]===Symbol.for(`react.memo_cache_sentinel`)?(x=V(Pb,{}),t[30]=x):x=t[30];let S;return t[31]!==h||t[32]!==b?(S=V(Tt,{children:H(E,{flexDirection:`column`,width:`100%`,height:h,children:[b,x]})}),t[31]=h,t[32]=b,t[33]=S):S=t[33],S};function Qb(e){return e.screen}function $b(e){return e.setScreen}function ex(e){return e.navigateTo}function tx(e){return e+1}const nx=()=>{let e=je();return e===`darwin`?`afplay /System/Library/Sounds/Glass.aiff`:e===`win32`?`powershell -c (New-Object Media.SoundPlayer 'C:\\Windows\\Media\\chimes.wav').PlaySync()`:`paplay /usr/share/sounds/freedesktop/stereo/complete.oga 2>/dev/null || aplay /usr/share/sounds/freedesktop/stereo/complete.oga 2>/dev/null`},rx=()=>new Promise(e=>{z(nx(),()=>e())});var ix=class extends S.ErrorClass(`ExecutionTimeoutError`)({_tag:S.tag(`ExecutionTimeoutError`),timeoutMs:S.Number}){message=`expect execution timed out after ${this.timeoutMs}ms`};const ax=e=>`[${((Date.now()-e)/1e3).toFixed(1)}s]`,ox=e=>e.replace(/\r?\n/g,` `).replace(/::/g,`: :`),sx=e=>u.runPromise(ny(u.gen(function*(){let t=yield*Qp,n=yield*$p,r=yield*J_,i=Date.now();yield*r.capture(`session:started`,{mode:`headless`,skip_planning:!1,browser_headed:e.headed});let a=(yield*c.string(`GITHUB_ACTIONS`).pipe(c.withDefault(``)))!==``,o=e.ci?` [CI mode]`:``;console.log(`expect v${gt}${o}`),_.isSome(e.timeoutMs)&&console.log(`Timeout: ${e.timeoutMs.value}ms`),console.log(`Agent: ${e.agent}`),console.log(`Target: ${_n(e.changesFor)}`),console.log(`Starting browser test...`),a&&console.log(`::group::expect test execution`);let s=Date.now(),l=Date.now(),d=e.ci?setInterval(()=>{let e=Date.now();if(e-l>=6e4){let t=Math.floor((e-s)/6e4);console.log(`${ax(s)} Still running... (${t} minute${t===1?``:`s`} elapsed)`),l=e}},6e4):void 0;yield*r.capture(`run:started`,{plan_id:`direct`});let f=new Set,p=e=>{for(let t of e.events){if(f.has(t.id))continue;f.add(t.id),l=Date.now();let e=ax(s);switch(t._tag){case`RunStarted`:console.log(`${e} Starting ${t.plan.title}`);break;case`StepStarted`:console.log(`${e} ${U.arrowRight} ${t.stepId} ${t.title}`);break;case`StepCompleted`:console.log(`${e} ${U.tick} ${t.stepId} ${t.summary}`);break;case`StepFailed`:console.log(`${e} ${U.cross} ${t.stepId} ${t.message}`),a&&console.log(`::error title=${ox(t.stepId)} failed::${ox(t.message)}`);break;case`StepSkipped`:console.log(`${e} ${U.arrowRight} ${t.stepId} [skipped] ${t.reason}`);break}}},m=t.execute({changesFor:e.changesFor,instruction:e.instruction,isHeadless:!e.headed,requiresCookies:!1}).pipe(w.tap(e=>u.sync(()=>p(e))),w.runLast,u.map(t=>(t._tag===`Some`?t.value:new Qn({id:``,changesFor:e.changesFor,currentBranch:``,diffPreview:``,fileStats:[],instruction:e.instruction,baseUrl:void 0,isHeadless:!e.headed,requiresCookies:!1,testCoverage:_.none(),title:e.instruction,rationale:`Direct execution`,steps:[],events:[]})).finalizeTextBlock())),h=_.getOrUndefined(e.timeoutMs),g=yield*(h===void 0?m:m.pipe(u.timeoutOrElse({duration:`${h} millis`,onTimeout:()=>u.fail(new ix({timeoutMs:h}))}))).pipe(u.tapError(()=>u.sync(()=>{d&&clearInterval(d),a&&console.log(`::endgroup::`)})),u.catchTag(`ExecutionTimeoutError`,e=>u.sync(()=>{a&&console.log(`::error title=Execution timed out::${ox(e.message)}`),console.error(`\n${e.message}`),process.exit(1)})));d&&clearInterval(d),p(g),a&&console.log(`::endgroup::`);let v=yield*n.report(g),y=v.steps.filter(e=>v.stepStatuses.get(e.id)?.status===`passed`).length,b=v.steps.filter(e=>v.stepStatuses.get(e.id)?.status===`failed`).length;yield*r.capture(`run:completed`,{plan_id:g.id??`direct`,passed:y,failed:b,step_count:g.steps.length,file_count:0,duration_ms:Date.now()-s}),yield*r.capture(`session:ended`,{session_ms:Date.now()-i}),yield*r.flush;let x=v.toPlainText;console.error(`\n${x}`);let S=yield*c.option(c.string(`GITHUB_STEP_SUMMARY`));if(_.isSome(S)){let e=`## expect test results\n\n${v.status===`passed`?`**Result: PASSED**`:`**Result: FAILED**`}\n\n\`\`\`\n${x}\n\`\`\`\n`;yield*u.sync(()=>qe(S.value,e))}yield*u.promise(()=>rx()),process.exit(v.status===`passed`?0:1)}).pipe(u.provide($v({verbose:e.verbose,agent:e.agent}))))),cx={error:W.red,warn:W.yellow,info:W.cyan,success:W.green,dim:W.dim},$={error:(...e)=>{console.log(cx.error(e.join(` `)))},warn:(...e)=>{console.log(cx.warn(e.join(` `)))},info:(...e)=>{console.log(cx.info(e.join(` `)))},success:(...e)=>{console.log(cx.success(e.join(` `)))},dim:(...e)=>{console.log(cx.dim(e.join(` `)))},log:(...e)=>{console.log(e.join(` `))},break:()=>{console.log(``)}},lx=()=>{$.break(),$.log(`Cancelled.`),$.break(),process.exit(0)},ux=e=>mt(e,{onCancel:lx}),dx=(e,t)=>ht({text:e,isSilent:t?.silent}),fx=[`CI`,`CLAUDECODE`,`CURSOR_AGENT`,`CODEX_CI`,`OPENCODE`,`AMP_HOME`,`AMI`],px=()=>fx.some(e=>!!process.env[e]),mx=()=>!process.stdin.isTTY,hx={npm:`npm install -g expect-cli@latest`,pnpm:`pnpm add -g expect-cli@latest`,yarn:`yarn global add expect-cli@latest`,bun:`bun add -g expect-cli@latest`,vp:`vp install -g expect-cli@latest`},gx={npm:`npx -y skills add https://github.com/millionco/expect --skill expect -y`,pnpm:`pnpm dlx skills add https://github.com/millionco/expect --skill expect -y`,yarn:`npx -y skills add https://github.com/millionco/expect --skill expect -y`,bun:`bunx skills add https://github.com/millionco/expect --skill expect -y`,vp:`npx -y skills add https://github.com/millionco/expect --skill expect -y`},_x=()=>{if(process.env.VITE_PLUS_CLI_BIN)return`vp`;let e=process.env.npm_config_user_agent;if(e){if(e.startsWith(`pnpm`))return`pnpm`;if(e.startsWith(`yarn`))return`yarn`;if(e.startsWith(`bun`))return`bun`;if(e.startsWith(`npm`))return`npm`}return`npm`},vx=e=>e||px()||mx(),yx=e=>new Promise(t=>{z(e,{timeout:1e4},e=>{t(!e)}).stdin?.end()}),bx=async(e={})=>{let t=vx(e.yes??!1),n=_x(),r=hx[n];$.break(),$.log(` ${W.red(U.cross)}${W.green(U.tick)} ${W.bold(`Expect`)} ${cx.dim(`v${gt}`)}`),$.dim(` Let agents test your code in a real browser.`),$.break(),Ya().length===0&&($.error(`No supported coding agent found. expect requires one of: Claude Code, Codex, or Cursor.`),$.break(),$.log(` Install one to get started:`),$.log(` ${cx.info(`Claude Code`)} ${cx.dim(`https://docs.anthropic.com/en/docs/claude-code`)}`),$.log(` ${cx.info(`Codex`)} ${cx.dim(`https://github.com/openai/codex`)}`),$.log(` ${cx.info(`Cursor`)} ${cx.dim(`https://cursor.com`)}`),$.break(),process.exit(1));let i=dx(`Installing expect-cli globally...`).start();await yx(r)?i.succeed(`Installed! ${cx.info(`expect-cli`)} is now available globally.`):(i.fail(`Failed to install globally.`),$.dim(` Run manually: ${cx.info(r)}`)),$.break();let a=t;if(t||(a=(await ux({type:`confirm`,name:`installSkill`,message:`Install the ${cx.info(`expect`)} skill for your coding agent?`,initial:!0})).installSkill),a){let e=gx[n],t=dx(`Installing skill...`).start();await yx(e)?t.succeed(`Skill installed.`):(t.fail(`Failed to install skill.`),$.dim(` Run manually: ${cx.info(e)}`))}$.break(),$.success(`Setup complete! Here's how to get started:`),$.break(),$.log(` 1. ${cx.info(`cd`)} into your project directory`),$.log(` 2. Start your dev server (e.g. ${cx.dim(`npm run dev`)})`),$.log(` 3. Run ${cx.info(`expect-cli`)} to open the interactive test runner`),$.break(),$.log(` Or run headlessly from your coding agent:`),$.break(),$.log(` ${cx.dim(`$`)} ${cx.info(`expect-cli -m "test the login flow" -y`)}`),$.break(),$.log(` Set ${cx.info(`EXPECT_BASE_URL`)} if your app is not on localhost:3000:`),$.break(),$.log(` ${cx.dim(`$`)} ${cx.info(`EXPECT_BASE_URL=http://localhost:5173 expect-cli -m "test the homepage" -y`)}`),$.break()},xx=[`packages/*`,`apps/*`],Sx=e=>yt.some(t=>e.includes(t)),Cx=u.fn(`detectAgent`)(function*(e){let t=yield*p.FileSystem;for(let[n,r]of Object.entries(xt)){let i=G.join(e,n);if(yield*t.exists(i).pipe(u.catchTag(`PlatformError`,()=>u.succeed(!1))))return r}let n=G.join(e,`package.json`),r=yield*t.readFileString(n).pipe(u.catchTag(`PlatformError`,()=>u.succeed(``)));if(r){let e=yield*u.try({try:()=>JSON.parse(r),catch:()=>({_tag:`JsonParseError`})}).pipe(u.catchTag(`JsonParseError`,()=>u.succeed(void 0)));if(e?.packageManager){let t=e.packageManager.split(`@`)[0];if(t)return t}}return`npm`}),wx=u.fn(`readPackageJson`)(function*(e){let t=yield*p.FileSystem,n=G.join(e,`package.json`),r=yield*t.readFileString(n);return yield*u.try({try:()=>JSON.parse(r),catch:()=>({_tag:`JsonParseError`})})}),Tx=u.fn(`listWorkspaceDirectories`)(function*(e){let t=yield*p.FileSystem,n=[];for(let r of xx){let i=G.join(e,G.dirname(r)),a=yield*t.readDirectory(i).pipe(u.catchTag(`PlatformError`,()=>u.succeed([])));for(let e of a){let r=G.join(i,e);(yield*t.stat(r).pipe(u.catchTag(`PlatformError`,()=>u.succeed(void 0))))?.type===`Directory`&&n.push(r)}}return n}),Ex=(e,t,n)=>new Promise(r=>{ce(e,[`run`,n],{cwd:t,timeout:12e4,maxBuffer:5*1024*1024},(e,t,i)=>{let a=(t+`
|
|
44
44
|
`+i).trim();r({script:n,passed:!e,output:a})})}),Dx=u.fn(`discoverPackages`)(function*(e){let t=yield*Tx(e),n=[];for(let e of t){let t=yield*wx(e).pipe(u.catchTag(`PlatformError`,()=>u.succeed(void 0)),u.catchTag(`JsonParseError`,()=>u.succeed(void 0)));if(!t?.scripts)continue;let r=Object.keys(t.scripts).filter(Sx);r.length!==0&&n.push({packageName:t.name??G.basename(e),directory:e,scripts:r})}return n}),Ox=async(e,t)=>{let n=u.gen(function*(){let n=yield*Cx(e),r=yield*Dx(e);return yield*u.forEach(r,e=>u.gen(function*(){t.onPackageStart(e.packageName,e.scripts);let r=[];for(let i of e.scripts){let a=yield*u.promise(()=>Ex(n,e.directory,i));t.onScriptDone(e.packageName,a),r.push(a)}return{packageName:e.packageName,directory:e.directory,results:r}}),{concurrency:4})});return u.runPromise(n.pipe(u.provide(be.layer)))},kx=e=>{let t=ie(5);if(t[0]!==`aef0f8bb7ade6156f95a0a2a02eb67442b17c5cae1cd627958814a31c95c65dd`){for(let e=0;e<5;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`aef0f8bb7ade6156f95a0a2a02eb67442b17c5cae1cd627958814a31c95c65dd`}let{statusMap:n}=e,r;if(t[1]!==n){let e=Array.from(n.entries()),i,a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=V(O,{bold:!0,children:`expect audit`}),a=V(O,{children:` `}),t[3]=i,t[4]=a):(i=t[3],a=t[4]),r=H(E,{flexDirection:`column`,paddingY:1,children:[i,a,e.map(Lx)]}),t[1]=n,t[2]=r}else r=t[2];return r},Ax=e=>{let t=ie(12);if(t[0]!==`aef0f8bb7ade6156f95a0a2a02eb67442b17c5cae1cd627958814a31c95c65dd`){for(let e=0;e<12;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`aef0f8bb7ade6156f95a0a2a02eb67442b17c5cae1cd627958814a31c95c65dd`}let{results:n}=e,r=0,i=0;for(let e of n)for(let t of e.results)t.passed?r++:i++;let a=`${r} passed, ${i} failed`,o=i>0?Nt.RED:Nt.GREEN,s;t[1]!==a||t[2]!==o?(s=V(O,{bold:!0,color:o,children:a}),t[1]=a,t[2]=o,t[3]=s):s=t[3];let c;t[4]===i?c=t[5]:(c=i>0&&H(O,{color:Nt.YELLOW,children:[`Run `,V(O,{bold:!0,children:`expect`}),` to test your changes in a real browser and catch issues before they ship.`]}),t[4]=i,t[5]=c);let l;t[6]===i?l=t[7]:(l=i===0&&H(O,{color:Nt.GREEN,children:[`Looking good! Run `,V(O,{bold:!0,children:`expect`}),` to verify your changes work end-to-end in the browser.`]}),t[6]=i,t[7]=l);let u;return t[8]!==s||t[9]!==c||t[10]!==l?(u=H(E,{flexDirection:`column`,gap:1,children:[s,c,l]}),t[8]=s,t[9]=c,t[10]=l,t[11]=u):u=t[11],u},jx=async()=>{let e=process.cwd(),t={current:new Map},n,r,i=k(V(()=>{let[e,t]=L(new Map),[i,a]=L();return n=e=>t(new Map(e)),r=a,H(E,{flexDirection:`column`,children:[V(kx,{statusMap:e}),i&&V(Ax,{results:i})]})},{})),a=await Ox(e,{onPackageStart:(e,r)=>{t.current.set(e,{scripts:r,completed:[],done:!1}),n?.(t.current)},onScriptDone:(e,r)=>{let i=t.current.get(e);i&&(i.completed.push(r),i.done=i.completed.length===i.scripts.length),n?.(t.current)}});r?.(a),setTimeout(()=>{i.unmount(),a.reduce((e,t)=>e+t.results.filter(e=>!e.passed).length,0)>0&&process.exit(1)},100)},Mx=async()=>{let e=process.cwd();console.log(``),console.log(W.bold(`expect audit`)),console.log(``);let t=await Ox(e,{onPackageStart:(e,t)=>{console.log(`${U.arrowRight} ${W.bold(e)} (${t.join(`, `)})`)},onScriptDone:(e,t)=>{let n=t.passed?W.green(U.tick):W.red(U.cross);if(console.log(` ${n} ${t.script}`),!t.passed){let e=t.output.split(`
|
|
45
45
|
`).slice(-3).join(`
|
|
46
46
|
`);console.log(W.dim(` ${e.split(`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expect-cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.13",
|
|
4
4
|
"description": "Let agents test your code in a real browser",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agents",
|
|
@@ -75,9 +75,9 @@
|
|
|
75
75
|
"@types/react": "^19.2.14",
|
|
76
76
|
"babel-plugin-react-compiler": "^1.0.0",
|
|
77
77
|
"typescript": "^5.7.0",
|
|
78
|
-
"@expect/agent": "0.0.
|
|
79
|
-
"@expect/shared": "0.0.
|
|
80
|
-
"@expect/supervisor": "0.0.
|
|
78
|
+
"@expect/agent": "0.0.13",
|
|
79
|
+
"@expect/shared": "0.0.13",
|
|
80
|
+
"@expect/supervisor": "0.0.13"
|
|
81
81
|
},
|
|
82
82
|
"optionalDependencies": {
|
|
83
83
|
"oxc-resolver": "^11.19.1"
|