1import{d as N,aA as Z,ax as ee,q as g,u as e,bO as te,w as s,b as t,bP as ae,bQ as se,a7 as oe,aB as le,a2 as ne,bR as ue,X as re,a as u,o as r,as as G,j as ie,aq as de,al as me,am as pe,e as i,an as ce,bw as V,k as fe,bx as ve,c as p,y as U,t as f,F as j,_ as S,f as O,bS as E,z as P,bE as T,bF as L,bG as Q,bH as D,bI as q,bB as _e,bJ as ge,bC as be,bu as M,aS as X,bT as xe,br as ye,i as F,R as we,Q as $e}from"./index-44DxmEFA.js";import{_ as ke}from"./SectionPage.vue_vue_type_script_setup_true_lang-cUsvsIMX.js";import{_ as Ce}from"./EmptyState.vue_vue_type_script_setup_true_lang-DfiPYrW4.js";import{_ as Ve}from"./ListSkeleton.vue_vue_type_script_setup_true_lang-DTAEdAch.js";import{u as Se,e as Ue,v as je,a as H,b as Ae,s as he,c as Re,r as Pe}from"./useAutomationRunsQuery-DNj0WOes.js";import{_ as B}from"./Input.vue_vue_type_script_setup_true_lang-DWM0zgxr.js";import{_ as De}from"./DialogFooter.vue_vue_type_script_setup_true_lang-CAmUUukf.js";import{_ as Be}from"./AlertTitle.vue_vue_type_script_setup_true_lang-Dxf4ZPw7.js";import"./Loader.vue_vue_type_script_setup_true_lang-DxGl7QtU.js";const Oe=N({__name:"DialogScrollContent",props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(A,{emit:h}){const k=A,b=h,x=Z(k,"class"),_=ee(x,b);return(d,c)=>(r(),g(e(te),null,{default:s(()=>[t(e(ae),{class:"fixed inset-0 z-50 grid place-items-center overflow-y-auto bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"},{default:s(()=>[t(e(se),oe({class:e(le)("relative z-50 grid w-full max-w-lg my-8 gap-4 border border-border bg-background p-6 shadow-lg duration-200 sm:rounded-lg md:w-full",k.class)},e(_),{onPointerDownOutside:c[0]||(c[0]=C=>{const w=C.detail.originalEvent,$=w.target;(w.offsetX>$.clientWidth||w.offsetY>$.clientHeight)&&C.preventDefault()})}),{default:s(()=>[ne(d.$slots,"default"),t(e(ue),{class:"absolute top-3 right-3 p-0.5 transition-colors rounded-md hover:bg-secondary"},{default:s(()=>[t(e(re),{class:"w-4 h-4"}),c[1]||(c[1]=u("span",{class:"sr-only"},"Close",-1))]),_:1})]),_:3},16,["class"])]),_:3})]),_:3}))}}),ze={class:"space-y-5"},Fe={class:"space-y-1.5"},Ne={class:"space-y-1.5"},Ie=["value"],Ee={class:"grid grid-cols-1 gap-3 sm:grid-cols-2"},Te={class:"space-y-1.5"},Le={class:"space-y-1.5"},Qe={class:"space-y-3"},qe={class:"flex items-center justify-between"},Me={class:"flex items-center justify-between"},Xe={class:"text-xs font-medium text-muted-foreground"},He={key:0,class:"space-y-1"},Ge=N({__name:"StartRunDialog",props:{open:{type:Boolean}},emits:["update:open","created"],setup(A,{emit:h}){const k=A,b=h,{data:x}=G(),_=Se(),d=P(H()),c=P([]);ie(()=>k.open,v=>{v&&(d.value=H(),c.value=[])});function C(){d.value.testCases.push(Ue())}function w(v){d.value.testCases.splice(v,1)}async function $(){const v=je(d.value);if(!v.valid){c.value=v.errors;return}c.value=[];const a=await _.mutateAsync(v.request);b("created",a),b("update:open",!1)}return(v,a)=>(r(),g(e(de),{open:A.open,"onUpdate:open":a[5]||(a[5]=n=>b("update:open",n))},{default:s(()=>[t(e(Oe),{size:"lg"},{default:s(()=>[t(e(me),null,{default:s(()=>[t(e(pe),null,{default:s(()=>[...a[6]||(a[6]=[i("Start automation run",-1)])]),_:1}),t(e(ce),null,{default:s(()=>[...a[7]||(a[7]=[i(" Queue a run for the worker to execute. Use dedicated test-account credentials â never production ones. ",-1)])]),_:1})]),_:1}),u("div",ze,[u("div",Fe,[t(e(V),{for:"run-url"},{default:s(()=>[...a[8]||(a[8]=[i("Application URL",-1)])]),_:1}),t(e(B),{id:"run-url",modelValue:d.value.applicationUrl,"onUpdate:modelValue":a[0]||(a[0]=n=>d.value.applicationUrl=n),placeholder:"https://staging.example.com"},null,8,["modelValue"])]),u("div",Ne,[t(e(V),{for:"run-project"},{default:s(()=>[...a[9]||(a[9]=[i("Project (optional)",-1)])]),_:1}),fe(u("select",{id:"run-project","onUpdate:modelValue":a[1]||(a[1]=n=>d.value.projectId=n),class:"w-full rounded-md border border-input bg-background px-3 py-2 text-sm"},[a[10]||(a[10]=u("option",{value:""},"No project",-1)),(r(!0),p(j,null,U(e(x)??[],n=>(r(),p("option",{key:n.name,value:n.name},f(n.name),9,Ie))),128))],512),[[ve,d.value.projectId]])]),u("div",Ee,[u("div",Te,[t(e(V),{for:"run-user"},{default:s(()=>[...a[11]||(a[11]=[i("Test username (optional)",-1)])]),_:1}),t(e(B),{id:"run-user",modelValue:d.value.username,"onUpdate:modelValue":a[2]||(a[2]=n=>d.value.username=n),autocomplete:"off"},null,8,["modelValue"])]),u("div",Le,[t(e(V),{for:"run-pass"},{default:s(()=>[...a[12]||(a[12]=[i("Test password (optional)",-1)])]),_:1}),t(e(B),{id:"run-pass",modelValue:d.value.password,"onUpdate:modelValue":a[3]||(a[3]=n=>d.value.password=n),type:"password",autocomplete:"off"},null,8,["modelValue"])])]),u("div",Qe,[u("div",qe,[a[14]||(a[14]=u("h3",{class:"text-sm font-medium"},"Test cases",-1)),t(e(S),{size:"sm",variant:"outline",onClick:C},{default:s(()=>[...a[13]||(a[13]=[i("Add case",-1)])]),_:1})]),(r(!0),p(j,null,U(d.value.testCases,(n,R)=>(r(),p("div",{key:R,class:"space-y-2 rounded-lg border p-3"}
1,[u("div",Me,[u("span",Xe,"Case "+f(R+1),1),d.value.testCases.length>1?(r(),g(e(S),{key:0,size:"sm",variant:"ghost",onClick:y=>w(R)},{default:s(()=>[...a[15]||(a[15]=[i(" Remove ",-1)])]),_:1},8,["onClick"])):O("",!0)]),t(e(B),{modelValue:n.name,"onUpdate:modelValue":y=>n.name=y,placeholder:"Name (e.g. Sign in)"},null,8,["modelValue","onUpdate:modelValue"]),t(e(E),{modelValue:n.instruction,"onUpdate:modelValue":y=>n.instruction=y,placeholder:"Instruction â what the agent should do"},null,8,["modelValue","onUpdate:modelValue"]),t(e(E),{modelValue:n.acceptanceCriteria,"onUpdate:modelValue":y=>n.acceptanceCriteria=y,placeholder:"Acceptance criteria â one per line (optional)"},null,8,["modelValue","onUpdate:modelValue"])]))),128))]),c.value.length?(r(),p("ul",He,[(r(!0),p(j,null,U(c.value,n=>(r(),p("li",{key:n,class:"text-sm text-destructive"},f(n),1))),128))])):O("",!0)]),t(e(De),{class:"gap-2"},{default:s(()=>[t(e(S),{variant:"outline",onClick:a[4]||(a[4]=n=>b("update:open",!1))},{default:s(()=>[...a[16]||(a[16]=[i("Cancel",-1)])]),_:1}),t(e(S),{disabled:e(_).isPending.value,onClick:$},{default:s(()=>[i(f(e(_).isPending.value?"Submittingâ¦":"Start run"),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["open"]))}}),Je={class:"mx-auto w-full max-w-5xl px-4 py-5 sm:px-6 lg:px-8"},Ke={class:"mb-4 flex flex-wrap items-end gap-3"},We={class:"space-y-1.5"},Ye={key:0,class:"space-y-1.5"},Ze=["onClick"],et={class:"min-w-0 flex-1"},tt={class:"truncate text-sm font-medium text-foreground"},at={key:0,class:"truncate text-xs text-muted-foreground"},st={class:"hidden w-44 shrink-0 text-right sm:block"},ot={class:"truncate text-xs text-foreground"},lt={class:"truncate text-xs tabular-nums text-muted-foreground"},nt={class:"w-20 shrink-0 text-right font-mono text-xs tabular-nums text-muted-foreground",title:"Estimated cost"},_t=N({__name:"AutomationRuns",setup(A){const h=$e(),k=we(),b=F(()=>String(h.params.orgId??"")),x=P("all"),_=P("all"),d=F(()=>({status:x.value==="all"?void 0:x.value,projectId:_.value==="all"?void 0:_.value})),{data:c,isLoading:C,isError:w}=Ae(d),{data:$}=G(),v=F(()=>c.value??[]),a=P(!1);function n(m){k.push({name:"automation-run-detail",params:{orgId:b.value,id:m}})}function R(m){n(m.id)}const y=["queued","claimed","running","passed","failed","inconclusive","error","cancelled"];function J(m){return m.charAt(0).toUpperCase()+m.slice(1)}function K(m){var l,z;const o=m.request;return((z=(l=o==null?void 0:o.testCases)==null?void 0:l[0])==null?void 0:z.name)??"Automation run"}function I(m){const o=m.request;return(o==null?void 0:o.applicationUrl)??""}function W(m){return new Date(m).toLocaleString()}function Y(m){const o=Pe(m);return!o||!o.cost.available?"":`$${o.cost.usd.toFixed(o.cost.usd<1?4:2)}`}return(m,o)=>(r(),g(ke,{title:"Automation Runs",subtitle:"Queue an automation run for the worker, watch it live, and download the results."},{"header-actions":s(()=>[t(e(S),{size:"xs","data-tour":"automation-runs-primary",onClick:o[0]||(o[0]=l=>a.value=!0)},{default:s(()=>[t(e(X),{class:"size-3.5"}),o[5]||(o[5]=i(" Start Run ",-1))]),_:1})]),default:s(()=>[u("div",Je,[u("div",Ke,[u("div",We,[t(e(V),{class:"text-xs text-muted-foreground"},{default:s(()=>[...o[6]||(o[6]=[i("Status",-1)])]),_:1}),t(e(q),{modelValue:x.value,"onUpdate:modelValue":o[1]||(o[1]=l=>x.value=l)},{default:s(()=>[t(e(T),{class:"w-40"},{default:s(()=>[t(e(L),{placeholder:"All"})]),_:1}),t(e(Q),null,{default:s(()=>[t(e(D),{value:"all"},{default:s(()=>[...o[7]||(o[7]=[i("All",-1)])]),_:1}),(r(),p(j,null,U(y,l=>t(e(D),{key:l,value:l},{default:s(()=>[i(f(J(l)),1)]),_:2},1032,["value"])),64))]),_:1})]),_:1},8,["modelValue"])]),(e($)??[]).length?(r(),p("div",Ye,[t(e(V),{class:"text-xs text-muted-foreground"},{default:s(()=>[...o[8]||(o[8]=[i("Project",-1)])]),_:1}),t(e(q),{modelValue:_.value,"onUpdate:modelValue":o[2]||(o[2]=l=>_.value=l)},{default:s(()=>[t(e(T),{class:"w-48"},{default:s(()=>[t(e(L),{placeholder:"All"})]),_:1}),t(e(Q),null,{default:s(()=>[t(e(D),{value:"all"},{default:s(()=>[...o[9]||(o[9]=[i("All",-1)])]),_:1}),(r(!0),p(j,null,U(e($)??[],l=>(r(),g(e(D),{key:l.name,value:l.name},{default:s(()=>[i(f(l.name),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"])])):O("",!0)]),e(C)?(r(),g(Ve,{key:0,rows:5,"row-class":"h-16"})):e(w)?(r(),g(e(_e),{key:1,variant:"destructive"},{default:s(()=>[t(e(ge),{class:"size-4"}),t(e(Be),null,{default:s(()=>[...o[10]||(o[10]=[i("Couldn't load automation runs",-1)])]),_:1}),t(e(be),null,{default:s(()=>[...o[11]||(o[11]=[i(" Something went wrong fetching the run list. Refresh to try again. ",-1)])]),_:1})]),_:1})):v.value.length?(r(),g(e(M),{key:3,class:"divide-y overflow-hidden rounded-md shadow-none"},{default:s(()=>[(r(!0),p(j,null,U(v.value,l=>(r(),p("button",{key:l.id,class:"flex w-full items-center gap-3 rounded-md px-4 py-3 text-left transition-colors hover:bg-muted/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",onClick:z=>n(l.id)},[t(e(ye),{variant:e(Re)(l),class:"w-28 shrink-0 justify-center"},{default:s(()=>[i(f(e(he)(l)),1)]),_:2},1032,["variant"]),u("div",et,[u("p",tt,f(K(l)),1),I(l)?(r(),p("p",at,f(I(l)),1)):O("",!0)]),u("div",st,[u("p",ot,f(l.project_id??"No project"),1),u("p",lt,f(W(l.created_at)),1)]),u("span",nt,f(Y(l)),1)],8,Ze))),128))]),_:1})):(r(),g(e(M),{key:2,class:"rounded-md shadow-none"},{default:s(()=>[t(Ce,{icon:e(xe),title:"No automation runs yet",description:"Queue a run to have the worker drive your application, then watch the agent trace live."},{action:s(()=>[t(e(S),{size:"xs",onClick:o[3]||(o[3]=l=>a.value=!0)},{default:s(()=>[t(e(X),{class:"size-3.5"}),o[12]||(o[12]=i(" Start Run ",-1))]),_:1})]),_:1},8,["icon"])]),_:1})),t(Ge,{open:a.value,"onUpdate:open":o[4]||(o[4]=l=>a.value=l),onCreated:R},null,8,["open"])])]),_:1}))}});
1export{_t as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.