codesesh 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/{chunk-BV65IEWZ.js → chunk-NBCLV4CX.js} +1255 -1220
- package/dist/chunk-NBCLV4CX.js.map +1 -0
- package/dist/{dist-VD54GDPO.js → dist-5356XOFP.js} +17 -10
- package/dist/index.js +959 -867
- package/dist/index.js.map +1 -1
- package/dist/scan-refresh-worker.js +1 -1
- package/dist/search-index-worker.js +1 -1
- package/dist/smart-tag-worker.js +1 -1
- package/dist/web/assets/index-B6p64k_Q.js +113 -0
- package/dist/web/assets/index-DiFr4_5-.css +2 -0
- package/dist/web/assets/react-3acXkZNw.js +1821 -0
- package/dist/web/assets/vendor-CShgXaOi.js +40 -0
- package/dist/web/index.html +4 -4
- package/package.json +1 -1
- package/dist/chunk-BV65IEWZ.js.map +0 -1
- package/dist/web/assets/index-ZikfLnUo.js +0 -113
- package/dist/web/assets/index-y6Zx3LT1.css +0 -2
- package/dist/web/assets/react-DBHwgW7V.js +0 -1821
- package/dist/web/assets/vendor-bXsb4Kz4.js +0 -40
- /package/dist/{dist-VD54GDPO.js.map → dist-5356XOFP.js.map} +0 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{l as t,t as n,u as r}from"./markdown-dR4kAewZ.js";import{_ as i,a,c as o,d as s,f as c,g as l,h as u,i as d,l as f,m as p,n as m,o as h,r as g,s as _,t as v,u as y}from"./react-3acXkZNw.js";import{$ as b,A as x,B as S,C,D as w,E as T,F as ee,G as te,H as E,I as ne,J as D,K as re,L as O,M as k,N as A,O as ie,P as ae,Q as oe,R as se,S as ce,T as j,U as le,V as ue,W as de,X as fe,Y as pe,Z as M,_ as me,a as he,b as ge,c as _e,d as ve,et as ye,f as be,g as xe,h as Se,i as Ce,j as N,k as we,l as Te,m as Ee,n as De,o as Oe,p as ke,q as Ae,r as je,s as Me,t as Ne,u as Pe,v as Fe,w as Ie,x as Le,y as Re,z as ze}from"./vendor-CShgXaOi.js";import{C as P,S as Be,_ as Ve,a as He,b as Ue,c as We,d as Ge,f as Ke,g as qe,h as Je,i as Ye,l as Xe,m as Ze,n as Qe,o as $e,p as et,r as tt,s as nt,t as rt,u as it,v as at,x as ot,y as st}from"./syntax-C_RLNYQn.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var F=e(r(),1),ct=e(l(),1),lt=`access_token`,ut=`codesesh:remote-access-token`,dt=null;function ft(){if(typeof window>`u`)return;let e=new URL(window.location.href),t=e.searchParams.get(lt);if(t){dt=t;try{window.sessionStorage.setItem(ut,t)}catch{}e.searchParams.delete(lt),window.history.replaceState(window.history.state,``,`${e.pathname}${e.search}${e.hash}`);return}try{dt=window.sessionStorage.getItem(ut)}catch{dt=null}}function pt(e={}){if(!dt)return e;let t=new Headers(e.headers);return t.set(`Authorization`,`Bearer ${dt}`),{...e,headers:t}}function mt(e){if(!dt)return e;let t=new URL(e,window.location.origin);return t.searchParams.set(lt,dt),`${t.pathname}${t.search}`}async function I(e,t){let n=await fetch(e,pt(t));if(!n.ok){let r=t?.method??`GET`;throw Error(`${r} ${e} failed: ${n.status} ${n.statusText}`)}return n.json()}async function ht(e){return I(`/api/config`,e)}async function gt(){return I(`/api/status`)}function _t(e,t){t?.from!=null&&e.set(`from`,new Date(t.from).toISOString()),t?.to!=null&&e.set(`to`,new Date(t.to).toISOString())}async function vt(e,t){let n=new URLSearchParams;return _t(n,e),I(`/api/agents?${n}`,t)}async function yt(e,t){let n=new URLSearchParams;return _t(n,e),I(`/api/projects?${n}`,t)}async function bt(e={},t){let n=new URLSearchParams;return e.agent&&n.set(`agent`,e.agent),e.projectKind&&n.set(`projectKind`,e.projectKind),e.projectKey&&n.set(`projectKey`,e.projectKey),_t(n,e),I(`/api/sessions?${n}`,t)}async function xt(e,t,n){return I(`/api/sessions/${e}/${t}`,n)}async function St(e,t={}){let n=new URLSearchParams;e?.days!==0&&_t(n,e),e?.days!=null&&n.set(`days`,String(e.days)),t.projectKind&&n.set(`projectKind`,t.projectKind),t.projectKey&&n.set(`projectKey`,t.projectKey),t.agent&&n.set(`agent`,t.agent);let r=n.toString();return I(r?`/api/dashboard?${r}`:`/api/dashboard`)}async function Ct(e,t={}){let n=new URLSearchParams;return n.set(`q`,e),t.agent&&n.set(`agent`,t.agent),t.projectKind&&n.set(`projectKind`,t.projectKind),t.projectKey&&n.set(`projectKey`,t.projectKey),t.tag&&n.set(`tag`,t.tag),t.tool&&n.set(`tool`,t.tool),t.fileKind&&n.set(`fileActivity`,t.fileKind),t.costMin!=null&&n.set(`costMin`,String(t.costMin)),t.costMax!=null&&n.set(`costMax`,String(t.costMax)),_t(n,t),I(`/api/search?${n}`)}async function wt(){return I(`/api/bookmarks`)}async function Tt(e){return I(`/api/bookmarks`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})}async function Et(e){return I(`/api/bookmarks/import`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})}async function Dt(e,t){await I(`/api/bookmarks/${e}/${t}`,{method:`DELETE`})}async function Ot(e,t,n){await I(`/api/session-aliases/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({alias:n})})}async function kt(e,t){await I(`/api/session-aliases/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{method:`DELETE`})}function L(e,t={}){let n=JSON.stringify({event:e,data:t});try{if(!dt&&typeof navigator<`u`&&navigator.sendBeacon){let e=new Blob([n],{type:`application/json`});if(navigator.sendBeacon(`/api/logs`,e))return}}catch{}fetch(`/api/logs`,pt({method:`POST`,headers:{"Content-Type":`application/json`},body:n,keepalive:!0})).catch(()=>{})}var At=1e3,jt=3e4;function Mt(e){let t=e*.2;return e+(Math.random()*2-1)*t}function Nt(e,t,n,r){let i=!1,a,o=At,s=!1,c=!1,l,u=()=>{let d=new EventSource(mt(`/api/events`));l=d,d.addEventListener(`sessions-updated`,t=>{try{e(JSON.parse(t.data))}catch(e){console.error(`Failed to parse session update event:`,e)}}),d.addEventListener(`scan-status`,e=>{if(t)try{t(JSON.parse(e.data))}catch(e){console.error(`Failed to parse scan status event:`,e)}}),d.onopen=()=>{o=At,c=!1,s&&n?.(),s=!0},d.onerror=()=>{if(d.readyState!==EventSource.CLOSED||(d.close(),i))return;c||(c=!0,r?.());let e=Mt(o);o=Math.min(o*2,jt),a=setTimeout(u,e)}};return u(),()=>{i=!0,a!==void 0&&clearTimeout(a),l?.close()}}var R=t(),Pt=class extends F.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error(`ErrorBoundary caught error:`,e,t)}render(){return this.state.hasError?this.props.fallback?this.props.fallback:(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-error-border)] bg-[var(--console-error-bg)] p-6`,children:[(0,R.jsx)(`h3`,{className:`console-mono mb-2 text-sm font-semibold text-[var(--console-error)]`,children:`Something went wrong`}),(0,R.jsx)(`p`,{className:`console-mono text-xs text-[var(--console-muted)]`,children:this.state.error?.message||`Unknown error`})]}):this.props.children}};function Ft(e){return`'${e.replace(/'/g,`'\\''`)}'`}var It={claudecode:`claude --resume`,codex:`codex resume`,kimi:`kimi -r`,opencode:`opencode -s`,pi:`pi --session`};function Lt(e){let t=e.toLowerCase();return t in It?It[t]:null}function Rt({agentName:e,sessionId:t,directory:n}){let r=Lt(e);if(!r)return null;let i=`${r} ${Ft(t)}`,a=n??``;return a.trim()?`cd ${Ft(a)} && ${i}`:i}async function zt(e){if(typeof navigator<`u`&&navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch{}if(typeof document>`u`)return!1;let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,``),t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=!1;try{n=document.execCommand(`copy`)}catch{n=!1}return document.body.removeChild(t),n}function Bt({agentName:e,sessionId:t,directory:n,className:r=``}){let[i,a]=(0,F.useState)(!1),o=Rt({agentName:e,sessionId:t,directory:n});return(0,F.useEffect)(()=>{if(!i)return;let e=window.setTimeout(()=>a(!1),1500);return()=>window.clearTimeout(e)},[i]),o?(0,R.jsxs)(`button`,{type:`button`,onClick:e=>{e.preventDefault(),e.stopPropagation(),zt(o).then(e=>{e&&a(!0)})},"aria-label":i?`Resume command copied: ${o}`:`Copy resume command: ${o}`,title:i?`Copied: ${o}`:`Copy: ${o}`,className:`console-mono inline-flex items-center gap-1.5 rounded-sm border px-2 py-1 text-[11px] transition-colors ${r} ${i?`border-[var(--console-border-strong)] bg-[var(--console-surface-muted)] text-[var(--console-text)]`:`border-[var(--console-border)] bg-[var(--console-surface-muted)] text-[var(--console-muted)] hover:border-[var(--console-border-strong)] hover:text-[var(--console-text)]`}`,children:[i?(0,R.jsx)(re,{className:`size-3`,strokeWidth:1.8}):(0,R.jsx)(ee,{className:`size-3`,strokeWidth:1.8}),(0,R.jsx)(`span`,{children:i?`Copied`:`Copy resume`})]}):null}function Vt({target:e,onClose:t,onSave:n,onRemove:r}){let[i,a]=(0,F.useState)(``),[o,l]=(0,F.useState)(null),[d,m]=(0,F.useState)(!1);(0,F.useEffect)(()=>{a(e?.displayTitle??e?.title??``),l(null)},[e]);let h=async()=>{let r=i.trim();if(!r||r===e?.title.trim()){await g();return}m(!0),l(null);try{await n(r),t()}catch(e){l(e instanceof Error?e.message:`Could not rename this session.`)}finally{m(!1)}},g=async()=>{m(!0),l(null);try{await r(),t()}catch(e){l(e instanceof Error?e.message:`Could not restore the title.`)}finally{m(!1)}};return(0,R.jsx)(y,{open:e!==null,onOpenChange:e=>e?void 0:t(),children:(0,R.jsxs)(s,{children:[(0,R.jsx)(u,{className:`motion-backdrop fixed inset-0 z-50 bg-black/35`}),(0,R.jsxs)(c,{className:`motion-modal fixed left-1/2 top-1/2 z-50 w-[calc(100%-2rem)] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-sm border border-[var(--console-border-strong)] bg-white p-5 shadow-2xl outline-none`,children:[(0,R.jsx)(f,{className:`console-mono text-sm font-semibold text-[var(--console-text)]`,children:`Rename session`}),(0,R.jsxs)(`label`,{className:`console-mono mt-4 block text-[11px] uppercase tracking-wide text-[var(--console-muted)]`,children:[`Session title`,(0,R.jsx)(`input`,{autoFocus:!0,autoComplete:`off`,name:`session-title`,maxLength:160,value:i,onChange:e=>a(e.target.value),onKeyDown:e=>{e.key===`Enter`&&h()},className:`mt-1.5 w-full rounded-sm border border-[var(--console-border)] bg-white px-3 py-2 text-sm normal-case tracking-normal text-[var(--console-text)] outline-none focus:border-[var(--console-accent)] focus:ring-2 focus:ring-[var(--console-accent)]/25`})]}),o?(0,R.jsx)(`p`,{"aria-live":`polite`,className:`mt-2 text-xs text-[var(--console-error)]`,children:o}):null,(0,R.jsxs)(`div`,{className:`mt-5 flex items-center justify-between gap-3`,children:[(0,R.jsx)(`button`,{type:`button`,onClick:()=>void g(),disabled:d||!e?.displayTitle,className:`text-xs text-[var(--console-muted)] underline decoration-[var(--console-border-strong)] underline-offset-4 hover:text-[var(--console-text)] disabled:cursor-not-allowed disabled:opacity-40`,children:`Remove custom title`}),(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(p,{className:`rounded-sm border border-[var(--console-border)] px-3 py-1.5 text-xs text-[var(--console-text)] hover:bg-[var(--console-surface-muted)]`,children:`Cancel`}),(0,R.jsx)(`button`,{type:`button`,disabled:d,onClick:()=>void h(),className:`rounded-sm border border-[var(--console-border-strong)] bg-[var(--console-text)] px-3 py-1.5 text-xs text-white hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60`,children:d?`Saving…`:`Save title`})]})]})]})]})})}function Ht(e){let t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`}function Ut(e){if(!e)return null;let{from:t,to:n,days:r}=e.window;if(r===0||t==null)return`All time`;let i=Ht(t),a=Ht(n??Date.now());return r?`Last ${r}d · ${i} → ${a}`:`${i} → ${a}`}function Wt(e,t,n){return t?e?`Searching for "${e}"`:`Loading recent sessions`:e?`${n} matches for "${e}"`:`${n} recent sessions`}function Gt(e){if(!e)return null;if(e.backfill?.active){let t=e.backfill.currentAgent,n=e.backfill.pendingAgents.length;return t?`Indexing full history · ${t}${n>0?` · ${n} queued`:``}`:`Indexing full history`}if(e.backfill?.failedAgents.length)return`History indexing failed · ${e.backfill.failedAgents.join(`, `)}`;if(!e.active)return null;let t=e.completedAgents.length,n=e.totalAgents,r=e.scanningAgents[0],i=r?e.agentStatuses[r]:null,a=i?.total&&i.processed!=null?` · ${i.processed}/${i.total}`:``,o=n>0?r?` · ${r}${a} · ${t}/${n} agents ready`:` · ${t}/${n} agents ready`:``;return e.phase===`initializing`?`First-run setup: indexing recent sessions${o}. Full history continues in the background.`:e.phase===`indexing`?`Preparing local session index`:n>0?r?`Checking for new or changed sessions · ${r}${a} · ${t}/${n} agents ready`:`Checking for new or changed sessions · ${t}/${n} agents ready`:`Checking for new or changed sessions`}function Kt(e,t){let n=e?.agentStatuses[t];return!n||n.status===`complete`?null:n.total&&n.processed!=null?`${n.processed}/${n.total}`:n.status===`scanning`?`Scanning`:`Pending`}var qt=[{value:`7d`,label:`Last 7 days`},{value:`14d`,label:`Last 14 days`},{value:`30d`,label:`Last 30 days`},{value:`90d`,label:`Last 90 days`},{value:`all`,label:`All time`}];function Jt({window:e,preset:t,customFrom:n,customTo:r,onSelectPreset:i,onSelectCustom:a}){let[o,l]=(0,F.useState)(!1),[d,m]=(0,F.useState)(``),[h,g]=(0,F.useState)(``),_=Ut({window:e}),v=()=>{m(n??(e.from==null?``:Ht(e.from))),g(r??Ht(e.to??Date.now())),l(!0)};return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,R.jsxs)(`label`,{className:`relative block`,children:[(0,R.jsx)(`span`,{className:`sr-only`,children:`Session time range`}),(0,R.jsxs)(`select`,{value:t,title:_??`Session time range`,onChange:e=>{let t=e.target.value;t===`custom`?v():i(t)},className:`console-mono w-24 appearance-none rounded-sm border border-[var(--console-border)] bg-white py-1 pr-6 pl-2 text-xs text-[var(--console-text)] outline-none hover:border-[var(--console-border-strong)] focus-visible:ring-2 focus-visible:ring-[var(--console-accent)] focus-visible:ring-offset-2 sm:w-auto sm:max-w-44 sm:pr-7`,children:[qt.map(e=>(0,R.jsx)(`option`,{value:e.value,children:e.label},e.value)),(0,R.jsx)(`option`,{value:`custom`,children:`Custom range`})]}),(0,R.jsx)(`span`,{className:`pointer-events-none absolute top-1/2 right-2 -translate-y-1/2 text-[10px] text-[var(--console-muted)]`,children:`▾`})]}),t===`custom`?(0,R.jsx)(`button`,{type:`button`,onClick:v,"aria-label":`Edit custom time range`,className:`console-mono rounded-sm border border-[var(--console-border)] bg-white px-1.5 py-1 text-xs text-[var(--console-muted)] hover:border-[var(--console-border-strong)] hover:text-[var(--console-text)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--console-accent)] focus-visible:ring-offset-2`,children:`Edit`}):null]}),(0,R.jsx)(y,{open:o,onOpenChange:l,children:(0,R.jsxs)(s,{children:[(0,R.jsx)(u,{className:`motion-backdrop fixed inset-0 z-50 bg-black/35`}),(0,R.jsxs)(c,{className:`motion-modal fixed top-1/2 left-1/2 z-50 w-[calc(100%-2rem)] max-w-sm -translate-x-1/2 -translate-y-1/2 rounded-sm border border-[var(--console-border-strong)] bg-white p-5 shadow-2xl outline-none`,children:[(0,R.jsx)(f,{className:`console-mono text-sm font-semibold text-[var(--console-text)]`,children:`Custom time range`}),(0,R.jsx)(`p`,{className:`mt-1 text-xs text-[var(--console-muted)]`,children:`Both dates are included.`}),(0,R.jsxs)(`div`,{className:`mt-4 grid grid-cols-2 gap-3`,children:[(0,R.jsxs)(`label`,{className:`console-mono text-[11px] uppercase tracking-wide text-[var(--console-muted)]`,children:[`From`,(0,R.jsx)(`input`,{type:`date`,value:d,max:h||void 0,onChange:e=>m(e.target.value),className:`mt-1.5 w-full rounded-sm border border-[var(--console-border)] bg-white px-2 py-2 text-xs normal-case tracking-normal text-[var(--console-text)] outline-none focus:border-[var(--console-accent)] focus:ring-2 focus:ring-[var(--console-accent)]/25`})]}),(0,R.jsxs)(`label`,{className:`console-mono text-[11px] uppercase tracking-wide text-[var(--console-muted)]`,children:[`To`,(0,R.jsx)(`input`,{type:`date`,value:h,min:d||void 0,onChange:e=>g(e.target.value),className:`mt-1.5 w-full rounded-sm border border-[var(--console-border)] bg-white px-2 py-2 text-xs normal-case tracking-normal text-[var(--console-text)] outline-none focus:border-[var(--console-accent)] focus:ring-2 focus:ring-[var(--console-accent)]/25`})]})]}),(0,R.jsxs)(`div`,{className:`mt-5 flex justify-end gap-2`,children:[(0,R.jsx)(p,{className:`rounded-sm border border-[var(--console-border)] px-3 py-1.5 text-xs text-[var(--console-text)] hover:bg-[var(--console-surface-muted)]`,children:`Cancel`}),(0,R.jsx)(`button`,{type:`button`,disabled:!d||!h||d>h,onClick:()=>{a(d,h),l(!1)},className:`rounded-sm border border-[var(--console-border-strong)] bg-[var(--console-text)] px-3 py-1.5 text-xs text-white hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-40`,children:`Apply range`})]})]})]})})]})}var Yt=`codeseshProfiler`,Xt=`codeseshProfilerLog`,Zt=16,Qt=500;function $t(){if(typeof window>`u`)return!1;try{return window.localStorage.getItem(Yt)===`1`}catch{return!1}}function en(){if(typeof window>`u`)return!1;try{return window.localStorage.getItem(Xt)===`1`}catch{return!1}}function tn(e){let t=window.__CODESHESH_RENDER_PROFILE__??[];t.push(e),t.length>Qt&&t.splice(0,t.length-Qt),window.__CODESHESH_RENDER_PROFILE__=t}function nn(e){if(!$t()||typeof window>`u`)return;let t=performance.now();tn({...e,startTime:rn(e.startTime??t),commitTime:rn(e.commitTime??t),route:e.route??window.location.pathname})}function rn(e){return Math.round(e*100)/100}function an({id:e,detail:t,children:n}){return $t()?(0,R.jsx)(F.Profiler,{id:e,onRender:(e,n,r,i,a,o)=>{let s={id:e,source:`react-profiler`,phase:n,actualDuration:rn(r),baseDuration:rn(i),startTime:rn(a),commitTime:rn(o),route:window.location.pathname,...t?{detail:t}:{}};tn(s),s.actualDuration>=Zt&&en()&&L(`react.profiler.commit`,{...s})},children:(0,R.jsx)(on,{id:e,detail:t,children:n})}):n}function on({id:e,detail:t,children:n}){let r=performance.now(),i=(0,F.useRef)(0);return(0,F.useLayoutEffect)(()=>{i.current+=1;let n=performance.now();tn({id:e,source:`commit-latency`,phase:i.current===1?`mount`:`update`,actualDuration:rn(n-r),baseDuration:0,startTime:rn(r),commitTime:rn(n),route:window.location.pathname,...t?{detail:t}:{}})}),n}function sn(e){return{kind:e.identityKind,key:e.identityKey}}var cn=new Set([`git_remote`,`git_common_dir`,`manifest_path`,`synthetic`,`path`,`loose`]);function ln(e){return cn.has(e)}function un(e){return`${e.kind}:${e.key}`}function dn(e){return decodeURIComponent(e)}function fn(e){return`/projects/${encodeURIComponent(e.kind)}/${encodeURIComponent(e.key)}`}function pn(e,t){let n=e.replace(/^\/+|\/+$/g,``),r=n?n.split(`/`).map(e=>e.trim()).filter(Boolean):[];if(r.length===0)return{mode:`root`,activeAgentKey:null,activeSessionSlug:null};if(r[0]?.toLowerCase()===`projects`){if(r.length===1)return{mode:`projects`,activeAgentKey:null,activeSessionSlug:null};if(r.length===3)try{let e=decodeURIComponent(r[1]);return ln(e)?{mode:`project`,activeAgentKey:null,activeSessionSlug:null,activeProjectKind:e,activeProjectKey:dn(r[2])}:{mode:`invalidRoute`,activeAgentKey:null,activeSessionSlug:null}}catch{return{mode:`invalidRoute`,activeAgentKey:null,activeSessionSlug:null}}return{mode:`invalidRoute`,activeAgentKey:null,activeSessionSlug:null}}if(r.length===1){let e=r[0].toLowerCase();return t.has(e)?{mode:`agent`,activeAgentKey:e,activeSessionSlug:null}:{mode:`missingAgent`,activeAgentKey:null,activeSessionSlug:null,attemptedKey:e}}if(r.length===2){let e=r[0].toLowerCase(),n=r[1];return t.has(e)&&n?{mode:`session`,activeAgentKey:e,activeSessionSlug:n}:t.has(e)?{mode:`missingSession`,activeAgentKey:e,activeSessionSlug:n,attemptedSessionSlug:n}:{mode:`missingAgent`,activeAgentKey:null,activeSessionSlug:null,attemptedKey:e}}return{mode:`invalidRoute`,activeAgentKey:null,activeSessionSlug:null}}function mn(){let[e,t]=(0,F.useState)(null),n=(0,F.useCallback)(e=>{t(t=>t&&e.updatedAt<t.updatedAt?t:e)},[]);return(0,F.useEffect)(()=>{let e=!1;return gt().then(t=>{e||n(t)}).catch(e=>{console.error(`Failed to load scan status:`,e)}),()=>{e=!0}},[n]),{scanStatus:e,setScanStatus:n}}function hn(e){return e.mode===`session`?`${e.activeAgentKey}/${e.activeSessionSlug}`:``}function gn(e){let[t,n]=(0,F.useState)(null),[r,i]=(0,F.useState)(!1),[a,o]=(0,F.useState)(null),s=(0,F.useRef)(null),c=(0,F.useRef)(1),l=hn(e),u=(0,F.useRef)(l);u.current=l;let d=(0,F.useCallback)(e=>{let t=s.current;t&&(s.current=null,t.controller.abort(),L(`session.open.cancel`,{request_id:t.id,request_key:t.key,reason:e}))},[]),f=(0,F.useCallback)(async(e,t,r,a)=>{if(u.current!==r)return;d(`superseded`);let l={id:c.current++,key:r,controller:new AbortController};s.current=l,a===`route`&&(i(!0),o(null));let f=performance.now();L(`session.open.start`,{request_id:l.id,request_key:l.key,trigger:a,agent:e,session:t});try{let r=await xt(e,t,{signal:l.controller.signal});if(s.current?.id!==l.id||u.current!==l.key){L(`session.open.stale`,{request_id:l.id,request_key:l.key});return}n(r),o(null),L(`session.open.done`,{request_id:l.id,request_key:l.key,trigger:a,agent:e,session:t,duration_ms:Math.round(performance.now()-f),messages:r.messages.length})}catch(r){let i=s.current?.id===l.id;if(l.controller.signal.aborted||!i||u.current!==l.key)return;L(`session.open.error`,{request_id:l.id,request_key:l.key,trigger:a,agent:e,session:t,duration_ms:Math.round(performance.now()-f),error:r instanceof Error?r.message:String(r)}),o(`Session not found`),n(null)}finally{s.current?.id===l.id&&(s.current=null,i(!1))}},[d]);return(0,F.useEffect)(()=>{if(e.mode!==`session`){d(`route-change`),n(null),o(null),i(!1);return}return f(e.activeAgentKey,e.activeSessionSlug,l,`route`),()=>d(`route-change`)},[d,f,l,e.activeAgentKey,e.activeSessionSlug,e.mode]),{session:t,sessionLoading:r,sessionError:a,refresh:(0,F.useCallback)(async()=>{e.mode===`session`&&await f(e.activeAgentKey,e.activeSessionSlug,l,`refresh`)},[f,l,e])}}var _n={bugfix:`bugfix`,refactoring:`refactoring`,"feature-dev":`feature-dev`,testing:`testing`,docs:`docs`,"git-ops":`git-ops`,"build-deploy":`build-deploy`,exploration:`exploration`,planning:`planning`},vn={bugfix:{text:`#B42318`,border:`#FECDCA`,background:`#FEF3F2`,bar:`#F04438`},refactoring:{text:`#6941C6`,border:`#D9D6FE`,background:`#F4F3FF`,bar:`#7A5AF8`},"feature-dev":{text:`#175CD3`,border:`#B2DDFF`,background:`#EFF8FF`,bar:`#2E90FA`},testing:{text:`#027A48`,border:`#ABEFC6`,background:`#ECFDF3`,bar:`#12B76A`},docs:{text:`#B54708`,border:`#FEDF89`,background:`#FFFAEB`,bar:`#F79009`},"git-ops":{text:`#3538CD`,border:`#C7D7FE`,background:`#EEF4FF`,bar:`#444CE7`},"build-deploy":{text:`#C4320A`,border:`#F9DBAF`,background:`#FEF6EE`,bar:`#EF6820`},exploration:{text:`#0E7090`,border:`#A5F0FC`,background:`#ECFDFF`,bar:`#06AED4`},planning:{text:`#C11574`,border:`#FCCEEE`,background:`#FDF2FA`,bar:`#EE46BC`}};function yn(e){return vn[e]}function bn(e){let t=yn(e);return{color:t.text,borderColor:t.border,backgroundColor:t.background}}function xn({tags:e,limit:t=4,className:n=``}){if(!e||e.length===0)return null;let r=e.slice(0,t),i=e.length-r.length;return(0,R.jsxs)(`div`,{className:`flex flex-wrap gap-1 ${n}`,children:[r.map(e=>(0,R.jsx)(`span`,{className:`console-mono rounded-sm border px-1.5 py-0.5 text-[10px] font-medium`,style:bn(e),children:_n[e]},e)),i>0?(0,R.jsxs)(`span`,{className:`console-mono rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-1.5 py-0.5 text-[10px] text-[var(--console-muted)]`,children:[`+`,i]}):null]})}function Sn({active:e,label:t,onClick:n}){return(0,R.jsx)(`button`,{type:`button`,onClick:n,className:`console-mono rounded-sm border px-2 py-1 text-[10px] transition-colors ${e?`border-[var(--console-border-strong)] bg-[var(--console-accent)] text-white`:`border-[var(--console-border)] bg-[var(--console-surface-muted)] text-[var(--console-muted)] hover:bg-white`}`,children:t})}var Cn=[`bugfix`,`refactoring`,`feature-dev`,`testing`,`docs`,`git-ops`,`build-deploy`,`exploration`,`planning`],wn=[`apply_patch`,`bash`,`read`,`edit`,`grep`],Tn=[{kind:`read`,label:`Read`},{kind:`edit`,label:`Edit`},{kind:`write`,label:`Write`},{kind:`delete`,label:`Delete`}],En=[{id:`paid`,label:`Cost > $0`,costMin:1e-6},{id:`one_plus`,label:`Cost >= $1`,costMin:1},{id:`ten_plus`,label:`Cost >= $10`,costMin:10}];function Dn({agents:e,projects:t,filters:n,onChangeFilters:r}){let i=Object.values(n).some(Boolean),a=n.project?un(n.project):void 0,o=(e,t)=>{r(n=>({...n,[e]:n[e]===t?void 0:t}))};return(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white/85 p-3`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`console-mono text-[10px] font-semibold uppercase text-[var(--console-muted)]`,children:`Scope`}),(0,R.jsx)(Sn,{active:!n.project,label:`All`,onClick:()=>r(e=>({...e,project:void 0}))}),t.map(e=>(0,R.jsx)(Sn,{active:a===e.key,label:e.showCount===!1?e.label:`${e.label} · ${e.count}`,onClick:()=>r(t=>({...t,project:a===e.key?void 0:{kind:e.identityKind,key:e.identityKey}}))},e.key))]}),(0,R.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`console-mono text-[10px] font-semibold uppercase text-[var(--console-muted)]`,children:`Agent`}),(0,R.jsx)(Sn,{active:!n.agent,label:`All Agents`,onClick:()=>r(e=>({...e,agent:void 0}))}),e.map(e=>(0,R.jsx)(Sn,{active:n.agent===e.name,label:e.displayName,onClick:()=>o(`agent`,e.name)},e.name))]}),(0,R.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`console-mono text-[10px] font-semibold uppercase text-[var(--console-muted)]`,children:`Tag`}),Cn.map(e=>(0,R.jsx)(Sn,{active:n.tag===e,label:_n[e],onClick:()=>o(`tag`,e)},e))]}),(0,R.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`console-mono text-[10px] font-semibold uppercase text-[var(--console-muted)]`,children:`Signal`}),wn.map(e=>(0,R.jsx)(Sn,{active:n.tool===e,label:`tool:${e}`,onClick:()=>o(`tool`,e)},e))]}),(0,R.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`console-mono text-[10px] font-semibold uppercase text-[var(--console-muted)]`,children:`File Activity`}),Tn.map(e=>(0,R.jsx)(Sn,{active:n.fileKind===e.kind,label:e.label,onClick:()=>o(`fileKind`,e.kind)},e.kind))]}),(0,R.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`console-mono text-[10px] font-semibold uppercase text-[var(--console-muted)]`,children:`Cost Range`}),(0,R.jsx)(Sn,{active:!n.costRange,label:`Any Cost`,onClick:()=>r(e=>({...e,costRange:void 0}))}),En.map(e=>(0,R.jsx)(Sn,{active:n.costRange===e.id,label:e.label,onClick:()=>o(`costRange`,e.id)},e.id)),i?(0,R.jsx)(`button`,{type:`button`,onClick:()=>r({}),className:`console-mono ml-auto rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-2 py-1 text-[10px] text-[var(--console-muted)] transition-colors hover:bg-white`,children:`Clear`}):null]})]})}function On(e,t){return(t.time_updated??t.time_created)-(e.time_updated??e.time_created)}function kn(e){for(let t=1;t<e.length;t+=1)if(On(e[t-1],e[t])>0)return[...e].sort(On);return[...e]}function An(e){return e.slug.split(`/`)[0]?.toLowerCase()||`unknown`}function jn(e,t){return`${e.toLowerCase()}/${t}`}function Mn(e){return`${e.kind}:${e.key}`}function Nn(e,t){return`${e}\0${t.toLowerCase()}`}function Pn(e,t,n){let r=e.get(t);r?r.push(n):e.set(t,[n])}function Fn(e){let t=new Map,n=new Map,r=new Map,i=new Map;for(let n of e){let e=jn(An(n),n.id);t.has(e)||t.set(e,n)}let a=kn(e);for(let e of a){let t=An(e);Pn(n,t,e);let a=e.project_identity;if(!a?.key)continue;let o=Mn(a);Pn(r,o,e),Pn(i,Nn(o,t),e)}return{sourceSessions:e,sessionsByActivity:a,byRouteKey:t,byAgent:n,byProjectIdentityKey:r,byProjectAgentKey:i}}function In(e,t,n){let r=new Map;for(let t of e)r.set(jn(An(t),t.id),t);for(let e of n)r.delete(jn(e.agentName,e.sessionId));for(let e of t)r.set(jn(e.agentName,e.session.id),e.session);return kn([...r.values()])}function Ln(e,t,n){let r=e.get(t);if(r){r.push(n);return}e.set(t,[n])}function Rn(e,t){let n=Fn(e),r=new Map,i=new Map,a=new Map,o=new Map,s=[],c=new Set(t.map(e=>e.name.toLowerCase()));for(let e of c)r.set(e,[]),i.set(e,[]);for(let t of e){let e=An(t),n={...t,agentKey:e,sessionSlug:t.id,fullPath:t.slug};s.push(n),c.has(e)&&i.get(e).push(n);let r=t.project_identity;if(!r?.key)continue;let l=un(r);Ln(a,l,n);let u=o.get(l);u?u.count+=1:o.set(l,{key:l,identityKind:r.kind,identityKey:r.key,label:r.displayName||t.directory,count:1})}for(let e of c)r.set(e,n.byAgent.get(e)??[]);return{byRouteKey:n.byRouteKey,byAgent:r,byProjectIdentityKey:n.byProjectIdentityKey,byProjectAgentKey:n.byProjectAgentKey,byLandingAgent:i,byLandingProjectIdentityKey:a,landingSessions:s,sessionsByActivity:n.sessionsByActivity,projectOptions:[...o.values()].toSorted((e,t)=>t.count-e.count).slice(0,8)}}function zn(e){let t=new Map,n=new Map;for(let r=0;r<e.length;r+=1){let i=e[r];t.has(i.id)||(t.set(i.id,i),n.set(i.id,r))}return{byId:t,indexById:n}}function Bn(e,t){return{agent:e.agent,projectKind:e.project?.kind,projectKey:e.project?.key,tag:e.tag,tool:e.tool,fileKind:e.fileKind,costMin:t}}function Vn(e,t){return e.trim().length>0||!!(t.tool||t.fileKind)}function Hn(e,t,n){let r=t.agent?e.byAgent.get(t.agent)??[]:null,i=t.project?un(t.project):void 0,a=i?e.byProjectIdentityKey.get(i)??[]:null,o=r&&a?r.length<=a.length?r:a:r??a??e.sessionsByActivity,s=[];for(let e of o)if(!(t.agent&&An(e)!==t.agent)&&!(i&&(!e.project_identity||un(e.project_identity)!==i))&&!(t.tag&&!e.smart_tags?.includes(t.tag))&&!(n!==void 0&&e.stats.total_cost<n)&&(s.push({agentName:An(e),session:e,snippet:`Recent session · ${e.directory}`,matchType:`recent`}),s.length>=50))break;return s}function Un({usesServerSearch:e,isLoading:t,results:n,selectedProject:r,recentProjectOptions:i}){if(!e)return i;let a=new Map,o=t?[]:n;for(let e of o){let t=e.session.project_identity;if(!t?.key)continue;let n=un(t),r=a.get(n);if(r){r.count+=1;continue}a.set(n,{key:n,identityKind:t.kind,identityKey:t.key,label:t.displayName||e.session.directory,count:1,showCount:!1})}let s=r?un(r):void 0,c=s?i.find(e=>e.key===s):void 0;return s&&c&&!a.has(s)&&a.set(s,{...c,count:0,showCount:!1}),[...a.values()].toSorted((e,t)=>t.count-e.count).slice(0,8)}function Wn(e,t=null){let[n,r]=(0,F.useState)(``),[i,a]=(0,F.useState)(``),[o,s]=(0,F.useState)(!1),[c,l]=(0,F.useState)({}),[u,d]=(0,F.useState)({status:`idle`}),[f,p]=(0,F.useState)(0),[m,h]=(0,F.useState)(0),g=(0,F.useRef)(null),_=(0,F.useRef)(new Map),v=(0,F.useMemo)(()=>En.find(e=>e.id===c.costRange)?.costMin,[c.costRange]),y=(0,F.useMemo)(()=>({...Bn(c,v),from:t?.from,to:t?.to}),[c,v,t]),b=Vn(i,c),x=(0,F.useMemo)(()=>Hn(e,c,v),[e,c,v]),S=(0,F.useMemo)(()=>u.status===`loaded`?u.results:[],[u]),C=u.status===`loading`,w=(0,F.useMemo)(()=>Un({usesServerSearch:b,isLoading:C,results:S,selectedProject:c.project,recentProjectOptions:e.projectOptions}),[c.project,C,S,e.projectOptions,b]);(0,F.useEffect)(()=>{if(!o){d({status:`idle`});return}if(!b){d({status:`loaded`,results:x});return}let e=!1;d({status:`loading`});let t=performance.now();return L(`search.start`,{query_length:i.length}),Ct(i,y).then(n=>{e||(d({status:`loaded`,results:n.results}),L(`search.done`,{duration_ms:Math.round(performance.now()-t),results:n.results.length}))}).catch(n=>{e||(console.error(`Failed to load search results:`,n),L(`search.error`,{duration_ms:Math.round(performance.now()-t),error:n instanceof Error?n.message:String(n)}),d({status:`failed`,error:n instanceof Error?n.message:`Search request failed`}))}),()=>{e=!0}},[i,x,f,o,y,b]),(0,F.useEffect)(()=>{o&&h(e=>S.length===0?0:Math.min(e,S.length-1))},[o,S.length]),(0,F.useEffect)(()=>{if(!o)return;let e=S[m];if(!e)return;let t=`${e.agentName}/${e.session.id}`;_.current.get(t)?.scrollIntoView({block:`nearest`})},[o,S,m]);let T=(0,F.useCallback)(()=>{s(!0),window.setTimeout(()=>{g.current?.focus(),g.current?.select()},0)},[]),ee=(0,F.useCallback)(()=>{a(n.trim()),s(!0),h(0)},[n]),te=(0,F.useCallback)(()=>{s(!1),a(``)},[]),E=(0,F.useCallback)(()=>{p(e=>e+1)},[]);return{draftSearchQuery:n,activeSearchQuery:i,searchMode:o,searchFilters:c,searchState:u,searchResults:S,searchLoading:C,projectOptions:w,usesServerSearch:b,selectedSearchIndex:m,searchInputRef:g,registerResultRef:(0,F.useCallback)((e,t)=>{t?_.current.set(e,t):_.current.delete(e)},[]),setDraftSearchQuery:r,setSearchFilters:l,setSelectedSearchIndex:h,openSearch:T,submitSearch:ee,closeSearch:te,retrySearch:E,refresh:(0,F.useCallback)(async()=>{if(o&&b)try{let e=await Ct(i,y);d({status:`loaded`,results:e.results})}catch(e){console.error(`Failed to refresh search results:`,e),d({status:`failed`,error:e instanceof Error?e.message:`Search request failed`})}},[o,b,i,y])}}var Gn=`codesesh:bookmarks:v1`;function Kn(e){return typeof e==`object`&&!!e}function qn(e){return Kn(e)?typeof e.message_count==`number`&&typeof e.total_input_tokens==`number`&&typeof e.total_output_tokens==`number`&&typeof e.total_cost==`number`&&(e.total_tokens==null||typeof e.total_tokens==`number`):!1}function Jn(e){return Kn(e)?typeof e.sessionId==`string`&&typeof e.agentKey==`string`&&typeof e.fullPath==`string`&&typeof e.title==`string`&&typeof e.directory==`string`&&typeof e.time_created==`number`&&(e.time_updated==null||typeof e.time_updated==`number`)&&(e.bookmarked_at==null||typeof e.bookmarked_at==`number`)&&qn(e.stats):!1}function Yn(e,t){return`${e}:${t}`}function Xn(e,t){return{sessionId:e.id,agentKey:t,fullPath:e.slug,title:e.title,directory:e.directory,time_created:e.time_created,time_updated:e.time_updated,stats:e.stats,bookmarked_at:Date.now()}}function Zn(){if(typeof window>`u`)return[];try{let e=window.localStorage.getItem(Gn);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(Jn).toSorted($n):[]}catch{return[]}}function Qn(){typeof window>`u`||window.localStorage.removeItem(Gn)}function $n(e,t){let n=e.time_updated??e.time_created;return(t.time_updated??t.time_created)-n}function er(e,t){if(e.length===0||t.length===0)return e;let n=new Map(t.map(e=>{let t=Xn(e,e.slug.split(`/`)[0]?.toLowerCase()??`unknown`);return[Yn(t.agentKey,t.sessionId),t]})),r=!1,i=e.map(e=>{let t=n.get(Yn(e.agentKey,e.sessionId));return!t||t.fullPath===e.fullPath&&t.title===e.title&&t.directory===e.directory&&t.time_created===e.time_created&&t.time_updated===e.time_updated&&t.stats.message_count===e.stats.message_count&&t.stats.total_input_tokens===e.stats.total_input_tokens&&t.stats.total_output_tokens===e.stats.total_output_tokens&&t.stats.total_cost===e.stats.total_cost&&t.stats.total_tokens===e.stats.total_tokens?e:(r=!0,{...t,bookmarked_at:e.bookmarked_at})});return r?i.toSorted($n):e}function tr(e){let[t,n]=(0,F.useState)([]),r=(0,F.useCallback)(async()=>{try{let e=await wt();n(e.bookmarks)}catch(e){console.error(`Failed to load bookmarks:`,e)}},[]);(0,F.useEffect)(()=>{let e=!1;return wt().then(t=>{e||n(t.bookmarks)}).catch(e=>{console.error(`Failed to load bookmarks:`,e)}),()=>{e=!0}},[]),(0,F.useEffect)(()=>{let t=!1;return n(n=>{let r=er(n,e);return r===n?n:(Et(r.map(({bookmarked_at:e,...t})=>t)).catch(e=>{t||console.error(`Failed to sync bookmark snapshots:`,e)}),r)}),()=>{t=!0}},[e]),(0,F.useEffect)(()=>{let e=!1;return(async()=>{let t=Zn();if(t.length!==0)try{let r=await Et(t.map(({bookmarked_at:e,...t})=>t));if(e)return;n(r.bookmarks),Qn()}catch(t){e||console.error(`Failed to migrate legacy bookmarks:`,t)}})(),()=>{e=!0}},[]);let i=(0,F.useMemo)(()=>new Set(t.map(e=>Yn(e.agentKey,e.sessionId))),[t]),a=(0,F.useCallback)((e,t)=>i.has(Yn(e,t)),[i]),o=(0,F.useCallback)(e=>{let r=Yn(e.agentKey,e.sessionId),a=i.has(r),o=t,s=a?o.filter(e=>Yn(e.agentKey,e.sessionId)!==r):[...o,e].toSorted((e,t)=>{let n=e.time_updated??e.time_created;return(t.time_updated??t.time_created)-n});n(s),L(a?`bookmark.delete`:`bookmark.add`,{agent:e.agentKey,session:e.sessionId}),(a?Dt(e.agentKey,e.sessionId):Tt({agentKey:e.agentKey,sessionId:e.sessionId,fullPath:e.fullPath,title:e.title,directory:e.directory,time_created:e.time_created,time_updated:e.time_updated,stats:e.stats})).catch(e=>{console.error(`Failed to toggle bookmark:`,e),n(o)})},[i,t]),s=(0,F.useCallback)((e,t)=>{o(Xn(e,t))},[o]);return{bookmarkedSessions:(0,F.useMemo)(()=>t.toSorted((e,t)=>(t.time_updated??t.time_created)-(e.time_updated??e.time_created)),[t]),isSessionBookmarked:a,toggleBookmark:o,toggleSessionBookmark:s,refresh:r}}function nr(e,t){let n=t?.projectKind,r=t?.projectKey,i=t?.identityKey,a=t!==void 0,[o,s]=(0,F.useState)(null),[c,l]=(0,F.useState)(!1),[u,d]=(0,F.useState)(null),[f,p]=(0,F.useState)(void 0);(0,F.useEffect)(()=>{i&&p(void 0)},[i]);let m=(0,F.useCallback)(async()=>!e||a&&!r?null:St(e,{projectKind:n,projectKey:r,agent:f}),[a,r,n,f,e]);return(0,F.useEffect)(()=>{if(!e||a&&!r){s(null),d(null),l(!1);return}let t=!0;return l(!0),d(null),m().then(e=>{t&&s(e)}).catch(e=>{t&&(console.error(`Failed to load dashboard:`,e),s(null),d(`Failed to load dashboard`))}).finally(()=>{t&&l(!1)}),()=>{t=!1}},[a,m,r,e]),{dashboard:o,loading:c,error:u,selectedAgent:f,setSelectedAgent:p}}function rr(e){return e.mode===`projects`||e.mode===`project`?`projects`:e.mode===`agent`||e.mode===`missingAgent`?`agents`:null}function ir(e,t){return e.find(e=>t===un(sn(e)))??null}function ar(e,t,n){return t?n?e.byProjectAgentKey.get(Nn(t,n))??[]:e.byProjectIdentityKey.get(t)??[]:[]}function or({viewState:e,sessionIndexes:t,session:n,agents:r,projects:i,selectedProjectAgent:a,isSessionBookmarked:o}){let s=rr(e),[c,l]=(0,F.useState)(s??`agents`),u=s??c;return(0,F.useEffect)(()=>{s&&l(s)},[s]),{browseBy:u,selectBrowseBy:(0,F.useCallback)(e=>{l(e)},[]),...(0,F.useMemo)(()=>{let s=e.activeAgentKey,c=r.find(e=>e.name.toLowerCase()===s)??null,l=e.mode===`project`?{kind:e.activeProjectKind,key:e.activeProjectKey}:null,d=l?un(l):null,f=l&&d?{identity:l,identityKey:d,project:ir(i,d)}:null,p=d?t.byLandingProjectIdentityKey.get(d)??[]:[],m=e.mode===`session`?t.byRouteKey.get(jn(e.activeAgentKey,e.activeSessionSlug))??null:null,h=(e.mode===`session`&&n?.id===e.activeSessionSlug?n:null)?.project_identity??m?.project_identity??null,g=u===`projects`?e.mode===`project`?l:e.mode===`session`?h:null:null,_=g?un(g):null,v=null;g&&_&&(v=f?.identityKey===_?f:{identity:g,identityKey:_,project:ir(i,_)});let y=s?t.byAgent.get(s)??[]:[],b=ar(t,_,a),x=u===`projects`?b:y,S=zn(x),C=new Set(x.filter(e=>o(An(e),e.id)).map(e=>e.id));return{activeAgentKey:s,activeAgent:c,activeProject:f,activeProjectSessions:p,openedSessionProjectIdentity:h,selectedProjectNavigation:v,sidebarSessions:x,sidebarSessionLookup:S,bookmarkedSidebarSessionIds:C}},[r,u,o,i,a,n,t,e])}}function sr(e){let t=new Map,n=new Map;for(let r of e){let e=r.name.toLowerCase();t.set(e,r),n.set(e,r.displayName)}return{active:e.filter(e=>e.count>0),byKey:t,displayNameByKey:n}}function cr(e,t){return e.byKey.get(t.toLowerCase())}var lr={config:null,window:null,agents:[],sessions:[],projects:[],dashboard:null,loading:!0,error:null,version:0};function ur(e,t){return e?.from===t.from&&e?.to===t.to&&e?.days===t.days}function dr(e){return e instanceof DOMException&&e.name===`AbortError`}function fr(){let[e,t]=(0,F.useReducer)((e,t)=>t,lr),n=(0,F.useRef)(e),r=(0,F.useRef)(null),i=(0,F.useRef)(0),a=(0,F.useRef)(null),o=(0,F.useCallback)(e=>{let r=e(n.current);n.current=r,t(r)},[]);(0,F.useEffect)(()=>{let e=new AbortController;return ht({signal:e.signal}).then(t=>{e.signal.aborted||o(e=>({...e,config:t}))}).catch(t=>{e.signal.aborted||(console.error(`Failed to load config:`,t),o(e=>({...e,loading:!1,error:`Failed to load data. Is the CLI server running?`})))}),()=>e.abort()},[o]),(0,F.useEffect)(()=>()=>{r.current?.abort()},[]);let s=(0,F.useCallback)(e=>{r.current?.abort();let t=new AbortController,n=++i.current;return r.current=t,a.current=e,o(e=>({...e,loading:!0,error:null})),{controller:t,id:n}},[o]),c=(0,F.useCallback)(async(e,t)=>{try{return(await yt(e,{signal:t})).projects}catch(e){if(t.aborted)throw e;return console.error(`Failed to load projects:`,e),[]}},[]),l=(0,F.useCallback)((e,t)=>{if(i.current!==e)return null;r.current=null;let n={...t.window},a={...t,window:n};return o(e=>({...e,...a,loading:!1,error:null,version:e.version+1})),a},[o]),u=(0,F.useCallback)((e,t)=>{i.current!==e||dr(t)||(r.current=null,o(e=>({...e,loading:!1,error:`Failed to load data. Is the CLI server running?`})))},[o]),d=(0,F.useCallback)(async e=>{let{controller:t,id:n}=s(e);try{let[r,i,a,o]=await Promise.all([vt(e,{signal:t.signal}),bt({from:e.from,to:e.to},{signal:t.signal}),c(e,t.signal),St(e)]);return l(n,{window:e,agents:r,sessions:i.sessions,projects:a,dashboard:o})}catch(e){if(u(n,e),t.signal.aborted||dr(e))return null;throw e}},[s,l,u,c]),f=(0,F.useCallback)(async e=>{let t=a.current;if(!t)return null;if(!e.changedSessionHeads||!e.removedSessionRefs||r.current||!ur(n.current.window,t))return d(t);let i=In(n.current.sessions,e.changedSessionHeads,e.removedSessionRefs),{controller:o,id:f}=s(t);try{let[e,n,r]=await Promise.all([vt(t,{signal:o.signal}),c(t,o.signal),St(t)]);return l(f,{window:t,agents:e,sessions:i,projects:n,dashboard:r})}catch(e){if(u(f,e),o.signal.aborted||dr(e))return null;throw e}},[s,l,u,c,d]),p=(0,F.useMemo)(()=>sr(e.agents),[e.agents]),m=(0,F.useMemo)(()=>new Set(p.active.map(e=>e.name.toLowerCase())),[p.active]);return{...e,activeAgents:p.active,agentCatalog:p,validAgentKeys:m,agentNameMap:p.displayNameByKey,reload:d,applyLiveEvent:f}}function pr({window:e,reload:t}){(0,F.useEffect)(()=>{if(!e)return;let n=!0,r=performance.now();return L(`app.load.start`,{path:globalThis.window.location.pathname}),t(e).then(e=>{!n||!e||L(`app.load.done`,{duration_ms:Math.round(performance.now()-r),agents:e.agents.length,sessions:e.sessions.length,projects:e.projects.length})}).catch(e=>{n&&(console.error(`Failed to load data:`,e),L(`app.load.error`,{duration_ms:Math.round(performance.now()-r),error:e instanceof Error?e.message:String(e)}))}),()=>{n=!1}},[t,e])}function mr({applyLiveEvent:e,setScanStatus:t}){let[n,r]=(0,F.useState)(null),[i,a]=(0,F.useState)(null),o=(0,F.useEffectEvent)(async t=>{try{await e(t)&&t.newSessions>0&&r(`发现 ${t.newSessions} 个新会话,列表已自动刷新`)}catch(e){console.error(`Failed to sync live session update:`,e)}}),s=(0,F.useEffectEvent)(()=>{a(null),o({type:`sessions-updated`,changedAgents:[],newSessions:0,updatedSessions:0,removedSessions:0,totalSessions:0,timestamp:Date.now()})});return(0,F.useEffect)(()=>Nt(e=>{o(e)},t,s,()=>{a(`实时更新已断开,重连中…`)}),[t]),(0,F.useEffect)(()=>{if(!n)return;let e=window.setTimeout(()=>r(null),3500);return()=>window.clearTimeout(e)},[n]),{liveNotice:i??n}}function hr(e){if(!(e instanceof HTMLElement))return!1;let t=e.tagName.toLowerCase();return t===`input`||t===`textarea`||t===`select`||e.isContentEditable}function gr(e){let{viewState:t,browseBy:n,navigate:r,activeAgentKey:i,sidebarSessions:a,sidebarSessionLookup:o,selectedSidebarSessionId:s,setSelectedSidebarSessionId:c,selectedProjectNavigationIdentity:l,shortcutHelpOpen:u,setShortcutHelpOpen:d,dismissShortcutHint:f,isSearchMode:p,activeSearchQuery:m,searchResults:h,selectedSearchIndex:g,setSelectedSearchIndex:_,setDraftSearchQuery:v,openSearch:y,closeSearch:b}=e,x=(0,F.useEffectEvent)(e=>{let x=e.key;if((e.metaKey||e.ctrlKey)&&x.toLowerCase()===`k`){e.preventDefault(),y(),_(0);return}if(e.defaultPrevented||e.metaKey||e.ctrlKey||e.altKey||e.isComposing)return;let S=e.target,C=hr(S);if(u){x===`Escape`&&(e.preventDefault(),d(!1));return}if(C){x===`Escape`&&(e.preventDefault(),S instanceof HTMLElement&&S.blur());return}if(x===`?`){e.preventDefault(),d(!0),f();return}if(x===`/`){e.preventDefault(),f(),y();return}if(x===`Escape`){if(e.preventDefault(),p){b(),v(``);return}if(t.mode===`session`&&t.activeAgentKey){if(n===`projects`&&l){r(fn(l));return}r(`/${t.activeAgentKey}`)}return}if(p){if(h.length===0)return;if(x===`j`){e.preventDefault(),f(),_(e=>Math.min(e+1,h.length-1));return}if(x===`k`){e.preventDefault(),f(),_(e=>Math.max(e-1,0));return}if(x===`g`){e.preventDefault(),f(),_(0);return}if(x===`G`){e.preventDefault(),f(),_(h.length-1);return}if(x===`Enter`){let t=h[g];if(!t)return;e.preventDefault(),f(),b(),r(`/${t.agentName.toLowerCase()}/${t.session.id}`,{state:{searchQuery:m}})}return}if(n===`agents`&&!i||a.length===0)return;let w=e=>{f();let t=s==null?-1:o.indexById.get(s)??-1,n=t>=0?t:e>=0?-1:a.length,r=Math.max(0,Math.min(n+e,a.length-1));c(a[r]?.id??null)};if(x===`j`){e.preventDefault(),w(1);return}if(x===`k`){e.preventDefault(),w(-1);return}if(x===`g`){e.preventDefault(),f(),c(a[0]?.id??null);return}if(x===`G`){e.preventDefault(),f(),c(a.at(-1)?.id??null);return}if(x===`Enter`){let t=s==null?null:o.byId.get(s);if(!t)return;e.preventDefault(),f(),r(n===`projects`?`/${t.slug}`:`/${i}/${t.id}`)}});(0,F.useEffect)(()=>(window.addEventListener(`keydown`,x),()=>window.removeEventListener(`keydown`,x)),[])}var _r={"7d":7,"14d":14,"30d":30,"90d":90};function vr(e){let t=new Date(e);return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()}function yr(e){let t=new Date(vr(e));return new Date(t.getFullYear(),t.getMonth(),t.getDate()+1).getTime()-1}function br(e,t){let n=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!n)return null;let r=Number(n[1]),i=Number(n[2])-1,a=Number(n[3]),o=t?new Date(r,i,a+1,0,0,0,-1):new Date(r,i,a),s=new Date(r,i,a);return s.getFullYear()!==r||s.getMonth()!==i||s.getDate()!==a?null:o.getTime()}function xr(e){return e.days===0||e.from==null?`all`:e.days===7||e.days===14||e.days===30||e.days===90?`${e.days}d`:`custom`}function Sr(e,t){let n=vr(t),r=yr(t);if(e===`all`)return{from:0,days:0};let i=_r[e],a=new Date(n);return{from:new Date(a.getFullYear(),a.getMonth(),a.getDate()-i+1).getTime(),to:r,days:i}}function Cr(e,t,n=Date.now()){let r=e.get(`range`);if(r&&r!==`custom`&&r in _r||r===`all`)return{preset:r,window:Sr(r,n)};if(r===`custom`){let t=e.get(`from`)??``,n=e.get(`to`)??``,i=br(t,!1),a=br(n,!0);if(i!=null&&a!=null&&i<=a)return{preset:r,window:{from:i,to:a},customFrom:t,customTo:n}}let i=xr(t);return i===`custom`?{preset:i,window:t,customFrom:t.from==null?void 0:wr(t.from),customTo:wr(t.to??n)}:{preset:i,window:Sr(i,n)}}function wr(e){let t=new Date(e);return`${String(t.getFullYear()).padStart(4,`0`)}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`}function Tr(e,t){let n=new URLSearchParams(e);return n.set(`range`,t),n.delete(`from`),n.delete(`to`),n}function Er(e,t,n){let r=new URLSearchParams(e);return r.set(`range`,`custom`),r.set(`from`,t),r.set(`to`,n),r}var Dr=[`range`,`from`,`to`];function Or(e){let t=new URLSearchParams;for(let n of Dr){let r=e.get(n);r!=null&&t.set(n,r)}return t.toString()}function kr(e=Date.now()){let t=new Date(e);return new Date(t.getFullYear(),t.getMonth(),t.getDate()+1).getTime()}function Ar(e,t=Date.now()){return(e>t?e:kr(t))-1}function jr(e){return e!==null&&e!==`all`&&e!==`custom`}function Mr(e){let t=oe(),[n,r]=ye(),i=n.toString(),a=n.has(`range`),o=(0,F.useRef)(t.pathname),s=(0,F.useRef)(null),[c,l]=(0,F.useState)(kr);a&&(s.current=Or(n));let u=o.current!==t.pathname,d=(0,F.useMemo)(()=>{if(a||!u||!s.current)return i;let e=new URLSearchParams(i),t=new URLSearchParams(s.current);for(let[n,r]of t)e.set(n,r);return e.toString()},[a,u,i]),f=(0,F.useMemo)(()=>new URLSearchParams(d),[d]),p=Or(f),m=(0,F.useMemo)(()=>new URLSearchParams(p),[p]);(0,F.useEffect)(()=>{if(d!==i){r(f,{replace:!0});return}o.current=t.pathname},[f,d,t.pathname,i,r]);let h=(0,F.useMemo)(()=>e?Cr(m,e,Ar(c)):null,[e,c,m]),g=(0,F.useCallback)(e=>Cr(m,e).window,[m]),_=(0,F.useCallback)(()=>e?g(e):null,[e,g]);(0,F.useEffect)(()=>{if(!jr(h?.preset??null))return;let e=Math.max(0,c-Date.now()),t=window.setTimeout(()=>{l(kr())},e);return()=>window.clearTimeout(t)},[c,h?.preset]);let v=(0,F.useCallback)(e=>r(Tr(new URLSearchParams(i),e)),[i,r]),y=(0,F.useCallback)((e,t)=>r(Er(new URLSearchParams(i),e,t)),[i,r]);return{timeWindow:h?.window??null,preset:h?.preset??null,customFrom:h?.customFrom,customTo:h?.customTo,resolve:g,resolveCurrent:_,selectPreset:v,selectCustom:y}}function Nr(e){if(!e)return`unknown`;let t=Date.now()-e;if(Number.isNaN(t)||t<0)return`just now`;let n=Math.floor(t/6e4);if(n<1)return`just now`;if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}function z(e){return e.toLocaleString(`en-US`)}function Pr(e){return e===0?`$0.00`:e<.01?`$${e.toFixed(4)}`:`$${e.toFixed(2)}`}function Fr(e){if(e===`recorded`)return`recorded`;if(e===`estimated`)return`estimated`}function Ir(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:e.toString()}function Lr(e){if(typeof e==`number`&&e<=0)return`Unknown time`;let t=null;if(typeof e==`number`){let n=e<10**12?e*1e3:e;t=new Date(n)}else if(typeof e==`string`&&e.trim()){let n=Number(e);t=!Number.isNaN(n)&&n>0?new Date(n<10**12?n*1e3:n):new Date(e)}return!t||Number.isNaN(t.getTime())?`Unknown time`:t.toLocaleTimeString(`en-US`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!0})}function B(e){return e.display_title??e.title}function Rr(e){let t=Br(e);return{contextLabel:zr(e),...t,breadcrumbs:Vr(e)}}function zr(e){if(e.isSearchMode)return`Search`;switch(e.viewState.mode){case`session`:return`Session`;case`root`:return`Dashboard`;case`projects`:return`Projects`;case`project`:return`Project`;default:return`Landing`}}function Br(e){let{viewState:t}=e;if(e.isSearchMode)return{title:`Search`,subtitle:e.searchSubtitle};if(t.mode===`root`)return{title:`Dashboard`,subtitle:e.dashboard?`${e.dashboard.totals.sessions.toLocaleString(`en-US`)} total sessions across ${e.dashboard.perAgent.length} agents`:`Aggregated view across all agents`};if(t.mode===`projects`)return{title:`Projects`,subtitle:`${e.projects.length.toLocaleString(`en-US`)} projects across ${e.sessionCount.toLocaleString(`en-US`)} sessions`};if(t.mode===`project`)return{title:e.activeProject?.displayName??`Project`,subtitle:e.activeProject?`${e.activeProject.sessionCount.toLocaleString(`en-US`)} sessions · ${e.activeProject.agentStats.length} agents`:t.activeProjectKey};if(t.mode===`agent`)return{title:e.activeAgent?.displayName??t.activeAgentKey,subtitle:`${e.sidebarSessionCount} sessions`};if(t.mode===`session`){if(e.sessionError)return{title:`Session Not Found`,subtitle:`Requested /${t.activeAgentKey}/${t.activeSessionSlug}`};if(e.session){let t=e.session.time_updated??e.session.time_created;return{title:B(e.session)||`Conversation`,subtitle:(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`span`,{children:[`ID: #`,e.session.id.slice(0,8)]}),(0,R.jsx)(`span`,{children:`·`}),(0,R.jsxs)(`span`,{children:[`Updated `,Nr(t)]}),(0,R.jsx)(xn,{tags:e.session.smart_tags,limit:9,className:`inline-flex`})]})}}}return t.mode===`missingAgent`?{title:`Agent Not Found`,subtitle:`Requested /${t.attemptedKey}`}:t.mode===`missingSession`?{title:`Session Not Found`,subtitle:`Session not found in /${t.activeAgentKey}`}:{title:`CodeSesh`,subtitle:`Select an agent to browse sessions`}}function Vr(e){let{viewState:t}=e;if(e.isSearchMode)return[{label:`Search`}];let n={label:`Dashboard`,to:e.browseBy===`agents`&&t.mode===`root`||e.browseBy===`projects`&&t.mode===`projects`?void 0:e.browseBy===`projects`?`/projects`:`/`};if(t.mode===`root`)return[{label:`Dashboard`}];if(t.mode===`projects`)return[n,{label:`Projects`}];if(t.mode===`project`)return[n,{label:`Projects`,to:`/projects`},{label:e.activeProject?.displayName??t.activeProjectKey}];if(t.mode===`session`&&e.browseBy===`projects`&&e.selectedProjectIdentity)return[n,{label:`Projects`,to:`/projects`},{label:e.selectedProject?.displayName??e.selectedProjectIdentity.key,to:fn(e.selectedProjectIdentity)},{label:e.session?B(e.session):t.activeSessionSlug||`Conversation`}];if(t.mode===`missingAgent`)return[n,{label:t.attemptedKey}];let r=e.activeAgent?.displayName??t.activeAgentKey??`Unknown Agent`,i={label:r,to:t.mode===`session`?`/${t.activeAgentKey}`:void 0};return t.mode===`agent`?[n,{label:r}]:t.mode===`missingSession`?[n,i,{label:t.attemptedSessionSlug}]:t.mode===`session`?[n,i,{label:e.session?B(e.session):t.activeSessionSlug||`Conversation`}]:[n,{label:`Invalid Route`}]}function Hr({bookmarked:e,onRename:t,onToggleBookmark:n}){let r=(0,F.useRef)(null);return(0,R.jsxs)(d,{modal:!1,children:[(0,R.jsx)(g,{ref:r,"aria-label":`Session options`,onClick:e=>e.stopPropagation(),className:`inline-flex size-6 shrink-0 items-center justify-center rounded-sm border border-transparent text-[var(--console-muted)] transition-[background-color,border-color,color,transform] hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)] hover:text-[var(--console-text)] active:scale-[0.97] focus-visible:ring-2 focus-visible:ring-[var(--console-accent)] focus-visible:ring-offset-2 focus-visible:outline-none`,children:(0,R.jsx)(ae,{className:`size-3.5`,"aria-hidden":`true`})}),(0,R.jsx)(h,{children:(0,R.jsx)(a,{side:`bottom`,align:`end`,sideOffset:4,className:`z-30`,children:(0,R.jsxs)(_,{finalFocus:r,className:`w-36 rounded-sm border border-[var(--console-border-strong)] bg-white p-1 shadow-lg focus-visible:outline-none`,children:[(0,R.jsxs)(o,{onClick:t,className:`flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-xs text-[var(--console-text)] hover:bg-[var(--console-surface-muted)] active:scale-[0.97] data-[highlighted]:bg-[var(--console-surface-muted)] focus-visible:outline-none`,children:[(0,R.jsx)(me,{className:`size-3`,"aria-hidden":`true`}),`Rename`]}),(0,R.jsxs)(o,{onClick:n,className:`flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-xs text-[var(--console-text)] hover:bg-[var(--console-surface-muted)] active:scale-[0.97] data-[highlighted]:bg-[var(--console-surface-muted)] focus-visible:outline-none`,children:[(0,R.jsx)(ke,{className:`size-3`,fill:e?`currentColor`:`none`,"aria-hidden":`true`}),e?`Remove bookmark`:`Add bookmark`]})]})})})]})}var Ur=`
|
|
2
|
+
[data-type='item'][data-item-type='file'] > [data-item-section='icon'] {
|
|
3
|
+
display: none;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
[data-type='item'][data-item-type='file'] > [data-item-section='spacing'] {
|
|
7
|
+
padding-left: 2px;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
[data-type='item'][data-item-type='file'] > [data-item-section='spacing'] > [data-item-section='spacing-item'] {
|
|
11
|
+
margin-right: 4px;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
[data-type='item'][data-item-type='file'] > [data-item-section='content'] {
|
|
15
|
+
flex: 1 1 auto;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
[data-type='item'][data-item-type='file'] > [data-item-section='decoration'] {
|
|
19
|
+
flex: 0 0 auto;
|
|
20
|
+
padding-inline: 6px 2px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
[data-type='item'][data-item-type='file'] > [data-item-section='decoration'] > span {
|
|
24
|
+
cursor: pointer;
|
|
25
|
+
font-size: 18px;
|
|
26
|
+
line-height: 1;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
[data-type='item'][data-item-type='file'] [data-truncate-group-container='middle'] {
|
|
30
|
+
width: 100%;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
[data-type='item'][data-item-type='file']
|
|
34
|
+
[data-truncate-group-container='middle']
|
|
35
|
+
> div[data-truncate-segment-priority='2'] {
|
|
36
|
+
flex: 0 1 auto;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
[data-type='item'][data-item-type='file']
|
|
40
|
+
[data-truncate-group-container='middle']
|
|
41
|
+
> div[data-truncate-segment-priority='1'] {
|
|
42
|
+
flex: 1 999999 auto;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
[data-type='item'][data-item-type='file']
|
|
46
|
+
[data-truncate-group-container='middle']
|
|
47
|
+
[data-truncate-container='fruncate']
|
|
48
|
+
[data-truncate-grid] {
|
|
49
|
+
grid-template-columns: minmax(0, max-content) 0;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
[data-type='item'][data-item-type='file']
|
|
53
|
+
[data-truncate-group-container='middle']
|
|
54
|
+
[data-truncate-container='fruncate']
|
|
55
|
+
[data-truncate-content] {
|
|
56
|
+
direction: ltr;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
[data-type='item'][data-item-type='file']
|
|
60
|
+
[data-truncate-group-container='middle']
|
|
61
|
+
[data-truncate-container='fruncate']
|
|
62
|
+
[data-truncate-marker] {
|
|
63
|
+
right: 0;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
[data-type='item'][data-item-type='file'] [data-truncate-marker] {
|
|
67
|
+
display: none;
|
|
68
|
+
}
|
|
69
|
+
`;function Wr(e){return e.replaceAll(`/`,`∕`).trim()||`(untitled)`}function Gr(e){return e.replace(/\/+$/,``).split(`/`).at(-1)?.trim()||`(unknown)`}function Kr(e){let t=e.project_identity;if(t)return{key:`${t.kind}:${t.key}`,label:t.displayName||Gr(e.directory)};let n=Gr(e.directory);return{key:n===`(unknown)`?`__unknown__`:`path:${e.directory||n}`,label:n}}function qr(e){return e.time_updated??e.time_created}function Jr(e,t,n){let r=e.get(t.path)??2**53-1,i=e.get(n.path)??2**53-1;return r===i?t.path.localeCompare(n.path):r-i}function Yr(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=new Map,o=new Map,s=new Set,c=[],l=new Map;for(let t of e){let{key:e,label:n}=Kr(t),r=l.get(e);r?r.sessions.push(t):l.set(e,{label:n,sessions:[t]})}let u=[...l.entries()].sort(([,e],[,t])=>{if(e.label===`(unknown)`)return 1;if(t.label===`(unknown)`)return-1;let n=Math.max(...e.sessions.map(qr));return Math.max(...t.sessions.map(qr))-n}),d=0,f=new Set;for(let[,e]of u){let l=Wr(e.label),u=`${l}/`,p=2;for(;f.has(u);)u=`${l} (${p})/`,p+=1;f.add(u);let m=u.slice(0,-1),h=new Map;t.set(u,d),t.set(m,d),d+=1,a.set(u,`${e.sessions.length}`),a.set(m,`${e.sessions.length}`);for(let t of e.sessions){let e=B(t);h.set(e,(h.get(e)??0)+1)}for(let a of e.sessions){let e=B(a),l=(h.get(e)??0)>1?`${Wr(e)} #${a.id.slice(0,8)}`:Wr(e),f=`${u}${l}`,p=2;for(;s.has(f);)f=`${u}${l} (${p})`,p+=1;s.add(f),c.push(f),t.set(f,d),d+=1,n.set(a.id,f),r.set(a.id,u),i.set(f,a.id),o.set(f,a)}}return{paths:c,sortOrderByPath:t,pathBySessionId:n,groupPathBySessionId:r,sessionIdByPath:i,groupCountByPath:a,sessionByPath:o}}function Xr(e,t){if(!$t())return t();let n=performance.now(),r=t(),i=performance.now();return nn({id:e,source:`custom-timing`,phase:`measure`,actualDuration:Math.round((i-n)*100)/100,baseDuration:0,startTime:n,commitTime:i}),r}var Zr=(0,F.memo)(function({sessions:e,activeSessionId:t,selectedSessionId:n,onSelectSession:r,bookmarkedSessionIds:i,onToggleBookmark:a,onRenameSession:o}){let[s,c]=(0,F.useState)(null),l=(0,F.useMemo)(()=>Xr(`SessionTreeSidebar:buildTreeModel`,()=>Yr(e)),[e]),u=(0,F.useRef)(l.sortOrderByPath),d=(0,F.useRef)(l.sessionIdByPath),f=(0,F.useRef)(l.groupCountByPath),p=(0,F.useRef)(l.sessionByPath),h=(0,F.useRef)(i),g=(0,F.useRef)(null),_=(0,F.useRef)(r),y=(0,F.useRef)(a),b=(0,F.useRef)(o),x={"--trees-bg-override":`transparent`,"--trees-border-color-override":`var(--console-border)`,"--trees-fg-override":`var(--console-text)`,"--trees-fg-muted-override":`var(--console-muted)`,"--trees-font-family-override":`"JetBrains Mono", "IBM Plex Mono", "SFMono-Regular", Menlo, Monaco, Consolas, monospace`,"--trees-font-size-override":`12px`,"--trees-item-margin-x-override":`0px`,"--trees-item-padding-x-override":`4px`,"--trees-padding-inline-override":`4px`,"--trees-selected-bg-override":`var(--console-surface-muted)`},{model:S}=v({flattenEmptyDirectories:!1,initialExpansion:`closed`,paths:l.paths,sort:(e,t)=>Jr(u.current,e,t),density:`compact`,unsafeCSS:Ur,onSelectionChange(e){let t=d.current.get(e[0]??``);t&&_.current(t)},renderRowDecoration({item:e}){return p.current.get(e.path)?{text:`⋯`,title:`Session options`}:f.current.get(e.path)?{text:f.current.get(e.path),title:`Sessions`}:null}});(0,F.useEffect)(()=>{u.current=l.sortOrderByPath,d.current=l.sessionIdByPath,f.current=l.groupCountByPath,p.current=l.sessionByPath,S.resetPaths(l.paths)},[S,l]),(0,F.useEffect)(()=>{_.current=r},[r]),(0,F.useEffect)(()=>{h.current=i},[i]),(0,F.useEffect)(()=>{if(!s)return;let e=e=>{g.current?.contains(e.target)||c(null)},t=e=>{e.key===`Escape`&&(s.trigger.focus(),c(null))},n=e=>{g.current?.contains(e.target)||c(null)};return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),document.addEventListener(`focusin`,n),g.current?.querySelector(`[role='menuitem']`)?.focus(),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t),document.removeEventListener(`focusin`,n)}},[s]),(0,F.useEffect)(()=>{y.current=a},[a]),(0,F.useEffect)(()=>{b.current=o},[o]);function C(e){let t=e.nativeEvent.composedPath(),n=t.find(e=>e instanceof HTMLElement&&e.parentElement?.getAttribute(`data-item-section`)===`decoration`),r=t.find(e=>e instanceof HTMLElement&&e.getAttribute(`data-type`)===`item`),i=r?p.current.get(r.getAttribute(`data-item-path`)??``):null;if(!n||!r||!i)return;e.preventDefault(),e.stopPropagation();let a=n.getBoundingClientRect();c({session:i,top:a.bottom+4,right:window.innerWidth-a.right,trigger:r})}function w(e){if(e.key!==`ContextMenu`&&!(e.shiftKey&&e.key===`F10`))return;let t=e.nativeEvent.composedPath().find(e=>e instanceof HTMLElement&&e.getAttribute(`data-type`)===`item`),n=t?p.current.get(t.getAttribute(`data-item-path`)??``):null;if(!t||!n)return;e.preventDefault(),e.stopPropagation();let r=(t.querySelector(`[data-item-section='decoration'] > span`)??t).getBoundingClientRect();c({session:n,top:r.bottom+4,right:window.innerWidth-r.right,trigger:t})}return(0,F.useEffect)(()=>{let e=l.pathBySessionId.get(t??``),r=l.pathBySessionId.get(n??``)??e,i=n??t??``,a=l.groupPathBySessionId.get(i);if(e&&S.getItem(e)?.select(),r&&t){let e=a?S.getItem(a):null;e&&`expand`in e&&e.expand(),S.focusPath(r);return}a&&S.focusPath(a)},[t,S,l,n]),(0,R.jsxs)(`div`,{className:`session-tree h-[min(560px,calc(100vh-410px))] min-h-56 overflow-hidden`,style:x,onClickCapture:C,onKeyDownCapture:w,children:[(0,R.jsx)(m,{model:S,style:{height:`100%`},"aria-label":`Sessions`}),s?(0,R.jsxs)(`div`,{ref:g,role:`menu`,style:{position:`fixed`,top:s.top,right:s.right},className:`z-40 w-36 rounded-sm border border-[var(--console-border-strong)] bg-white p-1 shadow-lg`,onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||c(null)},children:[(0,R.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:()=>{b.current(s.session),c(null)},className:`block w-full rounded-sm px-2 py-1.5 text-left text-xs text-[var(--console-text)] hover:bg-[var(--console-surface-muted)] active:scale-[0.97] focus-visible:bg-[var(--console-surface-muted)] focus-visible:outline-none`,children:`Rename`}),(0,R.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:()=>{y.current(s.session),c(null)},className:`block w-full rounded-sm px-2 py-1.5 text-left text-xs text-[var(--console-text)] hover:bg-[var(--console-surface-muted)] active:scale-[0.97] focus-visible:bg-[var(--console-surface-muted)] focus-visible:outline-none`,children:h.current.has(s.session.id)?`Remove bookmark`:`Add bookmark`})]}):null]})});function Qr({value:e,onChange:t,projectsDisabled:n=!1}){return(0,R.jsx)(`div`,{role:`radiogroup`,"aria-label":`Browse by`,className:`grid gap-1.5`,children:[{value:`projects`,label:`Projects`},{value:`agents`,label:`Agents`}].map(r=>{let i=e===r.value,a=r.value===`projects`&&n;return(0,R.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":i,disabled:a,onClick:()=>t(r.value),className:`console-mono flex items-center gap-2 rounded-sm border px-3 py-1.5 text-left text-xs transition-colors ${a?`cursor-not-allowed border-transparent text-[var(--console-muted)] opacity-45`:i?`border-[var(--console-border-strong)] bg-white text-[var(--console-text)]`:`border-transparent text-[var(--console-muted)] hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)]`}`,title:a?`Project grouping is available after the current scan finishes`:void 0,children:[(0,R.jsx)(`span`,{className:`flex size-3 shrink-0 items-center justify-center rounded-full border ${i?`border-[var(--console-accent)]`:`border-[var(--console-border-strong)]`}`,children:i?(0,R.jsx)(`span`,{className:`size-1.5 rounded-full bg-[var(--console-accent)]`}):null}),(0,R.jsx)(`span`,{children:r.label})]},r.value)})})}function $r({sessions:e,agentCatalog:t,activeSessionId:n,selectedSessionId:r,bookmarkedSessionIds:i,onSelectSession:a,onToggleBookmark:o,onRenameSession:s}){return(0,R.jsx)(`div`,{className:`console-scrollbar h-[min(560px,calc(100vh-410px))] min-h-56 overflow-y-auto`,children:(0,R.jsx)(`ul`,{className:`space-y-1`,children:e.map(e=>{let c=cr(t,An(e)),l=n===e.id,u=r===e.id;return(0,R.jsx)(`li`,{children:(0,R.jsxs)(`div`,{className:`flex items-start gap-1 rounded-sm border px-2 py-1.5 transition-colors ${l||u?`border-[var(--console-border-strong)] bg-white text-[var(--console-text)]`:`border-transparent text-[var(--console-muted)] hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)]`}`,children:[(0,R.jsxs)(`button`,{type:`button`,onClick:()=>a(e),className:`min-w-0 flex-1 text-left`,children:[(0,R.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,children:[c?.icon?(0,R.jsx)(`img`,{src:c.icon,alt:c.displayName,className:`size-3.5 shrink-0 object-contain`}):null,(0,R.jsx)(`span`,{className:`console-mono line-clamp-1 text-xs text-[var(--console-text)]`,children:B(e)})]}),(0,R.jsx)(`span`,{className:`console-mono mt-0.5 block truncate text-[10px] text-[var(--console-muted)]`,children:Nr(e.time_updated??e.time_created)})]}),(0,R.jsx)(Hr,{bookmarked:i.has(e.id),onRename:()=>s(e),onToggleBookmark:()=>o(e)})]})},e.slug)})})})}function ei({agents:e,activeAgentKey:t,scanStatus:n,isScanActive:r}){return(0,R.jsx)(R.Fragment,{children:e.map(e=>{let i=e.name.toLowerCase(),a=i===t,o=Kt(n,e.name),s=r&&o!==null,c=`ml-4 flex items-center gap-2 rounded-sm border px-3 py-1.5 text-left transition-colors ${s?`cursor-not-allowed border-transparent text-[var(--console-muted)] opacity-50`:a?`border-[var(--console-border-strong)] bg-white text-[var(--console-text)]`:`border-transparent text-[var(--console-muted)] hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)]`}`,l=(0,R.jsxs)(R.Fragment,{children:[e.icon&&(0,R.jsx)(`img`,{src:e.icon,alt:e.displayName,className:`size-3.5 object-contain`}),(0,R.jsx)(`span`,{className:`console-mono line-clamp-1 flex-1 text-xs`,children:e.displayName}),(0,R.jsx)(`span`,{className:`console-mono text-[11px] text-[var(--console-muted)]`,children:o??e.count})]});return(0,R.jsxs)(`li`,{children:[s?(0,R.jsx)(`span`,{className:c,title:`Available after this agent scan completes`,children:l}):(0,R.jsx)(M,{to:`/${i}`,className:c,children:l}),o?(0,R.jsx)(`span`,{className:`ml-4 mt-1 block h-1 overflow-hidden rounded-sm bg-[var(--console-surface-muted)]`,children:(0,R.jsx)(`span`,{className:`block h-full bg-[var(--console-accent)]`,style:{width:`${n?.agentStatuses[e.name]?.total?Math.round((n.agentStatuses[e.name]?.processed??0)/n.agentStatuses[e.name].total*100):8}%`}})}):null]},e.name)})})}function ti({projects:e,selectedProjectNavigationId:t,onSelectProject:n}){return(0,R.jsx)(R.Fragment,{children:e.map(e=>{let r=sn(e),i=t===un(r);return(0,R.jsx)(`li`,{children:(0,R.jsxs)(M,{to:fn(r),onClick:()=>n(r),className:`ml-4 flex min-w-0 items-center gap-2 rounded-sm border px-3 py-1.5 text-left transition-colors ${i?`border-[var(--console-border-strong)] bg-white text-[var(--console-text)]`:`border-transparent text-[var(--console-muted)] hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)]`}`,children:[(0,R.jsx)(`span`,{className:`console-mono min-w-0 flex-1 truncate text-xs`,children:e.displayName}),(0,R.jsx)(`span`,{className:`console-mono shrink-0 text-[11px] text-[var(--console-muted)]`,children:e.sessionCount})]})},`${e.identityKind}:${e.identityKey}`)})})}function ni({model:{sidebarCollapsed:e,browseBy:t,isScanActive:n,viewState:r,agents:i,agentCatalog:a,activeAgentKey:o,scanStatus:s,projects:c,selectedProjectNavigationId:l,loading:u,bookmarkedSessions:d,sidebarSessions:f,selectedSidebarSessionId:p,bookmarkedSidebarSessionIds:m},actions:{onChangeBrowseBy:h,onSelectProject:g,onToggleBookmark:_,onSelectFlatSidebarSession:v,onToggleSidebarSessionBookmark:y,onRenameSession:b,onRenameBookmarkedSession:x,onSelectTreeSidebarSession:S}}){return(0,R.jsx)(`aside`,{className:`w-64 shrink-0 flex-col border-r border-[var(--console-border)] bg-[var(--console-sidebar-bg)] ${e?`hidden`:`hidden lg:flex`}`,children:(0,R.jsxs)(`div`,{className:`console-scrollbar flex-1 space-y-8 overflow-y-auto px-4 py-6`,children:[(0,R.jsxs)(`section`,{children:[(0,R.jsx)(`h3`,{className:`console-mono mb-3 text-xs font-bold uppercase text-[var(--console-text)]`,children:`BROWSE BY`}),(0,R.jsx)(Qr,{value:t,onChange:h,projectsDisabled:n})]}),(0,R.jsxs)(`section`,{children:[(0,R.jsx)(`h3`,{className:`console-mono mb-3 text-xs font-bold uppercase text-[var(--console-text)]`,children:`NAVIGATION`}),(0,R.jsxs)(`ul`,{className:`space-y-1 ${t===`projects`?`console-scrollbar max-h-[min(280px,calc(100vh-440px))] overflow-y-auto pr-1`:``}`,children:[(0,R.jsx)(`li`,{children:(0,R.jsxs)(M,{to:t===`projects`?`/projects`:`/`,className:`flex items-center gap-2 rounded-sm border px-3 py-1.5 text-left transition-colors ${t===`agents`&&r.mode===`root`||t===`projects`&&r.mode===`projects`?`border-[var(--console-border-strong)] bg-white text-[var(--console-text)]`:`border-transparent text-[var(--console-muted)] hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)]`}`,children:[(0,R.jsx)(`img`,{src:`/logo.svg?v=3`,alt:`Dashboard`,className:`size-3.5 rounded-[2px]`}),(0,R.jsx)(`span`,{className:`console-mono line-clamp-1 flex-1 text-xs`,children:`Dashboard`})]})}),t===`agents`?(0,R.jsx)(ei,{agents:i,activeAgentKey:o,scanStatus:s,isScanActive:n}):(0,R.jsx)(ti,{projects:c,selectedProjectNavigationId:l,onSelectProject:g}),t===`agents`&&i.length===0&&!u?(0,R.jsx)(`li`,{children:(0,R.jsx)(`span`,{className:`console-mono block rounded-sm px-3 py-1.5 text-xs text-[var(--console-muted)]`,children:s?.active?`Scanning agents...`:`No agents found`})}):null,t===`projects`&&c.length===0&&!u?(0,R.jsx)(`li`,{children:(0,R.jsx)(`span`,{className:`console-mono block rounded-sm px-3 py-1.5 text-xs text-[var(--console-muted)]`,children:s?.active?`Scanning projects...`:`No projects found`})}):null]})]}),(0,R.jsxs)(`section`,{children:[(0,R.jsx)(`h3`,{className:`console-mono mb-3 text-xs font-bold uppercase text-[var(--console-text)]`,children:`BOOKMARKS`}),d.length===0?(0,R.jsx)(`span`,{className:`console-mono block rounded-sm px-3 py-1.5 text-xs text-[var(--console-muted)]`,children:`No bookmarks yet`}):(0,R.jsx)(`ul`,{className:`space-y-1`,children:d.map(e=>{let t=r.mode===`session`&&r.activeAgentKey===e.agentKey&&r.activeSessionSlug===e.sessionId,n=cr(a,e.agentKey);return(0,R.jsx)(`li`,{children:(0,R.jsxs)(`div`,{className:`flex items-start gap-2 rounded-sm border px-2 py-1.5 transition-colors ${t?`border-[var(--console-border-strong)] bg-white text-[var(--console-text)]`:`border-transparent text-[var(--console-muted)] hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)]`}`,children:[(0,R.jsxs)(M,{to:`/${e.fullPath}`,className:`flex min-w-0 flex-1 items-start gap-2`,children:[n?.icon?(0,R.jsx)(`img`,{src:n.icon,alt:n.displayName,className:`mt-0.5 size-3.5 shrink-0 object-contain`}):null,(0,R.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,R.jsx)(`span`,{className:`console-mono line-clamp-1 block text-xs`,children:B(e)}),(0,R.jsx)(`span`,{className:`console-mono mt-0.5 line-clamp-1 block text-[10px] text-[var(--console-muted)]`,children:n?.displayName??e.agentKey})]})]}),(0,R.jsx)(Hr,{bookmarked:!0,onRename:()=>x(e),onToggleBookmark:()=>_(e)})]})},Yn(e.agentKey,e.sessionId))})})]}),(0,R.jsxs)(`section`,{children:[(0,R.jsxs)(`h3`,{className:`console-mono mb-3 text-xs font-bold uppercase text-[var(--console-text)]`,children:[`SESSIONS`,f.length>0?(0,R.jsx)(`span`,{className:`ml-2 text-[10px] font-normal text-[var(--console-muted)]`,children:`Navigate j k · Open Enter`}):null]}),t===`agents`&&!o?(0,R.jsx)(`span`,{className:`console-mono block rounded-sm px-3 py-1.5 text-xs text-[var(--console-muted)]`,children:`Select an agent`}):t===`projects`&&!l?(0,R.jsx)(`span`,{className:`console-mono block rounded-sm px-3 py-1.5 text-xs text-[var(--console-muted)]`,children:`Select a project`}):f.length===0?(0,R.jsx)(`span`,{className:`console-mono block rounded-sm px-3 py-1.5 text-xs text-[var(--console-muted)]`,children:s?.active?`Scanning sessions...`:`No sessions yet`}):t===`projects`?(0,R.jsx)($r,{sessions:f,agentCatalog:a,activeSessionId:r.mode===`session`?r.activeSessionSlug:null,selectedSessionId:p,bookmarkedSessionIds:m,onSelectSession:v,onToggleBookmark:y,onRenameSession:b}):(0,R.jsx)(an,{id:`SessionTreeSidebar`,detail:{sessions:f.length},children:(0,R.jsx)(Zr,{sessions:f,activeSessionId:r.mode===`session`?r.activeSessionSlug:null,selectedSessionId:p,onSelectSession:S,bookmarkedSessionIds:m,onToggleBookmark:y,onRenameSession:b})})]})]})})}var ri=[{title:`Navigation`,items:[{keys:`j / k`,description:`Move through sessions or search results`},{keys:`Enter`,description:`Open the current selection`},{keys:`g / G`,description:`Jump to the first or last item`}]},{title:`Search & Help`,items:[{keys:`Cmd/Ctrl K`,description:`Open global search`},{keys:`/`,description:`Focus the search box`},{keys:`Esc`,description:`Exit search or close the current detail view`},{keys:`?`,description:`Open this shortcuts panel`}]}];function ii({open:e,onClose:t}){return(0,R.jsx)(y,{open:e,onOpenChange:e=>e?void 0:t(),children:(0,R.jsxs)(s,{children:[(0,R.jsx)(u,{className:`shortcut-overlay fixed inset-0 z-50 bg-black/35`}),(0,R.jsxs)(c,{className:`shortcut-content fixed left-1/2 top-1/2 z-50 w-[calc(100%-2rem)] max-w-2xl origin-center -translate-x-1/2 -translate-y-1/2 rounded-sm border border-[var(--console-border-strong)] bg-white p-5 shadow-2xl outline-none`,children:[(0,R.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`p`,{className:`console-mono text-[11px] uppercase tracking-[0.16em] text-[var(--console-muted)]`,children:`Keyboard Shortcuts`}),(0,R.jsx)(f,{className:`console-mono mt-2 text-xl font-semibold text-[var(--console-text)]`,children:`Navigate without leaving the keyboard`})]}),(0,R.jsx)(p,{className:`console-mono rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-2 py-1 text-xs text-[var(--console-text)] transition-colors hover:bg-white`,children:`Esc`})]}),(0,R.jsx)(`div`,{className:`mt-5 grid gap-4 md:grid-cols-2`,children:ri.map(e=>(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] p-4`,children:[(0,R.jsx)(`h3`,{className:`console-mono text-xs font-bold uppercase text-[var(--console-text)]`,children:e.title}),(0,R.jsx)(`div`,{className:`mt-3 space-y-3`,children:e.items.map(e=>(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`p`,{className:`console-mono text-xs text-[var(--console-text)]`,children:e.keys}),(0,R.jsx)(`p`,{className:`mt-1 text-sm leading-6 text-[var(--console-muted)]`,children:e.description})]},e.keys))})]},e.title))})]})]})})}function ai({active:e,onToggle:t,className:n=``}){return(0,R.jsx)(`button`,{type:`button`,onClick:e=>{e.preventDefault(),e.stopPropagation(),t()},"aria-label":e?`Remove bookmark`:`Add bookmark`,title:e?`Remove bookmark`:`Add bookmark`,className:`inline-flex size-6 shrink-0 items-center justify-center rounded-sm border transition-colors ${n} ${e?`border-[var(--console-border)] bg-[var(--console-surface-muted)] text-[var(--console-text)]`:`border-transparent text-[var(--console-muted)] opacity-70 hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)] hover:text-[var(--console-text)] hover:opacity-100`}`,children:(0,R.jsx)(ke,{className:`size-3`,strokeWidth:1.8,fill:e?`currentColor`:`none`})})}function oi(...e){return De(Me(e))}var si={light:``,dark:`.dark`},ci={width:320,height:200},li=F.createContext(null);function ui(){let e=F.useContext(li);if(!e)throw Error(`useChart must be used within a <ChartContainer />`);return e}function di({id:e,className:t,children:n,config:r,initialDimension:i=ci,...a}){let o=F.useId(),s=`chart-${e??o.replace(/:/g,``)}`;return(0,R.jsx)(li.Provider,{value:{config:r},children:(0,R.jsxs)(`div`,{"data-slot":`chart`,"data-chart":s,className:oi(`flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden`,t),...a,children:[(0,R.jsx)(fi,{id:s,config:r}),(0,R.jsx)(Oe,{initialDimension:i,children:n})]})})}var fi=({id:e,config:t})=>{let n=Object.entries(t).filter(([,e])=>e.theme??e.color);return n.length?(0,R.jsx)(`style`,{dangerouslySetInnerHTML:{__html:Object.entries(si).map(([t,r])=>`
|
|
70
|
+
${r} [data-chart=${e}] {
|
|
71
|
+
${n.map(([e,n])=>{let r=n.theme?.[t]??n.color;return r?` --color-${e}: ${r};`:null}).join(`
|
|
72
|
+
`)}
|
|
73
|
+
}
|
|
74
|
+
`).join(`
|
|
75
|
+
`)}}):null},pi=he;function mi({active:e,payload:t,className:n,indicator:r=`dot`,hideLabel:i=!1,hideIndicator:a=!1,label:o,labelFormatter:s,labelClassName:c,formatter:l,color:u,nameKey:d,labelKey:f}){let{config:p}=ui(),m=F.useMemo(()=>{if(i||!t?.length)return null;let[e]=t,n=`${f??e?.dataKey??e?.name??`value`}`,r=hi(p,e,n),a=!f&&typeof o==`string`?p[o]?.label??o:r?.label;return s?(0,R.jsx)(`div`,{className:oi(`font-medium`,c),children:s(a,t)}):a?(0,R.jsx)(`div`,{className:oi(`font-medium`,c),children:a}):null},[o,s,t,i,c,p,f]);if(!e||!t?.length)return null;let h=t.length===1&&r!==`dot`;return(0,R.jsxs)(`div`,{className:oi(`grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl`,n),children:[h?null:m,(0,R.jsx)(`div`,{className:`grid gap-1.5`,children:t.filter(e=>e.type!==`none`).map((e,t)=>{let n=`${d??e.name??e.dataKey??`value`}`,i=hi(p,e,n),o=u??e.payload?.fill??e.color;return(0,R.jsx)(`div`,{className:oi(`flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground`,r===`dot`&&`items-center`),children:l&&e?.value!==void 0&&e.name?l(e.value,e.name,e,t,e.payload):(0,R.jsxs)(R.Fragment,{children:[i?.icon?(0,R.jsx)(i.icon,{}):!a&&(0,R.jsx)(`div`,{className:oi(`shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)`,{"h-2.5 w-2.5":r===`dot`,"w-1":r===`line`,"w-0 border-[1.5px] border-dashed bg-transparent":r===`dashed`,"my-0.5":h&&r===`dashed`}),style:{"--color-bg":o,"--color-border":o}}),(0,R.jsxs)(`div`,{className:oi(`flex flex-1 justify-between leading-none`,h?`items-end`:`items-center`),children:[(0,R.jsxs)(`div`,{className:`grid gap-1.5`,children:[h?m:null,(0,R.jsx)(`span`,{className:`text-muted-foreground`,children:i?.label??e.name})]}),e.value!=null&&(0,R.jsx)(`span`,{className:`font-mono font-medium text-foreground tabular-nums`,children:typeof e.value==`number`?e.value.toLocaleString():String(e.value)})]})]})},t)})})]})}function hi(e,t,n){if(typeof t!=`object`||!t)return;let r=`payload`in t&&typeof t.payload==`object`&&t.payload!==null?t.payload:void 0,i=n;return n in t&&typeof t[n]==`string`?i=t[n]:r&&n in r&&typeof r[n]==`string`&&(i=r[n]),i in e?e[i]:e[n]}function gi(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:z(e)}function _i({label:e,value:t,hint:n}){return(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:[(0,R.jsx)(`p`,{className:`console-mono text-[11px] uppercase tracking-wider text-[var(--console-muted)]`,children:e}),(0,R.jsx)(`p`,{className:`console-mono mt-2 text-xl font-semibold text-[var(--console-text)]`,children:t}),n?(0,R.jsx)(`p`,{className:`mt-1 text-xs text-[var(--console-muted)]`,children:n}):null]})}function vi(e){return e.length>=10?e.slice(5):e}function yi({buckets:e}){let[t,n]=(0,F.useState)(null),r=(0,F.useMemo)(()=>Math.max(1,...e.map(e=>e.sessions)),[e]),i=(0,F.useMemo)(()=>e.reduce((e,t)=>e+t.sessions,0),[e]),a=(0,F.useMemo)(()=>{if(e.length===0)return new Set;let t=Math.min(6,e.length);if(t===1)return new Set([0]);let n=new Set;for(let r=0;r<t;r+=1)n.add(Math.round(r*(e.length-1)/(t-1)));return n},[e.length]);return(0,R.jsxs)(`section`,{"aria-labelledby":`daily-activity-title`,className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:[(0,R.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h3`,{id:`daily-activity-title`,className:`console-mono text-xs font-bold uppercase text-[var(--console-text)]`,children:`Daily Activity`}),(0,R.jsxs)(`p`,{className:`console-mono mt-1 text-[11px] text-[var(--console-muted)]`,children:[`Session activity · last `,e.length,` days`]})]}),(0,R.jsx)(`span`,{className:`console-mono text-right text-[11px] text-[var(--console-muted)]`,children:t?`${t.date} · ${z(t.sessions)} sessions · ${z(t.messages)} msgs`:`${z(i)} in range`})]}),(0,R.jsx)(`div`,{className:`flex h-32 items-end gap-[2px]`,onPointerLeave:()=>n(null),children:e.map(e=>{let i=e.sessions>0?Math.max(Math.round(e.sessions/r*128),4):2,a=`${e.date} · ${e.sessions} sessions · ${e.messages} msgs`,o=t?.date===e.date;return(0,R.jsx)(`button`,{type:`button`,"aria-label":a,onPointerEnter:()=>n(e),onClick:()=>n(e),onFocus:()=>n(e),onBlur:()=>n(null),className:`flex-1 cursor-default rounded-t-[1px] border-0 p-0 transition-opacity focus-visible:ring-2 focus-visible:ring-[var(--console-text)] focus-visible:ring-offset-2 focus-visible:outline-none ${e.sessions>0?`bg-[var(--console-accent)]`:`bg-[var(--console-surface-muted)]`} ${o?`opacity-70`:`opacity-100`}`,style:{height:`${i}px`}},e.date)})}),(0,R.jsx)(`div`,{className:`console-mono mt-2 flex text-[10px] text-[var(--console-muted)]`,children:e.map((e,t)=>(0,R.jsx)(`span`,{className:`flex-1 text-center`,children:a.has(t)?vi(e.date):``},e.date))}),(0,R.jsxs)(`table`,{className:`sr-only`,children:[(0,R.jsx)(`caption`,{children:`Daily Activity data`}),(0,R.jsx)(`thead`,{children:(0,R.jsxs)(`tr`,{children:[(0,R.jsx)(`th`,{scope:`col`,children:`Date`}),(0,R.jsx)(`th`,{scope:`col`,children:`Sessions`}),(0,R.jsx)(`th`,{scope:`col`,children:`Messages`})]})}),(0,R.jsx)(`tbody`,{children:e.map(e=>(0,R.jsxs)(`tr`,{children:[(0,R.jsx)(`th`,{scope:`row`,children:e.date}),(0,R.jsx)(`td`,{children:e.sessions}),(0,R.jsx)(`td`,{children:e.messages})]},e.date))})]})]})}var bi={input:`#4A9EFF`,output:`#7C5CFF`,cache_read:`#3FB68B`,cache_create:`#E8A23B`},xi={input:`Input`,output:`Output`,cache_read:`Cache Read`,cache_create:`Cache Create`};function Si({buckets:e}){let[t,n]=(0,F.useState)(null),r=(0,F.useMemo)(()=>Math.max(1,...e.map(e=>e.input+e.output+e.cache_read+e.cache_create)),[e]),i=(0,F.useMemo)(()=>e.reduce((e,t)=>e+t.input+t.output+t.cache_read+t.cache_create,0),[e]),a=(0,F.useMemo)(()=>{if(e.length===0)return new Set;let t=Math.min(6,e.length);if(t===1)return new Set([0]);let n=new Set;for(let r=0;r<t;r+=1)n.add(Math.round(r*(e.length-1)/(t-1)));return n},[e.length]);return i===0?null:(0,R.jsxs)(`section`,{"aria-labelledby":`daily-token-activity-title`,className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:[(0,R.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h3`,{id:`daily-token-activity-title`,className:`console-mono text-xs font-bold uppercase text-[var(--console-text)]`,children:`Daily Token Activity`}),(0,R.jsxs)(`p`,{className:`console-mono mt-1 text-[11px] text-[var(--console-muted)]`,children:[`Token breakdown · last `,e.length,` days`]})]}),(0,R.jsx)(`span`,{className:`console-mono text-right text-[11px] text-[var(--console-muted)]`,children:t?`${t.date} · ${gi(t.input+t.output+t.cache_read+t.cache_create)} total`:`${gi(i)} in range`})]}),t?(0,R.jsx)(`div`,{className:`mb-2 flex gap-4`,children:[`input`,`output`,`cache_read`,`cache_create`].map(e=>(0,R.jsxs)(`span`,{className:`console-mono flex items-center gap-1.5 text-[10px] text-[var(--console-muted)]`,children:[(0,R.jsx)(`span`,{"aria-hidden":`true`,className:`inline-block size-2 rounded-full`,style:{backgroundColor:bi[e]}}),xi[e],`: `,gi(t[e])]},e))}):(0,R.jsx)(`div`,{className:`mb-2 flex gap-4`,children:[`input`,`output`,`cache_read`,`cache_create`].map(e=>(0,R.jsxs)(`span`,{className:`console-mono flex items-center gap-1.5 text-[10px] text-[var(--console-muted)]`,children:[(0,R.jsx)(`span`,{"aria-hidden":`true`,className:`inline-block size-2 rounded-full`,style:{backgroundColor:bi[e]}}),xi[e]]},e))}),(0,R.jsx)(`div`,{className:`flex h-32 items-end gap-[2px]`,onPointerLeave:()=>n(null),children:e.map(e=>{let i=e.input+e.output+e.cache_read+e.cache_create,a=i>0?Math.max(Math.round(i/r*128),4):2,o=t?.date===e.date,s=i>0?[{key:`input`,value:e.input},{key:`output`,value:e.output},{key:`cache_read`,value:e.cache_read},{key:`cache_create`,value:e.cache_create}]:[];return(0,R.jsx)(`button`,{type:`button`,"aria-label":`${e.date} · ${i} total tokens · ${e.input} input · ${e.output} output · ${e.cache_read} cache read · ${e.cache_create} cache create`,onPointerEnter:()=>n(e),onClick:()=>n(e),onFocus:()=>n(e),onBlur:()=>n(null),className:`flex flex-1 cursor-default flex-col justify-end overflow-hidden rounded-t-[1px] border-0 p-0 transition-opacity focus-visible:ring-2 focus-visible:ring-[var(--console-text)] focus-visible:ring-offset-2 focus-visible:outline-none ${o?`opacity-70`:`opacity-100`}`,style:{height:`${a}px`},children:i>0?s.map(e=>{let t=Math.max(Math.round(e.value/i*a),0);return t===0?null:(0,R.jsx)(`div`,{style:{height:`${t}px`,backgroundColor:bi[e.key]}},e.key)}):(0,R.jsx)(`div`,{className:`h-full bg-[var(--console-surface-muted)]`})},e.date)})}),(0,R.jsx)(`div`,{className:`console-mono mt-2 flex text-[10px] text-[var(--console-muted)]`,children:e.map((e,t)=>(0,R.jsx)(`span`,{className:`flex-1 text-center`,children:a.has(t)?vi(e.date):``},e.date))}),(0,R.jsxs)(`table`,{className:`sr-only`,children:[(0,R.jsx)(`caption`,{children:`Daily Token Activity data`}),(0,R.jsx)(`thead`,{children:(0,R.jsxs)(`tr`,{children:[(0,R.jsx)(`th`,{scope:`col`,children:`Date`}),(0,R.jsx)(`th`,{scope:`col`,children:`Input`}),(0,R.jsx)(`th`,{scope:`col`,children:`Output`}),(0,R.jsx)(`th`,{scope:`col`,children:`Cache Read`}),(0,R.jsx)(`th`,{scope:`col`,children:`Cache Create`})]})}),(0,R.jsx)(`tbody`,{children:e.map(e=>(0,R.jsxs)(`tr`,{children:[(0,R.jsx)(`th`,{scope:`row`,children:e.date}),(0,R.jsx)(`td`,{children:e.input}),(0,R.jsx)(`td`,{children:e.output}),(0,R.jsx)(`td`,{children:e.cache_read}),(0,R.jsx)(`td`,{children:e.cache_create})]},e.date))})]})]})}var Ci=[`#4A9EFF`,`#7C5CFF`,`#3FB68B`,`#E8A23B`,`#E5484D`,`#5BCEDA`,`#F472B6`,`#A78BFA`,`#FB923C`,`#6EE7B7`];function wi({entries:e}){let t=(0,F.useMemo)(()=>e.filter(e=>e.tokens>0),[e]),n=(0,F.useMemo)(()=>t.reduce((e,t)=>e+t.tokens,0),[t]);if(t.length===0||n===0)return(0,R.jsx)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4 text-sm text-[var(--console-muted)]`,children:`No model data yet`});let r=t.map((e,t)=>({...e,chartKey:`model${t}`,fraction:e.tokens/n,fill:Ci[t%Ci.length]})),i=r.reduce((e,t)=>(e[t.chartKey]={label:t.model,color:t.fill},e),{});return(0,R.jsxs)(`section`,{"aria-labelledby":`model-distribution-title`,className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:[(0,R.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-3`,children:[(0,R.jsx)(`h3`,{id:`model-distribution-title`,className:`console-mono text-xs font-bold uppercase text-[var(--console-text)]`,children:`Model Distribution`}),(0,R.jsxs)(`span`,{className:`console-mono text-[11px] text-[var(--console-muted)]`,children:[t.length,` models`]})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-6`,children:[(0,R.jsxs)(`div`,{className:`flex shrink-0 flex-col items-center`,children:[(0,R.jsx)(di,{config:i,className:`aspect-square size-[160px]`,"aria-hidden":`true`,children:(0,R.jsxs)(je,{children:[(0,R.jsx)(pi,{content:(0,R.jsx)(mi,{hideLabel:!0,nameKey:`chartKey`,formatter:e=>(0,R.jsxs)(`span`,{className:`font-mono font-medium text-foreground tabular-nums`,children:[z(Number(e)),` tokens`]})})}),(0,R.jsx)(Ce,{data:r,dataKey:`tokens`,nameKey:`chartKey`,outerRadius:70,paddingAngle:1,strokeWidth:0,isAnimationActive:!1})]})}),(0,R.jsxs)(`div`,{className:`console-mono -mt-1 text-center`,children:[(0,R.jsx)(`div`,{className:`text-xs font-semibold text-[var(--console-text)]`,children:gi(n)}),(0,R.jsx)(`div`,{className:`text-[10px] text-[var(--console-muted)]`,children:`tokens`})]})]}),(0,R.jsx)(`ul`,{className:`min-w-0 flex-1 space-y-1.5`,children:r.map(e=>(0,R.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(`span`,{"aria-hidden":`true`,className:`inline-block size-2.5 shrink-0 rounded-full`,style:{backgroundColor:e.fill}}),(0,R.jsx)(`span`,{className:`console-mono min-w-0 flex-1 truncate text-xs text-[var(--console-text)]`,children:e.model}),(0,R.jsxs)(`span`,{className:`console-mono shrink-0 text-[11px] text-[var(--console-muted)]`,children:[gi(e.tokens),` · `,(e.fraction*100).toFixed(1),`%`]})]},e.model))})]})]})}function Ti({perAgent:e}){let t=(0,F.useMemo)(()=>e.reduce((e,t)=>e+t.sessions,0),[e]);return t===0||e.length===0?(0,R.jsx)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4 text-sm text-[var(--console-muted)]`,children:`No agent data yet`}):(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:[(0,R.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-3`,children:[(0,R.jsx)(`h3`,{className:`console-mono text-xs font-bold uppercase text-[var(--console-text)]`,children:`Agent Distribution`}),(0,R.jsxs)(`span`,{className:`console-mono text-[11px] text-[var(--console-muted)]`,children:[e.length,` agents`]})]}),(0,R.jsx)(`ul`,{className:`space-y-2`,children:e.map(e=>{let n=t>0?e.sessions/t*100:0;return(0,R.jsx)(`li`,{children:(0,R.jsxs)(M,{to:`/${e.name.toLowerCase()}`,className:`block rounded-sm border border-transparent px-2 py-1.5 transition-colors hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)]`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e.icon?(0,R.jsx)(`img`,{src:e.icon,alt:e.displayName,className:`size-4 object-contain`}):null,(0,R.jsx)(`span`,{className:`console-mono flex-1 text-xs text-[var(--console-text)]`,children:e.displayName}),(0,R.jsxs)(`span`,{className:`console-mono text-[11px] text-[var(--console-muted)]`,children:[z(e.sessions),` · `,n.toFixed(1),`%`]})]}),(0,R.jsx)(`div`,{className:`mt-1.5 h-1.5 overflow-hidden rounded-sm bg-[var(--console-surface-muted)]`,children:(0,R.jsx)(`div`,{className:`h-full bg-[var(--console-accent)]`,style:{width:`${n}%`}})}),(0,R.jsxs)(`div`,{className:`console-mono mt-1 flex gap-3 text-[10px] text-[var(--console-muted)]`,children:[(0,R.jsxs)(`span`,{children:[z(e.messages),` msgs`]}),(0,R.jsxs)(`span`,{children:[gi(e.tokens),` tokens`]})]})]})},e.name)})})]})}function Ei({projects:e,agentCatalog:t}){return e.length===0?null:(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:[(0,R.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-3`,children:[(0,R.jsx)(`h3`,{className:`console-mono text-xs font-bold uppercase text-[var(--console-text)]`,children:`Projects`}),(0,R.jsx)(M,{to:`/projects`,className:`console-mono text-[11px] text-[var(--console-muted)] transition-colors hover:text-[var(--console-text)]`,children:`View all`})]}),(0,R.jsx)(`ul`,{className:`space-y-2`,children:e.slice(0,5).map(e=>{let n=e.agentStats.slice(0,3);return(0,R.jsx)(`li`,{children:(0,R.jsxs)(M,{to:fn({kind:e.identityKind,key:e.identityKey}),className:`block rounded-sm border border-transparent px-2 py-1.5 transition-colors hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)]`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`console-mono min-w-0 flex-1 truncate text-xs text-[var(--console-text)]`,children:e.displayName}),(0,R.jsxs)(`span`,{className:`console-mono shrink-0 text-[11px] text-[var(--console-muted)]`,children:[z(e.sessionCount),` · `,Pr(e.cost)]})]}),(0,R.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-1.5`,children:[n.map(e=>{let n=cr(t,e.name);return(0,R.jsxs)(`span`,{className:`console-mono inline-flex items-center gap-1 rounded-sm border border-[var(--console-border)] bg-white px-1.5 py-0.5 text-[10px] text-[var(--console-muted)]`,children:[n?.icon?(0,R.jsx)(`img`,{src:n.icon,alt:n.displayName,className:`size-3 object-contain`}):null,n?.displayName??e.name,` · `,e.sessions]},e.name)}),(0,R.jsxs)(`span`,{className:`console-mono min-w-0 truncate text-[10px] text-[var(--console-muted)]`,children:[gi(e.tokens),` tokens`]})]})]})},`${e.identityKind}:${e.identityKey}`)})})]})}function Di({sessions:e,agentCatalog:t,onToggleBookmark:n}){return e.length===0?null:(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:[(0,R.jsxs)(`div`,{className:`mb-3 flex items-center justify-between`,children:[(0,R.jsx)(`h3`,{className:`console-mono text-xs font-bold uppercase text-[var(--console-text)]`,children:`Bookmarked Sessions`}),(0,R.jsxs)(`span`,{className:`console-mono text-[11px] text-[var(--console-muted)]`,children:[e.length,` items`]})]}),(0,R.jsx)(`ul`,{className:`space-y-2`,children:e.map(e=>{let r=cr(t,e.agentKey),i=e.time_updated??e.time_created;return(0,R.jsx)(`li`,{children:(0,R.jsxs)(`div`,{className:`flex items-start gap-2 rounded-sm border border-transparent px-2 py-1.5 transition-colors hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)]`,children:[(0,R.jsxs)(M,{to:`/${e.fullPath}`,className:`flex min-w-0 flex-1 items-start gap-2`,children:[r?.icon?(0,R.jsx)(`img`,{src:r.icon,alt:r.displayName,className:`mt-0.5 size-3.5 shrink-0 object-contain`}):null,(0,R.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,R.jsx)(`p`,{className:`line-clamp-1 text-sm text-[var(--console-text)]`,children:B(e)}),(0,R.jsxs)(`p`,{className:`console-mono mt-0.5 line-clamp-1 text-[11px] text-[var(--console-muted)]`,children:[`/`,e.fullPath,` · `,Nr(i)]})]})]}),(0,R.jsx)(ai,{active:!0,onToggle:()=>n(e)})]})},Yn(e.agentKey,e.sessionId))})})]})}function Oi({sessions:e,agentCatalog:t,isBookmarked:n,onToggleBookmark:r}){return e.length===0?(0,R.jsx)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4 text-sm text-[var(--console-muted)]`,children:`No sessions yet`}):(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:[(0,R.jsxs)(`div`,{className:`mb-3 flex items-center justify-between`,children:[(0,R.jsx)(`h3`,{className:`console-mono text-xs font-bold uppercase text-[var(--console-text)]`,children:`Recent Activity`}),(0,R.jsxs)(`span`,{className:`console-mono text-[11px] text-[var(--console-muted)]`,children:[e.length,` items`]})]}),(0,R.jsx)(`ul`,{className:`space-y-2`,children:e.map(e=>{let i=e.agentName.toLowerCase(),a=cr(t,i),o=e.time_updated??e.time_created,s=n(i,e.id);return(0,R.jsx)(`li`,{children:(0,R.jsxs)(`div`,{className:`flex items-start gap-2 rounded-sm border border-transparent px-2 py-1.5 transition-colors hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)]`,children:[(0,R.jsxs)(M,{to:`/${e.slug}`,className:`min-w-0 flex-1`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[a?.icon?(0,R.jsx)(`img`,{src:a.icon,alt:a.displayName,className:`size-3.5 shrink-0 object-contain`}):null,(0,R.jsx)(`p`,{className:`line-clamp-1 flex-1 text-sm text-[var(--console-text)]`,children:B(e)}),(0,R.jsx)(`span`,{className:`console-mono shrink-0 text-[11px] text-[var(--console-muted)]`,children:Nr(o)})]}),(0,R.jsxs)(`p`,{className:`console-mono mt-0.5 line-clamp-1 text-[11px] text-[var(--console-muted)]`,children:[`/`,e.slug]}),(0,R.jsx)(xn,{tags:e.smart_tags,className:`mt-1.5`})]}),(0,R.jsx)(ai,{active:s,onToggle:()=>r(e,i)})]})},e.id)})})]})}function ki({activity:e}){return e.length===0?(0,R.jsx)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4 text-sm text-[var(--console-muted)]`,children:`No file activity yet`}):(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:[(0,R.jsxs)(`div`,{className:`mb-3 flex items-center justify-between`,children:[(0,R.jsx)(`h3`,{className:`console-mono text-xs font-bold uppercase text-[var(--console-text)]`,children:`Recently Touched Files`}),(0,R.jsxs)(`span`,{className:`console-mono text-[11px] text-[var(--console-muted)]`,children:[e.length,` files`]})]}),(0,R.jsx)(`ul`,{className:`space-y-2`,children:e.map(e=>{let t=e.latest_time;return(0,R.jsx)(`li`,{children:(0,R.jsxs)(M,{to:`/${e.session.slug}`,className:`block rounded-sm border border-transparent px-2 py-1.5 transition-colors hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)]`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`console-mono rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-1.5 py-0.5 text-[10px] uppercase text-[var(--console-muted)]`,children:e.kind}),(0,R.jsx)(`span`,{className:`console-mono min-w-0 flex-1 truncate text-xs text-[var(--console-text)]`,children:e.path}),(0,R.jsx)(`span`,{className:`console-mono shrink-0 text-[11px] text-[var(--console-muted)]`,children:Nr(t)})]}),(0,R.jsxs)(`p`,{className:`console-mono mt-1 line-clamp-1 text-[11px] text-[var(--console-muted)]`,children:[e.session.project_identity?.displayName??e.session.directory,` ·`,` `,B(e.session),` · `,e.count,` events`]})]})},`${e.agent_name}/${e.session_id}/${e.kind}/${e.path}`)})})]})}function Ai({data:e,agentCatalog:t,projects:n=[],bookmarkedSessions:r,isBookmarked:i,onToggleBookmark:a}){let{totals:o,perAgent:s,dailyActivity:c,dailyTokenActivity:l,modelDistribution:u,recentSessions:d,recentFileActivities:f=[]}=e;return(0,R.jsxs)(`div`,{"data-testid":`dashboard`,className:`mx-auto max-w-5xl space-y-4`,children:[(0,R.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-5`,children:[(0,R.jsx)(_i,{label:`Total Sessions`,value:z(o.sessions)}),(0,R.jsx)(_i,{label:`Total Messages`,value:z(o.messages)}),(0,R.jsx)(_i,{label:`Total Tokens`,value:gi(o.tokens)}),(0,R.jsx)(_i,{label:`Total Cost`,value:Pr(o.cost),hint:Fr(o.cost_source)}),(0,R.jsx)(_i,{label:`Latest Activity`,value:Nr(o.latestActivity),hint:o.latestActivity?new Date(o.latestActivity).toLocaleString(`zh-CN`):void 0})]}),(0,R.jsx)(yi,{buckets:c}),(0,R.jsx)(Si,{buckets:l}),(0,R.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-2`,children:[(0,R.jsx)(wi,{entries:u}),(0,R.jsx)(Ti,{perAgent:s})]}),(0,R.jsx)(Ei,{projects:n,agentCatalog:t}),(0,R.jsx)(Oi,{sessions:d,agentCatalog:t,isBookmarked:i,onToggleBookmark:a}),(0,R.jsx)(ki,{activity:f}),(0,R.jsx)(Di,{sessions:r,agentCatalog:t,onToggleBookmark:e=>a(e)})]})}function ji(e){return e.total_tokens??e.total_input_tokens+e.total_output_tokens}function Mi({label:e,value:t,hint:n}){return(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:[(0,R.jsx)(`p`,{className:`console-mono text-[11px] uppercase tracking-wider text-[var(--console-muted)]`,children:e}),(0,R.jsx)(`p`,{className:`console-mono mt-2 text-xl font-semibold text-[var(--console-text)]`,children:t}),n?(0,R.jsx)(`p`,{className:`mt-1 text-xs text-[var(--console-muted)]`,children:n}):null]})}function Ni({label:e,value:t}){return(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] p-3`,children:[(0,R.jsx)(`p`,{className:`console-mono text-[11px] uppercase tracking-wider text-[var(--console-muted)]`,children:e}),(0,R.jsx)(`p`,{className:`console-mono mt-2 break-all text-sm leading-6 text-[var(--console-text)]`,children:t})]})}function Pi({code:e,title:t,description:n,aside:r,iconSrc:i,iconAlt:a}){return(0,R.jsx)(`div`,{className:`rounded-sm border border-[var(--console-border-strong)] bg-white p-5 md:p-6`,children:(0,R.jsxs)(`div`,{className:`flex flex-col gap-5 md:flex-row md:items-start md:justify-between`,children:[(0,R.jsxs)(`div`,{className:`max-w-2xl`,children:[(0,R.jsx)(`span`,{className:`console-mono inline-flex rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-2 py-1 text-[11px] font-semibold uppercase tracking-[0.16em] text-[var(--console-muted)]`,children:e}),(0,R.jsxs)(`div`,{className:`mt-4 flex items-start gap-3`,children:[i?(0,R.jsx)(`img`,{src:i,alt:a||``,className:`mt-1 size-8 shrink-0 object-contain`}):null,(0,R.jsx)(`h2`,{className:`console-mono text-2xl leading-tight font-semibold tracking-tight text-[var(--console-text)] md:text-[2rem]`,children:t})]}),(0,R.jsx)(`p`,{className:`mt-3 max-w-[42rem] text-sm leading-7 text-[var(--console-muted)]`,children:n})]}),(0,R.jsxs)(`div`,{className:`min-w-0 rounded-sm border border-dashed border-[var(--console-border)] bg-[var(--console-surface-muted)] px-4 py-3 md:max-w-xs`,children:[(0,R.jsx)(`p`,{className:`console-mono text-[11px] uppercase tracking-[0.16em] text-[var(--console-muted)]`,children:`STATUS NOTE`}),(0,R.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-[var(--console-text)]`,children:r})]})]})})}function Fi({agentItems:e}){return(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:[(0,R.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-3`,children:[(0,R.jsx)(`h3`,{className:`console-mono text-xs font-bold uppercase text-[var(--console-text)]`,children:`Known Agents`}),(0,R.jsxs)(`span`,{className:`console-mono text-[11px] text-[var(--console-muted)]`,children:[e.length,` items`]})]}),(0,R.jsx)(`ul`,{className:`grid gap-2 sm:grid-cols-2`,children:e.map(e=>(0,R.jsx)(`li`,{children:(0,R.jsxs)(M,{to:`/${e.key}`,className:`flex min-h-11 items-center gap-2 rounded-sm border border-transparent px-3 py-2 transition-colors duration-200 hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--console-accent)]`,children:[e.icon?(0,R.jsx)(`img`,{src:e.icon,alt:e.name,className:`size-4 object-contain`}):null,(0,R.jsx)(`span`,{className:`console-mono flex-1 text-xs text-[var(--console-text)]`,children:e.name}),(0,R.jsx)(`span`,{className:`console-mono text-[11px] text-[var(--console-muted)]`,children:e.count})]})},e.key))})]})}function Ii({sessions:e,isBookmarked:t,onToggleBookmark:n}){return e.length===0?(0,R.jsx)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4 text-sm text-[var(--console-muted)]`,children:`No sessions yet`}):(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:[(0,R.jsxs)(`div`,{className:`mb-3 flex items-center justify-between`,children:[(0,R.jsx)(`h3`,{className:`console-mono text-xs font-bold uppercase text-[var(--console-text)]`,children:`Recent Sessions`}),(0,R.jsxs)(`span`,{className:`console-mono text-[11px] text-[var(--console-muted)]`,children:[e.length,` items`]})]}),(0,R.jsx)(`ul`,{className:`space-y-2`,children:e.map(e=>{let r=t(e.agentKey,e.id);return(0,R.jsx)(`li`,{children:(0,R.jsxs)(`div`,{className:`flex items-start gap-2 rounded-sm border border-transparent px-2 py-1.5 transition-colors hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)]`,children:[(0,R.jsxs)(M,{to:`/${e.fullPath}`,className:`min-w-0 flex-1`,children:[(0,R.jsx)(`p`,{className:`line-clamp-1 text-sm text-[var(--console-text)]`,children:B(e)}),(0,R.jsxs)(`p`,{className:`console-mono mt-0.5 text-[11px] text-[var(--console-muted)]`,children:[`/`,e.fullPath,` ·`,` `,Nr(e.time_updated||e.time_created)]}),(0,R.jsx)(xn,{tags:e.smart_tags,className:`mt-1.5`})]}),(0,R.jsx)(ai,{active:r,onToggle:()=>n(e)})]})},e.id)})})]})}function Li({type:e,agentCatalog:t,sessions:n,agentItems:r,activeAgentKey:i,attemptedAgentKey:a,attemptedSessionSlug:o,isBookmarked:s,onToggleBookmark:c}){let l=n.toSorted((e,t)=>(t.time_updated||t.time_created||0)-(e.time_updated||e.time_created||0)),u=l.slice(0,5),d=n.reduce((e,t)=>e+t.stats.message_count,0),f=n.reduce((e,t)=>e+ji(t.stats),0),p=n.reduce((e,t)=>e+t.stats.total_cost,0),m=p>0?n.some(e=>e.stats.cost_source===`estimated`)?`estimated`:`recorded`:void 0,h=l[0]?.time_updated||l[0]?.time_created;if(e===`missing-agent`){let e=`/${a||`unknown`}${o?`/${o}`:``}`;return(0,R.jsxs)(`div`,{className:`mx-auto max-w-4xl space-y-4`,children:[(0,R.jsx)(Pi,{code:`404 / AGENT`,title:`This agent isn't on the roster.`,description:`The path you requested is valid in shape, but there is no matching agent in the current registry. It may not be connected yet, or its name may not match what the system recognizes.`,aside:`Choose one of the available agents to continue.`}),(0,R.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-3`,children:[(0,R.jsx)(Ni,{label:`Requested Agent`,value:a||`unknown`}),(0,R.jsx)(Ni,{label:`Requested Path`,value:e}),o?(0,R.jsx)(Ni,{label:`Requested Session`,value:o}):null]}),(0,R.jsx)(Fi,{agentItems:r})]})}if(e===`missing-session`){let e=i?cr(t,i):void 0,n=e?.displayName??i??`Unknown Agent`,r=e?.icon,a=o||`unknown-session`;return(0,R.jsxs)(`div`,{className:`mx-auto max-w-4xl space-y-4`,children:[(0,R.jsx)(Pi,{code:`404 / SESSION`,title:`This session isn't in the index.`,description:`${n} is available, but the session you're looking for does not exist in the current index. The slug may be incorrect, or the record may never have been part of this dataset.`,aside:`We checked the current path, but nothing matched. The session list on the left is still available.`,iconSrc:r,iconAlt:n}),(0,R.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2`,children:[(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] p-3`,children:[(0,R.jsx)(`p`,{className:`console-mono text-[11px] uppercase tracking-wider text-[var(--console-muted)]`,children:`Agent`}),(0,R.jsxs)(`div`,{className:`mt-2 flex items-center gap-2`,children:[r?(0,R.jsx)(`img`,{src:r,alt:n,className:`size-4 shrink-0 object-contain`}):null,(0,R.jsx)(`p`,{className:`console-mono break-all text-sm leading-6 text-[var(--console-text)]`,children:n})]})]}),(0,R.jsx)(Ni,{label:`Session`,value:a})]}),(0,R.jsx)(Ii,{sessions:u,isBookmarked:s,onToggleBookmark:c})]})}if(e===`global`)return(0,R.jsxs)(`div`,{className:`mx-auto max-w-4xl space-y-4`,children:[(0,R.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-3`,children:[(0,R.jsx)(Mi,{label:`Total Sessions`,value:z(n.length)}),(0,R.jsx)(Mi,{label:`Total Messages`,value:z(d)}),(0,R.jsx)(Mi,{label:`Latest Activity`,value:Nr(h),hint:h?new Date(h).toLocaleString(`zh-CN`):void 0})]}),(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:[(0,R.jsx)(`h3`,{className:`console-mono mb-3 text-xs font-bold uppercase text-[var(--console-text)]`,children:`Agents`}),(0,R.jsx)(`ul`,{className:`grid gap-2 sm:grid-cols-2`,children:r.map(e=>(0,R.jsx)(`li`,{children:(0,R.jsxs)(M,{to:`/${e.key}`,className:`flex items-center gap-2 rounded-sm border border-transparent px-2 py-1.5 transition-colors hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)]`,children:[e.icon?(0,R.jsx)(`img`,{src:e.icon,alt:e.name,className:`size-4 object-contain`}):null,(0,R.jsx)(`span`,{className:`console-mono flex-1 text-xs text-[var(--console-text)]`,children:e.name}),(0,R.jsx)(`span`,{className:`console-mono text-[11px] text-[var(--console-muted)]`,children:e.count})]})},e.key))})]}),(0,R.jsx)(Ii,{sessions:u,isBookmarked:s,onToggleBookmark:c})]});let g=i?cr(t,i):void 0,_=g?.displayName??`Unknown Agent`;return(0,R.jsxs)(`div`,{className:`mx-auto max-w-4xl space-y-4`,children:[(0,R.jsx)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:(0,R.jsxs)(`div`,{className:`flex items-center gap-3`,children:[g?(0,R.jsx)(`img`,{src:g.icon,alt:_,className:`size-6 object-contain`}):null,(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h3`,{className:`console-mono text-sm font-semibold text-[var(--console-text)]`,children:_}),(0,R.jsx)(`p`,{className:`console-mono text-xs text-[var(--console-muted)]`,children:`Select a session from the left to view details`})]})]})}),(0,R.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-4`,children:[(0,R.jsx)(Mi,{label:`Sessions`,value:z(n.length)}),(0,R.jsx)(Mi,{label:`Messages`,value:z(d)}),(0,R.jsx)(Mi,{label:`Tokens`,value:z(f)}),(0,R.jsx)(Mi,{label:`Total Cost`,value:Pr(p),hint:Fr(m)})]}),(0,R.jsx)(Ii,{sessions:u,isBookmarked:s,onToggleBookmark:c})]})}function Ri(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:z(e)}function zi(e){return e.stats.total_tokens??e.stats.total_input_tokens+e.stats.total_output_tokens}function Bi({label:e,value:t,hint:n}){return(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:[(0,R.jsx)(`p`,{className:`console-mono text-[11px] uppercase tracking-wider text-[var(--console-muted)]`,children:e}),(0,R.jsx)(`p`,{className:`console-mono mt-2 text-xl font-semibold text-[var(--console-text)]`,children:t}),n?(0,R.jsx)(`p`,{className:`mt-1 text-xs text-[var(--console-muted)]`,children:n}):null]})}function Vi({agents:e,agentCatalog:t}){return e.length===0?null:(0,R.jsx)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:e.slice(0,4).map(e=>{let n=cr(t,e.name);return(0,R.jsxs)(`span`,{className:`console-mono inline-flex items-center gap-1 rounded-sm border border-[var(--console-border)] bg-white px-1.5 py-0.5 text-[10px] text-[var(--console-muted)]`,children:[n?.icon?(0,R.jsx)(`img`,{src:n.icon,alt:n.displayName,className:`size-3 object-contain`}):null,n?.displayName??e.name,` · `,e.sessions]},e.name)})})}function Hi({project:e,agentCatalog:t}){return(0,R.jsx)(`li`,{children:(0,R.jsxs)(M,{to:fn({kind:e.identityKind,key:e.identityKey}),className:`block rounded-sm border border-[var(--console-border)] bg-white/85 p-4 transition-colors hover:border-[var(--console-border-strong)] hover:bg-white`,children:[(0,R.jsxs)(`div`,{className:`flex flex-col gap-3 md:flex-row md:items-start md:justify-between`,children:[(0,R.jsxs)(`div`,{className:`min-w-0`,children:[(0,R.jsx)(`h2`,{className:`console-mono line-clamp-1 text-sm font-semibold text-[var(--console-text)]`,children:e.displayName}),(0,R.jsx)(`p`,{className:`console-mono mt-1 break-all text-[11px] text-[var(--console-muted)]`,children:e.identityKey})]}),(0,R.jsxs)(`div`,{className:`console-mono flex shrink-0 flex-wrap gap-2 text-[11px] text-[var(--console-muted)]`,children:[(0,R.jsxs)(`span`,{children:[z(e.sessionCount),` sessions`]}),(0,R.jsxs)(`span`,{children:[Ri(e.tokens),` tokens`]}),(0,R.jsx)(`span`,{children:Pr(e.cost)}),(0,R.jsx)(`span`,{children:Nr(e.lastActivity)})]})]}),(0,R.jsxs)(`div`,{className:`mt-3 flex flex-col gap-2 md:flex-row md:items-center md:justify-between`,children:[(0,R.jsx)(Vi,{agents:e.agentStats,agentCatalog:t}),(0,R.jsx)(`span`,{className:`console-mono text-[10px] uppercase text-[var(--console-muted)]`,children:e.identityKind})]})]})})}function Ui({projects:e,agentCatalog:t}){let n=e.reduce((e,t)=>e+t.sessionCount,0),r=e.reduce((e,t)=>e+t.tokens,0),i=e.reduce((e,t)=>e+t.cost,0),a=Math.max(0,...e.map(e=>e.lastActivity??0));return e.length===0?(0,R.jsx)(`div`,{className:`mx-auto max-w-5xl rounded-sm border border-[var(--console-border)] bg-white p-6 text-sm text-[var(--console-muted)]`,children:`No projects found`}):(0,R.jsxs)(`div`,{className:`mx-auto max-w-5xl space-y-4`,children:[(0,R.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-4`,children:[(0,R.jsx)(Bi,{label:`Projects`,value:z(e.length)}),(0,R.jsx)(Bi,{label:`Sessions`,value:z(n)}),(0,R.jsx)(Bi,{label:`Tokens`,value:Ri(r)}),(0,R.jsx)(Bi,{label:`Total Cost`,value:Pr(i),hint:a?`Latest ${Nr(a)}`:void 0})]}),(0,R.jsx)(`ul`,{className:`grid gap-3`,children:e.map(e=>(0,R.jsx)(Hi,{project:e,agentCatalog:t},`${e.identityKind}:${e.identityKey}`))})]})}function Wi({agents:e,agentCatalog:t,activeAgent:n,onChange:r}){return(0,R.jsx)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-3`,children:(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`console-mono text-[10px] font-semibold uppercase text-[var(--console-muted)]`,children:`Agent`}),(0,R.jsx)(`button`,{type:`button`,onClick:()=>r(void 0),className:`console-mono rounded-sm border px-2 py-1 text-[10px] transition-colors ${n?`border-[var(--console-border)] bg-[var(--console-surface-muted)] text-[var(--console-muted)] hover:bg-white`:`border-[var(--console-border-strong)] bg-[var(--console-accent)] text-white`}`,children:`All Agents`}),e.map(e=>{let i=cr(t,e.name),a=n===e.name;return(0,R.jsxs)(`button`,{type:`button`,onClick:()=>r(a?void 0:e.name),className:`console-mono inline-flex items-center gap-1 rounded-sm border px-2 py-1 text-[10px] transition-colors ${a?`border-[var(--console-border-strong)] bg-[var(--console-accent)] text-white`:`border-[var(--console-border)] bg-[var(--console-surface-muted)] text-[var(--console-muted)] hover:bg-white`}`,children:[i?.icon?(0,R.jsx)(`img`,{src:i.icon,alt:i.displayName,className:`size-3 object-contain`}):null,i?.displayName??e.name,` · `,e.sessions]},e.name)})]})})}function Gi({project:e,agentCatalog:t}){return(0,R.jsx)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:(0,R.jsxs)(`div`,{className:`flex flex-col gap-3 md:flex-row md:items-start md:justify-between`,children:[(0,R.jsxs)(`div`,{className:`min-w-0`,children:[(0,R.jsx)(`h2`,{className:`console-mono text-base font-semibold text-[var(--console-text)]`,children:e.displayName}),(0,R.jsxs)(`p`,{className:`console-mono mt-1 break-all text-[11px] text-[var(--console-muted)]`,children:[e.identityKind,`: `,e.identityKey]})]}),(0,R.jsx)(Vi,{agents:e.agentStats,agentCatalog:t})]})})}function Ki({sessions:e,agentCatalog:t}){if(e.length===0)return null;let n=e.toSorted((e,t)=>t.stats.total_cost-e.stats.total_cost).slice(0,5);return(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4`,children:[(0,R.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-3`,children:[(0,R.jsx)(`h3`,{className:`console-mono text-xs font-bold uppercase text-[var(--console-text)]`,children:`Top Cost`}),(0,R.jsxs)(`span`,{className:`console-mono text-[11px] text-[var(--console-muted)]`,children:[n.length,` sessions`]})]}),(0,R.jsx)(`ul`,{className:`space-y-2`,children:n.map(e=>{let n=cr(t,e.agentKey);return(0,R.jsx)(`li`,{children:(0,R.jsxs)(M,{to:`/${e.fullPath}`,className:`block rounded-sm border border-transparent px-2 py-1.5 transition-colors hover:border-[var(--console-border)] hover:bg-[var(--console-surface-muted)]`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[n?.icon?(0,R.jsx)(`img`,{src:n.icon,alt:n.displayName,className:`size-3.5 object-contain`}):null,(0,R.jsx)(`span`,{className:`line-clamp-1 flex-1 text-sm text-[var(--console-text)]`,children:B(e)}),(0,R.jsx)(`span`,{className:`console-mono text-[11px] text-[var(--console-muted)]`,children:Pr(e.stats.total_cost)})]}),(0,R.jsxs)(`p`,{className:`console-mono mt-1 text-[11px] text-[var(--console-muted)]`,children:[`/`,e.fullPath,` · `,Ri(zi(e)),` tokens`]})]})},e.fullPath)})})]})}function qi({project:e,agentCatalog:t,projectKey:n,dashboard:r,loading:i,error:a,sessions:o,activeAgent:s,onChangeAgent:c,isBookmarked:l,onToggleSessionBookmark:u}){if(!e)return(0,R.jsxs)(`div`,{className:`mx-auto max-w-4xl rounded-sm border border-[var(--console-border)] bg-white p-6`,children:[(0,R.jsx)(`h2`,{className:`console-mono text-sm font-semibold text-[var(--console-text)]`,children:`Project Not Found`}),(0,R.jsx)(`p`,{className:`console-mono mt-2 break-all text-xs text-[var(--console-muted)]`,children:n}),(0,R.jsx)(M,{to:`/projects`,className:`console-mono mt-4 inline-flex rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-2 py-1 text-xs text-[var(--console-text)] transition-colors hover:bg-white`,children:`Back to Projects`})]});let d=s?o.filter(e=>e.agentKey===s):o;return(0,R.jsxs)(`div`,{className:`mx-auto max-w-5xl space-y-4`,children:[(0,R.jsx)(Gi,{project:e,agentCatalog:t}),(0,R.jsx)(Wi,{agents:e.agentStats,agentCatalog:t,activeAgent:s,onChange:c}),i?(0,R.jsx)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-6 text-sm text-[var(--console-muted)]`,children:`Loading project dashboard`}):a?(0,R.jsx)(`div`,{className:`rounded-sm border border-[var(--console-error-border)] bg-[var(--console-error-bg)] p-6 text-sm text-[var(--console-error)]`,children:a}):r?(0,R.jsx)(Ai,{data:r,agentCatalog:t,projects:[],bookmarkedSessions:[],isBookmarked:l,onToggleBookmark:(e,t)=>{`agentName`in e&&u(e,t??e.agentName.toLowerCase())}}):null,(0,R.jsx)(Ki,{sessions:d,agentCatalog:t})]})}var Ji={a:({children:e})=>(0,R.jsx)(`span`,{className:`console-markdown-link`,children:e})};function Yi(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Xi(e){let t=e?.trim();if(!t)return null;let n=Array.from(new Set((t.match(/"[^"]+"|\S+/g)??[]).map(e=>e.replace(/^"|"$/g,``).trim()).filter(Boolean).filter(e=>!/^OR$/i.test(e))));return n.length===0?null:RegExp(`(${n.map(Yi).join(`|`)})`,`gi`)}function Zi({text:e,highlightQuery:t}){let r=(0,F.useRef)(null),i=(0,F.useMemo)(()=>Xi(t),[t]);return(0,F.useEffect)(()=>{let e=r.current;if(!e||!i)return;let t=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),n=[];for(;t.nextNode();){let e=t.currentNode;if(!(e instanceof Text))continue;let r=e.parentElement;r&&(r.closest(`mark, pre, code`)||e.textContent?.trim()&&n.push(e))}for(let e of n){let t=e.textContent??``;if(i.lastIndex=0,!i.test(t))continue;let n=document.createDocumentFragment(),r=0;i.lastIndex=0;for(let e of t.matchAll(i)){let i=e.index??0,a=e[0]??``;i>r&&n.append(t.slice(r,i));let o=document.createElement(`mark`);o.textContent=a,n.append(o),r=i+a.length}r<t.length&&n.append(t.slice(r)),e.parentNode?.replaceChild(n,e)}},[i,e]),(0,R.jsx)(`div`,{ref:r,children:(0,R.jsx)(n,{components:Ji,children:e})})}function Qi(e){return ra(e)?`Browser`:typeof e.title==`string`&&e.title.trim()?ea(e.title):typeof e.tool==`string`&&e.tool.trim()?ea(e.tool):`tool`}function $i(e){return ra(e)?`browser`:ea(typeof e.tool==`string`&&e.tool.trim()?e.tool:Qi(e)).toLowerCase()}function ea(e){return e.trim().replace(/^tool:\s*/i,``).replace(/^\.+(?=\w)/,``)}function ta(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function na(e){return typeof e==`string`?e.trim():``}function ra(e){let t=na(ta(e.state?.metadata).namespace);return ea(na(e.tool)).toLowerCase()===`js`&&(t===`mcp__node_repl__`||t===`mcp__node_repl__.js`)}function ia(e,t){let n=$i(t),r=`tool:${n}`,i=e.get(n);if(i){i.count+=1;return}e.set(n,{id:r,toolKey:n,label:Qi(t),count:1})}function aa(e){let t={user:0,agent_message:0,thinking:0,plan:0,tools_all:0},n=new Set,r=new Map;for(let{msg:i,blocks:a}of e)for(let e of a){if(i.role===`user`){t.user+=1,n.add(`user`);continue}if(e.type===`text`){t.agent_message+=1,n.add(`agent_message`);continue}if(e.type===`reasoning`){t.thinking+=1,n.add(`thinking`);continue}if(e.type===`plan`){t.plan+=1,n.add(`plan`);continue}t.tools_all+=e.parts.length,n.add(`tools_all`);for(let t of e.parts)ia(r,t),n.add(`tool:${$i(t)}`)}return{filterIds:n,counts:t,tools:[...r.values()].toSorted((e,t)=>e.label.localeCompare(t.label))}}function oa(e,t){return t.has(`tool:${$i(e)}`)}function sa(e,t,n){return t.role===`user`?n.has(`user`):e.type===`text`?n.has(`agent_message`):e.type===`reasoning`?n.has(`thinking`):e.type===`plan`?n.has(`plan`):e.parts.some(e=>oa(e,n))}function ca(e,t){let n=e.parts.filter(e=>oa(e,t));return n.length===0?null:{...e,parts:n}}function la(e,t){return e.map(e=>{let n=e.blocks.filter(n=>sa(n,e.msg,t)).map(e=>e.type===`tool`?ca(e,t):e).filter(e=>e!=null);return n.length===0?null:{msg:e.msg,blocks:n,index:e.index}}).filter(e=>e!=null)}function ua(e){if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(e=>{if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e,n=ua(t.text);if(n.trim())return n;let r=ua(t.content);if(r.trim())return r}return``}).filter(Boolean).join(`
|
|
76
|
+
|
|
77
|
+
`);if(e&&typeof e==`object`){let t=e,n=ua(t.text);if(n.trim())return n;let r=ua(t.content);if(r.trim())return r}return``}function da(e){return e.type===`tool`||e.type===`plan`?!0:e.type===`text`||e.type===`reasoning`?!!ua(e.text).trim():!1}function fa(e){return e.reduce((e,t)=>{if(t.type===`image`||!da(t))return e;let n=e.at(-1);return t.type!==`plan`&&n?.type===t.type?(n.parts.push(t),e):(e.push({type:t.type,parts:[t]}),e)},[])}function pa(e){let t=[];for(let n of e){let e=fa(n.parts);e.length!==0&&t.push({msg:n,blocks:e,index:t.length})}return t}function ma(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function ha(e){return typeof e==`string`?e:``}function ga(e){return e.replace(/\\n/g,`
|
|
78
|
+
`)}function _a(e){let t=ma(e),n=ha(t.type);return n?{type:n,path:ha(t.path),oldPath:ha(t.old_path),targetPath:ha(t.targetPath),content:ha(t.content)||ha(ma(t.input).content)}:null}function va(e){return(Array.isArray(e)?e:Array.isArray(ma(e).content)?ma(e).content:[]).map(e=>_a(e)).filter(e=>e!=null)}function ya(e,t,n){return`${e} ${e===1?t:n}`}function ba(e){let t=e.filter(e=>e.type===`write_file`).length,n=e.filter(e=>e.type===`edit_file`).length,r=e.filter(e=>e.type===`delete_file`).length,i=e.filter(e=>e.type===`move_file`).length,a=[];return t>0&&a.push(ya(t,`write`,`writes`)),n>0&&a.push(ya(n,`edit`,`edits`)),r>0&&a.push(ya(r,`delete`,`deletes`)),i>0&&a.push(ya(i,`move`,`moves`)),a.join(` · `)}function xa(e){return e.targetPath||e.path||e.oldPath||e.type}function Sa(e,t,n){return e.reduce((e,r)=>r.type===`write_file`?(e.push({label:n(xa(r)),operation:`write`,language:t(r.path),isCode:!0,text:ga(r.content)}),e):r.type===`edit_file`?(e.push({label:n(xa(r)),operation:`edit`,language:`diff`,isCode:!0,text:ga(r.content)}),e):r.type===`delete_file`?(e.push({label:n(xa(r)),operation:`edit`,language:`text`,isCode:!1,text:`File deleted.`}),e):(r.type===`move_file`&&e.push({label:n(xa(r)),operation:`edit`,language:`text`,isCode:!1,text:r.targetPath&&r.path?`Moved from ${n(r.path)} to ${n(r.targetPath)}`:r.oldPath?`Moved from ${n(r.oldPath)}`:`File moved.`}),e),[])}function Ca(e,t,n,r=e=>e){let i=Sa(e,n,r);return i.length>0?{kind:`file-sections`,sections:i}:{kind:`plain`,text:t,language:`text`,isCode:!1}}function wa(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Ta(e){if(typeof e!=`string`)return e;try{return JSON.parse(e)}catch{return e}}function Ea(e){return typeof e==`string`?e.trim():``}function V(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function H(e){return typeof e==`string`?e.trim():``}function U(e){return typeof e==`string`?e:``}function Da(e){try{return JSON.parse(e)}catch{return null}}function W(e){return e.replaceAll(/\\n/g,`
|
|
79
|
+
`)}function Oa(e){let t=H(e.mime_type),n=H(e.data);if(t.startsWith(`image/`)&&n)return`data:${t};base64,${n}`;let r=H(e.url);return/^data:image\//i.test(r)?r:``}function ka(e){return Array.isArray(e)?e.flatMap((e,t)=>{let n=V(e);if(n.type!==`image`)return[];let r=Oa(n);return r?[{src:r,alt:`Tool output image ${t+1}`}]:[]}):[]}function Aa(e){let t=ka(e);if(t.length>0)return{kind:`media`,items:t,text:Pa(e,!1)||void 0};let n=typeof e==`string`&&e.trim()?Ta(e.trim()):e;if(n&&typeof n==`object`&&!Array.isArray(n)){let e=Object.entries(n).map(([e,t])=>({label:e,value:t}));return e.length>0?{kind:`property-list`,items:e}:null}return null}function ja(e){if(e==null)return``;if(typeof e==`string`){let t=e.trim();if(!t)return``;try{let e=JSON.parse(t);return JSON.stringify(e,null,2)}catch{return e}}try{return JSON.stringify(e,null,2)}catch{return typeof e==`number`||typeof e==`bigint`||typeof e==`boolean`?`${e}`:typeof e==`symbol`?e.description?`Symbol(${e.description})`:`Symbol`:typeof e==`function`?`[Function]`:`[Unserializable value]`}}function Ma(e){if(typeof e==`string`)return[e];if(Array.isArray(e))return e.flatMap(e=>Ma(e));if(e&&typeof e==`object`){let t=e;if(typeof t.text==`string`)return[t.text];if(t.content!==void 0)return Ma(t.content)}return[]}function Na(e){return e.replace(/^<system>/i,``).replace(/<\/system>$/i,``).trim()}function Pa(e,t=!0){let n=Ma(e).map(e=>e.trim()).filter(e=>t?!!e:!!e&&!/^<system>[\s\S]*<\/system>$/i.test(e));return n.length===0?``:n.map(e=>t&&/^<system>[\s\S]*<\/system>$/i.test(e)?Na(e):e).join(`
|
|
80
|
+
`)}function Fa(e){let t=Ta(e);if(t&&typeof t==`object`){let e=t;if(typeof e.cmd==`string`)return e.cmd;if(typeof e.command==`string`)return e.command}return``}function Ia(e){let t=e.trim();return t?t.replace(/^tool:\s*/i,``).replace(/^\.+(?=\w)/,``):``}function La(e){return typeof e.title==`string`&&e.title.trim()?Ia(e.title):typeof e.tool==`string`&&e.tool.trim()?Ia(e.tool):`tool`}function Ra(e){return La(e).trim().toLowerCase()}function za(e,t=`Tool`){return Ia(H(e.title))||H(e.tool)||t}function Ba(e){return W(Pa(e)||ja(e))||`No output captured.`}function G(e){let t=Ba(e.outputValue);if(t!==`No output captured.`)return t;let n=Ba(e.errorValue);return n===`No output captured.`?`No output captured.`:n}function Va(e){let t=e.state||{},n=t.status,r=n===`running`||n===`error`||n===`completed`?n:`completed`,i=t.output??t.result??``,a=t.error??``,o=Ta(t.input??t.arguments??{}),s=t.metadata??{};return{status:r,command:Fa(o),inputValue:o,outputValue:i,errorValue:a,metadataValue:s,inputText:ja(o)}}function Ha(e){let t=Ea(e.nickname);return e.role===`assistant`&&t?`AGENT (${t})`:e.role===`user`?`USER`:e.role===`tool`?`TOOL`:`AGENT`}function Ua(e,t){if(t.toLowerCase()!==`cursor`)return e;let n=[];for(let t of e){if(t.role!==`tool`){n.push({...t,parts:[...t.parts]});continue}let e=n.at(-1);if(e?.role===`assistant`){e.parts.push(...t.parts);continue}n.push({...t,parts:[...t.parts]})}return n}function Wa(e){let t=e.trim();return!t||t.length>300||t.includes(`
|
|
81
|
+
`)||/^[a-z]+:\/\//i.test(t)||/[<>{}]/.test(t)?!1:t.startsWith(`/`)||t.startsWith(`./`)||t.startsWith(`../`)||t.startsWith(`~/`)||t.includes(`/`)||t.includes(`\\`)?!0:/^[A-Za-z0-9_.@-]+\.[A-Za-z0-9_-]+$/.test(t)}function Ga(e){let t=e.trim().toLowerCase();return!t||t.includes(`command`)||t.includes(`content`)||t.includes(`text`)||t.includes(`prompt`)||t.includes(`url`)||t.includes(`body`)||t.includes(`title`)||t.includes(`description`)||t===`cwd`||t===`workdir`||t===`directory`?!1:t===`path`||t===`paths`||t.includes(`file`)||t.includes(`path`)}function Ka(e,t,n,r=0){if(!(e==null||r>4)){if(typeof e==`string`){Ga(t)&&Wa(e)&&n.add(e.trim());return}if(Array.isArray(e)){for(let i of e)Ka(i,t,n,r+1);return}if(typeof e==`object`)for(let[t,i]of Object.entries(e))Ka(i,t,n,r+1)}}function qa(e){let t=new Set;return Ka(e,``,t),[...t]}function Ja(e){return e.state?.arguments??e.state?.input??e.input??null}function Ya(e){let t=V(e);return H(t.filePath)||H(t.file_path)||H(t.path)||H(t.targetFile)||H(t.effectiveUri)||H(t.relativeWorkspacePath)||``}function K(e,t){let n=e.trim(),r=(t??``).replace(/\/+$/,``);return!n||!r?n:n===r?`.`:n.startsWith(`${r}/`)?n.slice(r.length+1):n}function Xa(e,t){let n=(t??``).replace(/\/+$/,``);return!e||!n?e:e.replace(RegExp(`${wa(n)}(?=$|/|[\\s"'\\)\\]}:;,])`,`g`),`.`)}function Za(e,t){return e.startsWith(`${t}/`)?e.slice(t.length+1):e}var Qa=new Set([`read`,`read_file`,`read_file_v2`,`read_text_file`,`readfile`,`view_image`]),$a=new Set([`apply_patch`,`edit`,`edit_file`,`edit_file_v2`,`editfile`,`multiedit`,`notebookedit`,`patch`,`search_replace`,`str_replace`]),eo=new Set([`create_file`,`write`,`write_file`,`writefile`]),to=new Set([`delete`,`delete_file`]);function no(e,t){return`tool-${e}-${t}`}function ro(e){let t=Ra(e);return Qa.has(t)?`read`:$a.has(t)?`edit`:eo.has(t)?`write`:to.has(t)?`delete`:null}function io(e){let t=new Map;for(let n of e){let e=t.get(n.path);if(e){e.count+=1,e.anchors.push({anchorId:n.anchorId,time:n.time,toolLabel:n.toolLabel}),n.time>=e.latestTime&&(e.latestTime=n.time,e.latestAnchorId=n.anchorId,e.toolLabel=n.toolLabel);continue}t.set(n.path,{path:n.path,count:1,latestTime:n.time,latestAnchorId:n.anchorId,toolLabel:n.toolLabel,anchors:[{anchorId:n.anchorId,time:n.time,toolLabel:n.toolLabel}]})}return[...t.values()].map(e=>({...e,anchors:e.anchors.toSorted((e,t)=>e.time-t.time)})).toSorted((e,t)=>t.latestTime===e.latestTime?e.path.localeCompare(t.path):t.latestTime-e.latestTime)}function ao(e){let t=new Map,n=new Map,r={read:[],edit:[],write:[],delete:[]};return e.forEach(({msg:e,blocks:i,index:a})=>{let o=0;for(let s of i)if(s.type===`tool`)for(let i of s.parts){let s=no(a,o);o+=1,t.set(i,s),n.set(s,a);let c=Ja(i),l=La(i),u=i.time_created??e.time_created,d=va(c);if(d.length>0){for(let e of d){let t=(e.path||e.oldPath).trim();if(!t)continue;let n=e.type===`write_file`?`write`:e.type===`delete_file`?`delete`:`edit`;r[n].push({kind:n,path:t,anchorId:s,time:u,toolLabel:l})}continue}let f=ro(i);if(!f)continue;let p=qa(c);for(let e of p)r[f].push({kind:f,path:e,anchorId:s,time:u,toolLabel:l})}}),{toolAnchorIds:t,anchorMessageIndexes:n,summary:{read:io(r.read),edit:io(r.edit),write:io(r.write),delete:io(r.delete)}}}function oo(e,t){if(!e)return t;let n={read:[],edit:[],write:[],delete:[]},r=new Map;for(let e of[`read`,`edit`,`write`,`delete`])for(let n of t[e])r.set(`${e}\0${n.path}`,n);for(let t of e){let e=r.get(`${t.kind}\0${t.path}`);n[t.kind].push({path:t.path,count:t.count,latestTime:t.latest_time,latestAnchorId:e?.latestAnchorId??``,toolLabel:e?.toolLabel??t.kind,anchors:e?.anchors??[]})}for(let e of[`read`,`edit`,`write`,`delete`])n[e].sort((e,t)=>t.latestTime===e.latestTime?e.path.localeCompare(t.path):t.latestTime-e.latestTime);return n}function so(e){return e===0?`auto`:`smooth`}function co(e,t){return e===`smooth`&&t?`auto`:e}function lo(e){return e.read.length+e.edit.length+e.write.length+e.delete.length}function uo({summary:e,baseDirectory:t,onJumpToAnchor:n}){let r=[{key:`read`,label:`Read`,Icon:N,items:e.read},{key:`edit`,label:`Edit`,Icon:A,items:e.edit},{key:`write`,label:`Write`,Icon:Le,items:e.write},{key:`delete`,label:`Delete`,Icon:se,items:e.delete}].filter(e=>e.items.length>0);return r.length===0?null:(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white shadow-[0_1px_2px_rgba(15,23,42,0.04)]`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-[var(--console-border)] px-4 py-3`,children:[(0,R.jsx)(x,{className:`size-3.5 text-[var(--console-accent)]`}),(0,R.jsx)(`span`,{className:`console-mono text-xs font-semibold uppercase tracking-[0.16em] text-[var(--console-text)]`,children:`File Tracker`})]}),(0,R.jsx)(`div`,{className:`space-y-3 p-3`,children:r.map(({key:e,label:r,Icon:i,items:a})=>(0,R.jsx)(fo,{label:r,Icon:i,items:a,baseDirectory:t,onJumpToAnchor:n},e))})]})}function fo({label:e,Icon:t,items:n,baseDirectory:r,onJumpToAnchor:i}){let[a,o]=(0,F.useState)(!1);return(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-[#fafafa]`,children:[(0,R.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),className:`flex w-full items-center gap-2 px-3 py-2 text-left transition-colors hover:bg-[var(--console-surface-muted)]`,children:[(0,R.jsx)(t,{className:`size-3.5 shrink-0 text-[var(--console-accent)]`}),(0,R.jsx)(`span`,{className:`console-mono min-w-0 flex-1 text-[11px] font-semibold uppercase tracking-[0.12em] text-[var(--console-muted)]`,children:e}),(0,R.jsx)(`span`,{className:`console-mono shrink-0 text-[10px] text-[var(--console-muted)]`,children:n.length}),a?(0,R.jsx)(E,{className:`size-3.5 shrink-0 text-[var(--console-muted)]`}):(0,R.jsx)(de,{className:`size-3.5 shrink-0 text-[var(--console-muted)]`})]}),a?(0,R.jsx)(`div`,{className:`space-y-1 border-t border-[var(--console-border)] p-2`,children:n.map(e=>(0,R.jsx)(po,{item:e,baseDirectory:r,onJumpToAnchor:i},`${e.path}:${e.latestAnchorId||e.latestTime}`))}):null]})}function po({item:e,baseDirectory:t,onJumpToAnchor:n}){let[r,i]=(0,F.useState)(0);function a(t,r){let a=e.anchors.length;if(a===0)return;let o=(t%a+a)%a;i(o);let s=e.anchors[o];s&&n(s.anchorId,r)}return(0,R.jsxs)(`div`,{className:`flex items-start gap-2 rounded-sm px-2 py-2 transition-colors hover:bg-[var(--console-surface-muted)]`,children:[(0,R.jsx)(`button`,{type:`button`,title:e.path,onClick:e=>a(r,so(e.detail)),className:`min-w-0 flex-1 text-left`,children:(0,R.jsx)(`span`,{className:`console-mono block break-all text-xs text-[var(--console-text)]`,children:Za(e.path,t)})}),e.anchors.length>1?(0,R.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[(0,R.jsx)(`button`,{type:`button`,"aria-label":`Previous ${e.path}`,onClick:e=>a(r-1,so(e.detail)),className:`rounded-sm border border-[var(--console-border)] p-1 text-[var(--console-muted)] transition-colors hover:bg-white`,children:(0,R.jsx)(E,{className:`size-3`})}),(0,R.jsxs)(`span`,{className:`console-mono text-[10px] text-[var(--console-muted)]`,children:[r+1,`/`,e.anchors.length]}),(0,R.jsx)(`button`,{type:`button`,"aria-label":`Next ${e.path}`,onClick:e=>a(r+1,so(e.detail)),className:`rounded-sm border border-[var(--console-border)] p-1 text-[var(--console-muted)] transition-colors hover:bg-white`,children:(0,R.jsx)(de,{className:`size-3`})})]}):(0,R.jsx)(`button`,{type:`button`,title:`Jump to tool call`,onClick:e=>a(0,so(e.detail)),className:`console-mono shrink-0 text-[10px] text-[var(--console-muted)]`,children:e.count})]})}var mo=[{id:`user`,label:`User`},{id:`agent_message`,label:`Agent Responses`},{id:`thinking`,label:`Thinking`},{id:`plan`,label:`Plans`},{id:`tools_all`,label:`Tools`}];function ho(e){return e.tools.map(e=>e.id)}function go(e,t,n){let r=new Set(e),i=ho(n);if(t===`tools_all`){if(i.filter(e=>r.has(e)).length<i.length){r.add(`tools_all`);for(let e of i)r.add(e)}else{r.delete(`tools_all`);for(let e of i)r.delete(e)}return r}return t.startsWith(`tool:`)?(r.has(t)?r.delete(t):r.add(t),i.filter(e=>r.has(e)).length===i.length?r.add(`tools_all`):r.delete(`tools_all`),r):(r.has(t)?r.delete(t):r.add(t),r)}function _o({checked:e,indeterminate:t=!1,onChange:n}){let r=(0,F.useRef)(null);return(0,F.useLayoutEffect)(()=>{r.current&&(r.current.indeterminate=t)},[t]),(0,R.jsxs)(`span`,{className:`relative mt-0.5 size-3.5 shrink-0`,children:[(0,R.jsx)(`input`,{ref:r,type:`checkbox`,checked:e,"aria-checked":t?`mixed`:e,"data-indeterminate":t?`true`:void 0,onChange:n,className:`absolute inset-0 z-10 size-full cursor-pointer opacity-0`}),(0,R.jsx)(`span`,{"aria-hidden":`true`,className:`flex size-3.5 items-center justify-center rounded border ${e||t?`border-[var(--console-accent-strong)] bg-[var(--console-accent-strong)] text-white`:`border-[var(--console-border-strong)] bg-white text-transparent`}`,children:t?(0,R.jsx)(ce,{className:`size-2.5 stroke-[3]`}):e?(0,R.jsx)(re,{className:`size-2.5 stroke-[3]`}):null})]})}function vo({toc:e,fileChangeSummary:t,baseDirectory:n,selectedFilters:r,onToggle:i,onJumpToAnchor:a}){return(0,R.jsx)(`aside`,{className:`console-scrollbar hidden min-[1025px]:sticky min-[1025px]:top-4 min-[1025px]:block min-[1025px]:max-h-[calc(100dvh-14rem)] min-[1025px]:overflow-y-auto min-[1025px]:overscroll-contain`,children:(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsx)(yo,{toc:e,selectedFilters:r,onToggle:i}),(0,R.jsx)(uo,{summary:t,baseDirectory:n,onJumpToAnchor:a})]})})}function yo({toc:e,selectedFilters:t,onToggle:n}){let r=ho(e),i=r.filter(e=>t.has(e)).length,a=r.length>0&&i===r.length,o=i>0&&i<r.length;return(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white shadow-[0_1px_2px_rgba(15,23,42,0.04)]`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-[var(--console-border)] px-4 py-3`,children:[(0,R.jsx)(we,{className:`size-3.5 text-[var(--console-accent)]`}),(0,R.jsx)(`span`,{className:`console-mono text-xs font-semibold uppercase tracking-[0.16em] text-[var(--console-text)]`,children:`Session TOC`})]}),(0,R.jsxs)(`div`,{className:`space-y-1 p-3`,children:[mo.filter(({id:t})=>e.counts[t]>0).map(({id:r,label:i})=>(0,R.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3 rounded-sm px-2 py-2 transition-colors hover:bg-[var(--console-surface-muted)]`,children:[(0,R.jsx)(_o,{checked:r===`tools_all`?a:t.has(r),indeterminate:r===`tools_all`&&o,onChange:()=>n(r)}),(0,R.jsx)(`span`,{className:`console-mono min-w-0 flex-1 break-all text-xs leading-relaxed text-[var(--console-text)]`,children:i}),(0,R.jsx)(`span`,{className:`console-mono shrink-0 text-[11px] text-[var(--console-muted)]`,children:e.counts[r]})]},r)),e.tools.length>0?(0,R.jsx)(`div`,{className:`space-y-1 border-t border-[var(--console-border)] pt-2`,children:e.tools.map(e=>(0,R.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3 rounded-sm px-2 py-2 transition-colors hover:bg-[var(--console-surface-muted)]`,children:[(0,R.jsx)(_o,{checked:t.has(e.id),onChange:()=>n(e.id)}),(0,R.jsx)(`span`,{className:`console-mono min-w-0 flex-1 break-all text-xs leading-relaxed text-[var(--console-muted)]`,children:e.label}),(0,R.jsx)(`span`,{className:`console-mono shrink-0 text-[11px] text-[var(--console-muted)]`,children:e.count})]},e.id))}):null]})]})}var bo={".bashrc":`bash`,".zshrc":`bash`,".profile":`bash`,dockerfile:`docker`,".env":`ini`},xo={ts:`typescript`,tsx:`tsx`,js:`javascript`,jsx:`jsx`,py:`python`,sql:`sql`,rs:`rust`,go:`go`,java:`java`,c:`c`,h:`c`,cc:`cpp`,cpp:`cpp`,cxx:`cpp`,hpp:`cpp`,cs:`csharp`,sh:`bash`,bash:`bash`,zsh:`bash`,html:`html`,css:`css`,yaml:`yaml`,yml:`yaml`,json:`json`,md:`markdown`,toml:`toml`,conf:`ini`,xml:`markup`,svg:`markup`,properties:`ini`,dockerfile:`docker`};function q(e){let t=e.split(`/`).pop()?.toLowerCase()??``;if(!t)return`text`;let n=bo[t];if(n)return n;if(t.startsWith(`.env.`))return`ini`;let r=t.includes(`.`)?t.split(`.`).pop()??``:``;return r&&xo[r]||`text`}function So(e,t,n){return!t.trim()&&!n.trim()?[]:[{label:Do(e),lines:To(Ne(W(t),W(n)))}]}function Co(e,t){let n=W(e).split(`
|
|
82
|
+
`),r=W(t).split(`
|
|
83
|
+
`);return[`@@`,...n.map(e=>`- ${e}`),...r.map(e=>`+ ${e}`)].join(`
|
|
84
|
+
`)}function wo(e){let t=W(e),n=t.split(`
|
|
85
|
+
`);return t.endsWith(`
|
|
86
|
+
`)&&n.pop(),n}function To(e){return e.flatMap(e=>{let t=e.added?`add`:e.removed?`remove`:`context`;return wo(e.value).map(e=>({type:t,text:e}))})}function Eo(e){let t=V(e).edit;return Array.isArray(t)?t:t&&typeof t==`object`?[t]:[]}function Do(e){let t=e.trim();if(!t)return`edit`;let n=t.split(`/`).pop()||t;return n===t?n:`${n} · ${t}`}function Oo(e,t){let n=Eo(e.inputValue),r=Do(t);return n.map(e=>{let t=V(e),n=U(t.old),i=U(t.new);return!n.trim()&&!i.trim()?null:{label:r,lines:To(Ne(W(n),W(i)))}}).filter(e=>e!=null&&e.lines.length>0)}function ko(e,t){let n=V(e.inputValue),r=Array.isArray(n.edits)?n.edits:[],i=Do(t),a=r.map(e=>{let t=V(e),n=U(t.oldText)||U(t.old),r=U(t.newText)||U(t.new);return!n.trim()&&!r.trim()?null:{label:i,lines:To(Ne(W(n),W(r)))}}).filter(e=>e!=null&&e.lines.length>0);if(a.length>0)return a;let o=V(e.metadataValue),s=U(o.patch)||U(o.diff);return s.trim()?[{label:i,lines:s.split(`
|
|
87
|
+
`).map(e=>({type:e.startsWith(`+`)?`add`:e.startsWith(`-`)?`remove`:`context`,text:e}))}]:[]}function Ao(e){return e.startsWith(`@@`)?{type:`context`,text:e}:e.startsWith(`+`)?{type:`add`,text:e.slice(1)}:e.startsWith(`-`)?{type:`remove`,text:e.slice(1)}:e.startsWith(` `)?{type:`context`,text:e.slice(1)}:{type:`context`,text:e}}function jo(e,t){let n=V(V(e.metadataValue).display),r=Array.isArray(n.structuredPatch)?n.structuredPatch:[],i=U(n.filePath)||t;return r.map(e=>{let t=V(e),n=(Array.isArray(t.lines)?t.lines:[]).map(e=>typeof e==`string`?Ao(e):null).filter(e=>e!=null);return n.length===0?null:{label:Do(i),lines:n}}).filter(e=>e!=null)}function Mo(e){let t=U(V(e.metadataValue).diff);if(t.trim())return W(t);let n=Eo(e.inputValue).map(e=>{let t=V(e),n=U(t.old),r=U(t.new);return!n.trim()&&!r.trim()?``:Co(n,r)}).filter(Boolean).join(`
|
|
88
|
+
|
|
89
|
+
`);return n.trim()?n:G(e)}function No(e){return e.replace(/\n*<system-reminder>[\s\S]*$/i,``).trimEnd()}function Po(e){let t=Pa(e,!1)||Ba(e);return t===`No output captured.`?t:No(t.replace(/^<file>\s*/i,``).replace(/\s*<\/file>\s*$/i,``)).split(`
|
|
90
|
+
`).filter(e=>!/^\(End of file - total \d+ lines\)$/.test(e.trim())).map(e=>e.replace(/^\d+\|\s?/,``).replace(/^\s*\d+\t/,``)).join(`
|
|
91
|
+
`).trimEnd()||`No output captured.`}function Fo(e){let t=V(e.inputValue);if(e.status===`completed`){let e=U(t.content);if(e.trim())return W(e)}return G(e)}function Io(e,t,n){let r=Xa(t.command||t.inputText||`{}`,n).replace(/\s+/g,` `).trim(),i=r.length>72?`${r.slice(0,72)}...`:r,a=Aa(t.outputValue);return{Icon:Ee,title:za(e),secondaryText:i?`(${i})`:void 0,details:[],expandable:!0,showInputPreview:!0,outputContent:a??{kind:`plain`,text:G(t),language:`text`,isCode:!1}}}function Lo(e,t,n,r){let i=Xa(H(V(t.inputValue).name),r);return{...n,Icon:Te,title:H(e.tool)||`skill`,secondaryText:i||void 0,expandable:!1,showInputPreview:!1}}function Ro(e){let t=new Map;return{tasks:e.map(e=>{let n=V(e),r=U(n.status),i=r===`completed`||r===`in_progress`||r===`error`?r:`pending`;return t.set(i,(t.get(i)??0)+1),{label:U(n.content)||U(n.subject)||`Untitled task`,status:i,detail:U(n.activeForm)||U(n.description)||void 0}}),summary:[...t.entries()].map(([e,t])=>`${t} ${e}`).join(` · `)}}function zo(e,t){let n=[...t.matchAll(/"([^"]+)"="([^"]+)"/g)],r=new Map(n.map(e=>[e[1],[e[2]]]));return(Array.isArray(e.questions)?e.questions:[]).flatMap(e=>{let t=V(e),n=U(t.question);if(!n)return[];let i=(Array.isArray(t.options)?t.options:[]).flatMap(e=>{let t=V(e),n=U(t.label);if(!n)return[];let r=n.replace(/\s*\(Recommended\)\s*$/i,``);return[{label:r,description:U(t.description)||void 0,recommended:r!==n||void 0}]});return[{header:U(t.header)||void 0,question:n,options:i,answers:r.get(n)??[]}]})}function Bo(e){return(e.tool||``).trim().toLowerCase()}function Vo(e){return typeof e==`string`?e.trim():typeof e==`number`||typeof e==`boolean`?String(e):``}function Ho(e,t){let n=G(t),r=U(V(Ta(n)).message)||n;return[{label:`Recipient`,value:U(e.recipient)||U(e.to)},{label:`Summary`,value:U(e.summary)},{label:`Message`,value:U(e.message)||U(e.content)},{label:`Delivery`,value:r}].filter(e=>e.value&&e.value!==`No output captured.`)}function Uo(e,t,n){let r=Io(e,t,n),i=Bo(e),a=V(t.inputValue),o=Ya(t.inputValue),s=K(o,n);if(i===`read`){let e=Aa(t.outputValue);return{...r,Icon:pe,title:`read`,secondaryText:s||void 0,showInputPreview:!1,outputContent:e??{kind:`plain`,text:Po(t.outputValue),language:q(o),isCode:!0}}}if(i===`edit`){let e=U(a.old_string),n=U(a.new_string),i=So(s||o,e,n);return{...r,Icon:A,title:`edit`,secondaryText:s||void 0,showInputPreview:!1,outputContent:i.length>0?{kind:`structured-diff`,blocks:i}:{kind:`plain`,text:G(t),language:`text`,isCode:!1}}}if(i===`write`)return{...r,Icon:Le,title:`write`,secondaryText:s||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:Fo(t),language:q(o),isCode:!0}};if(i===`bash`||i===`workflow`){let e=U(a.command)||U(a.script),o=U(a.description),s=Xa(e,n);return{...r,Icon:Ee,title:i===`workflow`?`workflow`:`bash`,secondaryText:o||Ea(s).slice(0,120)||void 0,details:e?[{label:i===`workflow`?`Script`:`Command`,value:s}]:[],showInputPreview:!1,contentLabel:t.status===`error`?`Error`:`Terminal output`,outputContent:{kind:`plain`,text:G(t),language:`text`,isCode:!1}}}if(i===`todowrite`||i===`taskcreate`){let e=Ro(i===`todowrite`?Array.isArray(a.todos)?a.todos:[]:[a]);return{...r,Icon:T,title:i===`todowrite`?`tasks`:`create task`,secondaryText:e.summary||void 0,details:[],showInputPreview:!1,contentLabel:`Task state`,outputContent:{kind:`task-list`,items:e.tasks}}}if(i===`taskupdate`||i===`tasklist`){let e=Aa(i===`taskupdate`?a:t.outputValue);return{...r,Icon:T,title:i===`taskupdate`?`update task`:`list tasks`,secondaryText:U(a.taskId)||U(a.status)||void 0,details:[],showInputPreview:!1,contentLabel:`Task state`,outputContent:e??{kind:`plain`,text:G(t),language:`text`,isCode:!1}}}if(i===`agent`){let e=U(a.subagent_type)||U(a.name),n=U(a.description);return{...r,Icon:D,title:e?`agent · ${e}`:`agent`,secondaryText:n||void 0,details:[U(a.model)?{label:`Model`,value:U(a.model)}:null,a.run_in_background===!0?{label:`Mode`,value:`Background`}:null].filter(e=>e!=null),showInputPreview:!1,contentLabel:`Agent result`,outputContent:{kind:`plain`,text:G(t),language:`markdown`,isCode:!1}}}if(i===`askuserquestion`){let e=zo(a,G(t));return{...r,Icon:ze,title:`ask`,secondaryText:e.length?`${e.length} question${e.length===1?``:`s`}`:void 0,details:[],showInputPreview:!1,contentLabel:`Questions`,outputContent:e.length?{kind:`question-list`,questions:e}:{kind:`plain`,text:G(t),language:`text`,isCode:!1}}}if(i===`websearch`||i===`webfetch`){let e=U(a.query),n=U(a.url);return{...r,Icon:N,title:i===`websearch`?`web search`:`web fetch`,secondaryText:e||n||void 0,details:[],showInputPreview:!1,contentLabel:`Results`,outputContent:{kind:`plain`,text:G(t),language:`markdown`,isCode:!1}}}if(i===`toolsearch`)return{...r,Icon:Se,title:`find tools`,secondaryText:U(a.query)||void 0,details:[],showInputPreview:!1,contentLabel:`Matches`};if(i===`skill`)return{...r,Icon:Te,title:`skill`,secondaryText:U(a.skill)||void 0,details:[],showInputPreview:!1,contentLabel:`Result`};if(i===`structuredoutput`||i===`reportfindings`)return{...r,Icon:T,title:i===`reportfindings`?`report findings`:`structured output`,secondaryText:`${Object.keys(a).length} fields`,details:[],showInputPreview:!1,contentLabel:`Submitted fields`,outputContent:{kind:`property-list`,items:Object.entries(a).map(([e,t])=>({label:e,value:t}))}};if(i.startsWith(`mcp__claude-in-chrome__`)){let e=i.replace(`mcp__claude-in-chrome__`,``).replaceAll(`_`,` `),t=U(a.url),n=U(a.action)||U(a.query),o=Vo(a.tabId);return{...r,Icon:Fe,title:`browser · ${e}`,secondaryText:t||n||void 0,details:o?[{label:`Tab`,value:o}]:[],showInputPreview:!1,contentLabel:`Browser result`}}if(i===`sendmessage`){let e=U(a.recipient)||U(a.to);return{...r,Icon:C,title:`send message`,secondaryText:e||void 0,details:[],showInputPreview:!1,contentLabel:`Message details`,outputContent:{kind:`property-list`,items:Ho(a,t)}}}return{...r,title:za(e)}}function Wo(e,t,n){let r=Io(e,t,n),i=(e.tool||``).toLowerCase(),a=V(t.inputValue);if(i===`glob`){let n=H(a.pattern);return{...r,Icon:N,title:e.tool||`glob`,secondaryText:n||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:G(t),language:`text`,isCode:!1}}}if(i===`grep`){let i=H(a.path),o=H(a.pattern),s=[K(i,n),o].filter(Boolean).join(` · `);return{...r,Icon:N,title:e.tool||`grep`,secondaryText:s||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:G(t),language:`text`,isCode:!1}}}if(i===`bash`){let i=H(a.description),o=Xa(H(a.command),n),s=i?`${i}${o?` (${o})`:``}`:o?`(${o})`:void 0;return{...r,Icon:Ee,title:e.tool||`bash`,secondaryText:s,showInputPreview:!1,outputContent:{kind:`plain`,text:G(t),language:`text`,isCode:!1}}}if(i===`read`){let i=Ya(t.inputValue),a=K(i,n);return{...r,Icon:pe,title:e.tool||`read`,secondaryText:a||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:Po(t.outputValue),language:q(i),isCode:!0}}}if(i===`edit`){let i=K(Ya(t.inputValue),n);return{...r,Icon:A,title:e.tool||`edit`,secondaryText:i||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:Mo(t),language:`diff`,isCode:!0}}}if(i===`write`){let i=Ya(t.inputValue),a=K(i,n),o=t.status===`completed`;return{...r,Icon:Le,title:e.tool||`write`,secondaryText:a||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:Fo(t),language:q(i),isCode:o}}}return i===`skill`?Lo(e,t,r,n):r}function Go(e,t,n){let r=Io(e,t,n),i=(e.tool||``).toLowerCase(),a=V(t.inputValue);if(i===`glob`){let n=H(a.pattern);return{...r,Icon:N,title:e.title||`glob`,secondaryText:n||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:G(t),language:`text`,isCode:!1}}}if(i===`grep`){let i=H(a.path),o=H(a.pattern),s=[K(i,n),o].filter(Boolean).join(` · `);return{...r,Icon:N,title:e.title||`grep`,secondaryText:s||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:G(t),language:`text`,isCode:!1}}}if(i===`shell`){let i=Xa(H(a.command),n);return{...r,Icon:Ee,title:e.title||`bash`,secondaryText:i?`(${i})`:void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:G(t),language:`text`,isCode:!1}}}if(i===`readfile`){let i=Ya(t.inputValue),a=K(i,n);return{...r,Icon:pe,title:e.title||`read`,secondaryText:a||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:Po(t.outputValue),language:q(i),isCode:!0}}}if(i===`strreplacefile`){let i=Ya(t.inputValue),a=K(i,n),o=Oo(t,a||i);return{...r,Icon:A,title:e.title||`edit`,secondaryText:a||void 0,showInputPreview:!1,outputContent:o.length>0?{kind:`structured-diff`,blocks:o}:{kind:`plain`,text:Mo(t),language:`diff`,isCode:!0}}}if(i===`writefile`){let i=Ya(t.inputValue),a=K(i,n);return{...r,Icon:Le,title:e.title||`write`,secondaryText:a||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:Fo(t),language:q(i),isCode:t.status===`completed`}}}return r}function J(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function Y(e){return typeof e==`string`?e.trim():``}function Ko(e){return typeof e==`string`?e:``}function qo(e){return typeof e==`string`?e.trim():typeof e==`number`||typeof e==`bigint`||typeof e==`boolean`?`${e}`:``}function Jo(e){return e.replace(/\\n/g,`
|
|
92
|
+
`)}function Yo(e){return e.replace(/\s*\(Recommended\)\s*$/i,``).trim()}function Xo(e){let t=e.trim();return{label:Yo(t),recommended:/\(Recommended\)\s*$/i.test(t)}}function Zo(e){return e.replace(/\s+/g,` `).trim()}function Qo(e,t=88){let n=Zo(e);return n?n.length>t?`${n.slice(0,t)}...`:n:``}function $o(e,t){return Qo([`${t} questions`,...e.filter(Boolean).slice(0,2)].join(` · `),96)}function es(e){try{return JSON.parse(e)}catch{return null}}function ts(e){let t=Jo(e).split(`
|
|
93
|
+
`);if(t.length<5||!(/^Chunk ID:\s+\S+/.test(t[0]||``)&&/^Wall time:\s+/.test(t[1]||``)&&/^Process (?:exited with code \d+|running with session ID \d+)/.test(t[2]||``)&&/^Original token count:\s+\d+/.test(t[3]||``)&&/^Output:$/.test(t[4]||``)))return e;let n=5;for(;n<t.length&&t[n]?.trim()===``;)n+=1;let r=t.slice(n).join(`
|
|
94
|
+
`);return r.trim()?r:e}function ns(e,t,n){n.trim()&&e.push({label:t,value:n})}function rs(e){return e.startsWith(`"`)&&e.endsWith(`"`)||e.startsWith(`'`)&&e.endsWith(`'`)?e.slice(1,-1):e}function is(e){return e.trim()?!/[|&;<>()$`*?{}[\]\\]/.test(e):!1}function as(e){let t=rs(e.trim());return is(t)?t:null}function os(e){let t=e.trim();if(!t)return null;let n=t.match(/^nl\s+-ba\s+([^\s]+)\s*\|\s*sed\s+-n\s+['"][^'"]+['"]$/);if(n)return as(n[1]||``);for(let e of[/^cat\s+([^\s]+)$/,/^sed\s+-n\s+['"][^'"]+['"]\s+([^\s]+)$/,/^head\s+-n\s+\d+\s+([^\s]+)$/,/^tail\s+-n\s+\d+\s+([^\s]+)$/]){let n=t.match(e);if(n)return as(n[1]||``)}return null}function ss(e){let t=e.split(`
|
|
95
|
+
`),n=t.filter(e=>e.trim());if(n.length===0)return e;let r=/^\s*\d+(?:\t|\|\s?)/;return n.filter(e=>r.test(e)).length/n.length<.6?e:t.map(e=>e.replace(/^\s*\d+(?:\t|\|\s?)/,``)).join(`
|
|
96
|
+
`)}function cs(e){return/\b(Test Files|Tests|Coverage report|coverage: platform|Ran \d+ tests)\b/.test(e)||/^(PASS|FAIL|stdout\s+\|)/m.test(e)||/\bmodules transformed\b/.test(e)}function ls(e){let t=e.trim();return!t||cs(t)?null:(t.startsWith(`{`)||t.startsWith(`[`))&&es(t)!=null?`json`:/<(!DOCTYPE html|html\b|body\b|div\b|span\b|main\b|section\b|svg\b|\/[a-z])/i.test(t)?`markup`:[/^#{1,6}\s/m,/^[-*]\s/m,/^\d+\.\s/m,/^```/m].filter(e=>e.test(t)).length>=1&&!/[{};]\s*$/.test(t)?`markdown`:(t.match(/^[A-Za-z0-9_-]+:\s.+$/gm)||[]).length>=2&&!/\b(import|export|const|let|function|class)\b/.test(t)&&!/[{}()[\];]/.test(t)?`yaml`:[/^(from\s+\S+\s+import\s+.+|import\s+\S+)/m,/^def\s+\w+\(/m,/^class\s+\w+[:(]/m].filter(e=>e.test(t)).length>=2||/^(from\s+\S+\s+import\s+.+|import\s+\S+)/m.test(t)&&/^def\s+\w+\(/m.test(t)?`python`:[/\binterface\s+\w+/,/\btype\s+\w+\s*=/,/\bimplements\b/,/\bas const\b/,/:\s*[A-Z][A-Za-z0-9_<>,[\] |&?]+/].filter(e=>e.test(t)).length>=1&&/\b(import|export|const|let|function|class)\b/.test(t)?`typescript`:[/^\s*import\s.+from\s/m,/^\s*export\s/m,/\b(const|let|function|class)\b/].filter(e=>e.test(t)).length>=2?`javascript`:null}function us(e,t,n){let r=ts(t),i=os(e);if(i){let e=n(i);return{text:ss(r),language:e,isCode:e!==`text`,sourcePath:i,confidence:`path`}}let a=ls(r);return a?{text:r,language:a,isCode:!0,confidence:`content`}:{text:r,language:`text`,isCode:!1,confidence:`plain`}}function ds(e,t,n,r=e=>e,i=e=>e){let a=J(e),o=Y(a.cmd),s=Y(a.workdir),c=Y(a.sandbox_permissions),l=Y(a.justification),u=i(o),d=[];ns(d,`Command`,u),ns(d,`Workdir`,r(s)),ns(d,`Escalation`,c),ns(d,`Justification`,l);let f=Qo(u);return{secondaryText:l?[l,f].filter(Boolean).join(`
|
|
97
|
+
`):f||void 0,details:d,outputAnalysis:us(o,t,n)}}function fs(e,t,n){let r=J(e),i=qo(r.session_id),a=Ko(r.chars),o=a?`stdin`:`poll`,s=[];return ns(s,`Session`,i),s.push({label:`Chars`,value:a||`(empty)`}),{secondaryText:i?`session #${i} · ${o}`:o,details:s,outputAnalysis:us(``,t,n)}}function ps(e,t){let n=J(e),r=Array.isArray(n.questions)?n.questions:null;if(!r||r.length===0)return{secondaryText:void 0,details:[],outputContent:{kind:`plain`,text:t,language:`text`,isCode:!1}};let i=J(es(t)?.answers),a=r.map(e=>{let t=J(e),n=Y(t.id),r=J(i[n]),a=(Array.isArray(r.answers)?r.answers:[]).map(e=>typeof e==`string`?Yo(e):``).filter(Boolean),o=Array.isArray(t.options)?t.options.map(e=>{let t=J(e),n=Xo(Y(t.label));return n.label?{label:n.label,description:Y(t.description)||void 0,recommended:n.recommended||void 0}:null}).filter(e=>e!=null):[],s=Y(t.question);return s?{header:Y(t.header)||void 0,question:s,options:o,answers:a}:null}).filter(e=>e!=null);return a.length===0?{secondaryText:void 0,details:[],outputContent:{kind:`plain`,text:t,language:`text`,isCode:!1}}:{secondaryText:$o(a.map(e=>e.header||``),a.length),details:[],outputContent:{kind:`question-list`,questions:a}}}function ms(e){let t=J(e),n=Y(t.explanation),r=Array.isArray(t.plan)?t.plan:[],i=new Map,a=r.map(e=>{let t=J(e),n=Y(t.status)||`pending`,r=Y(t.step)||Y(t.content);return i.set(n,(i.get(n)??0)+1),{label:r||`(empty step)`,status:n===`completed`||n===`in_progress`||n===`error`?n:`pending`}}),o=[...i.entries()].map(([e,t])=>({label:e,value:String(t)}));return{secondaryText:n||[...i.entries()].map(([e,t])=>`${t} ${e}`).join(` · `)||void 0,details:o,items:a}}function hs(e,t){return e.map(e=>Y(J(e)[t])).filter(Boolean).join(` · `)}function gs(e){let t=J(e);return Array.isArray(t.search_query)?{title:`web search`,secondaryText:hs(t.search_query,`q`)||void 0}:Array.isArray(t.open)?{title:`web open`,secondaryText:hs(t.open,`ref_id`)||void 0}:{title:`web ${Object.keys(t)[0]||`run`}`,secondaryText:void 0}}function _s(e,t){let n=J(e),r=Y(n.path),i=Y(n.detail),a=r?t(r):``,o=[];return ns(o,`Image`,a),ns(o,`Detail`,i),{secondaryText:a||void 0,details:o}}function vs(e){return e.replace(/^_+/,``).replaceAll(`_`,` `)}function ys(e){for(let t of[`title`,`summary`,`query`,`q`,`url`,`objective`,`target`,`threadId`]){let n=Ea(e[t]);if(n)return n.length>120?`${n.slice(0,120)}…`:n}return``}function bs(e){let t=e.indexOf(`Output:
|
|
98
|
+
`);if(t===-1)return e;let n=Da(e.slice(t+8).trim());return Array.isArray(n)&&n.map(e=>H(V(e).text)).filter(Boolean).join(`
|
|
99
|
+
`)||e}function xs(e){let t=V(V(e.state).arguments),n=Ea(t.agent_type),r=Ea(e.nickname),i=[Ea(t.model),Ea(t.reasoning_effort)].filter(Boolean).join(`-`);return[[n,r].filter(Boolean).join(` - `),i].filter(Boolean).join(` `)}function Ss(e){let t=V(e.state);return Ea(t.prompt)||Ea(V(t.arguments).message)||``}function Cs(e,t,n){let r=Io(e,t,n),i=Ra(e),a=H(V(t.metadataValue).namespace),o=e=>K(e,n),s=e=>Xa(e,n);if(i===`skill`)return Lo(e,t,r,n);if(i===`js`&&(a===`mcp__node_repl__`||a===`mcp__node_repl__.js`)){let e=H(V(t.inputValue).title);return{...r,Icon:Ee,title:`Browser`,secondaryText:e||void 0,details:[],showInputPreview:!1,outputContent:{kind:`plain`,text:bs(G(t)),language:`text`,isCode:!1}}}if(i===`exec_command`||i===`bash`){let e=ds(t.inputValue,G(t),q,o,s);return{...r,Icon:Ee,title:`bash`,secondaryText:e.secondaryText,details:e.details,showInputPreview:!1,outputContent:{kind:`plain`,text:e.outputAnalysis.text,language:e.outputAnalysis.language,isCode:e.outputAnalysis.isCode}}}if(i===`write_stdin`){let e=fs(t.inputValue,G(t),q);return{...r,Icon:Ee,title:`bash`,secondaryText:e.secondaryText,details:e.details,showInputPreview:!1,outputContent:{kind:`plain`,text:e.outputAnalysis.text,language:e.outputAnalysis.language,isCode:e.outputAnalysis.isCode}}}if(i===`request_user_input`){let e=ps(t.inputValue,G(t));return{...r,Icon:ze,title:`ask`,secondaryText:e.secondaryText,details:e.details,showInputPreview:!1,outputContent:e.outputContent}}if(i===`patch`){let n=va(t.inputValue),i=ba(n);return{...r,Icon:A,title:za(e,`patch`),secondaryText:i||void 0,details:[],showInputPreview:!1,outputContent:Ca(n,G(t),q,o)}}if(i===`update_plan`){let e=ms(t.inputValue);return{...r,Icon:T,title:`update plan`,secondaryText:e.secondaryText,details:e.details,showInputPreview:!1,contentLabel:`Plan`,outputContent:{kind:`task-list`,items:e.items}}}if(i===`web__run`){let e=gs(t.inputValue);return{...r,Icon:N,title:e.title,secondaryText:e.secondaryText,details:[],showInputPreview:!1,outputContent:{kind:`plain`,text:G(t),language:`markdown`,isCode:!1}}}if(i===`view_image`){let e=_s(t.inputValue,o);return{...r,Icon:ie,title:`view image`,secondaryText:e.secondaryText,details:e.details,showInputPreview:!1,outputContent:{kind:`plain`,text:G(t),language:`text`,isCode:!1}}}if(i===`subagent`){let n=Ss(e),i=G(t);return{...r,Icon:D,title:xs(e)||za(e,`subagent`),secondaryText:void 0,details:[],showInputPreview:!1,outputContent:{kind:`plain`,text:n||i,language:`markdown`,isCode:!1}}}if(i===`collaboration.send_message`||i===`collaboration.followup_task`){let e=V(t.inputValue),n=H(e.target),a=H(e.message);return{...r,Icon:C,title:i.endsWith(`followup_task`)?`follow up with agent`:`message agent`,secondaryText:n||void 0,details:[],showInputPreview:!1,contentLabel:`Message`,outputContent:{kind:`property-list`,items:[n?{label:`Recipient`,value:n}:null,a?{label:`Message`,value:a}:null].filter(e=>e!=null)}}}if(i===`collaboration.wait_agent`||i===`wait`){let e=V(t.inputValue).timeout_ms;return{...r,Icon:ne,title:`wait for agents`,secondaryText:typeof e==`number`?`${Math.round(e/1e3)}s timeout`:void 0,details:[],showInputPreview:!1,contentLabel:`Agent updates`}}if(i===`collaboration.list_agents`)return{...r,Icon:Pe,title:`list agents`,secondaryText:void 0,details:[],showInputPreview:!1,contentLabel:`Agent tree`};if(i===`collaboration.interrupt_agent`){let e=H(V(t.inputValue).target);return{...r,Icon:Pe,title:`interrupt agent`,secondaryText:e||void 0,details:[],showInputPreview:!1,contentLabel:`Result`}}if(i===`create_goal`||i===`get_goal`||i===`update_goal`){let e=V(t.inputValue);return{...r,Icon:be,title:vs(i),secondaryText:H(e.objective)||H(e.status)||void 0,details:[],showInputPreview:!1,contentLabel:`Goal state`}}if(a.startsWith(`mcp__`)||i.includes(`._`)){let e=V(t.inputValue),[n,a=`tool`]=i.split(`.`,2),o=Object.entries(e).map(([e,t])=>({label:e,value:t})),s=Aa(t.outputValue);return{...r,Icon:xe,title:`${vs(n??`integration`)} · ${vs(a)}`,secondaryText:ys(e)||void 0,details:[],showInputPreview:!1,contentLabel:s?`Result`:`Request`,outputContent:s??(o.length>0?{kind:`property-list`,items:o}:r.outputContent)}}return r}function ws(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:typeof e==`string`&&Da(e)||{}}function Ts(e){let t=U(ws(e).contents);return t?W(t):`No output captured.`}function Es(e){let t=ws(e),n=Array.isArray(t.directories)?t.directories:[];if(n.length===0)return Ba(e);let r=n.flatMap(e=>{let t=V(e);return[H(t.absPath),...(Array.isArray(t.files)?t.files:[]).map(e=>{let t=V(e);return H(t.relPath)||H(t.absPath)}).filter(Boolean).map(e=>` ${e}`)].filter(Boolean)});return r.length>0?r.join(`
|
|
100
|
+
`):`No output captured.`}function Ds(e,t,n){let r=Io(e,t,n),i=(e.tool||``).toLowerCase(),a=V(t.inputValue),o=Ya(t.inputValue),s=K(o,n);if(i===`read_file_v2`){let e=Ts(t.outputValue);return{...r,Icon:pe,title:`read`,secondaryText:s||void 0,details:e===`No output captured.`?[{label:`Lines`,value:H(ws(t.outputValue).totalLinesInFile)}]:[],showInputPreview:!1,outputContent:{kind:`plain`,text:e,language:q(o),isCode:e!==`No output captured.`}}}if(i===`edit_file_v2`){let e=W(U(a.streamingContent));return{...r,Icon:A,title:`edit`,secondaryText:s||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:e||G(t),language:e?`diff`:`text`,isCode:!!e}}}if(i===`ripgrep_raw_search`){let e=H(a.pattern),i=[K(H(a.path),n),e].filter(Boolean).join(` · `);return{...r,Icon:N,title:`grep`,secondaryText:i||void 0,details:[],showInputPreview:!1,outputContent:{kind:`plain`,text:G(t),language:`text`,isCode:!1}}}if(i===`glob_file_search`){let e=H(a.globPattern),i=[K(H(a.targetDirectory),n),e].filter(Boolean).join(` · `);return{...r,Icon:N,title:`glob`,secondaryText:i||void 0,details:[],showInputPreview:!1,outputContent:{kind:`plain`,text:Es(t.outputValue),language:`text`,isCode:!1}}}if(i===`run_terminal_command_v2`){let e=Xa(H(a.command),n),i=H(a.commandDescription),o=i?`${i}${e?` (${e})`:``}`:e?`(${e})`:void 0;return{...r,Icon:Ee,title:`bash`,secondaryText:o,details:[],showInputPreview:!1,outputContent:{kind:`plain`,text:G(t),language:`text`,isCode:!1}}}return{...r,title:za(e)}}function Os(e){let t=V(e.inputValue),n=V(e.metadataValue),r=Array.isArray(n.tasks)?n.tasks:[],i=Number(t.id);return V(Number.isFinite(i)&&i>0?r.find(e=>Number(V(e).id)===i):r.at(-1))}function ks(e){let t=G(e).match(/\(([^()]+?)\s*→\s*([^()]+?)\)/);return t?`${t[1]} -> ${t[2]}`:``}function As(e){let t=(e.split(`
|
|
101
|
+
`)[0]??``).match(/^Agent:\s*(.+)$/i),n=e.split(`
|
|
102
|
+
`).find(e=>e.includes(`Status:`)),r=[];return t?.[1]&&r.push({label:`Agent`,value:t[1].trim()}),n&&r.push({label:`Summary`,value:n.trim()}),r}function js(e,t,n){let r=Io(e,t,n),i=(e.tool||``).toLowerCase(),a=V(t.inputValue),o=V(t.metadataValue),s=Ya(t.inputValue),c=K(s,n);if(i===`todo`){let e=H(a.action)||H(o.action)||`todo`,n=Os(t),i=Number(n.id)||Number(a.id),s=H(n.subject)||H(a.subject),c=H(n.description)||H(a.description),l=H(n.status)||H(a.status),u=ks(t),d=[i?`#${i}`:``,s,e===`update`&&u?u:l].filter(Boolean);return{...r,Icon:T,title:e===`create`?`todo create`:e===`update`?`todo update`:`todo`,secondaryText:d.join(` · `)||void 0,details:[i?{label:`ID`,value:`#${i}`}:null,s?{label:`Subject`,value:s}:null,l?{label:`Status`,value:l}:null,u?{label:`Change`,value:u}:null].filter(e=>e!=null),showInputPreview:!1,outputContent:{kind:`plain`,text:c||G(t),language:`markdown`,isCode:!1}}}if(i===`read`)return{...r,Icon:pe,title:`read`,secondaryText:c||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:Po(t.outputValue),language:q(s),isCode:!0}};if(i===`write`)return{...r,Icon:k,title:`write`,secondaryText:c||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:Fo(t),language:q(s),isCode:t.status===`completed`}};if(i===`edit`){let e=ko(t,c||s),n=typeof o.firstChangedLine==`number`?String(o.firstChangedLine):U(o.firstChangedLine);return{...r,Icon:A,title:`edit`,secondaryText:c||void 0,details:n?[{label:`Line`,value:n}]:[],showInputPreview:!1,outputContent:e.length>0?{kind:`structured-diff`,blocks:e}:{kind:`plain`,text:G(t),language:`text`,isCode:!1}}}if(i===`agent`){let e=H(a.description)||H(o.description),n=H(a.subagent_type)||H(o.subagentType),i=H(o.agentId),s=H(o.status);return{...r,Icon:D,title:n?`agent · ${n}`:`agent`,secondaryText:[i?`#${i}`:``,e].filter(Boolean).join(` · `),details:[i?{label:`Agent`,value:i}:null,n?{label:`Type`,value:n}:null,s?{label:`Status`,value:s}:null].filter(e=>e!=null),showInputPreview:!1,outputContent:{kind:`plain`,text:U(a.prompt)||G(t),language:`markdown`,isCode:!1}}}if(i===`get_subagent_result`){let e=H(a.agent_id),n=G(t);return{...r,Icon:D,title:`subagent result`,secondaryText:e?`#${e}`:void 0,details:As(n),showInputPreview:!1,outputContent:{kind:`plain`,text:n,language:`markdown`,isCode:!1}}}if(i===`analyze_image`){let e=Array.isArray(a.images)?a.images.map(e=>U(e)).filter(Boolean):[],i=U(a.question);return{...r,Icon:ie,title:`analyze image`,secondaryText:e.map(e=>K(e,n)).join(`, `),details:[...e.map((e,t)=>({label:t===0?`Image`:`Image ${t+1}`,value:K(e,n)})),i?{label:`Question`,value:i}:null].filter(e=>e!=null),showInputPreview:!1,outputContent:{kind:`plain`,text:G(t),language:`markdown`,isCode:!1}}}if(i===`bash`||i===`batch`){let e=Xa(H(a.command),n);return{...r,Icon:Ee,title:i===`batch`?`batch`:`bash`,secondaryText:e?`(${e})`:void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:G(t),language:`text`,isCode:!1}}}return r}function Ms(e){return e.replace(/\s*[((](?:Recommended|推荐)[))]\s*$/i,``).trim()}function Ns(e){let t=new Map;return{text:e.map(e=>{let n=V(e),r=H(n.status)||`pending`,i=H(n.priority),a=H(n.content);t.set(r,(t.get(r)??0)+1);let o=r===`completed`?`x`:r===`in_progress`?`~`:` `,s=i?` _${i}_`:``;return`- [${o}] ${a||`(empty todo)`}${s}`}).join(`
|
|
103
|
+
`)||`No todos captured.`,summary:[...t.entries()].map(([e,t])=>`${t} ${e}`).join(` · `),details:[...t.entries()].map(([e,t])=>({label:e,value:String(t)}))}}function Ps(e){let t=new Map;for(let n of e.matchAll(/"([^"]+)"="([^"]+)"/g)){let e=n[1]?.trim(),r=n[2]?.trim();!e||!r||t.set(e,[Ms(r)])}return t}function Fs(e,t){let n=V(e),r=Array.isArray(n.questions)?n.questions:[],i=Ps(t),a=r.map(e=>{let t=V(e),n=H(t.question);if(!n)return null;let r=Array.isArray(t.options)?t.options.map(e=>{let t=V(e),n=H(t.label),r=Ms(n);return r?{label:r,description:H(t.description)||void 0,recommended:r!==n.trim()||void 0}:null}).filter(e=>e!=null):[];return{header:H(t.header)||void 0,question:n,options:r,answers:i.get(n)??[]}}).filter(e=>e!=null);return a.length===0?{secondaryText:void 0,outputContent:{kind:`plain`,text:t,language:`text`,isCode:!1}}:{secondaryText:`${a.length} question${a.length===1?``:`s`}`,outputContent:{kind:`question-list`,questions:a}}}function Is(e,t,n){let r=Io(e,t,n),i=Ra(e),a=V(t.inputValue),o=V(t.metadataValue),s=Ya(t.inputValue),c=K(s,n),l=G(t);if(i===`bash`){let e=H(a.description),t=H(a.command),i=Xa(t,n),o=l===`(Bash completed with no output)`?`No output captured.`:l;return{...r,Icon:Ee,title:`bash`,secondaryText:e?`${e}${i?` (${i})`:``}`:i?`(${i})`:void 0,details:t?[{label:`Command`,value:i||t}]:[],showInputPreview:!1,outputContent:{kind:`plain`,text:o,language:`text`,isCode:!1}}}if(i===`read`)return{...r,Icon:pe,title:`read`,secondaryText:c||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:Po(t.outputValue),language:q(s),isCode:!0}};if(i===`edit`){let e=jo(t,c||s),n=U(a.old_string),i=U(a.new_string),u=So(c||s,n,i),d=e.length>0?e:u,f=V(o.display);return{...r,Icon:A,title:`edit`,secondaryText:c||void 0,details:[typeof f.additions==`number`?{label:`Additions`,value:String(f.additions)}:null,typeof f.deletions==`number`?{label:`Deletions`,value:String(f.deletions)}:null].filter(e=>e!=null),showInputPreview:!1,outputContent:d.length>0?{kind:`structured-diff`,blocks:d}:{kind:`plain`,text:l,language:`text`,isCode:!1}}}if(i===`write`)return{...r,Icon:k,title:`write`,secondaryText:c||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:Fo(t),language:q(s),isCode:t.status===`completed`}};if(i===`glob`||i===`grep`){let e=H(a.path),t=H(a.pattern),o=[K(e,n),t].filter(Boolean).join(` · `);return{...r,Icon:N,title:i,secondaryText:o||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:l,language:`text`,isCode:!1}}}if(i===`todowrite`){let e=Ns(Array.isArray(a.todos)?a.todos:[]);return{...r,Icon:T,title:`todo`,secondaryText:e.summary||void 0,details:e.details,showInputPreview:!1,outputContent:{kind:`plain`,text:e.text,language:`markdown`,isCode:!1}}}if(i===`agent`){let e=H(a.subagent_type),t=H(a.description);return{...r,Icon:D,title:e?`agent · ${e}`:`agent`,secondaryText:t||void 0,details:e?[{label:`Type`,value:e}]:[],showInputPreview:!1,outputContent:{kind:`plain`,text:l,language:`markdown`,isCode:!1}}}if(i===`askuserquestion`){let e=Fs(t.inputValue,l);return{...r,Icon:ze,title:`ask`,secondaryText:e.secondaryText,details:[],showInputPreview:!1,outputContent:e.outputContent}}if(i===`enterplanmode`||i===`exitplanmode`){let e=U(a.plan);return{...r,Icon:T,title:i===`enterplanmode`?`plan mode`:`plan approved`,secondaryText:e.split(`
|
|
104
|
+
`).find(e=>e.trim())?.replace(/^#+\s*/,``)||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:e||l,language:`markdown`,isCode:!1}}}if(i===`websearch`){let e=H(a.query);return{...r,Icon:N,title:`web search`,secondaryText:e||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:l,language:`markdown`,isCode:!1}}}if(i===`skill`){let e=H(a.skill);return{...r,Icon:Te,title:`skill`,secondaryText:e||void 0,showInputPreview:!1,outputContent:{kind:`plain`,text:l,language:`markdown`,isCode:!1}}}return r}var Ls={claudecode:Uo,opencode:Wo,kimi:Go,codex:Cs,cursor:Ds,pi:js,zcode:Is};function Rs(e,t,n,r){return(Ls[e.toLowerCase()]??Io)(t,n,r)}P.registerLanguage(`bash`,Be),P.registerLanguage(`c`,ot),P.registerLanguage(`cpp`,Ue),P.registerLanguage(`csharp`,st),P.registerLanguage(`css`,at),P.registerLanguage(`docker`,Ve),P.registerLanguage(`go`,qe),P.registerLanguage(`ini`,Je),P.registerLanguage(`java`,Ze),P.registerLanguage(`javascript`,et),P.registerLanguage(`jsx`,Ke),P.registerLanguage(`json`,Ge),P.registerLanguage(`markdown`,it),P.registerLanguage(`markup`,Xe),P.registerLanguage(`python`,We),P.registerLanguage(`rust`,nt),P.registerLanguage(`sql`,$e),P.registerLanguage(`toml`,He),P.registerLanguage(`tsx`,Ye),P.registerLanguage(`typescript`,tt),P.registerLanguage(`yaml`,Qe);function zs(e){return e===`html`||e===`xml`?`markup`:e}function Bs({language:e,text:t}){return(0,R.jsx)(P,{language:zs(e),style:rt,customStyle:{margin:0,padding:`0.75rem`,borderRadius:0,background:`transparent`,fontSize:`0.75rem`,lineHeight:1.55},codeTagProps:{className:`console-mono`},wrapLongLines:!0,children:t})}function Vs(e,t){return`${e}:${t}`}function Hs(e){return/^(Index:|diff\s|===)/.test(e)?`text-[var(--console-text)] bg-[#f3f4f6]`:e.startsWith(`@@`)?`text-[#7c3aed] bg-[#f5f3ff]`:e.startsWith(`+++ `)||e.startsWith(`--- `)?`text-[#1d4ed8] bg-[#eff6ff]`:e.startsWith(`+`)?`text-[#15803d] bg-[#f0fdf4]`:e.startsWith(`-`)?`text-[#b91c1c] bg-[#fef2f2]`:`text-[var(--console-text)]`}function Us({text:e}){let t=e.split(`
|
|
105
|
+
`),n=new Map;return(0,R.jsx)(`pre`,{className:`console-mono max-h-[420px] overflow-auto whitespace-pre rounded-sm border border-[var(--console-border)] bg-[#fafafa] p-3 text-xs leading-relaxed`,children:t.map(e=>{let t=n.get(e)??0;return n.set(e,t+1),(0,R.jsx)(`span`,{className:`block rounded-[2px] px-1 ${Hs(e)}`,children:e||` `},Vs(e,t))})})}function Ws(e){let t=e.text||`No output captured.`;return!e.isCode||e.language===`text`?(0,R.jsx)(`pre`,{className:`console-mono max-h-[420px] overflow-auto whitespace-pre-wrap break-all p-3 text-xs leading-relaxed text-[var(--console-text)]`,children:t}):e.language===`diff`?(0,R.jsx)(Us,{text:t}):(0,R.jsx)(`div`,{className:`max-h-[420px] overflow-auto bg-[#fafafa]`,children:(0,R.jsx)(Bs,{language:e.language,text:t})})}function Gs({sections:e}){return(0,R.jsx)(`div`,{className:`space-y-3`,children:e.map(e=>(0,R.jsxs)(`div`,{className:`overflow-hidden rounded-sm border border-[var(--console-border)] bg-[#fafafa]`,children:[(0,R.jsx)(`div`,{className:`border-b border-[var(--console-border)] bg-[var(--console-surface-muted)] px-3 py-1.5`,children:(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`console-mono rounded-sm border border-[var(--console-border)] bg-white px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-[var(--console-muted)]`,children:e.operation}),(0,R.jsx)(`span`,{className:`console-mono text-[11px] font-semibold text-[var(--console-muted)]`,children:e.label})]})}),Ws(e)]},`${e.operation}:${e.label}:${e.language}`))})}function Ks({items:e,text:t}){return(0,R.jsxs)(`div`,{className:`space-y-3`,children:[(0,R.jsx)(`div`,{className:`grid gap-3 ${e.length>1?`sm:grid-cols-2`:``}`,children:e.map((e,t)=>(0,R.jsxs)(`figure`,{className:`overflow-hidden rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)]`,children:[(0,R.jsx)(`img`,{src:e.src,alt:e.alt,className:`max-h-[520px] w-full object-contain`,loading:`lazy`}),e.caption?(0,R.jsx)(`figcaption`,{className:`console-mono border-t border-[var(--console-border)] px-3 py-2 text-[11px] text-[var(--console-muted)]`,children:e.caption}):null]},`${e.src.slice(0,80)}:${t}`))}),t?(0,R.jsx)(`pre`,{className:`console-mono whitespace-pre-wrap break-words rounded-sm border border-[var(--console-border)] bg-[#fafafa] p-3 text-xs leading-relaxed text-[var(--console-text)]`,children:t}):null]})}function qs(e){return e==null||e===``?`—`:typeof e==`boolean`?e?`Yes`:`No`:typeof e==`string`||typeof e==`number`||typeof e==`bigint`?String(e):null}function Js({value:e,depth:t=0}){let n=qs(e);return n==null?Array.isArray(e)?t>=2?(0,R.jsxs)(`span`,{children:[e.length,` items`]}):(0,R.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:e.map((e,n)=>(0,R.jsx)(`span`,{className:`rounded-sm border border-[var(--console-border)] bg-white px-1.5 py-0.5`,children:(0,R.jsx)(Js,{value:e,depth:t+1})},n))}):typeof e==`object`?t>=2?(0,R.jsxs)(`span`,{children:[Object.keys(e).length,` fields`]}):(0,R.jsx)(`dl`,{className:`space-y-1.5`,children:Object.entries(e).map(([e,n])=>(0,R.jsxs)(`div`,{className:`grid grid-cols-[minmax(80px,auto)_1fr] gap-2`,children:[(0,R.jsx)(`dt`,{className:`text-[var(--console-muted)]`,children:e}),(0,R.jsx)(`dd`,{className:`min-w-0`,children:(0,R.jsx)(Js,{value:n,depth:t+1})})]},e))}):(0,R.jsx)(`span`,{children:String(e)}):(0,R.jsx)(`span`,{className:`whitespace-pre-wrap break-words`,children:n})}function Ys({items:e}){return(0,R.jsx)(`dl`,{className:`overflow-hidden rounded-sm border border-[var(--console-border)] bg-[#fafafa]`,children:e.map(e=>(0,R.jsxs)(`div`,{className:`grid gap-1 border-b border-[var(--console-border)] px-3 py-2.5 last:border-b-0 sm:grid-cols-[130px_1fr] sm:gap-3`,children:[(0,R.jsx)(`dt`,{className:`console-mono text-[10px] font-semibold uppercase tracking-wide text-[var(--console-muted)]`,children:e.label}),(0,R.jsx)(`dd`,{className:`console-mono min-w-0 text-xs leading-relaxed text-[var(--console-text)]`,children:(0,R.jsx)(Js,{value:e.value})})]},e.label))})}function Xs({questions:e}){return(0,R.jsx)(`div`,{className:`space-y-3`,children:e.map(e=>(0,R.jsxs)(`div`,{className:`overflow-hidden rounded-sm border border-[var(--console-border)] bg-[#fafafa]`,children:[(0,R.jsxs)(`div`,{className:`border-b border-[var(--console-border)] bg-[var(--console-surface-muted)] px-3 py-2`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[e.header?(0,R.jsx)(`span`,{className:`console-mono rounded-sm border border-[var(--console-border)] bg-white px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-[var(--console-muted)]`,children:e.header}):null,e.answers.length>0?(0,R.jsx)(`span`,{className:`console-mono text-[11px] font-semibold text-[var(--console-success)]`,children:`Answered`}):(0,R.jsx)(`span`,{className:`console-mono text-[11px] font-semibold text-[var(--console-muted)]`,children:`Pending`})]}),(0,R.jsx)(`p`,{className:`mt-2 text-sm leading-relaxed text-[var(--console-text)]`,children:e.question})]}),(0,R.jsx)(`div`,{className:`space-y-2 p-3`,children:e.options.map(t=>{let n=e.answers.includes(t.label);return(0,R.jsxs)(`div`,{className:`rounded-sm border px-3 py-2 ${n?`border-[var(--console-success-border)] bg-[var(--console-success-bg)]`:`border-[var(--console-border)] bg-white`}`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`console-mono text-xs font-semibold ${n?`text-[var(--console-success)]`:`text-[var(--console-text)]`}`,children:t.label}),t.recommended?(0,R.jsx)(`span`,{className:`console-mono rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-1.5 py-0.5 text-[10px] text-[var(--console-muted)]`,children:`Recommended`}):null,n?(0,R.jsx)(`span`,{className:`console-mono rounded-sm border border-[var(--console-success-border)] bg-white px-1.5 py-0.5 text-[10px] text-[var(--console-success)]`,children:`Selected`}):null]}),t.description?(0,R.jsx)(`p`,{className:`mt-1 text-xs leading-relaxed text-[var(--console-muted)]`,children:t.description}):null]},`${e.question}:${t.label}`)})})]},`${e.header??`question`}:${e.question}`))})}function Zs(e){return`${e.label}:${e.lines.map(e=>`${e.type}:${e.text}`).join(`
|
|
106
|
+
`)}`}function Qs(e){return e===`add`?`text-[#15803d] bg-[#f0fdf4]`:e===`remove`?`text-[#b91c1c] bg-[#fef2f2]`:`text-[var(--console-text)]`}function $s({blocks:e}){return(0,R.jsx)(`div`,{className:`space-y-3`,children:e.map(e=>{let t=new Map;return(0,R.jsxs)(`div`,{className:`overflow-hidden rounded-sm border border-[var(--console-border)] bg-[#fafafa]`,children:[(0,R.jsx)(`div`,{className:`border-b border-[var(--console-border)] bg-[var(--console-surface-muted)] px-3 py-1.5`,children:(0,R.jsx)(`span`,{className:`console-mono text-[11px] font-semibold text-[var(--console-muted)]`,children:e.label})}),(0,R.jsx)(`pre`,{className:`console-mono max-h-[280px] overflow-auto whitespace-pre p-3 text-xs leading-relaxed`,children:e.lines.map(e=>{let n=`${e.type}:${e.text}`,r=t.get(n)??0;return t.set(n,r+1),(0,R.jsxs)(`span`,{className:`block rounded-[2px] px-1 ${Qs(e.type)}`,children:[e.type===`add`?`+`:e.type===`remove`?`-`:` `,e.text||` `]},`${n}:${r}`)})})]},Zs(e))})})}var ec={completed:{Icon:re,label:`Done`,className:`text-[var(--console-success)]`},error:{Icon:_e,label:`Failed`,className:`text-[var(--console-error)]`},in_progress:{Icon:S,label:`In progress`,className:`text-[var(--console-warning)]`},pending:{Icon:O,label:`Pending`,className:`text-[var(--console-muted)]`}};function tc({items:e}){return(0,R.jsx)(`ol`,{className:`overflow-hidden rounded-sm border border-[var(--console-border)] bg-white`,children:e.map((e,t)=>{let n=ec[e.status];return(0,R.jsxs)(`li`,{className:`flex gap-3 border-b border-[var(--console-border)] px-3 py-2.5 last:border-b-0`,children:[(0,R.jsx)(n.Icon,{className:`mt-0.5 size-3.5 shrink-0 ${n.className}`}),(0,R.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1`,children:[(0,R.jsx)(`span`,{className:`text-xs font-medium leading-relaxed text-[var(--console-text)]`,children:e.label}),(0,R.jsx)(`span`,{className:`console-mono text-[10px] uppercase tracking-wide ${n.className}`,children:n.label})]}),e.detail?(0,R.jsx)(`p`,{className:`mt-1 text-xs leading-relaxed text-[var(--console-muted)]`,children:e.detail}):null]})]},`${e.label}:${t}`)})})}function nc({outputContent:e}){if(e.kind===`structured-diff`)return(0,R.jsx)($s,{blocks:e.blocks});if(e.kind===`file-sections`)return(0,R.jsx)(Gs,{sections:e.sections});if(e.kind===`question-list`)return(0,R.jsx)(Xs,{questions:e.questions});if(e.kind===`task-list`)return(0,R.jsx)(tc,{items:e.items});if(e.kind===`media`)return(0,R.jsx)(Ks,{items:e.items,text:e.text});if(e.kind===`property-list`)return(0,R.jsx)(Ys,{items:e.items});let t=e.text||`No output captured.`;return!e.isCode||e.language===`text`?(0,R.jsx)(`pre`,{className:`console-mono max-h-[420px] overflow-auto whitespace-pre-wrap break-words rounded-sm border border-[var(--console-border)] bg-[#fafafa] p-3 text-xs leading-relaxed text-[var(--console-text)]`,children:t}):e.language===`diff`?(0,R.jsx)(Us,{text:t}):(0,R.jsx)(`div`,{className:`max-h-[420px] overflow-auto rounded-sm border border-[var(--console-border)] bg-[#fafafa]`,children:(0,R.jsx)(Bs,{language:e.language,text:t})})}var rc=`<turn_aborted>
|
|
107
|
+
The user interrupted the previous turn on purpose. Any running unified exec processes were terminated. If any tools/commands were aborted, they may have partially executed; verify current state before retrying.
|
|
108
|
+
</turn_aborted>`;function ic(e){return e.replace(/\r\n/g,`
|
|
109
|
+
`).trim()}function ac(e,t){if(t.toLowerCase()!==`codex`||e.role!==`user`||e.parts.length!==1)return!1;let[n]=e.parts;return!n||n.type!==`text`||typeof n.text!=`string`?!1:ic(n.text)===ic(rc)}function oc(e){if(typeof e==`string`)return e.trim();if(Array.isArray(e))return e.map(e=>oc(e)).filter(Boolean).join(`
|
|
110
|
+
|
|
111
|
+
`).trim();if(e&&typeof e==`object`){let t=e,n=oc(t.text);if(n)return n;let r=oc(t.content);if(r)return r}return``}function sc(e){let t=e.approval_status===`fail`?`fail`:`success`,n=oc(t===`fail`?e.output:e.input);return{title:`plan`,secondaryText:void 0,approvalStatus:t,expandable:!!n,contentLabel:t===`fail`?`Rejected`:`Plan`,contentMarkdown:n}}var cc=48,lc=1;function uc(e){return`session-message-${e}`}function dc(e,t){return`${uc(e)}-block-${t}`}function fc(e){let t=e.replace(/<!--[\s\S]*?-->/g,` `).replace(/(^|\s)#{1,6}\s+/g,`$1`).replace(/(\*\*|__)(.*?)\1/g,`$2`).replace(/([*_])(.*?)\1/g,`$2`).replace(/`([^`]+)`/g,`$1`).replace(/\s+/g,` `).trim(),n=Array.from(t);return n.length<=cc?t:`${n.slice(0,cc).join(``)}…`}function pc(e){return fc(e.map(e=>ua(e.text)).filter(Boolean).join(` `))}function mc(e){let t=ro(e);return t===`read`?`tool-read`:t?`tool-write`:`tool-execute`}var hc={"tool-read":`Read`,"tool-write":`Write`,"tool-execute":`Execute`};function gc(e,t){let n=[];for(let{msg:r,blocks:i,index:a}of e){if(r.role===`user`){let e=uc(a),t=pc(i.flatMap(e=>e.parts));n.push({id:e,kind:`user`,anchorId:e,messageIndex:a,tooltip:`User · ${t||`Message`}`});continue}i.forEach((e,r)=>{if(e.type===`tool`){e.parts.forEach(e=>{let r=t.get(e);if(!r)return;let i=mc(e);n.push({id:r,kind:i,anchorId:r,messageIndex:a,tooltip:`${hc[i]} · ${La(e)}`})});return}let i=dc(a,r),o=pc(e.parts);n.push({id:i,kind:`agent`,anchorId:i,messageIndex:a,tooltip:`Agent · ${o||`Response`}`})})}return n}function _c(e,t){if(e.length===0)return null;let n=e.toSorted((e,t)=>e.top-t.top),r=n[0].index;for(let e of n){if(e.top>t)break;r=e.index}return r}function vc(e,t,n,r){return r<=0?null:e<=lc?0:e>=Math.max(0,n-t)-lc?r-1:null}function yc(e,t,n,r){if(r<=0||n<=0)return null;let i=Math.min(1,Math.max(0,(e-t)/n));return Math.min(r-1,Math.floor(i*r))}var bc={completed:{label:`Success`,className:`border-[var(--console-success-border)] bg-[var(--console-success-bg)] text-[var(--console-success)]`,icon:ue},error:{label:`Failed`,className:`border-[var(--console-error-border)] bg-[var(--console-error-bg)] text-[var(--console-error)]`,icon:se},running:{label:`Running`,className:`border-[var(--console-warning-border)] bg-[var(--console-warning-bg)] text-[var(--console-warning)]`,icon:j}};function xc(e){let t=e?.trim();if(!t)return null;let n=Array.from(new Set((t.match(/"[^"]+"|\S+/g)??[]).map(e=>e.replace(/^"|"$/g,``).trim()).filter(Boolean).filter(e=>!/^OR$/i.test(e))));return n.length===0?null:RegExp(`(${n.map(wa).join(`|`)})`,`gi`)}function Sc(e,t){let n=xc(t);return n?e.split(n).map((e,t)=>e.match(n)?(0,R.jsx)(`mark`,{children:e},`${e}-${t}`):(0,R.jsx)(`span`,{children:e},`${e}-${t}`)):e}function Cc({text:e,highlightQuery:t}){return(0,R.jsx)(Zi,{text:e,highlightQuery:t})}function wc({messageIndex:e,msg:t,blocks:n,toolAnchorIds:r,formatTokens:i,sessionAgentKey:a,agent:o,baseDirectory:s,highlightQuery:c}){let l=t.role===`user`,u=ac(t,a),d=()=>{let e=o?.displayName??a,t=o?.icon;return(0,R.jsx)(R.Fragment,{children:t?(0,R.jsx)(`img`,{src:t,alt:e,className:`size-4 rounded-sm object-cover`}):(0,R.jsx)(D,{className:`size-4 text-[var(--console-muted)]`})})},f=t.mode?t.mode.toUpperCase():null,p=t.model||null,m=Ha(t),h=Lr(t.time_created);return(0,R.jsx)(`article`,{id:l?uc(e):void 0,"data-session-timeline-anchor":l?uc(e):void 0,className:`w-full scroll-mt-20 border-l-2 border-[var(--console-thread)] pl-4 pr-3 md:pr-5`,children:(0,R.jsxs)(`div`,{className:`flex gap-4`,children:[(0,R.jsx)(`div`,{className:`shrink-0 pt-1`,children:(0,R.jsx)(`div`,{className:`flex size-8 items-center justify-center rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)]`,children:l?(0,R.jsx)(ve,{className:`size-4 text-[var(--console-muted)]`}):d()})}),(0,R.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-3`,children:[(0,R.jsxs)(`div`,{className:`flex items-baseline gap-3`,children:[(0,R.jsx)(`span`,{className:`console-mono text-sm font-bold tracking-wide text-[var(--console-text)]`,children:m}),(0,R.jsx)(`time`,{className:`console-mono text-xs text-[var(--console-muted)]`,children:h}),f&&(0,R.jsx)(`span`,{className:`console-mono rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-1.5 py-0.5 text-[10px] text-[var(--console-muted)]`,children:f}),p&&(0,R.jsx)(`span`,{className:`console-mono rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-1.5 py-0.5 text-[10px] text-[var(--console-muted)]`,children:p})]}),u?(0,R.jsx)(Tc,{}):n.map((t,n)=>{let i=dc(e,n);return t.type===`reasoning`?(0,R.jsx)(Ec,{anchorId:i,parts:t.parts,highlightQuery:c},n):t.type===`plan`?(0,R.jsx)(Oc,{anchorId:i,parts:t.parts,highlightQuery:c},n):t.type===`tool`?(0,R.jsx)(Dc,{parts:t.parts,toolAnchorIds:r,sessionAgentKey:a,baseDirectory:s,highlightQuery:c},n):(0,R.jsx)(`div`,{id:i,"data-session-timeline-anchor":i,className:`scroll-mt-20 rounded-sm border border-[var(--console-border)] bg-white p-4 shadow-[0_1px_2px_rgba(15,23,42,0.04)]`,children:(0,R.jsx)(`div`,{className:`console-markdown text-sm leading-relaxed text-[var(--console-text)]`,children:t.parts.map((e,t)=>(0,R.jsx)(Cc,{text:ua(e.text),highlightQuery:c},t))})},n)}),!l&&(t.tokens||t.cost)&&(0,R.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[t.tokens?.input?(0,R.jsxs)(`span`,{className:`console-mono rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-2 py-1 text-[11px] text-[var(--console-muted)]`,children:[`INPUT `,i(t.tokens.input)]}):null,t.tokens?.output?(0,R.jsxs)(`span`,{className:`console-mono rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-2 py-1 text-[11px] text-[var(--console-muted)]`,children:[`OUTPUT `,i(t.tokens.output)]}):null,t.tokens?.reasoning?(0,R.jsxs)(`span`,{className:`console-mono rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-2 py-1 text-[11px] text-[var(--console-muted)]`,children:[`REASONING `,i(t.tokens.reasoning)]}):null,t.cost?(0,R.jsxs)(`span`,{className:`console-mono rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-2 py-1 text-[11px] text-[var(--console-muted)]`,children:[t.cost_source===`estimated`?`EST COST`:`COST`,` $`,t.cost.toFixed(4)]}):null]})]})]})})}function Tc(){return(0,R.jsx)(`div`,{className:`space-y-2`,children:(0,R.jsx)(`div`,{className:`flex flex-wrap items-start gap-2`,children:(0,R.jsx)(`div`,{className:`w-full rounded-sm border border-[var(--console-border-strong)] bg-white px-3 py-2 text-left shadow-[2px_2px_0_0_rgba(15,23,42,0.05)] md:w-[560px]`,children:(0,R.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,R.jsx)(Ie,{className:`mt-0.5 size-3.5 shrink-0 text-[var(--console-accent)]`}),(0,R.jsx)(`span`,{className:`min-w-0 flex-1`,children:(0,R.jsx)(`span`,{className:`console-mono block text-xs font-semibold text-[var(--console-text)]`,children:`abort`})})]})})})})}function Ec({anchorId:e,parts:t,highlightQuery:n}){let[r,i]=(0,F.useState)(!1),a=t.map(e=>ua(e.text)).filter(Boolean).join(`
|
|
112
|
+
|
|
113
|
+
`);return(0,R.jsxs)(`div`,{id:e,"data-session-timeline-anchor":e,className:`scroll-mt-20 overflow-hidden rounded-sm border border-[var(--console-thinking-border)] bg-[var(--console-thinking-bg)]`,children:[(0,R.jsxs)(`div`,{className:`flex cursor-pointer items-center justify-between bg-[var(--console-surface-muted)] px-3 py-2`,onClick:()=>i(!r),children:[(0,R.jsxs)(`span`,{className:`console-mono flex items-center gap-2 text-xs font-medium text-[var(--console-muted)]`,children:[(0,R.jsx)(w,{className:`size-3.5`}),`Thinking`]}),(0,R.jsx)(`span`,{className:`text-[var(--console-muted)]`,children:r?(0,R.jsx)(E,{className:`w-4 h-4`}):(0,R.jsx)(de,{className:`w-4 h-4`})})]}),r&&(0,R.jsx)(`div`,{className:`border-t border-dashed border-[var(--console-thinking-border)] px-4 py-3`,children:(0,R.jsx)(`div`,{className:`console-mono whitespace-pre-wrap text-xs leading-relaxed text-[var(--console-muted)]`,children:Sc(a,n)})})]})}function Dc({parts:e,toolAnchorIds:t,sessionAgentKey:n,baseDirectory:r,highlightQuery:i}){return(0,R.jsx)(`div`,{className:`space-y-2`,children:(0,R.jsx)(`div`,{className:`space-y-2`,children:e.map((e,a)=>(0,R.jsx)(Ac,{tool:e,anchorId:t.get(e),sessionAgentKey:n,baseDirectory:r,highlightQuery:i},a))})})}function Oc({anchorId:e,parts:t,highlightQuery:n}){return(0,R.jsx)(`div`,{id:e,"data-session-timeline-anchor":e,className:`scroll-mt-20 space-y-2`,children:t.map((e,t)=>(0,R.jsx)(kc,{part:e,highlightQuery:n},t))})}function kc({part:e,highlightQuery:t}){let[n,r]=(0,F.useState)(!1),i=sc(e),a=i.approvalStatus===`fail`?bc.error:bc.completed,o=a.icon;return(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-start gap-2`,children:[(0,R.jsx)(`div`,{className:`w-full md:w-[560px] rounded-sm border border-[var(--console-border-strong)] bg-white px-3 py-2 text-left shadow-[2px_2px_0_0_rgba(15,23,42,0.05)] ${i.expandable?`transition-colors hover:bg-[var(--console-surface-muted)]`:``}`,children:i.expandable?(0,R.jsxs)(`button`,{type:`button`,className:`flex w-full items-start gap-2 text-left`,onClick:()=>r(!n),children:[(0,R.jsx)(Ae,{className:`mt-0.5 size-3.5 shrink-0 text-[var(--console-accent)]`}),(0,R.jsx)(`span`,{className:`min-w-0 flex-1`,children:(0,R.jsx)(`span`,{className:`console-mono block text-xs font-semibold text-[var(--console-text)]`,children:i.title})}),(0,R.jsx)(`span`,{className:`mt-0.5 shrink-0 text-[var(--console-muted)]`,children:n?(0,R.jsx)(E,{className:`size-3.5`}):(0,R.jsx)(de,{className:`size-3.5`})})]}):(0,R.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,R.jsx)(Ae,{className:`mt-0.5 size-3.5 shrink-0 text-[var(--console-accent)]`}),(0,R.jsx)(`span`,{className:`min-w-0 flex-1`,children:(0,R.jsx)(`span`,{className:`console-mono block text-xs font-semibold text-[var(--console-text)]`,children:i.title})})]})}),(0,R.jsxs)(`span`,{className:`console-mono inline-flex items-center gap-1 rounded-sm border px-2 py-0.5 text-[10px] font-bold uppercase tracking-wider ${a.className}`,children:[(0,R.jsx)(o,{className:`size-3`}),a.label]})]}),i.expandable&&n?(0,R.jsxs)(`div`,{className:`overflow-hidden rounded-sm border border-[var(--console-border)] bg-white shadow-[0_1px_2px_rgba(15,23,42,0.04)]`,children:[(0,R.jsx)(`div`,{className:`border-b border-[var(--console-border)] bg-[var(--console-surface-muted)] px-3 py-1.5`,children:(0,R.jsx)(`span`,{className:`console-mono text-xs text-[var(--console-muted)]`,children:i.contentLabel})}),(0,R.jsx)(`div`,{className:`p-4`,children:(0,R.jsx)(`div`,{className:`console-markdown text-sm leading-relaxed text-[var(--console-text)]`,children:(0,R.jsx)(Cc,{text:i.contentMarkdown,highlightQuery:t})})})]}):null]})}function Ac({tool:e,anchorId:t,sessionAgentKey:n,baseDirectory:r,highlightQuery:i}){let[a,o]=(0,F.useState)(!1),s=Va(e),c=Rs(n,e,s,r),l=Xa(s.inputText||`{}`,r),u=bc[s.status],d=u.icon,f=c.Icon;return(0,R.jsxs)(`div`,{id:t,"data-session-timeline-anchor":t,className:`scroll-mt-20 space-y-2`,children:[(0,R.jsx)(`div`,{className:`flex flex-wrap items-start gap-2`,children:(0,R.jsx)(`div`,{className:`w-full max-w-[720px] rounded-sm border border-[var(--console-border-strong)] bg-white px-3 py-2.5 text-left shadow-[2px_2px_0_0_rgba(15,23,42,0.05)] ${c.expandable?`transition-colors hover:bg-[var(--console-surface-muted)]`:``}`,children:c.expandable?(0,R.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-2.5 text-left active:scale-[0.995] motion-reduce:transform-none`,onClick:()=>o(!a),"aria-expanded":a,children:[(0,R.jsx)(`span`,{className:`flex size-7 shrink-0 items-center justify-center rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)]`,children:(0,R.jsx)(f,{className:`size-3.5 text-[var(--console-accent)]`})}),(0,R.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,R.jsx)(`span`,{className:`console-mono block text-xs font-semibold text-[var(--console-text)]`,children:c.title}),c.secondaryText?(0,R.jsx)(`span`,{className:`console-mono mt-0.5 block whitespace-pre-wrap break-words text-xs leading-relaxed text-[var(--console-muted)]`,children:Sc(c.secondaryText,i)}):null]}),(0,R.jsxs)(`span`,{className:`console-mono inline-flex shrink-0 items-center gap-1 rounded-sm border px-1.5 py-0.5 text-[9px] font-bold uppercase tracking-wider ${u.className}`,children:[(0,R.jsx)(d,{className:`size-2.5 ${s.status===`running`?`animate-spin motion-reduce:animate-none`:``}`}),u.label]}),(0,R.jsx)(`span`,{className:`mt-0.5 shrink-0 text-[var(--console-muted)]`,children:a?(0,R.jsx)(E,{className:`size-3.5`}):(0,R.jsx)(de,{className:`size-3.5`})})]}):(0,R.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,R.jsx)(`span`,{className:`flex size-7 shrink-0 items-center justify-center rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)]`,children:(0,R.jsx)(f,{className:`size-3.5 text-[var(--console-accent)]`})}),(0,R.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,R.jsx)(`span`,{className:`console-mono block text-xs font-semibold text-[var(--console-text)]`,children:c.title}),c.secondaryText?(0,R.jsx)(`span`,{className:`console-mono mt-0.5 block whitespace-pre-wrap break-words text-xs leading-relaxed text-[var(--console-muted)]`,children:Sc(c.secondaryText,i)}):null]}),(0,R.jsxs)(`span`,{className:`console-mono inline-flex shrink-0 items-center gap-1 rounded-sm border px-1.5 py-0.5 text-[9px] font-bold uppercase tracking-wider ${u.className}`,children:[(0,R.jsx)(d,{className:`size-2.5`}),u.label]})]})})}),c.expandable&&a?(0,R.jsxs)(`div`,{className:`overflow-hidden rounded-sm border border-[var(--console-border)] bg-white shadow-[0_1px_2px_rgba(15,23,42,0.04)]`,children:[(0,R.jsx)(`div`,{className:`border-b border-[var(--console-border)] bg-[var(--console-surface-muted)] px-3 py-1.5`,children:(0,R.jsx)(`span`,{className:`console-mono text-xs text-[var(--console-muted)]`,children:c.contentLabel??`Output`})}),(0,R.jsxs)(`div`,{className:`space-y-3 p-3`,children:[c.details.length>0?(0,R.jsx)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-[#fafafa] px-3 py-2`,children:(0,R.jsx)(`div`,{className:`space-y-2`,children:c.details.map(e=>(0,R.jsxs)(`div`,{className:`flex flex-col gap-1 md:flex-row md:items-start md:gap-3`,children:[(0,R.jsx)(`span`,{className:`console-mono shrink-0 text-[11px] font-semibold uppercase tracking-wide text-[var(--console-muted)] md:w-24`,children:e.label}),(0,R.jsx)(`span`,{className:`console-mono whitespace-pre-wrap break-words text-xs leading-relaxed text-[var(--console-text)]`,children:Sc(e.value,i)})]},`${e.label}:${e.value}`))})}):null,(0,R.jsx)(nc,{outputContent:c.outputContent})]}),c.showInputPreview?(0,R.jsxs)(`div`,{className:`border-t border-[var(--console-border)] bg-[#fafafa] px-3 py-2`,children:[(0,R.jsx)(`span`,{className:`console-mono text-[11px] text-[var(--console-muted)]`,children:`Input Preview`}),(0,R.jsx)(`pre`,{className:`console-mono mt-1 max-h-[200px] overflow-x-auto whitespace-pre-wrap break-words text-xs leading-relaxed text-[var(--console-muted)]`,children:Sc(l,i)})]}):null]}):null]})}var jc=32,Mc=280,Nc=6;function Pc(e){return e===window}function Fc(e,t){let n=[],r=0;for(let i=0;i<e;i+=1){let a=t[i]??Mc,o=r,s=o+a;n.push({start:o,end:s}),r=s+(i===e-1?0:jc)}return{items:n,totalSize:r}}function Ic(e,t){let n=0,r=e.length;for(;n<r;){let i=Math.floor((n+r)/2),a=e[i];a&&a.end<t?n=i+1:r=i}return n}function Lc(e,t){let n=0,r=e.length;for(;n<r;){let i=Math.floor((n+r)/2),a=e[i];a&&a.start<=t?n=i+1:r=i}return n}function Rc(e){let t=e.parentElement;for(;t;){let{overflowY:e}=window.getComputedStyle(t);if(e===`auto`||e===`scroll`||e===`overlay`)return t;t=t.parentElement}return window}function zc(e){return Pc(e)?window.scrollY:e.scrollTop}function Bc(e){return Pc(e)?window.innerHeight||900:e.clientHeight}function Vc(e,t){if(Pc(t))return e.getBoundingClientRect().top+window.scrollY;let n=t.getBoundingClientRect(),r=e.getBoundingClientRect();return t.scrollTop+r.top-n.top}function Hc(e,t){if(Pc(e)){window.scrollTo({top:t,behavior:`auto`});return}e.scrollTo({top:t,behavior:`auto`})}function Uc({messages:e,toolAnchorIds:t,sessionAgentKey:n,agent:r,baseDirectory:i,highlightQuery:a,apiRef:o}){let s=e.length>80;return(0,F.useEffect)(()=>{s||(o.current=null)},[o,s]),s?(0,R.jsx)(Wc,{messages:e,toolAnchorIds:t,sessionAgentKey:n,agent:r,baseDirectory:i,highlightQuery:a,apiRef:o}):(0,R.jsx)(`div`,{className:`flex min-w-0 flex-col gap-8`,children:e.map(({msg:e,blocks:o,index:s})=>(0,R.jsx)(wc,{messageIndex:s,msg:e,blocks:o,toolAnchorIds:t,formatTokens:Ir,sessionAgentKey:n,agent:r,baseDirectory:i,highlightQuery:a},`${e.id}:${s}`))})}function Wc({messages:e,toolAnchorIds:t,sessionAgentKey:n,agent:r,baseDirectory:i,highlightQuery:a,apiRef:o}){let s=(0,F.useRef)(null),c=(0,F.useRef)(null),[l,u]=(0,F.useState)([]),[d,f]=(0,F.useState)(null),[p,m]=(0,F.useState)(()=>({scrollTop:0,height:900,listTop:0})),h=(0,F.useRef)(p);(0,F.useEffect)(()=>{h.current=p},[p]);let g=(0,F.useCallback)(()=>{if(typeof window>`u`)return null;let e=s.current,t=e?Rc(e):window;c.current=t;let n=e?Vc(e,t):0,r={scrollTop:zc(t),height:Bc(t),listTop:n},i=h.current;return Math.abs(i.scrollTop-r.scrollTop)<1&&Math.abs(i.height-r.height)<1&&Math.abs(i.listTop-r.listTop)<1?t:(h.current=r,m(r),t)},[]);(0,F.useEffect)(()=>{let e=0,t=null,n=null,r=e=>{t!==e&&(t&&(t.removeEventListener(`scroll`,a),n&&!Pc(t)&&n.unobserve(t)),t=e,t.addEventListener(`scroll`,a,{passive:!0}),n&&!Pc(t)&&n.observe(t))},i=()=>{let e=g();e&&r(e)},a=()=>{e||=requestAnimationFrame(()=>{e=0,i()})};window.addEventListener(`resize`,a),typeof ResizeObserver<`u`&&(n=new ResizeObserver(a),s.current&&n.observe(s.current),document.body&&n.observe(document.body));let o=new MutationObserver(a),c=s.current?.parentElement;for(;c;)o.observe(c,{attributes:!0,attributeFilter:[`class`,`style`]}),c=c.parentElement;return document.fonts?.addEventListener(`loadingdone`,a),i(),()=>{e&&cancelAnimationFrame(e),n?.disconnect(),o.disconnect(),document.fonts?.removeEventListener(`loadingdone`,a),t?.removeEventListener(`scroll`,a),window.removeEventListener(`resize`,a)}},[g]),(0,F.useEffect)(()=>{u([]),f(null),g()},[e,g]);let _=(0,F.useMemo)(()=>Fc(e.length,l),[l,e.length]),v=(0,F.useCallback)((e,t)=>{let n=Math.ceil(t);!Number.isFinite(n)||n<=0||u(t=>{let r=t[e];if(r!=null&&Math.abs(r-n)<=1)return t;let i=[...t];return i[e]=n,i})},[]),y=(0,F.useMemo)(()=>{if(e.length===0)return[];let t=Math.max(0,p.scrollTop-p.listTop),n=t+p.height,r=Math.max(0,Ic(_.items,t)-Nc),i=Math.min(e.length,Lc(_.items,n)+Nc),a=[];for(let e=r;e<i;e+=1){let t=_.items[e];t&&a.push({index:e,start:t.start})}if(d!=null&&d>=0&&d<e.length){let e=_.items[d];e&&!a.some(e=>e.index===d)&&(a.push({index:d,start:e.start}),a.sort((e,t)=>e.start-t.start))}return a},[d,_,e.length,p]),b=(0,F.useCallback)(e=>{if(typeof window>`u`)return;let t=_.items[e];if(!t)return;f(e);let n=s.current,r=n?Rc(n):c.current??window;c.current=r;let i=n?Vc(n,r):0,a=Math.max(0,i+t.start-24);Hc(r,a);let o={scrollTop:a,height:Bc(r),listTop:i};h.current=o,m(o)},[_.items]);return(0,F.useEffect)(()=>(o.current={scrollToIndex:b},()=>{o.current?.scrollToIndex===b&&(o.current=null)}),[o,b]),(0,R.jsx)(`div`,{ref:s,className:`relative min-w-0`,style:{height:Math.max(1,_.totalSize)},children:y.map(({index:o,start:s})=>{let c=e[o];return c?(0,R.jsx)(Gc,{index:o,top:s,onMeasure:v,children:(0,R.jsx)(wc,{messageIndex:c.index,msg:c.msg,blocks:c.blocks,toolAnchorIds:t,formatTokens:Ir,sessionAgentKey:n,agent:r,baseDirectory:i,highlightQuery:a})},`${c.msg.id}:${c.index}`):null})})}function Gc({index:e,top:t,onMeasure:n,children:r}){let i=(0,F.useRef)(null);return(0,F.useLayoutEffect)(()=>{let t=i.current;if(!t)return;let r=()=>n(e,t.getBoundingClientRect().height);if(r(),typeof ResizeObserver>`u`)return;let a=new ResizeObserver(r);return a.observe(t),()=>a.disconnect()},[e,n]),(0,R.jsx)(`div`,{ref:i,className:`absolute left-0 top-0 w-full`,style:{transform:`translateY(${t}px)`},children:r})}function Kc(e,t){return t===0||e-t>=15.666666666666668}function qc(e,t,n){return!e&&t<=.12?n+1:0}function Jc(e,t){return e?0:t+1}function Yc(e,t,n){return e>=2&&(t>=8||n>=300)}function Xc(e,t){return!e||Math.abs(e.receiptWidth-t.receiptWidth)>.5||Math.abs(e.receiptHeight-t.receiptHeight)>.5||Math.abs(e.startX-t.startX)>.5||Math.abs(e.startY-t.startY)>.5}var X=18,Z=42,Zc=5,Q=270,Qc=500,$c=2;function el(e){return Math.round(e??0).toLocaleString(`en-US`)}function tl(e){return`$${(e??0).toFixed(4)}`}function nl(e){return new Date(e).toLocaleString(`en-US`,{month:`short`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`})}function rl(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function il(e){let t=e||1;return()=>(t=Math.imul(t^t>>>15,1|t),t^=t+Math.imul(t^t>>>7,61|t),((t^t>>>14)>>>0)/4294967296)}function al(e){let t=[{label:`User`,count:e.counts.user},{label:`Agent Responses`,count:e.counts.agent_message},{label:`Thinking`,count:e.counts.thinking},{label:`Plans`,count:e.counts.plan},{label:`Tools`,count:e.counts.tools_all}].filter(e=>e.count>0),n=e.tools.map(e=>({label:e.label,count:e.count})),r=Math.max(0,9-t.length),i=n.length>r?n.slice(0,Math.max(0,r-1)):n,a=n.slice(i.length).reduce((e,t)=>e+t.count,0);return a>0&&i.push({label:`Other tools`,count:a}),[...t,...i].slice(0,9)}function ol(e){return!e||e.length===0?`SESSION ACTIVITY RECEIPT`:e.map(e=>_n[e]).join(` / `)}function sl(e,t){let n=e.slug?.split(`/`)[0]||`codesesh`;return{id:e.id,title:B(e)||`Untitled session`,agent:n,updatedAt:e.time_updated??e.time_created,tags:e.smart_tags,stats:e.stats,items:al(t)}}function cl(e,t,n,r,i){let a=t.toUpperCase(),o=n.toUpperCase();e.fillText(a,18,r),e.fillText(o,i-18-e.measureText(o).width,r)}function ll(e,t,n){if(e.measureText(t).width<=n)return t;let r=t;for(;r.length>1&&e.measureText(`${r}...`).width>n;)r=r.slice(0,-1);return`${r}...`}function ul(e,t,n,r){let i=t.toUpperCase().split(/\s+/).filter(Boolean),a=[],o=``;for(let t of i){let i=o?`${o} ${t}`:t;if(e.measureText(i).width<=n){o=i;continue}if(o?(a.push(o),o=t):(a.push(ll(e,t,n)),o=``),a.length===r)break}return a.length<r&&o&&a.push(o),a.length>0&&a.length===r&&(a[a.length-1]=ll(e,a[a.length-1]??``,n)),a.slice(0,r)}function dl(e){let t=document.createElement(`canvas`);t.width=Q*$c,t.height=Qc*$c;let n=t.getContext(`2d`);if(!n)return t;n.scale($c,$c);let r=n.createLinearGradient(0,0,Q,Qc);r.addColorStop(0,`#ffffff`),r.addColorStop(.55,`#fafaf6`),r.addColorStop(1,`#f2f2ec`),n.fillStyle=r,n.fillRect(0,0,Q,Qc);let i=il(rl(e.id));n.fillStyle=`rgba(0, 0, 0, 0.035)`;for(let e=0;e<1200;e+=1)n.globalAlpha=.12+i()*.14,n.fillRect(i()*Q,i()*Qc,.7,.7);n.globalAlpha=1,n.fillStyle=`rgba(0, 0, 0, 0.78)`,n.font=`700 18px 'Courier New', monospace`,n.textAlign=`center`,n.fillText(`CODESESH MART`,Q/2,34),n.font=`11px 'Courier New', monospace`,n.fillText(ll(n,ol(e.tags).toUpperCase(),Q-36),Q/2,51),n.strokeStyle=`rgba(0, 0, 0, 0.5)`,n.lineWidth=1,n.setLineDash([4,4]),n.beginPath(),n.moveTo(18,66),n.lineTo(Q-18,66),n.stroke(),n.setLineDash([]),n.textAlign=`left`,n.fillStyle=`rgba(0, 0, 0, 0.74)`,n.font=`11px 'Courier New', monospace`,cl(n,`Agent`,e.agent,88,Q),cl(n,`Updated`,nl(e.updatedAt),104,Q),cl(n,`Session`,`#${e.id.slice(0,8)}`,120,Q),n.setLineDash([2,3]),n.beginPath(),n.moveTo(18,140),n.lineTo(Q-18,140),n.stroke(),n.setLineDash([]),n.font=`700 12px 'Courier New', monospace`,n.fillText(`SESSION TOC RECEIPT LIST`,18,163),n.font=`11px 'Courier New', monospace`;let a=185;for(let t of e.items){let e=el(t.count);n.fillText(ll(n,t.label,168),18,a),n.fillText(e,Q-18-n.measureText(e).width,a),a+=17}return n.strokeStyle=`rgba(0, 0, 0, 0.62)`,n.lineWidth=1.5,n.beginPath(),n.moveTo(18,a+5),n.lineTo(Q-18,a+5),n.stroke(),a+=26,cl(n,`Input tokens`,el(e.stats.total_input_tokens),a,Q),a+=16,cl(n,`Output tokens`,el(e.stats.total_output_tokens),a,Q),a+=16,cl(n,`Messages`,el(e.stats.message_count),a,Q),a+=22,n.font=`700 13px 'Courier New', monospace`,cl(n,`TOTAL COST`,tl(e.stats.total_cost),a,Q),n.strokeStyle=`rgba(0, 0, 0, 0.45)`,n.setLineDash([4,4]),n.beginPath(),n.moveTo(18,a+18),n.lineTo(Q-18,a+18),n.stroke(),n.setLineDash([]),n.font=`10px 'Courier New', monospace`,n.textAlign=`center`,n.fillStyle=`rgba(0, 0, 0, 0.62)`,ul(n,e.title,Q-36,2).forEach((e,t)=>{n.fillText(e,Q/2,a+38+t*13)}),t}function $(e,t){return e*X+t}function fl(e){let{receiptWidth:t,receiptHeight:n,startX:r,startY:i}=e,a=t/(X-1),o=n/(Z-1),s=[],c=[];for(let e=0;e<Z;e+=1)for(let t=0;t<X;t+=1){let n=r+t*a,c=i+e*o;s.push({x:n,y:c,oldX:n,oldY:c,fixedX:e===0?n:null,fixedY:e===0?c:null})}let l=(e,t,n)=>{let r=s[e],i=s[t];!r||!i||c.push({a:e,b:t,length:Math.hypot(i.x-r.x,i.y-r.y),stiffness:n})};for(let e=0;e<Z;e+=1)for(let t=0;t<X;t+=1){let n=$(e,t);t<X-1&&l(n,$(e,t+1),.98),e<Z-1&&l(n,$(e+1,t),.92),e<Z-1&&t<X-1&&(l(n,$(e+1,t+1),.46),l($(e+1,t),$(e,t+1),.46)),t<X-2&&l(n,$(e,t+2),.35),e<Z-2&&l(n,$(e+2,t),.28)}return{particles:s,constraints:c,receiptWidth:t,receiptHeight:n}}function pl(e,t){let n=t.receiptWidth/(X-1);for(let r=0;r<X;r+=1){let i=e[r];i&&(i.fixedX=t.startX+r*n,i.fixedY=t.startY)}}function ml(e){for(let t=0;t<X;t+=1){let n=e[t];!n||n.fixedX==null||n.fixedY==null||(n.x=n.fixedX,n.y=n.fixedY,n.oldX=n.fixedX,n.oldY=n.fixedY)}}function hl(e,t){let n=e[t.a],r=e[t.b];if(!n||!r)return;let i=r.x-n.x,a=r.y-n.y,o=Math.hypot(i,a);if(o<1e-4)return;let s=(o-t.length)/o*t.stiffness,c=n.fixedX!=null&&n.fixedY!=null,l=r.fixedX!=null&&r.fixedY!=null,u=c?0:l?1:.5,d=l?0:c?1:.5,f=i*s,p=a*s;c||(n.x+=f*u,n.y+=p*u),l||(r.x-=f*d,r.y-=p*d)}function gl(e,t,n,r,i){let a=n[$(r,i)],o=n[$(r,i+1)],s=n[$(r+1,i)],c=n[$(r+1,i+1)];if(!a||!o||!s||!c)return;let l=i/(X-1)*t.width,u=r/(Z-1)*t.height,d=t.width/(X-1),f=t.height/(Z-1);e.save(),e.beginPath(),e.moveTo(a.x,a.y),e.lineTo(o.x,o.y),e.lineTo(c.x,c.y),e.lineTo(s.x,s.y),e.closePath(),e.clip(),e.transform((o.x-a.x)/d,(o.y-a.y)/d,(s.x-a.x)/f,(s.y-a.y)/f,a.x,a.y),e.drawImage(t,l,u,d+1,f+1,0,0,d+1,f+1),e.restore();let p=Math.atan2(o.y-a.y,o.x-a.x),m=Math.hypot(s.x-a.x,s.y-a.y)/(Qc/(Z-1)),h=Math.sin(p)*.08+(m-1)*.16;Math.abs(h)<.01||(e.save(),e.beginPath(),e.moveTo(a.x,a.y),e.lineTo(o.x,o.y),e.lineTo(c.x,c.y),e.lineTo(s.x,s.y),e.closePath(),e.fillStyle=h>0?`rgba(255,255,255,${h})`:`rgba(0,0,0,${-h})`,e.fill(),e.restore())}function _l(e,t,n){let r=null,i=44;for(let a=X;a<e.length;a+=1){let o=e[a];if(!o)continue;let s=Math.hypot(o.x-t,o.y-n);s<i&&(i=s,r=a)}return r}function vl(e){let t=0;for(let n=X;n<e.length;n+=1){let r=e[n];r&&(t=Math.max(t,Math.hypot(r.x-r.oldX,r.y-r.oldY)))}return t}function yl({session:e,toc:t,minWidthQuery:n=`(min-width: 1025px)`}){let r=(0,F.useRef)(null),i=(0,F.useRef)(null),a=(0,F.useRef)(null),o=(0,F.useMemo)(()=>sl(e,t),[e,t]);return(0,F.useLayoutEffect)(()=>{let e=r.current,t=i.current,s=a.current;if(!e||!t||!s)return;let c=e.getContext(`2d`,{alpha:!0});if(!c)return;let l={id:null,x:0,y:0,prevX:0,prevY:0,vx:0,vy:0,grabbedIndex:null},u=dl(o),d=0,f=0,p=0,m=fl({receiptWidth:Q,receiptHeight:Qc,startX:0,startY:32}),h=performance.now(),g=null,_=0,v=0,y=0,b=0,x=!1,S=!1,C=window.matchMedia(n),w=window.matchMedia(`(prefers-reduced-motion: reduce)`),T=()=>C.matches&&document.visibilityState===`visible`,ee=()=>{let e=t.getBoundingClientRect(),n=Math.max(280,e.width||320),r=Math.min(Q,n-34);return{receiptWidth:r,receiptHeight:Math.min(Qc,Math.max(320,p-42)),startX:(n-r)/2,startY:32}},te=t=>{x!==t&&(x=t,e.style.visibility=t?`visible`:`hidden`,s.style.visibility=t&&!w.matches?`visible`:`hidden`)},E=()=>{S=!1,d&&=(window.cancelAnimationFrame(d),0),te(!1)},ne=(e,t=performance.now())=>{m=fl(e),g=e,h=t},D=()=>{let n=window.devicePixelRatio||1,r=t.getBoundingClientRect();f=Math.max(1,r.width),p=Math.max(1,r.height),e.width=Math.floor(f*n),e.height=Math.floor(p*n),c.setTransform(n,0,0,n,0,0),_=0,v=0,y=0,b=0,te(!1),ne(ee()),T()&&re()},re=()=>{S||!T()||(S=!0,d=window.requestAnimationFrame(de))},O=()=>{T()?D():E()},k=e=>{let n=t.getBoundingClientRect();return{x:e.clientX-n.left,y:e.clientY-n.top}},A=e=>{if(e.button!==0||w.matches)return;let t=k(e),n=_l(m.particles,t.x,t.y);n!=null&&(e.preventDefault(),s.setPointerCapture(e.pointerId),l.id=e.pointerId,l.x=t.x,l.y=t.y,l.prevX=t.x,l.prevY=t.y,l.vx=0,l.vy=0,l.grabbedIndex=n,v=0,y=0,re())},ie=e=>{if(l.id!==e.pointerId)return;let t=k(e);l.vx=t.x-l.prevX,l.vy=t.y-l.prevY,l.prevX=t.x,l.prevY=t.y,l.x=t.x,l.y=t.y},ae=e=>{if(l.id!==e.pointerId)return;let t=l.grabbedIndex==null?null:m.particles[l.grabbedIndex];t&&(t.oldX=t.x-l.vx*.9,t.oldY=t.y-l.vy*.9),l.id=null,l.grabbedIndex=null},oe=e=>{let t=(e-h)/1e3;for(let e=X;e<m.particles.length;e+=1){let n=m.particles[e];if(!n)continue;let r=(n.x-n.oldX)*.985,i=(n.y-n.oldY)*.985;n.oldX=n.x,n.oldY=n.y,n.x+=r+Math.sin(t*1.7+e*.19)*.018,n.y+=i+.22}let n=l.grabbedIndex==null?null:m.particles[l.grabbedIndex];n&&(n.x+=(l.x-n.x)*.72,n.y+=(l.y-n.y)*.72)},se=()=>{for(let e=0;e<Zc;e+=1){ml(m.particles);for(let e of m.constraints)hl(m.particles,e)}ml(m.particles)},ce=()=>{let e=1/0,t=1/0,n=-1/0,r=-1/0;for(let i of m.particles)e=Math.min(e,i.x),t=Math.min(t,i.y),n=Math.max(n,i.x),r=Math.max(r,i.y);s.style.transform=`translate3d(${e-20}px, ${t-20}px, 0)`,s.style.width=`${n-e+40}px`,s.style.height=`${r-t+40}px`},j=()=>{let e=m.particles[0],t=m.particles[X-1],n=m.particles[Z*X-1],r=m.particles[(Z-1)*X];!e||!t||!n||!r||(c.save(),c.shadowColor=`rgba(0,0,0,0.24)`,c.shadowBlur=24,c.shadowOffsetY=16,c.fillStyle=`rgba(0,0,0,0.14)`,c.beginPath(),c.moveTo(e.x,e.y),c.lineTo(t.x,t.y),c.lineTo(n.x,n.y),c.lineTo(r.x,r.y),c.closePath(),c.fill(),c.restore())},le=()=>{let e=m.particles[0],t=m.particles[X-1];!e||!t||(c.save(),c.strokeStyle=`rgba(0,0,0,0.72)`,c.lineWidth=4,c.lineCap=`round`,c.beginPath(),c.moveTo(e.x-10,e.y-3),c.lineTo(t.x+10,t.y-3),c.stroke(),c.strokeStyle=`rgba(255,255,255,0.55)`,c.lineWidth=1,c.beginPath(),c.moveTo(e.x-8,e.y-5),c.lineTo(t.x+8,t.y-5),c.stroke(),c.restore())},ue=()=>{c.clearRect(0,0,f,p),j();for(let e=0;e<Z-1;e+=1)for(let t=0;t<X-1;t+=1)gl(c,u,m.particles,e,t);le(),ce()},de=e=>{if(!S)return;if(!T()){E();return}if(!Kc(e,b)){d=window.requestAnimationFrame(de);return}b=e;let t=ee();Xc(g,t)&&l.id==null?(_=0,te(!1),ne(t,e)):(_+=1,g=t),pl(m.particles,t),w.matches||(oe(e),se()),ue();let n=l.id!=null;v=qc(n,vl(m.particles),v),y=Jc(n,y);let r=w.matches;if((r||_>=2)&&te(!0),r||Yc(_,v,y)){r||(ne(t,e),ue()),S=!1,d=0;return}d=window.requestAnimationFrame(de)};te(!1),T()&&D();let fe=new ResizeObserver(D);return fe.observe(t),C.addEventListener(`change`,O),w.addEventListener(`change`,O),document.addEventListener(`visibilitychange`,O),window.addEventListener(`resize`,O),s.addEventListener(`pointerdown`,A),s.addEventListener(`pointermove`,ie),s.addEventListener(`pointerup`,ae),s.addEventListener(`pointercancel`,ae),re(),()=>{E(),fe.disconnect(),C.removeEventListener(`change`,O),w.removeEventListener(`change`,O),document.removeEventListener(`visibilitychange`,O),window.removeEventListener(`resize`,O),s.removeEventListener(`pointerdown`,A),s.removeEventListener(`pointermove`,ie),s.removeEventListener(`pointerup`,ae),s.removeEventListener(`pointercancel`,ae)}},[n,o]),(0,R.jsxs)(`div`,{ref:i,className:`relative h-[calc(100dvh-5.5rem)] min-h-[420px]`,children:[(0,R.jsx)(`canvas`,{ref:r,className:`invisible pointer-events-none absolute inset-0 z-[61] block h-full w-full touch-none`,"aria-hidden":`true`}),(0,R.jsx)(`div`,{ref:a,className:`invisible absolute left-0 top-0 z-[62] cursor-grab touch-none active:cursor-grabbing`,"aria-label":`Interactive thermal receipt with Verlet paper simulation`})]})}var bl={desktop:{backdrop:`z-[60] hidden bg-black/20 min-[1025px]:block`,popup:`z-[61] hidden w-[min(92vw,430px)] p-4 min-[1025px]:block`},mobile:{backdrop:`z-50 bg-black/30 min-[1025px]:hidden`,popup:`console-scrollbar z-[51] w-[min(90vw,380px)] overflow-y-auto p-3 min-[1025px]:hidden`}};function xl({open:e,onOpenChange:t,title:n,variant:r,children:i}){let a=bl[r];return(0,R.jsx)(y,{open:e,onOpenChange:t,children:(0,R.jsxs)(s,{children:[(0,R.jsx)(u,{className:`motion-backdrop fixed inset-0 ${a.backdrop}`}),(0,R.jsxs)(c,{className:`motion-drawer fixed bottom-0 right-0 top-0 overscroll-contain border-l border-[var(--console-border)] bg-[var(--console-bg)] shadow-[-12px_0_32px_rgba(15,23,42,0.18)] outline-none ${a.popup}`,children:[(0,R.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-3`,children:[(0,R.jsx)(f,{className:`console-mono text-xs font-semibold uppercase tracking-[0.16em] text-[var(--console-text)]`,children:n}),(0,R.jsx)(p,{"aria-label":`Close ${n.toLowerCase()}`,className:`rounded-sm border border-[var(--console-border)] bg-white p-2 text-[var(--console-muted)] transition-colors hover:bg-[var(--console-surface-muted)] focus-visible:ring-2 focus-visible:ring-[var(--console-accent)] focus-visible:ring-offset-2 focus-visible:outline-none`,children:(0,R.jsx)(_e,{className:`size-4`,"aria-hidden":`true`})})]}),i]})]})})}function Sl({session:e,toc:t}){let[n,r]=(0,F.useState)(!1),[i,a]=(0,F.useState)(!1);return(0,F.useEffect)(()=>{r(!1)},[e.id]),(0,F.useEffect)(()=>{if(!n){a(!1);return}a(!1);let e=0,t=requestAnimationFrame(()=>{e=requestAnimationFrame(()=>a(!0))}),i=window.matchMedia(`(min-width: 1025px)`),o=()=>{i.matches||r(!1)};return i.addEventListener(`change`,o),o(),()=>{cancelAnimationFrame(t),e&&cancelAnimationFrame(e),i.removeEventListener(`change`,o)}},[n]),(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`button`,{type:`button`,"aria-expanded":n,"aria-label":`Open session receipt`,onClick:()=>r(!0),className:`console-mono fixed right-0 top-1/2 z-40 hidden h-32 w-10 -translate-y-1/2 items-center justify-center rounded-l-sm border border-r-0 border-[var(--console-border)] bg-white text-[10px] font-semibold uppercase tracking-[0.14em] text-[var(--console-text)] shadow-[-2px_4px_14px_rgba(15,23,42,0.14)] transition-colors hover:bg-[var(--console-surface-muted)] min-[1025px]:flex`,children:(0,R.jsx)(`span`,{className:`[writing-mode:vertical-rl]`,children:`Receipt`})}),(0,R.jsx)(xl,{open:n,onOpenChange:r,title:`Session Receipt`,variant:`desktop`,children:i?(0,R.jsx)(an,{id:`InteractiveReceipt`,children:(0,R.jsx)(yl,{session:e,toc:t},e.id)}):(0,R.jsx)(`div`,{className:`h-[calc(100dvh-5.5rem)] min-h-[420px] rounded-sm border border-[var(--console-border)] bg-white`})})]})}function Cl({toc:e,fileChangeSummary:t,onOpen:n}){let r=lo(t);return(0,R.jsxs)(`div`,{className:`flex flex-wrap gap-2 min-[1025px]:hidden`,children:[(0,R.jsxs)(`button`,{type:`button`,onClick:()=>n(`toc`),className:`console-mono inline-flex h-9 items-center gap-2 rounded-sm border border-[var(--console-border)] bg-white px-3 text-xs font-semibold uppercase tracking-[0.12em] text-[var(--console-text)] shadow-[0_1px_2px_rgba(15,23,42,0.04)] transition-colors hover:bg-[var(--console-surface-muted)]`,children:[(0,R.jsx)(we,{className:`size-3.5 text-[var(--console-accent)]`}),`TOC`,(0,R.jsx)(`span`,{className:`text-[var(--console-muted)]`,children:e.counts.tools_all})]}),r>0?(0,R.jsxs)(`button`,{type:`button`,onClick:()=>n(`files`),className:`console-mono inline-flex h-9 items-center gap-2 rounded-sm border border-[var(--console-border)] bg-white px-3 text-xs font-semibold uppercase tracking-[0.12em] text-[var(--console-text)] shadow-[0_1px_2px_rgba(15,23,42,0.04)] transition-colors hover:bg-[var(--console-surface-muted)]`,children:[(0,R.jsx)(x,{className:`size-3.5 text-[var(--console-accent)]`}),`Files`,(0,R.jsx)(`span`,{className:`text-[var(--console-muted)]`,children:r})]}):null]})}function wl({openPanel:e,toc:t,fileChangeSummary:n,baseDirectory:r,selectedFilters:i,onClose:a,onToggle:o,onJumpToAnchor:s}){return(0,F.useEffect)(()=>{if(!e)return;let t=window.matchMedia(`(min-width: 1025px)`),n=()=>{t.matches&&a()};return t.addEventListener(`change`,n),n(),()=>{t.removeEventListener(`change`,n)}},[a,e]),(0,R.jsx)(xl,{open:e!==null,onOpenChange:e=>{e||a()},title:e===`files`?`File Tracker`:`Session TOC`,variant:`mobile`,children:e?e===`toc`?(0,R.jsx)(yo,{toc:t,selectedFilters:i,onToggle:o}):(0,R.jsx)(uo,{summary:n,baseDirectory:r,onJumpToAnchor:s}):null})}var Tl=e(i(),1),El=10,Dl=1,Ol=8,kl={user:`bg-[var(--timeline-user)]`,agent:`bg-[var(--timeline-agent)]`,"tool-read":`bg-[var(--timeline-tool-read)]`,"tool-write":`bg-[var(--timeline-tool-write)]`,"tool-execute":`bg-[var(--timeline-tool-execute)]`},Al={user:`#a85f82`,agent:`#5e86aa`,"tool-read":`#478b7d`,"tool-write":`#bd7336`,"tool-execute":`#786ca3`};function jl(e){let t=e.parentElement;for(;t;){let{overflowY:e}=window.getComputedStyle(t);if(e===`auto`||e===`scroll`||e===`overlay`)return t;t=t.parentElement}return window}function Ml(e){return e===window}function Nl(e){if(Ml(e)){let e=window.innerHeight||900,t=document.scrollingElement??document.documentElement;return{center:e/2,scrollTop:window.scrollY||t.scrollTop,viewportHeight:e,scrollHeight:t.scrollHeight}}return{center:e.getBoundingClientRect().top+e.clientHeight/2,scrollTop:e.scrollTop,viewportHeight:e.clientHeight,scrollHeight:e.scrollHeight}}function Pl(e){let t=e>80?{className:`gap-px`,width:1}:e>40?{className:`gap-0.5`,width:2}:{className:`gap-1`,width:4};return{gapClassName:t.className,minWidth:e*El+Math.max(0,e-1)*t.width}}function Fl({entries:e,onNavigate:t}){let n=(0,F.useRef)(null),r=(0,F.useRef)(null),i=(0,F.useRef)(null),a=(0,F.useRef)(null),o=(0,F.useRef)(null),s=(0,F.useRef)({active:!1,moved:!1,startX:0,lastIndex:-1}),c=(0,F.useRef)(!1),l=(0,F.useRef)(null),u=(0,F.useRef)(null),[d,f]=(0,F.useState)(0),[p,m]=(0,F.useState)(null),[h,g]=(0,F.useState)({left:!1,right:!1}),[_,v]=(0,F.useState)(null),y=(0,F.useMemo)(()=>new Map(e.map((e,t)=>[e.anchorId,t])),[e]),b=Pl(e.length),x=(0,F.useCallback)(()=>{let e=r.current;if(!e)return;let t=Math.max(0,e.scrollWidth-e.clientWidth),n={left:e.scrollLeft>Dl,right:e.scrollLeft<t-Dl};if(g(e=>e.left===n.left&&e.right===n.right?e:n),t<=0){v(null);return}let i={start:e.scrollLeft/e.scrollWidth,size:e.clientWidth/e.scrollWidth};v(e=>e?.start===i.start&&e.size===i.size?e:i)},[]);(0,F.useLayoutEffect)(()=>{let e=a.current;if(!e||!p)return;let t=e.offsetWidth/2,n=Math.min(window.innerWidth-Ol-t,Math.max(Ol+t,p.anchorX));e.style.left=`${n}px`},[p]),(0,F.useLayoutEffect)(()=>{x();let e=r.current,t=i.current;if(!e||!t||typeof ResizeObserver>`u`)return;let n=new ResizeObserver(x);return n.observe(e),n.observe(t),()=>n.disconnect()},[e.length,x]),(0,F.useEffect)(()=>{f(0);let t=n.current;if(!t||e.length===0)return;let r=t.closest(`[data-testid="session-detail"]`),i=jl(t),a=0,o=()=>{let t=Nl(i),n=vc(t.scrollTop,t.viewportHeight,t.scrollHeight,e.length),a=Array.from(r?.querySelectorAll(`[data-session-timeline-anchor]`)??[]).flatMap(e=>{let t=e.dataset.sessionTimelineAnchor,n=t?y.get(t):void 0;return n==null?[]:[{index:n,top:e.getBoundingClientRect().top}]}),o=n??_c(a,t.center);o!=null&&f(e=>e===o?e:o)},s=()=>{a||=requestAnimationFrame(()=>{a=0,o()})};s(),i.addEventListener(`scroll`,s,{passive:!0}),window.addEventListener(`resize`,s);let c=typeof ResizeObserver>`u`?null:new ResizeObserver(s);r&&c?.observe(r);let l=typeof MutationObserver>`u`?null:new MutationObserver(s);return r&&l?.observe(r,{childList:!0,subtree:!0}),()=>{a&&cancelAnimationFrame(a),c?.disconnect(),l?.disconnect(),i.removeEventListener(`scroll`,s),window.removeEventListener(`resize`,s)}},[e.length,y]),(0,F.useEffect)(()=>{let e=r.current,t=i.current?.querySelector(`[data-timeline-index="${d}"]`);if(!e||!t)return;let n=e.getBoundingClientRect(),a=t.getBoundingClientRect();a.left<n.left?e.scrollLeft-=n.left-a.left:a.right>n.right&&(e.scrollLeft+=a.right-n.right)},[d]);let S=_!=null;(0,F.useEffect)(()=>{let t=l.current;if(!t||!S)return;let n=()=>{let n=t.getContext(`2d`),r=t.clientWidth,i=t.clientHeight;if(!n||!r||!i||e.length===0)return;let a=window.devicePixelRatio||1;t.width=Math.round(r*a),t.height=Math.round(i*a),n.scale(a,a),n.clearRect(0,0,r,i);let o=window.getComputedStyle(t),s={user:o.getPropertyValue(`--timeline-user`).trim()||Al.user,agent:o.getPropertyValue(`--timeline-agent`).trim()||Al.agent,"tool-read":o.getPropertyValue(`--timeline-tool-read`).trim()||Al[`tool-read`],"tool-write":o.getPropertyValue(`--timeline-tool-write`).trim()||Al[`tool-write`],"tool-execute":o.getPropertyValue(`--timeline-tool-execute`).trim()||Al[`tool-execute`]};e.forEach((t,a)=>{let o=a/e.length*r,c=(a+1)/e.length*r;n.fillStyle=s[t.kind],n.fillRect(o,0,Math.max(c-o,.5),i)})};if(n(),typeof ResizeObserver>`u`)return;let r=new ResizeObserver(n);return r.observe(t),()=>r.disconnect()},[e,S]);let C=(0,F.useCallback)((e,t)=>{let n=r.current;n&&(n.scrollLeft=(e-t)*n.scrollWidth)},[]),w=(0,F.useCallback)(e=>{let t=r.current;if(!t)return;let n=Math.max(0,t.scrollWidth-t.clientWidth),i=Math.max(40,t.clientWidth*.1),a=Math.max(120,t.clientWidth*.75),o=null;e.key===`ArrowLeft`&&(o=t.scrollLeft-i),e.key===`ArrowRight`&&(o=t.scrollLeft+i),e.key===`PageUp`&&(o=t.scrollLeft-a),e.key===`PageDown`&&(o=t.scrollLeft+a),e.key===`Home`&&(o=0),e.key===`End`&&(o=n),o!=null&&(e.preventDefault(),t.scrollLeft=Math.min(n,Math.max(0,o)))},[]),T=(0,F.useCallback)((e,t,n)=>{let r=t.getBoundingClientRect();o.current=t,m({entryId:e.id,id:`timeline-tooltip-${e.id}`,text:e.tooltip,anchorX:r.left+r.width/2,top:r.bottom+8,source:n})},[]),ee=(0,F.useCallback)(e=>{m(t=>t?.entryId===e?(o.current=null,null):t)},[]),E=(0,F.useCallback)(()=>{x(),m(e=>{let t=o.current;if(!e||e.source!==`focus`||!t||t!==document.activeElement)return o.current=null,null;let n=t.getBoundingClientRect();return{...e,anchorX:n.left+n.width/2,top:n.bottom+8}})},[x]),ne=(0,F.useCallback)(e=>{let t=r.current;t&&(t.scrollLeft+=e*Math.max(120,t.clientWidth*.75))},[]),D=(0,F.useCallback)((n,r)=>{let a=i.current;if(!a)return;let o=a.getBoundingClientRect(),c=yc(n,o.left,o.width,e.length);if(c==null||c===s.current.lastIndex)return;let l=e[c];l&&(s.current.lastIndex=c,t(l,r))},[e,t]);return(0,R.jsx)(`div`,{className:`sticky top-0 z-20 -mx-2 bg-[var(--console-bg)] px-2 py-3`,children:(0,R.jsxs)(`div`,{ref:n,className:`session-message-timeline relative rounded-sm border border-[var(--console-border)] bg-white px-3 py-2.5 shadow-[0_1px_2px_rgba(15,23,42,0.05)]`,children:[(0,R.jsxs)(`div`,{className:`relative`,children:[(0,R.jsx)(`div`,{ref:r,id:`session-timeline-viewport`,role:`navigation`,"aria-label":`Session message timeline`,tabIndex:0,className:`session-timeline-viewport overflow-x-auto overflow-y-hidden overscroll-x-contain py-1`,onScroll:E,children:(0,R.jsx)(`div`,{ref:i,"data-testid":`session-timeline-track`,className:`grid h-5 w-full select-none items-stretch ${b.gapClassName}`,style:{gridTemplateColumns:`repeat(${e.length}, minmax(${El}px, 1fr))`,minWidth:`${b.minWidth}px`},onPointerDown:e=>{e.button===0&&(s.current={active:!0,moved:!1,startX:e.clientX,lastIndex:-1})},onPointerMove:e=>{let t=s.current;if(t.active){if(!t.moved){if(Math.abs(e.clientX-t.startX)<3)return;t.moved=!0,e.currentTarget.setPointerCapture(e.pointerId)}c.current=!0,D(e.clientX,`auto`)}},onPointerUp:e=>{s.current.active=!1,e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId),window.setTimeout(()=>{c.current=!1},0)},onPointerCancel:()=>{s.current.active=!1,c.current=!1},onClick:n=>{if(c.current)return;let r=so(n.detail),i=n.target.closest(`[data-timeline-index]`)?.dataset.timelineIndex,a=i==null?null:Number(i),o=a==null||!Number.isInteger(a)?void 0:e[a];if(o){t(o,r);return}D(n.clientX,r)},children:e.map((e,t)=>{let n=`timeline-tooltip-${e.id}`;return(0,R.jsx)(`span`,{className:`t-tt-wrap session-timeline-item min-w-0`,children:(0,R.jsx)(`button`,{type:`button`,"data-timeline-index":t,"aria-current":t===d?`location`:void 0,"aria-describedby":p?.entryId===e.id?n:void 0,"aria-label":`Go to ${e.tooltip}`,className:`t-tt-trigger session-timeline-segment h-full w-full rounded-[3px] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--console-text)] ${kl[e.kind]}`,onPointerEnter:t=>T(e,t.currentTarget,`pointer`),onPointerLeave:()=>ee(e.id),onFocus:t=>T(e,t.currentTarget,`focus`),onBlur:()=>ee(e.id)})},e.id)})})}),h.left&&(0,R.jsx)(`button`,{type:`button`,"aria-label":`Scroll timeline left`,className:`absolute inset-y-0 left-0 z-10 flex w-8 items-center justify-start bg-[linear-gradient(to_right,#fff_55%,transparent)] pl-0.5 text-[var(--console-muted)] hover:text-[var(--console-text)] focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--console-text)]`,onClick:()=>ne(-1),children:(0,R.jsx)(te,{size:14,"aria-hidden":`true`})}),h.right&&(0,R.jsx)(`button`,{type:`button`,"aria-label":`Scroll timeline right`,className:`absolute inset-y-0 right-0 z-10 flex w-8 items-center justify-end bg-[linear-gradient(to_left,#fff_55%,transparent)] pr-0.5 text-[var(--console-muted)] hover:text-[var(--console-text)] focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-[var(--console-text)]`,onClick:()=>ne(1),children:(0,R.jsx)(le,{size:14,"aria-hidden":`true`})})]}),_&&(0,R.jsxs)(`div`,{"data-testid":`session-timeline-minimap`,role:`scrollbar`,"aria-controls":`session-timeline-viewport`,"aria-orientation":`horizontal`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(_.start/(1-_.size)*100),"aria-label":`Timeline scroll position`,tabIndex:0,className:`session-timeline-minimap relative mt-2 h-2.5 cursor-pointer touch-none select-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--console-text)]`,onKeyDown:w,onPointerDown:e=>{if(e.button!==0)return;let t=e.currentTarget.getBoundingClientRect();if(t.width<=0)return;let n=(e.clientX-t.left)/t.width,r=n>=_.start&&n<=_.start+_.size?n-_.start:_.size/2;u.current={pointerId:e.pointerId,grabOffset:r},e.currentTarget.setPointerCapture(e.pointerId),C(n,r)},onPointerMove:e=>{let t=u.current;if(!t||t.pointerId!==e.pointerId)return;let n=e.currentTarget.getBoundingClientRect();n.width<=0||C((e.clientX-n.left)/n.width,t.grabOffset)},onPointerUp:e=>{u.current=null,e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId)},onPointerCancel:()=>{u.current=null},children:[(0,R.jsx)(`canvas`,{ref:l,"aria-hidden":`true`,className:`absolute inset-0 h-full w-full`}),(0,R.jsx)(`div`,{"data-testid":`session-timeline-minimap-window`,className:`session-timeline-minimap-window absolute inset-y-0`,style:{left:`${_.start*100}%`,width:`${_.size*100}%`}})]}),p&&(0,Tl.createPortal)((0,R.jsx)(`span`,{ref:a,id:p.id,role:`tooltip`,className:`t-tt session-timeline-floating-tooltip console-mono text-[11px]`,style:{left:p.anchorX,top:p.top},children:p.text}),document.body)]})})}function Il({anchorId:e,behavior:t,prepareAnchor:n,isCurrent:r}){if(typeof document>`u`)return;let i=co(t,window.matchMedia(`(prefers-reduced-motion: reduce)`).matches),a=document.getElementById(e);if(!a&&n){n();let t=0,o=()=>{if(r()){if(a=document.getElementById(e),a){a.scrollIntoView({behavior:i,block:`center`});return}t+=1,t<8&&requestAnimationFrame(o)}};requestAnimationFrame(o);return}a&&a.scrollIntoView({behavior:i,block:`center`})}function Ll(e,t){if(!$t())return t();let n=performance.now(),r=t(),i=performance.now();return nn({id:e,source:`custom-timing`,phase:`measure`,actualDuration:Math.round((i-n)*100)/100,baseDuration:0,startTime:n,commitTime:i}),r}function Rl({session:e,agentCatalog:t,highlightQuery:n}){let r=An({slug:e.slug??``}),i=cr(t,r),a=(0,F.useMemo)(()=>Ll(`SessionDetail:normalizeMessages`,()=>Ua(e.messages,r)),[e.messages,r]),o=(0,F.useMemo)(()=>Ll(`SessionDetail:buildMessageDisplayModels`,()=>pa(a)),[a]),{toolAnchorIds:s,anchorMessageIndexes:c,summary:l}=(0,F.useMemo)(()=>Ll(`SessionDetail:buildFileChangeSummary`,()=>ao(o)),[o]),u=(0,F.useMemo)(()=>Ll(`SessionDetail:buildSessionDetailToc`,()=>aa(o)),[o]),[d,f]=(0,F.useState)(()=>new Set(u.filterIds)),[p,m]=(0,F.useState)(null),h=(0,F.useMemo)(()=>[...u.filterIds].toSorted().join(`|`),[u.filterIds]),g=(0,F.useMemo)(()=>[...d].toSorted().join(`|`),[d]),_=(0,F.useMemo)(()=>Ll(`SessionDetail:filterSessionMessages`,()=>la(o,d)),[o,d]),v=(0,F.useRef)(null),y=(0,F.useRef)(0),b=(0,F.useMemo)(()=>Ll(`SessionDetail:buildAnchorListIndexes`,()=>{let e=new Map;return _.forEach((t,n)=>{e.set(t.index,n)}),e}),[_]),x=(0,F.useMemo)(()=>Ll(`SessionDetail:mergeFileActivitySummary`,()=>oo(e.file_activity,l)),[e.file_activity,l]),S=(0,F.useMemo)(()=>gc(_,s),[_,s]),C=(0,F.useCallback)((e,t,n)=>{let r=y.current+1;y.current=r;let i=t==null?void 0:b.get(t);Il({anchorId:e,behavior:n,prepareAnchor:i==null?void 0:()=>v.current?.scrollToIndex(i),isCurrent:()=>y.current===r})},[b]),w=(0,F.useCallback)((e,t)=>{C(e,c.get(e),t)},[c,C]);return(0,F.useEffect)(()=>{f(new Set(u.filterIds))},[h,u.filterIds]),o.length===0?(0,R.jsx)(`div`,{"data-testid":`session-detail`,className:`mx-auto max-w-4xl rounded-sm border border-[var(--console-border)] bg-white p-6 text-sm text-[var(--console-muted)]`,children:`当前会话暂无可展示的消息内容。`}):(0,R.jsxs)(`div`,{"data-testid":`session-detail`,className:`mx-auto w-full max-w-[1440px] space-y-8 px-2 md:px-4`,children:[(0,R.jsx)(zl,{summary:typeof e.summary_files==`string`?e.summary_files:void 0}),(0,R.jsxs)(`div`,{className:`grid gap-6 min-[1025px]:grid-cols-[240px_minmax(0,1fr)] min-[1025px]:items-start min-[1280px]:grid-cols-[220px_minmax(0,1fr)]`,children:[(0,R.jsx)(Cl,{toc:u,fileChangeSummary:x,onOpen:m}),(0,R.jsx)(wl,{openPanel:p,toc:u,fileChangeSummary:x,baseDirectory:e.directory,selectedFilters:d,onClose:()=>m(null),onToggle:e=>f(t=>go(t,e,u)),onJumpToAnchor:(e,t)=>{m(null),w(e,t)}}),(0,R.jsx)(vo,{toc:u,fileChangeSummary:x,baseDirectory:e.directory,selectedFilters:d,onToggle:e=>f(t=>go(t,e,u)),onJumpToAnchor:w}),(0,R.jsx)(`div`,{className:`flex min-w-0 flex-col gap-8`,children:_.length>0?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(Fl,{entries:S,onNavigate:(e,t)=>C(e.anchorId,e.messageIndex,t)}),(0,R.jsx)(an,{id:`MessageList`,detail:{messages:_.length,virtualized:_.length>80},children:(0,R.jsx)(Uc,{messages:_,toolAnchorIds:s,sessionAgentKey:r,agent:i,baseDirectory:e.directory,highlightQuery:n,apiRef:v},`${e.id}:${g}`)})]}):(0,R.jsx)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-6 text-sm text-[var(--console-muted)]`,children:`当前筛选条件下暂无可展示的消息内容。`})})]}),(0,R.jsx)(Sl,{session:e,toc:u})]})}function zl({summary:e,defaultExpanded:t=!1}){let n=typeof e==`string`?e.trim():``,[r,i]=(0,F.useState)(t);return n?(0,R.jsxs)(`section`,{className:`rounded-sm border border-[var(--console-border)] bg-white shadow-[0_1px_2px_rgba(15,23,42,0.04)]`,children:[(0,R.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-3 px-4 py-3 text-left`,onClick:()=>i(e=>!e),children:[(0,R.jsxs)(`span`,{className:`console-mono inline-flex items-center gap-2 text-xs font-semibold uppercase tracking-[0.16em] text-[var(--console-text)]`,children:[(0,R.jsx)(x,{className:`size-3.5 text-[var(--console-accent)]`}),`Session Summary`]}),r?(0,R.jsx)(E,{className:`size-3.5 text-[var(--console-muted)]`}):(0,R.jsx)(de,{className:`size-3.5 text-[var(--console-muted)]`})]}),r?(0,R.jsx)(`div`,{className:`border-t border-[var(--console-border)] px-4 py-4`,children:(0,R.jsx)(`div`,{className:`console-markdown text-sm leading-relaxed text-[var(--console-text)]`,children:(0,R.jsx)(Zi,{text:n})})}):null]}):null}var Bl=[{id:`1`,roleWidth:`w-14`,timeWidth:`w-20`,bodyWidths:[`w-full`,`w-10/12`,`w-7/12`]},{id:`2`,roleWidth:`w-16`,timeWidth:`w-24`,bodyWidths:[`w-9/12`,`w-7/12`]},{id:`3`,roleWidth:`w-14`,timeWidth:`w-16`,bodyWidths:[`w-full`,`w-11/12`,`w-8/12`,`w-5/12`]},{id:`4`,roleWidth:`w-16`,timeWidth:`w-20`,bodyWidths:[`w-10/12`,`w-8/12`]},{id:`5`,roleWidth:`w-14`,timeWidth:`w-24`,bodyWidths:[`w-full`,`w-10/12`,`w-9/12`]}];function Vl({className:e}){return(0,R.jsx)(`div`,{className:`rounded-sm bg-[var(--console-border)] ${e}`})}function Hl(){return(0,R.jsxs)(`div`,{className:`mx-auto flex min-h-full w-full max-w-5xl flex-col gap-8 px-2 md:px-4`,children:[(0,R.jsx)(`div`,{className:`flex flex-1 flex-col gap-8`,children:Bl.map(e=>(0,R.jsx)(`article`,{className:`w-full border-l-2 border-[var(--console-thread)] pl-4 pr-3 md:pr-5`,children:(0,R.jsxs)(`div`,{className:`flex gap-4`,children:[(0,R.jsx)(`div`,{className:`shrink-0 pt-1`,children:(0,R.jsx)(`div`,{className:`flex size-8 items-center justify-center rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)]`,children:(0,R.jsx)(`div`,{className:`size-3.5 rounded-sm bg-[var(--console-border-strong)] animate-pulse motion-reduce:animate-none`})})}),(0,R.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-3`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,R.jsx)(Vl,{className:`${e.roleWidth} h-3 animate-pulse motion-reduce:animate-none`}),(0,R.jsx)(Vl,{className:`${e.timeWidth} h-2.5 animate-pulse motion-reduce:animate-none`})]}),(0,R.jsx)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white p-4 shadow-[0_1px_2px_rgba(15,23,42,0.04)]`,children:(0,R.jsx)(`div`,{className:`space-y-2`,children:e.bodyWidths.map(t=>(0,R.jsx)(Vl,{className:`${t} h-3 animate-pulse motion-reduce:animate-none`},`${e.id}-${t}`))})})]})]})},e.id))}),(0,R.jsx)(`div`,{className:`min-h-24 flex-1 rounded-sm border border-[var(--console-border)] bg-white/60 animate-pulse motion-reduce:animate-none`})]})}var Ul={recent:`Recent`,title:`Title`,user_message:`User message`,assistant_reply:`Assistant reply`,tool_output:`Tool output`,file_path:`File path`};function Wl(e){return e.replaceAll(`&`,`&`).replaceAll(`<`,`<`).replaceAll(`>`,`>`).replaceAll(`"`,`"`).replaceAll(`'`,`'`).replaceAll(`<mark>`,`<mark>`).replaceAll(`</mark>`,`</mark>`)}function Gl({query:e,state:t,agentNameMap:n,agents:r,projects:i,filters:a,onChangeFilters:o,onOpenResult:s,onRetry:c,selectedIndex:l,registerResultRef:u}){let d=t.status===`loaded`?t.results:[],f=(0,R.jsx)(Dn,{agents:r,projects:i,filters:a,onChangeFilters:o});return t.status===`loading`?(0,R.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[f,(0,R.jsx)(`p`,{className:`sr-only`,"aria-live":`polite`,children:`Searching…`}),(0,R.jsx)(`div`,{className:`grid gap-3`,children:Array.from({length:4}).map((e,t)=>(0,R.jsxs)(`div`,{className:`animate-pulse rounded-sm border border-[var(--console-border)] bg-white/80 p-4 motion-reduce:animate-none`,children:[(0,R.jsx)(`div`,{className:`h-3 w-32 rounded bg-[var(--console-surface-muted)]`}),(0,R.jsx)(`div`,{className:`mt-3 h-4 w-2/3 rounded bg-[var(--console-surface-muted)]`}),(0,R.jsx)(`div`,{className:`mt-2 h-3 w-full rounded bg-[var(--console-surface-muted)]`}),(0,R.jsx)(`div`,{className:`mt-1 h-3 w-5/6 rounded bg-[var(--console-surface-muted)]`})]},t))})]}):t.status===`failed`?(0,R.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[f,(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-error-border)] bg-[var(--console-error-bg)] p-6`,"aria-live":`polite`,children:[(0,R.jsx)(`h2`,{className:`console-mono text-sm font-semibold text-[var(--console-error)]`,children:`Search Failed`}),(0,R.jsxs)(`p`,{className:`console-mono mt-2 break-words text-xs text-[var(--console-error)]`,children:[t.error,`. Check the server connection, then try again.`]}),(0,R.jsx)(`button`,{type:`button`,onClick:c,className:`console-mono mt-4 rounded-sm border border-[var(--console-error-border)] bg-white px-3 py-1.5 text-xs font-semibold text-[var(--console-error)] transition-colors hover:bg-[var(--console-error-bg)] focus-visible:ring-2 focus-visible:ring-[var(--console-error)] focus-visible:ring-offset-2 focus-visible:outline-none`,children:`Retry Search`})]})]}):d.length===0?(0,R.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[f,(0,R.jsxs)(`div`,{className:`rounded-sm border border-[var(--console-border)] bg-white/80 p-6`,children:[(0,R.jsx)(`h2`,{className:`console-mono text-sm font-semibold text-[var(--console-text)]`,children:e?`No matches`:`No recent sessions`}),e?(0,R.jsxs)(`p`,{className:`console-mono mt-2 text-xs text-[var(--console-muted)]`,children:[`Query: `,e]}):null]})]}):(0,R.jsxs)(`div`,{className:`grid gap-3`,children:[f,(0,R.jsx)(`div`,{className:`console-mono text-[11px] text-[var(--console-muted)]`,children:`Navigate j k · Open Enter · Exit Esc`}),d.map((t,r)=>{let i=t.agentName.toLowerCase(),a=n.get(i)??t.agentName,o=`${t.agentName}/${t.session.id}`;return(0,R.jsxs)(M,{ref:e=>u(o,e),to:`/${i}/${t.session.id}`,state:{searchQuery:e},onClick:s,className:`rounded-sm border bg-white/85 p-4 transition-colors hover:border-[var(--console-border-strong)] hover:bg-white focus-visible:ring-2 focus-visible:ring-[var(--console-accent)] focus-visible:ring-offset-2 focus-visible:outline-none ${r===l?`border-[var(--console-border-strong)]`:`border-[var(--console-border)]`}`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`console-mono rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-1.5 py-0.5 text-[10px] uppercase text-[var(--console-muted)]`,children:a}),(0,R.jsx)(`span`,{className:`console-mono rounded-sm border border-[var(--console-border)] bg-white px-1.5 py-0.5 text-[10px] uppercase text-[var(--console-muted)]`,children:Ul[t.matchType]}),(0,R.jsx)(`span`,{className:`console-mono text-[11px] text-[var(--console-muted)]`,children:t.session.directory})]}),(0,R.jsx)(`h2`,{className:`console-mono mt-3 text-sm font-semibold text-[var(--console-text)]`,children:B(t.session)}),(0,R.jsx)(xn,{tags:t.session.smart_tags,className:`mt-2`}),(0,R.jsx)(`p`,{className:`console-mono mt-2 text-xs leading-6 text-[var(--console-muted)] [&_mark]:bg-[var(--console-accent)] [&_mark]:px-0.5 [&_mark]:text-white`,dangerouslySetInnerHTML:{__html:Wl(t.snippet||B(t.session))}})]},o)})]})}function Kl({loading:e,error:t,viewState:n,detailHighlightQuery:r,agents:i,agentCatalog:a,agentNameMap:o,projects:s,landingSessions:c,sessionsByAgent:l,activeProject:u,activeProjectSessions:d,dashboard:f,sessionDetail:p,projectDashboard:m,search:h,bookmarks:g}){let _=(0,F.useMemo)(()=>i.map(e=>({key:e.name.toLowerCase(),name:e.displayName,icon:e.icon,count:e.count})),[i]);return e?(0,R.jsx)(Hl,{}):h.active?(0,R.jsx)(an,{id:`SearchResultsPanel`,detail:{results:h.state.status===`loaded`?h.state.results.length:0,loading:h.state.status===`loading`},children:(0,R.jsx)(Gl,{query:h.query,state:h.state,agentNameMap:o,agents:i,projects:h.projectOptions,filters:h.filters,onChangeFilters:h.onChangeFilters,onOpenResult:h.onClose,onRetry:h.onRetry,selectedIndex:h.selectedIndex,registerResultRef:h.registerResultRef})}):t?(0,R.jsx)(`div`,{className:`mx-auto max-w-4xl rounded-sm border border-[var(--console-error-border)] bg-[var(--console-error-bg)] p-6 text-sm text-[var(--console-error)]`,children:t}):n.mode===`root`?f?(0,R.jsx)(an,{id:`Dashboard`,detail:{sessions:f.totals.sessions,projects:s.length},children:(0,R.jsx)(Ai,{data:f,agentCatalog:a,projects:s,bookmarkedSessions:g.sessions,isBookmarked:g.isBookmarked,onToggleBookmark:(e,t)=>{if(`agentName`in e){g.toggleSessionBookmark(e,t??e.agentName.toLowerCase());return}g.toggleBookmark(e)}})}):(0,R.jsx)(Li,{type:`global`,agentCatalog:a,sessions:c,agentItems:_,isBookmarked:g.isBookmarked,onToggleBookmark:e=>g.toggleSessionBookmark(e,e.agentKey)}):n.mode===`projects`?(0,R.jsx)(Ui,{projects:s,agentCatalog:a}):n.mode===`project`?(0,R.jsx)(qi,{project:u,agentCatalog:a,projectKey:n.activeProjectKey,dashboard:m.dashboard,loading:m.loading,error:m.error,sessions:d,activeAgent:m.selectedAgent,onChangeAgent:m.onChangeAgent,isBookmarked:g.isBookmarked,onToggleSessionBookmark:g.toggleSessionBookmark}):n.mode===`agent`?(0,R.jsx)(Li,{type:`agent`,agentCatalog:a,sessions:l.get(n.activeAgentKey)??[],agentItems:_,activeAgentKey:n.activeAgentKey,isBookmarked:g.isBookmarked,onToggleBookmark:e=>g.toggleSessionBookmark(e,e.agentKey)}):n.mode===`session`?p.loading?(0,R.jsx)(Hl,{}):p.error||!p.session?(0,R.jsx)(Li,{type:`missing-session`,agentCatalog:a,sessions:l.get(n.activeAgentKey)??[],agentItems:_,activeAgentKey:n.activeAgentKey,attemptedSessionSlug:n.activeSessionSlug,isBookmarked:g.isBookmarked,onToggleBookmark:e=>g.toggleSessionBookmark(e,e.agentKey)}):(0,R.jsx)(an,{id:`SessionDetail`,detail:{messages:p.session.messages.length,session:p.session.id},children:(0,R.jsx)(Rl,{session:p.session,agentCatalog:a,highlightQuery:r})}):n.mode===`missingAgent`?(0,R.jsx)(Li,{type:`missing-agent`,agentCatalog:a,sessions:c,agentItems:_,attemptedAgentKey:n.attemptedKey,isBookmarked:g.isBookmarked,onToggleBookmark:e=>g.toggleSessionBookmark(e,e.agentKey)}):(0,R.jsx)(`div`,{className:`text-sm text-[var(--console-muted)]`,children:`Invalid route.`})}var ql=`codesesh.shortcuts-hint-dismissed`;function Jl(){let e=b(),t=fr(),n=Mr(t.config?.window),{timeWindow:r}=n,{activeAgents:i,agentCatalog:a,sessions:o,projects:s,dashboard:c,window:l,validAgentKeys:u,agentNameMap:d,loading:f,error:p,version:m,reload:h,applyLiveEvent:g}=t;pr({window:r,reload:h});let[_,v]=(0,F.useState)(null),{scanStatus:y,setScanStatus:x}=mn(),[S,C]=(0,F.useState)(null),[w,T]=(0,F.useState)(!1),[ee,te]=(0,F.useState)(!0),[E,ne]=(0,F.useState)(!1),[D,re]=(0,F.useState)(null),O=oe(),k=(0,F.useMemo)(()=>pn(O.pathname,u),[O.pathname,u]),A=gn(k),{session:ie,sessionError:ae,refresh:se}=A;(0,F.useEffect)(()=>{L(`route.change`,{path:O.pathname,mode:k.mode,agent:k.activeAgentKey,session:k.activeSessionSlug})},[O.pathname,k.mode,k.activeAgentKey,k.activeSessionSlug]),(0,F.useEffect)(()=>{k.mode===`project`&&v({kind:k.activeProjectKind,key:k.activeProjectKey})},[k]);let ce=(0,F.useMemo)(()=>Rn(o,i),[o,i]),j=Wn(ce,l),{draftSearchQuery:le,activeSearchQuery:ue,searchMode:de,searchState:fe,searchResults:pe,searchLoading:me,selectedSearchIndex:he,searchInputRef:_e,setDraftSearchQuery:ve,setSelectedSearchIndex:ye,openSearch:be,submitSearch:xe,closeSearch:Se}=j,Ce=de,N=Ce?ue:typeof O.state==`object`&&O.state!==null&&`searchQuery`in O.state&&typeof O.state.searchQuery==`string`?O.state.searchQuery:``,we=tr(o),{bookmarkedSessions:Te,isSessionBookmarked:Ee,toggleBookmark:De,toggleSessionBookmark:Oe}=we,ke=k.mode===`project`?k.activeProjectKind:null,Ae=k.mode===`project`?k.activeProjectKey:null,je=nr(l,(0,F.useMemo)(()=>({projectKind:ke??void 0,projectKey:Ae??void 0,identityKey:ke&&Ae?un({kind:ke,key:Ae}):void 0}),[Ae,ke])),{browseBy:Me,selectBrowseBy:Ne,activeAgentKey:Pe,activeAgent:Fe,activeProject:Ie,activeProjectSessions:Le,openedSessionProjectIdentity:ze,selectedProjectNavigation:P,sidebarSessions:Be,sidebarSessionLookup:Ve,bookmarkedSidebarSessionIds:He}=or({viewState:k,sessionIndexes:ce,session:ie,agents:i,projects:s,selectedProjectAgent:je.selectedAgent,isSessionBookmarked:Ee}),Ue=P?.identity??null,We=P?.identityKey??null,Ge=(0,F.useCallback)(t=>{C(t.id),e(`/${t.slug}`)},[e]),Ke=(0,F.useCallback)(e=>{Oe(e,An(e))},[Oe]),qe=(0,F.useCallback)(e=>{re({agentKey:An(e),sessionId:e.id,title:e.title,displayTitle:e.display_title})},[]),Je=(0,F.useCallback)(e=>{re({agentKey:e.agentKey,sessionId:e.sessionId,title:e.title,displayTitle:e.display_title})},[]),Ye=(0,F.useCallback)(t=>{C(t);let n=Ve.byId.get(t);n&&e(`/${n.slug}`)},[e,Ve]),Xe=Gt(y),Ze=y?.active===!0,{liveNotice:Qe}=mr({applyLiveEvent:g,setScanStatus:x}),$e=(0,F.useRef)(0),et=(0,F.useEffectEvent)(()=>{se()});(0,F.useEffect)(()=>{if(m!==0){if($e.current===0){$e.current=m;return}$e.current=m,et()}},[m]);let tt=(0,F.useCallback)(async()=>{await Promise.all([r?h(r):void 0,we.refresh()])},[we,h,r]),nt=(0,F.useCallback)(async e=>{D&&(await Ot(D.agentKey,D.sessionId,e),await tt())},[D,tt]),rt=(0,F.useCallback)(async()=>{D&&(await kt(D.agentKey,D.sessionId),await tt())},[D,tt]);(0,F.useEffect)(()=>{try{te(window.localStorage.getItem(ql)===`1`)}catch{te(!0)}},[]),(0,F.useEffect)(()=>{if(!Ce){if(k.mode===`session`){C(k.activeSessionSlug);return}if(k.mode===`agent`){C(null);return}C(null)}},[Ce,k.mode,k.activeSessionSlug,Be]);let it=Rr({viewState:k,browseBy:Me,isSearchMode:Ce,searchSubtitle:fe.status===`failed`?`Search failed for "${ue}"`:Wt(ue,me,pe.length),dashboard:c,projects:s,sessionCount:o.length,activeProject:Ie?.project??null,activeAgent:Fe,sidebarSessionCount:Be.length,session:ie,sessionError:ae,selectedProjectIdentity:Ue,selectedProject:P?.project??null}),at=(0,R.jsx)(Kl,{loading:f,error:p,viewState:k,detailHighlightQuery:N,agents:i,agentCatalog:a,agentNameMap:d,projects:s,landingSessions:ce.landingSessions,sessionsByAgent:ce.byLandingAgent,activeProject:Ie?.project??null,activeProjectSessions:Le,dashboard:c,sessionDetail:{session:A.session,loading:A.sessionLoading,error:A.sessionError},projectDashboard:{dashboard:je.dashboard,loading:je.loading,error:je.error,selectedAgent:je.selectedAgent,onChangeAgent:je.setSelectedAgent},search:{active:j.searchMode,query:j.activeSearchQuery,state:j.searchState,projectOptions:j.projectOptions,filters:j.searchFilters,onChangeFilters:j.setSearchFilters,onClose:j.closeSearch,onRetry:j.retrySearch,selectedIndex:j.selectedSearchIndex,registerResultRef:j.registerResultRef},bookmarks:{sessions:we.bookmarkedSessions,isBookmarked:we.isSessionBookmarked,toggleBookmark:we.toggleBookmark,toggleSessionBookmark:we.toggleSessionBookmark}});function ot(){te(!0);try{window.localStorage.setItem(ql,`1`)}catch{}}function st(t){if(!(t===`projects`&&Ze)){if(Ne(t),C(null),t===`projects`){let t=ze??(k.mode===`session`?null:_);e(t?fn(t):`/projects`);return}e(`/`)}}return gr({viewState:k,browseBy:Me,navigate:e,activeAgentKey:Pe,sidebarSessions:Be,sidebarSessionLookup:Ve,selectedSidebarSessionId:S,setSelectedSidebarSessionId:C,selectedProjectNavigationIdentity:Ue,shortcutHelpOpen:w,setShortcutHelpOpen:T,dismissShortcutHint:ot,isSearchMode:Ce,activeSearchQuery:ue,searchResults:pe,selectedSearchIndex:he,setSelectedSearchIndex:ye,setDraftSearchQuery:ve,openSearch:be,closeSearch:Se}),(0,R.jsxs)(`div`,{className:`console-ui flex h-screen flex-col overflow-hidden bg-[var(--console-bg)] text-[var(--console-text)]`,children:[(0,R.jsx)(`header`,{className:`shrink-0 border-b border-[var(--console-border)] bg-white/85 backdrop-blur-sm`,children:(0,R.jsxs)(`div`,{className:`grid min-h-14 grid-cols-[auto_1fr] items-center gap-3 px-4 py-2 sm:grid-cols-[auto_1fr_auto] sm:py-0`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(`button`,{type:`button`,"aria-expanded":!E,"aria-label":E?`Expand sidebar`:`Collapse sidebar`,title:E?`Expand sidebar`:`Collapse sidebar`,onClick:()=>ne(e=>!e),className:`hidden rounded-sm border border-[var(--console-border)] bg-white p-1.5 text-[var(--console-muted)] transition-colors hover:bg-[var(--console-surface-muted)] hover:text-[var(--console-text)] lg:inline-flex`,children:E?(0,R.jsx)(Re,{className:`size-4`}):(0,R.jsx)(ge,{className:`size-4`})}),(0,R.jsxs)(M,{to:`/`,className:`flex items-center gap-2 text-[var(--console-text)]`,children:[(0,R.jsx)(`img`,{src:`/logo.svg?v=3`,alt:`CodeSesh`,className:`h-6 w-6 rounded-sm`}),(0,R.jsx)(`span`,{className:`console-mono text-sm font-semibold uppercase tracking-[0.05em]`,children:`CodeSesh`})]})]}),(0,R.jsxs)(`form`,{className:`order-3 col-span-2 flex w-full items-center justify-center gap-2 sm:order-none sm:col-span-1 sm:mx-auto sm:max-w-[560px]`,onSubmit:e=>{e.preventDefault(),xe()},children:[(0,R.jsxs)(`label`,{className:`flex min-w-0 flex-1 items-center rounded-sm border border-[var(--console-border)] bg-white px-2 py-1 focus-within:border-[var(--console-border-strong)] focus-within:ring-2 focus-within:ring-[var(--console-accent)] focus-within:ring-offset-2`,children:[(0,R.jsx)(`span`,{className:`sr-only`,children:`Search Sessions`}),(0,R.jsx)(`input`,{ref:_e,type:`search`,name:`session-search`,autoComplete:`off`,value:le,onChange:e=>ve(e.target.value),placeholder:`Search sessions… /`,className:`console-mono w-full min-w-0 bg-transparent text-xs text-[var(--console-text)] outline-none placeholder:text-[var(--console-muted)]`})]}),(0,R.jsx)(`button`,{type:`submit`,className:`console-mono rounded-sm border border-[var(--console-border-strong)] bg-[var(--console-surface-muted)] px-3 py-1 text-xs text-[var(--console-text)] transition-colors hover:bg-white focus-visible:ring-2 focus-visible:ring-[var(--console-accent)] focus-visible:ring-offset-2 focus-visible:outline-none`,children:`Search`})]}),(0,R.jsxs)(`div`,{className:`flex items-center justify-end gap-2`,children:[(0,R.jsxs)(`button`,{type:`button`,onClick:()=>{T(!0),ot()},className:`console-mono rounded-sm border border-[var(--console-border)] bg-white px-2 py-1 text-xs text-[var(--console-text)] transition-colors hover:bg-[var(--console-surface-muted)]`,title:`Show keyboard shortcuts`,children:[`?`,(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:` Shortcuts`})]}),r&&n.preset?(0,R.jsx)(Jt,{window:r,preset:n.preset,customFrom:n.customFrom,customTo:n.customTo,onSelectPreset:n.selectPreset,onSelectCustom:n.selectCustom}):null,(0,R.jsxs)(`span`,{className:`console-mono hidden rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-2 py-1 text-xs text-[var(--console-muted)] sm:inline-flex`,children:[`v`,`0.15.0`]})]})]})}),(0,R.jsxs)(`div`,{className:`flex min-h-0 flex-1`,children:[(0,R.jsx)(ni,{model:{sidebarCollapsed:E,browseBy:Me,isScanActive:Ze,viewState:k,agents:i,agentCatalog:a,activeAgentKey:Pe,scanStatus:y,projects:s,selectedProjectNavigationId:We,loading:f,bookmarkedSessions:Te,sidebarSessions:Be,selectedSidebarSessionId:S,bookmarkedSidebarSessionIds:He},actions:{onChangeBrowseBy:st,onSelectProject:v,onToggleBookmark:De,onSelectFlatSidebarSession:Ge,onToggleSidebarSessionBookmark:Ke,onRenameSession:qe,onRenameBookmarkedSession:Je,onSelectTreeSidebarSession:Ye}}),(0,R.jsxs)(`main`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,R.jsx)(`section`,{className:`shrink-0 border-b border-[var(--console-border)] bg-white/70 px-4 py-4 backdrop-blur-sm md:px-8`,children:(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`nav`,{"aria-label":`Breadcrumb`,className:`console-mono mb-2 flex flex-wrap items-center gap-1 text-[11px] text-[var(--console-muted)]`,children:it.breadcrumbs.map((e,t)=>(0,R.jsxs)(`span`,{className:`flex items-center gap-1`,children:[e.to?(0,R.jsx)(M,{to:e.to,className:`transition-colors hover:text-[var(--console-text)]`,children:e.label}):(0,R.jsx)(`span`,{className:`text-[var(--console-text)]`,children:e.label}),t<it.breadcrumbs.length-1?(0,R.jsx)(`span`,{children:`/`}):null]},`${e.label}-${t}`))}),(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`console-mono rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-1.5 py-0.5 text-[10px] font-bold uppercase text-[var(--console-muted)]`,children:it.contextLabel}),(0,R.jsx)(`h1`,{className:`console-mono text-xl font-semibold tracking-tight text-[var(--console-text)]`,children:it.title})]}),(0,R.jsx)(`div`,{className:`console-mono mt-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-[var(--console-muted)]`,children:it.subtitle}),(0,R.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2`,children:[ee?null:(0,R.jsxs)(`div`,{className:`console-mono inline-flex items-center gap-2 rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-2 py-1 text-[11px] text-[var(--console-text)]`,children:[(0,R.jsx)(`span`,{children:`Keyboard navigation available`}),(0,R.jsx)(`span`,{className:`rounded-sm border border-[var(--console-border)] bg-white px-1`,children:`?`}),(0,R.jsx)(`button`,{type:`button`,onClick:ot,className:`text-[var(--console-muted)] transition-colors hover:text-[var(--console-text)]`,"aria-label":`Dismiss keyboard shortcuts hint`,children:`×`})]}),!Ce&&k.mode===`session`?(0,R.jsx)(`span`,{className:`console-mono inline-flex rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-2 py-1 text-[11px] text-[var(--console-muted)]`,children:`Esc back`}):null,!Ce&&k.mode===`session`&&ie?(0,R.jsx)(Bt,{agentName:k.activeAgentKey,sessionId:ie.id,directory:ie.directory}):null]}),Qe?(0,R.jsx)(`p`,{className:`console-mono mt-2 inline-flex rounded-sm border border-[var(--console-border)] bg-[var(--console-surface-muted)] px-2 py-1 text-[11px] text-[var(--console-text)]`,children:Qe}):null,Xe&&k.mode===`root`?(0,R.jsx)(`p`,{className:`console-mono mt-2 inline-flex max-w-4xl rounded-sm border border-[var(--console-warning-border)] bg-[var(--console-warning-bg)] px-2 py-1 text-[11px] leading-relaxed text-[var(--console-warning)]`,children:Xe}):null]})}),(0,R.jsx)(`section`,{className:`console-scrollbar bg-grid min-h-0 flex-1 overflow-y-auto px-4 py-6 md:px-8`,children:(0,R.jsx)(Pt,{children:(0,R.jsx)(an,{id:`MainContent`,detail:{mode:k.mode,search:Ce,sessions:o.length},children:at})})})]})]}),(0,R.jsx)(ii,{open:w,onClose:()=>T(!1)}),(0,R.jsx)(Vt,{target:D,onClose:()=>re(null),onSave:nt,onRemove:rt})]})}ft(),ct.createRoot(document.getElementById(`root`)).render((0,R.jsx)(F.StrictMode,{children:(0,R.jsx)(fe,{children:(0,R.jsx)(an,{id:`App`,children:(0,R.jsx)(Jl,{})})})}));
|