jeopi-stats 16.2.13 → 16.2.15
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/CHANGELOG.md +2 -0
- package/README.md +3 -3
- package/dist/types/gain-aggregator.d.ts +1 -1
- package/package.json +4 -4
- package/src/gain-aggregator.ts +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [16.2.14] - 2026-07-02
|
|
6
|
+
|
|
5
7
|
### Changed
|
|
6
8
|
|
|
7
9
|
- Rebranded the dashboard for jeopi: page title is now `jeopi · stats`, the nav-rail/mobile-drawer logo reads "JEOPI" with the persona tagline "Encode intention. Decode software." and a synthwave gradient, and the CLI summary/help headers carry the jeopi name.
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ Local observability dashboard for AI usage statistics.
|
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
- **Session log parsing**: Reads JSONL session logs from `~/.
|
|
7
|
+
- **Session log parsing**: Reads JSONL session logs from `~/.jeopi/agent/sessions/`
|
|
8
8
|
- **SQLite aggregation**: Efficient stats storage and querying using `bun:sqlite`
|
|
9
9
|
- **Web dashboard**: Real-time metrics visualization with Chart.js
|
|
10
10
|
- **Incremental sync**: Only processes new/modified log entries
|
|
@@ -64,8 +64,8 @@ console.log(stats.byModel[0].avgTokensPerSecond);
|
|
|
64
64
|
|
|
65
65
|
## Data Storage
|
|
66
66
|
|
|
67
|
-
- **Session logs**: `~/.
|
|
68
|
-
- **Stats database**: `~/.
|
|
67
|
+
- **Session logs**: `~/.jeopi/agent/sessions/` (JSONL files)
|
|
68
|
+
- **Stats database**: `~/.jeopi/stats.db` (SQLite)
|
|
69
69
|
|
|
70
70
|
## Dashboard
|
|
71
71
|
|
|
@@ -10,7 +10,7 @@ import type { GainDashboardStats } from "./shared-types";
|
|
|
10
10
|
/**
|
|
11
11
|
* Collapse conventional worktree sub-paths to their logical project root.
|
|
12
12
|
*
|
|
13
|
-
* Rules are generic:
|
|
13
|
+
* Rules are generic: jeopi internal wt paths are dropped; conventional worktree
|
|
14
14
|
* suffixes (`.wt/`, `-wt/`, `.worktrees/`, `-worktrees/`) are stripped. No
|
|
15
15
|
* author-specific IDE or tool paths are baked in.
|
|
16
16
|
*
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "jeopi-stats",
|
|
4
|
-
"version": "16.2.
|
|
4
|
+
"version": "16.2.15",
|
|
5
5
|
"description": "Local observability dashboard for pi AI usage statistics",
|
|
6
6
|
"homepage": "https://github.com/akillness/jeopi",
|
|
7
7
|
"author": "Can Boluk",
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
"fmt": "biome format --write ."
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"jeopi-ai": "16.2.
|
|
43
|
-
"jeopi-catalog": "16.2.
|
|
44
|
-
"jeopi-utils": "16.2.
|
|
42
|
+
"jeopi-ai": "16.2.15",
|
|
43
|
+
"jeopi-catalog": "16.2.15",
|
|
44
|
+
"jeopi-utils": "16.2.15",
|
|
45
45
|
"@tailwindcss/node": "^4.3.0",
|
|
46
46
|
"chart.js": "^4.5.1",
|
|
47
47
|
"date-fns": "^4.4.0",
|
package/src/gain-aggregator.ts
CHANGED
|
@@ -57,7 +57,7 @@ function matchesProject(cwd: string | undefined, project: string): boolean {
|
|
|
57
57
|
/**
|
|
58
58
|
* Collapse conventional worktree sub-paths to their logical project root.
|
|
59
59
|
*
|
|
60
|
-
* Rules are generic:
|
|
60
|
+
* Rules are generic: jeopi internal wt paths are dropped; conventional worktree
|
|
61
61
|
* suffixes (`.wt/`, `-wt/`, `.worktrees/`, `-worktrees/`) are stripped. No
|
|
62
62
|
* author-specific IDE or tool paths are baked in.
|
|
63
63
|
*
|
|
@@ -66,7 +66,7 @@ function matchesProject(cwd: string | undefined, project: string): boolean {
|
|
|
66
66
|
export function normalizeProjectPath(p: string): string | null {
|
|
67
67
|
const clean = canonicalProjectPath(p);
|
|
68
68
|
if (TEMP_PATH_RE.test(clean)) return null;
|
|
69
|
-
if (/\/\.omp\/wt\//u.test(clean)) return null;
|
|
69
|
+
if (/\/\.(?:omp|jeopi)\/wt\//u.test(clean)) return null;
|
|
70
70
|
|
|
71
71
|
const worktreePatterns = [
|
|
72
72
|
/^(.+)\/\.wt\/[^/]+(?:\/.*)?$/u,
|