claude-session-dashboard 0.4.3 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/_dashboard-DLFGahko.js +1 -0
- package/dist/client/assets/{_sessionId-D4Tpmmb5.js → _sessionId-xiPzwrlf.js} +1 -1
- package/dist/client/assets/{createServerFn-BYTDoNe-.js → createServerFn-BLR4iNR3.js} +1 -1
- package/dist/client/assets/{index-DnK_zh3s.js → index-D_9sS4oJ.js} +1 -1
- package/dist/client/assets/{main-CV28H4XG.js → main-BcKPK-4E.js} +3 -3
- package/dist/client/assets/{sessions.queries-tzrs5GhP.js → sessions.queries-CHKiZnLm.js} +1 -1
- package/dist/client/assets/{settings-D8yv1q93.js → settings-B2tG1vy0.js} +1 -1
- package/dist/client/assets/{settings.types-CMYAW0cQ.js → settings.types-DHC6rkil.js} +1 -1
- package/dist/client/assets/{stats-C_6E4jyb.js → stats-BlA0NIHc.js} +1 -1
- package/dist/client/assets/{useSessionCost-BBu3AmcX.js → useSessionCost-BikgEmWy.js} +1 -1
- package/dist/server/assets/{_dashboard-TUzgwLqB.js → _dashboard-smfIqyQC.js} +56 -30
- package/dist/server/assets/{_sessionId-DyFxvcBN.js → _sessionId-DIUMcrWR.js} +1 -1
- package/dist/server/assets/{_tanstack-start-manifest_v-Bzp9kpGN.js → _tanstack-start-manifest_v-Dmhlhehg.js} +1 -1
- package/dist/server/assets/app-info.server-CXcS0a5s.js +40 -0
- package/dist/server/assets/{index-Bx7vBs4O.js → index-hFrIPkke.js} +1 -1
- package/dist/server/assets/{project-analytics.server-kTooOGl-.js → project-analytics.server-Bxk8-NnT.js} +2 -2
- package/dist/server/assets/{router-Cd4jLk4T.js → router-5hznwWqr.js} +5 -5
- package/dist/server/assets/{session-detail.server-CO5XwLSv.js → session-detail.server-BIoOQwSE.js} +1 -1
- package/dist/server/assets/{session-parser-DxLcS8VW.js → session-parser-B0pdBvgT.js} +2 -2
- package/dist/server/assets/{session-scanner-DRGzVO2T.js → session-scanner-CpgOq5m1.js} +1 -1
- package/dist/server/assets/{sessions.server-CTeIkXCV.js → sessions.server-Biq8gbAJ.js} +2 -2
- package/dist/server/assets/{settings-KKaz1ty7.js → settings-D0FgLIR5.js} +1 -1
- package/dist/server/assets/{stats-Bsrkajci.js → stats-Ae6umrPI.js} +1 -1
- package/dist/server/assets/{stats.server-iJ_z7eUN.js → stats.server-DhzOihwM.js} +2 -2
- package/dist/server/server.js +14 -11
- package/package.json +1 -1
- package/dist/client/assets/_dashboard-t702m22X.js +0 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useMatches, Link, Outlet } from "@tanstack/react-router";
|
|
3
|
-
import { useQuery } from "@tanstack/react-query";
|
|
3
|
+
import { useQuery, queryOptions } from "@tanstack/react-query";
|
|
4
4
|
import { a as activeSessionsQuery } from "./sessions.queries-B5ZBiVJy.js";
|
|
5
|
-
import "./createSsrRpc-CVg2UDl0.js";
|
|
6
|
-
import "../server.js";
|
|
5
|
+
import { c as createSsrRpc } from "./createSsrRpc-CVg2UDl0.js";
|
|
6
|
+
import { c as createServerFn } from "../server.js";
|
|
7
|
+
import "zod";
|
|
7
8
|
import "@tanstack/history";
|
|
8
9
|
import "@tanstack/router-core/ssr/client";
|
|
9
10
|
import "@tanstack/router-core";
|
|
@@ -13,13 +14,22 @@ import "h3-v2";
|
|
|
13
14
|
import "tiny-invariant";
|
|
14
15
|
import "seroval";
|
|
15
16
|
import "@tanstack/react-router/ssr/server";
|
|
16
|
-
import "zod";
|
|
17
17
|
function ActiveSessionsBadge() {
|
|
18
18
|
const { data: activeSessions } = useQuery(activeSessionsQuery);
|
|
19
19
|
const count = activeSessions?.length ?? 0;
|
|
20
20
|
if (count === 0) return null;
|
|
21
21
|
return /* @__PURE__ */ jsx("span", { className: "ml-auto rounded-full bg-emerald-500/20 px-1.5 py-0.5 text-[10px] font-medium text-emerald-400", children: count });
|
|
22
22
|
}
|
|
23
|
+
const getAppInfo = createServerFn({
|
|
24
|
+
method: "GET"
|
|
25
|
+
}).handler(createSsrRpc("955327d72ca3168c4751159ca07b8fb0fe0d2381dd0b991f06b941480959fbe8"));
|
|
26
|
+
const appInfoQuery = queryOptions({
|
|
27
|
+
queryKey: ["app-info"],
|
|
28
|
+
queryFn: () => getAppInfo(),
|
|
29
|
+
staleTime: Infinity,
|
|
30
|
+
// Version and path never change at runtime
|
|
31
|
+
refetchOnWindowFocus: false
|
|
32
|
+
});
|
|
23
33
|
const NAV_ITEMS = [
|
|
24
34
|
{
|
|
25
35
|
to: "/sessions",
|
|
@@ -51,6 +61,7 @@ const NAV_ITEMS = [
|
|
|
51
61
|
function AppShell({ children }) {
|
|
52
62
|
const matches = useMatches();
|
|
53
63
|
const currentPath = matches[matches.length - 1]?.pathname ?? "";
|
|
64
|
+
const { data: appInfo } = useQuery(appInfoQuery);
|
|
54
65
|
return /* @__PURE__ */ jsxs("div", { className: "flex min-h-screen", children: [
|
|
55
66
|
/* @__PURE__ */ jsxs("aside", { className: "flex w-56 shrink-0 flex-col border-r border-gray-800 bg-gray-950", children: [
|
|
56
67
|
/* @__PURE__ */ jsx("div", { className: "flex h-14 items-center border-b border-gray-800 px-4", children: /* @__PURE__ */ jsxs(Link, { to: "/sessions", className: "text-sm font-bold text-white", children: [
|
|
@@ -73,33 +84,48 @@ function AppShell({ children }) {
|
|
|
73
84
|
item.to
|
|
74
85
|
);
|
|
75
86
|
}) }),
|
|
76
|
-
/* @__PURE__ */
|
|
77
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center
|
|
78
|
-
/* @__PURE__ */
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
87
|
+
/* @__PURE__ */ jsxs("div", { className: "border-t border-gray-800 p-3", children: [
|
|
88
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
89
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
90
|
+
/* @__PURE__ */ jsx(
|
|
91
|
+
"a",
|
|
92
|
+
{
|
|
93
|
+
href: "https://github.com/dlupiak/claude-session-dashboard",
|
|
94
|
+
target: "_blank",
|
|
95
|
+
rel: "noopener noreferrer",
|
|
96
|
+
className: "text-gray-500 hover:text-gray-300 transition-colors",
|
|
97
|
+
title: "GitHub Repository",
|
|
98
|
+
children: /* @__PURE__ */ jsx("svg", { className: "w-4 h-4", viewBox: "0 0 16 16", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z" }) })
|
|
99
|
+
}
|
|
100
|
+
),
|
|
101
|
+
/* @__PURE__ */ jsx(
|
|
102
|
+
"a",
|
|
103
|
+
{
|
|
104
|
+
href: "https://www.npmjs.com/package/claude-session-dashboard",
|
|
105
|
+
target: "_blank",
|
|
106
|
+
rel: "noopener noreferrer",
|
|
107
|
+
className: "text-gray-500 hover:text-gray-300 transition-colors",
|
|
108
|
+
title: "npm Package",
|
|
109
|
+
children: /* @__PURE__ */ jsx("svg", { className: "w-4 h-4", viewBox: "0 0 16 16", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M0 0v16h16V0H0zm13 13H8V5H5v8H3V3h10v10z" }) })
|
|
110
|
+
}
|
|
111
|
+
)
|
|
112
|
+
] }),
|
|
113
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-gray-600", children: "Read-only" })
|
|
100
114
|
] }),
|
|
101
|
-
/* @__PURE__ */
|
|
102
|
-
|
|
115
|
+
appInfo && /* @__PURE__ */ jsxs(
|
|
116
|
+
"p",
|
|
117
|
+
{
|
|
118
|
+
className: "mt-1.5 truncate text-[10px] text-gray-600",
|
|
119
|
+
title: `v${appInfo.version} · ${appInfo.appPath}`,
|
|
120
|
+
children: [
|
|
121
|
+
"v",
|
|
122
|
+
appInfo.version,
|
|
123
|
+
" · ",
|
|
124
|
+
appInfo.appPath
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
)
|
|
128
|
+
] })
|
|
103
129
|
] }),
|
|
104
130
|
/* @__PURE__ */ jsx("main", { className: "flex-1 overflow-auto", children: /* @__PURE__ */ jsx("div", { className: "mx-auto max-w-5xl px-6 py-6", children }) })
|
|
105
131
|
] });
|
|
@@ -10,7 +10,7 @@ import { ResponsiveContainer, AreaChart, YAxis, Tooltip, ReferenceLine, Area } f
|
|
|
10
10
|
import { s as settingsQuery } from "./settings.queries-DSQd324O.js";
|
|
11
11
|
import { g as getMergedPricing, c as calculateSessionCost, u as useSessionCost, E as ExportDropdown, d as downloadFile, e as sessionToJSON } from "./useSessionCost-CYs5UOX-.js";
|
|
12
12
|
import { a as activeSessionsQuery } from "./sessions.queries-B5ZBiVJy.js";
|
|
13
|
-
import { b as Route, u as usePrivacy } from "./router-
|
|
13
|
+
import { b as Route, u as usePrivacy } from "./router-5hznwWqr.js";
|
|
14
14
|
import "@tanstack/history";
|
|
15
15
|
import "@tanstack/router-core/ssr/client";
|
|
16
16
|
import "@tanstack/router-core";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "/Users/dmytro.lupiak/GitHub/claude-session-dashboard/apps/web/src/routes/__root.tsx", "children": ["/", "/_dashboard"], "preloads": ["/assets/main-
|
|
1
|
+
const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "/Users/dmytro.lupiak/GitHub/claude-session-dashboard/apps/web/src/routes/__root.tsx", "children": ["/", "/_dashboard"], "preloads": ["/assets/main-BcKPK-4E.js"], "assets": [] }, "/": { "filePath": "/Users/dmytro.lupiak/GitHub/claude-session-dashboard/apps/web/src/routes/index.tsx" }, "/_dashboard": { "filePath": "/Users/dmytro.lupiak/GitHub/claude-session-dashboard/apps/web/src/routes/_dashboard.tsx", "children": ["/_dashboard/settings", "/_dashboard/stats", "/_dashboard/sessions/$sessionId", "/_dashboard/sessions/"], "assets": [], "preloads": ["/assets/_dashboard-DLFGahko.js", "/assets/createServerFn-BLR4iNR3.js", "/assets/sessions.queries-CHKiZnLm.js"] }, "/_dashboard/settings": { "filePath": "/Users/dmytro.lupiak/GitHub/claude-session-dashboard/apps/web/src/routes/_dashboard/settings.tsx", "assets": [], "preloads": ["/assets/settings-B2tG1vy0.js", "/assets/settings.types-DHC6rkil.js"] }, "/_dashboard/stats": { "filePath": "/Users/dmytro.lupiak/GitHub/claude-session-dashboard/apps/web/src/routes/_dashboard/stats.tsx", "assets": [], "preloads": ["/assets/stats-BlA0NIHc.js", "/assets/format-Bsprb3az.js", "/assets/useSessionCost-BikgEmWy.js", "/assets/settings.types-DHC6rkil.js"] }, "/_dashboard/sessions/$sessionId": { "filePath": "/Users/dmytro.lupiak/GitHub/claude-session-dashboard/apps/web/src/routes/_dashboard/sessions/$sessionId.tsx", "assets": [], "preloads": ["/assets/_sessionId-xiPzwrlf.js", "/assets/format-Bsprb3az.js", "/assets/useSessionCost-BikgEmWy.js", "/assets/settings.types-DHC6rkil.js"] }, "/_dashboard/sessions/": { "filePath": "/Users/dmytro.lupiak/GitHub/claude-session-dashboard/apps/web/src/routes/_dashboard/sessions/index.tsx", "assets": [], "preloads": ["/assets/index-D_9sS4oJ.js", "/assets/format-Bsprb3az.js"] } }, "clientEntry": "/assets/main-BcKPK-4E.js" });
|
|
2
2
|
export {
|
|
3
3
|
tsrStartManifest
|
|
4
4
|
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { c as createServerRpc } from "./createServerRpc-Bd3B-Ah9.js";
|
|
2
|
+
import * as fs from "node:fs";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { c as createServerFn } from "../server.js";
|
|
5
|
+
import "@tanstack/history";
|
|
6
|
+
import "@tanstack/router-core/ssr/client";
|
|
7
|
+
import "@tanstack/router-core";
|
|
8
|
+
import "node:async_hooks";
|
|
9
|
+
import "@tanstack/router-core/ssr/server";
|
|
10
|
+
import "h3-v2";
|
|
11
|
+
import "tiny-invariant";
|
|
12
|
+
import "seroval";
|
|
13
|
+
import "react/jsx-runtime";
|
|
14
|
+
import "@tanstack/react-router/ssr/server";
|
|
15
|
+
import "@tanstack/react-router";
|
|
16
|
+
const getAppInfo_createServerFn_handler = createServerRpc({
|
|
17
|
+
id: "955327d72ca3168c4751159ca07b8fb0fe0d2381dd0b991f06b941480959fbe8",
|
|
18
|
+
name: "getAppInfo",
|
|
19
|
+
filename: "src/features/settings/app-info.server.ts"
|
|
20
|
+
}, (opts) => getAppInfo.__executeServer(opts));
|
|
21
|
+
const getAppInfo = createServerFn({
|
|
22
|
+
method: "GET"
|
|
23
|
+
}).handler(getAppInfo_createServerFn_handler, async () => {
|
|
24
|
+
let version = "unknown";
|
|
25
|
+
try {
|
|
26
|
+
const pkgPath = path.resolve(process.cwd(), "package.json");
|
|
27
|
+
const raw = fs.readFileSync(pkgPath, "utf-8");
|
|
28
|
+
const pkg = JSON.parse(raw);
|
|
29
|
+
version = pkg.version ?? "unknown";
|
|
30
|
+
} catch {
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
version,
|
|
34
|
+
appPath: process.cwd(),
|
|
35
|
+
nodeEnv: "production"
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
export {
|
|
39
|
+
getAppInfo_createServerFn_handler
|
|
40
|
+
};
|
|
@@ -4,7 +4,7 @@ import { useQuery } from "@tanstack/react-query";
|
|
|
4
4
|
import { Link, useNavigate } from "@tanstack/react-router";
|
|
5
5
|
import { p as paginatedSessionListQuery, a as activeSessionsQuery } from "./sessions.queries-B5ZBiVJy.js";
|
|
6
6
|
import { a as formatDuration, b as formatRelativeTime, d as formatBytes } from "./format-DIZHV7IJ.js";
|
|
7
|
-
import { u as usePrivacy, a as Route } from "./router-
|
|
7
|
+
import { u as usePrivacy, a as Route } from "./router-5hznwWqr.js";
|
|
8
8
|
import "./createSsrRpc-CVg2UDl0.js";
|
|
9
9
|
import "../server.js";
|
|
10
10
|
import "@tanstack/history";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { c as createServerRpc } from "./createServerRpc-Bd3B-Ah9.js";
|
|
2
|
-
import { a as scanAllSessions } from "./session-scanner-
|
|
2
|
+
import { a as scanAllSessions } from "./session-scanner-CpgOq5m1.js";
|
|
3
3
|
import { c as createServerFn } from "../server.js";
|
|
4
4
|
import "node:fs";
|
|
5
5
|
import "node:path";
|
|
6
|
-
import "./session-parser-
|
|
6
|
+
import "./session-parser-B0pdBvgT.js";
|
|
7
7
|
import "node:os";
|
|
8
8
|
import "node:readline";
|
|
9
9
|
import "@tanstack/history";
|
|
@@ -136,7 +136,7 @@ function RootDocument({ children }) {
|
|
|
136
136
|
] })
|
|
137
137
|
] });
|
|
138
138
|
}
|
|
139
|
-
const $$splitComponentImporter$4 = () => import("./_dashboard-
|
|
139
|
+
const $$splitComponentImporter$4 = () => import("./_dashboard-smfIqyQC.js");
|
|
140
140
|
const Route$5 = createFileRoute("/_dashboard")({
|
|
141
141
|
component: lazyRouteComponent($$splitComponentImporter$4, "component")
|
|
142
142
|
});
|
|
@@ -145,7 +145,7 @@ const Route$4 = createFileRoute("/")({
|
|
|
145
145
|
throw redirect({ to: "/sessions" });
|
|
146
146
|
}
|
|
147
147
|
});
|
|
148
|
-
const $$splitComponentImporter$3 = () => import("./stats-
|
|
148
|
+
const $$splitComponentImporter$3 = () => import("./stats-Ae6umrPI.js");
|
|
149
149
|
const statsSearchSchema = z.object({
|
|
150
150
|
tab: z.enum(["overview", "projects"]).default("overview").catch("overview")
|
|
151
151
|
});
|
|
@@ -153,11 +153,11 @@ const Route$3 = createFileRoute("/_dashboard/stats")({
|
|
|
153
153
|
validateSearch: statsSearchSchema,
|
|
154
154
|
component: lazyRouteComponent($$splitComponentImporter$3, "component")
|
|
155
155
|
});
|
|
156
|
-
const $$splitComponentImporter$2 = () => import("./settings-
|
|
156
|
+
const $$splitComponentImporter$2 = () => import("./settings-D0FgLIR5.js");
|
|
157
157
|
const Route$2 = createFileRoute("/_dashboard/settings")({
|
|
158
158
|
component: lazyRouteComponent($$splitComponentImporter$2, "component")
|
|
159
159
|
});
|
|
160
|
-
const $$splitComponentImporter$1 = () => import("./index-
|
|
160
|
+
const $$splitComponentImporter$1 = () => import("./index-hFrIPkke.js");
|
|
161
161
|
const sessionsSearchSchema = z.object({
|
|
162
162
|
page: z.number().int().min(1).default(1).catch(1),
|
|
163
163
|
pageSize: z.number().int().min(5).max(100).default(5).catch(5),
|
|
@@ -169,7 +169,7 @@ const Route$1 = createFileRoute("/_dashboard/sessions/")({
|
|
|
169
169
|
validateSearch: sessionsSearchSchema,
|
|
170
170
|
component: lazyRouteComponent($$splitComponentImporter$1, "component")
|
|
171
171
|
});
|
|
172
|
-
const $$splitComponentImporter = () => import("./_sessionId-
|
|
172
|
+
const $$splitComponentImporter = () => import("./_sessionId-DIUMcrWR.js");
|
|
173
173
|
const searchSchema = z.object({
|
|
174
174
|
project: z.string().optional()
|
|
175
175
|
});
|
package/dist/server/assets/{session-detail.server-CO5XwLSv.js → session-detail.server-BIoOQwSE.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { c as createServerRpc } from "./createServerRpc-Bd3B-Ah9.js";
|
|
2
2
|
import * as path from "node:path";
|
|
3
3
|
import * as fs from "node:fs";
|
|
4
|
-
import { e as extractProjectName, p as parseDetail,
|
|
4
|
+
import { e as extractProjectName, p as parseDetail, g as getProjectsDir, d as decodeProjectDirName } from "./session-parser-B0pdBvgT.js";
|
|
5
5
|
import { c as createServerFn } from "../server.js";
|
|
6
6
|
import "node:os";
|
|
7
7
|
import "node:readline";
|
|
@@ -664,11 +664,11 @@ function extractTextContent(msg) {
|
|
|
664
664
|
return texts.length > 0 ? texts.join("\n").slice(0, 500) : void 0;
|
|
665
665
|
}
|
|
666
666
|
export {
|
|
667
|
-
|
|
667
|
+
getStatsPath as a,
|
|
668
668
|
extractSessionId as b,
|
|
669
669
|
parseSummary as c,
|
|
670
670
|
decodeProjectDirName as d,
|
|
671
671
|
extractProjectName as e,
|
|
672
|
-
|
|
672
|
+
getProjectsDir as g,
|
|
673
673
|
parseDetail as p
|
|
674
674
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
2
|
import * as path from "node:path";
|
|
3
|
-
import {
|
|
3
|
+
import { g as getProjectsDir, d as decodeProjectDirName, e as extractProjectName, b as extractSessionId, c as parseSummary } from "./session-parser-B0pdBvgT.js";
|
|
4
4
|
async function scanProjects() {
|
|
5
5
|
const projectsDir = getProjectsDir();
|
|
6
6
|
let entries;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { c as createServerRpc } from "./createServerRpc-Bd3B-Ah9.js";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import { a as scanAllSessions, g as getActiveSessions } from "./session-scanner-
|
|
3
|
+
import { a as scanAllSessions, g as getActiveSessions } from "./session-scanner-CpgOq5m1.js";
|
|
4
4
|
import { c as createServerFn } from "../server.js";
|
|
5
5
|
import "node:fs";
|
|
6
6
|
import "node:path";
|
|
7
|
-
import "./session-parser-
|
|
7
|
+
import "./session-parser-B0pdBvgT.js";
|
|
8
8
|
import "node:os";
|
|
9
9
|
import "node:readline";
|
|
10
10
|
import "@tanstack/history";
|
|
@@ -3,7 +3,7 @@ import { useState } from "react";
|
|
|
3
3
|
import { useQuery } from "@tanstack/react-query";
|
|
4
4
|
import { s as settingsQuery, u as useSettingsMutation } from "./settings.queries-DSQd324O.js";
|
|
5
5
|
import { a as SUBSCRIPTION_TIERS, b as DEFAULT_PRICING, D as DEFAULT_SETTINGS } from "./settings.types-DntadCHo.js";
|
|
6
|
-
import { u as usePrivacy } from "./router-
|
|
6
|
+
import { u as usePrivacy } from "./router-5hznwWqr.js";
|
|
7
7
|
import "./createSsrRpc-CVg2UDl0.js";
|
|
8
8
|
import "../server.js";
|
|
9
9
|
import "@tanstack/history";
|
|
@@ -8,7 +8,7 @@ import { format, addDays, getDay, parseISO, startOfISOWeek } from "date-fns";
|
|
|
8
8
|
import { createPortal } from "react-dom";
|
|
9
9
|
import { f as formatTokenCount, a as formatDuration, b as formatRelativeTime, c as formatUSD } from "./format-DIZHV7IJ.js";
|
|
10
10
|
import { Link } from "@tanstack/react-router";
|
|
11
|
-
import { u as usePrivacy, R as Route } from "./router-
|
|
11
|
+
import { u as usePrivacy, R as Route } from "./router-5hznwWqr.js";
|
|
12
12
|
import { u as useSessionCost, E as ExportDropdown, d as downloadFile, a as dailyActivityToCSV, b as dailyTokensToCSV, m as modelUsageToCSV, s as statsToJSON } from "./useSessionCost-CYs5UOX-.js";
|
|
13
13
|
import "@tanstack/history";
|
|
14
14
|
import "@tanstack/router-core/ssr/client";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { c as createServerRpc } from "./createServerRpc-Bd3B-Ah9.js";
|
|
2
2
|
import * as fs from "node:fs";
|
|
3
|
-
import {
|
|
3
|
+
import { a as getStatsPath, p as parseDetail } from "./session-parser-B0pdBvgT.js";
|
|
4
4
|
import * as path from "node:path";
|
|
5
5
|
import * as os from "node:os";
|
|
6
6
|
import { z } from "zod";
|
|
7
|
-
import { s as scanAllSessionsWithPaths } from "./session-scanner-
|
|
7
|
+
import { s as scanAllSessionsWithPaths } from "./session-scanner-CpgOq5m1.js";
|
|
8
8
|
import { c as createServerFn } from "../server.js";
|
|
9
9
|
import "node:readline";
|
|
10
10
|
import "@tanstack/history";
|
package/dist/server/server.js
CHANGED
|
@@ -423,7 +423,7 @@ function getResponse() {
|
|
|
423
423
|
return event.res;
|
|
424
424
|
}
|
|
425
425
|
async function getStartManifest(matchedRoutes) {
|
|
426
|
-
const { tsrStartManifest } = await import("./assets/_tanstack-start-manifest_v-
|
|
426
|
+
const { tsrStartManifest } = await import("./assets/_tanstack-start-manifest_v-Dmhlhehg.js");
|
|
427
427
|
const startManifest = tsrStartManifest();
|
|
428
428
|
const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes[rootRouteId] || {};
|
|
429
429
|
rootRoute.assets = rootRoute.assets || [];
|
|
@@ -577,12 +577,12 @@ function createMultiplexedStream(jsonStream, rawStreams) {
|
|
|
577
577
|
}
|
|
578
578
|
});
|
|
579
579
|
}
|
|
580
|
-
const manifest = { "
|
|
581
|
-
functionName: "getStats_createServerFn_handler",
|
|
582
|
-
importer: () => import("./assets/stats.server-iJ_z7eUN.js")
|
|
583
|
-
}, "ff8a3161afdfa175e9c519e4146a56ab5bce6e80745e99cfc2191ebbb7a859bb": {
|
|
580
|
+
const manifest = { "ff8a3161afdfa175e9c519e4146a56ab5bce6e80745e99cfc2191ebbb7a859bb": {
|
|
584
581
|
functionName: "getSessionDetail_createServerFn_handler",
|
|
585
|
-
importer: () => import("./assets/session-detail.server-
|
|
582
|
+
importer: () => import("./assets/session-detail.server-BIoOQwSE.js")
|
|
583
|
+
}, "4b9a58c176f487b49800a372100037cdf33cf048f3592a449f115c7e3f5ea799": {
|
|
584
|
+
functionName: "getStats_createServerFn_handler",
|
|
585
|
+
importer: () => import("./assets/stats.server-DhzOihwM.js")
|
|
586
586
|
}, "810657681a273df5b4e58f0d8fcc6a5451598b489431b9bcaa98eea0ad815da8": {
|
|
587
587
|
functionName: "getSettings_createServerFn_handler",
|
|
588
588
|
importer: () => import("./assets/settings.server-6B2PvLgf.js")
|
|
@@ -591,16 +591,19 @@ const manifest = { "4b9a58c176f487b49800a372100037cdf33cf048f3592a449f115c7e3f5e
|
|
|
591
591
|
importer: () => import("./assets/settings.server-6B2PvLgf.js")
|
|
592
592
|
}, "bf8e4a7901f1843bdc9c46be1ad5ad59c615b8bbe611b73eb3ff28f20e43ee0d": {
|
|
593
593
|
functionName: "getSessionList_createServerFn_handler",
|
|
594
|
-
importer: () => import("./assets/sessions.server-
|
|
594
|
+
importer: () => import("./assets/sessions.server-Biq8gbAJ.js")
|
|
595
595
|
}, "839d29fe93dfa2a6d506af7b48ca25197190a5ff4c796e970ddfdc6e8c98827f": {
|
|
596
596
|
functionName: "getActiveSessionList_createServerFn_handler",
|
|
597
|
-
importer: () => import("./assets/sessions.server-
|
|
597
|
+
importer: () => import("./assets/sessions.server-Biq8gbAJ.js")
|
|
598
598
|
}, "a3f42f9012fd83586787da8f7cb90649da739dd947d867eb67572f68735ff495": {
|
|
599
599
|
functionName: "getPaginatedSessions_createServerFn_handler",
|
|
600
|
-
importer: () => import("./assets/sessions.server-
|
|
600
|
+
importer: () => import("./assets/sessions.server-Biq8gbAJ.js")
|
|
601
|
+
}, "955327d72ca3168c4751159ca07b8fb0fe0d2381dd0b991f06b941480959fbe8": {
|
|
602
|
+
functionName: "getAppInfo_createServerFn_handler",
|
|
603
|
+
importer: () => import("./assets/app-info.server-CXcS0a5s.js")
|
|
601
604
|
}, "64052f224a1d6696436e5d3deeee2b798f0742e1292ffabd038c3a7bf75e6fcb": {
|
|
602
605
|
functionName: "getProjectAnalytics_createServerFn_handler",
|
|
603
|
-
importer: () => import("./assets/project-analytics.server-
|
|
606
|
+
importer: () => import("./assets/project-analytics.server-Bxk8-NnT.js")
|
|
604
607
|
} };
|
|
605
608
|
async function getServerFnById(id) {
|
|
606
609
|
const serverFnInfo = manifest[id];
|
|
@@ -1016,7 +1019,7 @@ let entriesPromise;
|
|
|
1016
1019
|
let baseManifestPromise;
|
|
1017
1020
|
let cachedFinalManifestPromise;
|
|
1018
1021
|
async function loadEntries() {
|
|
1019
|
-
const routerEntry = await import("./assets/router-
|
|
1022
|
+
const routerEntry = await import("./assets/router-5hznwWqr.js").then((n) => n.r);
|
|
1020
1023
|
const startEntry = await import("./assets/start-HYkvq4Ni.js");
|
|
1021
1024
|
return { startEntry, routerEntry };
|
|
1022
1025
|
}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as e,u as o,L as r,O as i}from"./main-CV28H4XG.js";import{u as c}from"./createServerFn-BYTDoNe-.js";import{a as x}from"./sessions.queries-tzrs5GhP.js";function h(){const{data:t}=c(x),a=t?.length??0;return a===0?null:e.jsx("span",{className:"ml-auto rounded-full bg-emerald-500/20 px-1.5 py-0.5 text-[10px] font-medium text-emerald-400",children:a})}const d=[{to:"/sessions",label:"Sessions",icon:e.jsxs("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[e.jsx("line",{x1:"2",y1:"4",x2:"14",y2:"4"}),e.jsx("line",{x1:"2",y1:"8",x2:"14",y2:"8"}),e.jsx("line",{x1:"2",y1:"12",x2:"14",y2:"12"})]})},{to:"/stats",label:"Stats",icon:e.jsxs("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"currentColor",children:[e.jsx("rect",{x:"1",y:"8",width:"3",height:"7",rx:"0.5"}),e.jsx("rect",{x:"6.5",y:"4",width:"3",height:"11",rx:"0.5"}),e.jsx("rect",{x:"12",y:"1",width:"3",height:"14",rx:"0.5"})]})},{to:"/settings",label:"Settings",icon:e.jsxs("svg",{className:"h-4 w-4",viewBox:"0 0 16 16",fill:"currentColor",children:[e.jsx("path",{d:"M8 10a2 2 0 100-4 2 2 0 000 4z"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M6.5.8a1 1 0 011-.8h1a1 1 0 011 .8l.15.9a5.5 5.5 0 011.1.64l.86-.36a1 1 0 011.17.36l.5.86a1 1 0 01-.18 1.17l-.7.55a5.5 5.5 0 010 1.27l.7.55a1 1 0 01.18 1.17l-.5.86a1 1 0 01-1.17.36l-.86-.36a5.5 5.5 0 01-1.1.64l-.14.9a1 1 0 01-1 .8h-1a1 1 0 01-1-.8l-.14-.9a5.5 5.5 0 01-1.1-.64l-.87.36a1 1 0 01-1.17-.36l-.5-.86a1 1 0 01.18-1.17l.7-.55a5.5 5.5 0 010-1.27l-.7-.55a1 1 0 01-.18-1.17l.5-.86a1 1 0 011.17-.36l.87.36a5.5 5.5 0 011.1-.64L6.5.8zM8 11a3 3 0 100-6 3 3 0 000 6z"})]})}];function m({children:t}){const a=o(),l=a[a.length-1]?.pathname??"";return e.jsxs("div",{className:"flex min-h-screen",children:[e.jsxs("aside",{className:"flex w-56 shrink-0 flex-col border-r border-gray-800 bg-gray-950",children:[e.jsx("div",{className:"flex h-14 items-center border-b border-gray-800 px-4",children:e.jsxs(r,{to:"/sessions",className:"text-sm font-bold text-white",children:[e.jsx("span",{className:"text-brand-500",children:"Claude"})," Dashboard"]})}),e.jsx("nav",{className:"flex-1 p-3",children:d.map(s=>{const n=l.startsWith(s.to);return e.jsxs(r,{to:s.to,className:`flex items-center gap-2.5 rounded-lg px-3 py-2 text-sm transition-colors ${n?"bg-gray-800 text-white":"text-gray-400 hover:bg-gray-800/50 hover:text-gray-200"}`,children:[e.jsx("span",{className:"text-gray-500",children:s.icon}),s.label,s.to==="/sessions"&&e.jsx(h,{})]},s.to)})}),e.jsx("div",{className:"border-t border-gray-800 p-3",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("a",{href:"https://github.com/dlupiak/claude-session-dashboard",target:"_blank",rel:"noopener noreferrer",className:"text-gray-500 hover:text-gray-300 transition-colors",title:"GitHub Repository",children:e.jsx("svg",{className:"w-4 h-4",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsx("path",{d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"})})}),e.jsx("a",{href:"https://www.npmjs.com/package/claude-session-dashboard",target:"_blank",rel:"noopener noreferrer",className:"text-gray-500 hover:text-gray-300 transition-colors",title:"npm Package",children:e.jsx("svg",{className:"w-4 h-4",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsx("path",{d:"M0 0v16h16V0H0zm13 13H8V5H5v8H3V3h10v10z"})})})]}),e.jsx("p",{className:"text-xs text-gray-600",children:"Read-only"})]})})]}),e.jsx("main",{className:"flex-1 overflow-auto",children:e.jsx("div",{className:"mx-auto max-w-5xl px-6 py-6",children:t})})]})}function j(){return e.jsx(m,{children:e.jsx(i,{})})}export{j as component};
|