coderadar 0.1.1 → 0.2.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.
package/README.md ADDED
@@ -0,0 +1,137 @@
1
+ # CodeRadar CLI
2
+
3
+ ![npm version](https://img.shields.io/npm/v/coderadar.svg)
4
+ ![license](https://img.shields.io/npm/l/coderadar.svg)
5
+ ![node version](https://img.shields.io/node/v/coderadar.svg)
6
+
7
+ Track projects, monitor Claude Code usage, analyze costs — from your terminal.
8
+
9
+ ## Quick Start
10
+
11
+ ```bash
12
+ # Sync local data to cloud dashboard
13
+ npx coderadar sync --token <your-token>
14
+
15
+ # Generate local HTML dashboard (offline mode)
16
+ npx coderadar generate
17
+ ```
18
+
19
+ ## Installation
20
+
21
+ ```bash
22
+ # Run directly with npx (recommended)
23
+ npx coderadar
24
+
25
+ # Or install globally
26
+ npm install -g coderadar
27
+ ```
28
+
29
+ ## Commands
30
+
31
+ ### `coderadar sync`
32
+
33
+ Sync local project data to the cloud dashboard.
34
+
35
+ ```bash
36
+ coderadar sync --token <your-token>
37
+ ```
38
+
39
+ Options:
40
+ - `--token <token>` - Your cloud dashboard authentication token
41
+ - `--url <url>` - Custom cloud URL (defaults to https://coderadar-guillaumebeylounehs-projects.vercel.app)
42
+
43
+ ### `coderadar generate`
44
+
45
+ Generate a static HTML dashboard from local data (offline mode).
46
+
47
+ ```bash
48
+ coderadar generate
49
+ ```
50
+
51
+ The dashboard is saved to `~/.coderadar/dashboard.html` and automatically opens in your browser.
52
+
53
+ ### `coderadar init`
54
+
55
+ Interactive setup wizard to configure your CodeRadar installation.
56
+
57
+ ```bash
58
+ coderadar init
59
+ ```
60
+
61
+ ### `coderadar config`
62
+
63
+ Manage configuration settings.
64
+
65
+ ```bash
66
+ # Set cloud token
67
+ coderadar config set cloudToken <token>
68
+
69
+ # Set cloud URL
70
+ coderadar config set cloudUrl <url>
71
+
72
+ # View current configuration
73
+ coderadar config list
74
+ ```
75
+
76
+ ## Cloud Dashboard
77
+
78
+ Access your cloud dashboard at:
79
+ **https://coderadar-guillaumebeylounehs-projects.vercel.app**
80
+
81
+ The cloud dashboard provides:
82
+ - Real-time project monitoring across devices
83
+ - AI-powered summaries and insights (Pro tier)
84
+ - Team collaboration features (Team tier)
85
+ - Multi-currency budget tracking (Pro tier)
86
+ - PDF exports and Slack/Discord webhooks (Team tier)
87
+
88
+ ## How It Works
89
+
90
+ CodeRadar CLI scans your local development environment to collect:
91
+
92
+ 1. **Project Data**
93
+ - Git statistics (commits, branches, contributors)
94
+ - Project health scores
95
+ - Technology stack detection
96
+ - Last activity timestamps
97
+
98
+ 2. **Claude Code Sessions**
99
+ - Session history and duration
100
+ - Model usage (Opus 4.6, Sonnet 4.5, etc.)
101
+ - Token consumption
102
+ - Conversation contexts
103
+
104
+ 3. **API Costs**
105
+ - Token-based cost calculations
106
+ - Budget tracking and alerts
107
+ - Spending trends over time
108
+
109
+ All data is synced to the cloud dashboard for cross-device access, team sharing, and advanced analytics.
110
+
111
+ ## Requirements
112
+
113
+ - Node.js >= 18.0.0
114
+ - Git (for project scanning)
115
+ - Claude Code (for session tracking)
116
+
117
+ ## Privacy
118
+
119
+ CodeRadar CLI respects your privacy:
120
+ - All data stays local by default
121
+ - Cloud sync is opt-in (requires explicit `--token`)
122
+ - No telemetry or analytics unless synced
123
+ - Open source and auditable
124
+
125
+ ## License
126
+
127
+ MIT License - Copyright (c) 2026 Guillaume Beylouneh
128
+
129
+ ## Links
130
+
131
+ - [GitHub Repository](https://github.com/GuillaumeBeylouneh/coderadar)
132
+ - [Cloud Dashboard](https://coderadar-guillaumebeylounehs-projects.vercel.app)
133
+ - [Issue Tracker](https://github.com/GuillaumeBeylouneh/coderadar/issues)
134
+
135
+ ## Author
136
+
137
+ Guillaume Beylouneh
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,iBAmGrD"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,iBAuIrD"}
@@ -1,9 +1,9 @@
1
- import { loadConfig } from 'coderadar-core';
1
+ import { loadConfig, enrichTimelineWithSessionData } from 'coderadar-core';
2
2
  import { collectDashboardData } from '../collector.js';
3
3
  import ora from 'ora';
4
4
  export async function syncCommand(options) {
5
5
  const config = loadConfig();
6
- const cloudUrl = options.url || config.cloudUrl || 'https://coderadar.dev';
6
+ const cloudUrl = options.url || config.cloudUrl || 'https://coderadar-guillaumebeylounehs-projects.vercel.app';
7
7
  const token = options.token || config.cloudToken || process.env.CODERADAR_TOKEN;
8
8
  if (!token) {
9
9
  console.error('No auth token found. Set one with:\n' +
@@ -16,6 +16,10 @@ export async function syncCommand(options) {
16
16
  const spinner = ora('Collecting local data...').start();
17
17
  try {
18
18
  const data = collectDashboardData(config, { noCosts: options.noCosts });
19
+ spinner.text = 'Enriching session data...';
20
+ // Enrich timeline with token/cost/model data
21
+ const sessionEnrichment = await enrichTimelineWithSessionData(config.claudeDir, data.timeline, 60);
22
+ spinner.text = 'Transforming data for sync...';
19
23
  // Transform projects for API
20
24
  const projects = data.projects.map((p) => ({
21
25
  name: p.name,
@@ -33,27 +37,49 @@ export async function syncCommand(options) {
33
37
  last_commit_message: p.lastCommit || null,
34
38
  updated_at: new Date().toISOString(),
35
39
  }));
36
- // Transform sessions from timeline
37
- const sessions = data.timeline.map((t) => ({
38
- session_id: t.sessionId,
39
- project_path: null,
40
- title: t.summary || t.project || null,
41
- model: null,
42
- started_at: t.date,
43
- duration_minutes: t.stats?.duration || null,
44
- input_tokens: 0,
45
- output_tokens: 0,
46
- cost_usd: null,
47
- }));
48
- // Transform costs
49
- const daily_costs = data.costDaily.map((c) => ({
50
- date: c.date,
51
- total_cost_usd: c.totalCost || 0,
52
- total_input_tokens: c.inputTokens || 0,
53
- total_output_tokens: c.outputTokens || 0,
54
- model: c.modelBreakdowns?.[0]?.modelName || null,
55
- session_count: 0,
56
- }));
40
+ // Transform sessions from timeline with enrichment data
41
+ const sessions = data.timeline.map((t) => {
42
+ const enrichment = sessionEnrichment.get(t.sessionId);
43
+ return {
44
+ session_id: t.sessionId,
45
+ project_path: enrichment?.projectPath || t.project || null,
46
+ title: t.summary || t.project || null,
47
+ model: enrichment?.model || null,
48
+ started_at: t.date,
49
+ duration_minutes: t.stats?.duration || null,
50
+ input_tokens: enrichment?.inputTokens || 0,
51
+ output_tokens: enrichment?.outputTokens || 0,
52
+ cost_usd: enrichment?.costUsd || null,
53
+ };
54
+ });
55
+ // Transform costs - create one record per model per day to match Supabase UNIQUE constraint
56
+ const daily_costs = [];
57
+ for (const c of data.costDaily) {
58
+ if (c.modelBreakdowns && c.modelBreakdowns.length > 0) {
59
+ // Create one record per model
60
+ for (const mb of c.modelBreakdowns) {
61
+ daily_costs.push({
62
+ date: c.date,
63
+ total_cost_usd: mb.cost || 0,
64
+ total_input_tokens: mb.inputTokens || 0,
65
+ total_output_tokens: mb.outputTokens || 0,
66
+ model: mb.modelName || null,
67
+ session_count: 0, // We don't have session count per model yet
68
+ });
69
+ }
70
+ }
71
+ else {
72
+ // Fallback: single record with aggregated data
73
+ daily_costs.push({
74
+ date: c.date,
75
+ total_cost_usd: c.totalCost || 0,
76
+ total_input_tokens: c.inputTokens || 0,
77
+ total_output_tokens: c.outputTokens || 0,
78
+ model: null,
79
+ session_count: 0,
80
+ });
81
+ }
82
+ }
57
83
  spinner.text = `Syncing ${projects.length} projects, ${sessions.length} sessions, ${daily_costs.length} cost records...`;
58
84
  const response = await fetch(`${cloudUrl}/api/sync`, {
59
85
  method: 'POST',
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,GAAG,MAAM,KAAK,CAAC;AAQtB,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,IAAI,2DAA2D,CAAC;IAC/G,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAEhF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CACX,sCAAsC;YACtC,kDAAkD;YAClD,6BAA6B;YAC7B,mDAAmD;YACnD,uBAAuB,GAAG,QAAQ,GAAG,qBAAqB,CAC3D,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;IAExD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAExE,OAAO,CAAC,IAAI,GAAG,2BAA2B,CAAC;QAE3C,6CAA6C;QAC7C,MAAM,iBAAiB,GAAG,MAAM,6BAA6B,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAEnG,OAAO,CAAC,IAAI,GAAG,+BAA+B,CAAC;QAE/C,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI;YACtB,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI;YACxB,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS;YAC7B,YAAY,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC;YAChC,aAAa,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC;YACjC,mBAAmB,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC;YACvC,aAAa,EAAE,CAAC,CAAC,WAAW,IAAI,KAAK;YACrC,eAAe,EAAE,CAAC,CAAC,aAAa,IAAI,KAAK;YACzC,UAAU,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;YAC/B,gBAAgB,EAAE,CAAC,CAAC,cAAc,IAAI,IAAI;YAC1C,mBAAmB,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;YACzC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC,CAAC;QAEJ,wDAAwD;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACvC,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACtD,OAAO;gBACL,UAAU,EAAE,CAAC,CAAC,SAAS;gBACvB,YAAY,EAAE,UAAU,EAAE,WAAW,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI;gBAC1D,KAAK,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI;gBACrC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,IAAI;gBAChC,UAAU,EAAE,CAAC,CAAC,IAAI;gBAClB,gBAAgB,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,IAAI,IAAI;gBAC3C,YAAY,EAAE,UAAU,EAAE,WAAW,IAAI,CAAC;gBAC1C,aAAa,EAAE,UAAU,EAAE,YAAY,IAAI,CAAC;gBAC5C,QAAQ,EAAE,UAAU,EAAE,OAAO,IAAI,IAAI;aACtC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,4FAA4F;QAC5F,MAAM,WAAW,GAOZ,EAAE,CAAC;QAER,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtD,8BAA8B;gBAC9B,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;oBACnC,WAAW,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,cAAc,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;wBAC5B,kBAAkB,EAAE,EAAE,CAAC,WAAW,IAAI,CAAC;wBACvC,mBAAmB,EAAE,EAAE,CAAC,YAAY,IAAI,CAAC;wBACzC,KAAK,EAAE,EAAE,CAAC,SAAS,IAAI,IAAI;wBAC3B,aAAa,EAAE,CAAC,EAAE,4CAA4C;qBAC/D,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,+CAA+C;gBAC/C,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,cAAc,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC;oBAChC,kBAAkB,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC;oBACtC,mBAAmB,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC;oBACxC,KAAK,EAAE,IAAI;oBACX,aAAa,EAAE,CAAC;iBACjB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,GAAG,WAAW,QAAQ,CAAC,MAAM,cAAc,QAAQ,CAAC,MAAM,cAAc,WAAW,CAAC,MAAM,kBAAkB,CAAC;QAEzH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,WAAW,EAAE;YACnD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,KAAK,EAAE;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;SAC1D,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,gBAAgB,QAAQ,CAAC,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAEjC,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAElC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,SAAS,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,SAAS,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,cAAc,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,YAAY,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "coderadar",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Intelligent dashboard for Claude Code project supervision - scan projects, track sessions, monitor costs",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -24,7 +24,7 @@
24
24
  "node": ">=18.0.0"
25
25
  },
26
26
  "dependencies": {
27
- "coderadar-core": "^0.1.0",
27
+ "coderadar-core": "^0.2.0",
28
28
  "commander": "^13.0.0",
29
29
  "ora": "^8.1.0",
30
30
  "open": "^10.1.0"