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.
- package/AGENTS.md +13 -7
- package/README.md +6 -2
- package/apps/ui/AGENTS.md +2 -0
- package/apps/ui/README.md +3 -1
- package/apps/ui/dist/client/assets/{analytics-CqWZmyV6.js → analytics-Cv0JMDN2.js} +1 -1
- package/apps/ui/dist/client/assets/{checkbox-DXM4lkJq.js → checkbox-DjHij7DJ.js} +1 -1
- package/apps/ui/dist/client/assets/{data-table-DnPYMPCD.js → data-table-Bgnh7phF.js} +1 -1
- package/apps/ui/dist/client/assets/{delete-confirm-dialog-CcZaRX33.js → delete-confirm-dialog-CIZy_LXD.js} +1 -1
- package/apps/ui/dist/client/assets/download-DQtfva4z.js +1 -0
- package/apps/ui/dist/client/assets/{es2015-Bm0kEzx2.js → es2015-DsDKdYCE.js} +1 -1
- package/apps/ui/dist/client/assets/{formatters-C12LmYaa.js → formatters-CWFrMKSn.js} +1 -1
- package/apps/ui/dist/client/assets/{index-DdJ7ahIt.js → index-C_-e0lDI.js} +2 -2
- package/apps/ui/dist/client/assets/{input-CEsI7EpI.js → input-BbgApiqZ.js} +1 -1
- package/apps/ui/dist/client/assets/{metric-card-9jwBF7rG.js → metric-card-BJX5rkHK.js} +1 -1
- package/apps/ui/dist/client/assets/{page-header-Dr_h1CVv.js → page-header-ODLuGLAB.js} +1 -1
- package/apps/ui/dist/client/assets/{projects._project-uyNGnpjH.js → projects._project-C2Pys_bB.js} +1 -1
- package/apps/ui/dist/client/assets/{projects._project-zoM8d2nH.js → projects._project-CHvAKvlu.js} +1 -1
- package/apps/ui/dist/client/assets/{projects.index-D1CWVN-O.js → projects.index-BmwtS1x-.js} +1 -1
- package/apps/ui/dist/client/assets/{projects.index-DukMuny6.js → projects.index-CuLw73mt.js} +1 -1
- package/apps/ui/dist/client/assets/{routes-Gr2Wwh83.js → routes-CfnaTOlj.js} +1 -1
- package/apps/ui/dist/client/assets/{select-CFim44gT.js → select-B1kH_5lx.js} +1 -1
- package/apps/ui/dist/client/assets/{settings-DqhyDxo2.js → settings-mYTB3sso.js} +1 -1
- package/apps/ui/dist/client/assets/{threads._threadId-DT75NiBa.js → threads._threadId-CUiCZSwo.js} +1 -1
- package/apps/ui/dist/client/assets/{threads._threadId-Df5VXIuZ.js → threads._threadId-C_47okme.js} +1 -1
- package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-kj_QB_26.js +99 -0
- package/apps/ui/dist/server/assets/{analytics-BMxW_bZL.js → analytics-2QpLKjlG.js} +1 -1
- package/apps/ui/dist/server/assets/{codex-queries-CAF6HYiG.js → codex-queries-BH4Cb0v3.js} +2 -2
- package/apps/ui/dist/server/assets/{codex-server-C01sv0JJ.js → codex-server-DqzruLmg.js} +17 -86
- package/apps/ui/dist/server/assets/{download-C5rkk_Bo.js → download-Drctxary.js} +7 -7
- package/apps/ui/dist/server/assets/{projects._project-CcJLp_A8.js → projects._project-DreIU5b0.js} +3 -3
- package/apps/ui/dist/server/assets/{projects._project-CJ7l0ynC.js → projects._project-gT01HBqH.js} +2 -2
- package/apps/ui/dist/server/assets/{projects.index-srtogpuF.js → projects.index-BYmgSGAj.js} +1 -1
- package/apps/ui/dist/server/assets/{router-C_w-haH6.js → router-Qj5Kn7bl.js} +6 -6
- package/apps/ui/dist/server/assets/{routes-BhbxvJE7.js → routes-BtcXuK0x.js} +2 -2
- package/apps/ui/dist/server/assets/{routes-CPe-ppmC.js → routes-_LbCIjtJ.js} +2 -2
- package/apps/ui/dist/server/assets/{threads._threadId-euyNckhj.js → threads._threadId-D5m6ypGw.js} +3 -3
- package/apps/ui/dist/server/assets/{threads._threadId-Ba7vv6-K.js → threads._threadId-DcbAJkwf.js} +2 -2
- package/apps/ui/dist/server/server.js +19 -36
- package/bin/codex-chats-claude.js +5 -0
- package/bin/codex-chats.js +5 -0
- package/bin/spiracha.js +5 -0
- package/package.json +9 -6
- package/src/lib/codex-browser-export.ts +2 -2
- package/src/lib/codex-exporter-cli.ts +9 -9
- package/src/lib/codex-exporter-transcript.ts +16 -190
- package/src/lib/codex-exporter-types.ts +1 -1
- package/src/lib/codex-exporter.ts +0 -1
- package/src/lib/interactive-cli.ts +2 -2
- package/src/mcp-server.ts +2 -2
- package/apps/ui/dist/client/assets/download-DOwxk-cG.js +0 -1
- package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-C0V305Nt.js +0 -99
package/apps/ui/dist/client/assets/{threads._threadId-Df5VXIuZ.js → threads._threadId-C_47okme.js}
RENAMED
|
@@ -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-
|
|
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(
|
|
1071
|
+
renderDocumentTitle(getTitle(target, transcriptState.sessionMeta), options.outputFormat),
|
|
1075
1072
|
"",
|
|
1076
|
-
renderMetadataBlock(
|
|
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(
|
|
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 = (
|
|
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
|
|
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.
|
|
1166
|
-
const title = getTitle(target, sessionMeta);
|
|
1167
|
-
const metadata = buildMetadataEntries(target, sessionMeta, options);
|
|
1146
|
+
if (!options.includeMetadata) return "";
|
|
1168
1147
|
return `${[
|
|
1169
|
-
renderDocumentTitle(
|
|
1148
|
+
renderDocumentTitle(getTitle(target, sessionMeta), options.outputFormat),
|
|
1170
1149
|
"",
|
|
1171
|
-
renderMetadataBlock(
|
|
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 [
|
|
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": "
|
|
128
|
-
checked:
|
|
129
|
-
onCheckedChange: (checked) =>
|
|
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: "
|
|
134
|
+
children: "Include metadata"
|
|
135
135
|
}), /* @__PURE__ */ jsx("span", {
|
|
136
136
|
className: "block text-[var(--muted-foreground)] text-sm",
|
|
137
|
-
children: "
|
|
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"
|
package/apps/ui/dist/server/assets/{projects._project-CcJLp_A8.js → projects._project-DreIU5b0.js}
RENAMED
|
@@ -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-
|
|
4
|
-
import { t as Route } from "./projects._project-
|
|
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-
|
|
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";
|
package/apps/ui/dist/server/assets/{projects._project-CJ7l0ynC.js → projects._project-gT01HBqH.js}
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { r as projectThreadsQueryOptions } from "./codex-queries-
|
|
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-
|
|
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"),
|
package/apps/ui/dist/server/assets/{projects.index-srtogpuF.js → projects.index-BYmgSGAj.js}
RENAMED
|
@@ -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-
|
|
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-
|
|
5
|
-
import { t as Route$5 } from "./routes-
|
|
6
|
-
import { t as Route$6 } from "./threads._threadId-
|
|
7
|
-
import { t as Route$7 } from "./projects._project-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
2
|
-
import { t as Route } from "./routes-
|
|
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";
|