fleetlens 0.1.0 → 0.1.2

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 (67) hide show
  1. package/app/apps/web/.next/BUILD_ID +1 -1
  2. package/app/apps/web/.next/build-manifest.json +3 -3
  3. package/app/apps/web/.next/prerender-manifest.json +3 -3
  4. package/app/apps/web/.next/server/app/_global-error.html +1 -1
  5. package/app/apps/web/.next/server/app/_global-error.rsc +1 -1
  6. package/app/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/app/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/app/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/app/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/app/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/app/apps/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  12. package/app/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/app/apps/web/.next/server/app/page.js +2 -2
  14. package/app/apps/web/.next/server/app/page.js.nft.json +1 -1
  15. package/app/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  16. package/app/apps/web/.next/server/app/parallelism/page.js.nft.json +1 -1
  17. package/app/apps/web/.next/server/app/parallelism/page_client-reference-manifest.js +1 -1
  18. package/app/apps/web/.next/server/app/projects/[slug]/page.js +2 -2
  19. package/app/apps/web/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  20. package/app/apps/web/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  21. package/app/apps/web/.next/server/app/projects/page.js.nft.json +1 -1
  22. package/app/apps/web/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  23. package/app/apps/web/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
  24. package/app/apps/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  25. package/app/apps/web/.next/server/app/sessions/page.js.nft.json +1 -1
  26. package/app/apps/web/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  27. package/app/apps/web/.next/server/app/usage/page.js.nft.json +1 -1
  28. package/app/apps/web/.next/server/app/usage/page_client-reference-manifest.js +1 -1
  29. package/app/apps/web/.next/server/chunks/[root-of-the-server]__0pm~ki3._.js +3 -3
  30. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0e53.km._.js +3 -0
  31. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0g56txz._.js +3 -0
  32. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0xh83kj._.js +8 -0
  33. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__100em.n._.js +3 -0
  34. package/app/apps/web/.next/server/chunks/ssr/_0mer501._.js +12 -0
  35. package/app/apps/web/.next/server/chunks/ssr/_0mkq9uv._.js +12 -0
  36. package/app/apps/web/.next/server/chunks/ssr/_0yyvgac._.js +1 -1
  37. package/app/apps/web/.next/server/chunks/ssr/apps_web_components_06j3c.0._.js +1 -1
  38. package/app/apps/web/.next/server/chunks/ssr/apps_web_components_0b-4-4j._.js +8 -0
  39. package/app/apps/web/.next/server/chunks/ssr/packages_parser_dist_0-jvt~a._.js +1 -1
  40. package/app/apps/web/.next/server/middleware-build-manifest.js +3 -3
  41. package/app/apps/web/.next/server/pages/500.html +1 -1
  42. package/app/apps/web/.next/server/server-reference-manifest.js +1 -1
  43. package/app/apps/web/.next/server/server-reference-manifest.json +1 -1
  44. package/app/apps/web/.next/static/chunks/0ewidc3d80nvk.js +6 -0
  45. package/app/apps/web/.next/static/chunks/0ipd1ph4bgubq.js +6 -0
  46. package/app/apps/web/.next/static/chunks/0r_2tya645h45.js +6 -0
  47. package/app/apps/web/app/api/ask/route.ts +1 -1
  48. package/app/apps/web/app/layout.tsx +2 -2
  49. package/app/apps/web/app/projects/[slug]/page.tsx +87 -112
  50. package/app/apps/web/components/sidebar.tsx +1 -1
  51. package/app/apps/web/package.json +1 -1
  52. package/app/apps/web/tsconfig.tsbuildinfo +1 -1
  53. package/dist/index.js +14 -14
  54. package/package.json +1 -1
  55. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__07uf5k8._.js +0 -8
  56. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0bb9l_d._.js +0 -3
  57. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0yhkpq.._.js +0 -3
  58. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__10tl2-f._.js +0 -3
  59. package/app/apps/web/.next/server/chunks/ssr/_0c4zmjt._.js +0 -12
  60. package/app/apps/web/.next/server/chunks/ssr/_0ev.8gk._.js +0 -12
  61. package/app/apps/web/.next/server/chunks/ssr/apps_web_components_033k_mm._.js +0 -3
  62. package/app/apps/web/.next/static/chunks/01zgbvaped3rv.js +0 -6
  63. package/app/apps/web/.next/static/chunks/0fn-74bl9-qvi.js +0 -1
  64. package/app/apps/web/.next/static/chunks/0wmzqi~uv60lw.js +0 -6
  65. /package/app/apps/web/.next/static/{prUnSo8A-GShFCDI6P0cA → 2kdRQ_Qfdyey-Xt31t7FV}/_buildManifest.js +0 -0
  66. /package/app/apps/web/.next/static/{prUnSo8A-GShFCDI6P0cA → 2kdRQ_Qfdyey-Xt31t7FV}/_clientMiddlewareManifest.js +0 -0
  67. /package/app/apps/web/.next/static/{prUnSo8A-GShFCDI6P0cA → 2kdRQ_Qfdyey-Xt31t7FV}/_ssgManifest.js +0 -0
package/dist/index.js CHANGED
@@ -209,7 +209,7 @@ async function checkForUpdate() {
209
209
  if (process.env.__CCLENS_UPDATED === "1") return;
210
210
  const latest = await fetchLatestVersion();
211
211
  if (latest === null) return;
212
- const current = "0.1.0";
212
+ const current = "0.1.2";
213
213
  if (!shouldUpdate(current, latest)) return;
214
214
  console.log(`Updating cclens ${current} \u2192 ${latest}...`);
215
215
  const ok = runNpmInstall();
@@ -222,7 +222,7 @@ async function checkForUpdate() {
222
222
  }
223
223
  async function forceUpdate() {
224
224
  const latest = await fetchLatestVersion();
225
- const current = "0.1.0";
225
+ const current = "0.1.2";
226
226
  if (latest === null) {
227
227
  console.error("Could not reach npm registry. Check your network.");
228
228
  process.exit(1);
@@ -265,15 +265,15 @@ async function start(args2) {
265
265
  const status = getServerStatus();
266
266
  if (status.running) {
267
267
  const url = `http://localhost:${status.port}`;
268
- console.log(`Claude Lens is already running on ${url} (PID ${status.pid})`);
268
+ console.log(`fleetlens is already running on ${url} (PID ${status.pid})`);
269
269
  if (!noOpen) openBrowser(url);
270
270
  return;
271
271
  }
272
- console.log("Starting Claude Lens...");
272
+ console.log("Starting fleetlens...");
273
273
  try {
274
274
  const result = await startServer({ port });
275
275
  const url = `http://localhost:${result.port}`;
276
- console.log(`Claude Lens running on ${url} (PID ${result.pid})`);
276
+ console.log(`fleetlens running on ${url} (PID ${result.pid})`);
277
277
  if (!noOpen) openBrowser(url);
278
278
  } catch (err) {
279
279
  console.error(`Failed to start: ${err.message}`);
@@ -296,12 +296,12 @@ __export(stop_exports, {
296
296
  async function stop() {
297
297
  const status = getServerStatus();
298
298
  if (!status.running) {
299
- console.log("Claude Lens is not running.");
299
+ console.log("fleetlens is not running.");
300
300
  return;
301
301
  }
302
302
  const result = stopServer();
303
303
  if (result.stopped) {
304
- console.log(`Stopped Claude Lens (PID ${result.pid})`);
304
+ console.log(`Stopped fleetlens (PID ${result.pid})`);
305
305
  }
306
306
  }
307
307
  var init_stop = __esm({
@@ -328,11 +328,11 @@ async function web(args2) {
328
328
  if (!noOpen) openBrowser(url);
329
329
  return;
330
330
  }
331
- console.log("Claude Lens is not running. Starting server...");
331
+ console.log("fleetlens is not running. Starting server...");
332
332
  try {
333
333
  const result = await startServer({});
334
334
  const url = `http://localhost:${result.port}${path2}`;
335
- console.log(`Claude Lens running on ${url} (PID ${result.pid})`);
335
+ console.log(`fleetlens running on ${url} (PID ${result.pid})`);
336
336
  if (!noOpen) openBrowser(url);
337
337
  } catch (err) {
338
338
  console.error(`Failed to start: ${err.message}`);
@@ -1398,7 +1398,7 @@ async function daemon(args2) {
1398
1398
  break;
1399
1399
  default:
1400
1400
  console.error(`Unknown daemon subcommand: ${sub}`);
1401
- console.error("Usage: cclens daemon <start|stop|status|logs>");
1401
+ console.error("Usage: fleetlens daemon <start|stop|status|logs>");
1402
1402
  process.exit(1);
1403
1403
  }
1404
1404
  }
@@ -1411,7 +1411,7 @@ async function daemonStart() {
1411
1411
  }
1412
1412
  const script = workerPath();
1413
1413
  if (!existsSync3(script)) {
1414
- console.error(`Daemon worker not found at ${script}. Rebuild with: pnpm -F cclens build`);
1414
+ console.error(`Daemon worker not found at ${script}. Rebuild with: pnpm -F fleetlens build`);
1415
1415
  process.exit(1);
1416
1416
  }
1417
1417
  const child = spawn2(process.execPath, [script], {
@@ -1527,12 +1527,12 @@ async function main() {
1527
1527
  case "version":
1528
1528
  case "--version":
1529
1529
  case "-v":
1530
- console.log(`cclens ${"0.1.0"}`);
1530
+ console.log(`fleetlens ${"0.1.2"}`);
1531
1531
  break;
1532
1532
  case "help":
1533
1533
  case "--help":
1534
1534
  case "-h":
1535
- console.log(`Usage: cclens <command>
1535
+ console.log(`Usage: fleetlens <command>
1536
1536
 
1537
1537
  Commands:
1538
1538
  start [--port N] [--no-open] Start the dashboard server
@@ -1546,7 +1546,7 @@ Commands:
1546
1546
  break;
1547
1547
  default:
1548
1548
  console.error(`Unknown command: ${command}
1549
- Run 'cclens help' for usage.`);
1549
+ Run 'fleetlens help' for usage.`);
1550
1550
  process.exit(1);
1551
1551
  }
1552
1552
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetlens",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "fleetlens — local-only dashboard and usage tracker for Claude Code sessions and agent fleets",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,8 +0,0 @@
1
- module.exports=[50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},78019,42732,a=>{"use strict";var b=a.i(5423);let c=(0,b.default)("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);a.s(["ChevronDown",0,c],78019);let d=(0,b.default)("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",0,d],42732)},85857,a=>{"use strict";let b=(0,a.i(5423).default)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);a.s(["X",0,b],85857)},20555,a=>{"use strict";var b=a.i(51990),c=a.i(19804);a.s(["LiveBadge",0,function({mtimeIso:a,size:d="sm"}){let[e,f]=(0,c.useState)(()=>Date.now());if((0,c.useEffect)(()=>{let a=setInterval(()=>f(Date.now()),1e4);return()=>clearInterval(a)},[]),!a)return null;let g=Date.parse(a);if(Number.isNaN(g)||e-g>45e3)return null;let h="md"===d?8:6;return(0,b.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:5,fontSize:"md"===d?10:9,fontWeight:700,letterSpacing:"0.04em",padding:"md"===d?"3px 9px":"2px 7px",borderRadius:100,background:"rgba(239, 68, 68, 0.12)",color:"#ef4444",textTransform:"uppercase"},title:`Last updated ${new Date(g).toLocaleTimeString()}`,children:[(0,b.jsx)("span",{style:{display:"inline-block",width:h,height:h,borderRadius:"50%",background:"#ef4444",animation:"cs-live-pulse 1.6s ease-in-out infinite"}}),"LIVE",(0,b.jsx)("style",{children:`
2
- @keyframes cs-live-pulse {
3
- 0%, 100% { opacity: 1; transform: scale(1); }
4
- 50% { opacity: 0.4; transform: scale(0.85); }
5
- }
6
- `})]})}])},80081,a=>{"use strict";let b=(0,a.i(5423).default)("ArrowDown",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]);a.s(["ArrowDown",0,b],80081)},3504,a=>{"use strict";let b=(0,a.i(5423).default)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);a.s(["Clock",0,b],3504)},68468,a=>{"use strict";let b=(0,a.i(5423).default)("Wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",key:"cbrjhi"}]]);a.s(["Wrench",0,b],68468)},3680,a=>{"use strict";let b=/gh\s+pr\s+create\b/i,c=/#(\d+)/,d=/--title\s+["']([^"']+)["']/;a.s(["canonicalProjectName",0,function(a){let b=a.lastIndexOf("/.worktrees/");return b>=0?a.slice(0,b):a},"detectPrMarkers",0,function(a){let e=[],f=a.durationMs??0;for(let g of a.events){if("tool-call"!==g.role||"Bash"!==g.toolName)continue;let h=g.blocks.find(a=>a&&"type"in a&&"tool_use"===a.type);if(!h||"tool_use"!==h.type)continue;let i=h.input,j="string"==typeof i?.command?i.command:"";if(!b.test(j))continue;let k=j.match(d),l=j.match(c);e.push({sessionId:a.id,timestamp:g.timestamp??a.firstTimestamp??"",tOffsetMs:g.tOffsetMs,positionInSession:f>0&&void 0!==g.tOffsetMs?Math.min(1,Math.max(0,g.tOffsetMs/f)):void 0,command:j.slice(0,300),prNumber:l?Number(l[1]):void 0,title:k?.[1]})}return e}])}];
7
-
8
- //# sourceMappingURL=%5Broot-of-the-server%5D__07uf5k8._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},80353,(a,b,c)=>{b.exports=a.r(18622)},37631,a=>{a.n(a.i(80635))},87672,a=>{a.n(a.i(79460))},64939,a=>{a.n(a.i(65512))},16018,a=>{a.n(a.i(82936))},14729,a=>{a.n(a.i(44088))},79345,a=>{a.n(a.i(70132))},8468,a=>{a.n(a.i(33737))},31621,a=>{a.n(a.i(64496))},16860,a=>{a.n(a.i(66231))},51066,a=>{a.n(a.i(43935))},48425,a=>{a.n(a.i(40378))},67246,a=>{a.n(a.i(41057))},58312,a=>{a.n(a.i(1327))},35278,a=>{a.n(a.i(1933))},50147,a=>{a.n(a.i(66393))},73430,a=>{a.n(a.i(74999))},92517,a=>{a.n(a.i(14197))},62411,a=>{a.n(a.i(50387))},84949,a=>{a.n(a.i(78334))},5979,a=>{a.n(a.i(86497))},13345,a=>{a.n(a.i(55388))},28372,a=>{a.n(a.i(56177))},60009,a=>{a.n(a.i(79983))},89810,a=>{a.n(a.i(23276))},9939,a=>{a.n(a.i(62464))},97865,a=>{a.n(a.i(8222))},87051,a=>{a.n(a.i(84261))},14288,a=>{a.n(a.i(42488))},82192,a=>{a.n(a.i(8723))},49808,a=>{a.n(a.i(49707))},20758,a=>{a.n(a.i(73543))},7104,a=>{a.n(a.i(99899))},45890,a=>{a.n(a.i(62707))},67116,a=>{"use strict";var b=a.i(49382),c=a.i(50785);let d=process.env.CCLENS_DATA_DIR||void 0,e=(0,b.cache)(async()=>(0,c.listSessions)({limit:1e3,root:d})),f=(0,b.cache)(async a=>(0,c.getSession)(a,{root:d}));a.s(["getSession",0,f,"listSessions",0,e])},34476,a=>{"use strict";a.s(["DateRangeFilter",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call DateRangeFilter() from the server but DateRangeFilter is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/date-range-filter.tsx <module evaluation>","DateRangeFilter")},96491,a=>{"use strict";a.s(["DateRangeFilter",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call DateRangeFilter() from the server but DateRangeFilter is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/date-range-filter.tsx","DateRangeFilter")},67598,a=>{"use strict";a.i(34476);var b=a.i(96491);a.n(b)},41264,a=>{"use strict";a.s(["LiveBadge",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call LiveBadge() from the server but LiveBadge is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/live-badge.tsx <module evaluation>","LiveBadge")},71475,a=>{"use strict";a.s(["LiveBadge",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call LiveBadge() from the server but LiveBadge is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/live-badge.tsx","LiveBadge")},77708,a=>{"use strict";a.i(41264);var b=a.i(71475);a.n(b)},77739,a=>{"use strict";var b=a.i(21943),c=a.i(48024),d=a.i(4636),e=a.i(67598),f=a.i(77708),g=a.i(67116),h=a.i(87067),i=a.i(74719);async function j({searchParams:a}){let k,{range:l}=await a,m="7d"===(k=Array.isArray(l)?l[0]:l)||"30d"===k||"90d"===k||"all"===k?k:"all",n=function(a,b=Date.now()){if("all"!==a)return b-24*("7d"===a?7:"30d"===a?30:90)*36e5}(m),o=await (0,g.listSessions)(),p=void 0===n?o:o.filter(a=>{if(!a.firstTimestamp)return!1;let b=Date.parse(a.firstTimestamp);return!Number.isNaN(b)&&b>=n}),q=(0,c.groupByProject)(p).sort((a,b)=>{let c=a.metrics.totalTokens.input+a.metrics.totalTokens.output+a.metrics.totalTokens.cacheRead+a.metrics.totalTokens.cacheWrite,d=b.metrics.totalTokens.input+b.metrics.totalTokens.output+b.metrics.totalTokens.cacheRead+b.metrics.totalTokens.cacheWrite;return d!==c?d-c:b.metrics.sessionCount-a.metrics.sessionCount}).slice(0,8),r=p.slice(0,6);return(0,b.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:28,maxWidth:1280,padding:"32px 40px"},children:[(0,b.jsxs)("header",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:18,flexWrap:"wrap"},children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{style:{fontSize:26,fontWeight:700,letterSpacing:"-0.02em",margin:0},children:"Overview"}),(0,b.jsxs)("p",{style:{fontSize:13,color:"var(--af-text-secondary)",marginTop:4},children:[p.length," of ",o.length," session",1===o.length?"":"s",", read from"," ",(0,b.jsx)("code",{style:{fontFamily:"var(--font-mono)",fontSize:11,background:"var(--af-border-subtle)",padding:"1px 6px",borderRadius:4},children:"~/.claude/projects"}),"."]})]}),(0,b.jsx)(e.DateRangeFilter,{current:m})]}),(0,b.jsx)(d.DashboardView,{sessions:p}),(0,b.jsxs)("section",{style:{display:"grid",gridTemplateColumns:"1fr 1.4fr",gap:16},children:[(0,b.jsxs)("div",{className:"af-panel",children:[(0,b.jsxs)("div",{className:"af-panel-header",children:[(0,b.jsx)("span",{children:"Top projects"}),(0,b.jsx)("span",{style:{fontSize:11,color:"var(--af-text-tertiary)",fontWeight:400},children:"by total tokens"}),(0,b.jsx)(i.default,{href:"/projects",style:{fontSize:11,color:"var(--af-accent)",marginLeft:"auto"},children:"View all →"})]}),(0,b.jsx)("div",{children:0===q.length?(0,b.jsx)("div",{className:"af-empty",children:"No projects yet."}):q.map(a=>{let c=a.metrics.totalTokens.input+a.metrics.totalTokens.output+a.metrics.totalTokens.cacheRead+a.metrics.totalTokens.cacheWrite;return(0,b.jsxs)(i.default,{href:`/projects/${encodeURIComponent(a.projectDir)}`,style:{display:"grid",gridTemplateColumns:"1fr auto auto auto",gap:14,padding:"10px 18px",fontSize:12,borderBottom:"1px solid var(--af-border-subtle)",alignItems:"center"},children:[(0,b.jsx)("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--af-text)"},title:a.projectName,children:(0,h.prettyProjectName)(a.projectName)}),(0,b.jsxs)("div",{style:{fontSize:10,color:"var(--af-text-tertiary)",fontFamily:"var(--font-mono)",minWidth:64,textAlign:"right"},children:[a.sessions.length," sess"]}),(0,b.jsx)("div",{style:{fontSize:10,color:"var(--af-text-tertiary)",fontFamily:"var(--font-mono)",minWidth:52,textAlign:"right"},title:`${c.toLocaleString()} tokens`,children:(0,h.formatTokens)(c)}),(0,b.jsx)("div",{style:{fontSize:10,color:"var(--af-text-tertiary)",minWidth:56,textAlign:"right"},suppressHydrationWarning:!0,children:a.lastActiveMs?(0,h.formatRelative)(new Date(a.lastActiveMs).toISOString()):"—"})]},a.projectDir)})})]}),(0,b.jsxs)("div",{className:"af-panel",children:[(0,b.jsxs)("div",{className:"af-panel-header",children:[(0,b.jsx)("span",{children:"Recent sessions"}),(0,b.jsx)(i.default,{href:"/sessions",style:{fontSize:11,color:"var(--af-accent)",marginLeft:"auto"},children:"View all →"})]}),(0,b.jsx)("div",{children:0===r.length?(0,b.jsx)("div",{className:"af-empty",children:"No sessions found in ~/.claude/projects"}):r.map(a=>(0,b.jsxs)(i.default,{href:`/sessions/${a.id}`,style:{display:"grid",gridTemplateColumns:"1fr auto auto",gap:12,padding:"10px 18px",fontSize:12,borderBottom:"1px solid var(--af-border-subtle)",alignItems:"center"},children:[(0,b.jsxs)("div",{style:{minWidth:0},children:[(0,b.jsxs)("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--af-text)",display:"flex",alignItems:"center",gap:6},children:[(0,b.jsx)(f.LiveBadge,{mtimeIso:a.lastTimestamp}),(0,b.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.firstUserPreview||(0,b.jsx)("em",{style:{color:"var(--af-text-tertiary)"},children:"(no user message)"})})]}),(0,b.jsx)("div",{style:{fontSize:10,color:"var(--af-text-tertiary)",marginTop:2,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:(0,h.prettyProjectName)(a.projectName)})]}),(0,b.jsx)("div",{style:{fontSize:10,color:"var(--af-text-tertiary)",fontFamily:"var(--font-mono)",textAlign:"right",minWidth:54},title:"Agent time (filters out idle gaps)",children:(0,h.formatDuration)(a.airTimeMs??a.durationMs)}),(0,b.jsx)("div",{style:{fontSize:10,color:"var(--af-text-tertiary)",textAlign:"right",minWidth:54},children:a.firstTimestamp?(0,h.formatRelative)(a.firstTimestamp):"—"})]},`${a.projectDir}/${a.id}`))})]})]})]})}a.s(["default",0,j,"dynamic",0,"force-dynamic"],77739)},67303,a=>{a.n(a.i(77739))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0bb9l_d._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},65460,(a,b,c)=>{"use strict";b.exports=a.r(18622)},51990,(a,b,c)=>{"use strict";b.exports=a.r(65460).vendored["react-ssr"].ReactJsxRuntime},19804,(a,b,c)=>{"use strict";b.exports=a.r(65460).vendored["react-ssr"].React},93369,(a,b,c)=>{"use strict";b.exports=a.r(65460).vendored.contexts.AppRouterContext},94168,(a,b,c)=>{"use strict";b.exports=a.r(65460).vendored["react-ssr"].ReactServerDOMTurbopackClient},204,(a,b,c)=>{"use strict";b.exports=a.r(65460).vendored.contexts.HooksClientContext},22076,(a,b,c)=>{"use strict";b.exports=a.r(65460).vendored.contexts.ServerInsertedHtml},5423,a=>{"use strict";var b=a.i(19804);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim();var d={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let e=(0,b.forwardRef)(({color:a="currentColor",size:e=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...d,width:e,height:e,stroke:a,strokeWidth:g?24*Number(f)/Number(e):f,className:c("lucide",h),...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]]));a.s(["default",0,(a,d)=>{let f=(0,b.forwardRef)(({className:f,...g},h)=>(0,b.createElement)(e,{ref:h,iconNode:d,className:c(`lucide-${a.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,f),...g}));return f.displayName=`${a}`,f}],5423)},3444,a=>{"use strict";a.s(["formatDuration",0,function(a){if(void 0===a)return"—";if(a<1e3)return`${a}ms`;let b=Math.round(a/1e3);if(b<60)return`${b}s`;let c=Math.floor(b/60),d=b%60;if(c<60)return d?`${c}m ${d}s`:`${c}m`;let e=Math.floor(c/60),f=c%60;return f?`${e}h ${f}m`:`${e}h`},"formatGap",0,function(a){if(a<1e3)return`${a}ms`;let b=a/1e3;if(b<60)return`${b.toFixed(1)}s`;let c=Math.floor(b/60);if(c<60){let a=Math.round(b%60);return`${c}m ${a}s`}let d=Math.floor(c/60),e=c%60;if(d<24)return e?`${d}h ${e}m`:`${d}h`;let f=Math.floor(d/24),g=d%24;return g?`${f}d ${g}h`:`${f}d`},"formatOffset",0,function(a){if(void 0===a||a<0)return"—";let b=Math.floor(a/1e3),c=Math.floor(b/3600),d=String(Math.floor(b%3600/60)).padStart(2,"0"),e=String(b%60).padStart(2,"0");return`${c}:${d}:${e}`},"formatRelative",0,function(a){let b=Date.parse(a);if(Number.isNaN(b))return a;let c=Math.round((Date.now()-b)/1e3);if(c<60)return`${c}s ago`;let d=Math.round(c/60);if(d<60)return`${d}m ago`;let e=Math.round(d/60);if(e<24)return`${e}h ago`;let f=Math.round(e/24);return`${f}d ago`},"formatTokens",0,function(a){return a<1e3?String(a):a<1e4?(a/1e3).toFixed(1)+"k":a<1e6?Math.round(a/1e3)+"k":a<1e7?(a/1e6).toFixed(2)+"M":(a/1e6).toFixed(1)+"M"},"prettyProjectName",0,function(a,b=35){let c=a.split("/").filter(Boolean),d=c.lastIndexOf(".worktrees");if(d>0&&d<c.length-1){let a=c[d-1],e=c[d+1],f=`${a}/${e}`;return f.length<=b?f:"…"+f.slice(f.length-b+1)}let e=c.length>=2?`${c[c.length-2]}/${c[c.length-1]}`:c[c.length-1]??a;return e.length<=b?e:"…"+e.slice(e.length-b+1)},"shortId",0,function(a){return a.length<=10?a:a.slice(0,6)+"…"+a.slice(-4)}])},2591,a=>{"use strict";var b=a.i(19804);a.s(["usePersistentBoolean",0,function(a,c){let[d,e]=(0,b.useState)(c),[f,g]=(0,b.useState)(!1);return(0,b.useEffect)(()=>{try{let b=window.localStorage.getItem(a);"1"===b?e(!0):"0"===b&&e(!1)}catch{}g(!0)},[a]),(0,b.useEffect)(()=>{let b=b=>{let c=b.detail;c?.key===a&&"boolean"==typeof c.value&&e(c.value)},c=b=>{b.key===a&&("1"===b.newValue?e(!0):"0"===b.newValue&&e(!1))};return window.addEventListener("cclens:persistent-boolean",b),window.addEventListener("storage",c),()=>{window.removeEventListener("cclens:persistent-boolean",b),window.removeEventListener("storage",c)}},[a]),[d,(0,b.useCallback)(b=>{e(b);try{window.localStorage.setItem(a,b?"1":"0")}catch{}window.dispatchEvent(new CustomEvent("cclens:persistent-boolean",{detail:{key:a,value:b}}))},[a]),f]}])},29384,a=>{"use strict";let b=(0,a.i(5423).default)("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);a.s(["Search",0,b],29384)}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0yhkpq.._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},80353,(a,b,c)=>{b.exports=a.r(18622)},37631,a=>{a.n(a.i(80635))},87672,a=>{a.n(a.i(79460))},64939,a=>{a.n(a.i(65512))},16018,a=>{a.n(a.i(82936))},14729,a=>{a.n(a.i(44088))},79345,a=>{a.n(a.i(70132))},8468,a=>{a.n(a.i(33737))},31621,a=>{a.n(a.i(64496))},16860,a=>{a.n(a.i(66231))},51066,a=>{a.n(a.i(43935))},48425,a=>{a.n(a.i(40378))},67246,a=>{a.n(a.i(41057))},58312,a=>{a.n(a.i(1327))},35278,a=>{a.n(a.i(1933))},50147,a=>{a.n(a.i(66393))},73430,a=>{a.n(a.i(74999))},92517,a=>{a.n(a.i(14197))},62411,a=>{a.n(a.i(50387))},84949,a=>{a.n(a.i(78334))},5979,a=>{a.n(a.i(86497))},13345,a=>{a.n(a.i(55388))},28372,a=>{a.n(a.i(56177))},60009,a=>{a.n(a.i(79983))},89810,a=>{a.n(a.i(23276))},9939,a=>{a.n(a.i(62464))},97865,a=>{a.n(a.i(8222))},87051,a=>{a.n(a.i(84261))},14288,a=>{a.n(a.i(42488))},82192,a=>{a.n(a.i(8723))},49808,a=>{a.n(a.i(49707))},20758,a=>{a.n(a.i(73543))},7104,a=>{a.n(a.i(99899))},45890,a=>{a.n(a.i(62707))},67116,a=>{"use strict";var b=a.i(49382),c=a.i(50785);let d=process.env.CCLENS_DATA_DIR||void 0,e=(0,b.cache)(async()=>(0,c.listSessions)({limit:1e3,root:d})),f=(0,b.cache)(async a=>(0,c.getSession)(a,{root:d}));a.s(["getSession",0,f,"listSessions",0,e])},2860,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return e}});class d extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class e extends URLSearchParams{append(){throw new d}delete(){throw new d}set(){throw new d}sort(){throw new d}}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},29014,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"RedirectStatusCode",{enumerable:!0,get:function(){return e}});var d,e=((d={})[d.SeeOther=303]="SeeOther",d[d.TemporaryRedirect=307]="TemporaryRedirect",d[d.PermanentRedirect=308]="PermanentRedirect",d);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},33974,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={REDIRECT_ERROR_CODE:function(){return g},isRedirectError:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(29014),g="NEXT_REDIRECT";function h(a){if("object"!=typeof a||null===a||!("digest"in a)||"string"!=typeof a.digest)return!1;let b=a.digest.split(";"),[c,d]=b,e=b.slice(2,-2).join(";"),h=Number(b.at(-2));return c===g&&("replace"===d||"push"===d)&&"string"==typeof e&&!isNaN(h)&&h in f.RedirectStatusCode}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},24998,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={getRedirectError:function(){return i},getRedirectStatusCodeFromError:function(){return n},getRedirectTypeFromError:function(){return m},getURLFromRedirectError:function(){return l},permanentRedirect:function(){return k},redirect:function(){return j}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(29014),g=a.r(33974),h=a.r(20635).actionAsyncStorage;function i(a,b,c=f.RedirectStatusCode.TemporaryRedirect){let d=Object.defineProperty(Error(g.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return d.digest=`${g.REDIRECT_ERROR_CODE};${b};${a};${c};`,d}function j(a,b){throw i(a,b??=h?.getStore()?.isAction?"push":"replace",f.RedirectStatusCode.TemporaryRedirect)}function k(a,b="replace"){throw i(a,b,f.RedirectStatusCode.PermanentRedirect)}function l(a){return(0,g.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function m(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function n(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},62171,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={HTTPAccessErrorStatus:function(){return f},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return h},getAccessFallbackErrorTypeByStatus:function(){return k},getAccessFallbackHTTPStatus:function(){return j},isHTTPAccessFallbackError:function(){return i}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},g=new Set(Object.values(f)),h="NEXT_HTTP_ERROR_FALLBACK";function i(a){if("object"!=typeof a||null===a||!("digest"in a)||"string"!=typeof a.digest)return!1;let[b,c]=a.digest.split(";");return b===h&&g.has(Number(c))}function j(a){return Number(a.digest.split(";")[1])}function k(a){switch(a){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},23285,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"notFound",{enumerable:!0,get:function(){return f}});let d=a.r(62171),e=`${d.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;function f(){let a=Object.defineProperty(Error(e),"__NEXT_ERROR_CODE",{value:"E1041",enumerable:!1,configurable:!0});throw a.digest=e,a}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},87023,(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"forbidden",{enumerable:!0,get:function(){return d}}),a.r(62171).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},53376,(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"unauthorized",{enumerable:!0,get:function(){return d}}),a.r(62171).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},61852,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"isPostpone",{enumerable:!0,get:function(){return e}});let d=Symbol.for("react.postpone");function e(a){return"object"==typeof a&&null!==a&&a.$$typeof===d}},96205,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"isNextRouterError",{enumerable:!0,get:function(){return f}});let d=a.r(62171),e=a.r(33974);function f(a){return(0,e.isRedirectError)(a)||(0,d.isHTTPAccessFallbackError)(a)}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},39651,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b)||(0,h.isPrerenderInterruptedError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=a.r(30877),e=a.r(61852),f=a.r(26236),g=a.r(96205),h=a.r(97965),i=a.r(34421);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},13422,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=a.r(39651).unstable_rethrow;("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},72386,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={ReadonlyURLSearchParams:function(){return f.ReadonlyURLSearchParams},RedirectType:function(){return m},forbidden:function(){return i.forbidden},notFound:function(){return h.notFound},permanentRedirect:function(){return g.permanentRedirect},redirect:function(){return g.redirect},unauthorized:function(){return j.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return k.unstable_rethrow}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(2860),g=a.r(24998),h=a.r(23285),i=a.r(87023),j=a.r(53376),k=a.r(13422);function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}let m={push:"push",replace:"replace"};("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},60504,a=>{"use strict";a.i(72386),a.s([])},57715,a=>{"use strict";a.s(["ParallelRunsStrip",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call ParallelRunsStrip() from the server but ParallelRunsStrip is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/parallel-runs-strip.tsx <module evaluation>","ParallelRunsStrip")},37218,a=>{"use strict";a.s(["ParallelRunsStrip",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call ParallelRunsStrip() from the server but ParallelRunsStrip is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/parallel-runs-strip.tsx","ParallelRunsStrip")},36770,a=>{"use strict";a.i(57715);var b=a.i(37218);a.n(b)},1632,a=>{"use strict";var b=a.i(21943);a.i(60504);var c=a.i(72386),d=a.i(74719),e=a.i(67116),f=a.i(48024),g=a.i(4636),h=a.i(94045),i=a.i(36770),j=a.i(87067),k=a.i(21390);let l=(0,k.default)("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]),m=(0,k.default)("GitPullRequest",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["line",{x1:"6",x2:"6",y1:"9",y2:"21",key:"rroup"}]]);async function n({params:a}){let{slug:k}=await a,o=decodeURIComponent(k),p=(await (0,e.listSessions)()).filter(a=>(0,f.canonicalProjectName)(a.projectName)===o);if(0===p.length)return(0,c.notFound)();let q=(0,f.detectParallelRuns)(p,2),r=p.slice(0,50),s=await Promise.all(r.map(a=>(0,e.getSession)(a.id))),t=s.filter(a=>!!a).flatMap(a=>(0,f.detectPrMarkers)(a)),u=s.filter(a=>!!a).reduce((a,b)=>a+(0,f.sessionAirTimeMs)(b.events),0);return(0,b.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:28,maxWidth:1280,padding:"32px 40px"},children:[(0,b.jsx)("div",{style:{fontSize:12,color:"var(--af-text-tertiary)"},children:(0,b.jsxs)(d.default,{href:"/projects",style:{color:"var(--af-text-tertiary)",display:"inline-flex",alignItems:"center",gap:4},children:[(0,b.jsx)(l,{size:12})," Projects"]})}),(0,b.jsxs)("header",{children:[(0,b.jsx)("h1",{style:{fontSize:26,fontWeight:700,letterSpacing:"-0.02em",margin:0},children:(0,j.prettyProjectName)(o)}),(0,b.jsx)("p",{style:{fontSize:12,color:"var(--af-text-tertiary)",marginTop:4,fontFamily:"var(--font-mono)"},children:o})]}),(0,b.jsx)(g.DashboardView,{sessions:p,override:{activeTimeMs:u||void 0,extraCards:(0,b.jsx)(h.MetricCard,{label:"PRs shipped",value:String(t.length),sub:t.length>0?`${r.length} sessions scanned`:"scanned recent 50",icon:(0,b.jsx)(m,{size:13}),tooltip:"PRs detected by scanning for `gh pr create` Bash commands in session transcripts. Only the most recent 50 sessions are scanned."})}}),(0,b.jsxs)("section",{style:{display:"grid",gridTemplateColumns:t.length>0&&q.length>0?"1fr 1fr":"1fr",gap:16},children:[t.length>0&&(0,b.jsxs)("div",{className:"af-panel",children:[(0,b.jsxs)("div",{className:"af-panel-header",children:[(0,b.jsx)("span",{children:"Pull requests shipped"}),(0,b.jsx)("span",{style:{fontSize:11,color:"var(--af-text-tertiary)",fontWeight:400},children:"detected from `gh pr create` calls"})]}),(0,b.jsx)("div",{style:{padding:14,display:"flex",flexDirection:"column",gap:6},children:t.sort((a,b)=>Date.parse(b.timestamp)-Date.parse(a.timestamp)).slice(0,25).map((a,c)=>(0,b.jsxs)(d.default,{href:`/sessions/${a.sessionId}`,style:{display:"grid",gridTemplateColumns:"100px 1fr 70px",gap:10,padding:"10px 14px",border:"1px solid var(--af-border-subtle)",borderRadius:8,background:"var(--af-surface-hover)",fontSize:12,alignItems:"center"},children:[(0,b.jsx)("div",{style:{fontSize:11,color:"var(--af-text-secondary)",fontFamily:"var(--font-mono)"},children:(0,j.formatRelative)(a.timestamp)}),(0,b.jsx)("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--af-text)"},title:a.command,children:a.title??a.command.replace(/^gh pr create /,"").slice(0,120)}),(0,b.jsx)("div",{style:{fontSize:10,color:"var(--af-text-tertiary)",fontFamily:"var(--font-mono)",textAlign:"right"},children:void 0!==a.positionInSession?`${Math.round(100*a.positionInSession)}% in`:"—"})]},c))})]}),q.length>0&&(0,b.jsxs)("div",{className:"af-panel",children:[(0,b.jsxs)("div",{className:"af-panel-header",children:[(0,b.jsx)("span",{children:"Parallel runs"}),(0,b.jsx)("span",{style:{fontSize:11,color:"var(--af-text-tertiary)",fontWeight:400},children:"≥ 2 concurrent sessions"})]}),(0,b.jsx)("div",{style:{padding:14},children:(0,b.jsx)(i.ParallelRunsStrip,{runs:q,sessions:p})})]})]}),(0,b.jsxs)("div",{className:"af-panel",children:[(0,b.jsxs)("div",{className:"af-panel-header",children:[(0,b.jsx)("span",{children:"Sessions"}),(0,b.jsx)("span",{style:{fontSize:11,color:"var(--af-text-tertiary)",fontWeight:400},children:"newest first"})]}),(0,b.jsx)("div",{children:p.map(a=>(0,b.jsxs)(d.default,{href:`/sessions/${a.id}`,style:{display:"grid",gridTemplateColumns:"100px 1fr 90px 90px",gap:14,padding:"12px 18px",fontSize:12,borderBottom:"1px solid var(--af-border-subtle)",alignItems:"center"},children:[(0,b.jsxs)("div",{style:{fontFamily:"var(--font-mono)",fontSize:11,color:"var(--af-text-tertiary)"},children:["sesn_",(0,j.shortId)(a.id)]}),(0,b.jsx)("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--af-text)"},children:a.firstUserPreview||(0,b.jsx)("em",{style:{color:"var(--af-text-tertiary)"},children:"(no user message)"})}),(0,b.jsx)("div",{style:{fontSize:11,color:"var(--af-text-tertiary)",fontFamily:"var(--font-mono)",textAlign:"right"},title:"Agent time (filters out idle gaps)",children:(0,j.formatDuration)(a.airTimeMs??a.durationMs)}),(0,b.jsx)("div",{style:{fontSize:10,color:"var(--af-text-tertiary)",textAlign:"right"},children:a.firstTimestamp?(0,j.formatRelative)(a.firstTimestamp):"—"})]},`${a.projectDir}/${a.id}`))})]})]})}a.s(["default",0,n,"dynamic",0,"force-dynamic"],1632)},35416,a=>{a.n(a.i(1632))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__10tl2-f._.js.map
@@ -1,12 +0,0 @@
1
- module.exports=[21390,a=>{"use strict";var b=a.i(49382);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim();var d={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let e=(0,b.forwardRef)(({color:a="currentColor",size:e=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...d,width:e,height:e,stroke:a,strokeWidth:g?24*Number(f)/Number(e):f,className:c("lucide",h),...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]]));a.s(["default",0,(a,d)=>{let f=(0,b.forwardRef)(({className:f,...g},h)=>(0,b.createElement)(e,{ref:h,iconNode:d,className:c(`lucide-${a.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,f),...g}));return f.displayName=`${a}`,f}],21390)},83885,a=>{"use strict";a.s(["Heatmap",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call Heatmap() from the server but Heatmap is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/heatmap.tsx <module evaluation>","Heatmap")},44467,a=>{"use strict";a.s(["Heatmap",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call Heatmap() from the server but Heatmap is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/heatmap.tsx","Heatmap")},54572,a=>{"use strict";a.i(83885);var b=a.i(44467);a.n(b)},70301,a=>{"use strict";a.s(["ActivityChart",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call ActivityChart() from the server but ActivityChart is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/activity-chart.tsx <module evaluation>","ActivityChart")},37964,a=>{"use strict";a.s(["ActivityChart",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call ActivityChart() from the server but ActivityChart is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/activity-chart.tsx","ActivityChart")},37707,a=>{"use strict";a.i(70301);var b=a.i(37964);a.n(b)},25581,a=>{"use strict";a.s(["MetricCard",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call MetricCard() from the server but MetricCard is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/metric-card.tsx <module evaluation>","MetricCard")},77267,a=>{"use strict";a.s(["MetricCard",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call MetricCard() from the server but MetricCard is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/metric-card.tsx","MetricCard")},94045,a=>{"use strict";a.i(25581);var b=a.i(77267);a.n(b)},4636,87067,a=>{"use strict";var b=a.i(21943),c=a.i(48024),d=a.i(54572),e=a.i(37707),f=a.i(94045);function g(a){return a<1e3?String(a):a<1e4?(a/1e3).toFixed(1)+"k":a<1e6?Math.round(a/1e3)+"k":a<1e7?(a/1e6).toFixed(2)+"M":(a/1e6).toFixed(1)+"M"}function h(a){if(void 0===a)return"—";if(a<1e3)return`${a}ms`;let b=Math.round(a/1e3);if(b<60)return`${b}s`;let c=Math.floor(b/60),d=b%60;if(c<60)return d?`${c}m ${d}s`:`${c}m`;let e=Math.floor(c/60),f=c%60;return f?`${e}h ${f}m`:`${e}h`}let i={input:1,output:5,cacheRead:.1,cacheWrite:1.25},j={input:3,output:15,cacheRead:.3,cacheWrite:3.75},k={input:5,output:25,cacheRead:.5,cacheWrite:6.25};function l(a){return a.reduce((a,b)=>{var c;let d;return a+(c=b.totalUsage,d=function(a){if(!a)return k;let b=a.toLowerCase();return b.includes("haiku")?i:b.includes("sonnet")?j:k}(b.model),c.input/1e6*d.input+c.output/1e6*d.output+c.cacheRead/1e6*d.cacheRead+c.cacheWrite/1e6*d.cacheWrite)},0)}function m(a){return a<.01?"<$0.01":a<1||a<100?`$${a.toFixed(2)}`:a<1e3?`$${a.toFixed(1)}`:`$${a.toLocaleString(void 0,{maximumFractionDigits:0})}`}a.s(["estimateCostMulti",0,l,"formatCost",0,m,"formatDuration",0,h,"formatRelative",0,function(a){let b=Date.parse(a);if(Number.isNaN(b))return a;let c=Math.round((Date.now()-b)/1e3);if(c<60)return`${c}s ago`;let d=Math.round(c/60);if(d<60)return`${d}m ago`;let e=Math.round(d/60);if(e<24)return`${e}h ago`;let f=Math.round(e/24);return`${f}d ago`},"formatTokens",0,g,"prettyProjectName",0,function(a,b=35){let c=a.split("/").filter(Boolean),d=c.lastIndexOf(".worktrees");if(d>0&&d<c.length-1){let a=c[d-1],e=c[d+1],f=`${a}/${e}`;return f.length<=b?f:"…"+f.slice(f.length-b+1)}let e=c.length>=2?`${c[c.length-2]}/${c[c.length-1]}`:c[c.length-1]??a;return e.length<=b?e:"…"+e.slice(e.length-b+1)},"shortId",0,function(a){return a.length<=10?a:a.slice(0,6)+"…"+a.slice(-4)}],87067);var n=a.i(21390);let o=(0,n.default)("ListTree",[["path",{d:"M21 12h-8",key:"1bmf0i"}],["path",{d:"M21 6H8",key:"1pqkrb"}],["path",{d:"M21 18h-8",key:"1tm79t"}],["path",{d:"M3 6v4c0 1.1.9 2 2 2h3",key:"1ywdgy"}],["path",{d:"M3 10v6c0 1.1.9 2 2 2h3",key:"2wc746"}]]),p=(0,n.default)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]),q=(0,n.default)("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),r=(0,n.default)("DollarSign",[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]]);function s({line1:a,line2:c}){return(0,b.jsxs)("div",{style:{lineHeight:1.4},children:[(0,b.jsx)("div",{children:a}),(0,b.jsx)("div",{style:{color:"var(--af-text-tertiary)"},children:c})]})}function t(a){return a<1e3?String(a):a<1e6?(a/1e3).toFixed(1)+"k":(a/1e6).toFixed(1)+"M"}function u(a){return a<1e3?String(a):a<1e6?(a/1e3).toFixed(1)+"k":a<1e9?(a/1e6).toFixed(1)+"M":(a/1e9).toFixed(1)+"B"}a.s(["DashboardView",0,function({sessions:a,override:i}){let j=(0,c.highLevelMetrics)(a),k=(0,c.dailyActivity)(a),n=(0,c.summarizeBursts)((0,c.computeBurstsFromSessions)(a)),v=j.totalTokens.input+j.totalTokens.cacheRead+j.totalTokens.cacheWrite,w=i?.activeTimeMs??j.totalAirTimeMs,x=k.filter(a=>a.airTimeMs>0).length;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("section",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))",gap:12},children:[(0,b.jsx)(f.MetricCard,{label:"Sessions",value:j.sessionCount.toLocaleString(),sub:(0,b.jsx)(s,{line1:`${j.totalTurns.toLocaleString()} turns`,line2:`avg ${j.sessionCount?Math.round(j.totalTurns/j.sessionCount):0} / session`}),icon:(0,b.jsx)(o,{size:13}),tooltip:"Total Claude Code sessions (one JSONL file = one session). A 'turn' is one user message that starts an agent response cycle."}),(0,b.jsx)(f.MetricCard,{label:"Agent time",value:h(w),sub:x>0?(0,b.jsx)(s,{line1:`${h(w/x)} / day`,line2:`${x} active days`}):"no activity",icon:(0,b.jsx)(p,{size:13}),tooltip:"Sum of time the Claude agent was actively working across all sessions. Gaps longer than 3 minutes (user away, laptop lid closed) are excluded. This is NOT wall-clock duration. Per-day average is across days with any agent activity."}),(0,b.jsx)(f.MetricCard,{label:"Tool calls",value:j.totalToolCalls.toLocaleString(),sub:(0,b.jsx)(s,{line1:`avg ${j.sessionCount?Math.round(j.totalToolCalls/j.sessionCount):0} / session`,line2:`across ${j.sessionCount.toLocaleString()} sessions`}),icon:(0,b.jsx)(q,{size:13}),tooltip:"Total tool invocations (Bash, Read, Edit, Write, Grep, Glob, Agent, etc.) across all sessions."}),(0,b.jsx)(f.MetricCard,{label:"Parallelism",value:n.burstCount>0?h(n.totalParallelMs):"—",sub:n.burstCount>0?(0,b.jsx)(s,{line1:`peak \xd7${n.peakConcurrent}`,line2:`${Math.round(n.totalParallelMs/Math.max(1,w)*100)}% of active time`}):"no sustained parallelism",tooltip:`Total time ≥2 agents were working in parallel, with peak concurrency as the highest count in any single burst.
2
-
3
- ${n.burstCount} burst${1===n.burstCount?"":"s"} \xb7 ${n.crossProjectBurstCount} spanned multiple projects.`}),(0,b.jsx)(f.MetricCard,{label:"Code changes",value:(0,b.jsxs)("span",{children:[(0,b.jsxs)("span",{style:{color:"var(--af-success)"},children:["+",t(j.totalLinesAdded)]})," ",(0,b.jsxs)("span",{style:{color:"var(--af-danger)"},children:["-",t(j.totalLinesRemoved)]})]}),sub:(0,b.jsx)(s,{line1:`${j.totalFilesEdited.toLocaleString()} files touched`,line2:`${t(j.totalLinesAdded+j.totalLinesRemoved)} total lines`}),tooltip:`Total lines added and removed across all Edit + Write tool calls.
4
- +${j.totalLinesAdded.toLocaleString()} added
5
- -${j.totalLinesRemoved.toLocaleString()} removed
6
- ${j.totalFilesEdited.toLocaleString()} unique files touched`}),(0,b.jsx)(f.MetricCard,{label:"Est. cost",value:m(l(a)),sub:(0,b.jsx)(s,{line1:`${u(v)} in`,line2:`${u(j.totalTokens.output)} out`}),icon:(0,b.jsx)(r,{size:13}),tooltip:`Estimated API spend priced per-model across all sessions.
7
- Input: ${g(j.totalTokens.input)}
8
- Output: ${g(j.totalTokens.output)}
9
- Cache read: ${g(j.totalTokens.cacheRead)}
10
- Cache write: ${g(j.totalTokens.cacheWrite)}`}),i?.extraCards]}),(0,b.jsxs)("section",{style:{display:"grid",gridTemplateColumns:"1fr 2fr",gap:16},children:[(0,b.jsxs)("div",{className:"af-panel",style:{display:"flex",flexDirection:"column"},children:[(0,b.jsxs)("div",{className:"af-panel-header",children:[(0,b.jsx)("span",{children:"Contribution heatmap"}),(0,b.jsx)("span",{style:{fontSize:11,color:"var(--af-text-tertiary)",fontWeight:400},children:"sessions / day"})]}),(0,b.jsx)("div",{style:{padding:18,flex:1,display:"flex",alignItems:"center",justifyContent:"center"},children:(0,b.jsx)(d.Heatmap,{buckets:k,valueKey:"sessions"})})]}),(0,b.jsxs)("div",{className:"af-panel",children:[(0,b.jsxs)("div",{className:"af-panel-header",children:[(0,b.jsx)("span",{children:"Daily activity"}),(0,b.jsx)("span",{style:{fontSize:11,color:"var(--af-text-tertiary)",fontWeight:400},children:"click a metric to switch"})]}),(0,b.jsx)("div",{style:{padding:18},children:(0,b.jsx)(e.ActivityChart,{buckets:k})})]})]})]})}],4636)},54508,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},52056,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(42701);a.n(d("[project]/node_modules/.pnpm/next@16.2.2_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/app-dir/link.js <module evaluation>"))},2815,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(42701);a.n(d("[project]/node_modules/.pnpm/next@16.2.2_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/app-dir/link.js"))},74967,a=>{"use strict";a.i(52056);var b=a.i(2815);a.n(b)},74719,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return i},useLinkStatus:function(){return h.useLinkStatus}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(54508),g=a.r(21943),h=f._(a.r(74967));function i(a){let b=a.legacyBehavior,c="string"==typeof a.children||"number"==typeof a.children||"string"==typeof a.children?.type,d=a.children?.type?.$$typeof===Symbol.for("react.client.reference");return!b||c||d||(a.children?.type?.$$typeof===Symbol.for("react.lazy")?console.error("Using a Lazy Component as a direct child of `<Link legacyBehavior>` from a Server Component is not supported. If you need legacyBehavior, wrap your Lazy Component in a Client Component that renders the Link's `<a>` tag."):console.error("Using a Server Component as a direct child of `<Link legacyBehavior>` is not supported. If you need legacyBehavior, wrap your Server Component in a Client Component that renders the Link's `<a>` tag.")),(0,g.jsx)(h.default,{...a})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
11
-
12
- //# sourceMappingURL=_0c4zmjt._.js.map
@@ -1,12 +0,0 @@
1
- module.exports=[21390,a=>{"use strict";var b=a.i(49382);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim();var d={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let e=(0,b.forwardRef)(({color:a="currentColor",size:e=24,strokeWidth:f=2,absoluteStrokeWidth:g,className:h="",children:i,iconNode:j,...k},l)=>(0,b.createElement)("svg",{ref:l,...d,width:e,height:e,stroke:a,strokeWidth:g?24*Number(f)/Number(e):f,className:c("lucide",h),...k},[...j.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(i)?i:[i]]));a.s(["default",0,(a,d)=>{let f=(0,b.forwardRef)(({className:f,...g},h)=>(0,b.createElement)(e,{ref:h,iconNode:d,className:c(`lucide-${a.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,f),...g}));return f.displayName=`${a}`,f}],21390)},54508,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},52056,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(42701);a.n(d("[project]/node_modules/.pnpm/next@16.2.2_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/app-dir/link.js <module evaluation>"))},2815,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(42701);a.n(d("[project]/node_modules/.pnpm/next@16.2.2_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/app-dir/link.js"))},74967,a=>{"use strict";a.i(52056);var b=a.i(2815);a.n(b)},74719,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return i},useLinkStatus:function(){return h.useLinkStatus}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(54508),g=a.r(21943),h=f._(a.r(74967));function i(a){let b=a.legacyBehavior,c="string"==typeof a.children||"number"==typeof a.children||"string"==typeof a.children?.type,d=a.children?.type?.$$typeof===Symbol.for("react.client.reference");return!b||c||d||(a.children?.type?.$$typeof===Symbol.for("react.lazy")?console.error("Using a Lazy Component as a direct child of `<Link legacyBehavior>` from a Server Component is not supported. If you need legacyBehavior, wrap your Lazy Component in a Client Component that renders the Link's `<a>` tag."):console.error("Using a Server Component as a direct child of `<Link legacyBehavior>` is not supported. If you need legacyBehavior, wrap your Server Component in a Client Component that renders the Link's `<a>` tag.")),(0,g.jsx)(h.default,{...a})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},83885,a=>{"use strict";a.s(["Heatmap",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call Heatmap() from the server but Heatmap is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/heatmap.tsx <module evaluation>","Heatmap")},44467,a=>{"use strict";a.s(["Heatmap",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call Heatmap() from the server but Heatmap is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/heatmap.tsx","Heatmap")},54572,a=>{"use strict";a.i(83885);var b=a.i(44467);a.n(b)},70301,a=>{"use strict";a.s(["ActivityChart",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call ActivityChart() from the server but ActivityChart is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/activity-chart.tsx <module evaluation>","ActivityChart")},37964,a=>{"use strict";a.s(["ActivityChart",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call ActivityChart() from the server but ActivityChart is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/activity-chart.tsx","ActivityChart")},37707,a=>{"use strict";a.i(70301);var b=a.i(37964);a.n(b)},25581,a=>{"use strict";a.s(["MetricCard",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call MetricCard() from the server but MetricCard is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/metric-card.tsx <module evaluation>","MetricCard")},77267,a=>{"use strict";a.s(["MetricCard",()=>b]);let b=(0,a.i(42701).registerClientReference)(function(){throw Error("Attempted to call MetricCard() from the server but MetricCard is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/metric-card.tsx","MetricCard")},94045,a=>{"use strict";a.i(25581);var b=a.i(77267);a.n(b)},4636,87067,a=>{"use strict";var b=a.i(21943),c=a.i(48024),d=a.i(54572),e=a.i(37707),f=a.i(94045);function g(a){return a<1e3?String(a):a<1e4?(a/1e3).toFixed(1)+"k":a<1e6?Math.round(a/1e3)+"k":a<1e7?(a/1e6).toFixed(2)+"M":(a/1e6).toFixed(1)+"M"}function h(a){if(void 0===a)return"—";if(a<1e3)return`${a}ms`;let b=Math.round(a/1e3);if(b<60)return`${b}s`;let c=Math.floor(b/60),d=b%60;if(c<60)return d?`${c}m ${d}s`:`${c}m`;let e=Math.floor(c/60),f=c%60;return f?`${e}h ${f}m`:`${e}h`}let i={input:1,output:5,cacheRead:.1,cacheWrite:1.25},j={input:3,output:15,cacheRead:.3,cacheWrite:3.75},k={input:5,output:25,cacheRead:.5,cacheWrite:6.25};function l(a){return a.reduce((a,b)=>{var c;let d;return a+(c=b.totalUsage,d=function(a){if(!a)return k;let b=a.toLowerCase();return b.includes("haiku")?i:b.includes("sonnet")?j:k}(b.model),c.input/1e6*d.input+c.output/1e6*d.output+c.cacheRead/1e6*d.cacheRead+c.cacheWrite/1e6*d.cacheWrite)},0)}function m(a){return a<.01?"<$0.01":a<1||a<100?`$${a.toFixed(2)}`:a<1e3?`$${a.toFixed(1)}`:`$${a.toLocaleString(void 0,{maximumFractionDigits:0})}`}a.s(["estimateCostMulti",0,l,"formatCost",0,m,"formatDuration",0,h,"formatRelative",0,function(a){let b=Date.parse(a);if(Number.isNaN(b))return a;let c=Math.round((Date.now()-b)/1e3);if(c<60)return`${c}s ago`;let d=Math.round(c/60);if(d<60)return`${d}m ago`;let e=Math.round(d/60);if(e<24)return`${e}h ago`;let f=Math.round(e/24);return`${f}d ago`},"formatTokens",0,g,"prettyProjectName",0,function(a,b=35){let c=a.split("/").filter(Boolean),d=c.lastIndexOf(".worktrees");if(d>0&&d<c.length-1){let a=c[d-1],e=c[d+1],f=`${a}/${e}`;return f.length<=b?f:"…"+f.slice(f.length-b+1)}let e=c.length>=2?`${c[c.length-2]}/${c[c.length-1]}`:c[c.length-1]??a;return e.length<=b?e:"…"+e.slice(e.length-b+1)},"shortId",0,function(a){return a.length<=10?a:a.slice(0,6)+"…"+a.slice(-4)}],87067);var n=a.i(21390);let o=(0,n.default)("ListTree",[["path",{d:"M21 12h-8",key:"1bmf0i"}],["path",{d:"M21 6H8",key:"1pqkrb"}],["path",{d:"M21 18h-8",key:"1tm79t"}],["path",{d:"M3 6v4c0 1.1.9 2 2 2h3",key:"1ywdgy"}],["path",{d:"M3 10v6c0 1.1.9 2 2 2h3",key:"2wc746"}]]),p=(0,n.default)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]),q=(0,n.default)("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),r=(0,n.default)("DollarSign",[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]]);function s({line1:a,line2:c}){return(0,b.jsxs)("div",{style:{lineHeight:1.4},children:[(0,b.jsx)("div",{children:a}),(0,b.jsx)("div",{style:{color:"var(--af-text-tertiary)"},children:c})]})}function t(a){return a<1e3?String(a):a<1e6?(a/1e3).toFixed(1)+"k":(a/1e6).toFixed(1)+"M"}function u(a){return a<1e3?String(a):a<1e6?(a/1e3).toFixed(1)+"k":a<1e9?(a/1e6).toFixed(1)+"M":(a/1e9).toFixed(1)+"B"}a.s(["DashboardView",0,function({sessions:a,override:i}){let j=(0,c.highLevelMetrics)(a),k=(0,c.dailyActivity)(a),n=(0,c.summarizeBursts)((0,c.computeBurstsFromSessions)(a)),v=j.totalTokens.input+j.totalTokens.cacheRead+j.totalTokens.cacheWrite,w=i?.activeTimeMs??j.totalAirTimeMs,x=k.filter(a=>a.airTimeMs>0).length;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("section",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))",gap:12},children:[(0,b.jsx)(f.MetricCard,{label:"Sessions",value:j.sessionCount.toLocaleString(),sub:(0,b.jsx)(s,{line1:`${j.totalTurns.toLocaleString()} turns`,line2:`avg ${j.sessionCount?Math.round(j.totalTurns/j.sessionCount):0} / session`}),icon:(0,b.jsx)(o,{size:13}),tooltip:"Total Claude Code sessions (one JSONL file = one session). A 'turn' is one user message that starts an agent response cycle."}),(0,b.jsx)(f.MetricCard,{label:"Agent time",value:h(w),sub:x>0?(0,b.jsx)(s,{line1:`${h(w/x)} / day`,line2:`${x} active days`}):"no activity",icon:(0,b.jsx)(p,{size:13}),tooltip:"Sum of time the Claude agent was actively working across all sessions. Gaps longer than 3 minutes (user away, laptop lid closed) are excluded. This is NOT wall-clock duration. Per-day average is across days with any agent activity."}),(0,b.jsx)(f.MetricCard,{label:"Tool calls",value:j.totalToolCalls.toLocaleString(),sub:(0,b.jsx)(s,{line1:`avg ${j.sessionCount?Math.round(j.totalToolCalls/j.sessionCount):0} / session`,line2:`across ${j.sessionCount.toLocaleString()} sessions`}),icon:(0,b.jsx)(q,{size:13}),tooltip:"Total tool invocations (Bash, Read, Edit, Write, Grep, Glob, Agent, etc.) across all sessions."}),(0,b.jsx)(f.MetricCard,{label:"Parallelism",value:n.burstCount>0?h(n.totalParallelMs):"—",sub:n.burstCount>0?(0,b.jsx)(s,{line1:`peak \xd7${n.peakConcurrent}`,line2:`${Math.round(n.totalParallelMs/Math.max(1,w)*100)}% of active time`}):"no sustained parallelism",tooltip:`Total time ≥2 agents were working in parallel, with peak concurrency as the highest count in any single burst.
2
-
3
- ${n.burstCount} burst${1===n.burstCount?"":"s"} \xb7 ${n.crossProjectBurstCount} spanned multiple projects.`}),(0,b.jsx)(f.MetricCard,{label:"Code changes",value:(0,b.jsxs)("span",{children:[(0,b.jsxs)("span",{style:{color:"var(--af-success)"},children:["+",t(j.totalLinesAdded)]})," ",(0,b.jsxs)("span",{style:{color:"var(--af-danger)"},children:["-",t(j.totalLinesRemoved)]})]}),sub:(0,b.jsx)(s,{line1:`${j.totalFilesEdited.toLocaleString()} files touched`,line2:`${t(j.totalLinesAdded+j.totalLinesRemoved)} total lines`}),tooltip:`Total lines added and removed across all Edit + Write tool calls.
4
- +${j.totalLinesAdded.toLocaleString()} added
5
- -${j.totalLinesRemoved.toLocaleString()} removed
6
- ${j.totalFilesEdited.toLocaleString()} unique files touched`}),(0,b.jsx)(f.MetricCard,{label:"Est. cost",value:m(l(a)),sub:(0,b.jsx)(s,{line1:`${u(v)} in`,line2:`${u(j.totalTokens.output)} out`}),icon:(0,b.jsx)(r,{size:13}),tooltip:`Estimated API spend priced per-model across all sessions.
7
- Input: ${g(j.totalTokens.input)}
8
- Output: ${g(j.totalTokens.output)}
9
- Cache read: ${g(j.totalTokens.cacheRead)}
10
- Cache write: ${g(j.totalTokens.cacheWrite)}`}),i?.extraCards]}),(0,b.jsxs)("section",{style:{display:"grid",gridTemplateColumns:"1fr 2fr",gap:16},children:[(0,b.jsxs)("div",{className:"af-panel",style:{display:"flex",flexDirection:"column"},children:[(0,b.jsxs)("div",{className:"af-panel-header",children:[(0,b.jsx)("span",{children:"Contribution heatmap"}),(0,b.jsx)("span",{style:{fontSize:11,color:"var(--af-text-tertiary)",fontWeight:400},children:"sessions / day"})]}),(0,b.jsx)("div",{style:{padding:18,flex:1,display:"flex",alignItems:"center",justifyContent:"center"},children:(0,b.jsx)(d.Heatmap,{buckets:k,valueKey:"sessions"})})]}),(0,b.jsxs)("div",{className:"af-panel",children:[(0,b.jsxs)("div",{className:"af-panel-header",children:[(0,b.jsx)("span",{children:"Daily activity"}),(0,b.jsx)("span",{style:{fontSize:11,color:"var(--af-text-tertiary)",fontWeight:400},children:"click a metric to switch"})]}),(0,b.jsx)("div",{style:{padding:18},children:(0,b.jsx)(e.ActivityChart,{buckets:k})})]})]})]})}],4636)}];
11
-
12
- //# sourceMappingURL=_0ev.8gk._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[89691,a=>{"use strict";var b=a.i(51990),c=a.i(19804);function d(a,b){if(a<=0||b<=0)return"var(--af-heatmap-0)";let c=Math.min(1,a/b),d=0;return c>.75?d=4:c>.5?d=3:c>.25?d=2:c>0&&(d=1),`var(--af-heatmap-${d})`}function e(a){let[b,c,d]=a.split("-").map(Number);return new Date(b,c-1,d)}function f(a){let b=a.getFullYear(),c=String(a.getMonth()+1).padStart(2,"0"),d=String(a.getDate()).padStart(2,"0");return`${b}-${c}-${d}`}function g(a){return{date:a,sessions:0,toolCalls:0,turns:0,airTimeMs:0,tokens:{input:0,output:0,cacheRead:0,cacheWrite:0},durationMs:0,peakParallelism:0}}a.s(["Heatmap",0,function({buckets:a,valueKey:h="sessions",cellSize:i=13,cellGap:j=3}){let[k,l]=(0,c.useState)(null),{weeks:m,max:n}=(0,c.useMemo)(()=>{if(0===a.length)return{weeks:[],max:0};let b=new Date(e(a[0].date));b.setDate(b.getDate()-b.getDay());let c=new Map(a.map(a=>[a.date,a])),d=[],i=[],j=new Date,k=e(a[a.length-1].date),l=k>j?k:j,m=0;for(let a=new Date(b);a<=l;a.setDate(a.getDate()+1)){let b=f(a),e=c.get(b)??g(b),j=e[h];j>m&&(m=j),i.push(e),7===i.length&&(d.push(i),i=[])}if(i.length>0){for(;i.length<7;)i.push(g(f(new Date)));d.push(i)}return{weeks:d,max:m}},[a,h]);if(0===a.length)return(0,b.jsx)("div",{style:{padding:"32px 12px",color:"var(--af-text-tertiary)",fontSize:12,textAlign:"center"},children:"No activity yet."});let o=m.length*(i+j)+24,p=7*(i+j)+18;return(0,b.jsxs)("div",{style:{position:"relative",overflowX:"auto"},children:[(0,b.jsxs)("svg",{width:o,height:p,style:{display:"block"},children:[(0,b.jsx)("g",{fontSize:9,fill:"var(--af-text-tertiary)",children:["Mon","Wed","Fri"].map((a,c)=>(0,b.jsx)("text",{x:0,y:18+(1+2*c)*(i+j)+i-3,children:a},a))}),(0,b.jsx)("g",{transform:"translate(24, 18)",children:m.map((a,c)=>a.map((a,e)=>{let f=a[h],g=d(f,n);return(0,b.jsx)("rect",{x:c*(i+j),y:e*(i+j),width:i,height:i,rx:2.5,ry:2.5,stroke:f>0?"rgba(255,255,255,0.04)":"transparent",onMouseEnter:b=>{let c=b.currentTarget.getBoundingClientRect();l({bucket:a,x:c.left+c.width/2,y:c.top-6})},onMouseLeave:()=>l(null),style:{cursor:f>0?"pointer":"default",fill:g}},`${c}-${e}`)}))})]}),(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginTop:6,fontSize:10,color:"var(--af-text-tertiary)",justifyContent:"flex-end"},children:[(0,b.jsx)("span",{children:"Less"}),[0,.25,.5,.75,1].map((a,c)=>(0,b.jsx)("span",{style:{width:11,height:11,borderRadius:2.5,background:d(Math.max(1,a*n),n),display:"inline-block"}},c)),(0,b.jsx)("span",{children:"More"})]}),k&&(0,b.jsxs)("div",{style:{position:"fixed",left:k.x,top:k.y,transform:"translate(-50%, -100%)",background:"var(--af-surface-elevated)",border:"1px solid var(--af-border-subtle)",borderRadius:6,padding:"6px 10px",fontSize:11,color:"var(--af-text)",whiteSpace:"nowrap",pointerEvents:"none",zIndex:100,boxShadow:"0 4px 12px rgba(0,0,0,0.3)"},children:[(0,b.jsx)("div",{style:{fontWeight:600},children:k.bucket.date}),(0,b.jsxs)("div",{style:{color:"var(--af-text-secondary)"},children:[k.bucket.sessions," session",1===k.bucket.sessions?"":"s",k.bucket.toolCalls>0&&` \xb7 ${k.bucket.toolCalls} tool calls`,k.bucket.peakParallelism>1&&` \xb7 peak \xd7${k.bucket.peakParallelism}`]})]})]})}])},52429,a=>{"use strict";var b=a.i(51990),c=a.i(19804);function d(a){if(a<1e3)return`${Math.round(a)}ms`;let b=Math.round(a/1e3);if(b<60)return`${b}s`;let c=Math.floor(b/60),d=b%60;if(c<60)return d?`${c}m ${d}s`:`${c}m`;let e=Math.floor(c/60),f=c%60;return f?`${e}h ${f}m`:`${e}h`}let e={airTime:{label:"Agent time",pluck:a=>a.airTimeMs,color:"rgba(45, 212, 191, 0.85)",unit:"ms"},sessions:{label:"Sessions",pluck:a=>a.sessions,color:"rgba(94, 234, 212, 0.85)"},toolCalls:{label:"Tool calls",pluck:a=>a.toolCalls,color:"rgba(167, 139, 250, 0.85)"},turns:{label:"Turns",pluck:a=>a.turns,color:"rgba(251, 191, 36, 0.85)"},input:{label:"Input tokens",pluck:a=>a.tokens.input,color:"rgba(52, 211, 153, 0.85)"},output:{label:"Output tokens",pluck:a=>a.tokens.output,color:"rgba(248, 113, 113, 0.85)"},cacheRead:{label:"Cache read",pluck:a=>a.tokens.cacheRead,color:"rgba(129, 104, 224, 0.85)"}};a.s(["ActivityChart",0,function({buckets:a,defaultMetric:f="sessions",height:g=160}){let[h,i]=(0,c.useState)(f),[j,k]=(0,c.useState)(null),l=e[h],{bars:m,maxVal:n}=(0,c.useMemo)(()=>{let b=0;return{bars:a.map(a=>{let c=l.pluck(a);return c>b&&(b=c),{bucket:a,value:c}}),maxVal:b}},[a,l]);if(0===a.length)return(0,b.jsx)("div",{style:{padding:"32px 12px",color:"var(--af-text-tertiary)",fontSize:12,textAlign:"center"},children:"No activity yet."});let o=Math.max(3,Math.floor((600-2*m.length)/Math.max(1,m.length))),p=48+Math.max(m.length*(o+2),600)+8,q=g-10-22;return(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{style:{display:"flex",gap:4,background:"var(--background)",borderRadius:7,padding:3,marginBottom:10},children:Object.keys(e).map(a=>(0,b.jsx)("button",{type:"button",onClick:()=>i(a),style:{fontSize:11,padding:"5px 10px",border:"none",borderRadius:5,background:h===a?"var(--af-surface-elevated)":"transparent",color:h===a?"var(--af-text)":"var(--af-text-tertiary)",fontWeight:500},children:e[a].label},a))}),(0,b.jsxs)("div",{style:{position:"relative",overflowX:"auto"},children:[j&&(0,b.jsxs)("div",{style:{position:"absolute",left:j.x,top:0,transform:"translateX(-50%)",background:"var(--af-surface-elevated)",border:"1px solid var(--af-border-subtle)",borderRadius:6,padding:"4px 8px",fontSize:11,color:"var(--af-text-secondary)",fontFamily:"var(--font-mono)",whiteSpace:"nowrap",pointerEvents:"none",zIndex:10,boxShadow:"0 2px 8px rgba(0,0,0,0.08)"},children:[j.bucket.date," ·"," ","ms"===l.unit?d(j.value):j.value.toLocaleString()]}),(0,b.jsxs)("svg",{width:p,height:g,style:{display:"block"},children:[(0,b.jsx)("g",{fontSize:10,fill:"var(--af-text-tertiary)",children:[0,.25,.5,.75,1].map(a=>{let c=10+(1-a)*q,e=n*a,f="ms"===l.unit?d(e):e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:Math.round(e).toString();return(0,b.jsxs)("g",{children:[(0,b.jsx)("line",{x1:48,x2:p-8,y1:c,y2:c,stroke:"var(--af-border-subtle)",strokeDasharray:0===a?void 0:"2 3"}),(0,b.jsx)("text",{x:42,y:c+3,textAnchor:"end",children:f})]},a)})}),m.map((a,c)=>{let d=n>0?a.value/n*q:0,e=48+c*(o+2),f=j?.bucket.date===a.bucket.date;return(0,b.jsxs)("g",{children:[(0,b.jsx)("rect",{x:e,y:10,width:o,height:q,fill:"transparent",onMouseEnter:()=>k({bucket:a.bucket,value:a.value,x:e+o/2}),onMouseLeave:()=>k(null)}),(0,b.jsx)("rect",{x:e,y:10+q-d,width:o,height:Math.max(.5,d),fill:f?"var(--af-accent)":l.color,rx:1.5*(o>=6),ry:1.5*(o>=6),style:{pointerEvents:"none"}})]},a.bucket.date)}),(0,b.jsx)("g",{fontSize:10,fill:"var(--af-text-tertiary)",children:m.map((a,c)=>{let d=a.bucket.date,e=0===c,f=c===m.length-1,h="01"===d.slice(-2),i=m.length>3&&m.length<=31&&c===Math.floor(m.length/2)&&!m.some(a=>"01"===a.bucket.date.slice(-2));if(!e&&!f&&!h&&!i)return null;let j=48+c*(o+2)+o/2,k=new Date(`${d}T00:00:00`).toLocaleDateString(void 0,{month:"short",day:"numeric"});return(0,b.jsx)("text",{x:e?48:f?p-8:j,y:g-6,textAnchor:e?"start":f?"end":"middle",children:k},d)})})]})]})]})}])},78338,a=>{"use strict";var b=a.i(51990),c=a.i(19804);let d=(0,a.i(5423).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"}]]);a.s(["MetricCard",0,function({label:a,value:e,sub:f,icon:g,tooltip:h}){let[i,j]=(0,c.useState)(!1);return(0,b.jsxs)("div",{className:"af-card",style:{padding:"16px 18px",position:"relative"},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,fontSize:11,color:"var(--af-text-tertiary)",textTransform:"uppercase",letterSpacing:"0.05em",fontWeight:600},children:[g,(0,b.jsx)("span",{children:a}),h&&(0,b.jsx)("span",{style:{marginLeft:"auto",cursor:"help",display:"inline-flex",color:"var(--af-text-tertiary)",opacity:.5,transition:"opacity 0.12s"},onMouseEnter:()=>j(!0),onMouseLeave:()=>j(!1),onClick:()=>j(a=>!a),children:(0,b.jsx)(d,{size:12})})]}),(0,b.jsx)("div",{style:{fontSize:22,fontWeight:700,marginTop:8,letterSpacing:"-0.02em",lineHeight:1.1},children:e}),f&&(0,b.jsx)("div",{style:{fontSize:11,color:"var(--af-text-secondary)",marginTop:4},children:f}),i&&h&&(0,b.jsx)("div",{style:{position:"absolute",top:"calc(100% + 6px)",left:0,right:0,zIndex:50,background:"#0F172A",color:"#F1F5F9",borderRadius:8,padding:"10px 12px",fontSize:11,lineHeight:1.5,boxShadow:"0 6px 24px rgba(15,23,42,0.22)",pointerEvents:"none"},children:h.split("\n").map((a,c)=>(0,b.jsx)("div",{children:a},c))})]})}],78338)},40720,a=>{"use strict";var b=a.i(51990),c=a.i(7471),d=a.i(3444);let e=["rgba(45, 212, 191, 0.80)","rgba(167, 139, 250, 0.80)","rgba(248, 113, 113, 0.80)","rgba(52, 211, 153, 0.80)","rgba(251, 191, 36, 0.80)","rgba(236, 72, 153, 0.80)","rgba(34, 211, 238, 0.80)","rgba(168, 85, 247, 0.80)"];function f(a){let b=0;for(let c=0;c<a.length;c++)b=(b<<5)-b+a.charCodeAt(c)|0;return e[Math.abs(b)%e.length]}function g(a){let b=new Date(a);return`${b.getHours().toString().padStart(2,"0")}:${b.getMinutes().toString().padStart(2,"0")}`}function h({sessions:a,rangeStart:c,rangeEnd:d,width:e=280}){let g=d-c;if(g<=0||0===a.length)return null;let i=18*a.length-2,j=a=>(a-c)/g*e;return(0,b.jsx)("svg",{width:e,height:i,style:{display:"block"},children:a.map((a,c)=>{let d=18*c,g=f(a.projectName);return(0,b.jsxs)("g",{children:[(0,b.jsx)("rect",{x:0,y:d,width:e,height:16,fill:"var(--af-border-subtle)",opacity:.25,rx:3}),a.segments.map((a,c)=>{let f=Math.max(0,j(a.startMs)),h=Math.max(Math.min(e,j(a.endMs))-f,2);return(0,b.jsx)("rect",{x:f,y:d+3,width:h,height:10,fill:g,rx:2},c)})]},a.id)})})}a.s(["ParallelRunsStrip",0,function({runs:a,sessions:e}){if(0===a.length)return(0,b.jsx)("div",{className:"af-empty",style:{padding:24,fontSize:12},children:"No parallel runs detected yet. Try running two sessions at once."});let i=new Map;for(let a of e)i.set(a.id,a);let j=[...a].sort((a,b)=>b.startMs-a.startMs).slice(0,10);return(0,b.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:j.map((a,e)=>{let j=a.endMs-a.startMs,k=a.startMs-18e5,l=a.endMs+18e5,m=[];for(let b of a.sessions){let a=i.get(b);if(!a)continue;let c=(a.activeSegments&&a.activeSegments.length>0?a.activeSegments:a.firstTimestamp&&a.lastTimestamp?[{startMs:Date.parse(a.firstTimestamp),endMs:Date.parse(a.lastTimestamp)}]:[]).map(a=>({startMs:Math.max(a.startMs,k),endMs:Math.min(a.endMs,l)})).filter(a=>a.endMs>a.startMs);0!==c.length&&m.push({id:a.id,projectName:a.projectName,segments:c,startMs:c[0].startMs,endMs:c[c.length-1].endMs,preview:a.firstUserPreview})}if(m.sort((a,b)=>a.startMs-b.startMs),0===m.length)return null;let n=1/0,o=-1/0;for(let a of m)for(let b of a.segments)b.startMs<n&&(n=b.startMs),b.endMs>o&&(o=b.endMs);return(0,b.jsxs)("div",{style:{border:"1px solid var(--af-border-subtle)",borderRadius:8,background:"var(--af-surface-hover)",overflow:"hidden"},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",fontSize:11},children:[(0,b.jsx)("span",{style:{color:"var(--af-text-secondary)"},children:new Date(a.startMs).toLocaleString(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}),(0,b.jsxs)("span",{className:"af-tag af-tag-accent",style:{fontFamily:"var(--font-mono)",fontSize:10},children:["×",a.peak," parallel"]}),(0,b.jsxs)("span",{style:{fontSize:10,color:"var(--af-text-tertiary)",fontFamily:"var(--font-mono)",marginLeft:"auto"},children:[g(n),"–",g(o)," · ",(0,d.formatDuration)(j)]})]}),(0,b.jsx)("div",{style:{padding:"4px 12px 10px"},children:(0,b.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"minmax(80px, 140px) 1fr",gap:"0 10px",alignItems:"start"},children:[(0,b.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:m.map(a=>(0,b.jsxs)(c.default,{href:`/sessions/${a.id}`,style:{height:16,display:"flex",alignItems:"center",gap:4,fontSize:9.5,color:"var(--af-text-secondary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",textDecoration:"none"},title:a.preview||(0,d.prettyProjectName)(a.projectName),children:[(0,b.jsx)("span",{style:{width:6,height:6,borderRadius:2,background:f(a.projectName),flexShrink:0}}),(0,b.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:(0,d.prettyProjectName)(a.projectName)})]},a.id))}),(0,b.jsx)(h,{sessions:m,rangeStart:n,rangeEnd:o})]})})]},e)})})}])}];
2
-
3
- //# sourceMappingURL=apps_web_components_033k_mm._.js.map
@@ -1,6 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,33261,(e,t,r)=>{t.exports=e.r(40806)},77379,e=>{"use strict";var t=e.i(7744);let r=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim();var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let a=(0,t.forwardRef)(({color:e="currentColor",size:a=24,strokeWidth:o=2,absoluteStrokeWidth:i,className:l="",children:s,iconNode:c,...u},d)=>(0,t.createElement)("svg",{ref:d,...n,width:a,height:a,stroke:e,strokeWidth:i?24*Number(o)/Number(a):o,className:r("lucide",l),...u},[...c.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(s)?s:[s]]));e.s(["default",0,(e,n)=>{let o=(0,t.forwardRef)(({className:o,...i},l)=>(0,t.createElement)(a,{ref:l,iconNode:n,className:r(`lucide-${e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,o),...i}));return o.displayName=`${e}`,o}],77379)},76268,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={assign:function(){return s},searchParamsToUrlQuery:function(){return o},urlQueryToSearchParams:function(){return l}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});function o(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function i(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function l(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,i(e));else t.set(r,i(n));return t}function s(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,n]of r.entries())e.append(t,n)}return e}},65576,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DecodeError:function(){return x},MiddlewareNotFoundError:function(){return w},MissingStaticPage:function(){return b},NormalizeError:function(){return m},PageNotFoundError:function(){return v},SP:function(){return g},ST:function(){return y},WEB_VITALS:function(){return o},execOnce:function(){return i},getDisplayName:function(){return d},getLocationOrigin:function(){return c},getURL:function(){return u},isAbsoluteUrl:function(){return s},isResSent:function(){return f},loadGetInitialProps:function(){return h},normalizeRepeatedSlashes:function(){return p},stringifyError:function(){return j}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=["CLS","FCP","FID","INP","LCP","TTFB"];function i(e){let t,r=!1;return(...n)=>(r||(r=!0,t=e(...n)),t)}let l=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,s=e=>l.test(e);function c(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function u(){let{href:e}=window.location,t=c();return e.substring(t.length)}function d(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function p(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function h(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await h(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&f(r))return n;if(!n)throw Object.defineProperty(Error(`"${d(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E1025",enumerable:!1,configurable:!0});return n}let g="u">typeof performance,y=g&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class x extends Error{}class m extends Error{}class v extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class b extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class w extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function j(e){return JSON.stringify({message:e.message,stack:e.stack})}},44182,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},32090,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return l},formatWithValidation:function(){return c},urlObjectKeys:function(){return s}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(44066)._(e.r(76268)),i=/https?|ftp|gopher|file/;function l(e){let{auth:t,hostname:r}=e,n=e.protocol||"",a=e.pathname||"",l=e.hash||"",s=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(c+=":"+e.port)),s&&"object"==typeof s&&(s=String(o.urlQueryToSearchParams(s)));let u=e.search||s&&`?${s}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||i.test(n))&&!1!==c?(c="//"+(c||""),a&&"/"!==a[0]&&(a="/"+a)):c||(c=""),l&&"#"!==l[0]&&(l="#"+l),u&&"?"!==u[0]&&(u="?"+u),a=a.replace(/[?#]/g,encodeURIComponent),u=u.replace("#","%23"),`${n}${c}${a}${u}${l}`}let s=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function c(e){return l(e)}},45856,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return a}});let n=e.r(7744);function a(e,t){let r=(0,n.useRef)(null),a=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=a.current;t&&(a.current=null,t())}else e&&(r.current=o(e,n)),t&&(a.current=o(t,n))},[e,t])}function o(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},87342,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return o}});let n=e.r(65576),a=e.r(18849);function o(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,a.hasBasePath)(r.pathname)}catch(e){return!1}}},79103,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},70682,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return x},useLinkStatus:function(){return v}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(44066),i=e.r(9735),l=o._(e.r(7744)),s=e.r(32090),c=e.r(38792),u=e.r(45856),d=e.r(65576),f=e.r(57334);e.r(44182);let p=e.r(91075),h=e.r(63430),g=e.r(87342),y=e.r(97456);function x(t){var r,n;let a,o,x,[v,b]=(0,l.useOptimistic)(h.IDLE_LINK_STATUS),w=(0,l.useRef)(null),{href:j,as:S,children:k,prefetch:M=null,passHref:$,replace:P,shallow:T,scroll:E,onClick:O,onMouseEnter:C,onTouchStart:R,legacyBehavior:z=!1,onNavigate:N,transitionTypes:_,ref:I,unstable_dynamicOnHover:D,...A}=t;a=k,z&&("string"==typeof a||"number"==typeof a)&&(a=(0,i.jsx)("a",{children:a}));let L=l.default.useContext(c.AppRouterContext),W=!1!==M,U=!1!==M?null===(n=M)||"auto"===n?y.FetchStrategy.PPR:y.FetchStrategy.Full:y.FetchStrategy.PPR,F="string"==typeof(r=S||j)?r:(0,s.formatUrl)(r);if(z){if(a?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});o=l.default.Children.only(a)}let B=z?o&&"object"==typeof o&&o.ref:I,H=l.default.useCallback(e=>(null!==L&&(w.current=(0,h.mountLinkInstance)(e,F,L,U,W,b)),()=>{w.current&&((0,h.unmountLinkForCurrentNavigation)(w.current),w.current=null),(0,h.unmountPrefetchableInstance)(e)}),[W,F,L,U,b]),q={ref:(0,u.useMergedRef)(H,B),onClick(t){z||"function"!=typeof O||O(t),z&&o.props&&"function"==typeof o.props.onClick&&o.props.onClick(t),!L||t.defaultPrevented||function(t,r,n,a,o,i,s){if("u">typeof window){let c,{nodeName:u}=t.currentTarget;if("A"===u.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,g.isLocalURL)(r)){a&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),i){let e=!1;if(i({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(86228);l.default.startTransition(()=>{d(r,a?"replace":"push",!1===o?p.ScrollBehavior.NoScroll:p.ScrollBehavior.Default,n.current,s)})}}(t,F,w,P,E,N,_)},onMouseEnter(e){z||"function"!=typeof C||C(e),z&&o.props&&"function"==typeof o.props.onMouseEnter&&o.props.onMouseEnter(e),L&&W&&(0,h.onNavigationIntent)(e.currentTarget,!0===D)},onTouchStart:function(e){z||"function"!=typeof R||R(e),z&&o.props&&"function"==typeof o.props.onTouchStart&&o.props.onTouchStart(e),L&&W&&(0,h.onNavigationIntent)(e.currentTarget,!0===D)}};return(0,d.isAbsoluteUrl)(F)?q.href=F:z&&!$&&("a"!==o.type||"href"in o.props)||(q.href=(0,f.addBasePath)(F)),x=z?l.default.cloneElement(o,q):(0,i.jsx)("a",{...A,...q,children:a}),(0,i.jsx)(m.Provider,{value:v,children:x})}e.r(79103);let m=(0,l.createContext)(h.IDLE_LINK_STATUS),v=()=>(0,l.useContext)(m);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},56324,e=>{"use strict";e.s(["formatDuration",0,function(e){if(void 0===e)return"—";if(e<1e3)return`${e}ms`;let t=Math.round(e/1e3);if(t<60)return`${t}s`;let r=Math.floor(t/60),n=t%60;if(r<60)return n?`${r}m ${n}s`:`${r}m`;let a=Math.floor(r/60),o=r%60;return o?`${a}h ${o}m`:`${a}h`},"formatGap",0,function(e){if(e<1e3)return`${e}ms`;let t=e/1e3;if(t<60)return`${t.toFixed(1)}s`;let r=Math.floor(t/60);if(r<60){let e=Math.round(t%60);return`${r}m ${e}s`}let n=Math.floor(r/60),a=r%60;if(n<24)return a?`${n}h ${a}m`:`${n}h`;let o=Math.floor(n/24),i=n%24;return i?`${o}d ${i}h`:`${o}d`},"formatOffset",0,function(e){if(void 0===e||e<0)return"—";let t=Math.floor(e/1e3),r=Math.floor(t/3600),n=String(Math.floor(t%3600/60)).padStart(2,"0"),a=String(t%60).padStart(2,"0");return`${r}:${n}:${a}`},"formatRelative",0,function(e){let t=Date.parse(e);if(Number.isNaN(t))return e;let r=Math.round((Date.now()-t)/1e3);if(r<60)return`${r}s ago`;let n=Math.round(r/60);if(n<60)return`${n}m ago`;let a=Math.round(n/60);if(a<24)return`${a}h ago`;let o=Math.round(a/24);return`${o}d ago`},"formatTokens",0,function(e){return e<1e3?String(e):e<1e4?(e/1e3).toFixed(1)+"k":e<1e6?Math.round(e/1e3)+"k":e<1e7?(e/1e6).toFixed(2)+"M":(e/1e6).toFixed(1)+"M"},"prettyProjectName",0,function(e,t=35){let r=e.split("/").filter(Boolean),n=r.lastIndexOf(".worktrees");if(n>0&&n<r.length-1){let e=r[n-1],a=r[n+1],o=`${e}/${a}`;return o.length<=t?o:"…"+o.slice(o.length-t+1)}let a=r.length>=2?`${r[r.length-2]}/${r[r.length-1]}`:r[r.length-1]??e;return a.length<=t?a:"…"+a.slice(a.length-t+1)},"shortId",0,function(e){return e.length<=10?e:e.slice(0,6)+"…"+e.slice(-4)}])},86619,e=>{"use strict";var t=e.i(7744);e.s(["usePersistentBoolean",0,function(e,r){let[n,a]=(0,t.useState)(r),[o,i]=(0,t.useState)(!1);return(0,t.useEffect)(()=>{try{let t=window.localStorage.getItem(e);"1"===t?a(!0):"0"===t&&a(!1)}catch{}i(!0)},[e]),(0,t.useEffect)(()=>{let t=t=>{let r=t.detail;r?.key===e&&"boolean"==typeof r.value&&a(r.value)},r=t=>{t.key===e&&("1"===t.newValue?a(!0):"0"===t.newValue&&a(!1))};return window.addEventListener("cclens:persistent-boolean",t),window.addEventListener("storage",r),()=>{window.removeEventListener("cclens:persistent-boolean",t),window.removeEventListener("storage",r)}},[e]),[n,(0,t.useCallback)(t=>{a(t);try{window.localStorage.setItem(e,t?"1":"0")}catch{}window.dispatchEvent(new CustomEvent("cclens:persistent-boolean",{detail:{key:e,value:t}}))},[e]),o]}])},1718,e=>{"use strict";let t=(0,e.i(77379).default)("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);e.s(["Search",0,t],1718)},86566,e=>{"use strict";var t=e.i(9735),r=e.i(70682),n=e.i(33261),a=e.i(7744),o=e.i(77379);let i=(0,o.default)("LayoutDashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]),l=(0,o.default)("ListTree",[["path",{d:"M21 12h-8",key:"1bmf0i"}],["path",{d:"M21 6H8",key:"1pqkrb"}],["path",{d:"M21 18h-8",key:"1tm79t"}],["path",{d:"M3 6v4c0 1.1.9 2 2 2h3",key:"1ywdgy"}],["path",{d:"M3 10v6c0 1.1.9 2 2 2h3",key:"2wc746"}]]),s=(0,o.default)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]),c=(0,o.default)("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]),u=(0,o.default)("Pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]),d=(0,o.default)("PinOff",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89",key:"znwnzq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11",key:"c9qhm2"}]]);var f=e.i(1718);let p=(0,o.default)("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]),h=(0,o.default)("Gauge",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);var g=e.i(56324);let y=(0,o.default)("Moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]),x=(0,o.default)("Sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]),m="claude-lens:theme";function v(e){if("u">typeof document){document.documentElement.setAttribute("data-theme",e);try{document.cookie=`claude-lens-theme=${e};path=/;max-age=31536000;samesite=lax`}catch{}}}function b(){let[e,r]=(0,a.useState)("dark"),[n,o]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let e=document.documentElement.getAttribute("data-theme");if("light"===e||"dark"===e)r(e);else{let e=function(){try{let e=window.localStorage.getItem(m);if("light"===e||"dark"===e)return e}catch{}return null}()??(window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark");r(e),v(e)}o(!0)},[]),(0,t.jsx)("button",{type:"button",onClick:()=>{let t="dark"===e?"light":"dark";r(t),v(t);try{window.localStorage.setItem(m,t)}catch{}},"aria-label":"dark"===e?"Switch to light mode":"Switch to dark mode",title:"dark"===e?"Switch to light mode":"Switch to dark mode",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:6,background:"transparent",border:"1px solid var(--af-border-subtle)",color:"var(--af-text-secondary)",cursor:"pointer",transition:"all 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="var(--af-surface-hover)",e.currentTarget.style.color="var(--af-text)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--af-text-secondary)"},children:n?"dark"===e?(0,t.jsx)(x,{size:14}):(0,t.jsx)(y,{size:14}):null})}var w=e.i(86619);function j({snapshot:e}){let n,a,[o,,i]=(0,w.usePersistentBoolean)("cclens:usage:show-sonnet",!1);if(!e)return(0,t.jsxs)("div",{style:{padding:"10px 16px 12px",borderTop:"1px solid var(--af-border-subtle)",fontSize:10,color:"var(--af-text-tertiary)",lineHeight:1.4},children:[(0,t.jsx)("div",{style:{textTransform:"uppercase",letterSpacing:"0.06em",fontWeight:600,marginBottom:4},children:"Usage"}),(0,t.jsxs)("div",{children:["Run ",(0,t.jsx)("code",{style:{fontFamily:"var(--font-mono)"},children:"cclens daemon start"})," to collect metrics."]})]});let l=[{label:"5h",window:e.five_hour},{label:"7d",window:e.seven_day}];return i&&o&&l.push({label:"Sonnet 7d",window:e.seven_day_sonnet}),(0,t.jsxs)(r.default,{href:"/usage",style:{display:"block",padding:"10px 16px 12px",borderTop:"1px solid var(--af-border-subtle)",textDecoration:"none",color:"inherit"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",fontSize:10,fontWeight:600,color:"var(--af-text-tertiary)",textTransform:"uppercase",letterSpacing:"0.06em",marginBottom:8},children:[(0,t.jsx)("span",{children:"Current usage"}),(0,t.jsx)("span",{suppressHydrationWarning:!0,style:{fontWeight:500,textTransform:"none",letterSpacing:0},children:(n=new Date(e.captured_at).getTime(),(a=Math.round((Date.now()-n)/1e3))<60?`${a}s ago`:a<3600?`${Math.floor(a/60)}m ago`:a<86400?`${Math.floor(a/3600)}h ago`:`${Math.floor(a/86400)}d ago`)})]}),(0,t.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:6},children:l.map(e=>(0,t.jsx)(S,{...e},e.label))})]})}function S({label:e,window:r}){let n=r?.utilization??null,a=null!==n,o=a?Math.max(0,Math.min(100,n)):0,i=o>=90?"var(--af-danger)":o>=70?"var(--af-warning)":"var(--af-success)";return(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:6,fontSize:10,color:"var(--af-text-secondary)",marginBottom:2,fontVariantNumeric:"tabular-nums"},children:[(0,t.jsx)("span",{children:e}),r?.resets_at&&(0,t.jsxs)("span",{suppressHydrationWarning:!0,style:{fontSize:9,color:"var(--af-text-tertiary)",flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["resets ",function(e){let t,r=Math.round((new Date(e).getTime()-Date.now())/1e3),n=Math.abs(r);if(n<60)t=`${n}s`;else if(n<3600)t=`${Math.floor(n/60)}m`;else if(n<86400){let e=Math.floor(n/3600),r=Math.floor(n%3600/60);t=r>0?`${e}h${r}m`:`${e}h`}else{let e=Math.floor(n/86400),r=Math.floor(n%86400/3600);t=r>0?`${e}d${r}h`:`${e}d`}return r<0?`${t} ago`:`in ${t}`}(r.resets_at)]}),(0,t.jsx)("span",{style:{fontWeight:600,color:"var(--af-text)",marginLeft:"auto"},children:a?`${o.toFixed(0)}%`:"—"})]}),(0,t.jsx)("div",{style:{height:4,background:"var(--af-border-subtle)",borderRadius:999,overflow:"hidden"},children:(0,t.jsx)("div",{style:{height:"100%",width:a?`${o}%`:"0%",background:i,borderRadius:999,transition:"width 0.24s ease"}})})]})}let k="claude-lens:pinned-projects:v1";function M({href:e,active:n,icon:a,trailing:o,children:i}){return(0,t.jsxs)(r.default,{href:e,style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",borderRadius:7,fontSize:13,fontWeight:500,color:n?"var(--af-accent)":"var(--af-text-secondary)",background:n?"var(--af-accent-subtle)":"transparent",transition:"all 0.12s"},children:[a,(0,t.jsx)("span",{style:{flex:1},children:i}),o&&(0,t.jsx)("span",{style:{fontSize:10,color:n?"var(--af-accent)":"var(--af-text-tertiary)",fontFamily:"var(--font-mono)"},children:o})]})}function $({label:e,items:n,pathname:a,isPinned:o,onTogglePin:i}){return 0===n.length?null:(0,t.jsxs)("div",{style:{marginTop:10},children:[(0,t.jsx)("div",{style:{fontSize:10,color:"var(--af-text-tertiary)",textTransform:"uppercase",letterSpacing:"0.06em",padding:"0 10px 6px",fontWeight:600},children:e}),(0,t.jsx)("div",{style:{display:"flex",flexDirection:"column"},children:n.map(e=>{let n=`/projects/${encodeURIComponent(e.projectDir)}`,l=a===n,s=(0,g.prettyProjectName)(e.projectName);return(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"5px 6px 5px 10px",borderRadius:6,background:l?"var(--af-accent-subtle)":"transparent",color:l?"var(--af-accent)":"var(--af-text-secondary)"},children:[(0,t.jsxs)(r.default,{href:n,style:{flex:1,minWidth:0,fontSize:12,color:"inherit",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",display:"flex",alignItems:"center",gap:5},title:(e.worktreeCount??0)>0?`${e.projectName} — ${e.worktreeCount} worktree${1===e.worktreeCount?"":"s"}`:e.projectName,children:[(0,t.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:s}),(e.worktreeCount??0)>0&&(0,t.jsxs)("span",{style:{fontSize:9,fontWeight:600,padding:"1px 5px",borderRadius:100,background:"rgba(167, 139, 250, 0.15)",color:"rgba(167, 139, 250, 1)",flexShrink:0},children:["+",e.worktreeCount," wt"]})]}),(0,t.jsx)("span",{style:{fontSize:10,color:"var(--af-text-tertiary)",fontFamily:"var(--font-mono)",marginLeft:4},children:e.sessionCount}),(0,t.jsx)("button",{type:"button",onClick:t=>{t.preventDefault(),t.stopPropagation(),i(e.projectDir)},"aria-label":o(e.projectDir)?"Unpin project":"Pin project",title:o(e.projectDir)?"Unpin":"Pin",style:{background:"transparent",border:"none",padding:3,borderRadius:4,color:o(e.projectDir)?"var(--af-accent)":"var(--af-text-tertiary)",display:"flex",alignItems:"center"},children:o(e.projectDir)?(0,t.jsx)(d,{size:12}):(0,t.jsx)(u,{size:12})}),e.lastActiveMs&&(0,t.jsx)("span",{style:{fontSize:9,color:"var(--af-text-tertiary)",marginLeft:2,minWidth:32,textAlign:"right"},title:new Date(e.lastActiveMs).toISOString(),suppressHydrationWarning:!0,children:(0,g.formatRelative)(new Date(e.lastActiveMs).toISOString())})]},e.projectDir)})})]})}e.s(["Sidebar",0,function({projects:e,totalSessions:r,currentUsage:o}){let u=(0,n.usePathname)(),[d,g]=(0,a.useState)(new Set),[y,x]=(0,a.useState)(!1),[m,v]=(0,a.useState)("");(0,a.useEffect)(()=>{g(function(){try{let e=window.localStorage.getItem(k);if(!e)return new Set;let t=JSON.parse(e);return new Set(Array.isArray(t)?t:[])}catch{return new Set}}()),x(!0)},[]);let w=e=>{g(t=>{let r=new Set(t);r.has(e)?r.delete(e):r.add(e);try{window.localStorage.setItem(k,JSON.stringify(Array.from(r)))}catch{}return r})},S=(0,a.useMemo)(()=>{if(!m.trim())return e;let t=m.toLowerCase();return e.filter(e=>e.projectName.toLowerCase().includes(t))},[e,m]),P=S.filter(e=>d.has(e.projectDir)),T=S.filter(e=>!d.has(e.projectDir));return(0,t.jsxs)("aside",{style:{width:260,flexShrink:0,borderRight:"1px solid var(--af-border-subtle)",background:"var(--af-surface)",display:"flex",flexDirection:"column",position:"sticky",top:0,height:"100vh"},children:[(0,t.jsx)("div",{style:{padding:"18px 20px 12px",borderBottom:"1px solid var(--af-border-subtle)"},children:(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[(0,t.jsx)("div",{style:{width:28,height:28,borderRadius:7,background:"var(--af-accent-subtle)",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--af-accent)"},children:(0,t.jsx)(p,{size:16,strokeWidth:2.25})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{style:{fontSize:14,fontWeight:700,letterSpacing:"-0.01em"},children:"Claude Lens"}),(0,t.jsx)("div",{style:{fontSize:11,color:"var(--af-text-tertiary)"},children:"local dashboard"})]})]})}),(0,t.jsxs)("nav",{style:{padding:"10px 10px 6px",display:"flex",flexDirection:"column",gap:2},children:[(0,t.jsx)(M,{href:"/",active:"/"===u,icon:(0,t.jsx)(i,{size:15}),children:"Overview"}),(0,t.jsx)(M,{href:"/sessions",active:"/sessions"===u||u.startsWith("/sessions/"),icon:(0,t.jsx)(l,{size:15}),trailing:r>0?String(r):void 0,children:"All sessions"}),(0,t.jsx)(M,{href:"/projects",active:"/projects"===u,icon:(0,t.jsx)(s,{size:15}),trailing:e.length>0?String(e.length):void 0,children:"Projects"}),(0,t.jsx)(M,{href:"/parallelism",active:"/parallelism"===u,icon:(0,t.jsx)(c,{size:15}),children:"Timeline"}),(0,t.jsx)(M,{href:"/usage",active:"/usage"===u,icon:(0,t.jsx)(h,{size:15}),children:"Usage"})]}),(0,t.jsxs)("div",{style:{margin:"0 14px",padding:"8px 0",borderTop:"1px solid var(--af-border-subtle)",borderBottom:"1px solid var(--af-border-subtle)",display:"flex",alignItems:"center",gap:6},children:[(0,t.jsx)(f.Search,{size:13,color:"var(--af-text-tertiary)"}),(0,t.jsx)("input",{type:"text",placeholder:"Search projects",value:m,onChange:e=>v(e.target.value),style:{flex:1,background:"transparent",border:"none",padding:"4px 0",fontSize:12,color:"var(--af-text)"}})]}),(0,t.jsxs)("div",{style:{flex:1,overflow:"auto",padding:"4px 8px 20px"},children:[y&&P.length>0&&(0,t.jsx)($,{label:"Pinned",items:P,pathname:u,isPinned:e=>d.has(e),onTogglePin:w}),(0,t.jsx)($,{label:"Projects",items:T,pathname:u,isPinned:e=>d.has(e),onTogglePin:w})]}),(0,t.jsx)(j,{snapshot:o}),(0,t.jsxs)("div",{style:{padding:"10px 16px 10px 20px",fontSize:10,color:"var(--af-text-tertiary)",borderTop:"1px solid var(--af-border-subtle)",display:"flex",alignItems:"center",gap:8},children:[(0,t.jsxs)("span",{style:{flex:1,minWidth:0},children:[r," sessions · ",e.length," projects"]}),(0,t.jsx)(b,{})]})]})}],86566)},51878,e=>{"use strict";var t=e.i(33261),r=e.i(7744);e.s(["LiveRefresher",0,function(){var e;let n,a=(0,t.useRouter)(),o=(0,r.useRef)(null),i=(0,r.useRef)({session:0,usage:0});return e=(0,r.useCallback)(e=>{let t="usage-updated"===e.type?"usage":"session";e.mtimeMs<=(i.current[t]??0)||(i.current[t]=e.mtimeMs,o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{a.refresh()},400))},[a]),n=(0,r.useRef)(e),(0,r.useEffect)(()=>{n.current=e},[e]),(0,r.useEffect)(()=>{let e=new EventSource("/api/events");return e.onmessage=e=>{try{let t=JSON.parse(e.data);("session-updated"===t.type||"usage-updated"===t.type)&&n.current(t)}catch{}},e.onerror=()=>{},()=>{e.close()}},[]),(0,r.useEffect)(()=>()=>{o.current&&clearTimeout(o.current)},[]),null}],51878)},23884,e=>{"use strict";var t=e.i(9735),r=e.i(7744),n=e.i(33261),a=e.i(70682),o=e.i(56324);let i="cclens-live-widget-expanded";e.s(["LiveSessionsWidget",0,function({sessions:e}){let l=(0,n.usePathname)(),[s,c]=(0,r.useState)(()=>Date.now()),[u,d]=(0,r.useState)(!1);if((0,r.useEffect)(()=>{try{let e=localStorage.getItem(i);null!==e&&d("true"===e)}catch{}},[]),(0,r.useEffect)(()=>{let e=setInterval(()=>c(Date.now()),1e4);return()=>clearInterval(e)},[]),l&&/^\/sessions\/[^/]+$/.test(l))return null;let f=e.filter(e=>{if(!e.lastTimestamp)return!1;let t=Date.parse(e.lastTimestamp);return!Number.isNaN(t)&&s-t<=45e3}).slice().sort((e,t)=>{let r=e.firstTimestamp?Date.parse(e.firstTimestamp):0;return(t.firstTimestamp?Date.parse(t.firstTimestamp):0)-r});if(0===f.length)return null;let p=u?f.slice(0,5):[],h=u?f.length-p.length:0;return(0,t.jsxs)("div",{style:{position:"fixed",right:20,bottom:20,zIndex:100,display:"flex",flexDirection:"column-reverse",gap:6,maxWidth:320,pointerEvents:"auto"},children:[(0,t.jsxs)("button",{type:"button",onClick:()=>{var e;return e=e=>!e,void d(t=>{let r=e(t);try{localStorage.setItem(i,String(r))}catch{}return r})},style:{display:"inline-flex",alignItems:"center",gap:6,padding:"5px 11px 5px 9px",background:"rgba(239, 68, 68, 0.14)",border:"1px solid rgba(239, 68, 68, 0.4)",borderRadius:100,fontSize:10,fontWeight:700,color:"#ef4444",letterSpacing:"0.06em",textTransform:"uppercase",alignSelf:"flex-end",cursor:"pointer",userSelect:"none",backdropFilter:"blur(8px)",WebkitBackdropFilter:"blur(8px)",boxShadow:"0 2px 10px rgba(239, 68, 68, 0.15)"},title:u?"Collapse":`Show ${f.length} live session${1===f.length?"":"s"}`,children:[(0,t.jsx)("span",{style:{display:"inline-block",width:6,height:6,borderRadius:"50%",background:"#ef4444",animation:"cs-live-pulse 1.6s ease-in-out infinite"}}),"Live · ",f.length]}),u&&h>0&&(0,t.jsxs)("div",{style:{fontSize:10,color:"var(--af-text-tertiary)",padding:"0 4px",textAlign:"right"},children:["+",h," more live"]}),p.map(e=>(0,t.jsxs)(a.default,{href:`/sessions/${e.id}`,style:{display:"block",padding:"10px 12px",background:"var(--af-surface-elevated)",border:"1px solid var(--af-border-subtle)",borderLeft:"2px solid #ef4444",borderRadius:8,boxShadow:"0 4px 16px rgba(0, 0, 0, 0.12)",textDecoration:"none",color:"var(--af-text)",fontSize:11,lineHeight:1.35,backdropFilter:"blur(8px)",WebkitBackdropFilter:"blur(8px)"},title:(e.lastUserPreview||e.firstUserPreview||e.lastAgentPreview)??(0,o.prettyProjectName)(e.projectName),children:[(0,t.jsx)("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontWeight:500,color:"var(--af-text)"},children:e.lastUserPreview||e.firstUserPreview||(0,t.jsx)("em",{style:{color:"var(--af-text-tertiary)"},children:"(no user message)"})}),(0,t.jsx)("div",{style:{fontSize:10,color:"var(--af-text-secondary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",marginTop:3,fontStyle:"italic"},children:e.lastAgentPreview?(0,t.jsxs)(t.Fragment,{children:["↳ ",e.lastAgentPreview]}):(0,t.jsx)("em",{style:{color:"var(--af-text-tertiary)"},children:"waiting…"})}),(0,t.jsx)("div",{style:{fontSize:9,color:"var(--af-text-tertiary)",fontFamily:"var(--font-mono)",marginTop:4,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:(0,o.prettyProjectName)(e.projectName)})]},e.id)),(0,t.jsx)("style",{children:`
2
- @keyframes cs-live-pulse {
3
- 0%, 100% { opacity: 1; transform: scale(1); }
4
- 50% { opacity: 0.4; transform: scale(0.85); }
5
- }
6
- `})]})}])}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,33307,e=>{"use strict";var t=e.i(9735),r=e.i(7744);function a(e,t){if(e<=0||t<=0)return"var(--af-heatmap-0)";let r=Math.min(1,e/t),a=0;return r>.75?a=4:r>.5?a=3:r>.25?a=2:r>0&&(a=1),`var(--af-heatmap-${a})`}function n(e){let[t,r,a]=e.split("-").map(Number);return new Date(t,r-1,a)}function s(e){let t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return`${t}-${r}-${a}`}function l(e){return{date:e,sessions:0,toolCalls:0,turns:0,airTimeMs:0,tokens:{input:0,output:0,cacheRead:0,cacheWrite:0},durationMs:0,peakParallelism:0}}e.s(["Heatmap",0,function({buckets:e,valueKey:i="sessions",cellSize:o=13,cellGap:d=3}){let[c,p]=(0,r.useState)(null),{weeks:u,max:h}=(0,r.useMemo)(()=>{if(0===e.length)return{weeks:[],max:0};let t=new Date(n(e[0].date));t.setDate(t.getDate()-t.getDay());let r=new Map(e.map(e=>[e.date,e])),a=[],o=[],d=new Date,c=n(e[e.length-1].date),p=c>d?c:d,u=0;for(let e=new Date(t);e<=p;e.setDate(e.getDate()+1)){let t=s(e),n=r.get(t)??l(t),d=n[i];d>u&&(u=d),o.push(n),7===o.length&&(a.push(o),o=[])}if(o.length>0){for(;o.length<7;)o.push(l(s(new Date)));a.push(o)}return{weeks:a,max:u}},[e,i]);if(0===e.length)return(0,t.jsx)("div",{style:{padding:"32px 12px",color:"var(--af-text-tertiary)",fontSize:12,textAlign:"center"},children:"No activity yet."});let x=u.length*(o+d)+24,f=7*(o+d)+18;return(0,t.jsxs)("div",{style:{position:"relative",overflowX:"auto"},children:[(0,t.jsxs)("svg",{width:x,height:f,style:{display:"block"},children:[(0,t.jsx)("g",{fontSize:9,fill:"var(--af-text-tertiary)",children:["Mon","Wed","Fri"].map((e,r)=>(0,t.jsx)("text",{x:0,y:18+(1+2*r)*(o+d)+o-3,children:e},e))}),(0,t.jsx)("g",{transform:"translate(24, 18)",children:u.map((e,r)=>e.map((e,n)=>{let s=e[i],l=a(s,h);return(0,t.jsx)("rect",{x:r*(o+d),y:n*(o+d),width:o,height:o,rx:2.5,ry:2.5,stroke:s>0?"rgba(255,255,255,0.04)":"transparent",onMouseEnter:t=>{let r=t.currentTarget.getBoundingClientRect();p({bucket:e,x:r.left+r.width/2,y:r.top-6})},onMouseLeave:()=>p(null),style:{cursor:s>0?"pointer":"default",fill:l}},`${r}-${n}`)}))})]}),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginTop:6,fontSize:10,color:"var(--af-text-tertiary)",justifyContent:"flex-end"},children:[(0,t.jsx)("span",{children:"Less"}),[0,.25,.5,.75,1].map((e,r)=>(0,t.jsx)("span",{style:{width:11,height:11,borderRadius:2.5,background:a(Math.max(1,e*h),h),display:"inline-block"}},r)),(0,t.jsx)("span",{children:"More"})]}),c&&(0,t.jsxs)("div",{style:{position:"fixed",left:c.x,top:c.y,transform:"translate(-50%, -100%)",background:"var(--af-surface-elevated)",border:"1px solid var(--af-border-subtle)",borderRadius:6,padding:"6px 10px",fontSize:11,color:"var(--af-text)",whiteSpace:"nowrap",pointerEvents:"none",zIndex:100,boxShadow:"0 4px 12px rgba(0,0,0,0.3)"},children:[(0,t.jsx)("div",{style:{fontWeight:600},children:c.bucket.date}),(0,t.jsxs)("div",{style:{color:"var(--af-text-secondary)"},children:[c.bucket.sessions," session",1===c.bucket.sessions?"":"s",c.bucket.toolCalls>0&&` \xb7 ${c.bucket.toolCalls} tool calls`,c.bucket.peakParallelism>1&&` \xb7 peak \xd7${c.bucket.peakParallelism}`]})]})]})}])},15781,e=>{"use strict";var t=e.i(9735),r=e.i(7744);function a(e){if(e<1e3)return`${Math.round(e)}ms`;let t=Math.round(e/1e3);if(t<60)return`${t}s`;let r=Math.floor(t/60),a=t%60;if(r<60)return a?`${r}m ${a}s`:`${r}m`;let n=Math.floor(r/60),s=r%60;return s?`${n}h ${s}m`:`${n}h`}let n={airTime:{label:"Agent time",pluck:e=>e.airTimeMs,color:"rgba(45, 212, 191, 0.85)",unit:"ms"},sessions:{label:"Sessions",pluck:e=>e.sessions,color:"rgba(94, 234, 212, 0.85)"},toolCalls:{label:"Tool calls",pluck:e=>e.toolCalls,color:"rgba(167, 139, 250, 0.85)"},turns:{label:"Turns",pluck:e=>e.turns,color:"rgba(251, 191, 36, 0.85)"},input:{label:"Input tokens",pluck:e=>e.tokens.input,color:"rgba(52, 211, 153, 0.85)"},output:{label:"Output tokens",pluck:e=>e.tokens.output,color:"rgba(248, 113, 113, 0.85)"},cacheRead:{label:"Cache read",pluck:e=>e.tokens.cacheRead,color:"rgba(129, 104, 224, 0.85)"}};e.s(["ActivityChart",0,function({buckets:e,defaultMetric:s="sessions",height:l=160}){let[i,o]=(0,r.useState)(s),[d,c]=(0,r.useState)(null),p=n[i],{bars:u,maxVal:h}=(0,r.useMemo)(()=>{let t=0;return{bars:e.map(e=>{let r=p.pluck(e);return r>t&&(t=r),{bucket:e,value:r}}),maxVal:t}},[e,p]);if(0===e.length)return(0,t.jsx)("div",{style:{padding:"32px 12px",color:"var(--af-text-tertiary)",fontSize:12,textAlign:"center"},children:"No activity yet."});let x=Math.max(3,Math.floor((600-2*u.length)/Math.max(1,u.length))),f=48+Math.max(u.length*(x+2),600)+8,g=l-10-22;return(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{style:{display:"flex",gap:4,background:"var(--background)",borderRadius:7,padding:3,marginBottom:10},children:Object.keys(n).map(e=>(0,t.jsx)("button",{type:"button",onClick:()=>o(e),style:{fontSize:11,padding:"5px 10px",border:"none",borderRadius:5,background:i===e?"var(--af-surface-elevated)":"transparent",color:i===e?"var(--af-text)":"var(--af-text-tertiary)",fontWeight:500},children:n[e].label},e))}),(0,t.jsxs)("div",{style:{position:"relative",overflowX:"auto"},children:[d&&(0,t.jsxs)("div",{style:{position:"absolute",left:d.x,top:0,transform:"translateX(-50%)",background:"var(--af-surface-elevated)",border:"1px solid var(--af-border-subtle)",borderRadius:6,padding:"4px 8px",fontSize:11,color:"var(--af-text-secondary)",fontFamily:"var(--font-mono)",whiteSpace:"nowrap",pointerEvents:"none",zIndex:10,boxShadow:"0 2px 8px rgba(0,0,0,0.08)"},children:[d.bucket.date," ·"," ","ms"===p.unit?a(d.value):d.value.toLocaleString()]}),(0,t.jsxs)("svg",{width:f,height:l,style:{display:"block"},children:[(0,t.jsx)("g",{fontSize:10,fill:"var(--af-text-tertiary)",children:[0,.25,.5,.75,1].map(e=>{let r=10+(1-e)*g,n=h*e,s="ms"===p.unit?a(n):n>=1e6?`${(n/1e6).toFixed(1)}M`:n>=1e3?`${(n/1e3).toFixed(1)}k`:Math.round(n).toString();return(0,t.jsxs)("g",{children:[(0,t.jsx)("line",{x1:48,x2:f-8,y1:r,y2:r,stroke:"var(--af-border-subtle)",strokeDasharray:0===e?void 0:"2 3"}),(0,t.jsx)("text",{x:42,y:r+3,textAnchor:"end",children:s})]},e)})}),u.map((e,r)=>{let a=h>0?e.value/h*g:0,n=48+r*(x+2),s=d?.bucket.date===e.bucket.date;return(0,t.jsxs)("g",{children:[(0,t.jsx)("rect",{x:n,y:10,width:x,height:g,fill:"transparent",onMouseEnter:()=>c({bucket:e.bucket,value:e.value,x:n+x/2}),onMouseLeave:()=>c(null)}),(0,t.jsx)("rect",{x:n,y:10+g-a,width:x,height:Math.max(.5,a),fill:s?"var(--af-accent)":p.color,rx:1.5*(x>=6),ry:1.5*(x>=6),style:{pointerEvents:"none"}})]},e.bucket.date)}),(0,t.jsx)("g",{fontSize:10,fill:"var(--af-text-tertiary)",children:u.map((e,r)=>{let a=e.bucket.date,n=0===r,s=r===u.length-1,i="01"===a.slice(-2),o=u.length>3&&u.length<=31&&r===Math.floor(u.length/2)&&!u.some(e=>"01"===e.bucket.date.slice(-2));if(!n&&!s&&!i&&!o)return null;let d=48+r*(x+2)+x/2,c=new Date(`${a}T00:00:00`).toLocaleDateString(void 0,{month:"short",day:"numeric"});return(0,t.jsx)("text",{x:n?48:s?f-8:d,y:l-6,textAnchor:n?"start":s?"end":"middle",children:c},a)})})]})]})]})}])},74829,e=>{"use strict";var t=e.i(9735),r=e.i(7744);let a=(0,e.i(77379).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(["MetricCard",0,function({label:e,value:n,sub:s,icon:l,tooltip:i}){let[o,d]=(0,r.useState)(!1);return(0,t.jsxs)("div",{className:"af-card",style:{padding:"16px 18px",position:"relative"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,fontSize:11,color:"var(--af-text-tertiary)",textTransform:"uppercase",letterSpacing:"0.05em",fontWeight:600},children:[l,(0,t.jsx)("span",{children:e}),i&&(0,t.jsx)("span",{style:{marginLeft:"auto",cursor:"help",display:"inline-flex",color:"var(--af-text-tertiary)",opacity:.5,transition:"opacity 0.12s"},onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),onClick:()=>d(e=>!e),children:(0,t.jsx)(a,{size:12})})]}),(0,t.jsx)("div",{style:{fontSize:22,fontWeight:700,marginTop:8,letterSpacing:"-0.02em",lineHeight:1.1},children:n}),s&&(0,t.jsx)("div",{style:{fontSize:11,color:"var(--af-text-secondary)",marginTop:4},children:s}),o&&i&&(0,t.jsx)("div",{style:{position:"absolute",top:"calc(100% + 6px)",left:0,right:0,zIndex:50,background:"#0F172A",color:"#F1F5F9",borderRadius:8,padding:"10px 12px",fontSize:11,lineHeight:1.5,boxShadow:"0 6px 24px rgba(15,23,42,0.22)",pointerEvents:"none"},children:i.split("\n").map((e,r)=>(0,t.jsx)("div",{children:e},r))})]})}],74829)},15426,e=>{"use strict";var t=e.i(9735),r=e.i(70682),a=e.i(56324);let n=["rgba(45, 212, 191, 0.80)","rgba(167, 139, 250, 0.80)","rgba(248, 113, 113, 0.80)","rgba(52, 211, 153, 0.80)","rgba(251, 191, 36, 0.80)","rgba(236, 72, 153, 0.80)","rgba(34, 211, 238, 0.80)","rgba(168, 85, 247, 0.80)"];function s(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r)|0;return n[Math.abs(t)%n.length]}function l(e){let t=new Date(e);return`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}`}function i({sessions:e,rangeStart:r,rangeEnd:a,width:n=280}){let l=a-r;if(l<=0||0===e.length)return null;let o=18*e.length-2,d=e=>(e-r)/l*n;return(0,t.jsx)("svg",{width:n,height:o,style:{display:"block"},children:e.map((e,r)=>{let a=18*r,l=s(e.projectName);return(0,t.jsxs)("g",{children:[(0,t.jsx)("rect",{x:0,y:a,width:n,height:16,fill:"var(--af-border-subtle)",opacity:.25,rx:3}),e.segments.map((e,r)=>{let s=Math.max(0,d(e.startMs)),i=Math.max(Math.min(n,d(e.endMs))-s,2);return(0,t.jsx)("rect",{x:s,y:a+3,width:i,height:10,fill:l,rx:2},r)})]},e.id)})})}e.s(["ParallelRunsStrip",0,function({runs:e,sessions:n}){if(0===e.length)return(0,t.jsx)("div",{className:"af-empty",style:{padding:24,fontSize:12},children:"No parallel runs detected yet. Try running two sessions at once."});let o=new Map;for(let e of n)o.set(e.id,e);let d=[...e].sort((e,t)=>t.startMs-e.startMs).slice(0,10);return(0,t.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:d.map((e,n)=>{let d=e.endMs-e.startMs,c=e.startMs-18e5,p=e.endMs+18e5,u=[];for(let t of e.sessions){let e=o.get(t);if(!e)continue;let r=(e.activeSegments&&e.activeSegments.length>0?e.activeSegments:e.firstTimestamp&&e.lastTimestamp?[{startMs:Date.parse(e.firstTimestamp),endMs:Date.parse(e.lastTimestamp)}]:[]).map(e=>({startMs:Math.max(e.startMs,c),endMs:Math.min(e.endMs,p)})).filter(e=>e.endMs>e.startMs);0!==r.length&&u.push({id:e.id,projectName:e.projectName,segments:r,startMs:r[0].startMs,endMs:r[r.length-1].endMs,preview:e.firstUserPreview})}if(u.sort((e,t)=>e.startMs-t.startMs),0===u.length)return null;let h=1/0,x=-1/0;for(let e of u)for(let t of e.segments)t.startMs<h&&(h=t.startMs),t.endMs>x&&(x=t.endMs);return(0,t.jsxs)("div",{style:{border:"1px solid var(--af-border-subtle)",borderRadius:8,background:"var(--af-surface-hover)",overflow:"hidden"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",fontSize:11},children:[(0,t.jsx)("span",{style:{color:"var(--af-text-secondary)"},children:new Date(e.startMs).toLocaleString(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}),(0,t.jsxs)("span",{className:"af-tag af-tag-accent",style:{fontFamily:"var(--font-mono)",fontSize:10},children:["×",e.peak," parallel"]}),(0,t.jsxs)("span",{style:{fontSize:10,color:"var(--af-text-tertiary)",fontFamily:"var(--font-mono)",marginLeft:"auto"},children:[l(h),"–",l(x)," · ",(0,a.formatDuration)(d)]})]}),(0,t.jsx)("div",{style:{padding:"4px 12px 10px"},children:(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"minmax(80px, 140px) 1fr",gap:"0 10px",alignItems:"start"},children:[(0,t.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:u.map(e=>(0,t.jsxs)(r.default,{href:`/sessions/${e.id}`,style:{height:16,display:"flex",alignItems:"center",gap:4,fontSize:9.5,color:"var(--af-text-secondary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",textDecoration:"none"},title:e.preview||(0,a.prettyProjectName)(e.projectName),children:[(0,t.jsx)("span",{style:{width:6,height:6,borderRadius:2,background:s(e.projectName),flexShrink:0}}),(0,t.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:(0,a.prettyProjectName)(e.projectName)})]},e.id))}),(0,t.jsx)(i,{sessions:u,rangeStart:h,rangeEnd:x})]})})]},n)})})}])}]);
@@ -1,6 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,16047,96263,e=>{"use strict";var t=e.i(77379);let s=(0,t.default)("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);e.s(["ChevronDown",0,s],16047);let i=(0,t.default)("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",0,i],96263)},36451,e=>{"use strict";let t=(0,e.i(77379).default)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",0,t],36451)},52535,e=>{"use strict";var t=e.i(9735),s=e.i(7744);e.s(["LiveBadge",0,function({mtimeIso:e,size:i="sm"}){let[l,a]=(0,s.useState)(()=>Date.now());if((0,s.useEffect)(()=>{let e=setInterval(()=>a(Date.now()),1e4);return()=>clearInterval(e)},[]),!e)return null;let n=Date.parse(e);if(Number.isNaN(n)||l-n>45e3)return null;let r="md"===i?8:6;return(0,t.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:5,fontSize:"md"===i?10:9,fontWeight:700,letterSpacing:"0.04em",padding:"md"===i?"3px 9px":"2px 7px",borderRadius:100,background:"rgba(239, 68, 68, 0.12)",color:"#ef4444",textTransform:"uppercase"},title:`Last updated ${new Date(n).toLocaleTimeString()}`,children:[(0,t.jsx)("span",{style:{display:"inline-block",width:r,height:r,borderRadius:"50%",background:"#ef4444",animation:"cs-live-pulse 1.6s ease-in-out infinite"}}),"LIVE",(0,t.jsx)("style",{children:`
2
- @keyframes cs-live-pulse {
3
- 0%, 100% { opacity: 1; transform: scale(1); }
4
- 50% { opacity: 0.4; transform: scale(0.85); }
5
- }
6
- `})]})}])},50881,e=>{"use strict";let t=(0,e.i(77379).default)("ArrowDown",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]);e.s(["ArrowDown",0,t],50881)},31501,e=>{"use strict";let t=(0,e.i(77379).default)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);e.s(["Clock",0,t],31501)},84913,e=>{"use strict";let t=(0,e.i(77379).default)("Wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",key:"cbrjhi"}]]);e.s(["Wrench",0,t],84913)},98572,e=>{"use strict";let t=/gh\s+pr\s+create\b/i,s=/#(\d+)/,i=/--title\s+["']([^"']+)["']/;e.s(["canonicalProjectName",0,function(e){let t=e.lastIndexOf("/.worktrees/");return t>=0?e.slice(0,t):e},"detectPrMarkers",0,function(e){let l=[],a=e.durationMs??0;for(let n of e.events){if("tool-call"!==n.role||"Bash"!==n.toolName)continue;let r=n.blocks.find(e=>e&&"type"in e&&"tool_use"===e.type);if(!r||"tool_use"!==r.type)continue;let o=r.input,c="string"==typeof o?.command?o.command:"";if(!t.test(c))continue;let u=c.match(i),d=c.match(s);l.push({sessionId:e.id,timestamp:n.timestamp??e.firstTimestamp??"",tOffsetMs:n.tOffsetMs,positionInSession:a>0&&void 0!==n.tOffsetMs?Math.min(1,Math.max(0,n.tOffsetMs/a)):void 0,command:c.slice(0,300),prNumber:d?Number(d[1]):void 0,title:u?.[1]})}return l}])}]);