spiracha 1.1.2 → 1.2.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.
Files changed (51) hide show
  1. package/AGENTS.md +13 -7
  2. package/README.md +6 -2
  3. package/apps/ui/AGENTS.md +2 -0
  4. package/apps/ui/README.md +3 -1
  5. package/apps/ui/dist/client/assets/{analytics-CqWZmyV6.js → analytics-Cv0JMDN2.js} +1 -1
  6. package/apps/ui/dist/client/assets/{checkbox-DXM4lkJq.js → checkbox-DjHij7DJ.js} +1 -1
  7. package/apps/ui/dist/client/assets/{data-table-DnPYMPCD.js → data-table-Bgnh7phF.js} +1 -1
  8. package/apps/ui/dist/client/assets/{delete-confirm-dialog-CcZaRX33.js → delete-confirm-dialog-CIZy_LXD.js} +1 -1
  9. package/apps/ui/dist/client/assets/download-DQtfva4z.js +1 -0
  10. package/apps/ui/dist/client/assets/{es2015-Bm0kEzx2.js → es2015-DsDKdYCE.js} +1 -1
  11. package/apps/ui/dist/client/assets/{formatters-C12LmYaa.js → formatters-CWFrMKSn.js} +1 -1
  12. package/apps/ui/dist/client/assets/{index-DdJ7ahIt.js → index-C_-e0lDI.js} +2 -2
  13. package/apps/ui/dist/client/assets/{input-CEsI7EpI.js → input-BbgApiqZ.js} +1 -1
  14. package/apps/ui/dist/client/assets/{metric-card-9jwBF7rG.js → metric-card-BJX5rkHK.js} +1 -1
  15. package/apps/ui/dist/client/assets/{page-header-Dr_h1CVv.js → page-header-ODLuGLAB.js} +1 -1
  16. package/apps/ui/dist/client/assets/{projects._project-uyNGnpjH.js → projects._project-C2Pys_bB.js} +1 -1
  17. package/apps/ui/dist/client/assets/{projects._project-zoM8d2nH.js → projects._project-CHvAKvlu.js} +1 -1
  18. package/apps/ui/dist/client/assets/{projects.index-D1CWVN-O.js → projects.index-BmwtS1x-.js} +1 -1
  19. package/apps/ui/dist/client/assets/{projects.index-DukMuny6.js → projects.index-CuLw73mt.js} +1 -1
  20. package/apps/ui/dist/client/assets/{routes-Gr2Wwh83.js → routes-CfnaTOlj.js} +1 -1
  21. package/apps/ui/dist/client/assets/{select-CFim44gT.js → select-B1kH_5lx.js} +1 -1
  22. package/apps/ui/dist/client/assets/{settings-DqhyDxo2.js → settings-mYTB3sso.js} +1 -1
  23. package/apps/ui/dist/client/assets/{threads._threadId-DT75NiBa.js → threads._threadId-CUiCZSwo.js} +1 -1
  24. package/apps/ui/dist/client/assets/{threads._threadId-Df5VXIuZ.js → threads._threadId-C_47okme.js} +1 -1
  25. package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-kj_QB_26.js +99 -0
  26. package/apps/ui/dist/server/assets/{analytics-BMxW_bZL.js → analytics-2QpLKjlG.js} +1 -1
  27. package/apps/ui/dist/server/assets/{codex-queries-CAF6HYiG.js → codex-queries-BH4Cb0v3.js} +2 -2
  28. package/apps/ui/dist/server/assets/{codex-server-C01sv0JJ.js → codex-server-DqzruLmg.js} +17 -86
  29. package/apps/ui/dist/server/assets/{download-C5rkk_Bo.js → download-Drctxary.js} +7 -7
  30. package/apps/ui/dist/server/assets/{projects._project-CcJLp_A8.js → projects._project-DreIU5b0.js} +3 -3
  31. package/apps/ui/dist/server/assets/{projects._project-CJ7l0ynC.js → projects._project-gT01HBqH.js} +2 -2
  32. package/apps/ui/dist/server/assets/{projects.index-srtogpuF.js → projects.index-BYmgSGAj.js} +1 -1
  33. package/apps/ui/dist/server/assets/{router-C_w-haH6.js → router-Qj5Kn7bl.js} +6 -6
  34. package/apps/ui/dist/server/assets/{routes-BhbxvJE7.js → routes-BtcXuK0x.js} +2 -2
  35. package/apps/ui/dist/server/assets/{routes-CPe-ppmC.js → routes-_LbCIjtJ.js} +2 -2
  36. package/apps/ui/dist/server/assets/{threads._threadId-euyNckhj.js → threads._threadId-D5m6ypGw.js} +3 -3
  37. package/apps/ui/dist/server/assets/{threads._threadId-Ba7vv6-K.js → threads._threadId-DcbAJkwf.js} +2 -2
  38. package/apps/ui/dist/server/server.js +19 -36
  39. package/bin/codex-chats-claude.js +5 -0
  40. package/bin/codex-chats.js +5 -0
  41. package/bin/spiracha.js +5 -0
  42. package/package.json +9 -6
  43. package/src/lib/codex-browser-export.ts +2 -2
  44. package/src/lib/codex-exporter-cli.ts +9 -9
  45. package/src/lib/codex-exporter-transcript.ts +16 -190
  46. package/src/lib/codex-exporter-types.ts +1 -1
  47. package/src/lib/codex-exporter.ts +0 -1
  48. package/src/lib/interactive-cli.ts +2 -2
  49. package/src/mcp-server.ts +2 -2
  50. package/apps/ui/dist/client/assets/download-DOwxk-cG.js +0 -1
  51. package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-C0V305Nt.js +0 -99
@@ -1,4 +1,4 @@
1
- import{a as e,c as t,i as n,l as r,n as i,r as a,s as o,t as s,u as c}from"./formatters-C12LmYaa.js";import{f as l,i as u,n as d,p as f,r as p,t as m}from"./delete-confirm-dialog-CcZaRX33.js";import{r as h,t as g}from"./checkbox-DXM4lkJq.js";import{a as _,n as v,r as y,t as b}from"./download-DOwxk-cG.js";import{a as x}from"./es2015-Bm0kEzx2.js";import{A as S,D as C,E as w,G as T,H as E,I as D,M as O,O as k,P as A,V as j,W as M,c as N,d as P,dt as F,ft as I,g as L,h as ee,l as te,lt as ne,mt as re,n as ie,p as ae,pt as oe,ut as se}from"./index-DdJ7ahIt.js";import{t as R}from"./metric-card-9jwBF7rG.js";import{t as ce}from"./page-header-Dr_h1CVv.js";function le(e,t){return r(e,c,t)}var z=M(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),B=re(oe(),1),V=F(),H=`Tabs`,[ue,de]=O(H,[u]),fe=u(),[pe,U]=ue(H),me=B.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,onValueChange:i,defaultValue:a,orientation:o=`horizontal`,dir:s,activationMode:c=`automatic`,...l}=e,u=x(s),[d,f]=k({prop:r,onChange:i,defaultProp:a??``,caller:H});return(0,V.jsx)(pe,{scope:n,baseId:w(),value:d,onValueChange:f,orientation:o,dir:u,activationMode:c,children:(0,V.jsx)(A.div,{dir:u,"data-orientation":o,...l,ref:t})})});me.displayName=H;var he=`TabsList`,ge=B.forwardRef((e,t)=>{let{__scopeTabs:n,loop:r=!0,...i}=e,a=U(he,n),o=fe(n);return(0,V.jsx)(p,{asChild:!0,...o,orientation:a.orientation,dir:a.dir,loop:r,children:(0,V.jsx)(A.div,{role:`tablist`,"aria-orientation":a.orientation,...i,ref:t})})});ge.displayName=he;var _e=`TabsTrigger`,ve=B.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,disabled:i=!1,...a}=e,o=U(_e,n),s=fe(n),c=xe(o.baseId,r),l=Se(o.baseId,r),u=r===o.value;return(0,V.jsx)(d,{asChild:!0,...s,focusable:!i,active:u,children:(0,V.jsx)(A.button,{type:`button`,role:`tab`,"aria-selected":u,"aria-controls":l,"data-state":u?`active`:`inactive`,"data-disabled":i?``:void 0,disabled:i,id:c,...a,ref:t,onMouseDown:S(e.onMouseDown,e=>{!i&&e.button===0&&e.ctrlKey===!1?o.onValueChange(r):e.preventDefault()}),onKeyDown:S(e.onKeyDown,e=>{[` `,`Enter`].includes(e.key)&&o.onValueChange(r)}),onFocus:S(e.onFocus,()=>{let e=o.activationMode!==`manual`;!u&&!i&&e&&o.onValueChange(r)})})})});ve.displayName=_e;var ye=`TabsContent`,be=B.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,forceMount:i,children:a,...o}=e,s=U(ye,n),c=xe(s.baseId,r),l=Se(s.baseId,r),u=r===s.value,d=B.useRef(u);return B.useEffect(()=>{let e=requestAnimationFrame(()=>d.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,V.jsx)(C,{present:i||u,children:({present:n})=>(0,V.jsx)(A.div,{"data-state":u?`active`:`inactive`,"data-orientation":s.orientation,role:`tabpanel`,"aria-labelledby":c,hidden:!n,id:l,tabIndex:0,...o,ref:t,style:{...e.style,animationDuration:d.current?`0s`:void 0},children:n&&a})})});be.displayName=ye;function xe(e,t){return`${e}-trigger-${t}`}function Se(e,t){return`${e}-content-${t}`}var Ce=me,we=ge,Te=ve,Ee=be;function W({title:e,value:t}){return(0,V.jsxs)(`section`,{className:`rounded-[1.6rem] border border-[var(--border)] bg-[var(--panel)] p-5 shadow-[var(--panel-shadow)]`,children:[(0,V.jsx)(`h3`,{className:`font-semibold text-[var(--muted-foreground)] text-sm uppercase tracking-[0.18em]`,children:e}),(0,V.jsx)(`pre`,{className:`mt-4 overflow-x-auto rounded-2xl border border-[var(--border)] bg-[var(--code-background)] p-4 text-[var(--code-foreground)] text-xs leading-5`,children:JSON.stringify(t,null,2)})]})}function G({items:e,title:t}){return(0,V.jsxs)(`section`,{className:`rounded-[1.6rem] border border-[var(--border)] bg-[var(--panel)] p-5 shadow-[var(--panel-shadow)]`,children:[(0,V.jsx)(`h3`,{className:`font-semibold text-[var(--muted-foreground)] text-sm uppercase tracking-[0.18em]`,children:t}),(0,V.jsx)(`dl`,{className:`mt-4 space-y-3`,children:e.map(e=>(0,V.jsxs)(`div`,{className:`grid gap-1 sm:grid-cols-[11rem_1fr] sm:items-start`,children:[(0,V.jsx)(`dt`,{className:`font-medium text-[var(--muted-foreground)] text-xs uppercase tracking-[0.14em]`,children:e.label}),(0,V.jsx)(`dd`,{className:`min-w-0 text-sm leading-6`,children:e.value})]},e.label))})]})}var De=re(I(),1);function Oe(e,t,n){let r=Array(e);return new Proxy(r,{get(r,i,a){if(typeof i==`string`){let a=i.charCodeAt(0);if(a>=48&&a<=57){let a=+i;if(Number.isInteger(a)&&a>=0&&a<e){let e=r[a];if(!e){let i=t[a*2];e=r[a]={index:a,key:n(a),start:i,size:t[a*2+1],end:i+t[a*2+1],lane:0}}return e}}if(i===`length`)return e}return Reflect.get(r,i,a)}})}function K(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o=e();return o.length!==r.length||o.some((e,t)=>r[t]!==e)?(r=o,i=t(...o),n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1,i):i}return o.updateDeps=e=>{r=e},o}function ke(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var Ae=(e,t)=>Math.abs(e-t)<1.01,je=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}},q,Me=()=>{if(q!==void 0)return q;if(typeof navigator>`u`)return q=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return q=!0;let e=navigator.maxTouchPoints;return q=navigator.platform===`MacIntel`&&e!==void 0&&e>0},Ne=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},Pe=e=>e,Fe=e=>{let t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1)-t+1,r=Array(n);for(let e=0;e<n;e++)r[e]=t+e;return r},Ie=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(Ne(n)),!r.ResizeObserver)return()=>{};let a=new r.ResizeObserver(t=>{let r=()=>{let e=t[0];if(e?.borderBoxSize){let t=e.borderBoxSize[0];if(t){i({width:t.inlineSize,height:t.blockSize});return}}i(Ne(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},J={passive:!0},Le=typeof window>`u`?!0:`onscrollend`in window,Re=(e,t,n)=>{let r=e.scrollElement;if(!r)return;let i=e.targetWindow;if(!i)return;let a=e.options.useScrollendEvent&&Le,o=0,s=a?null:je(i,()=>t(o,!1),e.options.isScrollingResetDelay),c=e=>()=>{o=n(r),s?.(),t(o,e)},l=c(!0),u=c(!1);return r.addEventListener(`scroll`,l,J),a&&r.addEventListener(`scrollend`,u,J),()=>{r.removeEventListener(`scroll`,l),a&&r.removeEventListener(`scrollend`,u)}},ze=(e,t)=>Re(e,t,t=>{let{horizontal:n,isRtl:r}=e.options;return n?t.scrollLeft*(r&&-1||1):t.scrollTop}),Be=(e,t,n)=>{if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},Ve=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:e+t,behavior:n})},He=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,n=this.indexFromElement(t);if(!t.isConnected){this.observer.unobserve(t);for(let[e,n]of this.elementsCache)if(n===t){this.elementsCache.delete(e);break}return}this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}));return{disconnect:()=>{var n;(n=t())==null||n.disconnect(),e=null},observe:e=>t()?.observe(e,{box:`border-box`}),unobserve:e=>t()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{let t={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:Pe,rangeExtractor:Fe,onChange:()=>{},measureElement:Be,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`};for(let n in e){let r=e[n];r!==void 0&&(t[n]=r)}this.options=t},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=K(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}if(this.scrollElement=e,this.scrollElement&&`ownerDocument`in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{this._intendedScrollOffset!==null&&Math.abs(e-this._intendedScrollOffset)<1.5&&(e=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0,this.scrollDirection=t?this.getScrollOffset()<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),`addEventListener`in this.scrollElement){let e=this.scrollElement,t=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},n=()=>{this._iosTouching=!1,!(!Me()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};e.addEventListener(`touchstart`,t,J),e.addEventListener(`touchend`,n,J),this.unsubs.push(()=>{e.removeEventListener(`touchstart`,t),e.removeEventListener(`touchend`,n),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;let e=this.getScrollOffset(),t=this.getMaxScrollOffset();if(e<0||e>t)return;let n=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(e,{adjustments:this.scrollAdjustments+=n,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?`width`:`height`]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset==`function`?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(e,t)=>{let n=new Map,r=new Map;for(let i=t-1;i>=0;i--){let t=e[i];if(n.has(t.lane))continue;let a=r.get(t.lane);if(a==null||t.end>a.end?r.set(t.lane,t):t.end<a.end&&n.set(t.lane,!0),n.size===this.options.lanes)break}return r.size===this.options.lanes?Array.from(r.values()).sort((e,t)=>e.end===t.end?e.index-t.index:e.end-t.end)[0]:void 0},this.getMeasurementOptions=K(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(e,t,n,r,i,a,o)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMin=null,{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o}),{key:!1}),this.getMeasurements=K(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o},s)=>{let c=this.itemSizeCache;if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let l=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1),a===1){let i=this.options.gap,a=e*2,o=this._flatMeasurements;if(!o||o.length<a){let e=new Float64Array(a);o&&l>0&&e.set(o.subarray(0,l*2)),o=e,this._flatMeasurements=o}let s;if(l===0)s=t+n;else{let e=l-1;s=o[e*2]+o[e*2+1]+i}for(let t=l;t<e;t++){let e=r(t),n=c.get(e),a=typeof n==`number`?n:this.options.estimateSize(t);o[t*2]=s,o[t*2+1]=a,s+=a+i}let u=Oe(e,o,r);return this.measurementsCache=u,u}let u=this.measurementsCache.slice(0,l),d=Array(a).fill(void 0);for(let e=0;e<l;e++){let t=u[e];t&&(d[t.lane]=e)}for(let i=l;i<e;i++){let e=r(i),a=this.laneAssignments.get(i),s,l,f=o===`estimate`||c.has(e);if(a!==void 0&&this.options.lanes>1){s=a;let e=d[s],r=e===void 0?void 0:u[e];l=r?r.end+this.options.gap:t+n}else{let e=this.options.lanes===1?u[i-1]:this.getFurthestMeasurement(u,i);l=e?e.end+this.options.gap:t+n,s=e?e.lane:i%this.options.lanes,this.options.lanes>1&&f&&this.laneAssignments.set(i,s)}let p=c.get(e),m=typeof p==`number`?p:this.options.estimateSize(i),h=l+m;u[i]={index:i,start:l,size:m,end:h,key:e,lane:s},d[s]=i}return this.measurementsCache=u,u},{key:!1,debug:()=>this.options.debug}),this.calculateRange=K(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>this.range=e.length>0&&t>0?We({measurements:e,outerSize:t,scrollOffset:n,lanes:r,flat:r===1&&this._flatMeasurements!=null?this._flatMeasurements:null}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=K(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!this.scrollState||this.scrollState.behavior!==`smooth`)return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e),n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{if(e<0||e>=this.options.count)return;let n,r,i,a=this._flatMeasurements;if(this.options.lanes===1&&a!==null)i=this.options.getItemKey(e),r=a[e*2],n=a[e*2+1];else{let t=this.measurementsCache[e];if(!t)return;i=t.key,r=t.start,n=t.size}let o=t-(this.itemSizeCache.get(i)??n);o!==0&&(this.scrollState?.behavior!==`smooth`&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?r<this.getScrollOffset()+this.scrollAdjustments&&this.scrollDirection!==`backward`:this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[e]??{index:e,key:i,start:r,size:n,end:r+n,lane:0},o,this))&&(Me()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?this._iosDeferredAdjustment+=o:this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=o,behavior:void 0})),(this.pendingMin===null||e<this.pendingMin)&&(this.pendingMin=e),this.itemSizeCache.set(i,t),this.itemSizeCacheVersion++,this.notify(!1))},this.getVirtualItems=K(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let n=[];for(let r=0,i=e.length;r<i;r++){let i=t[e[r]];n.push(i)}return n},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length===0)return;let n=this._flatMeasurements,r=this.options.lanes===1&&n!=null;return ke(t[Ue(0,t.length-1,r?e=>n[e*2]:e=>ke(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if(`scrollHeight`in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`)if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t];if(t===`end`&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{let r=this.getOffsetForAlignment(e,t),i=this.now();this.scrollState={index:null,align:t,behavior:n,startedAt:i,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r,o=this.now();this.scrollState={index:e,align:a,behavior:n,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getScrollOffset()+e,r=this.now();this.scrollState={index:null,align:`start`,behavior:t,startedAt:r,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1){let n=e.length-1,r=this._flatMeasurements;t=r==null?e[n]?.end??0:r[n*2]+r[n*2+1]}else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{let e=[];if(this.itemSizeCache.size===0)return e;let t=this.getMeasurements();for(let n of t)n&&this.itemSizeCache.has(n.key)&&e.push({index:n.index,key:n.key,start:n.start,size:n.size,end:n.end,lane:n.lane});return e},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this._intendedScrollOffset=e+(t??0),this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(e)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()})}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=this.scrollState.index==null?void 0:this.getOffsetForIndex(this.scrollState.index,this.scrollState.align),t=e?e[0]:this.scrollState.lastTargetOffset,n=t!==this.scrollState.lastTargetOffset;if(!n&&Ae(t,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.getScrollOffset()!==t&&this._scrollToOffset(t,{adjustments:void 0,behavior:`auto`}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,n){let e=this.getSize()||600,n=Math.abs(t-this.getScrollOffset()),r=this.scrollState.behavior===`smooth`&&n>e;this.scrollState.lastTargetOffset=t,r||(this.scrollState.behavior=`auto`),this._scrollToOffset(t,{adjustments:void 0,behavior:r?`smooth`:`auto`})}this.scheduleScrollReconcile()}},Ue=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0};function We({measurements:e,outerSize:t,scrollOffset:n,lanes:r,flat:i}){let a=e.length-1,o=i?e=>i[e*2]:t=>e[t].start,s=i?e=>i[e*2]+i[e*2+1]:t=>e[t].end;if(e.length<=r)return{startIndex:0,endIndex:a};let c=Ue(0,a,o,n),l=c;if(r===1)for(;l<a&&s(l)<n+t;)l++;else if(r>1){let i=Array(r).fill(0);for(;l<a&&i.some(e=>e<n+t);){let t=e[l];i[t.lane]=t.end,l++}let o=Array(r).fill(n+t);for(;c>=0&&o.some(e=>e>=n);){let t=e[c];o[t.lane]=t.start,c--}c=Math.max(0,c-c%r),l=Math.min(a,l+(r-1-l%r))}return{startIndex:c,endIndex:l}}var Y=typeof document<`u`?B.useLayoutEffect:B.useEffect;function Ge({useFlushSync:e=!0,...t}){let n=B.useReducer(e=>e+1,0)[1],r={...t,onChange:(r,i)=>{var a;e&&i?(0,De.flushSync)(n):n(),(a=t.onChange)==null||a.call(t,r,i)}},[i]=B.useState(()=>new He(r));return i.setOptions(r),Y(()=>i._didMount(),[]),Y(()=>i._willUpdate()),i}function Ke(e){return Ge({observeElementRect:Ie,observeElementOffset:ze,scrollToFn:Ve,...e})}var qe=j(`inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3`,{defaultVariants:{variant:`default`},variants:{variant:{default:`bg-primary text-primary-foreground [a&]:hover:bg-primary/90`,destructive:`bg-destructive text-white focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90`,ghost:`[a&]:hover:bg-accent [a&]:hover:text-accent-foreground`,link:`text-primary underline-offset-4 [a&]:hover:underline`,outline:`border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90`}}});function X({className:e,variant:t=`default`,asChild:n=!1,...r}){return(0,V.jsx)(n?D:`span`,{"data-slot":`badge`,"data-variant":t,className:E(qe({variant:t}),e),...r})}var Je=e=>e.replace(/[.*+?^${}()|[\]\\]/gu,`\\$&`),Ye=e=>{let t=e.trim(),n=[t,t.replaceAll(`\\`,`/`),t.replaceAll(`/`,`\\`)].filter(Boolean);return[...new Set(n)].sort((e,t)=>t.length-e.length)},Xe=(e,t)=>{let n=e;for(let e of Ye(t)){let t=Je(e);n=n.replace(RegExp(`${t}(?<separator>[\\\\/])`,`gu`),``),n=n.replace(RegExp(`${t}(?=$|[^A-Za-z0-9._-])`,`gu`),`.`)}return n},Ze=e=>e.replace(/\/home\/[^/\\]+(?=\/|$)/gu,`~`).replace(/\/Users\/[^/\\]+(?=\/|$)/gu,`~`).replace(/[A-Za-z]:[\\/]+Users[\\/]+[^\\/]+(?=[\\/]|$)/gu,`~`),Qe=(e,t)=>{let n=e;return t.convertToProjectRoot&&t.projectPath&&(n=Xe(n,t.projectPath)),t.redactUsername&&(n=Ze(n)),n},$e=(e,t,n)=>Qe(e,{...t,projectPath:n}),et=e=>e.kind===`message`&&e.role===`assistant`&&e.phase===`commentary`,tt=(e,t,n,r)=>et(e)&&!r?!1:e.kind===`message`?!e.isHiddenByDefault||n:e.kind===`tool_call`||e.kind===`tool_output`?t:n,nt=e=>e.kind===`message`&&e.role===`assistant`?`border-[var(--accent)]/40 bg-[var(--panel)]`:e.kind===`message`&&e.role===`user`?`border-[var(--border)] bg-[var(--panel-secondary)]`:e.kind===`tool_call`||e.kind===`tool_output`?`border-[var(--border)] bg-[var(--code-background)]`:`border-[var(--border)] bg-[var(--panel-secondary)]/80`,rt=(t,n)=>{let r=e(t.model??n);return t.variant===`agent_message`?t.role===`assistant`?r:`Assistant update`:t.role===`assistant`?r:`User`},it=e=>{switch(e.kind){case`tool_call`:return`Tool call: ${e.name}`;case`tool_output`:return`Tool output`;case`task_started`:return`Task started`;case`task_complete`:return`Task complete`;case`token_count`:return`Token update`;case`reasoning`:return`Reasoning`;case`web_search`:return`Web search`}},Z=(e,t)=>e.kind===`message`?rt(e,t):it(e),at=async e=>{if(typeof navigator<`u`&&navigator.clipboard)try{return await navigator.clipboard.writeText(e),!0}catch{}return!1},ot=(e,t)=>{switch(e.kind){case`message`:return t(e.text||`No text content`);case`tool_call`:return[e.command??e.name,e.workdir].filter(e=>!!e).map(t).join(`
1
+ import{a as e,c as t,i as n,l as r,n as i,r as a,s as o,t as s,u as c}from"./formatters-CWFrMKSn.js";import{f as l,i as u,n as d,p as f,r as p,t as m}from"./delete-confirm-dialog-CIZy_LXD.js";import{r as h,t as g}from"./checkbox-DjHij7DJ.js";import{a as _,n as v,r as y,t as b}from"./download-DQtfva4z.js";import{a as x}from"./es2015-DsDKdYCE.js";import{A as S,D as C,E as w,G as T,H as E,I as D,M as O,O as k,P as A,V as j,W as M,c as N,d as P,dt as F,ft as I,g as L,h as ee,l as te,lt as ne,mt as re,n as ie,p as ae,pt as oe,ut as se}from"./index-C_-e0lDI.js";import{t as R}from"./metric-card-BJX5rkHK.js";import{t as ce}from"./page-header-ODLuGLAB.js";function le(e,t){return r(e,c,t)}var z=M(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),B=re(oe(),1),V=F(),H=`Tabs`,[ue,de]=O(H,[u]),fe=u(),[pe,U]=ue(H),me=B.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,onValueChange:i,defaultValue:a,orientation:o=`horizontal`,dir:s,activationMode:c=`automatic`,...l}=e,u=x(s),[d,f]=k({prop:r,onChange:i,defaultProp:a??``,caller:H});return(0,V.jsx)(pe,{scope:n,baseId:w(),value:d,onValueChange:f,orientation:o,dir:u,activationMode:c,children:(0,V.jsx)(A.div,{dir:u,"data-orientation":o,...l,ref:t})})});me.displayName=H;var he=`TabsList`,ge=B.forwardRef((e,t)=>{let{__scopeTabs:n,loop:r=!0,...i}=e,a=U(he,n),o=fe(n);return(0,V.jsx)(p,{asChild:!0,...o,orientation:a.orientation,dir:a.dir,loop:r,children:(0,V.jsx)(A.div,{role:`tablist`,"aria-orientation":a.orientation,...i,ref:t})})});ge.displayName=he;var _e=`TabsTrigger`,ve=B.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,disabled:i=!1,...a}=e,o=U(_e,n),s=fe(n),c=xe(o.baseId,r),l=Se(o.baseId,r),u=r===o.value;return(0,V.jsx)(d,{asChild:!0,...s,focusable:!i,active:u,children:(0,V.jsx)(A.button,{type:`button`,role:`tab`,"aria-selected":u,"aria-controls":l,"data-state":u?`active`:`inactive`,"data-disabled":i?``:void 0,disabled:i,id:c,...a,ref:t,onMouseDown:S(e.onMouseDown,e=>{!i&&e.button===0&&e.ctrlKey===!1?o.onValueChange(r):e.preventDefault()}),onKeyDown:S(e.onKeyDown,e=>{[` `,`Enter`].includes(e.key)&&o.onValueChange(r)}),onFocus:S(e.onFocus,()=>{let e=o.activationMode!==`manual`;!u&&!i&&e&&o.onValueChange(r)})})})});ve.displayName=_e;var ye=`TabsContent`,be=B.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,forceMount:i,children:a,...o}=e,s=U(ye,n),c=xe(s.baseId,r),l=Se(s.baseId,r),u=r===s.value,d=B.useRef(u);return B.useEffect(()=>{let e=requestAnimationFrame(()=>d.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,V.jsx)(C,{present:i||u,children:({present:n})=>(0,V.jsx)(A.div,{"data-state":u?`active`:`inactive`,"data-orientation":s.orientation,role:`tabpanel`,"aria-labelledby":c,hidden:!n,id:l,tabIndex:0,...o,ref:t,style:{...e.style,animationDuration:d.current?`0s`:void 0},children:n&&a})})});be.displayName=ye;function xe(e,t){return`${e}-trigger-${t}`}function Se(e,t){return`${e}-content-${t}`}var Ce=me,we=ge,Te=ve,Ee=be;function W({title:e,value:t}){return(0,V.jsxs)(`section`,{className:`rounded-[1.6rem] border border-[var(--border)] bg-[var(--panel)] p-5 shadow-[var(--panel-shadow)]`,children:[(0,V.jsx)(`h3`,{className:`font-semibold text-[var(--muted-foreground)] text-sm uppercase tracking-[0.18em]`,children:e}),(0,V.jsx)(`pre`,{className:`mt-4 overflow-x-auto rounded-2xl border border-[var(--border)] bg-[var(--code-background)] p-4 text-[var(--code-foreground)] text-xs leading-5`,children:JSON.stringify(t,null,2)})]})}function G({items:e,title:t}){return(0,V.jsxs)(`section`,{className:`rounded-[1.6rem] border border-[var(--border)] bg-[var(--panel)] p-5 shadow-[var(--panel-shadow)]`,children:[(0,V.jsx)(`h3`,{className:`font-semibold text-[var(--muted-foreground)] text-sm uppercase tracking-[0.18em]`,children:t}),(0,V.jsx)(`dl`,{className:`mt-4 space-y-3`,children:e.map(e=>(0,V.jsxs)(`div`,{className:`grid gap-1 sm:grid-cols-[11rem_1fr] sm:items-start`,children:[(0,V.jsx)(`dt`,{className:`font-medium text-[var(--muted-foreground)] text-xs uppercase tracking-[0.14em]`,children:e.label}),(0,V.jsx)(`dd`,{className:`min-w-0 text-sm leading-6`,children:e.value})]},e.label))})]})}var De=re(I(),1);function Oe(e,t,n){let r=Array(e);return new Proxy(r,{get(r,i,a){if(typeof i==`string`){let a=i.charCodeAt(0);if(a>=48&&a<=57){let a=+i;if(Number.isInteger(a)&&a>=0&&a<e){let e=r[a];if(!e){let i=t[a*2];e=r[a]={index:a,key:n(a),start:i,size:t[a*2+1],end:i+t[a*2+1],lane:0}}return e}}if(i===`length`)return e}return Reflect.get(r,i,a)}})}function K(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o=e();return o.length!==r.length||o.some((e,t)=>r[t]!==e)?(r=o,i=t(...o),n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1,i):i}return o.updateDeps=e=>{r=e},o}function ke(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var Ae=(e,t)=>Math.abs(e-t)<1.01,je=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}},q,Me=()=>{if(q!==void 0)return q;if(typeof navigator>`u`)return q=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return q=!0;let e=navigator.maxTouchPoints;return q=navigator.platform===`MacIntel`&&e!==void 0&&e>0},Ne=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},Pe=e=>e,Fe=e=>{let t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1)-t+1,r=Array(n);for(let e=0;e<n;e++)r[e]=t+e;return r},Ie=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(Ne(n)),!r.ResizeObserver)return()=>{};let a=new r.ResizeObserver(t=>{let r=()=>{let e=t[0];if(e?.borderBoxSize){let t=e.borderBoxSize[0];if(t){i({width:t.inlineSize,height:t.blockSize});return}}i(Ne(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},J={passive:!0},Le=typeof window>`u`?!0:`onscrollend`in window,Re=(e,t,n)=>{let r=e.scrollElement;if(!r)return;let i=e.targetWindow;if(!i)return;let a=e.options.useScrollendEvent&&Le,o=0,s=a?null:je(i,()=>t(o,!1),e.options.isScrollingResetDelay),c=e=>()=>{o=n(r),s?.(),t(o,e)},l=c(!0),u=c(!1);return r.addEventListener(`scroll`,l,J),a&&r.addEventListener(`scrollend`,u,J),()=>{r.removeEventListener(`scroll`,l),a&&r.removeEventListener(`scrollend`,u)}},ze=(e,t)=>Re(e,t,t=>{let{horizontal:n,isRtl:r}=e.options;return n?t.scrollLeft*(r&&-1||1):t.scrollTop}),Be=(e,t,n)=>{if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},Ve=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:e+t,behavior:n})},He=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,n=this.indexFromElement(t);if(!t.isConnected){this.observer.unobserve(t);for(let[e,n]of this.elementsCache)if(n===t){this.elementsCache.delete(e);break}return}this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}));return{disconnect:()=>{var n;(n=t())==null||n.disconnect(),e=null},observe:e=>t()?.observe(e,{box:`border-box`}),unobserve:e=>t()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{let t={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:Pe,rangeExtractor:Fe,onChange:()=>{},measureElement:Be,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`};for(let n in e){let r=e[n];r!==void 0&&(t[n]=r)}this.options=t},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=K(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}if(this.scrollElement=e,this.scrollElement&&`ownerDocument`in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{this._intendedScrollOffset!==null&&Math.abs(e-this._intendedScrollOffset)<1.5&&(e=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0,this.scrollDirection=t?this.getScrollOffset()<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),`addEventListener`in this.scrollElement){let e=this.scrollElement,t=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},n=()=>{this._iosTouching=!1,!(!Me()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};e.addEventListener(`touchstart`,t,J),e.addEventListener(`touchend`,n,J),this.unsubs.push(()=>{e.removeEventListener(`touchstart`,t),e.removeEventListener(`touchend`,n),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;let e=this.getScrollOffset(),t=this.getMaxScrollOffset();if(e<0||e>t)return;let n=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(e,{adjustments:this.scrollAdjustments+=n,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?`width`:`height`]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset==`function`?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(e,t)=>{let n=new Map,r=new Map;for(let i=t-1;i>=0;i--){let t=e[i];if(n.has(t.lane))continue;let a=r.get(t.lane);if(a==null||t.end>a.end?r.set(t.lane,t):t.end<a.end&&n.set(t.lane,!0),n.size===this.options.lanes)break}return r.size===this.options.lanes?Array.from(r.values()).sort((e,t)=>e.end===t.end?e.index-t.index:e.end-t.end)[0]:void 0},this.getMeasurementOptions=K(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(e,t,n,r,i,a,o)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMin=null,{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o}),{key:!1}),this.getMeasurements=K(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o},s)=>{let c=this.itemSizeCache;if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let l=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1),a===1){let i=this.options.gap,a=e*2,o=this._flatMeasurements;if(!o||o.length<a){let e=new Float64Array(a);o&&l>0&&e.set(o.subarray(0,l*2)),o=e,this._flatMeasurements=o}let s;if(l===0)s=t+n;else{let e=l-1;s=o[e*2]+o[e*2+1]+i}for(let t=l;t<e;t++){let e=r(t),n=c.get(e),a=typeof n==`number`?n:this.options.estimateSize(t);o[t*2]=s,o[t*2+1]=a,s+=a+i}let u=Oe(e,o,r);return this.measurementsCache=u,u}let u=this.measurementsCache.slice(0,l),d=Array(a).fill(void 0);for(let e=0;e<l;e++){let t=u[e];t&&(d[t.lane]=e)}for(let i=l;i<e;i++){let e=r(i),a=this.laneAssignments.get(i),s,l,f=o===`estimate`||c.has(e);if(a!==void 0&&this.options.lanes>1){s=a;let e=d[s],r=e===void 0?void 0:u[e];l=r?r.end+this.options.gap:t+n}else{let e=this.options.lanes===1?u[i-1]:this.getFurthestMeasurement(u,i);l=e?e.end+this.options.gap:t+n,s=e?e.lane:i%this.options.lanes,this.options.lanes>1&&f&&this.laneAssignments.set(i,s)}let p=c.get(e),m=typeof p==`number`?p:this.options.estimateSize(i),h=l+m;u[i]={index:i,start:l,size:m,end:h,key:e,lane:s},d[s]=i}return this.measurementsCache=u,u},{key:!1,debug:()=>this.options.debug}),this.calculateRange=K(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>this.range=e.length>0&&t>0?We({measurements:e,outerSize:t,scrollOffset:n,lanes:r,flat:r===1&&this._flatMeasurements!=null?this._flatMeasurements:null}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=K(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!this.scrollState||this.scrollState.behavior!==`smooth`)return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e),n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{if(e<0||e>=this.options.count)return;let n,r,i,a=this._flatMeasurements;if(this.options.lanes===1&&a!==null)i=this.options.getItemKey(e),r=a[e*2],n=a[e*2+1];else{let t=this.measurementsCache[e];if(!t)return;i=t.key,r=t.start,n=t.size}let o=t-(this.itemSizeCache.get(i)??n);o!==0&&(this.scrollState?.behavior!==`smooth`&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?r<this.getScrollOffset()+this.scrollAdjustments&&this.scrollDirection!==`backward`:this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[e]??{index:e,key:i,start:r,size:n,end:r+n,lane:0},o,this))&&(Me()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?this._iosDeferredAdjustment+=o:this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=o,behavior:void 0})),(this.pendingMin===null||e<this.pendingMin)&&(this.pendingMin=e),this.itemSizeCache.set(i,t),this.itemSizeCacheVersion++,this.notify(!1))},this.getVirtualItems=K(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let n=[];for(let r=0,i=e.length;r<i;r++){let i=t[e[r]];n.push(i)}return n},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length===0)return;let n=this._flatMeasurements,r=this.options.lanes===1&&n!=null;return ke(t[Ue(0,t.length-1,r?e=>n[e*2]:e=>ke(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if(`scrollHeight`in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`)if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t];if(t===`end`&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{let r=this.getOffsetForAlignment(e,t),i=this.now();this.scrollState={index:null,align:t,behavior:n,startedAt:i,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r,o=this.now();this.scrollState={index:e,align:a,behavior:n,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getScrollOffset()+e,r=this.now();this.scrollState={index:null,align:`start`,behavior:t,startedAt:r,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1){let n=e.length-1,r=this._flatMeasurements;t=r==null?e[n]?.end??0:r[n*2]+r[n*2+1]}else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{let e=[];if(this.itemSizeCache.size===0)return e;let t=this.getMeasurements();for(let n of t)n&&this.itemSizeCache.has(n.key)&&e.push({index:n.index,key:n.key,start:n.start,size:n.size,end:n.end,lane:n.lane});return e},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this._intendedScrollOffset=e+(t??0),this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(e)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()})}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=this.scrollState.index==null?void 0:this.getOffsetForIndex(this.scrollState.index,this.scrollState.align),t=e?e[0]:this.scrollState.lastTargetOffset,n=t!==this.scrollState.lastTargetOffset;if(!n&&Ae(t,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.getScrollOffset()!==t&&this._scrollToOffset(t,{adjustments:void 0,behavior:`auto`}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,n){let e=this.getSize()||600,n=Math.abs(t-this.getScrollOffset()),r=this.scrollState.behavior===`smooth`&&n>e;this.scrollState.lastTargetOffset=t,r||(this.scrollState.behavior=`auto`),this._scrollToOffset(t,{adjustments:void 0,behavior:r?`smooth`:`auto`})}this.scheduleScrollReconcile()}},Ue=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0};function We({measurements:e,outerSize:t,scrollOffset:n,lanes:r,flat:i}){let a=e.length-1,o=i?e=>i[e*2]:t=>e[t].start,s=i?e=>i[e*2]+i[e*2+1]:t=>e[t].end;if(e.length<=r)return{startIndex:0,endIndex:a};let c=Ue(0,a,o,n),l=c;if(r===1)for(;l<a&&s(l)<n+t;)l++;else if(r>1){let i=Array(r).fill(0);for(;l<a&&i.some(e=>e<n+t);){let t=e[l];i[t.lane]=t.end,l++}let o=Array(r).fill(n+t);for(;c>=0&&o.some(e=>e>=n);){let t=e[c];o[t.lane]=t.start,c--}c=Math.max(0,c-c%r),l=Math.min(a,l+(r-1-l%r))}return{startIndex:c,endIndex:l}}var Y=typeof document<`u`?B.useLayoutEffect:B.useEffect;function Ge({useFlushSync:e=!0,...t}){let n=B.useReducer(e=>e+1,0)[1],r={...t,onChange:(r,i)=>{var a;e&&i?(0,De.flushSync)(n):n(),(a=t.onChange)==null||a.call(t,r,i)}},[i]=B.useState(()=>new He(r));return i.setOptions(r),Y(()=>i._didMount(),[]),Y(()=>i._willUpdate()),i}function Ke(e){return Ge({observeElementRect:Ie,observeElementOffset:ze,scrollToFn:Ve,...e})}var qe=j(`inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3`,{defaultVariants:{variant:`default`},variants:{variant:{default:`bg-primary text-primary-foreground [a&]:hover:bg-primary/90`,destructive:`bg-destructive text-white focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90`,ghost:`[a&]:hover:bg-accent [a&]:hover:text-accent-foreground`,link:`text-primary underline-offset-4 [a&]:hover:underline`,outline:`border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90`}}});function X({className:e,variant:t=`default`,asChild:n=!1,...r}){return(0,V.jsx)(n?D:`span`,{"data-slot":`badge`,"data-variant":t,className:E(qe({variant:t}),e),...r})}var Je=e=>e.replace(/[.*+?^${}()|[\]\\]/gu,`\\$&`),Ye=e=>{let t=e.trim(),n=[t,t.replaceAll(`\\`,`/`),t.replaceAll(`/`,`\\`)].filter(Boolean);return[...new Set(n)].sort((e,t)=>t.length-e.length)},Xe=(e,t)=>{let n=e;for(let e of Ye(t)){let t=Je(e);n=n.replace(RegExp(`${t}(?<separator>[\\\\/])`,`gu`),``),n=n.replace(RegExp(`${t}(?=$|[^A-Za-z0-9._-])`,`gu`),`.`)}return n},Ze=e=>e.replace(/\/home\/[^/\\]+(?=\/|$)/gu,`~`).replace(/\/Users\/[^/\\]+(?=\/|$)/gu,`~`).replace(/[A-Za-z]:[\\/]+Users[\\/]+[^\\/]+(?=[\\/]|$)/gu,`~`),Qe=(e,t)=>{let n=e;return t.convertToProjectRoot&&t.projectPath&&(n=Xe(n,t.projectPath)),t.redactUsername&&(n=Ze(n)),n},$e=(e,t,n)=>Qe(e,{...t,projectPath:n}),et=e=>e.kind===`message`&&e.role===`assistant`&&e.phase===`commentary`,tt=(e,t,n,r)=>et(e)&&!r?!1:e.kind===`message`?!e.isHiddenByDefault||n:e.kind===`tool_call`||e.kind===`tool_output`?t:n,nt=e=>e.kind===`message`&&e.role===`assistant`?`border-[var(--accent)]/40 bg-[var(--panel)]`:e.kind===`message`&&e.role===`user`?`border-[var(--border)] bg-[var(--panel-secondary)]`:e.kind===`tool_call`||e.kind===`tool_output`?`border-[var(--border)] bg-[var(--code-background)]`:`border-[var(--border)] bg-[var(--panel-secondary)]/80`,rt=(t,n)=>{let r=e(t.model??n);return t.variant===`agent_message`?t.role===`assistant`?r:`Assistant update`:t.role===`assistant`?r:`User`},it=e=>{switch(e.kind){case`tool_call`:return`Tool call: ${e.name}`;case`tool_output`:return`Tool output`;case`task_started`:return`Task started`;case`task_complete`:return`Task complete`;case`token_count`:return`Token update`;case`reasoning`:return`Reasoning`;case`web_search`:return`Web search`}},Z=(e,t)=>e.kind===`message`?rt(e,t):it(e),at=async e=>{if(typeof navigator<`u`&&navigator.clipboard)try{return await navigator.clipboard.writeText(e),!0}catch{}return!1},ot=(e,t)=>{switch(e.kind){case`message`:return t(e.text||`No text content`);case`tool_call`:return[e.command??e.name,e.workdir].filter(e=>!!e).map(t).join(`
2
2
 
3
3
  `);case`tool_output`:return t(e.summary||e.outputText||``);case`task_started`:return`Context window: ${e.modelContextWindow??`n/a`}\n\nCollaboration mode: ${e.collaborationModeKind??`n/a`}`;case`task_complete`:return`Duration: ${e.durationMs??`n/a`} ms\n\nFirst token: ${e.timeToFirstTokenMs??`n/a`} ms`;case`token_count`:return JSON.stringify(e.rateLimits,null,2);case`reasoning`:return e.summary.join(` `)||`Reasoning content is not directly available.`;case`web_search`:return[`Phase: ${e.phase}${e.status?` · ${e.status}`:``}`,e.query?t(e.query):null].filter(Boolean).join(`
4
4
 
@@ -0,0 +1,99 @@
1
+ //#region \0tanstack-start-manifest:v
2
+ var tsrStartManifest = () => ({
3
+ routes: {
4
+ __root__: {
5
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/__root.tsx",
6
+ children: [
7
+ "/",
8
+ "/$threadId",
9
+ "/analytics",
10
+ "/settings",
11
+ "/projects/$project",
12
+ "/threads/$threadId",
13
+ "/projects/"
14
+ ],
15
+ preloads: ["/assets/index-C_-e0lDI.js"]
16
+ },
17
+ "/": {
18
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/index.tsx",
19
+ children: void 0,
20
+ preloads: [
21
+ "/assets/routes-CfnaTOlj.js",
22
+ "/assets/metric-card-BJX5rkHK.js",
23
+ "/assets/page-header-ODLuGLAB.js",
24
+ "/assets/formatters-CWFrMKSn.js"
25
+ ]
26
+ },
27
+ "/$threadId": {
28
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/$threadId.tsx",
29
+ children: void 0,
30
+ preloads: ["/assets/_threadId-CAIeH5mq.js"]
31
+ },
32
+ "/analytics": {
33
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/analytics.tsx",
34
+ children: void 0,
35
+ preloads: [
36
+ "/assets/analytics-Cv0JMDN2.js",
37
+ "/assets/data-table-Bgnh7phF.js",
38
+ "/assets/metric-card-BJX5rkHK.js",
39
+ "/assets/page-header-ODLuGLAB.js",
40
+ "/assets/select-B1kH_5lx.js",
41
+ "/assets/formatters-CWFrMKSn.js"
42
+ ]
43
+ },
44
+ "/settings": {
45
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/settings.tsx",
46
+ children: void 0,
47
+ preloads: [
48
+ "/assets/settings-mYTB3sso.js",
49
+ "/assets/page-header-ODLuGLAB.js",
50
+ "/assets/checkbox-DjHij7DJ.js"
51
+ ]
52
+ },
53
+ "/projects/$project": {
54
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/projects.$project.tsx",
55
+ children: void 0,
56
+ preloads: [
57
+ "/assets/projects._project-C2Pys_bB.js",
58
+ "/assets/data-table-Bgnh7phF.js",
59
+ "/assets/delete-confirm-dialog-CIZy_LXD.js",
60
+ "/assets/download-DQtfva4z.js",
61
+ "/assets/page-header-ODLuGLAB.js",
62
+ "/assets/input-BbgApiqZ.js",
63
+ "/assets/formatters-CWFrMKSn.js",
64
+ "/assets/projects._project-CHvAKvlu.js"
65
+ ]
66
+ },
67
+ "/threads/$threadId": {
68
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/threads.$threadId.tsx",
69
+ children: void 0,
70
+ preloads: [
71
+ "/assets/threads._threadId-CUiCZSwo.js",
72
+ "/assets/threads._threadId-C_47okme.js",
73
+ "/assets/delete-confirm-dialog-CIZy_LXD.js",
74
+ "/assets/download-DQtfva4z.js",
75
+ "/assets/metric-card-BJX5rkHK.js",
76
+ "/assets/page-header-ODLuGLAB.js",
77
+ "/assets/checkbox-DjHij7DJ.js",
78
+ "/assets/formatters-CWFrMKSn.js",
79
+ "/assets/es2015-DsDKdYCE.js"
80
+ ]
81
+ },
82
+ "/projects/": {
83
+ filePath: "/home/runner/work/spiracha/spiracha/apps/ui/src/routes/projects.index.tsx",
84
+ children: void 0,
85
+ preloads: [
86
+ "/assets/projects.index-BmwtS1x-.js",
87
+ "/assets/data-table-Bgnh7phF.js",
88
+ "/assets/delete-confirm-dialog-CIZy_LXD.js",
89
+ "/assets/page-header-ODLuGLAB.js",
90
+ "/assets/input-BbgApiqZ.js",
91
+ "/assets/formatters-CWFrMKSn.js",
92
+ "/assets/projects.index-CuLw73mt.js"
93
+ ]
94
+ }
95
+ },
96
+ clientEntry: "/assets/index-C_-e0lDI.js"
97
+ });
98
+ //#endregion
99
+ export { tsrStartManifest };
@@ -1,4 +1,4 @@
1
- import { i as projectsQueryOptions, t as analyticsQueryOptions } from "./codex-queries-CAF6HYiG.js";
1
+ import { i as projectsQueryOptions, t as analyticsQueryOptions } from "./codex-queries-BH4Cb0v3.js";
2
2
  import { t as DataTable } from "./data-table-Cdct823O.js";
3
3
  import { t as MetricCard } from "./metric-card-ByEeLu0r.js";
4
4
  import { t as PageHeader } from "./page-header-CxdZM86z.js";
@@ -35,8 +35,8 @@ var analyticsSchema = z.object({ project: z.string().min(1).nullable() });
35
35
  var exportSchema = z.object({
36
36
  convertToProjectRoot: z.boolean(),
37
37
  includeCommentary: z.boolean(),
38
+ includeMetadata: z.boolean(),
38
39
  includeTools: z.boolean(),
39
- optimized: z.boolean(),
40
40
  outputFormat: z.enum(["md", "txt"]),
41
41
  redactUsername: z.boolean(),
42
42
  threadId: z.string().min(1)
@@ -44,8 +44,8 @@ var exportSchema = z.object({
44
44
  var exportThreadsSchema = z.object({
45
45
  convertToProjectRoot: z.boolean(),
46
46
  includeCommentary: z.boolean(),
47
+ includeMetadata: z.boolean(),
47
48
  includeTools: z.boolean(),
48
- optimized: z.boolean(),
49
49
  outputFormat: z.enum(["md", "txt"]),
50
50
  redactUsername: z.boolean(),
51
51
  threadIds: z.array(z.string().min(1)).min(1)
@@ -1067,13 +1067,10 @@ var convertSessionFile = async (target, options) => {
1067
1067
  }
1068
1068
  if (!matchesFilters(target.thread?.cwd ?? transcriptState.sessionMeta.cwd ?? null, options)) return null;
1069
1069
  if (transcriptState.sections.length === 0) return null;
1070
- if (options.optimized) return transcriptState.sections.join("\n\n").trimEnd() + "\n";
1071
- const title = getTitle(target, transcriptState.sessionMeta);
1072
- const metadata = buildMetadataEntries(target, transcriptState.sessionMeta, options);
1073
1070
  return [
1074
- renderDocumentTitle(title, options.outputFormat),
1071
+ renderDocumentTitle(getTitle(target, transcriptState.sessionMeta), options.outputFormat),
1075
1072
  "",
1076
- renderMetadataBlock(metadata, options.outputFormat),
1073
+ options.includeMetadata ? renderMetadataBlock(buildMetadataEntries(target, transcriptState.sessionMeta, options), options.outputFormat) : "",
1077
1074
  ...transcriptState.sections
1078
1075
  ].filter(Boolean).join("\n").trimEnd() + "\n";
1079
1076
  };
@@ -1083,8 +1080,7 @@ var writeSessionFileExport = async (target, options, outputPath, transform = (te
1083
1080
  const state = {
1084
1081
  assistantModel: target.thread?.model ?? null,
1085
1082
  sections: [],
1086
- sessionMeta: {},
1087
- startedTranscript: false
1083
+ sessionMeta: {}
1088
1084
  };
1089
1085
  let wroteSection = false;
1090
1086
  try {
@@ -1093,7 +1089,7 @@ var writeSessionFileExport = async (target, options, outputPath, transform = (te
1093
1089
  captureSessionMeta(parsed, state.sessionMeta);
1094
1090
  const block = renderCodexTranscriptRecord(parsed, options, state);
1095
1091
  if (!block) continue;
1096
- transcriptStream.write(transform(wroteSection ? `${getSectionSeparator(options)}${block}` : block));
1092
+ transcriptStream.write(transform(wroteSection ? `${getSectionSeparator()}${block}` : block));
1097
1093
  wroteSection = true;
1098
1094
  }
1099
1095
  await finalizeExportWriteStream(transcriptStream);
@@ -1124,15 +1120,12 @@ var collectCodexTranscript = async (sessionFile, options, assistantModel = null)
1124
1120
  const state = {
1125
1121
  assistantModel,
1126
1122
  sections: [],
1127
- sessionMeta: {},
1128
- startedTranscript: false
1123
+ sessionMeta: {}
1129
1124
  };
1130
1125
  for await (const parsed of readJsonlObjects(sessionFile)) processCodexTranscriptRecord(parsed, options, state);
1131
1126
  return state;
1132
1127
  };
1133
- var getSectionSeparator = (options) => {
1134
- return options.optimized ? "\n\n" : "\n";
1135
- };
1128
+ var getSectionSeparator = () => "\n";
1136
1129
  var processCodexTranscriptRecord = (parsed, options, state) => {
1137
1130
  captureSessionMeta(parsed, state.sessionMeta);
1138
1131
  const block = renderCodexTranscriptRecord(parsed, options, state);
@@ -1144,37 +1137,19 @@ var renderCodexTranscriptRecord = (parsed, options, state) => {
1144
1137
  if (!options.includeTools) return "";
1145
1138
  const tool = extractToolRecord(parsed);
1146
1139
  if (!tool) return "";
1147
- return options.optimized ? renderCompactToolBlock(tool, options.outputFormat) : renderToolBlock(tool, options.outputFormat);
1140
+ return renderToolBlock(tool, options.outputFormat);
1148
1141
  };
1149
1142
  var processCodexMessageRecord = (message, options, state) => {
1150
- if (options.optimized) return processOptimizedCodexMessageRecord(message, options, state);
1151
1143
  return renderMessageBlock(message, options.outputFormat, state.assistantModel, options.includeCommentary);
1152
1144
  };
1153
- var processOptimizedCodexMessageRecord = (message, options, state) => {
1154
- if (message.role !== "user" && message.role !== "assistant") return "";
1155
- if (message.role === "assistant" && message.phase === "commentary" && !options.includeCommentary) return "";
1156
- const compact = compactMessageText(message, true);
1157
- if (!compact) return "";
1158
- if (!state.startedTranscript) {
1159
- if (shouldSkipOptimizedPrelude(message.role, compact)) return "";
1160
- state.startedTranscript = true;
1161
- }
1162
- return renderCompactBlock(message, compact, options.outputFormat, state.assistantModel);
1163
- };
1164
1145
  var buildStreamExportPrefix = (target, sessionMeta, options) => {
1165
- if (options.optimized) return "";
1166
- const title = getTitle(target, sessionMeta);
1167
- const metadata = buildMetadataEntries(target, sessionMeta, options);
1146
+ if (!options.includeMetadata) return "";
1168
1147
  return `${[
1169
- renderDocumentTitle(title, options.outputFormat),
1148
+ renderDocumentTitle(getTitle(target, sessionMeta), options.outputFormat),
1170
1149
  "",
1171
- renderMetadataBlock(metadata, options.outputFormat)
1150
+ renderMetadataBlock(buildMetadataEntries(target, sessionMeta, options), options.outputFormat)
1172
1151
  ].filter(Boolean).join("\n")}\n`;
1173
1152
  };
1174
- var compactMessageText = (message, optimized) => {
1175
- const cleaned = stripPreviewBlock(extractText(message.content));
1176
- return optimized ? optimizePlainText(optimizeRenderedText(cleaned)) : cleaned.trim();
1177
- };
1178
1153
  var formatToolOutputSummary = (outputText, outputFormat) => {
1179
1154
  if (!outputText) return "";
1180
1155
  const lines = outputText.split("\n").map((line) => line.trim()).filter(Boolean);
@@ -1214,10 +1189,6 @@ var getTitle = (target, sessionMeta) => {
1214
1189
  if (target.thread?.title) return cleanInlineTitle(target.thread.title);
1215
1190
  return sessionMeta.id ?? path.basename(target.sessionFile, ".jsonl");
1216
1191
  };
1217
- var shouldSkipOptimizedPrelude = (role, text) => {
1218
- if (role !== "user") return true;
1219
- return text.startsWith("AGENTS.md instructions for ") || text.startsWith("# AGENTS.md instructions for ") || text.startsWith("<permissions instructions>") || text.startsWith("<environment_context>") || text.startsWith("<app-context>") || text.startsWith("<collaboration_mode>") || text.startsWith("<skills_instructions>") || text.startsWith("You are Codex, a coding agent based on GPT-5.") || text.startsWith("Read this before making changes.") || text.includes("Filesystem sandboxing defines which files can be read or written.") || text.includes("approval_policy") || text.includes("base_instructions");
1220
- };
1221
1192
  var buildMetadataEntries = (target, sessionMeta, options) => {
1222
1193
  return [
1223
1194
  ...buildCodexExportIdentityMetadata(target, sessionMeta),
@@ -1495,7 +1466,7 @@ var extractToolRecord = (parsed) => {
1495
1466
  var renderMessageBlock = (message, outputFormat, assistantModel, includeCommentary) => {
1496
1467
  if (message.role !== "user" && message.role !== "assistant") return "";
1497
1468
  if (message.role === "assistant" && message.phase === "commentary" && !includeCommentary) return "";
1498
- const text = cleanExtractedText(extractText(message.content)).trim();
1469
+ const text = cleanExtractedText(stripPreviewBlock(extractText(message.content))).trim();
1499
1470
  if (!text || shouldSkipMessage(message.role, text)) return "";
1500
1471
  return renderSection(message.role === "user" ? "User" : formatModelLabel(message.model ?? assistantModel), message.phase ? `Phase: ${message.phase}\n\n${text}` : text, outputFormat);
1501
1472
  };
@@ -1507,20 +1478,6 @@ var renderToolBlock = (tool, outputFormat) => {
1507
1478
  const summary = formatToolOutputSummary(tool.outputText ?? "", outputFormat);
1508
1479
  return summary ? renderSection("Tool Output", summary, outputFormat) : "";
1509
1480
  };
1510
- var renderCompactBlock = (message, text, outputFormat, assistantModel) => {
1511
- const prefix = message.role === "user" ? "U:" : `${formatModelLabel(message.model ?? assistantModel)}:`;
1512
- const [firstLine, ...rest] = text.split("\n");
1513
- if (rest.length === 0) return `${prefix} ${normalizeCompactLiteral(firstLine, outputFormat)}`;
1514
- return [`${prefix} ${normalizeCompactLiteral(firstLine, outputFormat)}`, ...rest.map((line) => normalizeCompactLiteral(line, outputFormat))].join("\n");
1515
- };
1516
- var renderCompactToolBlock = (tool, outputFormat) => {
1517
- if (tool.kind === "call") {
1518
- const details = formatCompactToolCall(tool, outputFormat);
1519
- return details ? `T: ${details}` : "";
1520
- }
1521
- const summary = formatCompactToolOutput(tool.outputText ?? "");
1522
- return summary ? `R: ${summary}` : "";
1523
- };
1524
1481
  var stripPreviewBlock = (text) => {
1525
1482
  const parts = text.split(/\n{2,}/).map((part) => part.trim()).filter(Boolean);
1526
1483
  if (parts.length < 2) return text.trim();
@@ -1530,14 +1487,9 @@ var stripPreviewBlock = (text) => {
1530
1487
  if (!(!/^([UA]):/i.test(first) && !isTranscriptHeading(first) && /^([UA]):/i.test(second) === false && isTranscriptHeading(second))) return text.trim();
1531
1488
  return parts.slice(1).join("\n\n");
1532
1489
  };
1533
- var optimizeRenderedText = (text) => {
1534
- return text.replace(/^\*Phase:\s+`[^`]+`\*\s*\n*/gm, "").replace(/^\s*<image\b[^>]*>\s*$/gim, "").replace(/^\s*<\/image>\s*$/gim, "").replace(/^\s*\[Image attached\]\s*$/gim, "").replace(/^#{1,6}\s+/gm, "").replace(/^```[^\n]*\n?/gm, "").replace(/\n```$/gm, "").replace(/\[([^\]]+)\]\([^)]+\)/g, "$1").replace(/^##\s+User\s*$/gm, "User:").replace(/^##\s+Assistant\s*$/gm, "Assistant:").replace(/`([^`]+)`/g, "$1").replace(/\*\*([^*]+)\*\*/g, "$1").replace(/\*([^*\n]+)\*/g, "$1").replace(/\n{3,}/g, "\n\n").trim();
1535
- };
1536
- var optimizePlainText = (text) => {
1537
- return text.replace(/\r/g, "").replace(/^\s*<image\b[^>]*>\s*$/gim, "").replace(/^\s*<\/image>\s*$/gim, "").replace(/^\s*\[Image attached\]\s*$/gim, "").replace(/\[([^\]]+)\]\([^)]+\)/g, "$1").replace(/`([^`]+)`/g, "$1").replace(/\*\*([^*]+)\*\*/g, "$1").replace(/\*([^*\n]+)\*/g, "$1").split("\n").map((line) => line.replace(/[ \t]+$/g, "")).join("\n").replace(/\n{3,}/g, "\n\n").trim();
1538
- };
1539
1490
  var shouldSkipMessage = (role, text) => {
1540
1491
  if (text.startsWith("<environment_context>")) return true;
1492
+ if (text.startsWith("AGENTS.md instructions for ")) return true;
1541
1493
  if (text.startsWith("# AGENTS.md instructions for ")) return true;
1542
1494
  if (role === "user" && text.includes("<environment_context>")) return true;
1543
1495
  return false;
@@ -1547,24 +1499,6 @@ var formatToolCallDetails = (tool, outputFormat) => {
1547
1499
  const details = parseExecCommandArguments(tool.argumentsText);
1548
1500
  return details.cmd ? `Command: ${formatInlineLiteral(details.cmd, outputFormat)}` : "";
1549
1501
  };
1550
- var formatCompactToolCall = (tool, outputFormat) => {
1551
- if (tool.name === "exec_command") {
1552
- const details = parseExecCommandArguments(tool.argumentsText);
1553
- if (!details.cmd) return "exec_command";
1554
- const command = formatInlineLiteral(details.cmd, outputFormat);
1555
- return details.workdir ? `exec_command ${command} @ ${details.workdir}` : `exec_command ${command}`;
1556
- }
1557
- return tool.callId ? `${tool.name} (${tool.callId})` : tool.name;
1558
- };
1559
- var formatCompactToolOutput = (outputText) => {
1560
- if (!outputText) return "";
1561
- const lines = outputText.split("\n").map((line) => line.trim()).filter(Boolean);
1562
- const exit = lines.find((line) => line.startsWith("Process exited with code "));
1563
- const wall = lines.find((line) => line.startsWith("Wall time: "));
1564
- if (exit && wall) return `${exit.replace("Process ", "")}; ${wall.toLowerCase()}`;
1565
- if (exit) return exit.replace("Process ", "");
1566
- return "";
1567
- };
1568
1502
  var extractText = (content) => {
1569
1503
  if (typeof content === "string") return content;
1570
1504
  if (Array.isArray(content)) return content.map((item) => extractContentPart(item)).filter((part) => part.length > 0).join("\n\n");
@@ -1583,9 +1517,6 @@ var extractContentPart = (value) => {
1583
1517
  if (type === "input_image") return "[Image attached]";
1584
1518
  return text ?? "";
1585
1519
  };
1586
- var normalizeCompactLiteral = (value, outputFormat) => {
1587
- return outputFormat === "md" ? value : value.replace(/`([^`]+)`/g, "$1");
1588
- };
1589
1520
  var UI_EXPORT_URL_PREFIX = "/__exports/";
1590
1521
  var DEFAULT_UI_EXPORT_DIR = path.join(os.tmpdir(), "spiracha-ui-exports");
1591
1522
  var DEFAULT_EXPORT_MAX_AGE_MS = 1440 * 60 * 1e3;
@@ -1646,9 +1577,9 @@ var toDownloadOptions = (input) => {
1646
1577
  dbPath: input.dbPath,
1647
1578
  flat: false,
1648
1579
  includeCommentary: input.includeCommentary,
1580
+ includeMetadata: input.includeMetadata,
1649
1581
  includeTools: input.includeTools,
1650
1582
  inputDir: "",
1651
- optimized: input.optimized,
1652
1583
  outputDir: "",
1653
1584
  outputFormat: input.outputFormat,
1654
1585
  projectFilter: null,
@@ -1927,8 +1858,8 @@ var analyticsSchema = z.object({ project: z.string().min(1).nullable() });
1927
1858
  var exportSchema = z.object({
1928
1859
  convertToProjectRoot: z.boolean(),
1929
1860
  includeCommentary: z.boolean(),
1861
+ includeMetadata: z.boolean(),
1930
1862
  includeTools: z.boolean(),
1931
- optimized: z.boolean(),
1932
1863
  outputFormat: z.enum(["md", "txt"]),
1933
1864
  redactUsername: z.boolean(),
1934
1865
  threadId: z.string().min(1)
@@ -1936,8 +1867,8 @@ var exportSchema = z.object({
1936
1867
  var exportThreadsSchema = z.object({
1937
1868
  convertToProjectRoot: z.boolean(),
1938
1869
  includeCommentary: z.boolean(),
1870
+ includeMetadata: z.boolean(),
1939
1871
  includeTools: z.boolean(),
1940
- optimized: z.boolean(),
1941
1872
  outputFormat: z.enum(["md", "txt"]),
1942
1873
  redactUsername: z.boolean(),
1943
1874
  threadIds: z.array(z.string().min(1)).min(1)
@@ -2022,8 +1953,8 @@ var exportThreadFn = createServerFn({ method: "POST" }).inputValidator(exportSch
2022
1953
  return renderCodexThreadDownload({
2023
1954
  dbPath: getDbPath(),
2024
1955
  includeCommentary: data.includeCommentary,
1956
+ includeMetadata: data.includeMetadata,
2025
1957
  includeTools: data.includeTools,
2026
- optimized: data.optimized,
2027
1958
  outputFormat: data.outputFormat,
2028
1959
  pathDisplaySettings: {
2029
1960
  convertToProjectRoot: data.convertToProjectRoot,
@@ -2041,8 +1972,8 @@ var exportThreadsFn = createServerFn({ method: "POST" }).inputValidator(exportTh
2041
1972
  return renderCodexThreadsDownload({
2042
1973
  dbPath: getDbPath(),
2043
1974
  includeCommentary: data.includeCommentary,
1975
+ includeMetadata: data.includeMetadata,
2044
1976
  includeTools: data.includeTools,
2045
- optimized: data.optimized,
2046
1977
  outputFormat: data.outputFormat,
2047
1978
  pathDisplaySettings: {
2048
1979
  convertToProjectRoot: data.convertToProjectRoot,
@@ -83,7 +83,7 @@ function DialogDescription({ className, ...props }) {
83
83
  //#region src/components/export-dialog.tsx
84
84
  function ExportDialog({ open, pending = false, title = "Export thread", onExport, onOpenChange }) {
85
85
  const [outputFormat, setOutputFormat] = useState("md");
86
- const [optimized, setOptimized] = useState(false);
86
+ const [includeMetadata, setIncludeMetadata] = useState(true);
87
87
  const [includeCommentary, setIncludeCommentary] = useState(false);
88
88
  const [includeTools, setIncludeTools] = useState(true);
89
89
  return /* @__PURE__ */ jsx(Dialog$1, {
@@ -124,17 +124,17 @@ function ExportDialog({ open, pending = false, title = "Export thread", onExport
124
124
  /* @__PURE__ */ jsxs("div", {
125
125
  className: "flex items-center gap-3 rounded-2xl border border-[var(--border)] bg-[var(--panel-secondary)] p-3",
126
126
  children: [/* @__PURE__ */ jsx(Checkbox$1, {
127
- "aria-label": "Optimized transcript",
128
- checked: optimized,
129
- onCheckedChange: (checked) => setOptimized(checked === true)
127
+ "aria-label": "Include metadata",
128
+ checked: includeMetadata,
129
+ onCheckedChange: (checked) => setIncludeMetadata(checked === true)
130
130
  }), /* @__PURE__ */ jsxs("span", {
131
131
  className: "space-y-1",
132
132
  children: [/* @__PURE__ */ jsx("span", {
133
133
  className: "block font-medium text-sm",
134
- children: "Optimized transcript"
134
+ children: "Include metadata"
135
135
  }), /* @__PURE__ */ jsx("span", {
136
136
  className: "block text-[var(--muted-foreground)] text-sm",
137
- children: "Removes metadata and condenses the transcript for readability and token efficiency."
137
+ children: "Includes the chat metadata section at the top of the exported transcript."
138
138
  })]
139
139
  })]
140
140
  }),
@@ -184,8 +184,8 @@ function ExportDialog({ open, pending = false, title = "Export thread", onExport
184
184
  disabled: pending,
185
185
  onClick: () => onExport({
186
186
  includeCommentary,
187
+ includeMetadata,
187
188
  includeTools,
188
- optimized,
189
189
  outputFormat
190
190
  }),
191
191
  children: pending ? "Exporting..." : "Download export"
@@ -1,12 +1,12 @@
1
1
  import { t as Button } from "./button-CmTDnzOn.js";
2
2
  import { n as useSettings } from "./settings-store-DpEJEQ7M.js";
3
- import { c as deleteThreadFn, d as exportThreadsFn, l as deleteThreadsFn, r as projectThreadsQueryOptions, u as exportThreadFn } from "./codex-queries-CAF6HYiG.js";
4
- import { t as Route } from "./projects._project-CJ7l0ynC.js";
3
+ import { c as deleteThreadFn, d as exportThreadsFn, l as deleteThreadsFn, r as projectThreadsQueryOptions, u as exportThreadFn } from "./codex-queries-BH4Cb0v3.js";
4
+ import { t as Route } from "./projects._project-gT01HBqH.js";
5
5
  import { t as DataTable } from "./data-table-Cdct823O.js";
6
6
  import { t as PageHeader } from "./page-header-CxdZM86z.js";
7
7
  import { n as formatBytes, o as formatNumber, r as formatDateTime, s as formatTokens } from "./formatters-FJaGZgJk.js";
8
8
  import { t as DeleteConfirmDialog } from "./delete-confirm-dialog-CWqcTXTF.js";
9
- import { n as downloadUrlFile, r as ExportDialog, t as downloadTextFile } from "./download-C5rkk_Bo.js";
9
+ import { n as downloadUrlFile, r as ExportDialog, t as downloadTextFile } from "./download-Drctxary.js";
10
10
  import { a as DropdownMenuTrigger, i as DropdownMenuItem, n as DropdownMenu, r as DropdownMenuContent, t as Input } from "./input-B4tEzctc.js";
11
11
  import { startTransition, useDeferredValue, useState } from "react";
12
12
  import { Link } from "@tanstack/react-router";
@@ -1,10 +1,10 @@
1
- import { r as projectThreadsQueryOptions } from "./codex-queries-CAF6HYiG.js";
1
+ import { r as projectThreadsQueryOptions } from "./codex-queries-BH4Cb0v3.js";
2
2
  import { t as LoadingPanel } from "./loading-panel-DbLdvjtR.js";
3
3
  import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region src/routes/projects.$project.tsx
6
6
  var $$splitErrorComponentImporter = () => import("./projects._project-CLSohrBp.js");
7
- var $$splitComponentImporter = () => import("./projects._project-CcJLp_A8.js");
7
+ var $$splitComponentImporter = () => import("./projects._project-DreIU5b0.js");
8
8
  var Route = createFileRoute("/projects/$project")({
9
9
  component: lazyRouteComponent($$splitComponentImporter, "component"),
10
10
  errorComponent: lazyRouteComponent($$splitErrorComponentImporter, "errorComponent"),
@@ -1,5 +1,5 @@
1
1
  import { t as Button } from "./button-CmTDnzOn.js";
2
- import { i as projectsQueryOptions, s as deleteProjectFn } from "./codex-queries-CAF6HYiG.js";
2
+ import { i as projectsQueryOptions, s as deleteProjectFn } from "./codex-queries-BH4Cb0v3.js";
3
3
  import { t as DataTable } from "./data-table-Cdct823O.js";
4
4
  import { t as PageHeader } from "./page-header-CxdZM86z.js";
5
5
  import { i as formatList, o as formatNumber, r as formatDateTime, s as formatTokens } from "./formatters-FJaGZgJk.js";
@@ -1,10 +1,10 @@
1
1
  import { t as cn } from "./utils-C_uf36nf.js";
2
2
  import { t as Button } from "./button-CmTDnzOn.js";
3
3
  import { t as SettingsProvider } from "./settings-store-DpEJEQ7M.js";
4
- import { i as projectsQueryOptions, t as analyticsQueryOptions } from "./codex-queries-CAF6HYiG.js";
5
- import { t as Route$5 } from "./routes-BhbxvJE7.js";
6
- import { t as Route$6 } from "./threads._threadId-Ba7vv6-K.js";
7
- import { t as Route$7 } from "./projects._project-CJ7l0ynC.js";
4
+ import { i as projectsQueryOptions, t as analyticsQueryOptions } from "./codex-queries-BH4Cb0v3.js";
5
+ import { t as Route$5 } from "./routes-BtcXuK0x.js";
6
+ import { t as Route$6 } from "./threads._threadId-DcbAJkwf.js";
7
+ import { t as Route$7 } from "./projects._project-gT01HBqH.js";
8
8
  import { useEffect, useState } from "react";
9
9
  import { HeadContent, Link, Outlet, Scripts, createFileRoute, createRootRouteWithContext, createRouter, lazyRouteComponent, notFound, redirect, useRouterState } from "@tanstack/react-router";
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -207,7 +207,7 @@ var $$splitComponentImporter$3 = () => import("./settings-MvWDgc1u.js");
207
207
  var Route$3 = createFileRoute("/settings")({ component: lazyRouteComponent($$splitComponentImporter$3, "component") });
208
208
  //#endregion
209
209
  //#region src/routes/analytics.tsx
210
- var $$splitComponentImporter$2 = () => import("./analytics-BMxW_bZL.js");
210
+ var $$splitComponentImporter$2 = () => import("./analytics-2QpLKjlG.js");
211
211
  var Route$2 = createFileRoute("/analytics")({
212
212
  component: lazyRouteComponent($$splitComponentImporter$2, "component"),
213
213
  loader: ({ context }) => {
@@ -234,7 +234,7 @@ var Route$1 = createFileRoute("/$threadId")({
234
234
  //#endregion
235
235
  //#region src/routes/projects.index.tsx
236
236
  var $$splitErrorComponentImporter = () => import("./projects.index-CaplpeMy.js");
237
- var $$splitComponentImporter = () => import("./projects.index-srtogpuF.js");
237
+ var $$splitComponentImporter = () => import("./projects.index-BYmgSGAj.js");
238
238
  var Route = createFileRoute("/projects/")({
239
239
  component: lazyRouteComponent($$splitComponentImporter, "component"),
240
240
  errorComponent: lazyRouteComponent($$splitErrorComponentImporter, "errorComponent"),
@@ -1,8 +1,8 @@
1
- import { n as dashboardQueryOptions } from "./codex-queries-CAF6HYiG.js";
1
+ import { n as dashboardQueryOptions } from "./codex-queries-BH4Cb0v3.js";
2
2
  import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  //#region src/routes/index.tsx
5
- var $$splitComponentImporter = () => import("./routes-CPe-ppmC.js");
5
+ var $$splitComponentImporter = () => import("./routes-_LbCIjtJ.js");
6
6
  var Route = createFileRoute("/")({
7
7
  component: lazyRouteComponent($$splitComponentImporter, "component"),
8
8
  loader: ({ context }) => context.queryClient.ensureQueryData(dashboardQueryOptions())
@@ -1,5 +1,5 @@
1
- import { n as dashboardQueryOptions } from "./codex-queries-CAF6HYiG.js";
2
- import { t as Route } from "./routes-BhbxvJE7.js";
1
+ import { n as dashboardQueryOptions } from "./codex-queries-BH4Cb0v3.js";
2
+ import { t as Route } from "./routes-BtcXuK0x.js";
3
3
  import { t as MetricCard } from "./metric-card-ByEeLu0r.js";
4
4
  import { t as PageHeader } from "./page-header-CxdZM86z.js";
5
5
  import { o as formatNumber, r as formatDateTime, s as formatTokens } from "./formatters-FJaGZgJk.js";