1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[32022],{65097:function(e,t,r){r.d(t,{GV:function(){return g},TH:function(){return x},Zw:function(){return d},i9:function(){return p},j3:function(){return m},xN:function(){return u}});var a=r(57437),s=r(2265),n=r(55211),l=r(37346);n.kL.register(n.uw,n.f$,n.od,n.jn,n.ZL,n.Gu,n.u,n.De);let o=["rgb(139, 92, 246)","rgb(59, 130, 246)","rgb(16, 185, 129)","rgb(245, 158, 11)","rgb(239, 68, 68)","rgb(168, 85, 247)","rgb(6, 182, 212)","rgb(249, 115, 22)"],i=(e,t)=>e.replace("rgb(","rgba(").replace(")",", ".concat(t,")")),c={responsive:!0,maintainAspectRatio:!1,plugins:{tooltip:{backgroundColor:"rgba(0, 0, 0, 0.85)",titleFont:{size:11},bodyFont:{size:11,family:"monospace"},padding:8,cornerRadius:6},legend:{position:"top",labels:{color:"rgba(255,255,255,0.5)",font:{size:10},boxWidth:12,padding:12}}},scales:{x:{grid:{color:"rgba(255,255,255,0.05)"},ticks:{color:"rgba(255,255,255,0.35)",font:{size:10},maxRotation:45}},y:{grid:{color:"rgba(255,255,255,0.05)"},ticks:{color:"rgba(255,255,255,0.35)",font:{size:10}}}}},d=(0,s.memo)(function(e){let{labels:t,datasets:r,height:n=300}=e,d=(0,s.useMemo)(()=>({labels:t,datasets:r.map((e,r)=>({...e,borderColor:o[r%o.length],backgroundColor:e.fill?i(o[r%o.length],.1):o[r%o.length],tension:.3,pointRadius:t.length>30?0:2,pointHoverRadius:4,borderWidth:2}))}),[t,r]);return(0,a.jsx)("div",{style:{height:n},children:(0,a.jsx)(l.x1,{data:d,options:c})})}),u=(0,s.memo)(function(e){let{labels:t,datasets:r,height:n=300}=e,d=(0,s.useMemo)(()=>({labels:t,datasets:r.map((e,t)=>({...e,backgroundColor:i(o[t%o.length],.7),borderColor:o[t%o.length],borderWidth:1}))}),[t,r]),u=(0,s.useMemo)(()=>({...c,scales:{...c.scales,x:{...c.scales.x,stacked:!0},y:{...c.scales.y,stacked:!0}}}),[]);return(0,a.jsx)("div",{style:{height:n},children:(0,a.jsx)(l.$Q,{data:d,options:u})})}),x=(0,s.memo)(function(e){let{labels:t,datasets:r,height:n=300}=e,d=(0,s.useMemo)(()=>({labels:t,datasets:r.map((e,r)=>({...e,borderColor:o[r%o.length],backgroundColor:i(o[r%o.length],.15),fill:!0,tension:.3,pointRadius:t.length>30?0:2,pointHoverRadius:4,borderWidth:2}))}),[t,r]);return(0,a.jsx)("div",{style:{height:n},children:(0,a.jsx)(l.x1,{data:d,options:c})})}),m=(0,s.memo)(function(e){let{cohorts:t,maxWeeks:r=8}=e,s=e=>e>=80?"bg-emerald-500/60":e>=60?"bg-emerald-500/40":e>=40?"bg-emerald-500/25":e>=20?"bg-amber-500/25":e>0?"bg-red-500/20":"bg-transparent";return(0,a.jsx)("div",{className:"overflow-x-auto",children:(0,a.jsxs)("table",{className:"w-full text-[10px]",children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{className:"text-left px-2 py-1.5 text-[rgb(var(--muted-foreground))] font-medium",children:"Cohort"}),(0,a.jsx)("th",{className:"text-center px-2 py-1.5 text-[rgb(var(--muted-foreground))] font-medium",children:"Size"}),Array.from({length:r+1},(e,t)=>(0,a.jsxs)("th",{className:"text-center px-1 py-1.5 text-[rgb(var(--muted-foreground))] font-medium",children:["W",t]},t))]})}),(0,a.jsx)("tbody",{children:t.map(e=>(0,a.jsxs)("tr",{className:"border-t border-[rgb(var(--border-subtle))]",children:[(0,a.jsx)("td",{className:"px-2 py-1 text-[rgb(var(--foreground))] font-mono",children:e.cohort_week.slice(5)}),(0,a.jsx)("td",{className:"text-center px-2 py-1 text-[rgb(var(--muted-foreground))]",children:e.cohort_size}),Array.from({length:r+1},(t,r)=>{let n=e.weeks.find(e=>e.week===r);return(0,a.jsx)("td",{className:"text-center px-1 py-1",children:n?(0,a.jsxs)("span",{className:"inline-block w-full px-1 py-0.5 rounded ".concat(s(n.pct)," text-[rgb(var(--foreground))]"),children:[n.pct,"%"]}):(0,a.jsx)("span",{className:"text-[rgb(var(--muted-foreground))]/30",children:"-"})},r)})]},e.cohort_week))})]})})}),g=(0,s.memo)(function(e){let{steps:t}=e,r=Math.max(...t.map(e=>e.value),1);return(0,a.jsx)("div",{className:"space-y-2",children:t.map((e,t)=>(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("span",{className:"text-xs text-[rgb(var(--muted-foreground))] w-36 text-right shrink-0",children:e.label}),(0,a.jsxs)("div",{className:"flex-1 h-7 rounded bg-[rgb(var(--muted))]/30 overflow-hidden relative",children:[(0,a.jsx)("div",{className:"h-full rounded transition-all",style:{width:"".concat(e.value/r*100,"%"),backgroundColor:i(o[t%o.length],.6)}}),(0,a.jsxs)("span",{className:"absolute inset-0 flex items-center px-2 text-[11px] font-medium text-[rgb(var(--foreground))]",children:[e.value.toLocaleStr
1ing(),void 0!==e.pct&&(0,a.jsxs)("span",{className:"ml-1 text-[rgb(var(--muted-foreground))]",children:["(",e.pct,"%)"]})]})]})]},e.label))})});function p(e){let{label:t,value:r,sub:s,color:n="text-brand-600"}=e;return(0,a.jsxs)("div",{className:"p-4 rounded-xl bg-[rgb(var(--card))] border border-[rgb(var(--border))]",children:[(0,a.jsx)("p",{className:"text-[11px] text-[rgb(var(--muted-foreground))] uppercase tracking-wider font-medium mb-1",children:t}),(0,a.jsx)("p",{className:"text-xl font-bold ".concat(n),children:r}),s&&(0,a.jsx)("p",{className:"text-[10px] text-[rgb(var(--muted-foreground))] mt-0.5",children:s})]})}},69216:function(e,t,r){r.r(t),r.d(t,{SessionThread:function(){return _},default:function(){return C}});var a=r(57437),s=r(2265),n=r(3274),l=r(76780),o=r(42421),i=r(70518),c=r(87592),d=r(54817),u=r(63026),x=r(56222),m=r(67537),g=r(96264),p=r(65097);let h=[{key:"vc",label:"VC Metrics"},{key:"usage",label:"Usage"},{key:"economics",label:"Economics"},{key:"capacity",label:"Capacity"},{key:"signups",label:"Signups"},{key:"chats",label:"Chat Explorer"}];function b(e){let{title:t,children:r,loading:s}=e;return(0,a.jsxs)("div",{className:"rounded-xl border border-[rgb(var(--border))] bg-[rgb(var(--card))] overflow-hidden",children:[(0,a.jsxs)("div",{className:"px-4 py-3 border-b border-[rgb(var(--border-subtle))] flex items-center justify-between",children:[(0,a.jsx)("h3",{className:"text-xs font-semibold text-[rgb(var(--foreground))] uppercase tracking-wider",children:t}),s&&(0,a.jsx)(n.Z,{className:"w-3.5 h-3.5 text-brand-500 animate-spin"})]}),(0,a.jsx)("div",{className:"p-4",children:r})]})}function f(){let[e,t]=(0,s.useState)([]),[r,n]=(0,s.useState)([]),[l,o]=(0,s.use
1State)(null),[i,c]=(0,s.useState)(!0);(0,s.useEffect)(()=>{Promise.all([(0,g.fetchDauMetrics)(90).then(e=>t(e.rows)),(0,g.fetchRetentionMetrics)(8).then(e=>n(e.rows)),(0,g.fetchActivationFunnel)().then(e=>o(e.rows[0]||null))]).catch(console.error).finally(()=>c(!1))},[]);let d=(0,s.useMemo)(()=>{let t=[...e].reverse();return{labels:t.map(e=>{var t;return(null===(t=e.day)||void 0===t?void 0:t.slice(5))||""}),datasets:[{label:"DAU",data:t.map(e=>Number(e.dau)||0)},{label:"WAU",data:t.map(e=>Number(e.wau)||0)},{label:"MAU",data:t.map(e=>Number(e.mau)||0)}]}},[e]),u=(0,s.useMemo)(()=>{let e=new Map;for(let t of r)e.has(t.cohort_week)||e.set(t.cohort_week,{cohort_size:Number(t.cohort_size),weeks:[]}),e.get(t.cohort_week).weeks.push({week:Number(t.week_number),pct:Number(t.retention_pct)});return Array.from(e.entries()).map(e=>{let[t,r]=e;return{cohort_week:t,...r}})},[r]),x=e[0],m=x?Number(x.stickiness_pct):0;return(0,a.jsxs)("div",{className:"space-y-4",children:[l&&(0,a.jsxs)("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-3",children:[(0,a.jsx)(p.i9,{label:"DAU/MAU Stickiness",value:"".concat(m,"%"),sub:"Target: 25%+",color:m>=25?"text-emerald-500":"text-amber-500"}),(0,a.jsx)(p.i9,{label:"DAU (latest)",value:Number((null==x?void 0:x.dau)||0)}),(0,a.jsx)(p.i9,{label:"Activation Rate",value:"".concat(l.account_to_chat_pct||0,"%"),sub:"Account -> First Chat"}),(0,a.jsx)(p.i9,{label:"Median Time to Chat",value:"".concat(l.median_hours_to_first_chat||0,"h"),sub:"After account creation"})]}),(0,a.jsx)(b,{title:"DAU / WAU / MAU (90 days)",loading:i,children:e.length>0?(0,a.jsx)(p.Zw,{labels:d.labels,datasets:d.datasets}):(0,a.jsx)("p",{className:"text-xs text-[rgb(var(--muted-foreground))] text-center py-8",children:"No data yet"})}),l&&(0,a.jsx)(b,{title:"Activation Funnel",children:(0,a.jsx)(p.GV,{steps:[{label:"Signups",value:Number(l.total_signups),pct:100},{label:"Approved",value:Number(l.alpha_granted),pct:Number(l.signup_to_alpha_pct)},{label:"Account Created",value:Number(l.accounts_created),pct:Number(l.alpha_to_account_pct)},{label:"First Chat",value:Number(l.activated_users),pct:Number(l.account_to_chat_pct)}]})}),(0,a.jsx)(b,{title:"Weekly Retention Cohorts",loading:i,children:u.length>0?(0,a.jsx)(p.j3,{cohorts:u,maxWeeks:8}):(0,a.jsx)("p",{className:"text-xs text-[rgb(var(--muted-foreground))] text-center py-8",children:"No cohort data yet"})})]})}function v(){var e,t,r;let[n,l]=(0,s.useState)([]),[o,i]=(0,s.useState)([]),[c,d]=(0,s.useState)([]),[u,x]=(0,s.use
1State)(!0);(0,s.useEffect)(()=>{Promise.all([(0,g.fetchChatVolumeMetrics)(30).then(e=>l(e.rows)),(0,g.fetchAgentUsageMetrics)(30).then(e=>i(e.rows)),(0,g.fetchSkillVelocityMetrics)(90).then(e=>d(e.rows))]).catch(console.error).finally(()=>x(!1))},[]);let m=(0,s.useMemo)(()=>{let e=[...n].reverse();return{labels:e.map(e=>{var t;return(null===(t=e.day)||void 0===t?void 0:t.slice(5))||""}),datasets:[{label:"User",data:e.map(e=>Number(e.user_messages)||0)},{label:"Assistant",data:e.map(e=>Number(e.assistant_messages)||0)},{label:"Tool Calls",data:e.map(e=>Number(e.tool_calls)||0)},{label:"Errors",data:e.map(e=>Number(e.tool_errors)||0)}]}},[n]),h=(0,s.useMemo)(()=>{let e=new Map;for(let t of o){let r=t.agent_name;e.has(r)||e.set(r,{sessions:0,users:new Set,credits:0});let a=e.get(r);a.sessions+=Number(t.sessions)||0,a.credits+=Number(t.total_credits)||0}return Array.from(e.entries()).map(e=>{let[t,r]=e;return{name:t,sessions:r.sessions,credits:r.credits}}).sort((e,t)=>t.sessions-e.sessions).slice(0,10)},[o]),f=(0,s.useMemo)(()=>{let e=[...c].reverse();return{labels:e.map(e=>{var t;return(null===(t=e.day)||void 0===t?void 0:t.slice(5))||""}),datasets:[{label:"Skills Created",data:e.map(e=>Number(e.skills_created)||0)},{label:"7d Avg",data:e.map(e=>Number(e.rolling_7d_avg)||0)}]}},[c]),v=n[0],N=v&&Number(v.tool_results)>0?(Number(v.tool_errors)/Number(v.tool_results)*100).toFixed(1):"0";return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-3",children:[(0,a.jsx)(p.i9,{label:"Today's Messages",value:Number((null===(e=n[0])||void 0===e?void 0:e.user_messages)||0)+Number((null===(t=n[0])||void 0===t?void 0:t.assistant_messages)||0)}),(0,a.jsx)(p.i9,{label:"Active Sessions",value:Number((null===(r=n[0])||void 0===r?void 0:r.active_sessions)||0)}),(0,a.jsx)(p.i9,{label:"Tool Error Rate",value:"".concat(N,"%"),color:Number(N)>5?"text-red-500":"text-emerald-500"})]}),(0,a.jsx)(b,{title:"Chat Volume (30 days)",loading:u,children:n.length>0?(0,a.jsx)(p.xN,{labels:m.labels,datasets:m.datasets}):(0,a.jsx)("p",{className:"text-xs text-[rgb(var(--muted-foreground))] text-center py-8",children:"No data"})}),(0,a.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,a.jsx)(b,{title:"Agent Leaderboard (30d)",children:h.length>0?(0,a.jsx)("div",{className:"space-y-2",children:h.map((e,t)=>(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)("span",{className:"text-[10px] text-[rgb(var(--muted-foreground))] w-4",children:[t+1,"."]}),(0,a.jsx)("span",{className:"text-xs text-[rgb(var(--foreground))] flex-1 truncate",children:e.name}),(0,a.jsxs)("span",{className:"text-xs text-[rgb(var(--muted-foreground))] font-mono",children:[e.sessions," sessions"]})]},e.name))}):(0,a.jsx)("p",{className:"text-xs text-[rgb(var(--muted-foreground))] text-center py-4",children:"No agent data"})}),(0,a.jsx)(b,{title:"Skill Creation Velocity (90d)",loading:u,children:c.length>0?(0,a.jsx)(p.Zw,{labels:f.labels,datasets:f.datasets,height:200}):(0,a.jsx)("p",{className:"text-xs text-[rgb(var(--muted-foreground))] text-center py-4",children:"No data"})})]}),(0,a.jsx)(j,{})]})}function j(){let[e,t]=(0,s.useState)([]),[r,n]=(0,s.useState)(!0),[d,u]=(0,s.useState)(null),[x,m]=(0,s.useState)(1),[p,h]=(0,s.use
1State)(0),[f,v]=(0,s.useState)(null),[j,N]=(0,s.useState)(7),y=(0,s.useCallback)((e,r)=>{n(!0),u(null),(0,g.fetchToolErrors)({days:r,page:e,limit:25}).then(e=>{t(e.rows),h(e.total),m(e.page)}).catch(e=>{console.error("Tool error log fetch failed:",e),u((null==e?void 0:e.message)||"Failed to load tool errors")}).finally(()=>n(!1))},[]);(0,s.useEffect)(()=>{y(1,j)},[j,y]);let w=Math.ceil(p/25);return(0,a.jsxs)(b,{title:"Tool Error Log (".concat(p," errors, last ").concat(j,"d)"),loading:r,children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,a.jsxs)("select",{value:j,onChange:e=>N(Number(e.target.value)),className:"text-xs bg-[rgb(var(--background))] border border-[rgb(var(--border))] rounded px-2 py-1 text-[rgb(var(--foreground))]",children:[(0,a.jsx)("option",{value:1,children:"Last 24h"}),(0,a.jsx)("option",{value:7,children:"Last 7d"}),(0,a.jsx)("option",{value:30,children:"Last 30d"}),(0,a.jsx)("option",{value:90,children:"Last 90d"})]}),(0,a.jsxs)("span",{className:"text-[10px] text-[rgb(var(--muted-foreground))] ml-auto",children:["Page ",x," of ",w||1]})]}),0!==e.length||r?(0,a.jsx)("div",{className:"space-y-1.5",children:e.map(e=>{var t;let r=f===e.message_id;return(0,a.jsxs)("div",{className:"border border-[rgb(var(--border-subtle))] rounded-lg overflow-hidden",children:[(0,a.jsxs)("button",{onClick:()=>v(r?null:e.message_id),className:"w-full flex items-start gap-2 px-3 py-2 text-left hover:bg-[rgb(var(--background))] transition-colors",children:[(0,a.jsx)(l.Z,{className:"w-3.5 h-3.5 text-red-500 mt-0.5 shrink-0"}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,a.jsx)("span",{className:"text-xs font-mono font-semibold text-red-400",children:e.tool_name}),(0,a.jsx)("span",{className:"text-[10px] text-[rgb(var(--muted-foreground))]",children:e.agent_name}),(0,a.jsx)("span",{className:"text-[10px] text-[rgb(var(--muted-foreground))] ml-auto shrink-0",children:new Date(e.error_time).toLocaleString()})]}),(0,a.jsx)("p",{className:"text-[11px] text-[rgb(var(--muted-foreground))] truncate mt-0.5",children:(null===(t=e.error_content)||void 0===t?void 0:t.slice(0,120))||"(empty)"})]}),(0,a.jsx)(o.Z,{className:"w-3.5 h-3.5 text-[rgb(var(--muted-foreground))] shrink-0 mt-0.5 transition-transform ".concat(r?"rotate-180":"")})]}),r&&(0,a.jsxs)("div",{className:"border-t border-[rgb(var(--border-subtle))] bg-[rgb(var(--background))] px-3 py-2.5 space-y-2",children:[(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-x-4 gap-y-1 text-[11px]",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-[rgb(var(--muted-foreground))]",children:"User: "}),(0,a.jsxs)("span",{className:"text-[rgb(var(--foreground))]",children:[e.user_name," (",e.user_email,")"]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-[rgb(var(--muted-foreground))]",children:"Agent: "}),(0,a.jsx)("span",{className:"text-[rgb(var(--foreground))]",children:e.agent_name})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-[rgb(var(--muted-foreground))]",children:"Session: "}),(0,a.jsx)("span",{className:"text-[rgb(var(--foreground))]",children:e.session_title})]}),e.trace_id&&(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-[rgb(var(--muted-foreground))]",children:"Trace: "}),(0,a.jsx)("span",{className:"text-[rgb(var(--foreground))] font-mono",children:e.trace_id})]})]}),e.tool_args_preview&&(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-[10px] text-[rgb(var(--muted-foreground))] uppercase tracking-wider mb-0.5",children:"Tool Args"}),(0,a.jsx)("pre",{className:"text-[11px] text-[rgb(var(--foreground))] bg-[rgb(var(--card))] rounded p-2 overflow-x-auto whitespace-pre-wrap break-all max-h-40 font-mono",children:(()=>{try{return JSON.stringify(JSON.parse(e.tool_args_preview),null,2)}catch(t){return e.tool_args_preview}})()})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-[10px] text-[rgb(var(--muted-foreground))] uppercase tracking-wider mb-0.5",children:"Full Error"}),(0,a.jsx)("pre",{className:"text-[11px] text-red-400 bg-[rgb(var(--card))] rounded p-2 overflow-x-auto whitespace-pre-wrap break-all max-h-60 font-mono",children:e.error_content||"(empty)"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[(0,a.jsx)("button",{onClick:()=>navigator.clipboard.writeText(e.error_content||""),className:"text-[10px] text-[rgb(var(--muted-foreground))] hover:text-[rgb(var(--foreground))] transition-colors",children:"Copy error"}),(0,a.jsx)("span",{className:"text-[rgb(var(--border))]",children:"|"}),(0,a.jsx)("button",{onClick:()=>navigator.clipboard.writeText(JSON.stringify(e,null,2)),className:"text-[10px] text-[rgb(var(--muted-foreground))] hover:text-[rgb(var(--foreground))] transition-colors",children:"Copy full JSON"}),(0,a.jsx)("span",{className:"text-[10px] text-[rgb(var(--muted-foreground))] ml-auto font-mono",children:e.message_id.slice(0,8)})]})]})]},e.message_id)})}):(0,a.jsx)("p",{className:"text-xs text-[rgb(var(--muted-foreground))] text-center py-8",children:"No tool errors in this period"}),w>1&&(0,a.jsxs)("div",{className:"flex items-center justify-center gap-2 mt-3",children:[(0,a.jsx)("button",{onClick:()=>y(x-1,j),disabled:x<=1,className:"p-1 rounded hover:bg-[rgb(var(--background))] disabled:opacity-30 transition-colors",children:(0,a.jsx)(i.Z,{className:"w-4 h-4 text-[rgb(var(--muted-foreground))]"})}),(0,a.jsxs)("span",{className:"text-xs text-[rgb(var(--muted-foreground))]",children:[x," / ",w]}),(0,a.jsx)("button",{onClick:()=>y(x+1,j),disabled:x>=w,className:"p-1 rounded hover:bg-[rgb(var(--background))] disabled:opacity-30 transition-colors",children:(0,a.jsx)(c.Z,{className:"w-4 h-4 text-[rgb(var(--muted-foreground))]"})})]})]})}function N(){var e;
1let[t,r]=(0,s.useState)([]),[n,l]=(0,s.useState)([]),[o,i]=(0,s.useState)([]),[c,d]=(0,s.useState)(!0);(0,s.useEffect)(()=>{Promise.all([(0,g.fetchCreditByModelMetrics)(30).then(e=>r(e.rows)),(0,g.fetchRevenueMetrics)(90).then(e=>l(e.rows)),(0,g.fetchPlatformCost)(30).then(e=>i(e.rows)).catch(()=>i([]))]).catch(console.error).finally(()=>d(!1))},[]);let u=(0,s.useMemo)(()=>{let e=new Map,r=new Set;for(let s of t){var a;let t=(null===(a=s.day)||void 0===a?void 0:a.slice(5))||"";r.add(s.model),e.has(t)||e.set(t,new Map),e.get(t).set(s.model,Number(s.total_credits)||0)}let s=Array.from(e.keys()).reverse(),n=Array.from(r).map(t=>({label:t,data:s.map(r=>{var a;return(null===(a=e.get(r))||void 0===a?void 0:a.get(t))||0})}));return{labels:s,datasets:n}},[t]),x=(0,s.useMemo)(()=>{let e=[...n].reverse();return{labels:e.map(e=>{var t;return(null===(t=e.day)||void 0===t?void 0:t.slice(5))||""}),datasets:[{label:"Free Credits",data:e.map(e=>Number(e.free_credits_consumed)||0)},{label:"Paid Credits",data:e.map(e=>Number(e.paid_credits_consumed)||0)}]}},[n]),m=(0,s.useMemo)(()=>{if(0===t.length)return null;let e=new Map;for(let r of t)e.set(r.day,(e.get(r.day)||0)+Number(r.total_credits));let r=Array.from(e.entries()).sort((e,t)=>t[0].localeCompare(e[0])).slice(0,7),a=r.reduce((e,t)=>{let[,r]=t;return e+r},0)/Math.max(r.length,1),s=new Map;for(let e of t){let t=e.model;s.has(t)||s.set(t,{credits:0,tokens_in:0,tokens_out:0,count:0});let r=s.get(t);r.credits+=Number(e.total_credits)||0,r.tokens_in+=Number(e.total_tokens_in)||0,r.tokens_out+=Number(e.total_tokens_out)||0,r.count+=Number(e.request_count)||0}return{avgDaily:a.toFixed(1),monthlyProjected:(30*a).toFixed(0),models:Array.from(s.entries()).map(e=>{let[r,a]=e;return{model:r,totalCredits:a.credits.toFixed(1),totalTokensIn:a.tokens_in,totalTokensOut:a.tokens_out,requests:a.count,pctOfTotal:t.length>0?(a.credits/Array.from(s.values()).reduce((e,t)=>e+t.credits,0)*100).toFixed(1):"0"}}).sort((e,t)=>Number(t.totalCredits)-Number(e.totalCredits))}},[t]),h=(0,s.useMemo)(()=>o.reduce((e,t)=>e+(Number(t.credits)||0),0),[o]),f=(0,s.useMemo)(()=>{let e=new Map,t=new Set;for(let a of o){var r;let s=(null===(r=a.day)||void 0===r?void 0:r.slice(5))||"";t.add(a.feature),e.has(s)||e.set(s,new Map);let n=e.get(s);n.set(a.feature,(n.get(a.feature)||0)+(Number(a.credits)||0))}let a=Array.from(e.keys()).sort(),s=Array.from(t).map(t=>({label:t,data:a.map(r=>{var a;return(null===(a=e.get(r))||void 0===a?void 0:a.get(t))||0})}));return{labels:a,datasets:s}},[o]);return(0,a.jsxs)("div",{className:"space-y-4",children:[m&&(0,a.jsxs)("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-3",children:[(0,a.jsx)(p.i9,{label:"Avg Daily Burn",value:"".concat(m.avgDaily," cr"),sub:"7-day avg"}),(0,a.jsx)(p.i9,{label:"Monthly Projected",value:"".concat(m.monthlyProjected," cr"),sub:"30-day projection"}),(0,a.jsx)(p.i9,{label:"Paid Share",value:"".concat(Number((null===(e=n[0])||void 0===e?void 0:e.paid_share_pct)||0),"%"),sub:"Latest day"})]}),(0,a.jsx)(b,{title:"Credit Consumption by Model (30d)",loading:c,children:u.labels.length>0?(0,a.jsx)(p.xN,{labels:u.labels,datasets:u.datasets}):(0,a.jsx)("p",{className:"text-xs text-[rgb(var(--muted-foreground))] text-center py-8",children:"No credit data"})}),(0,a.jsx)(b,{title:"Platform Cost â COGS by Feature (30d)",loading:c,children:f.labels.length>0?(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)(p.i9,{label:"Platform COGS (30d)",value:"".concat(h.toFixed(1)," cr"),sub:"auto-LLM spend Kavela pays â beside revenue = margin",color:"text-[rgb(var(--kavela-teal))]"}),(0,a.jsx)(p.xN,{labels:f.labels,datasets:f.datasets})]}):(0,a.jsx)("p",{className:"text-xs text-[rgb(var(--muted-foreground))] text-center py-8",children:"No platform-cost data yet â needs the trackEvent driver deployed + the AE-read secrets set. Once auto-LLM calls run, COGS-by-feature appears here."})}),(0,a.jsx)(b,{title:"Free vs Paid Credits (90d)",children:x.labels.length>0?(0,a.jsx)(p.TH,{labels:x.labels,datasets:x.datasets}):(0,a.jsx)("p",{className:"text-xs text-[rgb(var(--muted-foreground))] text-center py-8",children:"No revenue data"})}),m&&m.models.length>
10&&(0,a.jsx)(b,{title:"Model Cost Breakdown (30d)",children:(0,a.jsx)("div",{className:"overflow-x-auto",children:(0,a.jsxs)("table",{className:"w-full text-xs",children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{className:"text-[rgb(var(--muted-foreground))]",children:[(0,a.jsx)("th",{className:"text-left px-2 py-1.5 font-medium",children:"Model"}),(0,a.jsx)("th",{className:"text-right px-2 py-1.5 font-medium",children:"Credits"}),(0,a.jsx)("th",{className:"text-right px-2 py-1.5 font-medium",children:"Tokens In"}),(0,a.jsx)("th",{className:"text-right px-2 py-1.5 font-medium",children:"Tokens Out"}),(0,a.jsx)("th",{className:"text-right px-2 py-1.5 font-medium",children:"Requests"}),(0,a.jsx)("th",{className:"text-right px-2 py-1.5 font-medium",children:"% of Total"})]})}),(0,a.jsx)("tbody",{children:m.models.map(e=>(0,a.jsxs)("tr",{className:"border-t border-[rgb(var(--border-subtle))]",children:[(0,a.jsx)("td",{className:"px-2 py-1.5 font-mono text-[rgb(var(--foreground))]",children:e.model}),(0,a.jsx)("td",{className:"text-right px-2 py-1.5 text-[rgb(var(--foreground))]",children:e.totalCredits}),(0,a.jsx)("td",{className:"text-right px-2 py-1.5 text-[rgb(var(--muted-foreground))]",children:e.totalTokensIn.toLocaleString()}),(0,a.jsx)("td",{className:"text-right px-2 py-1.5 text-[rgb(var(--muted-foreground))]",children:e.totalTokensOut.toLocaleString()}),(0,a.jsx)("td",{className:"text-right px-2 py-1.5 text-[rgb(var(--muted-foreground))]",children:e.requests.toLocaleString()}),(0,a.jsxs)("td",{className:"text-right px-2 py-1.5 text-[rgb(var(--muted-foreground))]",children:[e.pctOfTotal,"%"]})]},e.model))})]})})})]})}function y(){let[e,t]=(0,s.useState)([]),[r,n]=(0,s.useState)(!0);(0,s.useEffect)(()=>{(0,g.fetchRpmMetrics)(7).then(e=>t(e.rows)).catch(console.error).finally(()=>n(!1))},[]);let l=(0,s.useMemo)(()=>{let t=new Map,r=new Set;for(let s of e){var a;let e=(null===(a=s.hour)||void 0===a?void 0:a.slice(5,13))||"";r.add(s.model),t.has(e)||t.set(e,new Map);let n=t.get(e).get(s.model)||0;t.get(e).set(s.model,Math.max(n,Number(s.peak_rpm)||0))}let s=Array.from(t.keys()).reverse().slice(0,48),n=Array.from(r).map(e=>({label:e,data:s.map(r=>{var a;return(null===(a=t.get(r))||void 0===a?void 0:a.get(e))||0})}));return{labels:s,datasets:n}},[e]);return(0,a.jsx)(b,{title:"Peak RPM by Model (7d, hourly)",loading:r,children:l.labels.length>0?(0,a.jsx)(p.Zw,{labels:l.labels,datasets:l.datasets}):(0,a.jsx)("p",{className:"text-xs text-[rgb(var(--muted-foreground))] text-center py-8",children:"No RPM data"})})}function w(){let[e,t]=(0,s.useState)([]),[r,n]=(0,s.useState)(!0);(0,s.useEffect)(()=>{(0,g.fetchSignupGrowthMetrics)().then(e=>t(e.rows)).catch(console.error).finally(()=>n(!1))},[]);let l=(0,s.useMemo)(()=>{let t=[...e].reverse();return{labels:t.map(e=>{var t;return(null===(t=e.day)||void 0===t?void 0:t.slice(5))||""}),datasets:[{label:"Cumulative Signups",data:t.map(e=>Number(e.cumulative_signups)||0)},{label:"Cumulative Approved",data:t.map(e=>Number(e.cumulative_alpha)||0)}]}},[e]),o=(0,s.useMemo)(()=>{let t=[...e].reverse();return{labels:t.map(e=>{var t;return(null===(t=e.day)||void 0===t?void 0:t.slice(5))||""}),datasets:[{label:"Daily Signups",data:t.map(e=>Number(e.signups)||0)},{label:"7d Avg",data:t.map(e=>Number(e.rolling_7d_avg)||0)}]}},[e]),i=e[0];return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-3",children:[(0,a.jsx)(p.i9,{label:"Total Signups",value:Number((null==i?void 0:i.cumulative_signups)||0)}),(0,a.jsx)(p.i9,{label:"Approved",value:Number((null==i?void 0:i.cumulative_alpha)||0)}),(0,a.jsx)(p.i9,{label:"Grant Rate",value:i?"".concat((Number(i.cumulative_alpha)/Math.max(Number(i.cumulative_signups),1)*100).toFixed(1),"%"):"0%"})]}),(0,a.jsx)(b,{title:"Cumulative Signup Growth",loading:r,children:l.labels.length>0?(0,a.jsx)(p.TH,{labels:l.labels,datasets:l.datasets}):(0,a.jsx)("p",{className:"text-xs text-[rgb(var(--muted-foreground))] text-center py-8",children:"No signup data"})}),(0,a.jsx)(b,{title:"Daily Signups + 7d Average",children:o.labels.length>0?(0,a.jsx)(p.Zw,{labels:o.labels,datasets:o.datasets,height:200}):(0,a.jsx)("p",{className:"text-xs text-[rgb(var(--muted-foreground))] text-center py-4",children:"No data"})})]})}
1function k(e){return new Date(e).toLocaleString("en-GB",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function _(e){let{sessionId:t,onClose:r}=e,[l,o]=(0,s.useState)(null),[c,d]=(0,s.useState)([]),[p,h]=(0,s.useState)(!0),[b,f]=(0,s.useState)(!0);(0,s.useEffect)(()=>{h(!0),(0,g.fetchSessionDetail)(t).then(e=>{o(e.session),d(e.messages)}).catch(console.error).finally(()=>h(!1))},[t]);let v=(0,s.useMemo)(()=>(0,m.mA)(c),[c]);if(p)return(0,a.jsx)("div",{className:"flex items-center justify-center py-20",children:(0,a.jsx)(n.Z,{className:"w-5 h-5 text-brand-500 animate-spin"})});let j=e=>{var t,r;return Number(null!==(r=null===(t=e.metadata)||void 0===t?void 0:t.credits)&&void 0!==r?r:0)||0},N=v.reduce((e,t)=>e+j(t),0),y=v.filter(e=>"tool_result"===e.role),w=v.filter(e=>"tool_result"===e.role&&!1===e.toolSuccess);return(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("button",{onClick:r,className:"flex items-center gap-1.5 text-xs text-brand-600 hover:text-brand-500",children:[(0,a.jsx)(i.Z,{className:"w-3.5 h-3.5"})," Back to sessions"]}),(0,a.jsxs)("label",{className:"flex items-center gap-1 text-[10px] text-[rgb(var(--muted-foreground))]",children:[(0,a.jsx)("input",{type:"checkbox",checked:b,onChange:e=>f(e.target.checked),className:"rounded"}),"Show tool calls"]})]}),l&&(0,a.jsxs)("div",{className:"p-4 rounded-xl bg-[rgb(var(--card))] border border-[rgb(var(--border))] space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-start justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-sm font-semibold text-[rgb(var(--foreground))]",children:l.title||"Untitled"}),(0,a.jsxs)("p",{className:"text-[11px] text-[rgb(var(--muted-foreground))] mt-0.5",children:[l.user_name," (",l.user_email,") \xb7 ",l.agent_name," \xb7 ",l.agent_mode]})]}),(0,a.jsx)("span",{className:"text-[10px] text-[rgb(var(--muted-foreground))] font-mono",children:k(l.created_at)})]}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3 text-[10px]",children:[(0,a.jsxs)("span",{className:"px-2 py-0.5 rounded bg-violet-500/10 text-violet-600",children:[v.length," messages"]}),(0,a.jsxs)("span",{className:"px-2 py-0.5 rounded bg-amber-500/10 text-amber-600",children:[y.length," tool calls"]}),w.length>0&&(0,a.jsxs)("span",{className:"px-2 py-0.5 rounded bg-red-500/10 text-red-600",children:[w.length," errors"]}),(0,a.jsxs)("span",{className:"px-2 py-0.5 rounded bg-emerald-500/10 text-emerald-600",children:[N.toFixed(2)," credits"]})]})]}),(0,a.jsx)("div",{className:"space-y-2 max-w-3xl mx-auto",children:v.map(e=>{if("user"===e.role)return(0,a.jsx)("div",{children:(0,a.jsx)(u.J,{role:"user",content:e.content,chatMode:!0})},e.id);if("assistant"===e.role){let t=e.metadata,r=j(e);return(0,a.jsxs)("div",{children:[(0,a.jsx)(u.J,{role:"assistant",content:e.content,chatMode:!0}),r>0&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 mt-0.5 text-[9px] text-[rgb(var(--muted-foreground))]",children:["string"==typeof(null==t?void 0:t.model)&&(0,a.jsx)("span",{className:"font-mono",children:t.model}),(0,a.jsxs)("span",{className:"text-emerald-600",children:[r.toFixed(2)," cr"]})]})]},e.id)}if("tool_result"===e.role){var t,r;return b?(0,a.jsx)("div",{children:(0,a.jsx)(x.e,{toolName:e.toolName||"unknown",args:e.toolArgs||{},result:null!==(t=e.toolResult)&&void 0!==t?t:e.content,success:null!==(r=e.toolSuccess)&&void 0!==r?r:void 0,status:"done",chatMode:!0})},e.id):null}return null})})]})}function S(){let[e,t]=(0,s.useState)([]),[r,l]=(0,s.useState)(!0),[o,u]=(0,s.useState)(1),[x,m]=(0,s.useState)(""),[p,h]=(0,s.use
1State)(null),b=(0,s.useCallback)(async()=>{l(!0);try{let e=await (0,g.fetchChatExplorer)({page:o,limit:100,agent:x||void 0});t(e.rows)}catch(e){console.error("Failed to fetch chats:",e)}finally{l(!1)}},[o,x]);(0,s.useEffect)(()=>{b()},[b]);let f=(0,s.useMemo)(()=>{let t=new Map;for(let a of e){if(!t.has(a.session_id)){var r;t.set(a.session_id,{id:a.session_id,title:a.session_title||"Untitled",user:a.user_name||(null===(r=a.user_email)||void 0===r?void 0:r.split("@")[0])||"?",agent:a.agent_name,time:a.message_time,credits:0,msgCount:Number(a.session_msg_count)||0,userMsgs:[],model:a.model||""})}let e=t.get(a.session_id);a.credits&&(e.credits+=Number(a.credits)),"user"===a.role&&a.content_preview&&e.userMsgs.push(a.content_preview),a.model&&!e.model&&(e.model=a.model),a.message_time>e.time&&(e.time=a.message_time)}return Array.from(t.values()).sort((e,t)=>t.time.localeCompare(e.time))},[e]);return p?(0,a.jsx)(_,{sessionId:p,onClose:()=>h(null)}):(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)("div",{className:"relative flex-1 max-w-xs",children:[(0,a.jsx)(d.Z,{className:"absolute left-2.5 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-[rgb(var(--muted-foreground))]"}),(0,a.jsx)("input",{type:"text",value:x,onChange:e=>{m(e.target.value),u(1)},placeholder:"Filter by agent name...",className:"w-full pl-8 pr-3 py-1.5 text-xs rounded-lg border border-[rgb(var(--border))] bg-[rgb(var(--background))] text-[rgb(var(--foreground))] focus:outline-none focus:ring-1 focus:ring-brand-500"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)("button",{onClick:()=>u(Math.max(1,o-1)),disabled:1===o,className:"p-1.5 rounded border border-[rgb(var(--border))] disabled:opacity-30",children:(0,a.jsx)(i.Z,{className:"w-3.5 h-3.5"})}),(0,a.jsxs)("span",{className:"text-xs text-[rgb(var(--muted-foreground))] px-2",children:["Page ",o]}),(0,a.jsx)("button",{onClick:()=>u(o+1),disabled:e.length<100,className:"p-1.5 rounded border border-[rgb(var(--border))] disabled:opacity-30",children:(0,a.jsx)(c.Z,{className:"w-3.5 h-3.5"})})]})]}),r?(0,a.jsx)("div",{className:"flex items-center justify-center py-12",children:(0,a.jsx)(n.Z,{className:"w-5 h-5 text-brand-500 animate-spin"})}):0===f.length?(0,a.jsx)("div",{className:"py-12 text-center text-sm text-[rgb(var(--muted-foreground))]",children:"No sessions found"}):(0,a.jsx)("div",{className:"space-y-2",children:f.map(e=>(0,a.jsx)("button",{onClick:()=>h(e.id),className:"w-full text-left p-3 rounded-xl bg-[rgb(var(--card))] border border-[rgb(var(--border))] hover:border-brand-500/40 transition-colors",children:(0,a.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"text-xs font-medium text-[rgb(var(--foreground))] truncate",children:e.title}),(0,a.jsx)("span",{className:"text-[9px] px-1.5 py-0.5 rounded bg-violet-500/10 text-violet-600 flex-shrink-0",children:e.agent})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,a.jsx)("span",{className:"text-[10px] text-[rgb(var(--muted-foreground))]",children:e.user}),(0,a.jsx)("span",{className:"text-[10px] text-[rgb(var(--muted-foreground))]",children:"\xb7"}),(0,a.jsxs)("span",{className:"text-[10px] text-[rgb(var(--muted-foreground))]",children:[e.msgCount," msgs"]}),e.credits>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"text-[10px] text-[rgb(var(--muted-foreground))]",children:"\xb7"}),(0,a.jsxs)("span",{className:"text-[10px] text-emerald-600",children:[e.credits.toFixed(1)," cr"]})]}),e.model&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"text-[10px] text-[rgb(var(--muted-foreground))]",children:"\xb7"}),(0,a.jsx)("span",{className:"text-[10px] font-mono text-[rgb(var(--muted-foreground))]",children:e.model})]})]}),e.userMsgs[0]&&(0,a.jsx)("p",{className:"text-[10px] text-[rgb(var(--muted-foreground))] mt-1 truncate",children:e.userMsgs[0]})]}),(0,a.jsx)("span",{className:"text-[9px] text-[rgb(var(--muted-foreground))] font-mono whitespace-nowrap flex-shrink-0",children:k(e.time)})]})},e.id))})]})}
1function C(){let[e,t]=(0,s.useState)("vc");return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"flex items-center gap-1 flex-wrap",children:h.map(r=>(0,a.jsx)("button",{onClick:()=>t(r.key),className:"px-3 py-1.5 text-xs rounded-lg transition-colors ".concat(e===r.key?"bg-brand-600 text-white":"bg-[rgb(var(--muted))]/30 text-[rgb(var(--muted-foreground))] hover:text-[rgb(var(--foreground))]"),children:r.label},r.key))}),"vc"===e&&(0,a.jsx)(f,{}),"usage"===e&&(0,a.jsx)(v,{}),"economics"===e&&(0,a.jsx)(N,{}),"capacity"===e&&(0,a.jsx)(y,{}),"signups"===e&&(0,a.jsx)(w,{}),"chats"===e&&(0,a.jsx)(S,{})]})}},68445:function(e,t,r){r.d(t,{q:function(){return c}});var a=r(57437),s=r(2265),n=r(22023),l=r(22468),o=r(6884),i=r(74697);function c(e){let{preview:t,onClose:r}=e,[c,d]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let e=e=>{"Escape"===e.key&&r()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[r]);let u=(0,s.useCallback)(async()=>{if(t.text)try{await navigator.clipboard.writeText(t.text),d(!0),window.setTimeout(()=>d(!1),1500)}catch(e){}},[t.text]),x=!!t.base64;return(0,a.jsx)("div",{className:"fixed inset-0 z-[100] flex items-center justify-center bg-black/50 p-4",onClick:r,role:"dialog","aria-modal":"true","aria-label":"Preview of ".concat(t.filename),children:(0,a.jsxs)("div",{className:"w-full max-w-2xl max-h-[85vh] flex flex-col rounded-2xl border border-[rgb(var(--border))]/50 bg-[rgb(var(--card))] shadow-2xl overflow-hidden",onClick:e=>e.stopPropagation(),children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 px-4 py-3 border-b border-[rgb(var(--border))]/40",children:[(0,a.jsx)(n.Z,{className:"w-4 h-4 text-[rgb(var(--accent-violet))] shrink-0"}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("div",{className:"text-[14px] font-semibold text-[rgb(var(--foreground))] truncate",children:t.filename}),t.subtext&&(0,a.jsx)("div",{className:"text-[11px] text-[rgb(var(--muted-foreground))]",children:t.subtext})]}),t.text&&(0,a.jsxs)("button",{onClick:u,className:"flex items-center gap-1.5 px-2 py-1 rounded-lg text-[11px] text-[rgb(var(--muted-foreground))] hover:text-[rgb(var(--foreground))] hover:bg-[rgb(var(--muted))]/50 transition-colors",title:"Copy contents",children:[c?(0,a.jsx)(l.Z,{className:"w-3.5 h-3.5"}):(0,a.jsx)(o.Z,{className:"w-3.5 h-3.5"}),c?"Copied":"Copy"]}),(0,a.jsx)("button",{onClick:r,className:"p-1 rounded hover:bg-[rgb(var(--muted))]/50 text-[rgb(var(--muted-foreground))] hover:text-[rgb(var(--foreground))]","aria-label":"Close preview",children:(0,a.jsx)(i.Z,{className:"w-4 h-4"})})]}),(0,a.jsx)("div",{className:"flex-1 min-h-0 overflow-auto px-4 py-3",children:x?(0,a.jsx)("img",{src:"data:".concat(t.mimeType||"image/png",";base64,").concat(t.base64),alt:t.filename,className:"max-w-full h-auto rounded-lg mx-auto"}):t.text?(0,a.jsx)("pre",{className:"text-[12px] font-mono text-[rgb(var(--foreground))]/85 whitespace-pre-wrap break-words [overflow-wrap:anywhere]",children:t.text}):(0,a.jsx)("p",{className:"text-[12px] text-[rgb(var(--muted-foreground))] py-8 text-center",children:"No readable contents for this attachment."})})]})})}},63026:function(e,t,r){r.d(t,{J:function(){return D}});var a=r(57437),s=r(2265),n=r(42421),l=r(22468),o=r(6884),i=r(71510),c=r(55636),d=r(3722),u=r(88558),x=r(73045),m=r(6540),g=r(69854);function p(e){let{token:t,refItem:r}=e;return(0,a.jsxs)("span",{className:"relative group inline-block align-baseline",children:[(0,a.jsx)("span",{className:"text-[rgb(var(--kavela-teal))] font-medium cursor-default",children:t}),(0,a.jsxs)("span",{role:"tooltip",className:"pointer-events-none absolute bottom-full left-0 mb-1.5 hidden group-hover:block z-50 w-max max-w-xs rounded-lg border border-[rgb(var(--border))] bg-[rgb(var(--background))] shadow-xl px-3 py-2 text-left",children:[(0,a.jsxs)("span",{className:"flex items-center gap-1.5 text-[11px] font-medium text-[rgb(var(--kavela-teal))]",children:["tool"===r.kind?(0,a.jsx)(x.Z,{className:"w-3 h-3"}):(0,a.jsx)(m.Z,{className:"w-3 h-3"}),"tool"===r.kind?"Tool":"Skill"]}),(0,a.jsx)("span",{className:"block text-[13px] font-semibold text-[rgb(var(--foreground))] mt-0.5",children:r.title}),r.description&&(0,a.jsx)("span",{className:"block text-[12px] text-[rgb(var(--muted-foreground))] mt-0.5 leading-snug line-clamp-3",children:r.description})]})]})}function h(e){let{text:t,refMap:r}=e,n=(0,g.ZM)(t,r);return 1===n.length&&"text"===n[0].type?(0,a.jsx)(a.Fragment,{children:n[0].value}):(0,a.jsx)(a.Fragment,{children:n.map((e,t)=>"handle"===e.type?(0,a.jsx)(p,{token:e.value,refItem:e.ref},t):(0,a.jsx)(s.Fragment,{children:e.value},t))})}var b=r(19280),f=r(6536),v=r(61520),j=r(22023),N=r(87592),y=r(68445);function w(e){let{block:t,align:r="end"}
1=e,[n,l]=(0,s.useState)(!1),o=(0,v.Ly)(t.content,t.pages);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"w-full flex ".concat("end"===r?"justify-end":"justify-start"),children:(0,a.jsx)("div",{className:"w-full max-w-full",children:(0,a.jsxs)("button",{onClick:()=>l(!0),className:"w-full flex items-center gap-2 px-2.5 py-2 rounded-lg border border-[rgb(var(--border))] bg-[rgb(var(--background))]/60 hover:bg-[rgb(var(--background))] transition-colors text-left",title:"View ".concat(t.filename),children:[(0,a.jsx)(j.Z,{className:"w-3.5 h-3.5 text-[rgb(var(--muted-foreground))] shrink-0"}),(0,a.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,a.jsx)("span",{className:"block text-[12px] font-sans text-[rgb(var(--foreground))] truncate",children:t.filename}),(0,a.jsx)("span",{className:"block text-[10px] font-sans text-[rgb(var(--muted-foreground))]",children:o})]}),(0,a.jsx)(N.Z,{className:"w-3.5 h-3.5 text-[rgb(var(--muted-foreground))] shrink-0"})]})})}),n&&(0,a.jsx)(y.q,{preview:{filename:t.filename,text:t.content,subtext:o},onClose:()=>l(!1)})]})}var k=r(67649);let _=/<(think|thinking|tool_thinking|tool_think)>([\s\S]*?)<\/\1>/gi,S=/<(think|thinking|tool_thinking|tool_think)>([\s\S]*)$/i,C=/<\/?(think|thinking|tool_thinking|tool_think)>/gi;function M(e){let{content:t,defaultOpen:r,isLive:l,chatMode:o}=e,[i,c]=(0,s.useState)(r),d=s.useRef(!1);s.useEffect(()=>{d.current||c(r)},[r]);let u=s.useRef(null),[x,m]=(0,s.useState)(null);s.useEffect(()=>{l&&null===u.current&&(u.current=Date.now()),l||null===u.current||null!==x||m(Math.max(1,Math.round((Date.now()-u.current)/1e3)))},[l,x]);let[g,p]=(0,s.useState)(!1);s.useEffect(()=>{if(!l){p(!1);return}p(!1);let e=window.setTimeout(()=>p(!0),1200);return()=>window.clearTimeout(e)},[t,l]);let h=o?"text-[13.5px]":"text-[12.5px]";return(0,a.jsxs)("div",{className:"my-1.5 max-w-[640px]",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>{d.current=!0,c(e=>!e)},className:"inline-flex items-center gap-2 text-[rgb(var(--muted-foreground))] hover:text-[rgb(var(--foreground))]/85 transition-colors group",children:[l?(0,a.jsx)(k.ED,{}):(0,a.jsx)(n.Z,{className:"w-3 h-3 text-[rgb(var(--muted-foreground))]/60 transition-transform duration-200 ".concat(i?"":"-rotate-90")}),l?(0,a.jsx)(k.gX,{className:"".concat(h," font-medium tracking-[-0.005em]"),children:"Thinking"}):(0,a.jsx)("span",{className:"".concat(h," tracking-[-0.005em]"),children:null!==x?"Thought for ".concat(x,"s"):"Thinking"})]}),(0,a.jsx)("div",{"aria-hidden":!i,className:"grid transition-[grid-template-rows,opacity,margin] duration-[380ms] ease-[cubic-bezier(0.22,1,0.36,1)] ".concat(i?"grid-rows-[1fr] opacity-100 mt-1":"grid-rows-[0fr] opacity-0 mt-0"),children:(0,a.jsx)("div",{className:"overflow-hidden",children:(0,a.jsxs)("div",{className:"ml-2 pl-3.5 border-l border-[rgb(var(--border))]/40 pt-1.5 pb-1 flex flex-col gap-1.5",children:[(0,a.jsx)("div",{className:"".concat(h," text-[rgb(var(--muted-foreground))]/85 leading-[1.55] tracking-[-0.003em] whitespace-pre-wrap"),children:l?(0,a.jsx)(k.I6,{children:t||" "}):(0,a.jsx)("span",{children:t})}),l&&g&&(0,a.jsxs)("div",{className:"flex items-center gap-2 text-[12px] text-[rgb(var(--muted-foreground))]/55 italic",children:[(0,a.jsx)(k.Do,{className:"text-[rgb(var(--muted-foreground))]/55"}),(0,a.jsx)("span",{children:"still thinkingâ¦"})]})]})})})]})}
1function A(e){let{content:t,onCopy:r,onShare:n,onFeedback:u}=e,[x,m]=(0,s.useState)(!1),[g,p]=(0,s.useState)(null),h=e=>{p(e),null==u||u(e)};return(0,a.jsxs)("div",{className:"flex items-center gap-1 mt-2 opacity-0 group-hover/msg:opacity-100 transition-opacity",children:[(0,a.jsx)("button",{onClick:()=>{let e=t.replace(/<think>[\s\S]*?<\/think>/gi,"").replace(/<artifact_spec>[\s\S]*?<\/artifact_spec>/gi,"").replace(/\*\*(.*?)\*\*/g,"$1").trim();navigator.clipboard.writeText(e).then(()=>{m(!0),setTimeout(()=>m(!1),1500),null==r||r()})},className:"p-1.5 rounded-md text-[rgb(var(--muted-foreground))]/30 hover:text-[rgb(var(--muted-foreground))]/70 hover:bg-[rgb(var(--muted))]/30 transition-all",title:"Copy response",children:x?(0,a.jsx)(l.Z,{className:"w-3.5 h-3.5 text-green-400"}):(0,a.jsx)(o.Z,{className:"w-3.5 h-3.5"})}),n&&(0,a.jsx)("button",{onClick:n,className:"p-1.5 rounded-md text-[rgb(var(--muted-foreground))]/30 hover:text-[rgb(var(--muted-foreground))]/70 hover:bg-[rgb(var(--muted))]/30 transition-all",title:"Share conversation",children:(0,a.jsx)(i.Z,{className:"w-3.5 h-3.5"})}),(0,a.jsx)("div",{className:"w-px h-3 bg-[rgb(var(--border))]/20 mx-0.5"}),(0,a.jsx)("button",{onClick:()=>h("positive"),className:"p-1.5 rounded-md transition-all ".concat("positive"===g?"text-green-400 bg-green-400/10":"text-[rgb(var(--muted-foreground))]/30 hover:text-green-400/70 hover:bg-green-400/5"),title:"Good response",children:(0,a.jsx)(c.Z,{className:"w-3.5 h-3.5"})}),(0,a.jsx)("button",{onClick:()=>h("negative"),className:"p-1.5 rounded-md transition-all ".concat("negative"===g?"text-red-400 bg-red-400/10":"text-[rgb(var(--muted-foreground))]/30 hover:text-red-400/70 hover:bg-red-400/5"),title:"Poor response",children:(0,a.jsx)(d.Z,{className:"w-3.5 h-3.5"})})]})}function D(e){var t,r,n;let{messageId:l,role:o,content:i,isStreaming:c,chatMode:d,showActions:x,onCopy:m,onShare:g,onFeedback:p,artifactsById:j,refMap:N,hideThinkTrace:y}=e,k="user"===o,D=k?(0,v.f8)(i):null,T=k?null!==(t=null==D?void 0:D.text)&&void 0!==t?t:i:(0,f.D)(i),E=null!==(r=null==D?void 0:D.blocks)&&void 0!==r?r:[],O=!k&&T?function(e,t){let r;let a=[],s=0;for(_.lastIndex=0;null!==(r=_.exec(e));){let t=e.slice(s,r.index).replace(C,"").trim();t&&a.push({type:"text",content:t});let n=r[2].trim();n&&a.push({type:"think",content:n,isOpen:!1,isLive:!1}),s=r.index+r[0].length}let n=e.slice(s),l=n.match(S);if(l){let e=n.slice(0,l.index).replace(C,"").trim();e&&a.push({type:"text",content:e});let r=l[2].trim();return r&&a.push({type:"think",content:r,isOpen:!1,isLive:!!t}),a}let o=n.replace(C,"").trim();return o&&a.push({type:"text",content:o}),a}(T,c):null,P=null!==(n=null==O?void 0:O.filter(e=>"think"===e.type))&&void 0!==n?n:[],L=!y&&P.length>0,Z=P.map(e=>e.content).join("\n\nââ\n\n"),F=P.some(e=>e.isLive),R=P.some(e=>e.isOpen),z=O?O.filter(e=>"text"===e.type).map(e=>e.content).join("\n\n"):T,I=P.reduce((e,t)=>e+t.content.length,0),U=z.length,J=(0,s.useRef)(null);return((0,s.useLayoutEffect)(()=>{if(!b.o.isEnabled()||!l||k)return;let e=U+I,t=J.current;if(t&&t.chars===e&&!!c===t.isStreaming)return;J.current={chars:e,isStreaming:!!c};let r={textChars:U,thinkChars:I,totalChars:e,isStreaming:!!c};requestAnimationFrame(()=>{b.o.markPaint({messageId:l,contentChars:r.totalChars,thinkOpen:!1,thinkChars:r.thinkChars,textChars:r.textChars,isStreaming:r.isStreaming})})}),T||c||0!==E.length)?d?(0,a.jsx)("div",{className:"py-1 ".concat(k?"flex justify-end":""),children:k?(0,a.jsxs)("div",{className:"max-w-[80%] rounded-2xl bg-[rgb(var(--accent-violet))]/8 border border-[rgb(var(--accent-violet))]/12 px-5 py-3 space-y-2",children:[E.map((e,t)=>(0,a.jsx)(w,{block:e},"".concat(e.filename,"-").concat(t))),T&&(0,a.jsx)("div",{className:"font-mono text-[15px] text-[rgb(var(--foreground))] leading-relaxed whitespace-pre-wrap break-words [overflow-wrap:anywhere]",children:N&&N.size>0?(0,a.jsx)(h,{text:T,refMap:N}):T})]}):(0,a.jsxs)("div",{className:"pl-1 group/msg",children:[(0,a.jsxs)("div",{className:"font-sans text-[14.5px] text-[rgb(var(--foreground))]/85 leading-[1.6] tracking-[-0.005em]",children:[L&&(0,a.jsx)(M,{content:Z,defaultOpen:R,isLive:F,chatMode:!0}),z?(0,a.jsx)(u.S,{content:z,chatMode:!0,messageId:l,artifactsById:j}):null,c&&z&&(0,a.jsx)("span",{className:"inline-block w-[5px] h-[14px] bg-[rgb(var(--accent-violet))]/50 ml-0.5 animate-pulse align-middle rounded-sm"})]}),x&&!c&&z&&(0,a.jsx)(A,{content:i,onCopy:m,onShare:g,onFeedback:p})]})}):(0,a.jsxs)("div",{className:"flex items-start gap-2.5 py-[3px]",children:[(0,a.jsx)("div",{className:"flex-shrink-0 mt-[7px]",children:(0,a.jsx)("div",{className:"w-2 h-2 rounded-full ".concat(k?"bg-blue-400/70":"bg-emerald-400")})}),(0,a.jsx)("div",{className:"min-w-0 flex-1",children:k?(0,a.jsxs)("div",{className:"rounded-lg border border-[rgb(var(--border))] bg-[rgb(var(--muted))]/20 px-3 py-2 font-mono text-[13px] text-[rgb(var(--foreground))] break-words [overflow-wrap:anywhere] space-y-2",children:[E.map((e,t)=>(0,a.jsx)(w,{block:e,align:"start"},"".concat(e.filename,"-").concat(t))),(T||0===E.length)&&(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-[rgb(var(--foreground))]/40 select-none mr-2",children:">"}),N&&N.size>0?(0,a.jsx)(h,{text:T,refMap:N}):T]})]}):(0,a.jsxs)("div",{className:"font-mono text-[13px] text-[rgb(var(--foreground))] leading-relaxed",children:[L&&(0,a.jsx)(M,{content:Z,defaultOpen:R,isLive:F}),z?(0,a.jsx)(u.S,{content:z,messageId:l,artifactsById:j}):null,c&&z&&(0,a.jsx)("span",{className:"inline-block w-[5px] h-[13px] bg-[rgb(var(--foreground))]/40 ml-0.5 animate-pulse align-middle"})]})})]}):null}},61520:function(e,t,r){r.d(t,{Ly:function(){return o},Ur:function(){return i},d4:function(){return c},f8:function(){return n},v5:function(){return l}});let a=/<document\s+([^>]*)>\n?([\s\S]*?)\n?<\/document>/g;function s(e,t){let r=new RegExp("".concat(t,'="([^"]*)"')).exec(e);return null==r?void 0:r[1]}function n(e){if(!e||-1===e.indexOf("<document"))return{text:e,blocks:[]};let t=[];return a.lastIndex=0,{text:e.replace(a,(e,r,a)=>{let n=s(r,"pages"),l=n?parseInt(n,10):void 0;return t.push({filename:s(r,"filename")||"Attachment",...l&&Number.isFinite(l)?{pages:l}:{},content:a}),""}).trim(),blocks:t}}function l(e){return new Set(n(e).blocks.map(e=>e.filename))}function o(e,t){let r=Math.max(1,Math.round(e.length/4)),a=["".concat(e.length.toLocaleStr
1ing()," characters"),r>=1e3?"~".concat(Math.round(r/1e3),"k tokens"):"~".concat(r," tokens")];return t&&a.unshift("".concat(t," page").concat(1===t?"":"s")),a.join(" \xb7 ")}function i(e){return e.length>2e3}function c(e){return e>0?"Pasted text ".concat(e+1,".txt"):"Pasted text.txt"}},69854:function(e,t,r){r.d(t,{ZM:function(){return n},qH:function(){return l},y7:function(){return s}});let a=/(^|\s)(@[a-z0-9]+(?:-[a-z0-9]+)*)/g;function s(e){let t=new Map;for(let r of null!=e?e:[])r.handle&&t.set(r.handle,r);return t}function n(e,t){let r;if(!e)return[{type:"text",value:""}];if(0===t.size)return[{type:"text",value:e}];let s=[],n=0;for(a.lastIndex=0;null!==(r=a.exec(e));){let a=r[1],l=r[2],o=l.slice(1),i=t.get(o);if(!i)continue;let c=r.index+a.length;c>n&&s.push({type:"text",value:e.slice(n,c)}),s.push({type:"handle",value:l,handle:o,ref:i}),n=c+l.length}return n<e.length&&s.push({type:"text",value:e.slice(n)}),0===s.length&&s.push({type:"text",value:e}),s}function l(e,t){let r;if(!e||0===t.size)return!1;for(a.lastIndex=0;null!==(r=a.exec(e));)if(t.has(r[2].slice(1)))return!0;return!1}},6536:function(e,t,r){r.d(t,{D:function(){return a}});function a(e){return e.replace(/<\s*[a-z][\w-]*:tool[_\s]?call\s*>[\s\S]*?<\s*\/\s*[a-z][\w-]*:tool[_\s]?call\s*>/gi,"").replace(/<\s*function_calls\s*>[\s\S]*?<\s*\/\s*function_calls\s*>/gi,"").replace(/<\s*t?ool[_\s]?call\s*>[\s\S]*?<\s*\/\s*t?ool[_\s]?call\s*>/gi,"").replace(/<\s*function_call\s*>[\s\S]*?<\s*\/\s*function_call\s*>/gi,"").replace(/<artifact_spec>[\s\S]*?<\/artifact_spec>/gi,"").replace(/<artifact_spec>[\s\S]*$/gi,"").replace(/<artifact[_a-z]*$/gi,"").replace(/\n{3,}/g,"\n\n").trim()}},26552:function(e,t,r){r.d(t,{Aw:function(){return b},Cg:function(){return A},E6:function(){return c},Gw:function(){return g},Jp:function(){return _},Kv:function(){return S},Lv:function(){return d},Op:function(){return h},PQ:function(){return D},Pi:function(){return f},Tu:function(){return w},Xw:function(){return x},Yx:function(){return y},Zj:function(){return m},_G:function(){return u},aT:function(){return P},am:function(){return O},f7:function(){return p},fW:function(){return M},p_:function(){return o},qR:function(){return C},qf:function(){return v},rL:function(){return j},rR:function(){return T},vn:function(){return k},wy:function(){return N}});var a=r(26474),s=r(96264);let n="https://mcp.kavela.ai",l=null;function o(e){l=e}async function i(e,t){let r={"Content-Type":"application/json",...null==t?void 0:t.headers};try{let e=(0,a.e)(),{data:{session:t}}=await e.auth.getSession();(null==t?void 0:t.access_token)&&(r.Authorization="Bearer ".concat(t.access_token))}catch(e){}let o=null!=l?l:(0,s.getActiveOrgId)();o&&(r["X-Kavela-Org-Id"]=o);let i=await fetch("".concat(n).concat(e),{...t,headers:r});if(!i.ok)throw Error((await i.json().catch(()=>({}))).error||"API error ".concat(i.status));return i.json()}async function c(){return(await i("/api/connections")).connections}async function d(e,t,r){return i("/api/connections/api-key",{method:"POST",body:JSON.stringify({serviceSlug:e,secrets:t,label:r})})}async function u(e){return i("/api/connections/byo",{method:"POST",body:JSON.stringify(e)})}async function x(e){await i("/api/connections/".concat(e),{method:"DELETE"})}async function m(e){return!!(await i("/api/connections/agent-autonomy/".concat(e))).granted}async function g(e,t){return!!(await i("/api/connections/agent-autonomy/".concat(e),{method:t?"POST":"DELETE"})).granted}async function p(e,t,r,a){return i("/api/connections/site-login",{method:"POST",body:JSON.stringify({agentId:e,domain:t,username:r,password:a})})}async function h(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return i("/api/connections/".concat(e,"/audit-log?limit=").concat(t,"&offset=").concat(r))}async function b(e){return(await i("/api/connections/".concat(e,"/reveal"),{method:"POST"})).fields}async function f(e){return i("/api/agents/".concat(e,"/connection-status"))}async function v(e,t){return i("/api/agents/".concat(e,"/grants"),{method:"POST",body:JSON.stringify({grants:t})})}async function j(e,t){await i("/api/agents/".concat(e,"/grants/").concat(t),{method:"DELETE"})}async function N(e){var t;return null!==(t=(await i("/api/im/routes?agentId=".concat(e))).routes)&&void 0!==t?t:[]}async function y(e){var t;return null!==(t=(await i("/api/agents/".concat(e,"/im-channels"))).channels)&&void 0!==t?t:[]}async function w(e,t){return i("/api/agents/".concat(e,"/im-channels"),{method:"POST",body:JSON.stringify({channel:t})})}async function k(e,t){return i("/api/agents/".concat(e,"/im-channels/").concat(t),{method:"DELETE"})}async function _(e,t){return i("/api/im/routes/".concat(e),{method:"PATCH",body:JSON.stringify(t)})}function S(e,t,r,a){let s=new URLSearchParams;return t&&s.set("agentId",String(t)),(null==r?void 0:r.length)&&s.set("scopes",r.join(",")),a&&s.set("redirectUrl",a),"".concat(n,"/oauth/").concat(e,"/authorize?").concat(s.toString())}async function C(){return(await i("/api/plugins/available")).plugins}async function M(e){return(await i("/api/plugins/status?agentId=".concat(e))).enabledPlugins}async function A(e,t,r){return i("/api/plugins/enable",{method:"POST",body:JSON.stringify({agentId:e,pluginSlug:t,...r})})}async function D(e,t,r){await i("/api/plugins/update",{method:"POST",body:JSON.stringify({agentId:e,pluginSlug:t,...r})})}async function T(e,t){await i("/api/plugins/disable",{method:"POST",body:JSON.stringify({agentId:e,pluginSlug:t})})}let E={gmail:"\uD83D\uDCE7",github:"\uD83D\uDC19","google-calendar":"\uD83D\uDCC5",slack:"\uD83D\uDCAC",stripe:"\uD83D\uDCB3",notion:"\uD83D\uDCDD",discord:"\uD83C\uDFAE",twitter:"\uD83D\uDC26",binance:"\uD83E\uDE99",supra:"â",ethereum:"â ",solana:"â",mcp:"\uD83D\uDD17"};function O(e){var t;return null!==(t=E[e])&&void 0!==t?t:"\uD83D\uDD11"}function P(e){switch(e){case"oauth2":return"OAuth";case"oauth2_client_creds":return"OAuth (Client Credentials)";case"api_key":return"API Key";case"basic_auth":return"Basic Auth";case"multi_header":return"Multiple Headers";case"hmac":return"HMAC Signing";case"blockchain":return"Wallet Signing";case"mcp":return"MCP Server";default:return e}}}}]);
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.