fleetlens 0.6.3 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/app/apps/web/.next/BUILD_ID +1 -1
  2. package/app/apps/web/.next/build-manifest.json +3 -3
  3. package/app/apps/web/.next/prerender-manifest.json +3 -3
  4. package/app/apps/web/.next/server/app/_global-error.html +1 -1
  5. package/app/apps/web/.next/server/app/_global-error.rsc +1 -1
  6. package/app/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/app/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/app/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/app/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/app/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/app/apps/web/.next/server/app/_not-found/page.js +2 -2
  12. package/app/apps/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  13. package/app/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/app/apps/web/.next/server/app/api/ask/route.js +2 -2
  15. package/app/apps/web/.next/server/app/api/ask/route.js.nft.json +1 -1
  16. package/app/apps/web/.next/server/app/api/digest/day/[date]/route.js +3 -3
  17. package/app/apps/web/.next/server/app/api/digest/day/[date]/route.js.nft.json +1 -1
  18. package/app/apps/web/.next/server/app/api/digest/month/[yearMonth]/route.js +3 -3
  19. package/app/apps/web/.next/server/app/api/digest/month/[yearMonth]/route.js.nft.json +1 -1
  20. package/app/apps/web/.next/server/app/api/digest/month-index/route.js +1 -1
  21. package/app/apps/web/.next/server/app/api/digest/month-index/route.js.nft.json +1 -1
  22. package/app/apps/web/.next/server/app/api/digest/week/[startDate]/route.js +3 -3
  23. package/app/apps/web/.next/server/app/api/digest/week/[startDate]/route.js.nft.json +1 -1
  24. package/app/apps/web/.next/server/app/api/digest/week-index/route.js +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 +2 -2
  27. package/app/apps/web/.next/server/app/api/events/route.js.nft.json +1 -1
  28. package/app/apps/web/.next/server/app/api/jobs/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/settings/route.js +3 -3
  32. package/app/apps/web/.next/server/app/api/settings/route.js.nft.json +1 -1
  33. package/app/apps/web/.next/server/app/day/[date]/page.js +3 -3
  34. package/app/apps/web/.next/server/app/day/[date]/page.js.nft.json +1 -1
  35. package/app/apps/web/.next/server/app/day/[date]/page_client-reference-manifest.js +1 -1
  36. package/app/apps/web/.next/server/app/day/page.js +2 -2
  37. package/app/apps/web/.next/server/app/day/page.js.nft.json +1 -1
  38. package/app/apps/web/.next/server/app/day/page_client-reference-manifest.js +1 -1
  39. package/app/apps/web/.next/server/app/digest/[date]/page.js +2 -2
  40. package/app/apps/web/.next/server/app/digest/[date]/page.js.nft.json +1 -1
  41. package/app/apps/web/.next/server/app/digest/[date]/page_client-reference-manifest.js +1 -1
  42. package/app/apps/web/.next/server/app/digest/page.js +2 -2
  43. package/app/apps/web/.next/server/app/digest/page.js.nft.json +1 -1
  44. package/app/apps/web/.next/server/app/digest/page_client-reference-manifest.js +1 -1
  45. package/app/apps/web/.next/server/app/insights/[key]/page.js +2 -2
  46. package/app/apps/web/.next/server/app/insights/[key]/page.js.nft.json +1 -1
  47. package/app/apps/web/.next/server/app/insights/[key]/page_client-reference-manifest.js +1 -1
  48. package/app/apps/web/.next/server/app/insights/page.js +2 -2
  49. package/app/apps/web/.next/server/app/insights/page.js.nft.json +1 -1
  50. package/app/apps/web/.next/server/app/insights/page_client-reference-manifest.js +1 -1
  51. package/app/apps/web/.next/server/app/page.js +3 -3
  52. package/app/apps/web/.next/server/app/page.js.nft.json +1 -1
  53. package/app/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  54. package/app/apps/web/.next/server/app/parallelism/page.js +2 -2
  55. package/app/apps/web/.next/server/app/parallelism/page.js.nft.json +1 -1
  56. package/app/apps/web/.next/server/app/parallelism/page_client-reference-manifest.js +1 -1
  57. package/app/apps/web/.next/server/app/projects/[slug]/page.js +3 -3
  58. package/app/apps/web/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  59. package/app/apps/web/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  60. package/app/apps/web/.next/server/app/projects/page.js +3 -3
  61. package/app/apps/web/.next/server/app/projects/page.js.nft.json +1 -1
  62. package/app/apps/web/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  63. package/app/apps/web/.next/server/app/runs/page.js +2 -2
  64. package/app/apps/web/.next/server/app/runs/page.js.nft.json +1 -1
  65. package/app/apps/web/.next/server/app/runs/page_client-reference-manifest.js +1 -1
  66. package/app/apps/web/.next/server/app/sessions/[id]/page.js +3 -3
  67. package/app/apps/web/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
  68. package/app/apps/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  69. package/app/apps/web/.next/server/app/sessions/page.js +3 -3
  70. package/app/apps/web/.next/server/app/sessions/page.js.nft.json +1 -1
  71. package/app/apps/web/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  72. package/app/apps/web/.next/server/app/settings/page.js +2 -2
  73. package/app/apps/web/.next/server/app/settings/page.js.nft.json +1 -1
  74. package/app/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  75. package/app/apps/web/.next/server/app/usage/page.js +2 -2
  76. package/app/apps/web/.next/server/app/usage/page.js.nft.json +1 -1
  77. package/app/apps/web/.next/server/app/usage/page_client-reference-manifest.js +1 -1
  78. package/app/apps/web/.next/server/chunks/{[externals]__0o43ejh._.js → [externals]__0fpbr8-._.js} +2 -2
  79. package/app/apps/web/.next/server/chunks/[root-of-the-server]__0-vgrh1._.js +1 -1
  80. package/app/apps/web/.next/server/chunks/[root-of-the-server]__0.z48ue._.js +3 -0
  81. package/app/apps/web/.next/server/chunks/[root-of-the-server]__0dctov1._.js +5 -0
  82. package/app/apps/web/.next/server/chunks/[root-of-the-server]__0e8n_x4._.js +1 -1
  83. package/app/apps/web/.next/server/chunks/[root-of-the-server]__0jprdks._.js +2 -2
  84. package/app/apps/web/.next/server/chunks/node_modules_next_036my~r._.js +1 -1
  85. package/app/apps/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0ck.78s.js +1 -1
  86. package/app/apps/web/.next/server/chunks/packages_09hmrqx._.js +3 -0
  87. package/app/apps/web/.next/server/chunks/packages_118y1lp._.js +3 -0
  88. package/app/apps/web/.next/server/chunks/packages_entries_dist_node_0bckr7-.js +26 -17
  89. package/app/apps/web/.next/server/chunks/packages_parser_dist_fs_122oe0-.js +3 -0
  90. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__04eq6z2._.js +3 -0
  91. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0e.gxk3._.js +3 -0
  92. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0p1x6v2._.js +3 -0
  93. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0r4tks8._.js +1 -1
  94. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0rvzdnx._.js +1 -1
  95. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0sp6.jt._.js +3 -0
  96. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0tejjy_._.js +3 -0
  97. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0v.6dx0._.js +3 -0
  98. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0w52fbc._.js +3 -3
  99. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0wwa6gh._.js +1 -1
  100. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0yv-a8z._.js +12 -0
  101. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__10~b4bf._.js +12 -0
  102. package/app/apps/web/.next/server/chunks/ssr/_02s1n-x._.js +1 -1
  103. package/app/apps/web/.next/server/chunks/ssr/_0woap-3._.js +1 -1
  104. package/app/apps/web/.next/server/chunks/ssr/_0xu2pvc._.js +1 -1
  105. package/app/apps/web/.next/server/chunks/ssr/apps_web_app_day_[date]_day-view_tsx_0wjoe1u._.js +1 -1
  106. package/app/apps/web/.next/server/chunks/ssr/apps_web_app_settings_ai-features-form_tsx_01p699p._.js +1 -1
  107. package/app/apps/web/.next/server/chunks/ssr/apps_web_components_0ly1xes._.js +1 -1
  108. package/app/apps/web/.next/server/chunks/ssr/apps_web_components_0txtsv5._.js +1 -1
  109. package/app/apps/web/.next/server/chunks/ssr/apps_web_lib_usage-data_ts_0xtv99n._.js +1 -1
  110. package/app/apps/web/.next/server/chunks/ssr/{node_modules_0i2xw~e._.js → node_modules_0fx6-.x._.js} +2 -2
  111. package/app/apps/web/.next/server/chunks/ssr/packages_entries_dist_node_0_271yr.js +1 -1
  112. package/app/apps/web/.next/server/chunks/ssr/packages_parser_dist_10_oegc._.js +3 -0
  113. package/app/apps/web/.next/server/middleware-build-manifest.js +3 -3
  114. package/app/apps/web/.next/server/pages/500.html +1 -1
  115. package/app/apps/web/.next/server/server-reference-manifest.js +1 -1
  116. package/app/apps/web/.next/server/server-reference-manifest.json +1 -1
  117. package/app/apps/web/.next/static/chunks/0.3mqbj24kwtc.js +6 -0
  118. package/app/apps/web/.next/static/chunks/07-fq4im3pmjp.js +4 -0
  119. package/app/apps/web/.next/static/chunks/09gdxttgu~.aj.js +14 -0
  120. package/app/apps/web/.next/static/chunks/0n3-prt61k7pr.js +1 -0
  121. package/app/apps/web/.next/static/chunks/{0_7303jr0sf0w.js → 0q2vd~aj.1hpz.js} +3 -3
  122. package/app/apps/web/.next/static/chunks/0qmh5da6gfm56.js +1 -0
  123. package/app/apps/web/.next/static/chunks/{0k9pksi_i.odf.js → 111-bgx08j2nq.js} +1 -1
  124. package/app/apps/web/app/api/ask/route.ts +1 -1
  125. package/app/apps/web/app/api/digest/week/[startDate]/route.ts +2 -1
  126. package/app/apps/web/app/api/settings/route.ts +1 -0
  127. package/app/apps/web/app/insights/[key]/page.tsx +8 -2
  128. package/app/apps/web/app/layout.tsx +10 -7
  129. package/app/apps/web/app/page.tsx +19 -15
  130. package/app/apps/web/app/parallelism/gantt-chart.tsx +7 -18
  131. package/app/apps/web/app/projects/projects-view.tsx +3 -0
  132. package/app/apps/web/app/sessions/[id]/session-view.tsx +168 -41
  133. package/app/apps/web/app/sessions/page.tsx +22 -12
  134. package/app/apps/web/app/sessions/sessions-grid.tsx +82 -9
  135. package/app/apps/web/app/settings/ai-features-form.tsx +20 -1
  136. package/app/apps/web/app/settings/page.tsx +1 -0
  137. package/app/apps/web/app/usage/page.tsx +161 -52
  138. package/app/apps/web/components/agent-badge.tsx +43 -0
  139. package/app/apps/web/components/agent-icon.tsx +38 -0
  140. package/app/apps/web/components/agent-mix-chip.tsx +42 -0
  141. package/app/apps/web/components/{ask-claude.tsx → ask.tsx} +13 -12
  142. package/app/apps/web/components/day-digest.tsx +1 -1
  143. package/app/apps/web/components/live-sessions-widget.tsx +5 -1
  144. package/app/apps/web/components/outcome-pill.tsx +7 -2
  145. package/app/apps/web/components/sidebar.tsx +1 -1
  146. package/app/apps/web/components/week-digest.tsx +2 -0
  147. package/app/apps/web/lib/ai/session-summary.ts +1 -1
  148. package/app/apps/web/lib/data.ts +7 -8
  149. package/app/apps/web/lib/date-range.ts +9 -2
  150. package/app/apps/web/lib/usage-data.ts +24 -1
  151. package/app/apps/web/lib/validate-settings.ts +1 -0
  152. package/app/apps/web/package.json +1 -1
  153. package/app/apps/web/tsconfig.tsbuildinfo +1 -1
  154. package/dist/daemon-worker.js +3150 -2335
  155. package/dist/index.js +4444 -3760
  156. package/package.json +1 -1
  157. package/app/apps/web/.next/server/chunks/[externals]__0_xztrf._.js +0 -3
  158. package/app/apps/web/.next/server/chunks/[root-of-the-server]__0455vu3._.js +0 -5
  159. package/app/apps/web/.next/server/chunks/packages_0e7q9u_._.js +0 -3
  160. package/app/apps/web/.next/server/chunks/packages_0n6p2ot._.js +0 -3
  161. package/app/apps/web/.next/server/chunks/packages_parser_dist_fs_0bc7ptm.js +0 -3
  162. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0-94ji~._.js +0 -3
  163. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0_6.inc._.js +0 -3
  164. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0gio_ck._.js +0 -3
  165. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0jdyefm._.js +0 -12
  166. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0ln9jsw._.js +0 -3
  167. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0u5d7de._.js +0 -12
  168. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0~_8vff._.js +0 -3
  169. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__11v.eqw._.js +0 -3
  170. package/app/apps/web/.next/server/chunks/ssr/packages_parser_dist_0-jvt~a._.js +0 -3
  171. package/app/apps/web/.next/static/chunks/04m3slg_5ph02.js +0 -1
  172. package/app/apps/web/.next/static/chunks/0coa1800xqgfj.js +0 -1
  173. package/app/apps/web/.next/static/chunks/0k1psab.bybh9.js +0 -14
  174. package/app/apps/web/.next/static/chunks/0xfu09fn_358k.js +0 -4
  175. package/app/apps/web/.next/static/chunks/17u2ww8ya5dv1.js +0 -6
  176. /package/app/apps/web/.next/static/{YT0fi8TIPXu7nZyww-N2v → qYW0u_NOmV0v7lf7xZc6x}/_buildManifest.js +0 -0
  177. /package/app/apps/web/.next/static/{YT0fi8TIPXu7nZyww-N2v → qYW0u_NOmV0v7lf7xZc6x}/_clientMiddlewareManifest.js +0 -0
  178. /package/app/apps/web/.next/static/{YT0fi8TIPXu7nZyww-N2v → qYW0u_NOmV0v7lf7xZc6x}/_ssgManifest.js +0 -0
@@ -9,6 +9,7 @@ import { cache } from "react";
9
9
  import { existsSync, readFileSync } from "node:fs";
10
10
  import { join } from "node:path";
11
11
  import { homedir } from "node:os";
12
+ import type { AgentKind } from "@claude-lens/parser";
12
13
 
13
14
  export type UsageWindow = {
14
15
  utilization: number | null;
@@ -17,6 +18,9 @@ export type UsageWindow = {
17
18
 
18
19
  export type UsageSnapshot = {
19
20
  captured_at: string;
21
+ /** Source agent. Absent on legacy snapshots written before multi-agent
22
+ * support — readers MUST treat undefined as "claude-code". */
23
+ agent?: AgentKind;
20
24
  five_hour: UsageWindow;
21
25
  seven_day: UsageWindow;
22
26
  seven_day_opus: UsageWindow | null;
@@ -29,6 +33,7 @@ export type UsageSnapshot = {
29
33
  used_credits: number | null;
30
34
  utilization: number | null;
31
35
  } | null;
36
+ plan_type?: string | null;
32
37
  };
33
38
 
34
39
  function usageLogPath(): string {
@@ -53,9 +58,27 @@ export const readUsageSnapshots = cache((): UsageSnapshot[] => {
53
58
 
54
59
  export const latestUsageSnapshot = cache((): UsageSnapshot | null => {
55
60
  const all = readUsageSnapshots();
56
- return all.length > 0 ? all[all.length - 1]! : null;
61
+ // Sidebar's "current usage" widget is Claude-tier specific (extra_usage,
62
+ // per-model 7d windows). Filter to Claude only so a Codex snapshot doesn't
63
+ // accidentally end up as the latest source.
64
+ const claude = all.filter((s) => (s.agent ?? "claude-code") === "claude-code");
65
+ return claude.length > 0 ? claude[claude.length - 1]! : null;
57
66
  });
58
67
 
68
+ export const latestUsageSnapshotByAgent = cache(
69
+ (agent: AgentKind): UsageSnapshot | null => {
70
+ const all = readUsageSnapshots();
71
+ const filtered = all.filter((s) => (s.agent ?? "claude-code") === agent);
72
+ return filtered.length > 0 ? filtered[filtered.length - 1]! : null;
73
+ },
74
+ );
75
+
76
+ export const readUsageSnapshotsByAgent = cache(
77
+ (agent: AgentKind): UsageSnapshot[] => {
78
+ return readUsageSnapshots().filter((s) => (s.agent ?? "claude-code") === agent);
79
+ },
80
+ );
81
+
59
82
  // The CLI's profile cache mirrors what we report to a paired team-server.
60
83
  // Reading it here keeps personal and team editions consistent — both show
61
84
  // the same "what tier are we?" answer.
@@ -4,6 +4,7 @@ export const SettingsUpdateSchema = z.object({
4
4
  ai_features: z.object({
5
5
  enabled: z.boolean().optional(),
6
6
  autoBackfillLastWeek: z.boolean().optional(),
7
+ autoBackfillYesterday: z.boolean().optional(),
7
8
  }).refine((v) => Object.keys(v).length > 0, {
8
9
  message: "ai_features must include at least one field",
9
10
  }),
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claude-lens/web",
3
- "version": "0.6.3",
3
+ "version": "0.7.0",
4
4
  "private": true,
5
5
  "description": "Local-only dashboard for Claude Code sessions. Reads ~/.claude/projects/*.jsonl and visualizes agent activity.",
6
6
  "license": "MIT",