fleetlens 0.13.0 → 0.13.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 (211) hide show
  1. package/app/apps/web/.next/BUILD_ID +1 -1
  2. package/app/apps/web/.next/build-manifest.json +8 -8
  3. package/app/apps/web/.next/prerender-manifest.json +3 -3
  4. package/app/apps/web/.next/server/app/_global-error/page/build-manifest.json +5 -5
  5. package/app/apps/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  6. package/app/apps/web/.next/server/app/_global-error.html +1 -1
  7. package/app/apps/web/.next/server/app/_global-error.rsc +7 -7
  8. package/app/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  9. package/app/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  10. package/app/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  11. package/app/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  12. package/app/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/app/apps/web/.next/server/app/_not-found/page/build-manifest.json +5 -5
  14. package/app/apps/web/.next/server/app/_not-found/page.js +1 -1
  15. package/app/apps/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  16. package/app/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/app/apps/web/.next/server/app/api/ask/route.js.nft.json +1 -1
  18. package/app/apps/web/.next/server/app/api/digest/day/[date]/route.js +1 -1
  19. package/app/apps/web/.next/server/app/api/digest/day/[date]/route.js.nft.json +1 -1
  20. package/app/apps/web/.next/server/app/api/digest/month/[yearMonth]/route.js +1 -1
  21. package/app/apps/web/.next/server/app/api/digest/month/[yearMonth]/route.js.nft.json +1 -1
  22. package/app/apps/web/.next/server/app/api/digest/month-index/route.js.nft.json +1 -1
  23. package/app/apps/web/.next/server/app/api/digest/week/[startDate]/route.js +1 -1
  24. package/app/apps/web/.next/server/app/api/digest/week/[startDate]/route.js.nft.json +1 -1
  25. package/app/apps/web/.next/server/app/api/digest/week-index/route.js.nft.json +1 -1
  26. package/app/apps/web/.next/server/app/api/events/route.js.nft.json +1 -1
  27. package/app/apps/web/.next/server/app/api/jobs/route.js.nft.json +1 -1
  28. package/app/apps/web/.next/server/app/api/pdf/[key]/route.js.nft.json +1 -1
  29. package/app/apps/web/.next/server/app/api/runs/[runId]/route.js.nft.json +1 -1
  30. package/app/apps/web/.next/server/app/api/runs/[runId]/stream/route.js.nft.json +1 -1
  31. package/app/apps/web/.next/server/app/api/runs/route.js.nft.json +1 -1
  32. package/app/apps/web/.next/server/app/api/settings/route.js.nft.json +1 -1
  33. package/app/apps/web/.next/server/app/api/team-config/route.js.nft.json +1 -1
  34. package/app/apps/web/.next/server/app/api/workflow-agent/route.js.nft.json +1 -1
  35. package/app/apps/web/.next/server/app/changelog/page/build-manifest.json +5 -5
  36. package/app/apps/web/.next/server/app/changelog/page.js +1 -1
  37. package/app/apps/web/.next/server/app/changelog/page.js.nft.json +1 -1
  38. package/app/apps/web/.next/server/app/changelog/page_client-reference-manifest.js +1 -1
  39. package/app/apps/web/.next/server/app/day/[date]/page/build-manifest.json +5 -5
  40. package/app/apps/web/.next/server/app/day/[date]/page.js +1 -1
  41. package/app/apps/web/.next/server/app/day/[date]/page.js.nft.json +1 -1
  42. package/app/apps/web/.next/server/app/day/[date]/page_client-reference-manifest.js +1 -1
  43. package/app/apps/web/.next/server/app/day/page/build-manifest.json +5 -5
  44. package/app/apps/web/.next/server/app/day/page.js +1 -1
  45. package/app/apps/web/.next/server/app/day/page.js.nft.json +1 -1
  46. package/app/apps/web/.next/server/app/day/page_client-reference-manifest.js +1 -1
  47. package/app/apps/web/.next/server/app/digest/[date]/page/build-manifest.json +5 -5
  48. package/app/apps/web/.next/server/app/digest/[date]/page.js +1 -1
  49. package/app/apps/web/.next/server/app/digest/[date]/page.js.nft.json +1 -1
  50. package/app/apps/web/.next/server/app/digest/[date]/page_client-reference-manifest.js +1 -1
  51. package/app/apps/web/.next/server/app/digest/page/build-manifest.json +5 -5
  52. package/app/apps/web/.next/server/app/digest/page.js +1 -1
  53. package/app/apps/web/.next/server/app/digest/page.js.nft.json +1 -1
  54. package/app/apps/web/.next/server/app/digest/page_client-reference-manifest.js +1 -1
  55. package/app/apps/web/.next/server/app/insights/[key]/page/build-manifest.json +5 -5
  56. package/app/apps/web/.next/server/app/insights/[key]/page.js +1 -1
  57. package/app/apps/web/.next/server/app/insights/[key]/page.js.nft.json +1 -1
  58. package/app/apps/web/.next/server/app/insights/[key]/page_client-reference-manifest.js +1 -1
  59. package/app/apps/web/.next/server/app/insights/page/build-manifest.json +5 -5
  60. package/app/apps/web/.next/server/app/insights/page.js +3 -2
  61. package/app/apps/web/.next/server/app/insights/page.js.nft.json +1 -1
  62. package/app/apps/web/.next/server/app/insights/page_client-reference-manifest.js +1 -1
  63. package/app/apps/web/.next/server/app/page/build-manifest.json +5 -5
  64. package/app/apps/web/.next/server/app/page.js +1 -1
  65. package/app/apps/web/.next/server/app/page.js.nft.json +1 -1
  66. package/app/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  67. package/app/apps/web/.next/server/app/parallelism/page/build-manifest.json +5 -5
  68. package/app/apps/web/.next/server/app/parallelism/page.js +1 -1
  69. package/app/apps/web/.next/server/app/parallelism/page.js.nft.json +1 -1
  70. package/app/apps/web/.next/server/app/parallelism/page_client-reference-manifest.js +1 -1
  71. package/app/apps/web/.next/server/app/print/[key]/page/build-manifest.json +5 -5
  72. package/app/apps/web/.next/server/app/print/[key]/page.js +1 -1
  73. package/app/apps/web/.next/server/app/print/[key]/page.js.nft.json +1 -1
  74. package/app/apps/web/.next/server/app/print/[key]/page_client-reference-manifest.js +1 -1
  75. package/app/apps/web/.next/server/app/projects/[slug]/page/build-manifest.json +5 -5
  76. package/app/apps/web/.next/server/app/projects/[slug]/page.js +1 -1
  77. package/app/apps/web/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  78. package/app/apps/web/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  79. package/app/apps/web/.next/server/app/projects/page/build-manifest.json +5 -5
  80. package/app/apps/web/.next/server/app/projects/page.js +1 -1
  81. package/app/apps/web/.next/server/app/projects/page.js.nft.json +1 -1
  82. package/app/apps/web/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  83. package/app/apps/web/.next/server/app/runs/page/build-manifest.json +5 -5
  84. package/app/apps/web/.next/server/app/runs/page.js +1 -1
  85. package/app/apps/web/.next/server/app/runs/page.js.nft.json +1 -1
  86. package/app/apps/web/.next/server/app/runs/page_client-reference-manifest.js +1 -1
  87. package/app/apps/web/.next/server/app/sessions/[id]/page/build-manifest.json +5 -5
  88. package/app/apps/web/.next/server/app/sessions/[id]/page.js +1 -1
  89. package/app/apps/web/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
  90. package/app/apps/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  91. package/app/apps/web/.next/server/app/sessions/page/build-manifest.json +5 -5
  92. package/app/apps/web/.next/server/app/sessions/page.js +1 -1
  93. package/app/apps/web/.next/server/app/sessions/page.js.nft.json +1 -1
  94. package/app/apps/web/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  95. package/app/apps/web/.next/server/app/settings/page/build-manifest.json +5 -5
  96. package/app/apps/web/.next/server/app/settings/page.js +1 -1
  97. package/app/apps/web/.next/server/app/settings/page.js.nft.json +1 -1
  98. package/app/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  99. package/app/apps/web/.next/server/app/team/page/build-manifest.json +5 -5
  100. package/app/apps/web/.next/server/app/team/page.js +1 -1
  101. package/app/apps/web/.next/server/app/team/page.js.nft.json +1 -1
  102. package/app/apps/web/.next/server/app/team/page_client-reference-manifest.js +1 -1
  103. package/app/apps/web/.next/server/app/usage/page/build-manifest.json +5 -5
  104. package/app/apps/web/.next/server/app/usage/page.js +1 -1
  105. package/app/apps/web/.next/server/app/usage/page.js.nft.json +1 -1
  106. package/app/apps/web/.next/server/app/usage/page_client-reference-manifest.js +1 -1
  107. package/app/apps/web/.next/server/chunks/[root-of-the-server]__0gril0u._.js +9 -0
  108. package/app/apps/web/.next/server/chunks/[root-of-the-server]__0n79hpm._.js +9 -0
  109. package/app/apps/web/.next/server/chunks/[root-of-the-server]__0~utv~v._.js +9 -0
  110. package/app/apps/web/.next/server/chunks/packages_parser_dist_06d9se1._.js +1 -1
  111. package/app/apps/web/.next/server/chunks/packages_parser_dist_10ihc3~._.js +1 -1
  112. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0exckd4._.js +1 -1
  113. package/app/apps/web/.next/server/chunks/ssr/{[root-of-the-server]__0-1_njm._.js → [root-of-the-server]__0k1x-c9._.js} +2 -2
  114. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0lhwp-k._.js +8 -0
  115. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0n-ax-5._.js +1 -1
  116. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0~.f_3z._.js +3 -3
  117. package/app/apps/web/.next/server/chunks/ssr/_0kajk31._.js +1 -1
  118. package/app/apps/web/.next/server/chunks/ssr/_0s3n5mz._.js +8 -0
  119. package/app/apps/web/.next/server/chunks/ssr/_0xu2pvc._.js +1 -1
  120. package/app/apps/web/.next/server/chunks/ssr/{_0jw2sm7._.js → _12mbgs5._.js} +2 -2
  121. package/app/apps/web/.next/server/chunks/ssr/apps_web_app_day_[date]_day-view_tsx_0wjoe1u._.js +1 -1
  122. package/app/apps/web/.next/server/chunks/ssr/apps_web_app_insights_page_tsx_071kwyw._.js +3 -0
  123. package/app/apps/web/.next/server/chunks/ssr/apps_web_app_sessions_sessions-grid_tsx_0bri5x.._.js +3 -0
  124. package/app/apps/web/.next/server/chunks/ssr/apps_web_components_0l6hsch._.js +6 -0
  125. package/app/apps/web/.next/server/chunks/ssr/apps_web_lib_changelog_ts_0n7_p1d._.js +1 -1
  126. package/app/apps/web/.next/server/chunks/ssr/apps_web_lib_changelog_ts_0nb5_-s._.js +1 -1
  127. package/app/apps/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_0cepfi8._.js +3 -0
  128. package/app/apps/web/.next/server/chunks/ssr/packages_entries_dist_node_0_271yr.js +1 -1
  129. package/app/apps/web/.next/server/chunks/ssr/packages_parser_dist_0mx_509._.js +1 -1
  130. package/app/apps/web/.next/server/middleware-build-manifest.js +8 -8
  131. package/app/apps/web/.next/server/middleware-manifest.json +5 -5
  132. package/app/apps/web/.next/server/pages/500.html +1 -1
  133. package/app/apps/web/.next/server/server-reference-manifest.js +1 -1
  134. package/app/apps/web/.next/server/server-reference-manifest.json +1 -1
  135. package/app/apps/web/.next/static/chunks/02xxpexzk3rf-.js +1 -0
  136. package/app/apps/web/.next/static/chunks/{07lbm-sdh9c2j.js → 0389wb_f0j78j.js} +1 -1
  137. package/app/apps/web/.next/static/chunks/03gy1evbn94qu.js +6 -0
  138. package/app/apps/web/.next/static/chunks/03rd.3cc_t~yf.js +4 -0
  139. package/app/apps/web/.next/static/chunks/{0l4e3as18eexy.js → 0g223u9amib0q.js} +1 -1
  140. package/app/apps/web/.next/static/chunks/{0h3.-_s-k0mj3.js → 0i.hc~2bj0_3d.js} +1 -1
  141. package/app/apps/web/.next/static/chunks/0m7dd-2zd9vl2.js +4 -0
  142. package/app/apps/web/.next/static/chunks/0nqklmbs5s3ax.js +6 -0
  143. package/app/apps/web/.next/static/chunks/{073081qv4uyn8.js → 0p--hzrway8~3.js} +1 -1
  144. package/app/apps/web/.next/static/chunks/{0gblp_v.kiu-..js → 0qv-gw888_5nu.js} +1 -1
  145. package/app/apps/web/.next/static/chunks/{14bjditmmrn7l.js → 0tirv_vo6q8uc.js} +1 -1
  146. package/app/apps/web/.next/static/chunks/0uyctl-m8iydb.js +1 -0
  147. package/app/apps/web/.next/static/chunks/0~qdw1b2uz._5.js +10 -0
  148. package/app/apps/web/.next/static/chunks/{0n0n.0279ot6c.js → 14vx702c32kn6.js} +1 -1
  149. package/app/apps/web/.next/static/chunks/{turbopack-0lb9w090w5ezx.js → turbopack-0mxu3~9vk.brh.js} +1 -1
  150. package/app/apps/web/app/api/digest/_shared/digest-route-helpers.ts +178 -0
  151. package/app/apps/web/app/api/digest/day/[date]/route.ts +34 -128
  152. package/app/apps/web/app/api/digest/month/[yearMonth]/route.ts +36 -121
  153. package/app/apps/web/app/api/digest/week/[startDate]/route.ts +36 -123
  154. package/app/apps/web/app/insights/page.tsx +20 -5
  155. package/app/apps/web/app/parallelism/burst-detail-modal.tsx +637 -0
  156. package/app/apps/web/app/parallelism/concurrency-info-modal.tsx +228 -0
  157. package/app/apps/web/app/parallelism/gantt-chart-utils.ts +49 -0
  158. package/app/apps/web/app/parallelism/gantt-chart.tsx +24 -903
  159. package/app/apps/web/app/sessions/[id]/session-view/colors.ts +31 -0
  160. package/app/apps/web/app/sessions/[id]/session-view/debug-list.tsx +78 -0
  161. package/app/apps/web/app/sessions/[id]/session-view/drawer.tsx +414 -0
  162. package/app/apps/web/app/sessions/[id]/session-view/entry-day-strip.tsx +124 -0
  163. package/app/apps/web/app/sessions/[id]/session-view/header-stats.tsx +217 -0
  164. package/app/apps/web/app/sessions/[id]/session-view/helpers.ts +135 -0
  165. package/app/apps/web/app/sessions/[id]/session-view/minimap.tsx +1587 -0
  166. package/app/apps/web/app/sessions/[id]/session-view/subagent-drawer.tsx +339 -0
  167. package/app/apps/web/app/sessions/[id]/session-view/token-stats.tsx +111 -0
  168. package/app/apps/web/app/sessions/[id]/session-view/tooltip.tsx +63 -0
  169. package/app/apps/web/app/sessions/[id]/session-view/types.ts +46 -0
  170. package/app/apps/web/app/sessions/[id]/session-view/workflows-panel.tsx +944 -0
  171. package/app/apps/web/app/sessions/[id]/session-view/workflows-shared.tsx +104 -0
  172. package/app/apps/web/app/sessions/[id]/session-view.tsx +1513 -5018
  173. package/app/apps/web/app/sessions/[id]/team-tab/minimap-hover-card.tsx +201 -0
  174. package/app/apps/web/app/sessions/[id]/team-tab/minimap-idle-band.tsx +53 -0
  175. package/app/apps/web/app/sessions/[id]/team-tab/minimap-shared.ts +20 -0
  176. package/app/apps/web/app/sessions/[id]/team-tab/team-minimap.tsx +10 -265
  177. package/app/apps/web/app/sessions/sessions-grid.tsx +10 -10
  178. package/app/apps/web/components/digest-actions.tsx +103 -0
  179. package/app/apps/web/components/job-queue-widget.tsx +1 -1
  180. package/app/apps/web/components/month-digest-view.tsx +19 -64
  181. package/app/apps/web/components/searchable-select.tsx +215 -0
  182. package/app/apps/web/components/tail-mode.tsx +46 -9
  183. package/app/apps/web/components/week-digest-view.tsx +16 -71
  184. package/app/apps/web/lib/changelog-data.generated.ts +1 -1
  185. package/app/apps/web/lib/entries-index.ts +7 -8
  186. package/app/apps/web/lib/entries.ts +0 -9
  187. package/app/apps/web/lib/format.test.ts +221 -0
  188. package/app/apps/web/lib/format.ts +17 -0
  189. package/app/apps/web/lib/utilization-tone.test.ts +56 -0
  190. package/app/apps/web/package.json +1 -1
  191. package/app/apps/web/tsconfig.tsbuildinfo +1 -1
  192. package/dist/daemon-worker.js +35 -43
  193. package/dist/index.js +37 -49
  194. package/package.json +1 -1
  195. package/app/apps/web/.next/server/chunks/[root-of-the-server]__04j3tng._.js +0 -9
  196. package/app/apps/web/.next/server/chunks/[root-of-the-server]__0cnh3k4._.js +0 -9
  197. package/app/apps/web/.next/server/chunks/[root-of-the-server]__132eosx._.js +0 -9
  198. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__136-0me._.js +0 -8
  199. package/app/apps/web/.next/server/chunks/ssr/_0w.cv64._.js +0 -8
  200. package/app/apps/web/.next/server/chunks/ssr/apps_web_components_01d-iwx._.js +0 -6
  201. package/app/apps/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_0-lmm4p._.js +0 -3
  202. package/app/apps/web/.next/static/chunks/05k84gif3ucxm.js +0 -6
  203. package/app/apps/web/.next/static/chunks/0nnjldasalwdu.js +0 -4
  204. package/app/apps/web/.next/static/chunks/0okg13phslr1..js +0 -4
  205. package/app/apps/web/.next/static/chunks/0pzt9vemtzct8.js +0 -10
  206. package/app/apps/web/.next/static/chunks/0qmh5da6gfm56.js +0 -1
  207. package/app/apps/web/.next/static/chunks/0rnay-a.-jr8-.js +0 -1
  208. package/app/apps/web/.next/static/chunks/0snv3-2ux2xvv.js +0 -6
  209. /package/app/apps/web/.next/static/{rbp9x3iPbzrz-wxS-DAU5 → bZs5UyzsYBqC6MFY5n-M_}/_buildManifest.js +0 -0
  210. /package/app/apps/web/.next/static/{rbp9x3iPbzrz-wxS-DAU5 → bZs5UyzsYBqC6MFY5n-M_}/_clientMiddlewareManifest.js +0 -0
  211. /package/app/apps/web/.next/static/{rbp9x3iPbzrz-wxS-DAU5 → bZs5UyzsYBqC6MFY5n-M_}/_ssgManifest.js +0 -0
@@ -264,23 +264,28 @@ function detectParallelRuns(sessions, minActive = 2) {
264
264
  const points = computeParallelism(sessions);
265
265
  const runs = [];
266
266
  let cur = null;
267
+ let curIds = null;
267
268
  for (const p of points) {
268
269
  if (p.active >= minActive) {
269
270
  if (!cur) {
270
- cur = { startMs: p.atMs, endMs: p.atMs, peak: p.active, sessions: [...p.sessions] };
271
+ curIds = new Set(p.sessions);
272
+ cur = { startMs: p.atMs, endMs: p.atMs, peak: p.active, sessions: Array.from(curIds) };
271
273
  } else {
272
274
  cur.endMs = p.atMs;
273
275
  if (p.active > cur.peak)
274
276
  cur.peak = p.active;
275
277
  for (const sid of p.sessions) {
276
- if (!cur.sessions.includes(sid))
278
+ if (!curIds.has(sid)) {
279
+ curIds.add(sid);
277
280
  cur.sessions.push(sid);
281
+ }
278
282
  }
279
283
  }
280
284
  } else if (cur) {
281
285
  cur.endMs = p.atMs;
282
286
  runs.push(cur);
283
287
  cur = null;
288
+ curIds = null;
284
289
  }
285
290
  }
286
291
  if (cur)
@@ -690,23 +695,6 @@ function eventDollars(ev) {
690
695
  const p = PRICES[ev.family];
691
696
  return (ev.input * p.input + ev.output * p.output + ev.cacheRead * p.cacheRead + ev.cache_1h * p.cache_1h + ev.cache_5m * p.cache_5m) / 1e6;
692
697
  }
693
- function dollarsInWindow(events, startMs, endMs) {
694
- let total = 0;
695
- for (const ev of events) {
696
- const t = Date.parse(ev.ts);
697
- if (t < startMs)
698
- continue;
699
- if (t >= endMs)
700
- break;
701
- total += eventDollars(ev);
702
- }
703
- return total;
704
- }
705
- function predictUtilization(events, startMs, endMs, ratePerPct) {
706
- if (ratePerPct <= 0)
707
- return 0;
708
- return dollarsInWindow(events, startMs, endMs) / ratePerPct;
709
- }
710
698
  function buildSpendIndex(events) {
711
699
  const sorted = events.map((e) => ({ e, t: Date.parse(e.ts) })).filter((x) => !Number.isNaN(x.t)).sort((a, b) => a.t - b.t);
712
700
  const ts = new Float64Array(sorted.length);
@@ -1113,9 +1101,19 @@ function parseTranscript(rawLines) {
1113
1101
  if (ev)
1114
1102
  events.push(ev);
1115
1103
  }
1116
- const timestamped = events.map((e) => e.timestamp ? Date.parse(e.timestamp) : void 0).filter((n) => typeof n === "number" && !Number.isNaN(n));
1117
- const startMs = timestamped.length ? Math.min(...timestamped) : void 0;
1118
- const endMs = timestamped.length ? Math.max(...timestamped) : void 0;
1104
+ let startMs;
1105
+ let endMs;
1106
+ for (const e of events) {
1107
+ if (!e.timestamp)
1108
+ continue;
1109
+ const ms = Date.parse(e.timestamp);
1110
+ if (Number.isNaN(ms))
1111
+ continue;
1112
+ if (startMs === void 0 || ms < startMs)
1113
+ startMs = ms;
1114
+ if (endMs === void 0 || ms > endMs)
1115
+ endMs = ms;
1116
+ }
1119
1117
  const firstTs = startMs !== void 0 ? new Date(startMs).toISOString() : void 0;
1120
1118
  const lastTs = endMs !== void 0 ? new Date(endMs).toISOString() : void 0;
1121
1119
  for (const ev of events) {
@@ -1349,12 +1347,10 @@ function parseTranscript(rawLines) {
1349
1347
  if (typeof m.model === "string" && !model)
1350
1348
  model = m.model;
1351
1349
  const mid = typeof m.id === "string" ? m.id : void 0;
1352
- const rid = typeof o.requestId === "string" ? o.requestId : void 0;
1353
- const dedupKey = mid != null ? `${mid}:${rid ?? ""}` : void 0;
1354
- if (dedupKey && seenMessageIds.has(dedupKey))
1350
+ if (mid && seenMessageIds.has(mid))
1355
1351
  continue;
1356
- if (dedupKey)
1357
- seenMessageIds.add(dedupKey);
1352
+ if (mid)
1353
+ seenMessageIds.add(mid);
1358
1354
  const u = extractUsage(m.usage);
1359
1355
  if (u) {
1360
1356
  totalUsage.input += u.input;
@@ -3576,7 +3572,8 @@ async function parseSession2(file) {
3576
3572
  } catch {
3577
3573
  }
3578
3574
  }
3579
- for (const eventObj of parsedObjects) {
3575
+ for (const rawObj of parsedObjects) {
3576
+ const eventObj = rawObj;
3580
3577
  const ts = eventObj.created_at || eventObj.timestamp;
3581
3578
  if (eventObj.type === "USER_INPUT") {
3582
3579
  if (typeof eventObj.content === "string") {
@@ -4055,12 +4052,6 @@ async function getCoworkSession(id, opts = {}) {
4055
4052
  detailCache5.set(file.auditPath, { detail, key });
4056
4053
  return detail;
4057
4054
  }
4058
- function coworkSessionLocalDay(meta) {
4059
- if (!meta.firstTimestamp)
4060
- return void 0;
4061
- const ms = Date.parse(meta.firstTimestamp);
4062
- return Number.isFinite(ms) ? toLocalDay(ms) : void 0;
4063
- }
4064
4055
  var DEFAULT_COWORK_ROOT, SESSION_ID_RE, spacesCache, metaCache5, detailCache5;
4065
4056
  var init_cowork = __esm({
4066
4057
  "../parser/dist/cowork.js"() {
@@ -4134,7 +4125,6 @@ __export(fs_exports, {
4134
4125
  clearCaches: () => clearCaches,
4135
4126
  clearTeamConfig: () => clearTeamConfig,
4136
4127
  codexSessionLocalDay: () => codexSessionLocalDay,
4137
- coworkSessionLocalDay: () => coworkSessionLocalDay,
4138
4128
  decodeProjectName: () => decodeProjectName,
4139
4129
  findTeamLead: () => findTeamLead,
4140
4130
  geminiSessionLocalDay: () => geminiSessionLocalDay,
@@ -4239,7 +4229,7 @@ async function loadUsageByDay(start, end) {
4239
4229
  if (ms < startMs)
4240
4230
  continue;
4241
4231
  if (ms > endMs)
4242
- break;
4232
+ continue;
4243
4233
  const key = toLocalDay(ms);
4244
4234
  const util2 = snap.five_hour?.utilization ?? 0;
4245
4235
  const cur2 = byDay.get(key) ?? 0;
@@ -4935,7 +4925,6 @@ __export(dist_exports, {
4935
4925
  detectParallelRuns: () => detectParallelRuns,
4936
4926
  detectPrMarkers: () => detectPrMarkers,
4937
4927
  dollarsInRange: () => dollarsInRange,
4938
- dollarsInWindow: () => dollarsInWindow,
4939
4928
  eventDollars: () => eventDollars,
4940
4929
  getAgentMetadata: () => getAgentMetadata,
4941
4930
  groupByProject: () => groupByProject,
@@ -4948,7 +4937,6 @@ __export(dist_exports, {
4948
4937
  modelFamily: () => modelFamily,
4949
4938
  parseTranscript: () => parseTranscript,
4950
4939
  predictAnchored: () => predictAnchored,
4951
- predictUtilization: () => predictUtilization,
4952
4940
  priorCalendarMonth: () => priorCalendarMonth,
4953
4941
  priorCalendarWeek: () => priorCalendarWeek,
4954
4942
  projectRepoName: () => projectRepoName,
@@ -5803,7 +5791,7 @@ function buildIngestPayload(inputs) {
5803
5791
  return {
5804
5792
  ingestId: randomUUID(),
5805
5793
  observedAt: (/* @__PURE__ */ new Date()).toISOString(),
5806
- cliVersion: "0.13.0",
5794
+ cliVersion: "0.13.2",
5807
5795
  ...richRollup || inputs.enrichedExtras || inputs.artifactSignals ? { schemaVersion: RICH_ROLLUP_SCHEMA_VERSION } : {},
5808
5796
  ...inputs.rollup ? { dailyRollup: inputs.rollup } : {},
5809
5797
  ...richRollup ? { richRollup } : {},
@@ -6546,6 +6534,7 @@ var INSTRUCTION_RE = /\b(?:can you|please|let's|let us|i need|could you|would yo
6546
6534
  function extractUserInstructions(text) {
6547
6535
  if (!text)
6548
6536
  return [];
6537
+ INSTRUCTION_RE.lastIndex = 0;
6549
6538
  const out = [];
6550
6539
  const seen = /* @__PURE__ */ new Set();
6551
6540
  let m;
@@ -15204,14 +15193,14 @@ async function getUpdateAvailability() {
15204
15193
  if (isDevMode()) return null;
15205
15194
  const latest = await fetchLatestVersion();
15206
15195
  if (latest === null) return {
15207
- current: "0.13.0",
15196
+ current: "0.13.2",
15208
15197
  latest: null,
15209
15198
  updateAvailable: false
15210
15199
  };
15211
15200
  return {
15212
- current: "0.13.0",
15201
+ current: "0.13.2",
15213
15202
  latest,
15214
- updateAvailable: shouldUpdate("0.13.0", latest)
15203
+ updateAvailable: shouldUpdate("0.13.2", latest)
15215
15204
  };
15216
15205
  }
15217
15206
 
@@ -15290,7 +15279,10 @@ async function runDaemonUpdateCheck() {
15290
15279
  nextUpdateCheckAtMs = Date.now() + AUTO_UPDATE_INTERVAL_MS;
15291
15280
  return;
15292
15281
  }
15293
- if (updateCheckInFlight) return;
15282
+ if (updateCheckInFlight) {
15283
+ nextUpdateCheckAtMs = Date.now() + AUTO_UPDATE_INTERVAL_MS;
15284
+ return;
15285
+ }
15294
15286
  updateCheckInFlight = true;
15295
15287
  const checkedAt = (/* @__PURE__ */ new Date()).toISOString();
15296
15288
  try {
package/dist/index.js CHANGED
@@ -289,23 +289,28 @@ function detectParallelRuns(sessions, minActive = 2) {
289
289
  const points = computeParallelism(sessions);
290
290
  const runs2 = [];
291
291
  let cur = null;
292
+ let curIds = null;
292
293
  for (const p of points) {
293
294
  if (p.active >= minActive) {
294
295
  if (!cur) {
295
- cur = { startMs: p.atMs, endMs: p.atMs, peak: p.active, sessions: [...p.sessions] };
296
+ curIds = new Set(p.sessions);
297
+ cur = { startMs: p.atMs, endMs: p.atMs, peak: p.active, sessions: Array.from(curIds) };
296
298
  } else {
297
299
  cur.endMs = p.atMs;
298
300
  if (p.active > cur.peak)
299
301
  cur.peak = p.active;
300
302
  for (const sid of p.sessions) {
301
- if (!cur.sessions.includes(sid))
303
+ if (!curIds.has(sid)) {
304
+ curIds.add(sid);
302
305
  cur.sessions.push(sid);
306
+ }
303
307
  }
304
308
  }
305
309
  } else if (cur) {
306
310
  cur.endMs = p.atMs;
307
311
  runs2.push(cur);
308
312
  cur = null;
313
+ curIds = null;
309
314
  }
310
315
  }
311
316
  if (cur)
@@ -715,23 +720,6 @@ function eventDollars(ev) {
715
720
  const p = PRICES[ev.family];
716
721
  return (ev.input * p.input + ev.output * p.output + ev.cacheRead * p.cacheRead + ev.cache_1h * p.cache_1h + ev.cache_5m * p.cache_5m) / 1e6;
717
722
  }
718
- function dollarsInWindow(events, startMs, endMs) {
719
- let total = 0;
720
- for (const ev of events) {
721
- const t = Date.parse(ev.ts);
722
- if (t < startMs)
723
- continue;
724
- if (t >= endMs)
725
- break;
726
- total += eventDollars(ev);
727
- }
728
- return total;
729
- }
730
- function predictUtilization(events, startMs, endMs, ratePerPct) {
731
- if (ratePerPct <= 0)
732
- return 0;
733
- return dollarsInWindow(events, startMs, endMs) / ratePerPct;
734
- }
735
723
  function buildSpendIndex(events) {
736
724
  const sorted = events.map((e) => ({ e, t: Date.parse(e.ts) })).filter((x) => !Number.isNaN(x.t)).sort((a, b) => a.t - b.t);
737
725
  const ts = new Float64Array(sorted.length);
@@ -1138,9 +1126,19 @@ function parseTranscript(rawLines) {
1138
1126
  if (ev)
1139
1127
  events.push(ev);
1140
1128
  }
1141
- const timestamped = events.map((e) => e.timestamp ? Date.parse(e.timestamp) : void 0).filter((n) => typeof n === "number" && !Number.isNaN(n));
1142
- const startMs = timestamped.length ? Math.min(...timestamped) : void 0;
1143
- const endMs = timestamped.length ? Math.max(...timestamped) : void 0;
1129
+ let startMs;
1130
+ let endMs;
1131
+ for (const e of events) {
1132
+ if (!e.timestamp)
1133
+ continue;
1134
+ const ms = Date.parse(e.timestamp);
1135
+ if (Number.isNaN(ms))
1136
+ continue;
1137
+ if (startMs === void 0 || ms < startMs)
1138
+ startMs = ms;
1139
+ if (endMs === void 0 || ms > endMs)
1140
+ endMs = ms;
1141
+ }
1144
1142
  const firstTs = startMs !== void 0 ? new Date(startMs).toISOString() : void 0;
1145
1143
  const lastTs = endMs !== void 0 ? new Date(endMs).toISOString() : void 0;
1146
1144
  for (const ev of events) {
@@ -1374,12 +1372,10 @@ function parseTranscript(rawLines) {
1374
1372
  if (typeof m.model === "string" && !model)
1375
1373
  model = m.model;
1376
1374
  const mid = typeof m.id === "string" ? m.id : void 0;
1377
- const rid = typeof o.requestId === "string" ? o.requestId : void 0;
1378
- const dedupKey = mid != null ? `${mid}:${rid ?? ""}` : void 0;
1379
- if (dedupKey && seenMessageIds.has(dedupKey))
1375
+ if (mid && seenMessageIds.has(mid))
1380
1376
  continue;
1381
- if (dedupKey)
1382
- seenMessageIds.add(dedupKey);
1377
+ if (mid)
1378
+ seenMessageIds.add(mid);
1383
1379
  const u = extractUsage(m.usage);
1384
1380
  if (u) {
1385
1381
  totalUsage.input += u.input;
@@ -3601,7 +3597,8 @@ async function parseSession2(file) {
3601
3597
  } catch {
3602
3598
  }
3603
3599
  }
3604
- for (const eventObj of parsedObjects) {
3600
+ for (const rawObj of parsedObjects) {
3601
+ const eventObj = rawObj;
3605
3602
  const ts = eventObj.created_at || eventObj.timestamp;
3606
3603
  if (eventObj.type === "USER_INPUT") {
3607
3604
  if (typeof eventObj.content === "string") {
@@ -4080,12 +4077,6 @@ async function getCoworkSession(id, opts = {}) {
4080
4077
  detailCache5.set(file.auditPath, { detail, key });
4081
4078
  return detail;
4082
4079
  }
4083
- function coworkSessionLocalDay(meta) {
4084
- if (!meta.firstTimestamp)
4085
- return void 0;
4086
- const ms = Date.parse(meta.firstTimestamp);
4087
- return Number.isFinite(ms) ? toLocalDay(ms) : void 0;
4088
- }
4089
4080
  var DEFAULT_COWORK_ROOT, SESSION_ID_RE, spacesCache, metaCache5, detailCache5;
4090
4081
  var init_cowork = __esm({
4091
4082
  "../parser/dist/cowork.js"() {
@@ -4159,7 +4150,6 @@ __export(fs_exports, {
4159
4150
  clearCaches: () => clearCaches,
4160
4151
  clearTeamConfig: () => clearTeamConfig,
4161
4152
  codexSessionLocalDay: () => codexSessionLocalDay,
4162
- coworkSessionLocalDay: () => coworkSessionLocalDay,
4163
4153
  decodeProjectName: () => decodeProjectName,
4164
4154
  findTeamLead: () => findTeamLead,
4165
4155
  geminiSessionLocalDay: () => geminiSessionLocalDay,
@@ -4264,7 +4254,7 @@ async function loadUsageByDay(start2, end) {
4264
4254
  if (ms < startMs)
4265
4255
  continue;
4266
4256
  if (ms > endMs)
4267
- break;
4257
+ continue;
4268
4258
  const key = toLocalDay(ms);
4269
4259
  const util2 = snap.five_hour?.utilization ?? 0;
4270
4260
  const cur2 = byDay.get(key) ?? 0;
@@ -4552,7 +4542,7 @@ function getServerStatus() {
4552
4542
  return { running: false };
4553
4543
  }
4554
4544
  function isServerStale(status2) {
4555
- return status2.running === true && status2.version !== "0.13.0";
4545
+ return status2.running === true && status2.version !== "0.13.2";
4556
4546
  }
4557
4547
  async function ensureCurrentServer(opts = {}) {
4558
4548
  const status2 = getServerStatus();
@@ -4608,7 +4598,7 @@ async function startServer(opts = {}) {
4608
4598
  });
4609
4599
  child.unref();
4610
4600
  const pid = child.pid;
4611
- writePid(PID_FILE, pid, port, "0.13.0");
4601
+ writePid(PID_FILE, pid, port, "0.13.2");
4612
4602
  await waitForHealth(`http://localhost:${port}`, 1e4);
4613
4603
  return { pid, port };
4614
4604
  }
@@ -4968,9 +4958,9 @@ Installed: ${PACKAGE_NAME}@${verify.installedVersion} at ${verify.installedPath
4968
4958
  console.warn(
4969
4959
  ` \u2022 reinstall in the correct Node env: 'npm install -g ${PACKAGE_NAME}@latest'`
4970
4960
  );
4971
- } else if (verify.installedVersion !== "0.13.0") {
4961
+ } else if (verify.installedVersion !== "0.13.2") {
4972
4962
  console.log(
4973
- ` \u2192 This process is still running ${"0.13.0"}. Next invocation will use ${verify.installedVersion}.`
4963
+ ` \u2192 This process is still running ${"0.13.2"}. Next invocation will use ${verify.installedVersion}.`
4974
4964
  );
4975
4965
  }
4976
4966
  }
@@ -5005,14 +4995,14 @@ async function getUpdateAvailability() {
5005
4995
  if (isDevMode()) return null;
5006
4996
  const latest = await fetchLatestVersion();
5007
4997
  if (latest === null) return {
5008
- current: "0.13.0",
4998
+ current: "0.13.2",
5009
4999
  latest: null,
5010
5000
  updateAvailable: false
5011
5001
  };
5012
5002
  return {
5013
- current: "0.13.0",
5003
+ current: "0.13.2",
5014
5004
  latest,
5015
- updateAvailable: shouldUpdate("0.13.0", latest)
5005
+ updateAvailable: shouldUpdate("0.13.2", latest)
5016
5006
  };
5017
5007
  }
5018
5008
  async function checkForUpdate() {
@@ -5102,7 +5092,7 @@ async function restartServices(state) {
5102
5092
  }
5103
5093
  async function forceUpdate() {
5104
5094
  const latest = await fetchLatestVersion();
5105
- const current = "0.13.0";
5095
+ const current = "0.13.2";
5106
5096
  if (latest === null) {
5107
5097
  console.error("Could not reach npm registry. Check your network.");
5108
5098
  process.exit(1);
@@ -5460,7 +5450,7 @@ async function status() {
5460
5450
  console.log(`Server: running on ${url} (PID ${server.pid}, v${ver})`);
5461
5451
  if (isServerStale(server)) {
5462
5452
  console.log(
5463
- ` \u26A0 serving stale ${ver} (CLI is ${"0.13.0"}) \u2014 run 'fleetlens start' to restart on the current version`
5453
+ ` \u26A0 serving stale ${ver} (CLI is ${"0.13.2"}) \u2014 run 'fleetlens start' to restart on the current version`
5464
5454
  );
5465
5455
  }
5466
5456
  } else {
@@ -6544,7 +6534,6 @@ __export(dist_exports, {
6544
6534
  detectParallelRuns: () => detectParallelRuns,
6545
6535
  detectPrMarkers: () => detectPrMarkers,
6546
6536
  dollarsInRange: () => dollarsInRange,
6547
- dollarsInWindow: () => dollarsInWindow,
6548
6537
  eventDollars: () => eventDollars,
6549
6538
  getAgentMetadata: () => getAgentMetadata,
6550
6539
  groupByProject: () => groupByProject,
@@ -6557,7 +6546,6 @@ __export(dist_exports, {
6557
6546
  modelFamily: () => modelFamily,
6558
6547
  parseTranscript: () => parseTranscript,
6559
6548
  predictAnchored: () => predictAnchored,
6560
- predictUtilization: () => predictUtilization,
6561
6549
  priorCalendarMonth: () => priorCalendarMonth,
6562
6550
  priorCalendarWeek: () => priorCalendarWeek,
6563
6551
  projectRepoName: () => projectRepoName,
@@ -16321,7 +16309,7 @@ function buildIngestPayload(inputs) {
16321
16309
  return {
16322
16310
  ingestId: randomUUID2(),
16323
16311
  observedAt: (/* @__PURE__ */ new Date()).toISOString(),
16324
- cliVersion: "0.13.0",
16312
+ cliVersion: "0.13.2",
16325
16313
  ...richRollup || inputs.enrichedExtras || inputs.artifactSignals ? { schemaVersion: RICH_ROLLUP_SCHEMA_VERSION } : {},
16326
16314
  ...inputs.rollup ? { dailyRollup: inputs.rollup } : {},
16327
16315
  ...richRollup ? { richRollup } : {},
@@ -17959,7 +17947,7 @@ async function main() {
17959
17947
  case "version":
17960
17948
  case "--version":
17961
17949
  case "-v":
17962
- console.log(`fleetlens ${"0.13.0"}`);
17950
+ console.log(`fleetlens ${"0.13.2"}`);
17963
17951
  break;
17964
17952
  case "help":
17965
17953
  case "--help":
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetlens",
3
- "version": "0.13.0",
3
+ "version": "0.13.2",
4
4
  "description": "fleetlens — local-only dashboard and usage tracker for Claude Code sessions and agent fleets",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1,9 +0,0 @@
1
- module.exports=[93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},18622,(e,t,r)=>{t.exports=e.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,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},2157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},55459,e=>{"use strict";var t=e.i(2157),r=e.i(43427);function a(){return process.env.CCLENS_JOBS_FILE??(0,r.cclensPath)("jobs.jsonl")}function n(){let e=(0,r.cclensHome)();(0,t.existsSync)(e)||(0,t.mkdirSync)(e,{recursive:!0})}let s=null;function i(){n();let e=a();if(!(0,t.existsSync)(e))return new Map;let r=(0,t.statSync)(e).mtimeMs;if(s&&s.mtimeMs===r)return new Map(s.map);let i=new Map;for(let r of(0,t.readFileSync)(e,"utf8").split("\n"))if(r.trim())try{let e=JSON.parse(r);i.set(e.id,e)}catch{}return s={mtimeMs:r,map:new Map(i)},i}function o(e){n(),(0,t.appendFileSync)(a(),JSON.stringify(e)+"\n","utf8"),s=null}function l(e,t){let r=i().get(e);r&&o({...r,...t})}e.s(["completeJob",0,function(e,t=null){l(e,{status:"done",completedAt:new Date().toISOString(),resultUrl:t,progress:null})},"failJob",0,function(e,t){l(e,{status:"error",completedAt:new Date().toISOString(),error:t,progress:null})},"listRecentJobs",0,function(e=30){let t=i(),r=Date.now();for(let[e,a]of t)("running"===a.status||"queued"===a.status)&&r-Date.parse(a.startedAt)>18e5&&t.set(e,{...a,status:"error",error:"interrupted (server restart)"});let a=Array.from(t.values());return a.sort((e,t)=>{let r="queued"===e.status||"running"===e.status,a="queued"===t.status||"running"===t.status;if(r!==a)return r?-1:1;let n=r?Date.parse(e.startedAt):Date.parse(e.completedAt??e.startedAt);return(a?Date.parse(t.startedAt):Date.parse(t.completedAt??t.startedAt))-n}),a.slice(0,e)},"registerJob",0,function(e){let t=e.id??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return o({id:t,kind:e.kind,label:e.label,target:e.target,status:"queued",startedAt:new Date().toISOString(),completedAt:null,progress:null,resultUrl:null,error:null,caller:e.caller}),t},"updateJob",0,l])},75169,e=>{"use strict";function t(e){let t=new Date(e),r=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0");return`${r}-${a}-${n}`}function r(e=Date.now()){return t(e)}e.i(5737);let a=/^\d{4}-\d{2}-\d{2}$/;function n(e){return a.test(e)}let s=/^\d{4}-\d{2}$/;e.s(["asMonday",0,function(e){return n(e)&&1===new Date(`${e}T00:00:00`).getDay()?e:null},"currentWeekMonday",0,function(e=Date.now()){var a;let n,s;return a=r(e),s=(n=new Date(`${a}T00:00:00`)).getDay(),n.setDate(n.getDate()+(0===s?-6:1-s)),t(n.getTime())},"currentYearMonth",0,function(e=Date.now()){return r(e).slice(0,7)},"isValidDate",0,n,"isValidYearMonth",0,function(e){return s.test(e)},"todayLocal",0,r])},15246,e=>{"use strict";class t{map=new Map;async run(e,t){let r=this.map.get(e);if(r)return r;let a=t();this.map.set(e,a);try{return await a}finally{this.map.delete(e)}}inflight(e){return this.map.has(e)}}e.s(["InflightCoalescer",0,t])},57105,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),s=e.i(61916),i=e.i(74677),o=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),p=e.i(47587),c=e.i(66012),g=e.i(70101),f=e.i(74838),h=e.i(10372),y=e.i(93695);e.i(52474);var m=e.i(220);e.i(82111);var w=e.i(20441),x=e.i(56614),v=e.i(76956);e.i(5737);var R=e.i(15246),S=e.i(75169),b=e.i(55459);let D=new R.InflightCoalescer;async function C(e,t){let{date:r}=await t.params;if(!(0,S.isValidDate)(r))return new Response(JSON.stringify({error:"invalid date"}),{status:400,headers:{"content-type":"application/json"}});if(r>(0,S.todayLocal)())return new Response(JSON.stringify({error:"future date"}),{status:400,headers:{"content-type":"application/json"}});if(r===(0,S.todayLocal)()){let e=(0,v.getTodayDigestFromCache)(r,Date.now());return e?new Response(JSON.stringify(e),{status:200,headers:{"content-type":"application/json"}}):new Response(JSON.stringify({pending:!0,today:!0}),{status:200,headers:{"content-type":"application/json"}})}let a=(0,v.readDayDigest)(r);return a?new Response(JSON.stringify(a),{status:200,headers:{"content-type":"application/json"}}):new Response(JSON.stringify({pending:!0}),{status:200,headers:{"content-type":"application/json"}})}async function E(e,t){let{date:r}=await t.params;if(!(0,S.isValidDate)(r))return new Response(JSON.stringify({error:"invalid date"}),{status:400});if(r>(0,S.todayLocal)())return new Response(JSON.stringify({error:"future date"}),{status:400});let a="1"===new URL(e.url).searchParams.get("force"),n=`day|${r}|${+!!a}`,s=new TextEncoder,i=(0,x.readSettings)(),o=new ReadableStream({async start(e){let t=!1;function o(r){if(!t)try{e.enqueue(s.encode(`event: ${r.type}
2
- data: ${JSON.stringify(r)}
3
-
4
- `))}catch{t=!0}}let l=D.inflight(n),u=null;try{if(await D.run(n,async()=>{if(!l){for await(let t of(u=(0,b.registerJob)({kind:"digest.day",label:`Day digest \xb7 ${r}`,target:r,caller:"user"}),(0,b.updateJob)(u,{status:"running"}),(0,w.runDayDigestPipeline)(r,{settings:i.ai_features,force:a,todayLocalDay:(0,S.todayLocal)()}))){var e;o(t),u&&(e=u,"status"===t.type?(0,b.updateJob)(e,{progress:{phase:t.phase,text:t.text}}):"entry"===t.type?(0,b.updateJob)(e,{progress:{phase:"enrich",index:t.index,total:t.total}}):"progress"===t.type&&(0,b.updateJob)(e,{progress:{phase:t.phase,bytes:t.bytes}}))}u&&(0,b.completeJob)(u,`/day/${r}`)}}),l){let e=(0,v.readDayDigest)(r)??(0,v.getTodayDigestFromCache)(r,Date.now());e&&o({type:"digest",digest:e}),o({type:"status",phase:"persist",text:"coalesced with in-flight request"})}}catch(e){o({type:"error",message:e.message}),u&&(0,b.failJob)(u,e.message)}finally{try{e.enqueue(s.encode(`event: done
5
- data: {}
6
-
7
- `))}catch{}if(!t){try{e.close()}catch{}t=!0}}}});return new Response(o,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform",Connection:"keep-alive","X-Accel-Buffering":"no"}})}e.s(["GET",0,C,"POST",0,E,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],14127);var A=e.i(14127);let N=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/digest/day/[date]/route",pathname:"/api/digest/day/[date]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/digest/day/[date]/route.ts",nextConfigOutput:"standalone",userland:A,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:q,serverHooks:T}=N;async function M(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),N.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/digest/day/[date]/route";w=w.replace(/\/index$/,"")||"/";let x=await N.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!x)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:v,params:R,nextConfig:S,parsedUrl:b,isDraftMode:D,prerenderManifest:C,routerServerContext:E,isOnDemandRevalidate:A,revalidateOnlyGenerated:O,resolvedPathname:q,clientReferenceManifest:T,serverActionsManifest:M}=x,P=(0,o.normalizeAppPath)(w),_=!!(C.dynamicRoutes[P]||C.routes[q]),k=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,b,!1):t.end("This page could not be found"),null);if(_&&!D){let e=!!C.routes[q],t=C.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(S.adapterPath)return await k();throw new y.NoFallbackError}}let j=null;!_||N.isDev||D||(j="/index"===(j=q)?"/":j);let J=!0===N.isDev||!_,$=_&&!J;M&&T&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:T,serverActionsManifest:M});let I=e.method||"GET",H=(0,s.getTracer)(),U=H.getActiveScopeSpan(),F=!!(null==E?void 0:E.isWrappedByNextServer),L=!!(0,n.getRequestMeta)(e,"minimalMode"),B=(0,n.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,S,C,L);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let K={params:R,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts},cacheComponents:!!S.cacheComponents,supportsDynamicResponse:J,incrementalCache:B,cacheLifeProfiles:S.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>N.onRequestError(e,t,a,n,E)},sharedContext:{buildId:v}},V=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),W=u.NextRequestAdapter.fromNodeNextRequest(V,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>N.handle(W,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${I} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${I} ${w}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!L&&A&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=K.renderOpts.fetchMetrics;let o=K.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=K.renderOpts.collectedTags;if(!_)return await (0,c.sendResponse)(V,G,s,K.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[h.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:m.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:A})},!1,E),t}},u=await N.handleResponse({req:e,nextConfig:S,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:L});if(!_)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==m.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",A?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),D&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,g.fromNodeOutgoingHttpHeaders)(u.value.headers);return L&&_||d.delete(h.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(V,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};F&&U?await o(U):(n=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${I} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":I,"http.target":e.url}},o),void 0,!F))}catch(t){if(t instanceof y.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:A})},!1,E),_)throw t;return await (0,c.sendResponse)(V,G,new Response(null,{status:500})),null}}e.s(["handler",0,M,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:q})},"routeModule",0,N,"serverHooks",0,T,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,q],57105)}];
8
-
9
- //# sourceMappingURL=%5Broot-of-the-server%5D__04j3tng._.js.map
@@ -1,9 +0,0 @@
1
- module.exports=[93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},18622,(e,t,r)=>{t.exports=e.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,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},2157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},55459,e=>{"use strict";var t=e.i(2157),r=e.i(43427);function n(){return process.env.CCLENS_JOBS_FILE??(0,r.cclensPath)("jobs.jsonl")}function a(){let e=(0,r.cclensHome)();(0,t.existsSync)(e)||(0,t.mkdirSync)(e,{recursive:!0})}let s=null;function i(){a();let e=n();if(!(0,t.existsSync)(e))return new Map;let r=(0,t.statSync)(e).mtimeMs;if(s&&s.mtimeMs===r)return new Map(s.map);let i=new Map;for(let r of(0,t.readFileSync)(e,"utf8").split("\n"))if(r.trim())try{let e=JSON.parse(r);i.set(e.id,e)}catch{}return s={mtimeMs:r,map:new Map(i)},i}function o(e){a(),(0,t.appendFileSync)(n(),JSON.stringify(e)+"\n","utf8"),s=null}function l(e,t){let r=i().get(e);r&&o({...r,...t})}e.s(["completeJob",0,function(e,t=null){l(e,{status:"done",completedAt:new Date().toISOString(),resultUrl:t,progress:null})},"failJob",0,function(e,t){l(e,{status:"error",completedAt:new Date().toISOString(),error:t,progress:null})},"listRecentJobs",0,function(e=30){let t=i(),r=Date.now();for(let[e,n]of t)("running"===n.status||"queued"===n.status)&&r-Date.parse(n.startedAt)>18e5&&t.set(e,{...n,status:"error",error:"interrupted (server restart)"});let n=Array.from(t.values());return n.sort((e,t)=>{let r="queued"===e.status||"running"===e.status,n="queued"===t.status||"running"===t.status;if(r!==n)return r?-1:1;let a=r?Date.parse(e.startedAt):Date.parse(e.completedAt??e.startedAt);return(n?Date.parse(t.startedAt):Date.parse(t.completedAt??t.startedAt))-a}),n.slice(0,e)},"registerJob",0,function(e){let t=e.id??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return o({id:t,kind:e.kind,label:e.label,target:e.target,status:"queued",startedAt:new Date().toISOString(),completedAt:null,progress:null,resultUrl:null,error:null,caller:e.caller}),t},"updateJob",0,l])},75169,e=>{"use strict";function t(e){let t=new Date(e),r=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),a=String(t.getDate()).padStart(2,"0");return`${r}-${n}-${a}`}function r(e=Date.now()){return t(e)}e.i(5737);let n=/^\d{4}-\d{2}-\d{2}$/;function a(e){return n.test(e)}let s=/^\d{4}-\d{2}$/;e.s(["asMonday",0,function(e){return a(e)&&1===new Date(`${e}T00:00:00`).getDay()?e:null},"currentWeekMonday",0,function(e=Date.now()){var n;let a,s;return n=r(e),s=(a=new Date(`${n}T00:00:00`)).getDay(),a.setDate(a.getDate()+(0===s?-6:1-s)),t(a.getTime())},"currentYearMonth",0,function(e=Date.now()){return r(e).slice(0,7)},"isValidDate",0,a,"isValidYearMonth",0,function(e){return s.test(e)},"todayLocal",0,r])},15246,e=>{"use strict";class t{map=new Map;async run(e,t){let r=this.map.get(e);if(r)return r;let n=t();this.map.set(e,n);try{return await n}finally{this.map.delete(e)}}inflight(e){return this.map.has(e)}}e.s(["InflightCoalescer",0,t])},83071,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),s=e.i(61916),i=e.i(74677),o=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),p=e.i(47587),c=e.i(66012),g=e.i(70101),h=e.i(74838),f=e.i(10372),y=e.i(93695);e.i(52474);var w=e.i(220);e.i(82111);var m=e.i(77242),x=e.i(56614),v=e.i(76956),R=e.i(15246),S=e.i(75169),b=e.i(55459);let C=new R.InflightCoalescer;async function D(e,t){let{startDate:r}=await t.params,n=(0,S.asMonday)(r);if(!n)return new Response(JSON.stringify({error:"invalid Monday date"}),{status:400,headers:{"content-type":"application/json"}});if(n>(0,S.todayLocal)())return new Response(JSON.stringify({error:"future date"}),{status:400});if(n===(0,S.currentWeekMonday)()){let e=(0,v.getCurrentWeekDigestFromCache)(n,Date.now())??(0,v.readWeekDigest)(n);return e?new Response(JSON.stringify(e),{status:200,headers:{"content-type":"application/json"}}):new Response(JSON.stringify({pending:!0,current:!0}),{status:200,headers:{"content-type":"application/json"}})}let a=(0,v.readWeekDigest)(n);return a?new Response(JSON.stringify(a),{status:200,headers:{"content-type":"application/json"}}):new Response(JSON.stringify({pending:!0}),{status:200,headers:{"content-type":"application/json"}})}async function E(e,t){let{startDate:r}=await t.params,n=(0,S.asMonday)(r);if(!n)return new Response(JSON.stringify({error:"invalid Monday date"}),{status:400});if(n>(0,S.todayLocal)())return new Response(JSON.stringify({error:"future date"}),{status:400});let a="1"===new URL(e.url).searchParams.get("force"),s=`week|${n}|${+!!a}`,i=new TextEncoder,o=(0,x.readSettings)(),l=new ReadableStream({async start(e){let t=!1;function r(r){if(!t)try{e.enqueue(i.encode(`event: ${r.type}
2
- data: ${JSON.stringify(r)}
3
-
4
- `))}catch{t=!0}}let l=C.inflight(s),u=null;try{if(await C.run(s,async()=>{if(!l){for await(let t of(u=(0,b.registerJob)({kind:"weekly.synth",label:`Week digest \xb7 ${n}`,target:n,caller:"user"}),(0,b.updateJob)(u,{status:"running"}),(0,m.runWeekDigestPipeline)(n,{settings:o.ai_features,force:a,currentWeekMonday:(0,S.currentWeekMonday)(),todayLocalDay:(0,S.todayLocal)()}))){var e;r(t),u&&(e=u,"status"===t.type?(0,b.updateJob)(e,{progress:{phase:t.phase,text:t.text}}):"entry"===t.type?(0,b.updateJob)(e,{progress:{phase:"enrich",index:t.index,total:t.total}}):"progress"===t.type&&(0,b.updateJob)(e,{progress:{phase:t.phase,bytes:t.bytes}}))}u&&(0,b.completeJob)(u,`/insights/week-${n}`)}}),l){let e=(0,v.readWeekDigest)(n)??(0,v.getCurrentWeekDigestFromCache)(n,Date.now());e&&r({type:"digest",digest:e}),r({type:"status",phase:"persist",text:"coalesced with in-flight request"})}}catch(e){r({type:"error",message:e.message}),u&&(0,b.failJob)(u,e.message)}finally{try{e.enqueue(i.encode(`event: done
5
- data: {}
6
-
7
- `))}catch{}if(!t){try{e.close()}catch{}t=!0}}}});return new Response(l,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform",Connection:"keep-alive","X-Accel-Buffering":"no"}})}e.s(["GET",0,D,"POST",0,E,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],7474);var A=e.i(7474);let k=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/digest/week/[startDate]/route",pathname:"/api/digest/week/[startDate]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/digest/week/[startDate]/route.ts",nextConfigOutput:"standalone",userland:A,...{}}),{workAsyncStorage:N,workUnitAsyncStorage:O,serverHooks:M}=k;async function q(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),k.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let m="/api/digest/week/[startDate]/route";m=m.replace(/\/index$/,"")||"/";let x=await k.prepare(e,t,{srcPage:m,multiZoneDraftMode:!1});if(!x)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:v,params:R,nextConfig:S,parsedUrl:b,isDraftMode:C,prerenderManifest:D,routerServerContext:E,isOnDemandRevalidate:A,revalidateOnlyGenerated:N,resolvedPathname:O,clientReferenceManifest:M,serverActionsManifest:q}=x,T=(0,o.normalizeAppPath)(m),P=!!(D.dynamicRoutes[T]||D.routes[O]),_=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,b,!1):t.end("This page could not be found"),null);if(P&&!C){let e=!!D.routes[O],t=D.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(S.adapterPath)return await _();throw new y.NoFallbackError}}let J=null;!P||k.isDev||C||(J="/index"===(J=O)?"/":J);let $=!0===k.isDev||!P,j=P&&!$;q&&M&&(0,i.setManifestsSingleton)({page:m,clientReferenceManifest:M,serverActionsManifest:q});let I=e.method||"GET",H=(0,s.getTracer)(),U=H.getActiveScopeSpan(),F=!!(null==E?void 0:E.isWrappedByNextServer),W=!!(0,a.getRequestMeta)(e,"minimalMode"),L=(0,a.getRequestMeta)(e,"incrementalCache")||await k.getIncrementalCache(e,S,D,W);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let B={params:R,previewProps:D.preview,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts},cacheComponents:!!S.cacheComponents,supportsDynamicResponse:$,incrementalCache:L,cacheLifeProfiles:S.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>k.onRequestError(e,t,n,a,E)},sharedContext:{buildId:v}},K=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(K,(0,u.signalFromNodeResponse)(t));try{let a,i=async e=>k.handle(G,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${I} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",n),a.updateName(t))}else e.updateName(`${I} ${m}`)}),o=async a=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!W&&A&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(a);e.fetchMetrics=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&n.waitUntil&&(n.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!P)return await (0,c.sendResponse)(K,V,s,B.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,n=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await k.onRequestError(e,t,{routerKind:"App Router",routePath:m,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:A})},!1,E),t}},u=await k.handleResponse({req:e,nextConfig:S,cacheKey:J,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:D,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:W});if(!P)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",A?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,g.fromNodeOutgoingHttpHeaders)(u.value.headers);return W&&P||d.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,h.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(K,V,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};F&&U?await o(U):(a=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${I} ${m}`,kind:s.SpanKind.SERVER,attributes:{"http.method":I,"http.target":e.url}},o),void 0,!F))}catch(t){if(t instanceof y.NoFallbackError||await k.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:A})},!1,E),P)throw t;return await (0,c.sendResponse)(K,V,new Response(null,{status:500})),null}}e.s(["handler",0,q,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:O})},"routeModule",0,k,"serverHooks",0,M,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,O],83071)}];
8
-
9
- //# sourceMappingURL=%5Broot-of-the-server%5D__0cnh3k4._.js.map
@@ -1,9 +0,0 @@
1
- module.exports=[93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},18622,(e,t,r)=>{t.exports=e.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,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},2157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},55459,e=>{"use strict";var t=e.i(2157),r=e.i(43427);function n(){return process.env.CCLENS_JOBS_FILE??(0,r.cclensPath)("jobs.jsonl")}function a(){let e=(0,r.cclensHome)();(0,t.existsSync)(e)||(0,t.mkdirSync)(e,{recursive:!0})}let s=null;function o(){a();let e=n();if(!(0,t.existsSync)(e))return new Map;let r=(0,t.statSync)(e).mtimeMs;if(s&&s.mtimeMs===r)return new Map(s.map);let o=new Map;for(let r of(0,t.readFileSync)(e,"utf8").split("\n"))if(r.trim())try{let e=JSON.parse(r);o.set(e.id,e)}catch{}return s={mtimeMs:r,map:new Map(o)},o}function i(e){a(),(0,t.appendFileSync)(n(),JSON.stringify(e)+"\n","utf8"),s=null}function l(e,t){let r=o().get(e);r&&i({...r,...t})}e.s(["completeJob",0,function(e,t=null){l(e,{status:"done",completedAt:new Date().toISOString(),resultUrl:t,progress:null})},"failJob",0,function(e,t){l(e,{status:"error",completedAt:new Date().toISOString(),error:t,progress:null})},"listRecentJobs",0,function(e=30){let t=o(),r=Date.now();for(let[e,n]of t)("running"===n.status||"queued"===n.status)&&r-Date.parse(n.startedAt)>18e5&&t.set(e,{...n,status:"error",error:"interrupted (server restart)"});let n=Array.from(t.values());return n.sort((e,t)=>{let r="queued"===e.status||"running"===e.status,n="queued"===t.status||"running"===t.status;if(r!==n)return r?-1:1;let a=r?Date.parse(e.startedAt):Date.parse(e.completedAt??e.startedAt);return(n?Date.parse(t.startedAt):Date.parse(t.completedAt??t.startedAt))-a}),n.slice(0,e)},"registerJob",0,function(e){let t=e.id??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return i({id:t,kind:e.kind,label:e.label,target:e.target,status:"queued",startedAt:new Date().toISOString(),completedAt:null,progress:null,resultUrl:null,error:null,caller:e.caller}),t},"updateJob",0,l])},75169,e=>{"use strict";function t(e){let t=new Date(e),r=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),a=String(t.getDate()).padStart(2,"0");return`${r}-${n}-${a}`}function r(e=Date.now()){return t(e)}e.i(5737);let n=/^\d{4}-\d{2}-\d{2}$/;function a(e){return n.test(e)}let s=/^\d{4}-\d{2}$/;e.s(["asMonday",0,function(e){return a(e)&&1===new Date(`${e}T00:00:00`).getDay()?e:null},"currentWeekMonday",0,function(e=Date.now()){var n;let a,s;return n=r(e),s=(a=new Date(`${n}T00:00:00`)).getDay(),a.setDate(a.getDate()+(0===s?-6:1-s)),t(a.getTime())},"currentYearMonth",0,function(e=Date.now()){return r(e).slice(0,7)},"isValidDate",0,a,"isValidYearMonth",0,function(e){return s.test(e)},"todayLocal",0,r])},15246,e=>{"use strict";class t{map=new Map;async run(e,t){let r=this.map.get(e);if(r)return r;let n=t();this.map.set(e,n);try{return await n}finally{this.map.delete(e)}}inflight(e){return this.map.has(e)}}e.s(["InflightCoalescer",0,t])},93161,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),s=e.i(61916),o=e.i(74677),i=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),p=e.i(47587),c=e.i(66012),h=e.i(70101),g=e.i(74838),f=e.i(10372),y=e.i(93695);e.i(52474);var m=e.i(220);e.i(82111);var w=e.i(21628),x=e.i(56614),v=e.i(76956),R=e.i(15246),S=e.i(75169),b=e.i(55459);let C=new R.InflightCoalescer;async function M(e,t){let{yearMonth:r}=await t.params;if(!(0,S.isValidYearMonth)(r))return new Response(JSON.stringify({error:"invalid year-month"}),{status:400,headers:{"content-type":"application/json"}});if(r>(0,S.currentYearMonth)())return new Response(JSON.stringify({error:"future month"}),{status:400});if(r===(0,S.currentYearMonth)()){let e=(0,v.getCurrentMonthDigestFromCache)(r,Date.now());return e?new Response(JSON.stringify(e),{status:200,headers:{"content-type":"application/json"}}):new Response(JSON.stringify({pending:!0,current:!0}),{status:200,headers:{"content-type":"application/json"}})}let n=(0,v.readMonthDigest)(r);return n?new Response(JSON.stringify(n),{status:200,headers:{"content-type":"application/json"}}):new Response(JSON.stringify({pending:!0}),{status:200,headers:{"content-type":"application/json"}})}async function E(e,t){let{yearMonth:r}=await t.params;if(!(0,S.isValidYearMonth)(r))return new Response(JSON.stringify({error:"invalid year-month"}),{status:400});if(r>(0,S.currentYearMonth)())return new Response(JSON.stringify({error:"future month"}),{status:400});let n="1"===new URL(e.url).searchParams.get("force"),a=`month|${r}|${+!!n}`,s=new TextEncoder,o=(0,x.readSettings)(),i=new ReadableStream({async start(e){let t=!1;function i(r){if(!t)try{e.enqueue(s.encode(`event: ${r.type}
2
- data: ${JSON.stringify(r)}
3
-
4
- `))}catch{t=!0}}let l=C.inflight(a),u=null;try{if(await C.run(a,async()=>{if(!l){for await(let t of(u=(0,b.registerJob)({kind:"monthly.synth",label:`Month digest \xb7 ${r}`,target:r,caller:"user"}),(0,b.updateJob)(u,{status:"running"}),(0,w.runMonthDigestPipeline)(r,{settings:o.ai_features,force:n,currentYearMonth:(0,S.currentYearMonth)(),currentWeekMonday:(0,S.currentWeekMonday)(),todayLocalDay:(0,S.todayLocal)()}))){var e;i(t),u&&(e=u,"status"===t.type?(0,b.updateJob)(e,{progress:{phase:t.phase,text:t.text}}):"entry"===t.type?(0,b.updateJob)(e,{progress:{phase:"enrich",index:t.index,total:t.total}}):"progress"===t.type&&(0,b.updateJob)(e,{progress:{phase:t.phase,bytes:t.bytes}}))}u&&(0,b.completeJob)(u,`/insights/month-${r}`)}}),l){let e=(0,v.readMonthDigest)(r)??(0,v.getCurrentMonthDigestFromCache)(r,Date.now());e&&i({type:"digest",digest:e}),i({type:"status",phase:"persist",text:"coalesced with in-flight request"})}}catch(e){i({type:"error",message:e.message}),u&&(0,b.failJob)(u,e.message)}finally{try{e.enqueue(s.encode(`event: done
5
- data: {}
6
-
7
- `))}catch{}if(!t){try{e.close()}catch{}t=!0}}}});return new Response(i,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform",Connection:"keep-alive","X-Accel-Buffering":"no"}})}e.s(["GET",0,M,"POST",0,E,"dynamic",0,"force-dynamic","runtime",0,"nodejs"],9941);var A=e.i(9941);let D=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/digest/month/[yearMonth]/route",pathname:"/api/digest/month/[yearMonth]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/digest/month/[yearMonth]/route.ts",nextConfigOutput:"standalone",userland:A,...{}}),{workAsyncStorage:N,workUnitAsyncStorage:O,serverHooks:q}=D;async function T(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),D.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/digest/month/[yearMonth]/route";w=w.replace(/\/index$/,"")||"/";let x=await D.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!x)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:v,params:R,nextConfig:S,parsedUrl:b,isDraftMode:C,prerenderManifest:M,routerServerContext:E,isOnDemandRevalidate:A,revalidateOnlyGenerated:N,resolvedPathname:O,clientReferenceManifest:q,serverActionsManifest:T}=x,P=(0,i.normalizeAppPath)(w),k=!!(M.dynamicRoutes[P]||M.routes[O]),_=async()=>((null==E?void 0:E.render404)?await E.render404(e,t,b,!1):t.end("This page could not be found"),null);if(k&&!C){let e=!!M.routes[O],t=M.dynamicRoutes[P];if(t&&!1===t.fallback&&!e){if(S.adapterPath)return await _();throw new y.NoFallbackError}}let J=null;!k||D.isDev||C||(J="/index"===(J=O)?"/":J);let $=!0===D.isDev||!k,j=k&&!$;T&&q&&(0,o.setManifestsSingleton)({page:w,clientReferenceManifest:q,serverActionsManifest:T});let I=e.method||"GET",H=(0,s.getTracer)(),U=H.getActiveScopeSpan(),F=!!(null==E?void 0:E.isWrappedByNextServer),L=!!(0,a.getRequestMeta)(e,"minimalMode"),Y=(0,a.getRequestMeta)(e,"incrementalCache")||await D.getIncrementalCache(e,S,M,L);null==Y||Y.resetRequestCache(),globalThis.__incrementalCache=Y;let B={params:R,previewProps:M.preview,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts},cacheComponents:!!S.cacheComponents,supportsDynamicResponse:$,incrementalCache:Y,cacheLifeProfiles:S.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>D.onRequestError(e,t,n,a,E)},sharedContext:{buildId:v}},K=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),W=u.NextRequestAdapter.fromNodeNextRequest(K,(0,u.signalFromNodeResponse)(t));try{let a,o=async e=>D.handle(W,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${I} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",n),a.updateName(t))}else e.updateName(`${I} ${w}`)}),i=async a=>{var s,i;let l=async({previousCacheEntry:r})=>{try{if(!L&&A&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(a);e.fetchMetrics=B.renderOpts.fetchMetrics;let i=B.renderOpts.pendingWaitUntil;i&&n.waitUntil&&(n.waitUntil(i),i=void 0);let l=B.renderOpts.collectedTags;if(!k)return await (0,c.sendResponse)(K,V,s,B.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,n=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:m.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await D.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:A})},!1,E),t}},u=await D.handleResponse({req:e,nextConfig:S,cacheKey:J,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:M,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:L});if(!k)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==m.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(i=u.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",A?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return L&&k||d.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,g.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(K,V,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};F&&U?await i(U):(a=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${I} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":I,"http.target":e.url}},i),void 0,!F))}catch(t){if(t instanceof y.NoFallbackError||await D.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:A})},!1,E),k)throw t;return await (0,c.sendResponse)(K,V,new Response(null,{status:500})),null}}e.s(["handler",0,T,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:O})},"routeModule",0,D,"serverHooks",0,q,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,O],93161)}];
8
-
9
- //# sourceMappingURL=%5Broot-of-the-server%5D__132eosx._.js.map
@@ -1,8 +0,0 @@
1
- module.exports=[50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},20555,a=>{"use strict";var b=a.i(87924),c=a.i(72131);a.s(["LiveBadge",0,function({mtimeIso:a,activityMs:d,size:e="sm"}){let[f,g]=(0,c.useState)(()=>Date.now());(0,c.useEffect)(()=>{let a=setInterval(()=>g(Date.now()),1e4);return()=>clearInterval(a)},[]);let h=a?Date.parse(a):NaN,i=Math.max(Number.isNaN(h)?0:h,d&&Number.isFinite(d)?d:0);if(i<=0||f-i>45e3)return null;let j="md"===e?8:6;return(0,b.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:5,fontSize:"md"===e?10:9,fontWeight:700,letterSpacing:"0.04em",padding:"md"===e?"3px 9px":"2px 7px",borderRadius:100,background:"rgba(239, 68, 68, 0.12)",color:"#ef4444",textTransform:"uppercase"},title:`Last updated ${new Date(i).toLocaleTimeString()}`,children:[(0,b.jsx)("span",{style:{display:"inline-block",width:j,height:j,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
- `})]})}])},50522,a=>{"use strict";let b=(0,a.i(70106).default)("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",0,b],50522)},33508,a=>{"use strict";let b=(0,a.i(70106).default)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);a.s(["X",0,b],33508)},5151,a=>{"use strict";let b=(0,a.i(70106).default)("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);a.s(["Copy",0,b],5151)},13749,a=>{"use strict";let b=(0,a.i(70106).default)("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);a.s(["ChevronLeft",0,b],13749)},59639,(a,b,c)=>{b.exports=a.x("node:process",()=>require("node:process"))},85668,a=>{"use strict";let b=(0,a.i(70106).default)("ArrowDown",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]);a.s(["ArrowDown",0,b],85668)},6807,a=>{"use strict";let b=(0,a.i(70106).default)("Workflow",[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]]);a.s(["Workflow",0,b],6807)},79808,a=>{"use strict";let b=(0,a.i(70106).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],79808)},5784,a=>{"use strict";let b=(0,a.i(70106).default)("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);a.s(["ChevronDown",0,b],5784)},12544,a=>{"use strict";let b=["/.claude/worktrees/","/.worktrees/","/claude/worktrees/"],c=/\/conductor\/workspaces\/[^/]+\/([^/]+)(?:\/|$)/,d="/.superset/worktrees/",e=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,f=/gh\s+pr\s+create\b/i,g=/#(\d+)/,h=/--title\s+["']([^"']+)["']/;a.s(["canonicalProjectName",0,function(a){let f=a.replace(/\/{2,}/g,"/"),g=function(a){for(let c of b){let b=a.lastIndexOf(c);if(b>=0)return{idx:b,marker:c}}return null}(f);if(g)return f.slice(0,g.idx);let h=function(a){let b=c.exec(a);if(!b)return null;let d=b[1],e=+!!b[0].endsWith("/");return{canonicalEndIdx:b.index+b[0].length-d.length-1-e,workspaceName:d}}(f);if(h)return f.slice(0,h.canonicalEndIdx);let i=function(a){let b=a.indexOf(d);if(b<0)return null;let c=a.slice(b+d.length).split("/").filter(Boolean);if(0===c.length)return null;let f=e.test(c[0])?c[1]??c[0]:c[0];return{canonical:a.slice(0,b)+d+f,workspaceName:f}}(f);return i?i.canonical:f},"detectPrMarkers",0,function(a){let b=[],c=a.durationMs??0;for(let d of a.events){if("tool-call"!==d.role||"Bash"!==d.toolName)continue;let e=d.blocks.find(a=>a&&"type"in a&&"tool_use"===a.type);if(!e||"tool_use"!==e.type)continue;let i=e.input,j="string"==typeof i?.command?i.command:"";if(!f.test(j))continue;let k=j.match(h),l=j.match(g);b.push({sessionId:a.id,timestamp:d.timestamp??a.firstTimestamp??"",tOffsetMs:d.tOffsetMs,positionInSession:c>0&&void 0!==d.tOffsetMs?Math.min(1,Math.max(0,d.tOffsetMs/c)):void 0,command:j.slice(0,300),prNumber:l?Number(l[1]):void 0,title:k?.[1]})}return b}])}];
7
-
8
- //# sourceMappingURL=%5Broot-of-the-server%5D__136-0me._.js.map
@@ -1,8 +0,0 @@
1
- module.exports=[20555,a=>{"use strict";var b=a.i(87924),c=a.i(72131);a.s(["LiveBadge",0,function({mtimeIso:a,activityMs:d,size:e="sm"}){let[f,g]=(0,c.useState)(()=>Date.now());(0,c.useEffect)(()=>{let a=setInterval(()=>g(Date.now()),1e4);return()=>clearInterval(a)},[]);let h=a?Date.parse(a):NaN,i=Math.max(Number.isNaN(h)?0:h,d&&Number.isFinite(d)?d:0);if(i<=0||f-i>45e3)return null;let j="md"===e?8:6;return(0,b.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:5,fontSize:"md"===e?10:9,fontWeight:700,letterSpacing:"0.04em",padding:"md"===e?"3px 9px":"2px 7px",borderRadius:100,background:"rgba(239, 68, 68, 0.12)",color:"#ef4444",textTransform:"uppercase"},title:`Last updated ${new Date(i).toLocaleTimeString()}`,children:[(0,b.jsx)("span",{style:{display:"inline-block",width:j,height:j,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
- `})]})}])},85668,a=>{"use strict";let b=(0,a.i(70106).default)("ArrowDown",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]);a.s(["ArrowDown",0,b],85668)},79808,a=>{"use strict";let b=(0,a.i(70106).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],79808)},6807,a=>{"use strict";let b=(0,a.i(70106).default)("Workflow",[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]]);a.s(["Workflow",0,b],6807)},75235,12958,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(70106);let e=(0,d.default)("ArrowUp",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);var f=a.i(85668);let g=(0,d.default)("ArrowUpDown",[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]]);a.s(["DataTable",0,function({rows:a,columns:d,getRowKey:h,onRowClick:i,defaultSortKey:j,defaultSortDir:k="desc"}){let[l,m]=(0,c.useState)(j??null),[n,o]=(0,c.useState)(k),p=(0,c.useMemo)(()=>{if(!l)return a;let b=d.find(a=>a.key===l);if(!b||!b.sortValue)return a;let c="asc"===n?1:-1;return[...a].sort((a,d)=>{let e=b.sortValue(a),f=b.sortValue(d);return"number"==typeof e&&"number"==typeof f?(e-f)*c:String(e).localeCompare(String(f))*c})},[a,d,l,n]);return(0,b.jsx)("div",{style:{overflowX:"auto",border:"1px solid var(--af-border-subtle)",borderRadius:8,background:"var(--af-surface)"},children:(0,b.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:12,color:"var(--af-text)"},children:[(0,b.jsx)("thead",{children:(0,b.jsx)("tr",{children:d.map(a=>{let c=l===a.key,d=!1!==a.sortable&&!!a.sortValue;return(0,b.jsx)("th",{onClick:()=>{!1!==a.sortable&&a.sortValue&&(l===a.key?o(a=>"asc"===a?"desc":"asc"):(m(a.key),o("desc")))},style:{textAlign:a.align??"left",fontSize:10,fontWeight:600,color:c?"var(--af-accent)":"var(--af-text-tertiary)",textTransform:"uppercase",letterSpacing:"0.05em",padding:"10px 12px",borderBottom:"1px solid var(--af-border-subtle)",cursor:d?"pointer":"default",userSelect:"none",whiteSpace:"nowrap",width:a.width,background:"var(--af-surface)",position:"sticky",top:0},children:(0,b.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4,verticalAlign:"middle"},children:[a.header,d&&(0,b.jsx)("span",{style:{display:"inline-flex",opacity:c?1:.35},children:c?"asc"===n?(0,b.jsx)(e,{size:10}):(0,b.jsx)(f.ArrowDown,{size:10}):(0,b.jsx)(g,{size:10})})]})},a.key)})})}),(0,b.jsxs)("tbody",{children:[p.map(a=>(0,b.jsx)("tr",{onClick:()=>i?.(a),style:{cursor:i?"pointer":"default",borderBottom:"1px solid var(--af-border-subtle)",transition:"background 0.1s"},onMouseEnter:a=>{a.currentTarget.style.background="var(--af-surface-hover)"},onMouseLeave:a=>{a.currentTarget.style.background=""},children:d.map(c=>(0,b.jsx)("td",{style:{padding:"10px 12px",textAlign:c.align??"left",whiteSpace:"right"===c.align?"nowrap":void 0,verticalAlign:"top"},children:c.render(a)},c.key))},h(a))),0===p.length&&(0,b.jsx)("tr",{children:(0,b.jsx)("td",{colSpan:d.length,style:{padding:"32px 16px",textAlign:"center",fontSize:12,color:"var(--af-text-tertiary)"},children:"No rows to display."})})]})]})})}],75235);let h=(0,d.default)("LayoutGrid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]),i=(0,d.default)("Table",[["path",{d:"M12 3v18",key:"108xh3"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}]]);var j=a.i(2591);function k({active:a,onClick:c,label:d,icon:e,rightEdge:f}){return(0,b.jsxs)("button",{type:"button",onClick:c,style:{display:"inline-flex",alignItems:"center",gap:5,padding:"6px 12px",fontSize:11,fontWeight:500,background:a?"var(--af-accent-subtle)":"transparent",color:a?"var(--af-accent)":"var(--af-text-secondary)",border:"none",borderRight:f?"none":"1px solid var(--af-border-subtle)",cursor:"pointer",letterSpacing:"0.02em"},children:[e,d]})}a.s(["useViewToggle",0,function(a,c="cards"){let[d,e,f]=(0,j.usePersistentBoolean)(a,"table"===c);return{mode:d?"table":"cards",toggle:(0,b.jsxs)("div",{style:{display:"inline-flex",border:"1px solid var(--af-border-subtle)",borderRadius:6,overflow:"hidden"},children:[(0,b.jsx)(k,{active:!d,onClick:()=>e(!1),label:"Cards",icon:(0,b.jsx)(h,{size:12})}),(0,b.jsx)(k,{active:d,onClick:()=>e(!0),label:"Table",icon:(0,b.jsx)(i,{size:12}),rightEdge:!0})]}),hydrated:f}}],12958)},23426,a=>{"use strict";var b=a.i(87924),c=a.i(38246),d=a.i(72131),e=a.i(50944);a.i(99417);var f=a.i(69176),g=a.i(3444),h=a.i(87532),i=a.i(79808);let j=(0,a.i(70106).default)("MessagesSquare",[["path",{d:"M14 9a2 2 0 0 1-2 2H6l-4 4V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2z",key:"p1xzt8"}],["path",{d:"M18 9h2a2 2 0 0 1 2 2v11l-4-4h-6a2 2 0 0 1-2-2v-1",key:"1cx29u"}]]);var k=a.i(41710),l=a.i(6807),m=a.i(20555),n=a.i(76285),o=a.i(99309),p=a.i(75235),q=a.i(12958),r=a.i(44220);let s=["newest","longest","most-tokens","outcome"],t=[{key:"outcome",header:"Outcome",sortValue:a=>(0,r.outcomePriority)(a.outcome),render:a=>(0,b.jsx)(u,{row:a})},{key:"project",header:"Project",sortValue:a=>a.session.projectName,render:a=>(0,b.jsxs)("div",{style:{maxWidth:180,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:a.session.projectName,children:[(0,b.jsxs)("div",{style:{fontWeight:500,display:"flex",alignItems:"center",gap:6},children:[(0,b.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:(0,g.prettyProjectName)(a.session.projectName)}),(0,b.jsx)(n.TeamBadge,{session:a.session}),(0,b.jsx)(o.AgentBadge,{agent:a.session.agent})]}),(0,b.jsx)("div",{style:{fontSize:10,color:"var(--af-text-tertiary)",fontFamily:"var(--font-mono)"},children:(0,g.shortId)(a.session.id)})]})},{key:"preview",header:"Summary",sortable:!1,render:a=>{let c=a.briefSummary??a.session.firstUserPreview??"",d=!a.briefSummary;return(0,b.jsx)("div",{style:{maxWidth:360,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:d?"var(--af-text-tertiary)":"var(--af-text-secondary)",fontStyle:d?"italic":"normal"},title:d?`(raw user message) ${c}`:c,children:c||"—"})}},{key:"created",header:"Created",sortValue:a=>a.session.firstTimestamp?Date.parse(a.session.firstTimestamp):0,align:"right",render:a=>(0,b.jsx)("span",{suppressHydrationWarning:!0,style:{fontFamily:"var(--font-mono)",fontSize:11},children:a.session.firstTimestamp?(0,g.formatRelative)(a.session.firstTimestamp):"—"})},{key:"lastActive",header:"Last active",sortValue:a=>a.session.lastTimestamp?Date.parse(a.session.lastTimestamp):0,align:"right",render:a=>(0,b.jsx)("span",{suppressHydrationWarning:!0,style:{fontFamily:"var(--font-mono)",fontSize:11},children:a.session.lastTimestamp?(0,g.formatRelative)(a.session.lastTimestamp):"—"})},{key:"airtime",header:"Agent time",sortValue:a=>a.session.airTimeMs??a.session.durationMs??0,align:"right",render:a=>(0,b.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:11},children:(0,g.formatDuration)(a.session.airTimeMs??a.session.durationMs??0)})},{key:"turns",header:"Turns",sortValue:a=>a.session.turnCount??0,align:"right",render:a=>(0,b.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:11},children:(a.session.turnCount??0).toLocaleString()})},{key:"tools",header:"Tool calls",sortValue:a=>a.session.toolCallCount??0,align:"right",render:a=>(0,b.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:11},children:(a.session.toolCallCount??0).toLocaleString()})},{key:"tokens",header:"Tokens",sortValue:a=>a.session.totalUsage.input+a.session.totalUsage.output+a.session.totalUsage.cacheRead+a.session.totalUsage.cacheWrite,align:"right",render:a=>(0,b.jsx)("span",{style:{fontFamily:"var(--font-mono)",fontSize:11},children:(0,g.formatTokens)(a.session.totalUsage.input+a.session.totalUsage.output+a.session.totalUsage.cacheRead+a.session.totalUsage.cacheWrite)})},{key:"status",header:"Status",sortValue:a=>+("running"===a.session.status),align:"center",render:a=>"running"===a.session.status?(0,b.jsx)(m.LiveBadge,{}):(0,b.jsx)("span",{style:{opacity:.4},children:"—"})}];function u({row:a}){return a.outcome?(0,b.jsx)(r.OutcomePill,{outcome:a.outcome,size:"sm",label:"text",agent:a.session.agent}):a.enrichmentStatus&&a.latestLocalDay&&"skipped_trivial"!==a.enrichmentStatus?(0,b.jsx)(r.OutcomePill,{outcome:null,pending:!0,sessionId:a.session.id,localDay:a.latestLocalDay,size:"sm",agent:a.session.agent}):(0,b.jsx)("span",{style:{color:"var(--af-text-tertiary)",fontSize:10},children:"—"})}function v({row:a}){let d=(0,e.useRouter)(),{session:f,briefSummary:h,outcome:p,latestLocalDay:q,enrichmentStatus:s}=a,t=f.totalUsage.input+f.totalUsage.output+f.totalUsage.cacheRead+f.totalUsage.cacheWrite,u=!p&&s&&"skipped_trivial"!==s&&q,x=h??f.firstUserPreview??"",y=!h;return(0,b.jsxs)(c.default,{href:`/sessions/${f.id}`,className:"af-card",style:{display:"flex",flexDirection:"column",gap:10,padding:"14px 16px"},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[(0,b.jsxs)("div",{style:{fontSize:11,color:"var(--af-text-tertiary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",display:"flex",alignItems:"center",gap:6,minWidth:0},title:f.projectName,children:[(0,b.jsx)(m.LiveBadge,{mtimeIso:f.lastTimestamp,activityMs:f.lastActivityMs}),(0,b.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:(0,g.prettyProjectName)(f.projectName)}),(0,b.jsx)(n.TeamBadge,{session:f,linkable:!1}),(0,b.jsx)(o.AgentBadge,{agent:f.agent})]}),(0,b.jsx)("div",{style:{fontSize:10,color:"var(--af-text-tertiary)",fontFamily:"var(--font-mono)",flexShrink:0},suppressHydrationWarning:!0,children:f.firstTimestamp?(0,g.formatRelative)(f.firstTimestamp):"—"})]}),(p||u)&&(0,b.jsx)("div",{onClick:a=>a.stopPropagation(),children:p?(0,b.jsx)(r.OutcomePill,{outcome:p,size:"md",agent:f.agent}):u?(0,b.jsx)("span",{role:"link",tabIndex:0,title:`Generate ${q} digest →`,onClick:a=>{a.preventDefault(),a.stopPropagation(),d.push(`/digest/${q}`)},onKeyDown:a=>{("Enter"===a.key||" "===a.key)&&(a.preventDefault(),a.stopPropagation(),d.push(`/digest/${q}`))},style:{cursor:"pointer",display:"inline-flex"},children:(0,b.jsx)(r.OutcomePill,{outcome:null,pending:!0,sessionId:f.id,localDay:q,size:"md",agent:f.agent,noLink:!0})}):null}),(0,b.jsx)("div",{style:{fontSize:13,color:y?"var(--af-text-secondary)":"var(--af-text)",fontStyle:y?"italic":"normal",display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:2,overflow:"hidden",minHeight:36,lineHeight:1.4},title:y?`(raw user message) ${x}`:x,children:x||(0,b.jsx)("em",{style:{color:"var(--af-text-tertiary)"},children:"(no user message)"})}),y&&(0,b.jsx)("div",{style:{fontSize:11.5,color:"var(--af-text-secondary)",display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:2,overflow:"hidden",lineHeight:1.4,paddingLeft:10,borderLeft:"2px solid var(--af-accent-subtle)"},title:f.lastAgentPreview,children:f.lastAgentPreview||(0,b.jsx)("em",{style:{color:"var(--af-text-tertiary)"},children:"—"})}),(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:14,fontSize:10.5,color:"var(--af-text-tertiary)",paddingTop:8,borderTop:"1px solid var(--af-border-subtle)",fontFamily:"var(--font-mono)"},children:[(0,b.jsx)(w,{icon:(0,b.jsx)(j,{size:11}),label:`${f.turnCount??0} turn${1===f.turnCount?"":"s"}`}),(0,b.jsx)(w,{icon:(0,b.jsx)(i.Wrench,{size:11}),label:`${f.toolCallCount??0} tools`}),(f.spawnedAgentCount??0)>0&&(0,b.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4,color:"#EA580C",fontWeight:600},title:`${f.workflowCount} workflow${1===f.workflowCount?"":"s"} spawned ${f.spawnedAgentCount} agents`,children:[(0,b.jsx)(l.Workflow,{size:11}),f.spawnedAgentCount," agents"]}),(0,b.jsx)(w,{icon:(0,b.jsx)(k.Clock,{size:11}),label:(0,g.formatDuration)(f.airTimeMs??f.durationMs)}),(0,b.jsx)("span",{style:{marginLeft:"auto"},children:(0,g.formatTokens)(t)})]})]})}function w({icon:a,label:c}){return(0,b.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4},children:[a,c]})}a.s(["SessionsGrid",0,function({rows:a}){var c;let i=(0,e.useRouter)(),j=(0,e.usePathname)(),k=(0,e.useSearchParams)(),l=k.get("q")??"",m=k.get("project")??"all",n=k.get("agent"),o=(0,f.isAgentKind)(n)?n:"all",u=null!=(c=k.get("sort"))&&s.includes(c)?k.get("sort"):"newest",{mode:w,toggle:x}=(0,q.useViewToggle)("cclens:sessions:view"),y=(0,d.useCallback)((a,b,c)=>{let d=new URLSearchParams(k.toString());b&&b!==c?d.set(a,b):d.delete(a);let e=d.toString();i.replace(e?`${j}?${e}`:j,{scroll:!1})},[j,i,k]),z=(0,d.useMemo)(()=>["all",...Array.from(new Set(a.map(a=>a.session.projectName))).sort()],[a]),A=(0,d.useMemo)(()=>{let b=new Map;for(let c of a){let a=c.session.agent??"claude-code";b.set(a,(b.get(a)??0)+1)}return Array.from(b.entries()).sort((a,b)=>b[1]-a[1])},[a]),B=(0,d.useMemo)(()=>{let b=a.slice();if("all"!==m&&(b=b.filter(a=>a.session.projectName===m)),"all"!==o&&(b=b.filter(a=>(a.session.agent??"claude-code")===o)),l){let a=l.toLowerCase();b=b.filter(({session:b,briefSummary:c})=>b.id.toLowerCase().includes(a)||(c??"").toLowerCase().includes(a)||(b.firstUserPreview??"").toLowerCase().includes(a)||(b.lastAgentPreview??"").toLowerCase().includes(a)||b.projectName.toLowerCase().includes(a))}return"newest"===u?b.sort((a,b)=>(b.session.firstTimestamp?Date.parse(b.session.firstTimestamp):0)-(a.session.firstTimestamp?Date.parse(a.session.firstTimestamp):0)):"longest"===u?b.sort((a,b)=>(b.session.airTimeMs??b.session.durationMs??0)-(a.session.airTimeMs??a.session.durationMs??0)):"most-tokens"===u?b.sort((a,b)=>b.session.totalUsage.input+b.session.totalUsage.output+b.session.totalUsage.cacheRead-(a.session.totalUsage.input+a.session.totalUsage.output+a.session.totalUsage.cacheRead)):"outcome"===u&&b.sort((a,b)=>(0,r.outcomePriority)(b.outcome)-(0,r.outcomePriority)(a.outcome)),b},[a,m,o,l,u]);return(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{style:{display:"flex",gap:10,marginBottom:16,flexWrap:"wrap",alignItems:"center"},children:[(0,b.jsxs)("div",{style:{position:"relative",flex:1,minWidth:260,maxWidth:480},children:[(0,b.jsx)(h.Search,{size:13,color:"var(--af-text-tertiary)",style:{position:"absolute",left:12,top:"50%",transform:"translateY(-50%)"}}),(0,b.jsx)("input",{type:"text",placeholder:"Search by message, project, or ID",value:l,onChange:a=>y("q",a.target.value,""),style:{width:"100%",paddingLeft:32}})]}),(0,b.jsx)("select",{value:m,onChange:a=>y("project",a.target.value,"all"),style:{maxWidth:260},children:z.map(a=>(0,b.jsx)("option",{value:a,children:"all"===a?"All projects":(0,g.prettyProjectName)(a)},a))}),A.length>1&&(0,b.jsxs)("select",{value:o,onChange:a=>y("agent",a.target.value,"all"),title:"Filter by source agent",children:[(0,b.jsx)("option",{value:"all",children:"All agents"}),A.map(([a,c])=>{var d;return(0,b.jsxs)("option",{value:a,children:[(d=a,(0,f.getAgentMetadata)(d)?.displayName??d)," (",c,")"]},a)})]}),(0,b.jsxs)("select",{value:u,onChange:a=>y("sort",a.target.value,"newest"),children:[(0,b.jsx)("option",{value:"newest",children:"Newest"}),(0,b.jsx)("option",{value:"longest",children:"Longest"}),(0,b.jsx)("option",{value:"most-tokens",children:"Most tokens"}),(0,b.jsx)("option",{value:"outcome",children:"Outcome"})]}),(0,b.jsx)("span",{style:{marginLeft:"auto",fontSize:11,color:"var(--af-text-tertiary)",fontFamily:"var(--font-mono)"},children:B.length}),x]}),0===B.length?(0,b.jsx)("div",{className:"af-empty",children:"No sessions found."}):"table"===w?(0,b.jsx)(p.DataTable,{rows:B,getRowKey:a=>`${a.session.projectDir}/${a.session.id}`,onRowClick:a=>i.push(`/sessions/${a.session.id}`),defaultSortKey:"lastActive",defaultSortDir:"desc",columns:t}):(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(360px, 1fr))",gap:14},children:B.map(a=>(0,b.jsx)(v,{row:a},`${a.session.projectDir}/${a.session.id}`))})]})}],23426)}];
7
-
8
- //# sourceMappingURL=_0w.cv64._.js.map