agent-session-inspector 0.1.5 → 0.1.7

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 (65) hide show
  1. package/README.md +6 -4
  2. package/VERSION +1 -1
  3. package/app/.next/BUILD_ID +1 -1
  4. package/app/.next/build-manifest.json +3 -3
  5. package/app/.next/prerender-manifest.json +3 -3
  6. package/app/.next/required-server-files.json +1 -1
  7. package/app/.next/server/app/_global-error.html +1 -1
  8. package/app/.next/server/app/_global-error.rsc +1 -1
  9. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  13. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/_not-found.html +1 -1
  15. package/app/.next/server/app/_not-found.rsc +2 -2
  16. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  17. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  18. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  19. package/app/.next/server/app/api/analytics/route.js.nft.json +1 -1
  20. package/app/.next/server/app/api/logs/route.js.nft.json +1 -1
  21. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  22. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  23. package/app/.next/server/app/api/search/route.js.nft.json +1 -1
  24. package/app/.next/server/app/api/sessions/[provider]/[id]/reveal/route.js.nft.json +1 -1
  25. package/app/.next/server/app/api/sessions/[provider]/[id]/route.js.nft.json +1 -1
  26. package/app/.next/server/app/api/sessions/route.js.nft.json +1 -1
  27. package/app/.next/server/app/index.html +1 -1
  28. package/app/.next/server/app/index.rsc +3 -3
  29. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  30. package/app/.next/server/app/index.segments/_full.segment.rsc +3 -3
  31. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  32. package/app/.next/server/app/page.js.nft.json +1 -1
  33. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/sessions/[provider]/[id]/page.js.nft.json +1 -1
  35. package/app/.next/server/app/sessions/[provider]/[id]/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/chunks/[root-of-the-server]__0dyq0rc._.js +1 -1
  37. package/app/.next/server/chunks/[root-of-the-server]__0kgkqhn._.js +1 -1
  38. package/app/.next/server/chunks/[root-of-the-server]__10p8y9z._.js +1 -1
  39. package/app/.next/server/chunks/[root-of-the-server]__1cceere._.js +1 -1
  40. package/app/.next/server/chunks/[root-of-the-server]__1eclfq8._.js +1 -1
  41. package/app/.next/server/chunks/[root-of-the-server]__1lz20wm._.js +1 -1
  42. package/app/.next/server/chunks/[root-of-the-server]__1zdh1mi._.js +1 -1
  43. package/app/.next/server/chunks/[root-of-the-server]__20epvou._.js +1 -1
  44. package/app/.next/server/chunks/ssr/_0o294sf._.js +1 -1
  45. package/app/.next/server/chunks/ssr/{_1-5v1mi._.js → _0wfo2z0._.js} +2 -2
  46. package/app/.next/server/chunks/ssr/src_app_sessions_[provider]_[id]_page_tsx_0uf635h._.js +3 -3
  47. package/app/.next/server/middleware-build-manifest.js +3 -3
  48. package/app/.next/server/pages/404.html +1 -1
  49. package/app/.next/server/pages/500.html +1 -1
  50. package/app/.next/server/server-reference-manifest.js +1 -1
  51. package/app/.next/server/server-reference-manifest.json +1 -1
  52. package/app/.next/static/chunks/0slbmtcht4v2w.css +1 -0
  53. package/app/.next/static/chunks/279fmcw99x0e9.js +6 -0
  54. package/app/.next/static/chunks/{043k5ranw7p1-.js → 33valh9_p24ah.js} +1 -1
  55. package/app/README.md +6 -4
  56. package/app/docs/screenshots/request-table.png +0 -0
  57. package/app/package.json +1 -1
  58. package/app/server.js +1 -1
  59. package/cli/cli.mjs +5 -3
  60. package/package.json +1 -1
  61. package/app/.next/static/chunks/1syzk-359a-tl.js +0 -6
  62. package/app/.next/static/chunks/23pvfhng1yidh.css +0 -1
  63. /package/app/.next/static/{-wq1RTFV0ts5s-g4PiOpq → ji6govOHS2spXukBPOyFL}/_buildManifest.js +0 -0
  64. /package/app/.next/static/{-wq1RTFV0ts5s-g4PiOpq → ji6govOHS2spXukBPOyFL}/_clientMiddlewareManifest.js +0 -0
  65. /package/app/.next/static/{-wq1RTFV0ts5s-g4PiOpq → ji6govOHS2spXukBPOyFL}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,77224,e=>{"use strict";let t=(0,e.i(13496).default)("bug",[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]]);e.s(["Bug",0,t],77224)},50267,e=>{"use strict";let t=(0,e.i(13496).default)("calendar-days",[["path",{d:"M8 2v3",key:"1ioesn"}],["path",{d:"M16 2v3",key:"otl347"}],["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M8 13h.01",key:"1sbv64"}],["path",{d:"M12 13h.01",key:"y0uutt"}],["path",{d:"M16 13h.01",key:"wip0gl"}],["path",{d:"M8 17h.01",key:"p3bg7i"}],["path",{d:"M12 17h.01",key:"p32p05"}],["path",{d:"M16 17h.01",key:"ql8jdd"}]]);e.s(["CalendarDays",0,t],50267)},93304,98993,e=>{"use strict";let t=(0,e.i(13496).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["default",0,t],98993),e.s(["ChevronRight",0,t],93304)},26162,e=>{"use strict";let t=(0,e.i(13496).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["CheckCircle2",0,t],26162)},93125,e=>{"use strict";let t=(0,e.i(13496).default)("git-branch",[["path",{d:"M15 6a9 9 0 0 0-9 9V3",key:"1cii5b"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}]]);e.s(["GitBranch",0,t],93125)},50395,e=>{"use strict";let t=(0,e.i(13496).default)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);e.s(["Info",0,t],50395)},59920,10976,e=>{"use strict";let t=(0,e.i(13496).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["default",0,t],10976),e.s(["AlertTriangle",0,t],59920)},32660,e=>{"use strict";let t=(0,e.i(13496).default)("zap",[["path",{d:"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z",key:"1v7up4"}]]);e.s(["Zap",0,t],32660)},93472,e=>{"use strict";var t=e.i(45650),r=e.i(75157);e.s(["BarList",0,function({items:e,color:a="bg-brand",max:n,emptyLabel:s="None",limit:i,format:o=e=>e.toLocaleString()}){if(0===e.length)return(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:s});let l=[...e].sort((e,t)=>t.value-e.value),d=i?l.slice(0,i):l,u=n??l[0].value??1;return(0,t.jsxs)("div",{className:"space-y-1.5",children:[d.map(({name:e,value:n})=>(0,t.jsxs)("div",{className:"flex items-center gap-2.5 text-xs",children:[(0,t.jsx)("div",{className:"w-28 shrink-0 truncate font-mono text-muted-foreground sm:w-36",title:e,children:e}),(0,t.jsx)("div",{className:"h-4 flex-1 overflow-hidden rounded-sm bg-muted",children:(0,t.jsx)("div",{className:(0,r.cn)("h-full rounded-sm",a),style:{width:`${Math.max(n/u*100,2)}%`}})}),(0,t.jsx)("div",{className:"w-12 shrink-0 text-right font-medium tabular-nums text-foreground",children:o(n)})]},e)),i&&l.length>i&&(0,t.jsxs)("p",{className:"pt-1 text-xs text-muted-foreground",children:["+",l.length-i," more"]})]})}])},35334,e=>{"use strict";var t=e.i(45650),r=e.i(75157);e.s(["EmptyState",0,function({icon:e,title:a,description:n,action:s,className:i}){return(0,t.jsxs)("div",{className:(0,r.cn)("flex flex-col items-center justify-center gap-2 rounded-xl border border-dashed border-border px-6 py-14 text-center",i),children:[(0,t.jsx)("div",{className:"flex size-10 items-center justify-center rounded-full bg-muted text-muted-foreground",children:(0,t.jsx)(e,{className:"size-5","aria-hidden":!0})}),(0,t.jsx)("p",{className:"text-sm font-medium text-foreground",children:a}),n&&(0,t.jsx)("p",{className:"max-w-sm text-xs leading-relaxed text-muted-foreground",children:n}),s&&(0,t.jsx)("div",{className:"mt-2",children:s})]})}])},82183,9449,e=>{"use strict";var t=e.i(45650);let r={A:{badge:"border-emerald-300 bg-emerald-50 text-emerald-700 dark:border-emerald-900 dark:bg-emerald-950/40 dark:text-emerald-300",bar:"bg-emerald-500"},B:{badge:"border-sky-300 bg-sky-50 text-sky-700 dark:border-sky-900 dark:bg-sky-950/40 dark:text-sky-300",bar:"bg-sky-500"},C:{badge:"border-amber-300 bg-amber-50 text-amber-700 dark:border-amber-900 dark:bg-amber-950/40 dark:text-amber-300",bar:"bg-amber-500"},D:{badge:"border-orange-300 bg-orange-50 text-orange-700 dark:border-orange-900 dark:bg-orange-950/40 dark:text-orange-300",bar:"bg-orange-500"},F:{badge:"border-red-300 bg-red-50 text-red-700 dark:border-red-900 dark:bg-red-950/40 dark:text-red-300",bar:"bg-red-500"}},a={completed:"The agent had the last word.",in_progress:"The agent is still writing to this session.",abandoned:"The session stops mid-work, or on a prompt the agent never answered.",errored:"The transcript ends on an API error."},n=(e,t,r=`${t}s`)=>`${e.toLocaleString()} ${1===e?t:r}`;e.s(["GRADES",0,["A","B","C","D","F"],"GRADE_STYLES",0,r,"OUTCOMES",0,["completed","in_progress","abandoned","errored"],"OUTCOME_BARS",0,{completed:"bg-emerald-500",in_progress:"bg-sky-500",abandoned:"bg-amber-500",errored:"bg-red-500"},"OUTCOME_LABELS",0,{completed:"Completed",in_progress:"In progress",abandoned:"Abandoned",errored:"Errored"},"OUTCOME_NOTES",0,a,"SIGNAL_INFO",0,{outcome:{label:"Unfinished sessions",describe:(e,t)=>a[t.outcome],advice:"Review errored and abandoned sessions first: they spent tokens without reaching an answer."},tool_failures:{label:"Tool failures",describe:(e,t)=>{let r=Math.max(t.toolResults,e.count);return`${e.count.toLocaleString()} of ${n(r,"tool result")} failed (${Math.round(e.count/r*100)}%).`},advice:"Open the failed calls and look for a recurring cause: wrong paths, missing dependencies, commands that need a flag.",focus:{failures:!0}},retry_loops:{label:"Retry loops",describe:e=>`The same tool failed three or more times in a row, ${n(e.count,"time")}.`,advice:"An agent repeating a failing call lacks the context to try something else. Put the working command in AGENTS.md or CLAUDE.md.",focus:{failures:!0}},api_errors:{label:"API errors",describe:e=>`${n(e.count,"API error")} or retried request${1===e.count?"":"s"}.`,advice:"Each retry re-sends the whole context. Frequent errors point at rate limits or an overloaded model.",focus:{categories:["session"],subKeys:["session.error"]}},aborted_turns:{label:"Interrupted turns",describe:e=>`${n(e.count,"turn")} interrupted before the agent finished.`,advice:"Interruptions usually mean the agent set off in the wrong direction. State the constraints and the success criteria up front.",focus:{categories:["session"],subKeys:["session.turn_aborted"]}},compactions:{label:"Context compactions",describe:e=>`Context was compacted ${n(e.count,"time")}.`,advice:"Split long tasks into separate sessions before the context fills up: compacting mid-task loses detail.",focus:{categories:["session"],subKeys:["session.compaction_start"]}}},"healthSummary",0,function(e){return`${e.grade} \xb7 ${e.score}`}],9449);var s=e.i(75157);e.s(["GradeBadge",0,function({grade:e,score:a,className:n,...i}){return(0,t.jsxs)("span",{...i,className:(0,s.cn)("inline-flex h-5 min-w-5 shrink-0 items-center justify-center gap-1 rounded-sm border px-1 font-mono text-xs font-bold leading-none",r[e].badge,n),children:[e,void 0!==a&&(0,t.jsx)("span",{className:"font-medium tabular-nums",children:a})]})}],82183)},4503,22910,e=>{"use strict";var t=e.i(45650),r=e.i(10364);let a=(0,e.i(13496).default)("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);var n=e.i(19455),s=e.i(46798),i=e.i(75157);function o({className:e}){return(0,t.jsx)("div",{"aria-hidden":!0,className:(0,i.cn)("animate-pulse rounded-md bg-muted",e)})}e.s(["ScrollToTop",0,function({threshold:e=600}){let[o,l]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{let t=()=>l(window.scrollY>e);return t(),window.addEventListener("scroll",t,{passive:!0}),()=>window.removeEventListener("scroll",t)},[e]),(0,t.jsxs)(s.Tooltip,{children:[(0,t.jsx)(s.TooltipTrigger,{render:(0,t.jsx)(n.Button,{variant:"outline",size:"icon-lg",onClick:()=>window.scrollTo({top:0,behavior:"smooth"}),"aria-label":"Back to top",tabIndex:o?0:-1,className:(0,i.cn)("fixed bottom-6 right-6 z-30 size-10 rounded-full bg-card text-muted-foreground shadow-lg dark:bg-card",o?"translate-y-0 opacity-100":"pointer-events-none translate-y-2 opacity-0"),children:(0,t.jsx)(a,{"aria-hidden":!0})})}),(0,t.jsx)(s.TooltipContent,{side:"left",children:"Back to top"})]})}],4503),e.s(["SessionCardSkeleton",0,function(){return(0,t.jsxs)("div",{className:"rounded-xl border border-border bg-card px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1 space-y-2",children:[(0,t.jsx)(o,{className:"h-4 w-2/3"}),(0,t.jsx)(o,{className:"h-3 w-1/3"})]}),(0,t.jsx)(o,{className:"h-3 w-16"})]}),(0,t.jsxs)("div",{className:"mt-3 flex gap-2",children:[(0,t.jsx)(o,{className:"h-3 w-20"}),(0,t.jsx)(o,{className:"h-3 w-16"}),(0,t.jsx)(o,{className:"h-3 w-24"})]})]})},"Skeleton",0,o],22910)},75858,e=>{"use strict";var t=e.i(45650),r=e.i(50395),a=e.i(75157);e.s(["StatCard",0,function({label:e,value:n,sub:s,accent:i=!1,onClick:o}){let l=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("span",{className:"flex items-center justify-between gap-2 text-xs uppercase tracking-wider text-muted-foreground",children:[e,o&&(0,t.jsx)(r.Info,{className:"size-3.5 shrink-0 opacity-60 transition-opacity group-hover:opacity-100","aria-hidden":!0})]}),(0,t.jsx)("span",{className:(0,a.cn)("mt-1.5 block text-2xl font-bold leading-none tabular-nums",i?"text-brand":"text-foreground"),children:n}),s&&(0,t.jsx)("span",{className:"mt-1 block truncate text-xs normal-case text-muted-foreground",title:s,children:s})]});return o?(0,t.jsx)("button",{type:"button",onClick:o,"aria-haspopup":"dialog",className:"group block rounded-xl border border-border bg-card p-4 text-left transition-colors hover:border-brand/40 hover:bg-muted/40 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",children:l}):(0,t.jsx)("div",{className:"rounded-xl border border-border bg-card p-4",children:l})},"StatCardGrid",0,function({children:e}){return(0,t.jsx)("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(150px,1fr))] gap-3",children:e})}])},82574,e=>{"use strict";var t=e.i(13496);let r=(0,t.default)("arrow-down-to-line",[["path",{d:"M12 17V3",key:"1cwfxf"}],["path",{d:"m6 11 6 6 6-6",key:"12ii2o"}],["path",{d:"M19 21H5",key:"150jfl"}]]),a=(0,t.default)("arrow-up-from-line",[["path",{d:"m18 9-6-6-6 6",key:"kcunyi"}],["path",{d:"M12 3v14",key:"7cf3v8"}],["path",{d:"M5 21h14",key:"11awu3"}]]);e.s(["InputTokensIcon",0,a,"OutputTokensIcon",0,r],82574)},19007,44581,e=>{"use strict";var t=e.i(45650),r=e.i(10364),a=e.i(51958),n=e.i(77224),s=e.i(50395);let i=(0,e.i(13496).default)("tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);var o=e.i(19455),l=e.i(76639),d=e.i(46798),u=e.i(34960);let c="https://github.com/kishanmundha/agent-session-inspector",f={name:"Agent Session Inspector",description:"A local web UI for reading agent CLI transcripts: what the agent did, how long it took, and where the tokens went. It reads the session files on this machine and never sends them anywhere.",version:"0.1.5",author:{name:"Kishan Mundha",url:"https://github.com/kishanmundha"},repoUrl:c,issuesUrl:`${c}/issues`,releasesUrl:`${c}/releases`};e.s(["APP_INFO",0,f],44581);var h=e.i(46816),p=e.i(75157);function m({className:e}){return(0,t.jsx)("svg",{viewBox:"0 0 16 16",fill:"currentColor",className:e,"aria-hidden":!0,children:(0,t.jsx)("path",{d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z"})})}let x={target:"_blank",rel:"noreferrer"};e.s(["AboutDialog",0,function({providers:e,className:c}){let[b,g]=(0,r.useState)(!1),[v,y]=(0,r.useState)(null),w=(0,r.useRef)(!1),j=e??v,k=j?.filter(e=>e.available),S=j?.filter(e=>!e.available)??[];return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(d.Tooltip,{children:[(0,t.jsx)(d.TooltipTrigger,{render:(0,t.jsx)(o.Button,{variant:"outline",size:"icon",onClick:function(){g(!0),e||w.current||(w.current=!0,fetch("/api/providers").then(e=>e.ok?e.json():[]).then(y).catch(()=>y([])))},"aria-label":"About",className:(0,p.cn)("text-muted-foreground",c),children:(0,t.jsx)(s.Info,{className:"size-3.5","aria-hidden":!0})})}),(0,t.jsx)(d.TooltipContent,{children:"About"})]}),(0,t.jsx)(l.Dialog,{open:b,onOpenChange:g,children:(0,t.jsxs)(l.DialogContent,{children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("span",{className:"flex size-10 shrink-0 items-center justify-center rounded-lg bg-brand text-brand-foreground",children:(0,t.jsx)(a.Bot,{className:"size-5","aria-hidden":!0})}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)(l.DialogTitle,{children:f.name}),(0,t.jsxs)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:[(0,t.jsxs)("span",{className:"font-mono",children:["v",f.version]})," · by ",(0,t.jsx)("a",{href:f.author.url,...x,className:"font-medium text-foreground underline-offset-2 hover:underline",children:f.author.name})]})]})]}),(0,t.jsx)(l.DialogDescription,{children:f.description}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsxs)(o.Button,{variant:"outline",size:"sm",nativeButton:!1,render:(0,t.jsx)("a",{href:f.repoUrl,...x}),children:[(0,t.jsx)(m,{className:"size-3.5"}),"GitHub"]}),(0,t.jsxs)(o.Button,{variant:"outline",size:"sm",nativeButton:!1,render:(0,t.jsx)("a",{href:f.releasesUrl,...x}),children:[(0,t.jsx)(i,{className:"size-3.5","aria-hidden":!0}),"Releases"]}),(0,t.jsxs)(o.Button,{variant:"outline",size:"sm",nativeButton:!1,render:(0,t.jsx)("a",{href:f.issuesUrl,...x}),children:[(0,t.jsx)(n.Bug,{className:"size-3.5","aria-hidden":!0}),"Report an issue"]})]}),(0,t.jsxs)("section",{className:"space-y-2 border-t border-border pt-3",children:[(0,t.jsx)("h3",{className:"text-xs font-medium text-foreground",children:"Data sources"}),k?k.length>0?(0,t.jsx)("ul",{className:"overflow-hidden rounded-lg border border-border text-xs",children:k.map(e=>(0,t.jsxs)("li",{className:"flex items-center gap-2 border-b border-border/60 px-3 py-2 last:border-b-0",children:[(0,t.jsx)("span",{className:(0,p.cn)("size-1.5 shrink-0 rounded-full",(0,h.providerStyle)(e.id).dotCls),"aria-hidden":!0}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate font-medium text-foreground",children:e.label}),(0,t.jsx)("p",{className:"truncate font-mono text-muted-foreground",children:e.rootDir})]}),(0,t.jsx)("span",{className:"shrink-0 tabular-nums text-muted-foreground",children:`${e.sessionCount??0} ${1===e.sessionCount?"session":"sessions"}`}),(0,t.jsx)(u.CopyButton,{value:e.rootDir,label:"Copy path"})]},e.id))}):(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"No agent directories found."}):(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Loading…"}),S.length>0&&(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:[k?.length?"Also supports":"Supports"," ",S.map(e=>e.label).join(", "),"."]})]})]})})]})}],19007)},19390,e=>{"use strict";var t=e.i(45650),r=e.i(10364),a=e.i(75379),n=e.i(75157);let s="\0other";function i(e,t){return"costUSD"===e?(0,a.formatCost)(t):(0,a.formatTokens)(t)??"0"}function o(e){if(e<=0)return 1;let t=10**Math.floor(Math.log10(e));return([1,1.5,2,3,4,5,6,8,10].find(r=>r*t>=e)??10)*t}let l=e=>e.toLocaleDateString([],{month:"short",day:"numeric"});e.s(["OTHER",0,s,"OTHER_COLOR",0,"color-mix(in srgb, var(--muted-foreground) 45%, transparent)","SERIES_COLORS",0,["var(--chart-1)","var(--chart-2)","var(--chart-3)","var(--chart-4)","var(--chart-5)"],"StackedBars",0,function({periods:e,breakdownOf:a,series:d,unit:u}){var c;let[f,h]=(0,r.useState)(null),p=o(Math.max(0,...e.map(e=>e[u]))),m=e.map(e=>(function(e,t,r){let a=new Set(t.map(e=>e.name)),n=0;for(let[t,s]of Object.entries(e))a.has(t)||(n+=s[r]);return t.map(t=>t.name===s?n:e[t.name]?.[r]??0)})(a(e),d,u)),x=null!==f&&f<e.length?f:null,b=d.map((e,t)=>m.reduce((e,r)=>e+r[t],0)),g=null===x?b:m[x],v=g.reduce((e,t)=>e+t,0),y=Math.floor((e.length-1)/2);return(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsxs)("div",{className:"flex h-48 flex-col justify-between text-right text-[10px] leading-none tabular-nums text-muted-foreground",children:[(0,t.jsx)("span",{children:i(u,p)}),(0,t.jsx)("span",{children:i(u,p/2)}),(0,t.jsx)("span",{children:i(u,0)})]}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{role:"img","aria-label":`${"costUSD"===u?"Cost":"Tokens"} per ${e[0]?.days===1?"day":"week"} over ${e.length} bars`,className:"relative flex h-48 items-end gap-[2px] border-b border-border",onMouseLeave:()=>h(null),children:[(0,t.jsx)("span",{className:"pointer-events-none absolute inset-x-0 top-0 border-t border-dashed border-border"}),(0,t.jsx)("span",{className:"pointer-events-none absolute inset-x-0 top-1/2 border-t border-dashed border-border"}),e.map((e,r)=>(0,t.jsx)("div",{onMouseEnter:()=>h(r),className:(0,n.cn)("relative flex h-full min-w-0 max-w-12 flex-1 flex-col-reverse",null!==x&&x!==r&&"opacity-50"),children:d.map((e,a)=>m[r][a]>0?(0,t.jsx)("div",{className:"w-full shrink-0 border-t-2 border-card first:border-t-0 last:rounded-t-[3px]",style:{height:`${m[r][a]/p*100}%`,minHeight:2,background:e.color}},e.name):null)},e.start.getTime()))]}),(0,t.jsxs)("div",{className:"mt-1.5 flex justify-between text-[10px] text-muted-foreground",children:[(0,t.jsx)("span",{children:e.length>0&&l(e[0].start)}),e.length>4&&(0,t.jsx)("span",{children:l(e[y].start)}),(0,t.jsx)("span",{children:e.length>1&&l(e[e.length-1].start)})]})]})]}),(0,t.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-x-4 gap-y-1.5 text-xs","aria-live":"polite",children:[(0,t.jsxs)("span",{className:"font-medium tabular-nums",children:[null===x?"Whole range":1===(c=e[x]).days?c.start.toLocaleDateString([],{weekday:"short",month:"short",day:"numeric"}):`Week of ${l(c.start)}`," ·"," ",i(u,v)]}),d.map((e,r)=>(0,t.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5 text-muted-foreground",children:[(0,t.jsx)("span",{className:"size-2.5 shrink-0 rounded-[3px]",style:{background:e.color},"aria-hidden":!0}),(0,t.jsx)("span",{className:"max-w-40 truncate",title:e.label,children:e.label}),(0,t.jsx)("span",{className:"tabular-nums text-foreground",children:i(u,g[r])})]},e.name))]})]})},"Treemap",0,function({items:e,unit:r}){let a=e.filter(e=>e.value>0).sort((e,t)=>t.value-e.value),n=a.reduce((e,t)=>e+t.value,0),s=function(e){let t=e.reduce((e,t)=>e+t,0);if(t<=0)return[];let r=e.map(e=>e/t*5600),a=[],n=0,s=0,i=100,o=56,l=0;for(;l<r.length;){let e=Math.min(i,o),t=(t,r,a)=>Math.max(e*e*a/(t*t),t*t/(e*e*r)),d=r[l],u=l+1;for(;u<r.length;){let e=d+r[u];if(t(e,r[u],r[l])>t(d,r[u-1],r[l]))break;d=e,u++}let c=d/e,f=0;for(let e=l;e<u;e++){let t=r[e]/c;a.push(i>=o?{x:n,y:s+f,w:c,h:t}:{x:n+f,y:s,w:t,h:c}),f+=t}i>=o?(n+=c,i-=c):(s+=c,o-=c),l=u}return a}(a.map(e=>e.value));return(0,t.jsx)("div",{className:"relative w-full",style:{aspectRatio:"100 / 56"},role:"img","aria-label":`Share of ${"costUSD"===r?"cost":"tokens"} across ${a.length} groups`,children:a.map((e,a)=>{let o=s[a],l=e.value/n;return(0,t.jsx)("div",{title:`${e.label}: ${i(r,e.value)} (${(100*l).toFixed(1)}%)`,className:"absolute p-px",style:{left:`${o.x/100*100}%`,top:`${o.y/56*100}%`,width:`${o.w/100*100}%`,height:`${o.h/56*100}%`},children:(0,t.jsx)("div",{className:"size-full overflow-hidden rounded-[4px] border-l-[3px] px-1.5 py-1 hover:ring-1 hover:ring-foreground/50",style:{background:`color-mix(in srgb, ${e.color} 28%, var(--card))`,borderColor:e.color},children:o.w>14&&o.h>11&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"block truncate text-xs font-medium",children:e.label}),(0,t.jsxs)("span",{className:"block truncate text-[11px] tabular-nums text-muted-foreground",children:[i(r,e.value)," · ",(100*l).toFixed(1),"%"]})]})})},e.name)})})},"formatUnit",0,i,"niceCeil",0,o])},87486,e=>{"use strict";var t=e.i(29494),r=e.i(50403),a=e.i(94237),n=e.i(75157);let s=(0,a.cva)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});e.s(["Badge",0,function({className:e,variant:a="default",render:i,...o}){var l;return l={defaultTagName:"span",props:(0,t.mergeProps)({className:(0,n.cn)(s({variant:a}),e)},o),render:i,state:{slot:"badge",variant:a}},(0,r.useRenderElement)(l.defaultTagName??"div",l,l)}],87486)},59684,34960,e=>{"use strict";var t=e.i(45650);e.s([],88752),e.i(88752);var r=e.i(10364),a=e.i(19458),n=e.i(2304),s=e.i(82420);let i=r.createContext(void 0);function o(){let e=r.useContext(i);if(void 0===e)throw Error((0,s.default)(53));return e}var l=e.i(50403);function d(e,t,r){if(!e)return 0;let a=getComputedStyle(e),n=`${t}${"x"===r?"Inline":"Block"}`,s=parseFloat(a[`${n}Start`]);return"x"===r&&"margin"===t?2*s:s+parseFloat(a[`${n}End`])}var u=e.i(96100),c=e.i(99281);let f=e=>t=>t?{[e]:""}:null,h={hasOverflowX:f("data-has-overflow-x"),hasOverflowY:f("data-has-overflow-y"),overflowXStart:f("data-overflow-x-start"),overflowXEnd:f("data-overflow-x-end"),overflowYStart:f("data-overflow-y-start"),overflowYEnd:f("data-overflow-y-end"),cornerHidden:()=>null};var p=e.i(29148),m=e.i(63370);let x={x:0,y:0},b={width:0,height:0},g={xStart:!1,xEnd:!1,yStart:!1,yEnd:!1},v={x:!0,y:!0,corner:!0},y=r.forwardRef(function(e,s){var o;let f,{render:y,className:w,overflowEdgeThreshold:j,style:k,...S}=e,{xStart:N,xEnd:C,yStart:E,yEnd:R}=(f="number"==typeof(o=j)?{xStart:o,xEnd:o,yStart:o,yEnd:o}:o,{xStart:Math.max(0,f?.xStart||0),xEnd:Math.max(0,f?.xEnd||0),yStart:Math.max(0,f?.yStart||0),yEnd:Math.max(0,f?.yEnd||0)}),T=(0,c.useBaseUiId)(),M=(0,n.useTimeout)(),I=(0,n.useTimeout)(),{nonce:z,disableStyleElements:L}=(0,m.useCSPContext)(),[A,$]=r.useState(!1),[P,O]=r.useState(!1),[D,B]=r.useState(!1),[H,_]=r.useState(!1),[W,U]=r.useState(!1),[V,F]=r.useState(b),[Y,q]=r.useState(b),[X,K]=r.useState(g),[G,Z]=r.useState(v),Q=r.useRef(null),J=r.useRef(null),ee=r.useRef(null),et=r.useRef(null),er=r.useRef(null),ea=r.useRef(null),en=r.useRef(null),es=r.useRef(null),ei=r.useRef(0),eo=r.useRef(0),el=r.useRef(0),ed=r.useRef(0),eu=r.useRef("vertical"),ec=r.useRef(x),ef=r.useRef(null);function eh(e){let t=e?B:O;t(!0),(e?M:I).start(500,()=>{t(!1)})}let ep=(0,a.useStableCallback)(e=>{let t=e.x-ec.current.x,r=e.y-ec.current.y;ec.current=e,0!==r&&eh(!0),0!==t&&eh(!1)}),em=(0,a.useStableCallback)(()=>{let e=J.current;e&&null===ef.current&&(ef.current=e.style.scrollSnapType,e.style.scrollSnapType="none")}),ex=(0,a.useStableCallback)(e=>{if(0!==e.button)return;if(null!==es.current){let e="vertical"===eu.current?er.current:ea.current;if(e?.hasPointerCapture(es.current))return}es.current=e.pointerId,ei.current=e.clientY,eo.current=e.clientX,eu.current=e.currentTarget.getAttribute("data-orientation");let t=J.current;t&&(el.current=t.scrollTop,ed.current=t.scrollLeft,em());let r="vertical"===eu.current?er.current:ea.current;r?.setPointerCapture(e.pointerId)}),eb=(0,a.useStableCallback)(e=>{if(e.pointerId!==es.current)return;es.current=null,("vertical"===eu.current?B:O)(!1),null!==ef.current&&(J.current&&(J.current.style.scrollSnapType=ef.current),ef.current=null);let t="vertical"===eu.current?er.current:ea.current;t?.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId)}),eg=(0,a.useStableCallback)(e=>{if(e.pointerId!==es.current)return;if(e.buttons%2==0)return void eb(e);let t=J.current;if(!t)return;let r="vertical"===eu.current,a=r?er.current:ea.current,n=r?ee.current:et.current;if(!a||!n)return;let s=r?"y":"x",i=d(n,"padding",s),o=d(a,"margin",s),l=r?a.offsetHeight:a.offsetWidth,u=(r?n.offsetHeight:n.offsetWidth)-l-i-o,c=r?e.clientY-ei.current:e.clientX-eo.current,f=r?t.scrollHeight:t.scrollWidth,h=r?t.clientHeight:t.clientWidth,p=(r?el.current:ed.current)+(u<=0?0:c/u)*(f-h);r?t.scrollTop=p:t.scrollLeft=p,e.preventDefault(),eh(r)});function ev(e){_("touch"===e.pointerType)}function ey(e){ev(e),"touch"!==e.pointerType&&$((0,p.contains)(Q.current,e.target))}let ew=r.useMemo(()=>({scrolling:P||D,hasOverflowX:!G.x,hasOverflowY:!G.y,overflowXStart:X.xStart,overflowXEnd:X.xEnd,overflowYStart:X.yStart,overflowYEnd:X.yEnd,cornerHidden:G.corner}),[P,D,G.x,G.y,G.corner,X]),ej={role:"presentation",onPointerEnter:ey,onPointerMove:ey,onPointerDown:ev,onPointerLeave(){$(!1)},style:{position:"relative","--scroll-area-corner-height":`${V.height}px`,"--scroll-area-corner-width":`${V.width}px`}},ek=(0,l.useRenderElement)("div",e,{state:ew,ref:[s,Q],props:[ej,S],stateAttributesMapping:h}),eS=r.useMemo(()=>({handlePointerDown:ex,handlePointerMove:eg,handlePointerUp:eb,handleScroll:ep,disableViewportSnap:em,cornerSize:V,setCornerSize:F,thumbSize:Y,setThumbSize:q,hasMeasuredScrollbar:W,setHasMeasuredScrollbar:U,touchModality:H,cornerRef:en,scrollingX:P,scrollingY:D,hovering:A,setHovering:$,viewportRef:J,scrollbarYRef:ee,scrollbarXRef:et,thumbYRef:er,thumbXRef:ea,rootId:T,hiddenState:G,setHiddenState:Z,overflowEdges:X,setOverflowEdges:K,viewportState:ew,overflowEdgeThreshold:{xStart:N,xEnd:C,yStart:E,yEnd:R}}),[ex,eg,eb,ep,em,V,Y,W,H,P,D,A,T,G,X,ew,N,C,E,R]);return(0,t.jsxs)(i.Provider,{value:eS,children:[!L&&u.styleDisableScrollbar.getElement(z),ek]})});var w=e.i(61362),j=e.i(33858);let k=r.createContext(void 0);var S=e.i(21023),N=e.i(91338),C=e.i(98934);let E=["--scroll-area-overflow-x-start","--scroll-area-overflow-x-end","--scroll-area-overflow-y-start","--scroll-area-overflow-y-end"],R=!1,T=r.forwardRef(function(e,s){let{render:i,className:c,style:f,...p}=e,{viewportRef:m,scrollbarYRef:x,scrollbarXRef:b,thumbYRef:g,thumbXRef:v,cornerRef:y,cornerSize:N,setCornerSize:T,setThumbSize:z,rootId:L,setHiddenState:A,hiddenState:$,setHasMeasuredScrollbar:P,handleScroll:O,touchModality:D,setHovering:B,setOverflowEdges:H,overflowEdgeThreshold:_,viewportState:W}=o(),U=(0,S.useDirection)(),V=r.useRef(!0),F=r.useRef([NaN,NaN,NaN,NaN]),Y=(0,n.useTimeout)(),q=(0,n.useTimeout)(),X=(0,a.useStableCallback)(()=>{var e;let t,r,a=m.current,n=x.current,s=b.current,i=g.current,o=v.current,l=y.current;if(!a)return;let u=a.scrollHeight,c=a.scrollWidth,f=a.clientHeight,h=a.clientWidth,p=a.scrollTop,w=a.scrollLeft,j=F.current,k=Number.isNaN(j[0]);if(j[0]=f,j[1]=u,j[2]=h,j[3]=c,k&&P(!0),0===u||0===c)return;let S=(t=(e=a).clientHeight>=e.scrollHeight,{y:t,x:r=e.clientWidth>=e.scrollWidth,corner:t||r}),R=S.y,L=S.x,$=h/c,O=f/u,D=Math.max(0,c-h),B=Math.max(0,u-f),W=0,V=0;L||(W=(0,C.normalizeScrollOffset)("rtl"===U?-w:w,D),V=D-W);let Y=R?0:(0,C.normalizeScrollOffset)(p,B),q=R?0:B-Y,X=L?0:h,K=R?0:f,G=0,Z=0;L||R||(G=n?.offsetWidth||0,Z=s?.offsetHeight||0);let Q=0===N.width&&0===N.height,J=Q?G:0,ee=Q?Z:0,et=d(s,"padding","x"),er=d(n,"padding","y"),ea=d(o,"margin","x"),en=d(i,"margin","y"),es=X-et-ea,ei=K-er-en,eo=s?Math.min(s.offsetWidth-J,es):es,el=n?Math.min(n.offsetHeight-ee,ei):ei,ed=Math.max(16,eo*$),eu=Math.max(16,el*O);if(z(e=>M(e,{width:ed,height:eu})),n&&i){let e=n.offsetHeight-eu-er-en,t=I(i,"--scroll-area-thumb-height",p,B,u,eu,e);i.style.transform=`translate3d(0,${t}px,0)`}if(s&&o){let e=s.offsetWidth-ed-et-ea,t=I(o,"--scroll-area-thumb-width","rtl"===U?-w:w,D,c,ed,e);o.style.transform=`translate3d(${"rtl"===U?-t:t}px,0,0)`}let ec=[W,V,Y,q];E.forEach((e,t)=>{a.style.setProperty(e,`${ec[t]}px`)}),l&&T(e=>M(e,{width:G,height:Z})),A(e=>M(e,S));let ef={xStart:!L&&W>_.xStart,xEnd:!L&&V>_.xEnd,yStart:!R&&Y>_.yStart,yEnd:!R&&q>_.yEnd};H(e=>M(e,ef))});function K(){V.current=!1}(0,w.useIsoLayoutEffect)(()=>{R||j.platform.engine.webkit||("u">typeof CSS&&"registerProperty"in CSS&&E.forEach(e=>{try{CSS.registerProperty({name:e,syntax:"<length>",inherits:!1,initialValue:"0px"})}catch{}}),R=!0)},[]),(0,w.useIsoLayoutEffect)(()=>{queueMicrotask(X)},[X,$,U,_.xStart,_.xEnd,_.yStart,_.yEnd]),(0,w.useIsoLayoutEffect)(()=>{m.current?.matches(":hover")&&B(!0)},[m,B]),(0,w.useIsoLayoutEffect)(()=>{let e=m.current;if("u"<typeof ResizeObserver||!e)return;let t=!1,r=new ResizeObserver(()=>{if(!t){t=!0;let r=F.current;if(r[0]===e.clientHeight&&r[1]===e.scrollHeight&&r[2]===e.clientWidth&&r[3]===e.scrollWidth)return}X()});return r.observe(e),q.start(0,()=>{let t=e.getAnimations({subtree:!0});0!==t.length&&Promise.allSettled(t.map(e=>e.finished)).then(X).catch(()=>{})}),()=>{r.disconnect(),q.clear()}},[X,m,q]);let G={role:"presentation",...L&&{"data-id":`${L}-viewport`},tabIndex:$.x&&$.y?-1:0,className:u.styleDisableScrollbar.className,style:{overflow:"scroll"},onScroll(){m.current&&(X(),(D||!V.current)&&O({x:m.current.scrollLeft,y:m.current.scrollTop}),Y.start(100,()=>{V.current=!0}))},onWheel:K,onPointerMove:K,onPointerEnter:K,onKeyDown:K},Z=(0,l.useRenderElement)("div",e,{ref:[s,m],state:W,props:[G,p],stateAttributesMapping:h}),Q=r.useMemo(()=>({computeThumbPosition:X}),[X]);return(0,t.jsx)(k.Provider,{value:Q,children:Z})});function M(e,t){for(let r in t)if(e[r]!==t[r])return t;return e}function I(e,t,r,a,n,s,i){let o=(0,N.clamp)(r,0,a),l=r-o,d=Math.max(16,s*n/(n+Math.abs(l)));return e.style.setProperty(t,l?`${d}px`:""),(a?o/a*i:0)+(l>0?s-d:0)}var z=e.i(78645);let L=r.createContext(void 0),A=r.forwardRef(function(e,a){let{render:n,className:s,orientation:i="vertical",keepMounted:u=!1,style:c,...f}=e,{hovering:m,scrollingX:x,scrollingY:b,hiddenState:g,scrollbarYRef:v,scrollbarXRef:y,viewportRef:w,thumbYRef:j,thumbXRef:k,handlePointerDown:N,handlePointerUp:C,handleScroll:E,disableViewportSnap:R,rootId:T,thumbSize:M,hasMeasuredScrollbar:I,viewportState:A}=o(),$="vertical"===i,P={...A,hovering:m,scrolling:$?b:x,orientation:i},O=(0,S.useDirection)(),D=!I&&!u,B=$?g.y:g.x,H=u||!B;r.useEffect(()=>{if(!H)return;let e=w.current,t=$?v.current:y.current;if(t)return(0,z.addEventListener)(t,"wheel",function(t){if(!e||t.ctrlKey)return;let r=!$,a=r?"scrollLeft":"scrollTop",n=r?t.deltaX:t.deltaY;if(0===n)return;let s=r?e.scrollWidth-e.clientWidth:e.scrollHeight-e.clientHeight,i=r&&"rtl"===O?-s:0,o=r&&"rtl"===O?0:s,l=e[a];l<=i&&n<0||l>=o&&n>0||(t.preventDefault(),e[a]=Math.min(o,Math.max(i,l+n)),E({x:e.scrollLeft,y:e.scrollTop}))},{passive:!1})},[O,E,$,y,v,H,w]);let _={...T&&{"data-id":`${T}-scrollbar`},onPointerDown(e){if(0!==e.button)return;let t=(0,p.getTarget)(e.nativeEvent),r=$?j.current:k.current;if(r&&(0,p.contains)(r,t))return;let a=w.current;if(!a)return;let n=$?v.current:y.current;if(!r||!n)return;let s=$?"y":"x",i=d(r,"margin",s),o=d(n,"padding",s),l=$?r.offsetHeight:r.offsetWidth,u=n.getBoundingClientRect(),c=$?e.clientY-u.top-l/2-o+i/2:e.clientX-u.left-l/2-o+i/2,f=$?a.scrollHeight:a.scrollWidth,h=$?a.clientHeight:a.clientWidth,m=($?n.offsetHeight:n.offsetWidth)-l-o-i;if(m<=0)return;let x=c/m,b=f-h;R(),$?a.scrollTop=x*b:"rtl"===O?a.scrollLeft=-(1-x)*b:a.scrollLeft=x*b,E({x:a.scrollLeft,y:a.scrollTop}),N(e)},onPointerUp:C,onPointerCancel:C,style:{position:"absolute",touchAction:"none",WebkitUserSelect:"none",userSelect:"none",visibility:D?"hidden":void 0,...$?{top:0,bottom:"var(--scroll-area-corner-height)",insetInlineEnd:0,"--scroll-area-thumb-height":`${M.height}px`}:{insetInlineStart:0,insetInlineEnd:"var(--scroll-area-corner-width)",bottom:0,"--scroll-area-thumb-width":`${M.width}px`}}},W=(0,l.useRenderElement)("div",e,{ref:[a,$?v:y],state:P,props:[_,f],stateAttributesMapping:h});return H?(0,t.jsx)(L.Provider,{value:i,children:W}):null}),$=r.forwardRef(function(e,t){let{render:a,className:n,style:i,...d}=e,{computeThumbPosition:u}=function(){let e=r.useContext(k);if(void 0===e)throw Error((0,s.default)(55));return e}(),{hasMeasuredScrollbar:c,viewportState:f}=o(),p=r.useRef(null),m=r.useRef(c);return(0,w.useIsoLayoutEffect)(()=>{if("u"<typeof ResizeObserver)return;let e=!1,t=new ResizeObserver(()=>{(e||(e=!0,m.current))&&u()});return p.current&&t.observe(p.current),()=>{t.disconnect()}},[u]),(0,l.useRenderElement)("div",e,{ref:[t,p],state:f,stateAttributesMapping:h,props:[{role:"presentation",style:{minWidth:"fit-content"}},d]})}),P=r.forwardRef(function(e,t){let{render:a,className:n,style:i,...d}=e,{thumbYRef:u,thumbXRef:c,handlePointerDown:f,handlePointerMove:h,handlePointerUp:p,scrollingX:m,scrollingY:x,hasMeasuredScrollbar:b}=o(),g=function(){let e=r.useContext(L);if(void 0===e)throw Error((0,s.default)(54));return e}(),v="vertical"===g;return(0,l.useRenderElement)("div",e,{ref:[t,v?u:c],state:{scrolling:v?x:m,orientation:g},props:[{onPointerDown:f,onPointerMove:h,onPointerUp:p,onPointerCancel:p,style:{visibility:b?void 0:"hidden",...v?{height:"var(--scroll-area-thumb-height)"}:{width:"var(--scroll-area-thumb-width)"}}},d]})}),O=r.forwardRef(function(e,t){let{render:r,className:a,style:n,...s}=e,{cornerRef:i,cornerSize:d,hiddenState:u}=o(),c=(0,l.useRenderElement)("div",e,{ref:[t,i],props:[{style:{position:"absolute",bottom:0,insetInlineEnd:0,width:d.width,height:d.height}},s]});return u.corner?null:c});e.s(["Content",0,$,"Corner",0,O,"Root",0,y,"Scrollbar",0,A,"Thumb",0,P,"Viewport",0,T],55500);var D=e.i(55500),D=D,B=e.i(75157);function H({className:e,orientation:r="vertical",...a}){return(0,t.jsx)(D.Scrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":r,orientation:r,className:(0,B.cn)("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",e),...a,children:(0,t.jsx)(D.Thumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}e.s(["ScrollArea",0,function({className:e,children:r,...a}){return(0,t.jsxs)(D.Root,{"data-slot":"scroll-area",className:(0,B.cn)("relative",e),...a,children:[(0,t.jsx)(D.Viewport,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",children:r}),(0,t.jsx)(H,{}),(0,t.jsx)(D.Corner,{})]})}],59684);var _=e.i(250),_=_;let W=(0,e.i(13496).default)("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"}]]);var U=e.i(98007),V=e.i(19455),F=e.i(46798);e.s(["CopyButton",0,function({value:e,label:a="Copy",size:n="xs",icon:s=W,className:i,children:o}){let[l,d]=(0,r.useState)("idle"),u=(0,r.useRef)(void 0);async function c(){try{await navigator.clipboard.writeText("function"==typeof e?e():e),d("copied")}catch{d("failed")}window.clearTimeout(u.current),u.current=window.setTimeout(()=>d("idle"),1600)}(0,r.useEffect)(()=>()=>window.clearTimeout(u.current),[]);let f="copied"===l?_.default:"failed"===l?U.X:s;return(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{render:(0,t.jsxs)(V.Button,{variant:"ghost",size:o?n:`icon-${n}`,onClick:c,"aria-label":a,className:(0,B.cn)("text-muted-foreground","copied"===l&&"text-emerald-600 dark:text-emerald-400","failed"===l&&"text-destructive",i),children:[(0,t.jsx)(f,{className:"size-3.5","aria-hidden":!0}),o]})}),(0,t.jsx)(F.TooltipContent,{children:"copied"===l?"Copied":"failed"===l?"Copy failed":a})]})}],34960)},84774,e=>{"use strict";var t=e.i(45650),r=e.i(75157);e.s(["Table",0,function({className:e,...a}){return(0,t.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,t.jsx)("table",{"data-slot":"table",className:(0,r.cn)("w-full caption-bottom text-sm",e),...a})})},"TableBody",0,function({className:e,...a}){return(0,t.jsx)("tbody",{"data-slot":"table-body",className:(0,r.cn)("[&_tr:last-child]:border-0",e),...a})},"TableCell",0,function({className:e,...a}){return(0,t.jsx)("td",{"data-slot":"table-cell",className:(0,r.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",e),...a})},"TableFooter",0,function({className:e,...a}){return(0,t.jsx)("tfoot",{"data-slot":"table-footer",className:(0,r.cn)("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",e),...a})},"TableHead",0,function({className:e,...a}){return(0,t.jsx)("th",{"data-slot":"table-head",className:(0,r.cn)("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",e),...a})},"TableHeader",0,function({className:e,...a}){return(0,t.jsx)("thead",{"data-slot":"table-header",className:(0,r.cn)("[&_tr]:border-b",e),...a})},"TableRow",0,function({className:e,...a}){return(0,t.jsx)("tr",{"data-slot":"table-row",className:(0,r.cn)("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",e),...a})}])},77572,e=>{"use strict";var t,r=e.i(45650);e.s([],25931),e.i(25931);var a=e.i(10364),n=e.i(25587),s=e.i(61362),i=e.i(19458),o=e.i(50403),l=e.i(6385),d=e.i(82420);let u=a.createContext(void 0);function c(){let e=a.useContext(u);if(void 0===e)throw Error((0,d.default)(64));return e}let f={tabActivationDirection:e=>({"data-activation-direction":e})};var h=e.i(51068),p=e.i(99389);let m=a.forwardRef(function(e,t){let{className:d,defaultValue:c=0,onValueChange:m,orientation:g="horizontal",render:v,value:y,style:w,...j}=e,k=void 0!==e.defaultValue,S=a.useRef([]),[N,C]=a.useState(()=>new Map),[E,R]=(0,n.useControlled)({controlled:y,default:c,name:"Tabs",state:"value"}),T=void 0!==y,[M,I]=a.useState(()=>new Map),z=a.useRef(void 0),L=a.useCallback(e=>x(M,e),[M]),[A,$]=a.useState(()=>({previousValue:E,tabActivationDirection:"none"})),{previousValue:P,tabActivationDirection:O}=A,D=O,B=!1;P!==E&&(D=b(P,E,g,M),B=null!=P&&null!=E&&null==L(E));let H=B?P:E,_=P!==H||O!==D;(0,s.useIsoLayoutEffect)(()=>{_&&$({previousValue:H,tabActivationDirection:D})},[H,_,D]);let W=(0,i.useStableCallback)((e,t)=>{t.activationDirection=b(E,e,g,M),m?.(e,t),t.isCanceled||R(e)}),U=(0,i.useStableCallback)((e,t)=>{m?.(e,(0,h.createChangeEventDetails)(t,void 0,void 0,{activationDirection:"none"}))}),V=(0,i.useStableCallback)((e,t)=>(C(r=>{let a=new Map(r);return a.set(e,t),a}),()=>{C(r=>{if(r.get(e)!==t)return r;let a=new Map(r);return a.delete(e),a})})),F=a.useCallback(e=>N.get(e),[N]),Y=a.useCallback(e=>{for(let t of M.values())if(e===t.value)return t.id},[M]),q=a.useMemo(()=>({getTabElementBySelectedValue:L,getTabIdByPanelValue:Y,getTabPanelIdByValue:F,onValueChange:W,orientation:g,registerMountedTabPanel:V,setTabMap:I,tabActivationDirection:D,value:E}),[L,Y,F,W,g,V,I,D,E]),X=a.useMemo(()=>{for(let e of M.values())if(e.value===E)return e},[M,E]),K=a.useMemo(()=>{for(let e of M.values())if(!e.disabled)return e.value},[M]),G=a.useRef(!k),Z=a.useRef(c),Q=a.useRef(k),J=a.useRef(!1);(0,s.useIsoLayoutEffect)(()=>{if(T)return;function e(e,t){R(e),$({previousValue:e,tabActivationDirection:"none"}),U(e,t),G.current=!1}if(0===M.size){J.current&&null!==E&&!z.current?.isConnected&&e(null,p.REASONS.missing);return}J.current=!0,z.current=M.keys().next().value;let t=X?.disabled,r=null==X&&null!==E;if(t||E!==Z.current||(Q.current=!1),Q.current&&t&&E===Z.current)return;let a=G.current;if(t||r){let r=K??null;if(E===r){G.current=!1;return}let n=p.REASONS.missing;a?n=p.REASONS.initial:t&&(n=p.REASONS.disabled),e(r,n);return}a&&null!=X&&(U(E,p.REASONS.initial),G.current=!1)},[K,T,U,X,R,M,E]);let ee={orientation:g,tabActivationDirection:D},et=(0,o.useRenderElement)("div",e,{state:ee,ref:t,props:j,stateAttributesMapping:f});return(0,r.jsx)(u.Provider,{value:q,children:(0,r.jsx)(l.CompositeList,{elementsRef:S,children:et})})});function x(e,t){for(let[r,a]of e.entries())if(t===a.value)return r;return null}function b(e,t,r,a){if(null==e||null==t)return"none";let[n,s,i]="horizontal"===r?["left","left","right"]:["top","up","down"],o=x(a,e),l=x(a,t);if(null==o||null==l)return o!==l&&("number"==typeof e||"string"==typeof e)&&typeof e==typeof t?t>e?i:s:"none";let d=o.getBoundingClientRect()[n],u=l.getBoundingClientRect()[n];return u<d?s:u>d?i:"none"}var g=e.i(52515),v=e.i(99281),y=e.i(45034),w=e.i(93901),j=e.i(1788),k=e.i(60857);let S=a.createContext(void 0);function N(){let e=a.useContext(S);if(void 0===e)throw Error((0,d.default)(65));return e}var C=e.i(29148);let E=a.forwardRef(function(e,t){let{className:r,disabled:n=!1,render:l,value:d,id:u,nativeButton:m=!0,style:x,...b}=e,{value:S,getTabPanelIdByValue:E,onValueChange:R,orientation:T,tabActivationDirection:M}=c(),{activateOnFocus:I,registerTabResizeObserverElement:z,tabsListElement:L}=N(),{highlightedIndex:A,onHighlightedIndexChange:$}=(0,k.useCompositeRootContext)(),P=(0,v.useBaseUiId)(u),O=a.useMemo(()=>({disabled:n,id:P,value:d}),[n,P,d]),{compositeProps:D,compositeRef:B,index:H}=(0,j.useCompositeItem)({metadata:O}),_=d===S,W=a.useRef(!1),U=a.useRef(null),V=(0,i.useStableCallback)(e=>{U.current?.(),U.current=e?z(e):null});(0,s.useIsoLayoutEffect)(()=>{if(W.current){W.current=!1;return}if(_&&H>-1&&A!==H){if(null!=L){let e=(0,C.activeElement)((0,g.ownerDocument)(L));if(e&&(0,C.contains)(L,e))return}n||$(H)}},[_,H,A,$,n,L]);let{getButtonProps:F,buttonRef:Y}=(0,y.useButton)({disabled:n,native:m,focusableWhenDisabled:!0}),q=E(d),X=a.useRef(!1),K=a.useRef(!1);function G(e){R(d,(0,h.createChangeEventDetails)(p.REASONS.none,e.nativeEvent,void 0,{activationDirection:"none"}))}return(0,o.useRenderElement)("button",e,{state:{disabled:n,active:_,orientation:T,tabActivationDirection:M},ref:[t,Y,B,V],props:[D,{role:"tab","aria-controls":q,"aria-selected":_,id:P,onClick:function(e){_||n||G(e)},onFocus:function(e){_||n||I&&(!X.current||K.current)&&G(e)},onPointerDown:function(e){if(_||n)return;X.current=!0,K.current=0===e.button;let t=(0,g.ownerDocument)(e.currentTarget);function r(){X.current=!1,K.current=!1,t.removeEventListener("pointerup",r),t.removeEventListener("pointercancel",r)}t.addEventListener("pointerup",r),t.addEventListener("pointercancel",r)},[w.ACTIVE_COMPOSITE_ITEM]:_?"":void 0,onKeyDownCapture(){W.current=!0}},b,F],stateAttributesMapping:f})});var R=e.i(16428),T=e.i(45549),M=e.i(53076);function I(){return M.NOOP}function z(){return!1}function L(){return!0}var A=e.i(63370);function $(e){let{script:t}=e,{nonce:a}=(0,A.useCSPContext)();return(0,T.useSyncExternalStore)(I,z,L)?(0,r.jsx)("script",{nonce:a,dangerouslySetInnerHTML:{__html:t},suppressHydrationWarning:!0}):null}let P={...f,activeTabPosition:()=>null,activeTabSize:()=>null},O=a.forwardRef(function(e,n){let{className:s,render:i,renderBeforeHydration:l=!1,style:d,...u}=e,{getTabElementBySelectedValue:f,orientation:h,tabActivationDirection:p,value:m}=c(),{tabsListElement:x,registerIndicatorUpdateListener:b}=N(),g=function(){let[,e]=a.useState({});return a.useCallback(()=>{e({})},[])}();a.useEffect(()=>b(g),[b,g]);let v=0,y=0,w=0,j=0,k=0,S=0,C=!1;if(null!=m&&null!=x){let e=f(m);if(null!=e){C=!0;let{width:t,height:r}=(0,R.getCssDimensions)(e),{width:a,height:n}=(0,R.getCssDimensions)(x),s=e.getBoundingClientRect(),i=x.getBoundingClientRect(),o=a>0?i.width/a:1,l=n>0?i.height/n:1;if(o>Number.EPSILON&&l>Number.EPSILON){let e=s.left-i.left,t=s.top-i.top;v=e/o+x.scrollLeft-x.clientLeft,w=t/l+x.scrollTop-x.clientTop}else v=e.offsetLeft,w=e.offsetTop;k=t,S=r,y=x.scrollWidth-v-k,j=x.scrollHeight-w-S}}let E=C?{left:v,right:y,top:w,bottom:j}:null,T=C?{width:k,height:S}:null,M=C?{"--active-tab-left":`${v}px`,"--active-tab-right":`${y}px`,"--active-tab-top":`${w}px`,"--active-tab-bottom":`${j}px`,"--active-tab-width":`${k}px`,"--active-tab-height":`${S}px`}:void 0,I=C&&k>0&&S>0,z=(0,o.useRenderElement)("span",e,{state:{orientation:h,activeTabPosition:E,activeTabSize:T,tabActivationDirection:p},ref:n,props:[{role:"presentation",style:M,hidden:!I},u,{suppressHydrationWarning:!0}],stateAttributesMapping:P});return null==m?null:(0,r.jsxs)(a.Fragment,{children:[z,l&&(t||(t=(0,r.jsx)($,{script:""})))]})});var D=e.i(33262),B=e.i(53),H=e.i(11296),_=e.i(4678),W=e.i(68285);let U={...f,...B.transitionStatusMapping},V=a.forwardRef(function(e,t){let{className:r,value:n,render:i,keepMounted:l=!1,style:d,...u}=e,{value:f,getTabIdByPanelValue:h,orientation:p,tabActivationDirection:m,registerMountedTabPanel:x}=c(),b=(0,v.useBaseUiId)(),{ref:g,index:y}=(0,W.useCompositeListItem)(),w=n===f,{mounted:j,transitionStatus:k,setMounted:S}=(0,_.useTransitionStatus)(w),N=!j,C=h(n),E=a.useRef(null),R=(0,o.useRenderElement)("div",e,{state:{hidden:N,orientation:p,tabActivationDirection:m,transitionStatus:k},ref:[t,g,E],props:[{"aria-labelledby":C,hidden:N,id:b,role:"tabpanel",tabIndex:w?0:-1,inert:(0,D.inertValue)(!w),"data-index":y},u],stateAttributesMapping:U});return((0,H.useOpenChangeComplete)({open:w,ref:E,onComplete(){w||S(!1)}}),(0,s.useIsoLayoutEffect)(()=>{if(null!=b&&(!N||l))return x(n,b)},[N,l,n,b,x]),l||j)?R:null});var F=e.i(67149);let Y=a.forwardRef(function(e,t){let{activateOnFocus:n=!1,className:o,loopFocus:l=!0,render:d,style:u,...h}=e,{orientation:p,setTabMap:m,tabActivationDirection:x}=c(),[b,g]=a.useState(0),[v,y]=a.useState(null),w=a.useRef(new Set),j=a.useRef(new Set),k=a.useRef(null);(0,s.useIsoLayoutEffect)(()=>{if("u"<typeof ResizeObserver)return;let e=new ResizeObserver(()=>{w.current.forEach(e=>{e()})});return k.current=e,v&&e.observe(v),j.current.forEach(t=>{e.observe(t)}),()=>{e.disconnect(),k.current=null}},[v]);let N=(0,i.useStableCallback)(e=>(w.current.add(e),()=>{w.current.delete(e)})),C=(0,i.useStableCallback)(e=>(j.current.add(e),k.current?.observe(e),()=>{j.current.delete(e),k.current?.unobserve(e)})),E=a.useMemo(()=>({activateOnFocus:n,registerIndicatorUpdateListener:N,registerTabResizeObserverElement:C,tabsListElement:v}),[n,N,C,v]);return(0,r.jsx)(S.Provider,{value:E,children:(0,r.jsx)(F.CompositeRoot,{render:d,className:o,style:u,state:{orientation:p,tabActivationDirection:x},refs:[t,y],props:[{"aria-orientation":"vertical"===p?"vertical":void 0,role:"tablist"},h],stateAttributesMapping:f,highlightedIndex:b,enableHomeAndEndKeys:!0,loopFocus:l,orientation:p,onHighlightedIndexChange:g,onMapChange:m,disabledIndices:M.EMPTY_ARRAY})})});e.s(["Indicator",0,O,"List",0,Y,"Panel",0,V,"Root",0,m,"Tab",0,E],11037);var q=e.i(11037),q=q,X=e.i(94237),K=e.i(75157);let G=(0,X.cva)("group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none",{variants:{variant:{default:"bg-muted",line:"gap-1 bg-transparent"}},defaultVariants:{variant:"default"}});e.s(["Tabs",0,function({className:e,orientation:t="horizontal",...a}){return(0,r.jsx)(q.Root,{"data-slot":"tabs","data-orientation":t,className:(0,K.cn)("group/tabs flex gap-2 data-horizontal:flex-col",e),...a})},"TabsContent",0,function({className:e,...t}){return(0,r.jsx)(q.Panel,{"data-slot":"tabs-content",className:(0,K.cn)("flex-1 text-sm outline-none",e),...t})},"TabsList",0,function({className:e,variant:t="default",...a}){return(0,r.jsx)(q.List,{"data-slot":"tabs-list","data-variant":t,className:(0,K.cn)(G({variant:t}),e),...a})},"TabsTrigger",0,function({className:e,...t}){return(0,r.jsx)(q.Tab,{"data-slot":"tabs-trigger",className:(0,K.cn)("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent","data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground","after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100",e),...t})}],77572)},42526,e=>{"use strict";var t=e.i(10364),r=e.i(57864);function a(e,a){return[(0,r.useSearchParams)().get(e)??a,(0,t.useCallback)(t=>{let r=new URL(window.location.href);t===a?r.searchParams.delete(e):r.searchParams.set(e,t),window.history.replaceState(null,"",r)},[e,a])]}e.s(["useQueryParam",0,a,"useTabParam",0,function(e,t){let[r,n]=a("tab",t);return[e.includes(r)?r:t,n]}])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,77224,e=>{"use strict";let t=(0,e.i(13496).default)("bug",[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]]);e.s(["Bug",0,t],77224)},50267,e=>{"use strict";let t=(0,e.i(13496).default)("calendar-days",[["path",{d:"M8 2v3",key:"1ioesn"}],["path",{d:"M16 2v3",key:"otl347"}],["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M8 13h.01",key:"1sbv64"}],["path",{d:"M12 13h.01",key:"y0uutt"}],["path",{d:"M16 13h.01",key:"wip0gl"}],["path",{d:"M8 17h.01",key:"p3bg7i"}],["path",{d:"M12 17h.01",key:"p32p05"}],["path",{d:"M16 17h.01",key:"ql8jdd"}]]);e.s(["CalendarDays",0,t],50267)},93304,98993,e=>{"use strict";let t=(0,e.i(13496).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["default",0,t],98993),e.s(["ChevronRight",0,t],93304)},26162,e=>{"use strict";let t=(0,e.i(13496).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["CheckCircle2",0,t],26162)},93125,e=>{"use strict";let t=(0,e.i(13496).default)("git-branch",[["path",{d:"M15 6a9 9 0 0 0-9 9V3",key:"1cii5b"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}]]);e.s(["GitBranch",0,t],93125)},50395,e=>{"use strict";let t=(0,e.i(13496).default)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);e.s(["Info",0,t],50395)},59920,10976,e=>{"use strict";let t=(0,e.i(13496).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["default",0,t],10976),e.s(["AlertTriangle",0,t],59920)},32660,e=>{"use strict";let t=(0,e.i(13496).default)("zap",[["path",{d:"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z",key:"1v7up4"}]]);e.s(["Zap",0,t],32660)},93472,e=>{"use strict";var t=e.i(45650),r=e.i(75157);e.s(["BarList",0,function({items:e,color:a="bg-brand",max:n,emptyLabel:s="None",limit:i,format:o=e=>e.toLocaleString()}){if(0===e.length)return(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:s});let l=[...e].sort((e,t)=>t.value-e.value),d=i?l.slice(0,i):l,u=n??l[0].value??1;return(0,t.jsxs)("div",{className:"space-y-1.5",children:[d.map(({name:e,value:n})=>(0,t.jsxs)("div",{className:"flex items-center gap-2.5 text-xs",children:[(0,t.jsx)("div",{className:"w-28 shrink-0 truncate font-mono text-muted-foreground sm:w-36",title:e,children:e}),(0,t.jsx)("div",{className:"h-4 flex-1 overflow-hidden rounded-sm bg-muted",children:(0,t.jsx)("div",{className:(0,r.cn)("h-full rounded-sm",a),style:{width:`${Math.max(n/u*100,2)}%`}})}),(0,t.jsx)("div",{className:"w-12 shrink-0 text-right font-medium tabular-nums text-foreground",children:o(n)})]},e)),i&&l.length>i&&(0,t.jsxs)("p",{className:"pt-1 text-xs text-muted-foreground",children:["+",l.length-i," more"]})]})}])},35334,e=>{"use strict";var t=e.i(45650),r=e.i(75157);e.s(["EmptyState",0,function({icon:e,title:a,description:n,action:s,className:i}){return(0,t.jsxs)("div",{className:(0,r.cn)("flex flex-col items-center justify-center gap-2 rounded-xl border border-dashed border-border px-6 py-14 text-center",i),children:[(0,t.jsx)("div",{className:"flex size-10 items-center justify-center rounded-full bg-muted text-muted-foreground",children:(0,t.jsx)(e,{className:"size-5","aria-hidden":!0})}),(0,t.jsx)("p",{className:"text-sm font-medium text-foreground",children:a}),n&&(0,t.jsx)("p",{className:"max-w-sm text-xs leading-relaxed text-muted-foreground",children:n}),s&&(0,t.jsx)("div",{className:"mt-2",children:s})]})}])},82183,9449,e=>{"use strict";var t=e.i(45650);let r={A:{badge:"border-emerald-300 bg-emerald-50 text-emerald-700 dark:border-emerald-900 dark:bg-emerald-950/40 dark:text-emerald-300",bar:"bg-emerald-500"},B:{badge:"border-sky-300 bg-sky-50 text-sky-700 dark:border-sky-900 dark:bg-sky-950/40 dark:text-sky-300",bar:"bg-sky-500"},C:{badge:"border-amber-300 bg-amber-50 text-amber-700 dark:border-amber-900 dark:bg-amber-950/40 dark:text-amber-300",bar:"bg-amber-500"},D:{badge:"border-orange-300 bg-orange-50 text-orange-700 dark:border-orange-900 dark:bg-orange-950/40 dark:text-orange-300",bar:"bg-orange-500"},F:{badge:"border-red-300 bg-red-50 text-red-700 dark:border-red-900 dark:bg-red-950/40 dark:text-red-300",bar:"bg-red-500"}},a={completed:"The agent had the last word.",in_progress:"The agent is still writing to this session.",abandoned:"The session stops mid-work, or on a prompt the agent never answered.",errored:"The transcript ends on an API error."},n=(e,t,r=`${t}s`)=>`${e.toLocaleString()} ${1===e?t:r}`;e.s(["GRADES",0,["A","B","C","D","F"],"GRADE_STYLES",0,r,"OUTCOMES",0,["completed","in_progress","abandoned","errored"],"OUTCOME_BARS",0,{completed:"bg-emerald-500",in_progress:"bg-sky-500",abandoned:"bg-amber-500",errored:"bg-red-500"},"OUTCOME_LABELS",0,{completed:"Completed",in_progress:"In progress",abandoned:"Abandoned",errored:"Errored"},"OUTCOME_NOTES",0,a,"SIGNAL_INFO",0,{outcome:{label:"Unfinished sessions",describe:(e,t)=>a[t.outcome],advice:"Review errored and abandoned sessions first: they spent tokens without reaching an answer."},tool_failures:{label:"Tool failures",describe:(e,t)=>{let r=Math.max(t.toolResults,e.count);return`${e.count.toLocaleString()} of ${n(r,"tool result")} failed (${Math.round(e.count/r*100)}%).`},advice:"Open the failed calls and look for a recurring cause: wrong paths, missing dependencies, commands that need a flag.",focus:{failures:!0}},retry_loops:{label:"Retry loops",describe:e=>`The same tool failed three or more times in a row, ${n(e.count,"time")}.`,advice:"An agent repeating a failing call lacks the context to try something else. Put the working command in AGENTS.md or CLAUDE.md.",focus:{failures:!0}},api_errors:{label:"API errors",describe:e=>`${n(e.count,"API error")} or retried request${1===e.count?"":"s"}.`,advice:"Each retry re-sends the whole context. Frequent errors point at rate limits or an overloaded model.",focus:{categories:["session"],subKeys:["session.error"]}},aborted_turns:{label:"Interrupted turns",describe:e=>`${n(e.count,"turn")} interrupted before the agent finished.`,advice:"Interruptions usually mean the agent set off in the wrong direction. State the constraints and the success criteria up front.",focus:{categories:["session"],subKeys:["session.turn_aborted"]}},compactions:{label:"Context compactions",describe:e=>`Context was compacted ${n(e.count,"time")}.`,advice:"Split long tasks into separate sessions before the context fills up: compacting mid-task loses detail.",focus:{categories:["session"],subKeys:["session.compaction_start"]}}},"healthSummary",0,function(e){return`${e.grade} \xb7 ${e.score}`}],9449);var s=e.i(75157);e.s(["GradeBadge",0,function({grade:e,score:a,className:n,...i}){return(0,t.jsxs)("span",{...i,className:(0,s.cn)("inline-flex h-5 min-w-5 shrink-0 items-center justify-center gap-1 rounded-sm border px-1 font-mono text-xs font-bold leading-none",r[e].badge,n),children:[e,void 0!==a&&(0,t.jsx)("span",{className:"font-medium tabular-nums",children:a})]})}],82183)},4503,22910,e=>{"use strict";var t=e.i(45650),r=e.i(10364);let a=(0,e.i(13496).default)("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);var n=e.i(19455),s=e.i(46798),i=e.i(75157);function o({className:e}){return(0,t.jsx)("div",{"aria-hidden":!0,className:(0,i.cn)("animate-pulse rounded-md bg-muted",e)})}e.s(["ScrollToTop",0,function({threshold:e=600}){let[o,l]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{let t=()=>l(window.scrollY>e);return t(),window.addEventListener("scroll",t,{passive:!0}),()=>window.removeEventListener("scroll",t)},[e]),(0,t.jsxs)(s.Tooltip,{children:[(0,t.jsx)(s.TooltipTrigger,{render:(0,t.jsx)(n.Button,{variant:"outline",size:"icon-lg",onClick:()=>window.scrollTo({top:0,behavior:"smooth"}),"aria-label":"Back to top",tabIndex:o?0:-1,className:(0,i.cn)("fixed bottom-6 right-6 z-30 size-10 rounded-full bg-card text-muted-foreground shadow-lg dark:bg-card",o?"translate-y-0 opacity-100":"pointer-events-none translate-y-2 opacity-0"),children:(0,t.jsx)(a,{"aria-hidden":!0})})}),(0,t.jsx)(s.TooltipContent,{side:"left",children:"Back to top"})]})}],4503),e.s(["SessionCardSkeleton",0,function(){return(0,t.jsxs)("div",{className:"rounded-xl border border-border bg-card px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1 space-y-2",children:[(0,t.jsx)(o,{className:"h-4 w-2/3"}),(0,t.jsx)(o,{className:"h-3 w-1/3"})]}),(0,t.jsx)(o,{className:"h-3 w-16"})]}),(0,t.jsxs)("div",{className:"mt-3 flex gap-2",children:[(0,t.jsx)(o,{className:"h-3 w-20"}),(0,t.jsx)(o,{className:"h-3 w-16"}),(0,t.jsx)(o,{className:"h-3 w-24"})]})]})},"Skeleton",0,o],22910)},75858,e=>{"use strict";var t=e.i(45650),r=e.i(50395),a=e.i(75157);e.s(["StatCard",0,function({label:e,value:n,sub:s,accent:i=!1,onClick:o}){let l=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("span",{className:"flex items-center justify-between gap-2 text-xs uppercase tracking-wider text-muted-foreground",children:[e,o&&(0,t.jsx)(r.Info,{className:"size-3.5 shrink-0 opacity-60 transition-opacity group-hover:opacity-100","aria-hidden":!0})]}),(0,t.jsx)("span",{className:(0,a.cn)("mt-1.5 block text-2xl font-bold leading-none tabular-nums",i?"text-brand":"text-foreground"),children:n}),s&&(0,t.jsx)("span",{className:"mt-1 block truncate text-xs normal-case text-muted-foreground",title:s,children:s})]});return o?(0,t.jsx)("button",{type:"button",onClick:o,"aria-haspopup":"dialog",className:"group block rounded-xl border border-border bg-card p-4 text-left transition-colors hover:border-brand/40 hover:bg-muted/40 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",children:l}):(0,t.jsx)("div",{className:"rounded-xl border border-border bg-card p-4",children:l})},"StatCardGrid",0,function({children:e}){return(0,t.jsx)("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(150px,1fr))] gap-3",children:e})}])},82574,e=>{"use strict";var t=e.i(13496);let r=(0,t.default)("arrow-down-to-line",[["path",{d:"M12 17V3",key:"1cwfxf"}],["path",{d:"m6 11 6 6 6-6",key:"12ii2o"}],["path",{d:"M19 21H5",key:"150jfl"}]]),a=(0,t.default)("arrow-up-from-line",[["path",{d:"m18 9-6-6-6 6",key:"kcunyi"}],["path",{d:"M12 3v14",key:"7cf3v8"}],["path",{d:"M5 21h14",key:"11awu3"}]]);e.s(["InputTokensIcon",0,a,"OutputTokensIcon",0,r],82574)},19007,44581,e=>{"use strict";var t=e.i(45650),r=e.i(10364),a=e.i(51958),n=e.i(77224),s=e.i(50395);let i=(0,e.i(13496).default)("tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);var o=e.i(19455),l=e.i(76639),d=e.i(46798),u=e.i(34960);let c="https://github.com/kishanmundha/agent-session-inspector",f={name:"Agent Session Inspector",description:"A local web UI for reading agent CLI transcripts: what the agent did, how long it took, and where the tokens went. It reads the session files on this machine and never sends them anywhere.",version:"0.1.7",author:{name:"Kishan Mundha",url:"https://github.com/kishanmundha"},repoUrl:c,issuesUrl:`${c}/issues`,releasesUrl:`${c}/releases`};e.s(["APP_INFO",0,f],44581);var h=e.i(46816),p=e.i(75157);function m({className:e}){return(0,t.jsx)("svg",{viewBox:"0 0 16 16",fill:"currentColor",className:e,"aria-hidden":!0,children:(0,t.jsx)("path",{d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z"})})}let x={target:"_blank",rel:"noreferrer"};e.s(["AboutDialog",0,function({providers:e,className:c}){let[b,g]=(0,r.useState)(!1),[v,y]=(0,r.useState)(null),w=(0,r.useRef)(!1),j=e??v,k=j?.filter(e=>e.available),S=j?.filter(e=>!e.available)??[];return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(d.Tooltip,{children:[(0,t.jsx)(d.TooltipTrigger,{render:(0,t.jsx)(o.Button,{variant:"outline",size:"icon",onClick:function(){g(!0),e||w.current||(w.current=!0,fetch("/api/providers").then(e=>e.ok?e.json():[]).then(y).catch(()=>y([])))},"aria-label":"About",className:(0,p.cn)("text-muted-foreground",c),children:(0,t.jsx)(s.Info,{className:"size-3.5","aria-hidden":!0})})}),(0,t.jsx)(d.TooltipContent,{children:"About"})]}),(0,t.jsx)(l.Dialog,{open:b,onOpenChange:g,children:(0,t.jsxs)(l.DialogContent,{children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("span",{className:"flex size-10 shrink-0 items-center justify-center rounded-lg bg-brand text-brand-foreground",children:(0,t.jsx)(a.Bot,{className:"size-5","aria-hidden":!0})}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)(l.DialogTitle,{children:f.name}),(0,t.jsxs)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:[(0,t.jsxs)("span",{className:"font-mono",children:["v",f.version]})," · by ",(0,t.jsx)("a",{href:f.author.url,...x,className:"font-medium text-foreground underline-offset-2 hover:underline",children:f.author.name})]})]})]}),(0,t.jsx)(l.DialogDescription,{children:f.description}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsxs)(o.Button,{variant:"outline",size:"sm",nativeButton:!1,render:(0,t.jsx)("a",{href:f.repoUrl,...x}),children:[(0,t.jsx)(m,{className:"size-3.5"}),"GitHub"]}),(0,t.jsxs)(o.Button,{variant:"outline",size:"sm",nativeButton:!1,render:(0,t.jsx)("a",{href:f.releasesUrl,...x}),children:[(0,t.jsx)(i,{className:"size-3.5","aria-hidden":!0}),"Releases"]}),(0,t.jsxs)(o.Button,{variant:"outline",size:"sm",nativeButton:!1,render:(0,t.jsx)("a",{href:f.issuesUrl,...x}),children:[(0,t.jsx)(n.Bug,{className:"size-3.5","aria-hidden":!0}),"Report an issue"]})]}),(0,t.jsxs)("section",{className:"space-y-2 border-t border-border pt-3",children:[(0,t.jsx)("h3",{className:"text-xs font-medium text-foreground",children:"Data sources"}),k?k.length>0?(0,t.jsx)("ul",{className:"overflow-hidden rounded-lg border border-border text-xs",children:k.map(e=>(0,t.jsxs)("li",{className:"flex items-center gap-2 border-b border-border/60 px-3 py-2 last:border-b-0",children:[(0,t.jsx)("span",{className:(0,p.cn)("size-1.5 shrink-0 rounded-full",(0,h.providerStyle)(e.id).dotCls),"aria-hidden":!0}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate font-medium text-foreground",children:e.label}),(0,t.jsx)("p",{className:"truncate font-mono text-muted-foreground",children:e.rootDir})]}),(0,t.jsx)("span",{className:"shrink-0 tabular-nums text-muted-foreground",children:`${e.sessionCount??0} ${1===e.sessionCount?"session":"sessions"}`}),(0,t.jsx)(u.CopyButton,{value:e.rootDir,label:"Copy path"})]},e.id))}):(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"No agent directories found."}):(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Loading…"}),S.length>0&&(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:[k?.length?"Also supports":"Supports"," ",S.map(e=>e.label).join(", "),"."]})]})]})})]})}],19007)},19390,e=>{"use strict";var t=e.i(45650),r=e.i(10364),a=e.i(75379),n=e.i(75157);let s="\0other";function i(e,t){return"costUSD"===e?(0,a.formatCost)(t):(0,a.formatTokens)(t)??"0"}function o(e){if(e<=0)return 1;let t=10**Math.floor(Math.log10(e));return([1,1.5,2,3,4,5,6,8,10].find(r=>r*t>=e)??10)*t}let l=e=>e.toLocaleDateString([],{month:"short",day:"numeric"});e.s(["OTHER",0,s,"OTHER_COLOR",0,"color-mix(in srgb, var(--muted-foreground) 45%, transparent)","SERIES_COLORS",0,["var(--chart-1)","var(--chart-2)","var(--chart-3)","var(--chart-4)","var(--chart-5)"],"StackedBars",0,function({periods:e,breakdownOf:a,series:d,unit:u}){var c;let[f,h]=(0,r.useState)(null),p=o(Math.max(0,...e.map(e=>e[u]))),m=e.map(e=>(function(e,t,r){let a=new Set(t.map(e=>e.name)),n=0;for(let[t,s]of Object.entries(e))a.has(t)||(n+=s[r]);return t.map(t=>t.name===s?n:e[t.name]?.[r]??0)})(a(e),d,u)),x=null!==f&&f<e.length?f:null,b=d.map((e,t)=>m.reduce((e,r)=>e+r[t],0)),g=null===x?b:m[x],v=g.reduce((e,t)=>e+t,0),y=Math.floor((e.length-1)/2);return(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsxs)("div",{className:"flex h-48 flex-col justify-between text-right text-[10px] leading-none tabular-nums text-muted-foreground",children:[(0,t.jsx)("span",{children:i(u,p)}),(0,t.jsx)("span",{children:i(u,p/2)}),(0,t.jsx)("span",{children:i(u,0)})]}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{role:"img","aria-label":`${"costUSD"===u?"Cost":"Tokens"} per ${e[0]?.days===1?"day":"week"} over ${e.length} bars`,className:"relative flex h-48 items-end gap-[2px] border-b border-border",onMouseLeave:()=>h(null),children:[(0,t.jsx)("span",{className:"pointer-events-none absolute inset-x-0 top-0 border-t border-dashed border-border"}),(0,t.jsx)("span",{className:"pointer-events-none absolute inset-x-0 top-1/2 border-t border-dashed border-border"}),e.map((e,r)=>(0,t.jsx)("div",{onMouseEnter:()=>h(r),className:(0,n.cn)("relative flex h-full min-w-0 max-w-12 flex-1 flex-col-reverse",null!==x&&x!==r&&"opacity-50"),children:d.map((e,a)=>m[r][a]>0?(0,t.jsx)("div",{className:"w-full shrink-0 border-t-2 border-card first:border-t-0 last:rounded-t-[3px]",style:{height:`${m[r][a]/p*100}%`,minHeight:2,background:e.color}},e.name):null)},e.start.getTime()))]}),(0,t.jsxs)("div",{className:"mt-1.5 flex justify-between text-[10px] text-muted-foreground",children:[(0,t.jsx)("span",{children:e.length>0&&l(e[0].start)}),e.length>4&&(0,t.jsx)("span",{children:l(e[y].start)}),(0,t.jsx)("span",{children:e.length>1&&l(e[e.length-1].start)})]})]})]}),(0,t.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-x-4 gap-y-1.5 text-xs","aria-live":"polite",children:[(0,t.jsxs)("span",{className:"font-medium tabular-nums",children:[null===x?"Whole range":1===(c=e[x]).days?c.start.toLocaleDateString([],{weekday:"short",month:"short",day:"numeric"}):`Week of ${l(c.start)}`," ·"," ",i(u,v)]}),d.map((e,r)=>(0,t.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5 text-muted-foreground",children:[(0,t.jsx)("span",{className:"size-2.5 shrink-0 rounded-[3px]",style:{background:e.color},"aria-hidden":!0}),(0,t.jsx)("span",{className:"max-w-40 truncate",title:e.label,children:e.label}),(0,t.jsx)("span",{className:"tabular-nums text-foreground",children:i(u,g[r])})]},e.name))]})]})},"Treemap",0,function({items:e,unit:r}){let a=e.filter(e=>e.value>0).sort((e,t)=>t.value-e.value),n=a.reduce((e,t)=>e+t.value,0),s=function(e){let t=e.reduce((e,t)=>e+t,0);if(t<=0)return[];let r=e.map(e=>e/t*5600),a=[],n=0,s=0,i=100,o=56,l=0;for(;l<r.length;){let e=Math.min(i,o),t=(t,r,a)=>Math.max(e*e*a/(t*t),t*t/(e*e*r)),d=r[l],u=l+1;for(;u<r.length;){let e=d+r[u];if(t(e,r[u],r[l])>t(d,r[u-1],r[l]))break;d=e,u++}let c=d/e,f=0;for(let e=l;e<u;e++){let t=r[e]/c;a.push(i>=o?{x:n,y:s+f,w:c,h:t}:{x:n+f,y:s,w:t,h:c}),f+=t}i>=o?(n+=c,i-=c):(s+=c,o-=c),l=u}return a}(a.map(e=>e.value));return(0,t.jsx)("div",{className:"relative w-full",style:{aspectRatio:"100 / 56"},role:"img","aria-label":`Share of ${"costUSD"===r?"cost":"tokens"} across ${a.length} groups`,children:a.map((e,a)=>{let o=s[a],l=e.value/n;return(0,t.jsx)("div",{title:`${e.label}: ${i(r,e.value)} (${(100*l).toFixed(1)}%)`,className:"absolute p-px",style:{left:`${o.x/100*100}%`,top:`${o.y/56*100}%`,width:`${o.w/100*100}%`,height:`${o.h/56*100}%`},children:(0,t.jsx)("div",{className:"size-full overflow-hidden rounded-[4px] border-l-[3px] px-1.5 py-1 hover:ring-1 hover:ring-foreground/50",style:{background:`color-mix(in srgb, ${e.color} 28%, var(--card))`,borderColor:e.color},children:o.w>14&&o.h>11&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"block truncate text-xs font-medium",children:e.label}),(0,t.jsxs)("span",{className:"block truncate text-[11px] tabular-nums text-muted-foreground",children:[i(r,e.value)," · ",(100*l).toFixed(1),"%"]})]})})},e.name)})})},"formatUnit",0,i,"niceCeil",0,o])},87486,e=>{"use strict";var t=e.i(29494),r=e.i(50403),a=e.i(94237),n=e.i(75157);let s=(0,a.cva)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});e.s(["Badge",0,function({className:e,variant:a="default",render:i,...o}){var l;return l={defaultTagName:"span",props:(0,t.mergeProps)({className:(0,n.cn)(s({variant:a}),e)},o),render:i,state:{slot:"badge",variant:a}},(0,r.useRenderElement)(l.defaultTagName??"div",l,l)}],87486)},59684,34960,e=>{"use strict";var t=e.i(45650);e.s([],88752),e.i(88752);var r=e.i(10364),a=e.i(19458),n=e.i(2304),s=e.i(82420);let i=r.createContext(void 0);function o(){let e=r.useContext(i);if(void 0===e)throw Error((0,s.default)(53));return e}var l=e.i(50403);function d(e,t,r){if(!e)return 0;let a=getComputedStyle(e),n=`${t}${"x"===r?"Inline":"Block"}`,s=parseFloat(a[`${n}Start`]);return"x"===r&&"margin"===t?2*s:s+parseFloat(a[`${n}End`])}var u=e.i(96100),c=e.i(99281);let f=e=>t=>t?{[e]:""}:null,h={hasOverflowX:f("data-has-overflow-x"),hasOverflowY:f("data-has-overflow-y"),overflowXStart:f("data-overflow-x-start"),overflowXEnd:f("data-overflow-x-end"),overflowYStart:f("data-overflow-y-start"),overflowYEnd:f("data-overflow-y-end"),cornerHidden:()=>null};var p=e.i(29148),m=e.i(63370);let x={x:0,y:0},b={width:0,height:0},g={xStart:!1,xEnd:!1,yStart:!1,yEnd:!1},v={x:!0,y:!0,corner:!0},y=r.forwardRef(function(e,s){var o;let f,{render:y,className:w,overflowEdgeThreshold:j,style:k,...S}=e,{xStart:N,xEnd:C,yStart:E,yEnd:R}=(f="number"==typeof(o=j)?{xStart:o,xEnd:o,yStart:o,yEnd:o}:o,{xStart:Math.max(0,f?.xStart||0),xEnd:Math.max(0,f?.xEnd||0),yStart:Math.max(0,f?.yStart||0),yEnd:Math.max(0,f?.yEnd||0)}),T=(0,c.useBaseUiId)(),M=(0,n.useTimeout)(),I=(0,n.useTimeout)(),{nonce:z,disableStyleElements:L}=(0,m.useCSPContext)(),[A,$]=r.useState(!1),[P,O]=r.useState(!1),[D,B]=r.useState(!1),[H,_]=r.useState(!1),[W,U]=r.useState(!1),[V,F]=r.useState(b),[Y,q]=r.useState(b),[X,K]=r.useState(g),[G,Z]=r.useState(v),Q=r.useRef(null),J=r.useRef(null),ee=r.useRef(null),et=r.useRef(null),er=r.useRef(null),ea=r.useRef(null),en=r.useRef(null),es=r.useRef(null),ei=r.useRef(0),eo=r.useRef(0),el=r.useRef(0),ed=r.useRef(0),eu=r.useRef("vertical"),ec=r.useRef(x),ef=r.useRef(null);function eh(e){let t=e?B:O;t(!0),(e?M:I).start(500,()=>{t(!1)})}let ep=(0,a.useStableCallback)(e=>{let t=e.x-ec.current.x,r=e.y-ec.current.y;ec.current=e,0!==r&&eh(!0),0!==t&&eh(!1)}),em=(0,a.useStableCallback)(()=>{let e=J.current;e&&null===ef.current&&(ef.current=e.style.scrollSnapType,e.style.scrollSnapType="none")}),ex=(0,a.useStableCallback)(e=>{if(0!==e.button)return;if(null!==es.current){let e="vertical"===eu.current?er.current:ea.current;if(e?.hasPointerCapture(es.current))return}es.current=e.pointerId,ei.current=e.clientY,eo.current=e.clientX,eu.current=e.currentTarget.getAttribute("data-orientation");let t=J.current;t&&(el.current=t.scrollTop,ed.current=t.scrollLeft,em());let r="vertical"===eu.current?er.current:ea.current;r?.setPointerCapture(e.pointerId)}),eb=(0,a.useStableCallback)(e=>{if(e.pointerId!==es.current)return;es.current=null,("vertical"===eu.current?B:O)(!1),null!==ef.current&&(J.current&&(J.current.style.scrollSnapType=ef.current),ef.current=null);let t="vertical"===eu.current?er.current:ea.current;t?.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId)}),eg=(0,a.useStableCallback)(e=>{if(e.pointerId!==es.current)return;if(e.buttons%2==0)return void eb(e);let t=J.current;if(!t)return;let r="vertical"===eu.current,a=r?er.current:ea.current,n=r?ee.current:et.current;if(!a||!n)return;let s=r?"y":"x",i=d(n,"padding",s),o=d(a,"margin",s),l=r?a.offsetHeight:a.offsetWidth,u=(r?n.offsetHeight:n.offsetWidth)-l-i-o,c=r?e.clientY-ei.current:e.clientX-eo.current,f=r?t.scrollHeight:t.scrollWidth,h=r?t.clientHeight:t.clientWidth,p=(r?el.current:ed.current)+(u<=0?0:c/u)*(f-h);r?t.scrollTop=p:t.scrollLeft=p,e.preventDefault(),eh(r)});function ev(e){_("touch"===e.pointerType)}function ey(e){ev(e),"touch"!==e.pointerType&&$((0,p.contains)(Q.current,e.target))}let ew=r.useMemo(()=>({scrolling:P||D,hasOverflowX:!G.x,hasOverflowY:!G.y,overflowXStart:X.xStart,overflowXEnd:X.xEnd,overflowYStart:X.yStart,overflowYEnd:X.yEnd,cornerHidden:G.corner}),[P,D,G.x,G.y,G.corner,X]),ej={role:"presentation",onPointerEnter:ey,onPointerMove:ey,onPointerDown:ev,onPointerLeave(){$(!1)},style:{position:"relative","--scroll-area-corner-height":`${V.height}px`,"--scroll-area-corner-width":`${V.width}px`}},ek=(0,l.useRenderElement)("div",e,{state:ew,ref:[s,Q],props:[ej,S],stateAttributesMapping:h}),eS=r.useMemo(()=>({handlePointerDown:ex,handlePointerMove:eg,handlePointerUp:eb,handleScroll:ep,disableViewportSnap:em,cornerSize:V,setCornerSize:F,thumbSize:Y,setThumbSize:q,hasMeasuredScrollbar:W,setHasMeasuredScrollbar:U,touchModality:H,cornerRef:en,scrollingX:P,scrollingY:D,hovering:A,setHovering:$,viewportRef:J,scrollbarYRef:ee,scrollbarXRef:et,thumbYRef:er,thumbXRef:ea,rootId:T,hiddenState:G,setHiddenState:Z,overflowEdges:X,setOverflowEdges:K,viewportState:ew,overflowEdgeThreshold:{xStart:N,xEnd:C,yStart:E,yEnd:R}}),[ex,eg,eb,ep,em,V,Y,W,H,P,D,A,T,G,X,ew,N,C,E,R]);return(0,t.jsxs)(i.Provider,{value:eS,children:[!L&&u.styleDisableScrollbar.getElement(z),ek]})});var w=e.i(61362),j=e.i(33858);let k=r.createContext(void 0);var S=e.i(21023),N=e.i(91338),C=e.i(98934);let E=["--scroll-area-overflow-x-start","--scroll-area-overflow-x-end","--scroll-area-overflow-y-start","--scroll-area-overflow-y-end"],R=!1,T=r.forwardRef(function(e,s){let{render:i,className:c,style:f,...p}=e,{viewportRef:m,scrollbarYRef:x,scrollbarXRef:b,thumbYRef:g,thumbXRef:v,cornerRef:y,cornerSize:N,setCornerSize:T,setThumbSize:z,rootId:L,setHiddenState:A,hiddenState:$,setHasMeasuredScrollbar:P,handleScroll:O,touchModality:D,setHovering:B,setOverflowEdges:H,overflowEdgeThreshold:_,viewportState:W}=o(),U=(0,S.useDirection)(),V=r.useRef(!0),F=r.useRef([NaN,NaN,NaN,NaN]),Y=(0,n.useTimeout)(),q=(0,n.useTimeout)(),X=(0,a.useStableCallback)(()=>{var e;let t,r,a=m.current,n=x.current,s=b.current,i=g.current,o=v.current,l=y.current;if(!a)return;let u=a.scrollHeight,c=a.scrollWidth,f=a.clientHeight,h=a.clientWidth,p=a.scrollTop,w=a.scrollLeft,j=F.current,k=Number.isNaN(j[0]);if(j[0]=f,j[1]=u,j[2]=h,j[3]=c,k&&P(!0),0===u||0===c)return;let S=(t=(e=a).clientHeight>=e.scrollHeight,{y:t,x:r=e.clientWidth>=e.scrollWidth,corner:t||r}),R=S.y,L=S.x,$=h/c,O=f/u,D=Math.max(0,c-h),B=Math.max(0,u-f),W=0,V=0;L||(W=(0,C.normalizeScrollOffset)("rtl"===U?-w:w,D),V=D-W);let Y=R?0:(0,C.normalizeScrollOffset)(p,B),q=R?0:B-Y,X=L?0:h,K=R?0:f,G=0,Z=0;L||R||(G=n?.offsetWidth||0,Z=s?.offsetHeight||0);let Q=0===N.width&&0===N.height,J=Q?G:0,ee=Q?Z:0,et=d(s,"padding","x"),er=d(n,"padding","y"),ea=d(o,"margin","x"),en=d(i,"margin","y"),es=X-et-ea,ei=K-er-en,eo=s?Math.min(s.offsetWidth-J,es):es,el=n?Math.min(n.offsetHeight-ee,ei):ei,ed=Math.max(16,eo*$),eu=Math.max(16,el*O);if(z(e=>M(e,{width:ed,height:eu})),n&&i){let e=n.offsetHeight-eu-er-en,t=I(i,"--scroll-area-thumb-height",p,B,u,eu,e);i.style.transform=`translate3d(0,${t}px,0)`}if(s&&o){let e=s.offsetWidth-ed-et-ea,t=I(o,"--scroll-area-thumb-width","rtl"===U?-w:w,D,c,ed,e);o.style.transform=`translate3d(${"rtl"===U?-t:t}px,0,0)`}let ec=[W,V,Y,q];E.forEach((e,t)=>{a.style.setProperty(e,`${ec[t]}px`)}),l&&T(e=>M(e,{width:G,height:Z})),A(e=>M(e,S));let ef={xStart:!L&&W>_.xStart,xEnd:!L&&V>_.xEnd,yStart:!R&&Y>_.yStart,yEnd:!R&&q>_.yEnd};H(e=>M(e,ef))});function K(){V.current=!1}(0,w.useIsoLayoutEffect)(()=>{R||j.platform.engine.webkit||("u">typeof CSS&&"registerProperty"in CSS&&E.forEach(e=>{try{CSS.registerProperty({name:e,syntax:"<length>",inherits:!1,initialValue:"0px"})}catch{}}),R=!0)},[]),(0,w.useIsoLayoutEffect)(()=>{queueMicrotask(X)},[X,$,U,_.xStart,_.xEnd,_.yStart,_.yEnd]),(0,w.useIsoLayoutEffect)(()=>{m.current?.matches(":hover")&&B(!0)},[m,B]),(0,w.useIsoLayoutEffect)(()=>{let e=m.current;if("u"<typeof ResizeObserver||!e)return;let t=!1,r=new ResizeObserver(()=>{if(!t){t=!0;let r=F.current;if(r[0]===e.clientHeight&&r[1]===e.scrollHeight&&r[2]===e.clientWidth&&r[3]===e.scrollWidth)return}X()});return r.observe(e),q.start(0,()=>{let t=e.getAnimations({subtree:!0});0!==t.length&&Promise.allSettled(t.map(e=>e.finished)).then(X).catch(()=>{})}),()=>{r.disconnect(),q.clear()}},[X,m,q]);let G={role:"presentation",...L&&{"data-id":`${L}-viewport`},tabIndex:$.x&&$.y?-1:0,className:u.styleDisableScrollbar.className,style:{overflow:"scroll"},onScroll(){m.current&&(X(),(D||!V.current)&&O({x:m.current.scrollLeft,y:m.current.scrollTop}),Y.start(100,()=>{V.current=!0}))},onWheel:K,onPointerMove:K,onPointerEnter:K,onKeyDown:K},Z=(0,l.useRenderElement)("div",e,{ref:[s,m],state:W,props:[G,p],stateAttributesMapping:h}),Q=r.useMemo(()=>({computeThumbPosition:X}),[X]);return(0,t.jsx)(k.Provider,{value:Q,children:Z})});function M(e,t){for(let r in t)if(e[r]!==t[r])return t;return e}function I(e,t,r,a,n,s,i){let o=(0,N.clamp)(r,0,a),l=r-o,d=Math.max(16,s*n/(n+Math.abs(l)));return e.style.setProperty(t,l?`${d}px`:""),(a?o/a*i:0)+(l>0?s-d:0)}var z=e.i(78645);let L=r.createContext(void 0),A=r.forwardRef(function(e,a){let{render:n,className:s,orientation:i="vertical",keepMounted:u=!1,style:c,...f}=e,{hovering:m,scrollingX:x,scrollingY:b,hiddenState:g,scrollbarYRef:v,scrollbarXRef:y,viewportRef:w,thumbYRef:j,thumbXRef:k,handlePointerDown:N,handlePointerUp:C,handleScroll:E,disableViewportSnap:R,rootId:T,thumbSize:M,hasMeasuredScrollbar:I,viewportState:A}=o(),$="vertical"===i,P={...A,hovering:m,scrolling:$?b:x,orientation:i},O=(0,S.useDirection)(),D=!I&&!u,B=$?g.y:g.x,H=u||!B;r.useEffect(()=>{if(!H)return;let e=w.current,t=$?v.current:y.current;if(t)return(0,z.addEventListener)(t,"wheel",function(t){if(!e||t.ctrlKey)return;let r=!$,a=r?"scrollLeft":"scrollTop",n=r?t.deltaX:t.deltaY;if(0===n)return;let s=r?e.scrollWidth-e.clientWidth:e.scrollHeight-e.clientHeight,i=r&&"rtl"===O?-s:0,o=r&&"rtl"===O?0:s,l=e[a];l<=i&&n<0||l>=o&&n>0||(t.preventDefault(),e[a]=Math.min(o,Math.max(i,l+n)),E({x:e.scrollLeft,y:e.scrollTop}))},{passive:!1})},[O,E,$,y,v,H,w]);let _={...T&&{"data-id":`${T}-scrollbar`},onPointerDown(e){if(0!==e.button)return;let t=(0,p.getTarget)(e.nativeEvent),r=$?j.current:k.current;if(r&&(0,p.contains)(r,t))return;let a=w.current;if(!a)return;let n=$?v.current:y.current;if(!r||!n)return;let s=$?"y":"x",i=d(r,"margin",s),o=d(n,"padding",s),l=$?r.offsetHeight:r.offsetWidth,u=n.getBoundingClientRect(),c=$?e.clientY-u.top-l/2-o+i/2:e.clientX-u.left-l/2-o+i/2,f=$?a.scrollHeight:a.scrollWidth,h=$?a.clientHeight:a.clientWidth,m=($?n.offsetHeight:n.offsetWidth)-l-o-i;if(m<=0)return;let x=c/m,b=f-h;R(),$?a.scrollTop=x*b:"rtl"===O?a.scrollLeft=-(1-x)*b:a.scrollLeft=x*b,E({x:a.scrollLeft,y:a.scrollTop}),N(e)},onPointerUp:C,onPointerCancel:C,style:{position:"absolute",touchAction:"none",WebkitUserSelect:"none",userSelect:"none",visibility:D?"hidden":void 0,...$?{top:0,bottom:"var(--scroll-area-corner-height)",insetInlineEnd:0,"--scroll-area-thumb-height":`${M.height}px`}:{insetInlineStart:0,insetInlineEnd:"var(--scroll-area-corner-width)",bottom:0,"--scroll-area-thumb-width":`${M.width}px`}}},W=(0,l.useRenderElement)("div",e,{ref:[a,$?v:y],state:P,props:[_,f],stateAttributesMapping:h});return H?(0,t.jsx)(L.Provider,{value:i,children:W}):null}),$=r.forwardRef(function(e,t){let{render:a,className:n,style:i,...d}=e,{computeThumbPosition:u}=function(){let e=r.useContext(k);if(void 0===e)throw Error((0,s.default)(55));return e}(),{hasMeasuredScrollbar:c,viewportState:f}=o(),p=r.useRef(null),m=r.useRef(c);return(0,w.useIsoLayoutEffect)(()=>{if("u"<typeof ResizeObserver)return;let e=!1,t=new ResizeObserver(()=>{(e||(e=!0,m.current))&&u()});return p.current&&t.observe(p.current),()=>{t.disconnect()}},[u]),(0,l.useRenderElement)("div",e,{ref:[t,p],state:f,stateAttributesMapping:h,props:[{role:"presentation",style:{minWidth:"fit-content"}},d]})}),P=r.forwardRef(function(e,t){let{render:a,className:n,style:i,...d}=e,{thumbYRef:u,thumbXRef:c,handlePointerDown:f,handlePointerMove:h,handlePointerUp:p,scrollingX:m,scrollingY:x,hasMeasuredScrollbar:b}=o(),g=function(){let e=r.useContext(L);if(void 0===e)throw Error((0,s.default)(54));return e}(),v="vertical"===g;return(0,l.useRenderElement)("div",e,{ref:[t,v?u:c],state:{scrolling:v?x:m,orientation:g},props:[{onPointerDown:f,onPointerMove:h,onPointerUp:p,onPointerCancel:p,style:{visibility:b?void 0:"hidden",...v?{height:"var(--scroll-area-thumb-height)"}:{width:"var(--scroll-area-thumb-width)"}}},d]})}),O=r.forwardRef(function(e,t){let{render:r,className:a,style:n,...s}=e,{cornerRef:i,cornerSize:d,hiddenState:u}=o(),c=(0,l.useRenderElement)("div",e,{ref:[t,i],props:[{style:{position:"absolute",bottom:0,insetInlineEnd:0,width:d.width,height:d.height}},s]});return u.corner?null:c});e.s(["Content",0,$,"Corner",0,O,"Root",0,y,"Scrollbar",0,A,"Thumb",0,P,"Viewport",0,T],55500);var D=e.i(55500),D=D,B=e.i(75157);function H({className:e,orientation:r="vertical",...a}){return(0,t.jsx)(D.Scrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":r,orientation:r,className:(0,B.cn)("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",e),...a,children:(0,t.jsx)(D.Thumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}e.s(["ScrollArea",0,function({className:e,children:r,...a}){return(0,t.jsxs)(D.Root,{"data-slot":"scroll-area",className:(0,B.cn)("relative",e),...a,children:[(0,t.jsx)(D.Viewport,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",children:r}),(0,t.jsx)(H,{}),(0,t.jsx)(D.Corner,{})]})}],59684);var _=e.i(250),_=_;let W=(0,e.i(13496).default)("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"}]]);var U=e.i(98007),V=e.i(19455),F=e.i(46798);e.s(["CopyButton",0,function({value:e,label:a="Copy",size:n="xs",icon:s=W,className:i,children:o}){let[l,d]=(0,r.useState)("idle"),u=(0,r.useRef)(void 0);async function c(){try{await navigator.clipboard.writeText("function"==typeof e?e():e),d("copied")}catch{d("failed")}window.clearTimeout(u.current),u.current=window.setTimeout(()=>d("idle"),1600)}(0,r.useEffect)(()=>()=>window.clearTimeout(u.current),[]);let f="copied"===l?_.default:"failed"===l?U.X:s;return(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{render:(0,t.jsxs)(V.Button,{variant:"ghost",size:o?n:`icon-${n}`,onClick:c,"aria-label":a,className:(0,B.cn)("text-muted-foreground","copied"===l&&"text-emerald-600 dark:text-emerald-400","failed"===l&&"text-destructive",i),children:[(0,t.jsx)(f,{className:"size-3.5","aria-hidden":!0}),o]})}),(0,t.jsx)(F.TooltipContent,{children:"copied"===l?"Copied":"failed"===l?"Copy failed":a})]})}],34960)},84774,e=>{"use strict";var t=e.i(45650),r=e.i(75157);e.s(["Table",0,function({className:e,...a}){return(0,t.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,t.jsx)("table",{"data-slot":"table",className:(0,r.cn)("w-full caption-bottom text-sm",e),...a})})},"TableBody",0,function({className:e,...a}){return(0,t.jsx)("tbody",{"data-slot":"table-body",className:(0,r.cn)("[&_tr:last-child]:border-0",e),...a})},"TableCell",0,function({className:e,...a}){return(0,t.jsx)("td",{"data-slot":"table-cell",className:(0,r.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",e),...a})},"TableFooter",0,function({className:e,...a}){return(0,t.jsx)("tfoot",{"data-slot":"table-footer",className:(0,r.cn)("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",e),...a})},"TableHead",0,function({className:e,...a}){return(0,t.jsx)("th",{"data-slot":"table-head",className:(0,r.cn)("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",e),...a})},"TableHeader",0,function({className:e,...a}){return(0,t.jsx)("thead",{"data-slot":"table-header",className:(0,r.cn)("[&_tr]:border-b",e),...a})},"TableRow",0,function({className:e,...a}){return(0,t.jsx)("tr",{"data-slot":"table-row",className:(0,r.cn)("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",e),...a})}])},77572,e=>{"use strict";var t,r=e.i(45650);e.s([],25931),e.i(25931);var a=e.i(10364),n=e.i(25587),s=e.i(61362),i=e.i(19458),o=e.i(50403),l=e.i(6385),d=e.i(82420);let u=a.createContext(void 0);function c(){let e=a.useContext(u);if(void 0===e)throw Error((0,d.default)(64));return e}let f={tabActivationDirection:e=>({"data-activation-direction":e})};var h=e.i(51068),p=e.i(99389);let m=a.forwardRef(function(e,t){let{className:d,defaultValue:c=0,onValueChange:m,orientation:g="horizontal",render:v,value:y,style:w,...j}=e,k=void 0!==e.defaultValue,S=a.useRef([]),[N,C]=a.useState(()=>new Map),[E,R]=(0,n.useControlled)({controlled:y,default:c,name:"Tabs",state:"value"}),T=void 0!==y,[M,I]=a.useState(()=>new Map),z=a.useRef(void 0),L=a.useCallback(e=>x(M,e),[M]),[A,$]=a.useState(()=>({previousValue:E,tabActivationDirection:"none"})),{previousValue:P,tabActivationDirection:O}=A,D=O,B=!1;P!==E&&(D=b(P,E,g,M),B=null!=P&&null!=E&&null==L(E));let H=B?P:E,_=P!==H||O!==D;(0,s.useIsoLayoutEffect)(()=>{_&&$({previousValue:H,tabActivationDirection:D})},[H,_,D]);let W=(0,i.useStableCallback)((e,t)=>{t.activationDirection=b(E,e,g,M),m?.(e,t),t.isCanceled||R(e)}),U=(0,i.useStableCallback)((e,t)=>{m?.(e,(0,h.createChangeEventDetails)(t,void 0,void 0,{activationDirection:"none"}))}),V=(0,i.useStableCallback)((e,t)=>(C(r=>{let a=new Map(r);return a.set(e,t),a}),()=>{C(r=>{if(r.get(e)!==t)return r;let a=new Map(r);return a.delete(e),a})})),F=a.useCallback(e=>N.get(e),[N]),Y=a.useCallback(e=>{for(let t of M.values())if(e===t.value)return t.id},[M]),q=a.useMemo(()=>({getTabElementBySelectedValue:L,getTabIdByPanelValue:Y,getTabPanelIdByValue:F,onValueChange:W,orientation:g,registerMountedTabPanel:V,setTabMap:I,tabActivationDirection:D,value:E}),[L,Y,F,W,g,V,I,D,E]),X=a.useMemo(()=>{for(let e of M.values())if(e.value===E)return e},[M,E]),K=a.useMemo(()=>{for(let e of M.values())if(!e.disabled)return e.value},[M]),G=a.useRef(!k),Z=a.useRef(c),Q=a.useRef(k),J=a.useRef(!1);(0,s.useIsoLayoutEffect)(()=>{if(T)return;function e(e,t){R(e),$({previousValue:e,tabActivationDirection:"none"}),U(e,t),G.current=!1}if(0===M.size){J.current&&null!==E&&!z.current?.isConnected&&e(null,p.REASONS.missing);return}J.current=!0,z.current=M.keys().next().value;let t=X?.disabled,r=null==X&&null!==E;if(t||E!==Z.current||(Q.current=!1),Q.current&&t&&E===Z.current)return;let a=G.current;if(t||r){let r=K??null;if(E===r){G.current=!1;return}let n=p.REASONS.missing;a?n=p.REASONS.initial:t&&(n=p.REASONS.disabled),e(r,n);return}a&&null!=X&&(U(E,p.REASONS.initial),G.current=!1)},[K,T,U,X,R,M,E]);let ee={orientation:g,tabActivationDirection:D},et=(0,o.useRenderElement)("div",e,{state:ee,ref:t,props:j,stateAttributesMapping:f});return(0,r.jsx)(u.Provider,{value:q,children:(0,r.jsx)(l.CompositeList,{elementsRef:S,children:et})})});function x(e,t){for(let[r,a]of e.entries())if(t===a.value)return r;return null}function b(e,t,r,a){if(null==e||null==t)return"none";let[n,s,i]="horizontal"===r?["left","left","right"]:["top","up","down"],o=x(a,e),l=x(a,t);if(null==o||null==l)return o!==l&&("number"==typeof e||"string"==typeof e)&&typeof e==typeof t?t>e?i:s:"none";let d=o.getBoundingClientRect()[n],u=l.getBoundingClientRect()[n];return u<d?s:u>d?i:"none"}var g=e.i(52515),v=e.i(99281),y=e.i(45034),w=e.i(93901),j=e.i(1788),k=e.i(60857);let S=a.createContext(void 0);function N(){let e=a.useContext(S);if(void 0===e)throw Error((0,d.default)(65));return e}var C=e.i(29148);let E=a.forwardRef(function(e,t){let{className:r,disabled:n=!1,render:l,value:d,id:u,nativeButton:m=!0,style:x,...b}=e,{value:S,getTabPanelIdByValue:E,onValueChange:R,orientation:T,tabActivationDirection:M}=c(),{activateOnFocus:I,registerTabResizeObserverElement:z,tabsListElement:L}=N(),{highlightedIndex:A,onHighlightedIndexChange:$}=(0,k.useCompositeRootContext)(),P=(0,v.useBaseUiId)(u),O=a.useMemo(()=>({disabled:n,id:P,value:d}),[n,P,d]),{compositeProps:D,compositeRef:B,index:H}=(0,j.useCompositeItem)({metadata:O}),_=d===S,W=a.useRef(!1),U=a.useRef(null),V=(0,i.useStableCallback)(e=>{U.current?.(),U.current=e?z(e):null});(0,s.useIsoLayoutEffect)(()=>{if(W.current){W.current=!1;return}if(_&&H>-1&&A!==H){if(null!=L){let e=(0,C.activeElement)((0,g.ownerDocument)(L));if(e&&(0,C.contains)(L,e))return}n||$(H)}},[_,H,A,$,n,L]);let{getButtonProps:F,buttonRef:Y}=(0,y.useButton)({disabled:n,native:m,focusableWhenDisabled:!0}),q=E(d),X=a.useRef(!1),K=a.useRef(!1);function G(e){R(d,(0,h.createChangeEventDetails)(p.REASONS.none,e.nativeEvent,void 0,{activationDirection:"none"}))}return(0,o.useRenderElement)("button",e,{state:{disabled:n,active:_,orientation:T,tabActivationDirection:M},ref:[t,Y,B,V],props:[D,{role:"tab","aria-controls":q,"aria-selected":_,id:P,onClick:function(e){_||n||G(e)},onFocus:function(e){_||n||I&&(!X.current||K.current)&&G(e)},onPointerDown:function(e){if(_||n)return;X.current=!0,K.current=0===e.button;let t=(0,g.ownerDocument)(e.currentTarget);function r(){X.current=!1,K.current=!1,t.removeEventListener("pointerup",r),t.removeEventListener("pointercancel",r)}t.addEventListener("pointerup",r),t.addEventListener("pointercancel",r)},[w.ACTIVE_COMPOSITE_ITEM]:_?"":void 0,onKeyDownCapture(){W.current=!0}},b,F],stateAttributesMapping:f})});var R=e.i(16428),T=e.i(45549),M=e.i(53076);function I(){return M.NOOP}function z(){return!1}function L(){return!0}var A=e.i(63370);function $(e){let{script:t}=e,{nonce:a}=(0,A.useCSPContext)();return(0,T.useSyncExternalStore)(I,z,L)?(0,r.jsx)("script",{nonce:a,dangerouslySetInnerHTML:{__html:t},suppressHydrationWarning:!0}):null}let P={...f,activeTabPosition:()=>null,activeTabSize:()=>null},O=a.forwardRef(function(e,n){let{className:s,render:i,renderBeforeHydration:l=!1,style:d,...u}=e,{getTabElementBySelectedValue:f,orientation:h,tabActivationDirection:p,value:m}=c(),{tabsListElement:x,registerIndicatorUpdateListener:b}=N(),g=function(){let[,e]=a.useState({});return a.useCallback(()=>{e({})},[])}();a.useEffect(()=>b(g),[b,g]);let v=0,y=0,w=0,j=0,k=0,S=0,C=!1;if(null!=m&&null!=x){let e=f(m);if(null!=e){C=!0;let{width:t,height:r}=(0,R.getCssDimensions)(e),{width:a,height:n}=(0,R.getCssDimensions)(x),s=e.getBoundingClientRect(),i=x.getBoundingClientRect(),o=a>0?i.width/a:1,l=n>0?i.height/n:1;if(o>Number.EPSILON&&l>Number.EPSILON){let e=s.left-i.left,t=s.top-i.top;v=e/o+x.scrollLeft-x.clientLeft,w=t/l+x.scrollTop-x.clientTop}else v=e.offsetLeft,w=e.offsetTop;k=t,S=r,y=x.scrollWidth-v-k,j=x.scrollHeight-w-S}}let E=C?{left:v,right:y,top:w,bottom:j}:null,T=C?{width:k,height:S}:null,M=C?{"--active-tab-left":`${v}px`,"--active-tab-right":`${y}px`,"--active-tab-top":`${w}px`,"--active-tab-bottom":`${j}px`,"--active-tab-width":`${k}px`,"--active-tab-height":`${S}px`}:void 0,I=C&&k>0&&S>0,z=(0,o.useRenderElement)("span",e,{state:{orientation:h,activeTabPosition:E,activeTabSize:T,tabActivationDirection:p},ref:n,props:[{role:"presentation",style:M,hidden:!I},u,{suppressHydrationWarning:!0}],stateAttributesMapping:P});return null==m?null:(0,r.jsxs)(a.Fragment,{children:[z,l&&(t||(t=(0,r.jsx)($,{script:""})))]})});var D=e.i(33262),B=e.i(53),H=e.i(11296),_=e.i(4678),W=e.i(68285);let U={...f,...B.transitionStatusMapping},V=a.forwardRef(function(e,t){let{className:r,value:n,render:i,keepMounted:l=!1,style:d,...u}=e,{value:f,getTabIdByPanelValue:h,orientation:p,tabActivationDirection:m,registerMountedTabPanel:x}=c(),b=(0,v.useBaseUiId)(),{ref:g,index:y}=(0,W.useCompositeListItem)(),w=n===f,{mounted:j,transitionStatus:k,setMounted:S}=(0,_.useTransitionStatus)(w),N=!j,C=h(n),E=a.useRef(null),R=(0,o.useRenderElement)("div",e,{state:{hidden:N,orientation:p,tabActivationDirection:m,transitionStatus:k},ref:[t,g,E],props:[{"aria-labelledby":C,hidden:N,id:b,role:"tabpanel",tabIndex:w?0:-1,inert:(0,D.inertValue)(!w),"data-index":y},u],stateAttributesMapping:U});return((0,H.useOpenChangeComplete)({open:w,ref:E,onComplete(){w||S(!1)}}),(0,s.useIsoLayoutEffect)(()=>{if(null!=b&&(!N||l))return x(n,b)},[N,l,n,b,x]),l||j)?R:null});var F=e.i(67149);let Y=a.forwardRef(function(e,t){let{activateOnFocus:n=!1,className:o,loopFocus:l=!0,render:d,style:u,...h}=e,{orientation:p,setTabMap:m,tabActivationDirection:x}=c(),[b,g]=a.useState(0),[v,y]=a.useState(null),w=a.useRef(new Set),j=a.useRef(new Set),k=a.useRef(null);(0,s.useIsoLayoutEffect)(()=>{if("u"<typeof ResizeObserver)return;let e=new ResizeObserver(()=>{w.current.forEach(e=>{e()})});return k.current=e,v&&e.observe(v),j.current.forEach(t=>{e.observe(t)}),()=>{e.disconnect(),k.current=null}},[v]);let N=(0,i.useStableCallback)(e=>(w.current.add(e),()=>{w.current.delete(e)})),C=(0,i.useStableCallback)(e=>(j.current.add(e),k.current?.observe(e),()=>{j.current.delete(e),k.current?.unobserve(e)})),E=a.useMemo(()=>({activateOnFocus:n,registerIndicatorUpdateListener:N,registerTabResizeObserverElement:C,tabsListElement:v}),[n,N,C,v]);return(0,r.jsx)(S.Provider,{value:E,children:(0,r.jsx)(F.CompositeRoot,{render:d,className:o,style:u,state:{orientation:p,tabActivationDirection:x},refs:[t,y],props:[{"aria-orientation":"vertical"===p?"vertical":void 0,role:"tablist"},h],stateAttributesMapping:f,highlightedIndex:b,enableHomeAndEndKeys:!0,loopFocus:l,orientation:p,onHighlightedIndexChange:g,onMapChange:m,disabledIndices:M.EMPTY_ARRAY})})});e.s(["Indicator",0,O,"List",0,Y,"Panel",0,V,"Root",0,m,"Tab",0,E],11037);var q=e.i(11037),q=q,X=e.i(94237),K=e.i(75157);let G=(0,X.cva)("group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none",{variants:{variant:{default:"bg-muted",line:"gap-1 bg-transparent"}},defaultVariants:{variant:"default"}});e.s(["Tabs",0,function({className:e,orientation:t="horizontal",...a}){return(0,r.jsx)(q.Root,{"data-slot":"tabs","data-orientation":t,className:(0,K.cn)("group/tabs flex gap-2 data-horizontal:flex-col",e),...a})},"TabsContent",0,function({className:e,...t}){return(0,r.jsx)(q.Panel,{"data-slot":"tabs-content",className:(0,K.cn)("flex-1 text-sm outline-none",e),...t})},"TabsList",0,function({className:e,variant:t="default",...a}){return(0,r.jsx)(q.List,{"data-slot":"tabs-list","data-variant":t,className:(0,K.cn)(G({variant:t}),e),...a})},"TabsTrigger",0,function({className:e,...t}){return(0,r.jsx)(q.Tab,{"data-slot":"tabs-trigger",className:(0,K.cn)("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent","data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground","after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100",e),...t})}],77572)},42526,e=>{"use strict";var t=e.i(10364),r=e.i(57864);function a(e,a){return[(0,r.useSearchParams)().get(e)??a,(0,t.useCallback)(t=>{let r=new URL(window.location.href);t===a?r.searchParams.delete(e):r.searchParams.set(e,t),window.history.replaceState(null,"",r)},[e,a])]}e.s(["useQueryParam",0,a,"useTabParam",0,function(e,t){let[r,n]=a("tab",t);return[e.includes(r)?r:t,n]}])}]);
package/app/README.md CHANGED
@@ -78,9 +78,11 @@ record.
78
78
  <img alt="Event timeline showing user prompt, thinking, and Grep/Read tool calls" src="https://raw.githubusercontent.com/kishanmundha/agent-session-inspector/main/docs/screenshots/timeline.png">
79
79
  </picture>
80
80
 
81
- **Token Optimizer.** What the session cost by token class, model and turn, where
82
- the context went (system prompt vs. tool results vs. replies), which tools ran
83
- most, and hints for trimming expensive sessions.
81
+ **Cost and Token Optimizer.** The Cost tab shows what the session cost by token
82
+ class, model and turn, with a table of every model request (context size,
83
+ uncached input, cache write, cache read, output) grouped by turn. The Token
84
+ Optimizer tab shows hints for trimming expensive sessions, where the context
85
+ went (system prompt vs. tool results vs. replies) and which tools ran most.
84
86
 
85
87
  <picture>
86
88
  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/kishanmundha/agent-session-inspector/main/docs/screenshots/token-optimizer-dark.png">
@@ -294,7 +296,7 @@ Each session, and each request in the timeline, shows an estimated cost in
294
296
  dollars. Adapters attach `data.billedUsage` to the events that carry usage, with
295
297
  uncached input, cache reads, cache writes and output kept as separate,
296
298
  non-overlapping counts, and `pricing.ts` multiplies them by the model's list
297
- price. The Token Optimizer tab splits the total by token class and by model.
299
+ price. The Cost tab splits the total by token class and by model.
298
300
 
299
301
  The figure is an API-equivalent estimate, not a bill: subscription and
300
302
  request-based plans charge differently, and requests an agent makes outside the
package/app/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-session-inspector",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "See where a coding-agent session's tokens and dollars went: a local inspector for Claude Code, Codex, GitHub Copilot, Cursor, Gemini CLI, OpenCode and Hermes sessions, with a step-by-step timeline, per-step cost and analytics.",
5
5
  "keywords": [
6
6
  "agent",
package/app/server.js CHANGED
@@ -9,7 +9,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
9
9
  const hostname = process.env.HOSTNAME || '0.0.0.0'
10
10
 
11
11
  let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
12
- const nextConfig = {"env":{"APP_VERSION":"0.1.5"},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"instrumentationClientInject":[],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":true,"customCacheHandler":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"serverFunctions":true,"browserToTerminal":"warn"},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/agent-session-inspector/agent-session-inspector","enablePrerenderSourceMaps":true,"cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"appNewScrollHandler":true,"coldCacheBadge":false,"devValidationWorker":true,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"dynamicOnHover":false,"useOffline":false,"varyParams":true,"optimisticRouting":true,"instrumentationClientRouterTransitionEvents":false,"prefetchInlining":{"maxSize":2048,"maxBundleSize":10240},"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptOperationCache":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"devMemoryThresholdRestart":true,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"requestInsights":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"useTypeScriptCli":true,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":true,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"serverComponentsHmrCancellation":false,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"gestureTransition":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":"warn","lockDistDir":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":true,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","turbopackMemoryEvictionMode":"auto","optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"useCacheTimeout":54,"instantInsights":{"validationLevel":"warning"},"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","outputFileTracingExcludes":{"/**":["./.git/**","./.claude/**","./src/**"]},"repoRoot":"/home/runner/work/agent-session-inspector/agent-session-inspector","turbopack":{"root":"/home/runner/work/agent-session-inspector/agent-session-inspector"},"distDirRoot":".next"}
12
+ const nextConfig = {"env":{"APP_VERSION":"0.1.7"},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"instrumentationClientInject":[],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":true,"customCacheHandler":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"serverFunctions":true,"browserToTerminal":"warn"},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/agent-session-inspector/agent-session-inspector","enablePrerenderSourceMaps":true,"cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"appNewScrollHandler":true,"coldCacheBadge":false,"devValidationWorker":true,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"dynamicOnHover":false,"useOffline":false,"varyParams":true,"optimisticRouting":true,"instrumentationClientRouterTransitionEvents":false,"prefetchInlining":{"maxSize":2048,"maxBundleSize":10240},"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptOperationCache":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"devMemoryThresholdRestart":true,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"requestInsights":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"useTypeScriptCli":true,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":true,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"serverComponentsHmrCancellation":false,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"gestureTransition":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":"warn","lockDistDir":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":true,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","turbopackMemoryEvictionMode":"auto","optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"useCacheTimeout":54,"instantInsights":{"validationLevel":"warning"},"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","outputFileTracingExcludes":{"/**":["./.git/**","./.claude/**","./src/**"]},"repoRoot":"/home/runner/work/agent-session-inspector/agent-session-inspector","turbopack":{"root":"/home/runner/work/agent-session-inspector/agent-session-inspector"},"distDirRoot":".next"}
13
13
 
14
14
  process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
15
15
 
package/cli/cli.mjs CHANGED
@@ -3516,17 +3516,19 @@ var CostAccumulator = class {
3516
3516
  /** Keyed by model, class and rate, so a mid-session price change gets its own row. */
3517
3517
  this.lines = /* @__PURE__ */ new Map();
3518
3518
  }
3519
+ /** Returns the usage as priced lines, for the caller to keep per event. */
3519
3520
  add(usage, timestamp2) {
3520
3521
  const model = usage.model || UNKNOWN_MODEL;
3521
3522
  let cost = null;
3522
- for (const part of costOf(usage, timestamp2)) {
3523
+ const parts = costOf(usage, timestamp2).map((part) => ({ model, ...part }));
3524
+ for (const part of parts) {
3523
3525
  const lineKey = `${model}|${part.kind}|${part.rate}`;
3524
3526
  const line = this.lines.get(lineKey);
3525
3527
  if (line) {
3526
3528
  line.tokens += part.tokens;
3527
3529
  if (line.usd !== null && part.usd !== null) line.usd += part.usd;
3528
3530
  } else {
3529
- this.lines.set(lineKey, { model, ...part });
3531
+ this.lines.set(lineKey, { ...part });
3530
3532
  }
3531
3533
  if (part.usd === null) continue;
3532
3534
  cost = (cost ?? 0) + part.usd;
@@ -3549,7 +3551,7 @@ var CostAccumulator = class {
3549
3551
  row.cacheReadTokens += usage.cacheReadTokens ?? 0;
3550
3552
  row.cacheWriteTokens += (usage.cacheWriteTokens ?? 0) + (usage.cacheWrite1hTokens ?? 0);
3551
3553
  if (cost !== null && row.costUSD !== null) row.costUSD += cost;
3552
- return cost;
3554
+ return parts;
3553
3555
  }
3554
3556
  summary() {
3555
3557
  const byModel = [...this.models.values()].sort(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-session-inspector",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "See where a coding-agent session's tokens and dollars went: a local inspector for Claude Code, Codex, GitHub Copilot, Cursor, Gemini CLI, OpenCode and Hermes sessions, with a step-by-step timeline, per-step cost and analytics.",
5
5
  "keywords": [
6
6
  "agent",