PageSourceSearch

https://marnitus.com/assets/dashboard.flows-DN6bnLzx.js

js marnitus.com collected 2026-10-09 22:04:22 UTC 19,416 bytes, 1 lines download raw bytes

1import{j as t,L as S,b as w,k as Y,l as I,d as V,t as g,r as J,Z as H}from"./index-Dj7vxiay.js";import{u as v}from"./useMutation-B5BKydrv.js";import{l as X,c as U,t as K,d as $,r as Z,u as G,a as ee}from"./flows.functions-COIA3l5X.js";import{B as f}from"./button-CUA7RJFJ.js";import{B as D}from"./badge-dOpUCLGw.js";import{C as N}from"./card-CkRp2rGL.js";import{S as P}from"./skeleton-CJR86zi3.js";import{S as te,a as ne,b as ae,c as se,d as A}from"./select-B90ZKe1i.js";import{D as re,a as ie,b as oe,c as le,d as de}from"./dialog-Bhwd6iez.js";import{u as ce}from"./use-entitlement-DYhtWs6E.js";import{L as ue}from"./lock-BsFWgSKR.js";import{S as R}from"./sparkles-uNmEImGE.js";import{W}from"./workflow-DhcfI_fm.js";import{P as Q}from"./plus-CXOqONkh.js";import{C as me}from"./clock-Bp0zotT7.js";import{P as he}from"./pencil-BLX6un1z.js";import{P as fe}from"./pause-CfPnzyiR.js";import{P as xe}from"./play-DckMPWRo.js";import{T as pe}from"./trash-2-AV_t41-j.js";import{C as ge}from"./chevron-right-DCqO3Ymb.js";import"./index-B4TXNDcZ.js";import"./index-BWTnQl1E.js";import"./index-LHNt3CwB.js";import"./utils-BQHNewu7.js";import"./index-BdQq_4o_.js";import"./index-CxQfYNhV.js";import"./index-D3OXa5E4.js";import"./Combination-CulgiYJc.js";import"./index-CdqppYPd.js";import"./index-7LKioPxv.js";import"./index-DM_JK2DE.js";import"./index-BaqUVmsh.js";import"./index-DbJw63Cc.js";import"./chevron-down-CTsPxjel.js";import"./check-D-uAR3JL.js";import"./index-Cwl-ADsQ.js";import"./index-Cf9vClGj.js";const _=6e4,z=525600,O=43200,q=1440,E=Symbol.for("constructDateFrom");function T(e,a){return typeof e=="function"?e(a):e&&typeof e=="object"&&E in e?e[E](a):e instanceof Date?new e.constructor(a):new Date(a)}function k(e,a){return T(e,e)}let we={};function ye(){return we}function L(e){const a=k(e),n=new Date(Date.UTC(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds()));return n.setUTCFullYear(a.getFullYear()),+e-+n}function be(e,...a){const n=T.bind(null,e||a.find(s=>typeof s=="object"));return a.map(n)}function je(e,a){const n=+k(e)-+k(a);return n<0?-1:n>0?1:n}function ve(e){return T(e,Date.now())}function Ne(e){return a=>{const s=(e?Math[e]:Math.trunc)(a);return s===0?0:s}}const Pe={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},Me=(e,a,n)=>{let s;const i=Pe[e];return typeof i=="string"?s=i:a===1?s=i.one:s=i.other.replace("{{count}}",a.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+s:s+" ago":s};function F(e){return(a={})=>{const n=a.width?String(a.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}const Fe={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Se={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},De={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},ke={date:F({formats:Fe,defaultWidth:"full"}),time:F({formats:Se,defaultWidth:"full"}),dateTime:F({formats:De,defaultWidth:"full"})},Ce={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},We=(e,a,n,s)=>Ce[e];function b(e){return(a,n)=>{const s=n?.context?String(n.context):"standalone";let i;if(s==="formatting"&&e.formattingValues){const r=e.defaultFormattingWidth||e.defaultWidth,c=n?.width?String(n.width):r;i=e.formattingValues[c]||e.formattingValues[r]}else{const r=e.defaultWidth,c=n?.width?String(n.width):e.defaultWidth;i=e.values[c]||e.values[r]}const d=e.argumentCallback?e.argumentCallback(a):a;return i[d]}}const Te={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},Ae={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},Re={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},_e={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Frid
1ay","Saturday"]},ze={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},Oe={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},qe=(e,a)=>{const n=Number(e),s=n%100;if(s>20||s<10)switch(s%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},Ee={ordinalNumber:qe,era:b({values:Te,defaultWidth:"wide"}),quarter:b({values:Ae,defaultWidth:"wide",argumentCallback:e=>e-1}),month:b({values:Re,defaultWidth:"wide"}),day:b({values:_e,defaultWidth:"wide"}),dayPeriod:b({values:ze,defaultWidth:"wide",formattingValues:Oe,defaultFormattingWidth:"wide"})};function j(e){return(a,n={})=>{const s=n.width,i=s&&e.matchPatterns[s]||e.matchPatterns[e.defaultMatchWidth],d=a.match(i);if(!d)return null;const r=d[0],c=s&&e.parsePatterns[s]||e.parsePatterns[e.defaultParseWidth],u=Array.isArray(c)?Ie(c,h=>h.test(r)):Le(c,h=>h.test(r));let l;l=e.valueCallback?e.valueCallback(u):u,l=n.valueCallback?n.valueCallback(l):l;const x=a.slice(r.length);return{value:l,rest:x}}}function Le(e,a){for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&a(e[n]))return n}function Ie(e,a){for(let n=0;n<e.length;n++)if(a(e[n]))return n}function Ve(e){return(a,n={})=>{const s=a.match(e.matchPattern);if(!s)return null;const i=s[0],d=a.match(e.parsePattern);if(!d)return null;let r=e.valueCallback?e.valueCallback(d[0]):d[0];r=n.valueCallback?n.valueCallback(r):r;const c=a.slice(i.length);return{value:r,rest:c}}}const Qe=/^(\d+)(th|st|nd|rd)?/i,Be=/\d+/i,Ye={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},Je={any:[/^b/i,/^(a|c)/i]},He={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Xe={any:[/1/i,/2/i,/3/i,/4/i]},Ue={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},Ke={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},$e={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},Ze={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},Ge={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},et={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},tt={ordinalNumber:Ve({matchPattern:Qe,parsePattern:Be,valueCallback:e=>parseInt(e,10)}),era:j({matchPatterns:Ye,defaultMatchWidth:"wide",parsePatterns:Je,defaultParseWidth:"any"}),quarter:j({matchPatterns:He,defaultMatchWidth:"wide",parsePatterns:Xe,defaultParseWidth:"any",valueCallback:e=>e+1}),month:j({matchPatterns:Ue,defaultMatchWidth:"wide",parsePatterns:Ke,defaultParseWidth:"any"}),day:j({matchPatterns:$e,defaultMatchWidth:"wide",parsePatterns:Ze,defaultParseWidth:"any"}),dayPeriod:j({matchPatterns:Ge,defaultMatchWidth:"any",parsePatterns:et,defaultParseWidth:"any"})},nt={code:"en-US",formatDistance:Me,formatLong:ke,formatRelative:We,localize:Ee,match:tt,options:{weekStartsOn:0,firstWeekContainsDate:1}};function at(e,a,n){const s=ye(),i=n?.locale??s.locale??nt,d=je(e,a);if(isNaN(d))throw new RangeError("Invalid time value");const r=Object.assign({},n,{addSuffix:n?.addSuffix,comparison:d}),[c,u]=be(n?.in,...d>0?[a,e]:[e,a]),l=Ne(n?.roundingMethod??"round"),x=u.getTime()-c.getTime(),h=x/_,M=L(u)-L(c),y=(x-M)/_,p=n?.unit;let m;if(p?m=p:h<1?m="second":h<60?m="minute":h<q?m="hour":y<O?m="day":y<z?m="month":m="year",m==="second"){const o=l(x/1e3);return i.formatDistance("xSeconds",o,r)}else if(m==="minute"){const o=l(h);return i.formatDistance("xMinutes",o,r)}else if(m==="hour"){const o=l(h/60);return i.formatDistance("xHours",o,r)}else if(m==="day"){const o=l(y/q);return i.formatDistance("xDays",o,r)}else if(m==="month"){const o=l(y/O);return o===12&&p!=="month"?i.formatDistance("xYears",1,r):i.formatDistance("xMonths",o,r)}else{const o=l(y/z);return i.formatDistance("xYears",o,r)}}function C(e,a){return at(e,ve(e),a)}const st={free:{maxActiveFlows:0,maxNodesPerFlow:0,maxRunsPerDay:0,webhookTriggers:!1,webhookOutputs:!1},starter:{maxActiveFlows:3,maxNodesPerFlow:3,maxRunsPerDay:10,webhookTriggers:!1,webhookOutputs:!1},pro:{maxActiveFlows:15,maxNodesPerFlow:10,maxRunsPerDay:100,webhookTriggers:!0,webhookOutputs:!0},admin:{maxActiveFlows:9999,maxNodesPerFlow:9999,maxRunsPerDay:9999,webhookTriggers:!0,webhookOutputs:!0}};function B(e){return e==="admin"?"admin":e==="pro"||e==="agency"||e==="premium"?"pro":e==="starter"?"starter":"free"}function rt(e){return st[B(e)]}function it({activeCount:e}){const{role:a,ready:n}=ce();if(!n)return null;const s=B(a),i=rt(a),d=e>=i.maxActiveFlows;return s==="free"?t.jsx(N,{className:"p-4 md:p-5 mb-4 border-gold/40 bg-gradient-to-r from-gold/[0.06] to-transparent",children:t.jsxs("div",{className:"flex items-start justify-between gap-4 flex-wrap",children:[t.jsxs("div",{className:"flex gap-3 items-start",children:[t.jsx("div",{className:"h-9 w-9 rounded-full bg-gold/15 flex items-center justify-center text-gold shrink-0",children:t.jsx(ue,{className:"h-4 w-4"})}),t.jsxs("div",{children:[t.jsx("h3",{className:"text-[14px] font-medium",children:"Flows are a paid feature"}),t.jsx("p",{className:"text-[12px] text-muted-foreground mt-0.5 max-w-md",children:"Chain Marnitus tools into scheduled multi-step automations. Start on Starter for 3 flows + 10 runs/day."})]})]}),t.jsx(f,{asChild:!0,size:"sm",children:t.jsxs(S,{to:"/dashboard/billing",children:[t.jsx(R,{className:"h-3.5 w-3.5 mr-1.5"}),"Upgrade"]})})]})}):t.jsxs(N,{className:"p-3.5 md:p-4 mb-4 flex items-center justify-between gap-4 flex-wrap",children:[t.jsxs("div",{className:"text-[12.5px]",children:[t.jsx("span",{className:"font-medium",children:e}),t.jsxs("span",{className:"text-muted-foreground",children:[" / ",i.maxActiveFlows," active flows · "]}),t.jsxs("span",{className:"text-muted-foreground",children:[i.maxRunsPerDay," runs/day · "]}),t.jsxs("span",{className:"text-muted-foreground capitalize",children:[s," plan"]})]}),d&&s!=="admin"&&t.jsx(f,{asChild:!0,size:"sm",variant:"outline",children:t.jsxs(S,{to:"/dashboard/billing",children:[t.jsx(R,{className:"h-3.5 w-3.5 mr-1.5"}),"Upgrade for more"]})})]})}function Ht(){const e=w(X),a=w(U),n=Y(),s=I(),{data:i,isLoading:d}=V({queryKey:["flows"],queryFn:()=>e(),staleTime:15e3}),r=i?.flows??[],c=r.filter(l=>l.active).length,u=v({mutationFn:()=>a({data:{}}),onSuccess:l=>{s.invalidateQueries({queryKey:["flows"]}),n({to:"/dashboard/flows/$flowId/edit",params:{flowId:l.id}})},onError:l=>g.error(l.message)});return t.jsxs("div",{className:"mx-auto max-w-5xl px-4 py-6 md:py-10",children:[t.jsxs("header",{className:"mb-6 flex items-start justify-between gap-4 flex-wrap",children:[t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center gap-2 text-[11px] uppercase tracking-[0.22em] text-muted-foreground",children:[t.jsx(W,{className:"h-3.5 w-3.5"}),"Automation"]}),t.jsx("h1",{className:"mt-1 text-2xl md:text-3xl font-semibold",children:"Flows"}),t.jsx("p",{className:"mt-1 text-sm text-muted-foreground max-w-xl",children:"Chain Marnitus tools into scheduled multi-step runs. Build them visually, run daily or weekly, and get outputs in your history and inbox."})]}),t.jsx("div",{className:"flex gap-2",children:t.jsxs(f,{size:"sm",onClick:()=>u.mutate(),disabled:u.isPending,children:[t.jsx(Q,{className:"h-4 w-4 mr-1.5"}),"New flow"]})})]}),t.jsx(it,{activeCount:c}
1),d?t.jsxs("div",{className:"space-y-3",children:[t.jsx(P,{className:"h-24 w-full rounded-2xl"}),t.jsx(P,{className:"h-24 w-full rounded-2xl"})]}):r.length>0?t.jsx("div",{className:"space-y-3",children:r.map(l=>t.jsx(lt,{flow:l},l.id))}):t.jsx(ot,{onCreate:()=>u.mutate()})]})}function ot({onCreate:e}){return t.jsxs(N,{className:"p-10 text-center border-dashed",children:[t.jsx("div",{className:"mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-primary/10 text-primary",children:t.jsx(W,{className:"h-6 w-6"})}),t.jsx("h2",{className:"mt-4 text-lg font-semibold",children:"No flows yet"}),t.jsx("p",{className:"mt-1 text-sm text-muted-foreground max-w-md mx-auto",children:"Build your first automation: schedule a trigger, chain one or more Marnitus tools, and pick where finished output should land."}),t.jsxs(f,{className:"mt-5",onClick:e,children:[t.jsx(Q,{className:"h-4 w-4 mr-1.5"}),"Create your first flow"]})]})}function lt({flow:e}){const a=I(),[n,s]=J.useState(!1),i=w(K),d=w($),r=w(Z),c=w(G),u=()=>a.invalidateQueries({queryKey:["flows"]}),l=v({mutationFn:o=>i({data:{id:e.id,active:o}}),onSuccess:u,onError:o=>g.error(o.message)}),x=v({mutationFn:()=>d({data:{id:e.id}}),onSuccess:()=>{g.success("Flow deleted"),u()},onError:o=>g.error(o.message)}),h=v({mutationFn:()=>r({data:{id:e.id}}),onSuccess:o=>{g.success(`Enqueued ${o.enqueued} step${o.enqueued===1?"":"s"}`),u()},onError:o=>g.error(o.message)}),M=v({mutationFn:o=>c({data:{id:e.id,cadence:o}}),onSuccess:()=>{g.success("Schedule updated"),u()},onError:o=>g.error(o.message)}),p=(e.nodes??[]).filter(o=>o.type==="tool"),m=e.trigger?.cadence??"daily";return t.jsxs(N,{className:"p-4 md:p-5 transition-colors hover:border-border/80",children:[t.jsxs("div",{className:"flex items-start justify-between gap-4 flex-wrap",children:[t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[t.jsx("h3",{className:"text-[15px] font-medium truncate",children:e.name}),t.jsx(D,{variant:e.active?"default":"secondary",className:"text-[10px]",children:e.active?"Active":"Paused"}),e.last_run_status==="failed"&&t.jsx(D,{variant:"destructive",className:"text-[10px]",children:"Last run failed"})]}),t.jsxs("div",{className:"mt-1.5 flex items-center gap-3 text-[12px] text-muted-foreground flex-wrap",children:[t.jsxs("span",{className:"inline-flex items-center gap-1",children:[t.jsx(W,{className:"h-3.5 w-3.5"}),p.length," tool step",p.length===1?"":"s"]}),e.next_run_at&&e.active&&t.jsxs("span",{className:"inline-flex items-center gap-1",children:[t.jsx(me,{className:"h-3.5 w-3.5"}),"Next in"," ",C(new Date(e.next_run_at))]}),e.last_run_at&&t.jsxs("span",{children:["Last ",C(new Date(e.last_run_at),{addSuffix:!0})]}),t.jsxs("span",{children:[e.run_stats.total," run",e.run_stats.total===1?"":"s"]})]})]}),t.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[t.jsxs(te,{value:m,onValueChange:o=>M.mutate(o),children:[t.jsx(ne,{className:"h-8 w-[110px] text-[12px]",children:t.jsx(ae,{})}),t.jsxs(se,{children:[t.jsx(A,{value:"daily",children:"Daily"}),t.jsx(A,{value:"weekly",children:"Weekly"})]})]}),t.jsx(f,{size:"sm",variant:"outline",asChild:!0,children:t.jsxs(S,{to:"/dashboard/flows/$flowId/edit",params:{flowId:e.id},children:[t.jsx(he,{className:"h-3.5 w-3.5 mr-1.5"}),"Edit"]})}),t.jsxs(f,{size:"sm",variant:"outline",onClick:()=>h.mutate(),disabled:h.isPending||p.length===0,title:p.length===0?"Add a tool step in the editor first":"Run this flow now",children:[t.jsx(H,{className:"h-3.5 w-3.5 mr-1.5"}),h.isPending?"Starting…":"Run now"]}),t.jsx(f,{size:"sm",variant:"ghost",onClick:()=>l.mutate(!e.active),disabled:l.isPending,"aria-label":e.active?"Pause flow":"Activate flow",children:e.active?t.jsx(fe,{className:"h-3.5 w-3.5"}):t.jsx(xe,{className:"h-3.5 w-3.5"})}),t.jsx(f,{size:"sm",variant:"ghost",onClick:()=>{confirm(`Delete flow "${e.name}"?`)&&x.mutate()},disabled:x.isPending,"aria-label":"Delete flow",children:t.jsx(pe,{className:"h-3.5 w-3.5"})}),t.jsxs(f,{size:"sm",variant:"ghost",onClick:()=>s(!0),"aria-label":"View run history",children:["History ",t.jsx(ge,{className:"h-3.5 w-3.5 ml-1"})]})]})]}),t.jsx(dt,{open:n,onOpenChange:s,flow:e})]})}function dt({open:e,onOpenChange:a,flow:n}){const s=w(ee),{data:i,isLoading:d}=V({queryKey:["flow-runs",n.id],queryFn:()=>s({data:{flowId:n.id,limit:20}}),enabled:e});return t.jsx(re,{open:e,onOpenChange:a,children:t.jsxs(ie,{className:"max-w-lg",children:[t.jsxs(oe,{children:[t.jsx(le,{children:n.name}),t.jsx(de,{children:"Recent run history"})]}),t.jsx("div",{className:"mt-2 max-h-[60vh] overflow-y-auto space-y-2",children:d?t.jsxs(t.Fragment,{children:[t.jsx(P,{className:"h-12 w-full"}),t.jsx(P,{className:"h-12 w-full"})]}):i&&i.length>0?i.map(r=>
1t.jsxs("div",{className:"rounded-lg border border-border/70 p-3 text-[12px] flex items-start justify-between gap-3",children:[t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(D,{variant:r.status==="succeeded"?"default":r.status==="failed"?"destructive":"secondary",className:"text-[10px]",children:r.status}),t.jsxs("span",{className:"text-muted-foreground",children:["via ",r.trigger_source]})]}),r.error&&t.jsx("p",{className:"mt-1 text-destructive text-[11px] line-clamp-2",children:r.error})]}),t.jsxs("div",{className:"text-right text-muted-foreground text-[11px] whitespace-nowrap",children:[C(new Date(r.started_at),{addSuffix:!0}),r.duration_ms!=null&&t.jsxs("div",{children:[Math.max(1,Math.round(r.duration_ms)),"ms"]})]})]},r.id)):t.jsx("p",{className:"text-sm text-muted-foreground text-center py-6",children:'No runs yet. Hit "Run now" to trigger the first one.'})})]})})}export{Ht as component};

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.