agent-session-inspector 0.1.3 → 0.1.4

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 (135) hide show
  1. package/VERSION +1 -1
  2. package/app/.next/BUILD_ID +1 -1
  3. package/app/.next/app-path-routes-manifest.json +2 -0
  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/routes-manifest.json +15 -0
  8. package/app/.next/server/app/_global-error.html +1 -1
  9. package/app/.next/server/app/_global-error.rsc +1 -1
  10. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  11. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  14. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/_not-found.html +1 -1
  16. package/app/.next/server/app/_not-found.rsc +14 -14
  17. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
  18. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +13 -13
  19. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  20. package/app/.next/server/app/api/analytics/route.js +2 -2
  21. package/app/.next/server/app/api/analytics/route.js.nft.json +1 -1
  22. package/app/.next/server/app/api/logs/route.js +2 -2
  23. package/app/.next/server/app/api/logs/route.js.nft.json +1 -1
  24. package/app/.next/server/app/api/pricing/route/app-paths-manifest.json +3 -0
  25. package/app/.next/server/app/api/pricing/route/build-manifest.json +12 -0
  26. package/app/.next/server/app/api/pricing/route/server-reference-manifest.json +4 -0
  27. package/app/.next/server/app/api/pricing/route.js +6 -0
  28. package/app/.next/server/app/api/pricing/route.js.map +5 -0
  29. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -0
  30. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +3 -0
  31. package/app/.next/server/app/api/providers/route.js +2 -2
  32. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  33. package/app/.next/server/app/api/search/route.js +2 -2
  34. package/app/.next/server/app/api/search/route.js.nft.json +1 -1
  35. package/app/.next/server/app/api/sessions/[provider]/[id]/reveal/route/app-paths-manifest.json +3 -0
  36. package/app/.next/server/app/api/sessions/[provider]/[id]/reveal/route/build-manifest.json +12 -0
  37. package/app/.next/server/app/api/sessions/[provider]/[id]/reveal/route/server-reference-manifest.json +4 -0
  38. package/app/.next/server/app/api/sessions/[provider]/[id]/reveal/route.js +7 -0
  39. package/app/.next/server/app/api/sessions/[provider]/[id]/reveal/route.js.map +5 -0
  40. package/app/.next/server/app/api/sessions/[provider]/[id]/reveal/route.js.nft.json +1 -0
  41. package/app/.next/server/app/api/sessions/[provider]/[id]/reveal/route_client-reference-manifest.js +3 -0
  42. package/app/.next/server/app/api/sessions/[provider]/[id]/route.js +2 -2
  43. package/app/.next/server/app/api/sessions/[provider]/[id]/route.js.nft.json +1 -1
  44. package/app/.next/server/app/api/sessions/route.js +2 -2
  45. package/app/.next/server/app/api/sessions/route.js.nft.json +1 -1
  46. package/app/.next/server/app/index.html +1 -1
  47. package/app/.next/server/app/index.rsc +16 -16
  48. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +15 -15
  49. package/app/.next/server/app/index.segments/_full.segment.rsc +16 -16
  50. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  51. package/app/.next/server/app/page.js.nft.json +1 -1
  52. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/sessions/[provider]/[id]/page.js.nft.json +1 -1
  54. package/app/.next/server/app/sessions/[provider]/[id]/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app-paths-manifest.json +2 -0
  56. package/app/.next/server/chunks/1oeh_server_app_api_sessions_[provider]_[id]_reveal_route_actions_1mqlatn.js +3 -0
  57. package/app/.next/server/chunks/[root-of-the-server]__0dyq0rc._.js +3 -0
  58. package/app/.next/server/chunks/[root-of-the-server]__0kgkqhn._.js +3 -0
  59. package/app/.next/server/chunks/[root-of-the-server]__0yxic1z._.js +6 -0
  60. package/app/.next/server/chunks/[root-of-the-server]__10p8y9z._.js +3 -0
  61. package/app/.next/server/chunks/[root-of-the-server]__1cceere._.js +3 -0
  62. package/app/.next/server/chunks/[root-of-the-server]__1eclfq8._.js +3 -0
  63. package/app/.next/server/chunks/[root-of-the-server]__1lz20wm._.js +3 -0
  64. package/app/.next/server/chunks/[root-of-the-server]__1zdh1mi._.js +3 -0
  65. package/app/.next/server/chunks/[root-of-the-server]__20epvou._.js +3 -0
  66. package/app/.next/server/chunks/_next-internal_server_app_api_pricing_route_actions_06i5bdm.js +3 -0
  67. package/app/.next/server/chunks/ssr/_0136j91._.js +1 -1
  68. package/app/.next/server/chunks/ssr/_0o294sf._.js +3 -0
  69. package/app/.next/server/chunks/ssr/_1-5v1mi._.js +3 -0
  70. package/app/.next/server/chunks/ssr/_12__495._.js +1 -1
  71. package/app/.next/server/chunks/ssr/_1ck8cbf._.js +1 -1
  72. package/app/.next/server/chunks/ssr/src_app_page_tsx_1chiuah._.js +1 -1
  73. package/app/.next/server/chunks/ssr/src_app_sessions_[provider]_[id]_page_tsx_0uf635h._.js +3 -3
  74. package/app/.next/server/middleware-build-manifest.js +3 -3
  75. package/app/.next/server/pages/404.html +1 -1
  76. package/app/.next/server/pages/500.html +1 -1
  77. package/app/.next/server/server-reference-manifest.js +1 -1
  78. package/app/.next/server/server-reference-manifest.json +1 -1
  79. package/app/.next/static/chunks/10x4j1wts3xx2.js +1 -0
  80. package/app/.next/static/chunks/1dz8a9ds45tdb.js +6 -0
  81. package/app/.next/static/chunks/1g3ep2o7fhgpe.css +1 -0
  82. package/app/.next/static/chunks/2iedud09ou282.js +1 -0
  83. package/app/.next/static/chunks/2k65elb1vo-2z.js +1 -0
  84. package/app/.next/static/chunks/2t205sbe-_sk4.js +1 -0
  85. package/app/.next/static/chunks/{0u22wlboqnsjn.js → 3_e2d472hbms0.js} +1 -1
  86. package/app/AGENTS.md +9 -0
  87. package/app/CLAUDE.md +1 -0
  88. package/app/CONTRIBUTING.md +71 -0
  89. package/app/Dockerfile +34 -0
  90. package/app/LICENSE +21 -0
  91. package/app/README.md +277 -0
  92. package/app/bin/agent-session-inspector.mjs +159 -0
  93. package/app/components.json +25 -0
  94. package/app/docs/screenshots/analytics-dark.png +0 -0
  95. package/app/docs/screenshots/analytics.png +0 -0
  96. package/app/docs/screenshots/session-overview-dark.png +0 -0
  97. package/app/docs/screenshots/session-overview.png +0 -0
  98. package/app/docs/screenshots/sessions-dark.png +0 -0
  99. package/app/docs/screenshots/sessions.png +0 -0
  100. package/app/docs/screenshots/timeline-dark.png +0 -0
  101. package/app/docs/screenshots/timeline.png +0 -0
  102. package/app/docs/screenshots/token-optimizer-dark.png +0 -0
  103. package/app/docs/screenshots/token-optimizer.png +0 -0
  104. package/app/docs/social-preview.png +0 -0
  105. package/app/eslint.config.mjs +19 -0
  106. package/app/install.sh +85 -0
  107. package/app/next.config.ts +17 -0
  108. package/app/package.json +1 -1
  109. package/app/pnpm-lock.yaml +6760 -0
  110. package/app/pnpm-workspace.yaml +2 -0
  111. package/app/postcss.config.mjs +7 -0
  112. package/app/scripts/demo-data.mjs +288 -0
  113. package/app/scripts/deploy-docker.sh +67 -0
  114. package/app/scripts/package-release.sh +84 -0
  115. package/app/server.js +1 -1
  116. package/app/tsconfig.json +34 -0
  117. package/package.json +1 -1
  118. package/app/.next/server/chunks/[externals]__0xll52b._.js +0 -3
  119. package/app/.next/server/chunks/[root-of-the-server]__093lyxv._.js +0 -3
  120. package/app/.next/server/chunks/[root-of-the-server]__0ne74op._.js +0 -3
  121. package/app/.next/server/chunks/[root-of-the-server]__0uqb915._.js +0 -6
  122. package/app/.next/server/chunks/[root-of-the-server]__0uv5tnc._.js +0 -3
  123. package/app/.next/server/chunks/[root-of-the-server]__1lfc-ga._.js +0 -3
  124. package/app/.next/server/chunks/[root-of-the-server]__1n_sepq._.js +0 -3
  125. package/app/.next/server/chunks/ssr/_0w9kj20._.js +0 -3
  126. package/app/.next/server/chunks/ssr/_1te8t5n._.js +0 -3
  127. package/app/.next/static/chunks/105fms2oszpby.js +0 -1
  128. package/app/.next/static/chunks/13ads2-fzhdry.css +0 -1
  129. package/app/.next/static/chunks/1n1htnt-u9ghv.js +0 -6
  130. package/app/.next/static/chunks/2bron83qy3bb-.js +0 -1
  131. package/app/.next/static/chunks/2q8c3-tw6cvrv.js +0 -1
  132. package/app/.next/static/chunks/3rd1dhhkaulu1.js +0 -1
  133. /package/app/.next/static/{NMXKYaysRrCyMjSEbGwmR → KFq9wlUt8U-Sma3McE5Jw}/_buildManifest.js +0 -0
  134. /package/app/.next/static/{NMXKYaysRrCyMjSEbGwmR → KFq9wlUt8U-Sma3McE5Jw}/_clientMiddlewareManifest.js +0 -0
  135. /package/app/.next/static/{NMXKYaysRrCyMjSEbGwmR → KFq9wlUt8U-Sma3McE5Jw}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[28269,52653,71598,a=>{"use strict";var b=a.i(70627);let c=(0,b.default)("keyboard",[["path",{d:"M10 8h.01",key:"1r9ogq"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M14 8h.01",key:"1primd"}],["path",{d:"M16 12h.01",key:"1l6xoz"}],["path",{d:"M18 8h.01",key:"emo2bl"}],["path",{d:"M6 8h.01",key:"x9i8wu"}],["path",{d:"M7 16h10",key:"wp8him"}],["path",{d:"M8 12h.01",key:"czm47f"}],["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}]]);a.s(["Keyboard",0,c],28269);let d=(0,b.default)("panel-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]);a.s(["PanelLeft",0,d],52653);let e=(0,b.default)("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);a.s(["PanelLeftClose",0,e],71598)},24848,a=>{"use strict";var b=a.i(38742),c=a.i(73895),d=a.i(24687),e=a.i(1442),f=a.i(21732),g=a.i(28269),h=a.i(52653),i=a.i(71598),j=a.i(99570),k=a.i(14574),l=a.i(73221),m=a.i(85259),n=a.i(16543),o=a.i(90075),p=a.i(80153),q=a.i(75775),r=a.i(3541),s=a.i(68114);let t="asv:toggle-sidebar",u="asv:open-shortcuts",v="asv-session-sidebar",w=new Set;function x(a){return w.add(a),window.addEventListener("storage",a),()=>{w.delete(a),window.removeEventListener("storage",a)}}function y(){try{return"0"!==localStorage.getItem(v)}catch{return!0}}let z=[{group:"Timeline",items:[[["/"],"Search events in this session"],[["f"],"Cycle the transcript view: normal, compact, focused"],[["o"],"Flip the order: oldest or newest first"],[["l"],"Follow the session live"],[["j","k"],"Move to the next or previous event"],[["Enter"],"Expand or collapse the selected event"],[["e","E"],"Expand or collapse every event"]]},{group:"Navigation",items:[[["b"],"Show or hide the session sidebar"],[["]","["],"Open the next or previous session"],[["⌘K"],"Search every session"],[["?"],"Show this list"]]}];function A({open:a,onOpenChange:c}){return(0,b.jsx)(k.Dialog,{open:a,onOpenChange:c,children:(0,b.jsxs)(k.DialogContent,{children:[(0,b.jsx)(k.DialogTitle,{children:"Keyboard shortcuts"}),(0,b.jsx)(k.DialogDescription,{children:"Available on any session page, outside text fields."}),z.map(({group:a,items:c})=>(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1.5 text-[11px] uppercase tracking-wide text-muted-foreground",children:a}),(0,b.jsx)("dl",{className:"divide-y divide-border rounded-lg border border-border",children:c.map(([a,c])=>(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4 px-3 py-1.5",children:[(0,b.jsx)("dt",{className:"text-xs text-foreground",children:c}),(0,b.jsx)("dd",{className:"flex shrink-0 gap-1",children:a.map(a=>(0,b.jsx)("kbd",{className:"min-w-5 rounded-sm border border-border bg-muted px-1.5 py-0.5 text-center font-mono text-[11px] text-muted-foreground",children:a},a))})]},c))})]},a))]})})}function B(a){let b=new URLSearchParams(window.location.search),c=new URLSearchParams;for(let a of["tab","mode"]){let d=b.get(a);d&&c.set(a,d)}let d=c.toString();return`/sessions/${a.provider}/${a.id}${d?`?${d}`:""}`}function C(a){return a.title??(0,o.firstLine)(a.name)??a.id}a.s(["SessionShell",0,function({children:a}){let g=(0,e.useRouter)(),h=(0,e.useParams)(),k=(0,c.useSyncExternalStore)(x,y,()=>!1),[z,D]=(0,c.useState)(!1),[E,F]=(0,c.useState)(!1),[G,H]=(0,c.useState)(null),[I,J]=(0,c.useState)(!1),[K,L]=(0,c.useState)(""),[M,N]=(0,c.useState)(!1);function O(){if(window.matchMedia("(min-width: 1024px)").matches){var a=!y();try{localStorage.setItem(v,a?"1":"0")}catch{}w.forEach(a=>a())}else D(a=>!a)}(0,c.useEffect)(()=>{let a=!1;async function b(){try{let b=await fetch("/api/sessions");if(!b.ok)throw Error("Request failed");let c=await b.json();a||(H(c),J(!1))}catch{a||J(!0)}}b();let c=window.setInterval(()=>{document.hidden||b()},3e4);return()=>{a=!0,window.clearInterval(c)}},[]),(0,c.useEffect)(()=>{let a=()=>F(!0);return window.addEventListener(t,O),window.addEventListener(u,a),()=>{window.removeEventListener(t,O),window.removeEventListener(u,a)}},[]);let P=G?.find(a=>a.provider===h.provider&&a.id===h.id),Q=P?.project,R=(0,c.useMemo)(()=>{let a=K.toLowerCase().split(/\s+/).filter(Boolean);return(G??[]).filter(b=>{if(M&&Q&&b.project!==Q)return!1;if(0===a.length)return!0;let c=`${C(b)} ${b.project??""} ${b.branch??""} ${b.id}`.toLowerCase();return a.every(a=>c.includes(a))})},[G,K,M,Q]);function S(a){let b=R.findIndex(a=>a.provider===h.provider&&a.id===h.id),c=R[-1===b?0:b+a];c&&g.push(B(c))}(0,r.useHotkeys)({b:O,"?":()=>F(!0),"]":()=>S(1),"[":()=>S(-1)});let T=(0,c.useRef)(null),U=null!==G;return(0,c.useEffect)(()=>{T.current?.scrollIntoView({block:"nearest"})},[h.id,U,k,z]),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:(0,s.cn)("flex min-h-full flex-1 flex-col",k&&"lg:pl-72"),children:a}),z&&(0,b.jsx)("div",{className:"fixed inset-0 z-40 bg-black/40 lg:hidden",onClick:()=>D(!1),"aria-hidden":!0}),(0,b.jsxs)("aside",{"aria-label":"Sessions",className:(0,s.cn)("fixed inset-y-0 left-0 z-40 w-72 flex-col border-r border-border bg-background",z?"flex":k?"hidden lg:flex":"hidden"),children:[(0,b.jsxs)("div",{className:"flex h-[var(--cv-topbar-h)] shrink-0 items-center gap-2 border-b border-border px-3",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Sessions"}),G&&(0,b.jsx)("span",{className:"text-xs tabular-nums text-muted-foreground",children:R.length===G.length?G.length:`${R.length} of ${G.length}`}),(0,b.jsx)(j.Button,{variant:"ghost",size:"icon-sm",onClick:O,"aria-label":"Hide session sidebar",className:"ml-auto text-muted-foreground",children:(0,b.jsx)(i.PanelLeftClose,{"aria-hidden":!0})})]}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-1.5 border-b border-border p-2",children:[(0,b.jsx)(n.SearchInput,{value:K,onChange:L,size:"sm",placeholder:"Filter sessions…","aria-label":"Filter sessions",className:"min-w-0 flex-1"}),Q&&(0,b.jsxs)(m.Tooltip,{children:[(0,b.jsx)(m.TooltipTrigger,{render:(0,b.jsx)(l.Toggle,{variant:"outline",size:"sm",pressed:M,onPressedChange:N,"aria-label":`Only sessions in ${Q}`,className:"text-muted-foreground aria-pressed:border-foreground/25 aria-pressed:text-foreground",children:(0,b.jsx)(f.FolderGit2,{"aria-hidden":!0})})}),(0,b.jsxs)(m.TooltipContent,{children:["Only ",Q]})]})]}),(0,b.jsxs)("nav",{className:"min-h-0 flex-1 overflow-y-auto p-1.5",children:[R.map(a=>{let c=a.provider===h.provider&&a.id===h.id,e=(0,q.isRunning)(a.updated_at);return(0,b.jsxs)(d.default,{ref:c?T:void 0,href:`/sessions/${a.provider}/${a.id}`,onClick:()=>D(!1),onNavigate:b=>{b.preventDefault(),g.push(B(a))},"aria-current":c?"page":void 0,className:(0,s.cn)("block rounded-md border-l-2 px-2.5 py-1.5 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ring",c?"border-brand bg-muted":"border-transparent hover:bg-muted/60"),children:[(0,b.jsx)("span",{className:"line-clamp-2 break-words text-xs font-medium leading-snug text-foreground",children:C(a)}),(0,b.jsxs)("span",{className:"mt-0.5 flex items-center gap-1.5 text-[11px] text-muted-foreground",children:[(0,b.jsx)("span",{className:(0,s.cn)("size-1.5 shrink-0 rounded-full",(0,p.providerStyle)(a.provider).dotCls),title:(0,p.providerStyle)(a.provider).label}),(0,b.jsx)("span",{className:"min-w-0 truncate",children:a.project??a.repository??"—"}),(0,b.jsx)("span",{className:"ml-auto shrink-0 whitespace-nowrap",children:e?(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 font-medium text-emerald-600 dark:text-emerald-400",children:[(0,b.jsx)("span",{className:"size-1.5 animate-pulse rounded-full bg-emerald-500","aria-hidden":!0}),"running"]}):(0,o.timeAgo)(a.updated_at)})]})]},`${a.provider}:${a.id}`)}),null===G&&(0,b.jsx)("p",{className:"px-2.5 py-3 text-xs text-muted-foreground",children:I?"The session list could not be loaded.":"Loading sessions…"}),null!==G&&0===R.length&&(0,b.jsx)("p",{className:"px-2.5 py-3 text-xs text-muted-foreground",children:"No sessions match."})]})]}),(0,b.jsx)(A,{open:E,onOpenChange:F})]})},"ShortcutsTrigger",0,function({className:a}){return(0,b.jsxs)(m.Tooltip,{children:[(0,b.jsx)(m.TooltipTrigger,{render:(0,b.jsx)(j.Button,{variant:"outline",size:"icon",onClick:()=>window.dispatchEvent(new Event(u)),"aria-label":"Keyboard shortcuts",className:(0,s.cn)("text-muted-foreground",a),children:(0,b.jsx)(g.Keyboard,{"aria-hidden":!0})})}),(0,b.jsx)(m.TooltipContent,{children:"Keyboard shortcuts (?)"})]})},"SidebarTrigger",0,function({className:a}){return(0,b.jsxs)(m.Tooltip,{children:[(0,b.jsx)(m.TooltipTrigger,{render:(0,b.jsx)(j.Button,{variant:"ghost",size:"icon",onClick:()=>window.dispatchEvent(new Event(t)),"aria-label":"Toggle session sidebar",className:(0,s.cn)("text-muted-foreground",a),children:(0,b.jsx)(h.PanelLeft,{"aria-hidden":!0})})}),(0,b.jsx)(m.TooltipContent,{children:"Session sidebar (b)"})]})}])},3541,a=>{"use strict";var b=a.i(73895);a.s(["useHotkeys",0,function(a){let c=(0,b.useRef)(a);(0,b.useEffect)(()=>{c.current=a}),(0,b.useEffect)(()=>{function a(a){if(a.metaKey||a.ctrlKey||a.altKey||a.defaultPrevented)return;let b=a.target,d=b?.tagName;if("INPUT"===d||"TEXTAREA"===d||"SELECT"===d||b?.isContentEditable||document.querySelector('[data-slot="dialog-content"]'))return;let e=c.current[a.key];e&&(a.preventDefault(),e())}return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[])}])}];
1
+ module.exports=[28269,52653,71598,a=>{"use strict";var b=a.i(70627);let c=(0,b.default)("keyboard",[["path",{d:"M10 8h.01",key:"1r9ogq"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M14 8h.01",key:"1primd"}],["path",{d:"M16 12h.01",key:"1l6xoz"}],["path",{d:"M18 8h.01",key:"emo2bl"}],["path",{d:"M6 8h.01",key:"x9i8wu"}],["path",{d:"M7 16h10",key:"wp8him"}],["path",{d:"M8 12h.01",key:"czm47f"}],["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}]]);a.s(["Keyboard",0,c],28269);let d=(0,b.default)("panel-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]);a.s(["PanelLeft",0,d],52653);let e=(0,b.default)("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);a.s(["PanelLeftClose",0,e],71598)},24848,a=>{"use strict";var b=a.i(38742),c=a.i(73895),d=a.i(24687),e=a.i(1442),f=a.i(21732),g=a.i(28269),h=a.i(52653),i=a.i(71598),j=a.i(99570),k=a.i(14574),l=a.i(73221),m=a.i(85259),n=a.i(16543),o=a.i(90075),p=a.i(80153),q=a.i(75775),r=a.i(88285),s=a.i(3541),t=a.i(68114);let u="asv:toggle-sidebar",v="asv:open-shortcuts",w="asv-session-sidebar",x=new Set;function y(a){return x.add(a),window.addEventListener("storage",a),()=>{x.delete(a),window.removeEventListener("storage",a)}}function z(){try{return"0"!==localStorage.getItem(w)}catch{return!0}}let A=[{group:"Timeline",items:[[["/"],"Search events in this session"],[["f"],"Cycle the transcript view: normal, compact, focused"],[["o"],"Flip the order: oldest or newest first"],[["l"],"Follow the session live"],[["j","k"],"Move to the next or previous event"],[["Enter"],"Expand or collapse the selected event"],[["e","E"],"Expand or collapse every event"]]},{group:"Navigation",items:[[["b"],"Show or hide the session sidebar"],[["]","["],"Open the next or previous session"],[["⌘K"],"Search every session"],[["?"],"Show this list"]]}];function B({open:a,onOpenChange:c}){return(0,b.jsx)(k.Dialog,{open:a,onOpenChange:c,children:(0,b.jsxs)(k.DialogContent,{children:[(0,b.jsx)(k.DialogTitle,{children:"Keyboard shortcuts"}),(0,b.jsx)(k.DialogDescription,{children:"Available on any session page, outside text fields."}),A.map(({group:a,items:c})=>(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1.5 text-[11px] uppercase tracking-wide text-muted-foreground",children:a}),(0,b.jsx)("dl",{className:"divide-y divide-border rounded-lg border border-border",children:c.map(([a,c])=>(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4 px-3 py-1.5",children:[(0,b.jsx)("dt",{className:"text-xs text-foreground",children:c}),(0,b.jsx)("dd",{className:"flex shrink-0 gap-1",children:a.map(a=>(0,b.jsx)("kbd",{className:"min-w-5 rounded-sm border border-border bg-muted px-1.5 py-0.5 text-center font-mono text-[11px] text-muted-foreground",children:a},a))})]},c))})]},a))]})})}function C(a){let b=new URLSearchParams(window.location.search),c=new URLSearchParams;for(let a of["tab","mode"]){let d=b.get(a);d&&c.set(a,d)}let d=c.toString();return`/sessions/${a.provider}/${a.id}${d?`?${d}`:""}`}function D(a){return a.title??(0,o.firstLine)(a.name)??a.id}a.s(["SessionShell",0,function({children:a}){let g=(0,e.useRouter)(),h=(0,e.useParams)(),k=(0,c.useSyncExternalStore)(y,z,()=>!1),[A,E]=(0,c.useState)(!1),[F,G]=(0,c.useState)(!1),[H,I]=(0,c.useState)(null),[J,K]=(0,c.useState)(!1),[L,M]=(0,c.useState)(""),[N,O]=(0,c.useState)(!1),[P]=(0,r.useSessionSort)();function Q(){if(window.matchMedia("(min-width: 1024px)").matches){var a=!z();try{localStorage.setItem(w,a?"1":"0")}catch{}x.forEach(a=>a())}else E(a=>!a)}(0,c.useEffect)(()=>{let a=!1;async function b(){try{let b=await fetch("/api/sessions");if(!b.ok)throw Error("Request failed");let c=await b.json();a||(I(c),K(!1))}catch{a||K(!0)}}b();let c=window.setInterval(()=>{document.hidden||b()},3e4);return()=>{a=!0,window.clearInterval(c)}},[]),(0,c.useEffect)(()=>{let a=()=>G(!0);return window.addEventListener(u,Q),window.addEventListener(v,a),()=>{window.removeEventListener(u,Q),window.removeEventListener(v,a)}},[]);let R=H?.find(a=>a.provider===h.provider&&a.id===h.id),S=R?.project,T=(0,c.useMemo)(()=>{let a=L.toLowerCase().split(/\s+/).filter(Boolean),b=(H??[]).filter(b=>{if(N&&S&&b.project!==S)return!1;if(0===a.length)return!0;let c=`${D(b)} ${b.project??""} ${b.branch??""} ${b.id}`.toLowerCase();return a.every(a=>c.includes(a))});return(0,r.sortSessions)(b,P)},[H,L,N,S,P]);function U(a){let b=T.findIndex(a=>a.provider===h.provider&&a.id===h.id),c=T[-1===b?0:b+a];c&&g.push(C(c))}(0,s.useHotkeys)({b:Q,"?":()=>G(!0),"]":()=>U(1),"[":()=>U(-1)});let V=(0,c.useRef)(null),W=null!==H;return(0,c.useEffect)(()=>{V.current?.scrollIntoView({block:"nearest"})},[h.id,W,k,A,P]),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:(0,t.cn)("flex min-h-full flex-1 flex-col",k&&"lg:pl-72"),children:a}),A&&(0,b.jsx)("div",{className:"fixed inset-0 z-40 bg-black/40 lg:hidden",onClick:()=>E(!1),"aria-hidden":!0}),(0,b.jsxs)("aside",{"aria-label":"Sessions",className:(0,t.cn)("fixed inset-y-0 left-0 z-40 w-72 flex-col border-r border-border bg-background",A?"flex":k?"hidden lg:flex":"hidden"),children:[(0,b.jsxs)("div",{className:"flex h-[var(--cv-topbar-h)] shrink-0 items-center gap-2 border-b border-border px-3",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Sessions"}),H&&(0,b.jsx)("span",{className:"text-xs tabular-nums text-muted-foreground",children:T.length===H.length?H.length:`${T.length} of ${H.length}`}),(0,b.jsx)(j.Button,{variant:"ghost",size:"icon-sm",onClick:Q,"aria-label":"Hide session sidebar",className:"ml-auto text-muted-foreground",children:(0,b.jsx)(i.PanelLeftClose,{"aria-hidden":!0})})]}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-1.5 border-b border-border p-2",children:[(0,b.jsx)(n.SearchInput,{value:L,onChange:M,size:"sm",placeholder:"Filter sessions…","aria-label":"Filter sessions",className:"min-w-0 flex-1"}),S&&(0,b.jsxs)(m.Tooltip,{children:[(0,b.jsx)(m.TooltipTrigger,{render:(0,b.jsx)(l.Toggle,{variant:"outline",size:"sm",pressed:N,onPressedChange:O,"aria-label":`Only sessions in ${S}`,className:"text-muted-foreground aria-pressed:border-foreground/25 aria-pressed:text-foreground",children:(0,b.jsx)(f.FolderGit2,{"aria-hidden":!0})})}),(0,b.jsxs)(m.TooltipContent,{children:["Only ",S]})]})]}),(0,b.jsxs)("nav",{className:"min-h-0 flex-1 overflow-y-auto p-1.5",children:[T.map(a=>{let c=a.provider===h.provider&&a.id===h.id,e=(0,q.isRunning)(a.updated_at);return(0,b.jsxs)(d.default,{ref:c?V:void 0,href:`/sessions/${a.provider}/${a.id}`,onClick:()=>E(!1),onNavigate:b=>{b.preventDefault(),g.push(C(a))},"aria-current":c?"page":void 0,className:(0,t.cn)("block rounded-md border-l-2 px-2.5 py-1.5 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ring",c?"border-brand bg-muted":"border-transparent hover:bg-muted/60"),children:[(0,b.jsx)("span",{className:"line-clamp-2 break-words text-xs font-medium leading-snug text-foreground",children:D(a)}),(0,b.jsxs)("span",{className:"mt-0.5 flex items-center gap-1.5 text-[11px] text-muted-foreground",children:[(0,b.jsx)("span",{className:(0,t.cn)("size-1.5 shrink-0 rounded-full",(0,p.providerStyle)(a.provider).dotCls),title:(0,p.providerStyle)(a.provider).label}),(0,b.jsx)("span",{className:"min-w-0 truncate",children:a.project??a.repository??"—"}),(0,b.jsx)("span",{className:"ml-auto shrink-0 whitespace-nowrap",children:e?(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 font-medium text-emerald-600 dark:text-emerald-400",children:[(0,b.jsx)("span",{className:"size-1.5 animate-pulse rounded-full bg-emerald-500","aria-hidden":!0}),"running"]}):(0,o.timeAgo)(a.updated_at)})]})]},`${a.provider}:${a.id}`)}),null===H&&(0,b.jsx)("p",{className:"px-2.5 py-3 text-xs text-muted-foreground",children:J?"The session list could not be loaded.":"Loading sessions…"}),null!==H&&0===T.length&&(0,b.jsx)("p",{className:"px-2.5 py-3 text-xs text-muted-foreground",children:"No sessions match."})]})]}),(0,b.jsx)(B,{open:F,onOpenChange:G})]})},"ShortcutsTrigger",0,function({className:a}){return(0,b.jsxs)(m.Tooltip,{children:[(0,b.jsx)(m.TooltipTrigger,{render:(0,b.jsx)(j.Button,{variant:"outline",size:"icon",onClick:()=>window.dispatchEvent(new Event(v)),"aria-label":"Keyboard shortcuts",className:(0,t.cn)("text-muted-foreground",a),children:(0,b.jsx)(g.Keyboard,{"aria-hidden":!0})})}),(0,b.jsx)(m.TooltipContent,{children:"Keyboard shortcuts (?)"})]})},"SidebarTrigger",0,function({className:a}){return(0,b.jsxs)(m.Tooltip,{children:[(0,b.jsx)(m.TooltipTrigger,{render:(0,b.jsx)(j.Button,{variant:"ghost",size:"icon",onClick:()=>window.dispatchEvent(new Event(u)),"aria-label":"Toggle session sidebar",className:(0,t.cn)("text-muted-foreground",a),children:(0,b.jsx)(h.PanelLeft,{"aria-hidden":!0})})}),(0,b.jsx)(m.TooltipContent,{children:"Session sidebar (b)"})]})}])},3541,a=>{"use strict";var b=a.i(73895);a.s(["useHotkeys",0,function(a){let c=(0,b.useRef)(a);(0,b.useEffect)(()=>{c.current=a}),(0,b.useEffect)(()=>{function a(a){if(a.metaKey||a.ctrlKey||a.altKey||a.defaultPrevented)return;let b=a.target,d=b?.tagName;if("INPUT"===d||"TEXTAREA"===d||"SELECT"===d||b?.isContentEditable||document.querySelector('[data-slot="dialog-content"]'))return;let e=c.current[a.key];e&&(a.preventDefault(),e())}return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[])}])}];
2
2
 
3
3
  //# sourceMappingURL=_1ck8cbf._.js.map