@code-insights/cli 3.0.3 → 3.1.1

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 (62) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dashboard-dist/assets/{index-CUWKxcRo.js → index-BuJps5yp.js} +40 -40
  3. package/dashboard-dist/index.html +1 -1
  4. package/dist/commands/connect.d.ts +5 -0
  5. package/dist/commands/connect.d.ts.map +1 -0
  6. package/dist/commands/connect.js +39 -0
  7. package/dist/commands/connect.js.map +1 -0
  8. package/dist/commands/insights.d.ts +13 -0
  9. package/dist/commands/insights.d.ts.map +1 -0
  10. package/dist/commands/insights.js +87 -0
  11. package/dist/commands/insights.js.map +1 -0
  12. package/dist/commands/link.d.ts +8 -0
  13. package/dist/commands/link.d.ts.map +1 -0
  14. package/dist/commands/link.js +39 -0
  15. package/dist/commands/link.js.map +1 -0
  16. package/dist/commands/stats/data/cache.d.ts +29 -0
  17. package/dist/commands/stats/data/cache.d.ts.map +1 -0
  18. package/dist/commands/stats/data/cache.js +197 -0
  19. package/dist/commands/stats/data/cache.js.map +1 -0
  20. package/dist/commands/stats/data/firestore.d.ts +13 -0
  21. package/dist/commands/stats/data/firestore.d.ts.map +1 -0
  22. package/dist/commands/stats/data/firestore.js +170 -0
  23. package/dist/commands/stats/data/firestore.js.map +1 -0
  24. package/dist/commands/sync.d.ts +1 -0
  25. package/dist/commands/sync.d.ts.map +1 -1
  26. package/dist/commands/sync.js +52 -23
  27. package/dist/commands/sync.js.map +1 -1
  28. package/dist/db/schema.d.ts +1 -0
  29. package/dist/db/schema.d.ts.map +1 -1
  30. package/dist/db/schema.js +1 -0
  31. package/dist/db/schema.js.map +1 -1
  32. package/dist/db/write.d.ts +5 -0
  33. package/dist/db/write.d.ts.map +1 -1
  34. package/dist/db/write.js +11 -0
  35. package/dist/db/write.js.map +1 -1
  36. package/dist/firebase/client.d.ts +45 -0
  37. package/dist/firebase/client.d.ts.map +1 -0
  38. package/dist/firebase/client.js +344 -0
  39. package/dist/firebase/client.js.map +1 -0
  40. package/dist/index.js +0 -0
  41. package/dist/parser/insights.d.ts +7 -0
  42. package/dist/parser/insights.d.ts.map +1 -0
  43. package/dist/parser/insights.js +271 -0
  44. package/dist/parser/insights.js.map +1 -0
  45. package/dist/providers/codex.js +31 -0
  46. package/dist/providers/codex.js.map +1 -1
  47. package/dist/providers/copilot-cli.js +14 -2
  48. package/dist/providers/copilot-cli.js.map +1 -1
  49. package/dist/providers/cursor.js +44 -2
  50. package/dist/providers/cursor.js.map +1 -1
  51. package/dist/utils/firebase-json.d.ts +87 -0
  52. package/dist/utils/firebase-json.d.ts.map +1 -0
  53. package/dist/utils/firebase-json.js +207 -0
  54. package/dist/utils/firebase-json.js.map +1 -0
  55. package/dist/utils/telemetry.d.ts.map +1 -1
  56. package/dist/utils/telemetry.js +28 -3
  57. package/dist/utils/telemetry.js.map +1 -1
  58. package/package.json +3 -1
  59. package/server-dist/index.d.ts +9 -1
  60. package/server-dist/index.d.ts.map +1 -1
  61. package/server-dist/index.js +15 -5
  62. package/server-dist/index.js.map +1 -1
@@ -0,0 +1,170 @@
1
+ // ──────────────────────────────────────────────────────
2
+ // Firestore data source for stats commands
3
+ // ──────────────────────────────────────────────────────
4
+ import admin from 'firebase-admin';
5
+ import { initializeFirebase, getDb, getProjects } from '../../../firebase/client.js';
6
+ import { ProjectNotFoundError, FirestoreIndexError } from './types.js';
7
+ import { findSimilarNames } from './fuzzy-match.js';
8
+ // ──────────────────────────────────────────────────────
9
+ // Helpers
10
+ // ──────────────────────────────────────────────────────
11
+ /** Checks if error is a Firestore FAILED_PRECONDITION (missing composite index) */
12
+ function isFirestoreIndexError(error) {
13
+ if (typeof error === 'object' && error !== null && 'code' in error) {
14
+ return error.code === 9;
15
+ }
16
+ return false;
17
+ }
18
+ /** Extracts the Firebase console index-creation URL from an error message */
19
+ function extractIndexUrl(error) {
20
+ if (typeof error === 'object' && error !== null && 'message' in error) {
21
+ const message = error.message;
22
+ const match = message.match(/(https:\/\/console\.firebase\.google\.com\/[^\s"]+)/);
23
+ return match ? match[1] : null;
24
+ }
25
+ return null;
26
+ }
27
+ // ──────────────────────────────────────────────────────
28
+ // Document mapper
29
+ // ──────────────────────────────────────────────────────
30
+ /** Maps a Firestore document to the universal SessionRow shape */
31
+ function docToSessionRow(doc) {
32
+ const data = doc.data();
33
+ if (!data)
34
+ throw new Error(`Session document ${doc.id} has no data`);
35
+ return {
36
+ id: doc.id,
37
+ projectId: data.projectId,
38
+ projectName: data.projectName,
39
+ startedAt: data.startedAt?.toDate() ?? new Date(),
40
+ endedAt: data.endedAt?.toDate() ?? new Date(),
41
+ messageCount: data.messageCount ?? 0,
42
+ userMessageCount: data.userMessageCount ?? 0,
43
+ assistantMessageCount: data.assistantMessageCount ?? 0,
44
+ toolCallCount: data.toolCallCount ?? 0,
45
+ estimatedCostUsd: data.estimatedCostUsd,
46
+ totalInputTokens: data.totalInputTokens,
47
+ totalOutputTokens: data.totalOutputTokens,
48
+ cacheCreationTokens: data.cacheCreationTokens,
49
+ cacheReadTokens: data.cacheReadTokens,
50
+ primaryModel: data.primaryModel,
51
+ modelsUsed: data.modelsUsed,
52
+ generatedTitle: data.generatedTitle,
53
+ customTitle: data.customTitle,
54
+ summary: data.summary,
55
+ sessionCharacter: data.sessionCharacter,
56
+ sourceTool: data.sourceTool,
57
+ usageSource: data.usageSource,
58
+ };
59
+ }
60
+ // ──────────────────────────────────────────────────────
61
+ // FirestoreDataSource
62
+ // ──────────────────────────────────────────────────────
63
+ export class FirestoreDataSource {
64
+ config;
65
+ name = 'firestore';
66
+ constructor(config) {
67
+ this.config = config;
68
+ }
69
+ async prepare(flags) {
70
+ initializeFirebase(this.config);
71
+ if (!flags.noSync) {
72
+ try {
73
+ const { runSync } = await import('../../sync.js');
74
+ const result = await runSync({ quiet: true });
75
+ if (result.syncedCount > 0) {
76
+ return { message: `Synced ${result.syncedCount} new sessions`, dataChanged: true };
77
+ }
78
+ return { message: 'Up to date', dataChanged: false };
79
+ }
80
+ catch {
81
+ return { message: 'Sync failed (showing cached data)', dataChanged: false };
82
+ }
83
+ }
84
+ return { message: 'Sync skipped', dataChanged: false };
85
+ }
86
+ async getSessions(opts) {
87
+ const firestore = getDb();
88
+ let query = firestore.collection('sessions');
89
+ if (opts.projectId) {
90
+ query = query.where('projectId', '==', opts.projectId);
91
+ }
92
+ if (opts.sourceTool) {
93
+ query = query.where('sourceTool', '==', opts.sourceTool);
94
+ }
95
+ if (opts.periodStart) {
96
+ query = query.where('startedAt', '>=', admin.firestore.Timestamp.fromDate(opts.periodStart));
97
+ }
98
+ query = query.orderBy('startedAt', 'desc');
99
+ try {
100
+ const snapshot = await query.get();
101
+ return snapshot.docs.map(docToSessionRow);
102
+ }
103
+ catch (error) {
104
+ if (isFirestoreIndexError(error)) {
105
+ const url = extractIndexUrl(error);
106
+ throw new FirestoreIndexError(url
107
+ ? `Missing Firestore index. Create it here: ${url}`
108
+ : 'Missing Firestore composite index. Check the error details in Firebase console.', url ?? '');
109
+ }
110
+ throw error;
111
+ }
112
+ }
113
+ async getUsageStats() {
114
+ const firestore = getDb();
115
+ const doc = await firestore.collection('stats').doc('usage').get();
116
+ if (!doc.exists)
117
+ return null;
118
+ const data = doc.data();
119
+ return {
120
+ totalInputTokens: data.totalInputTokens ?? 0,
121
+ totalOutputTokens: data.totalOutputTokens ?? 0,
122
+ cacheCreationTokens: data.cacheCreationTokens ?? 0,
123
+ cacheReadTokens: data.cacheReadTokens ?? 0,
124
+ estimatedCostUsd: data.estimatedCostUsd ?? 0,
125
+ sessionsWithUsage: data.sessionsWithUsage ?? 0,
126
+ lastUpdatedAt: data.lastUpdatedAt?.toDate() ?? new Date(),
127
+ };
128
+ }
129
+ async resolveProjectId(name) {
130
+ const projects = await getProjects();
131
+ // Exact match (case-insensitive)
132
+ const exact = projects.find((p) => p.name.toLowerCase() === name.toLowerCase());
133
+ if (exact)
134
+ return { projectId: exact.id, projectName: exact.name };
135
+ // Substring match
136
+ const substring = projects.filter((p) => p.name.toLowerCase().includes(name.toLowerCase()));
137
+ if (substring.length === 1)
138
+ return { projectId: substring[0].id, projectName: substring[0].name };
139
+ // No match — throw with suggestions
140
+ const suggestions = findSimilarNames(name, projects.map((p) => p.name));
141
+ throw new ProjectNotFoundError(`Project "${name}" not found.`, name, projects.map((p) => ({ name: p.name })), suggestions);
142
+ }
143
+ async getLastSession(opts) {
144
+ const firestore = getDb();
145
+ let query = firestore.collection('sessions');
146
+ if (opts?.sourceTool) {
147
+ query = query.where('sourceTool', '==', opts.sourceTool);
148
+ }
149
+ if (opts?.projectId) {
150
+ query = query.where('projectId', '==', opts.projectId);
151
+ }
152
+ query = query.orderBy('startedAt', 'desc').limit(1);
153
+ try {
154
+ const snapshot = await query.get();
155
+ if (snapshot.empty)
156
+ return null;
157
+ return docToSessionRow(snapshot.docs[0]);
158
+ }
159
+ catch (error) {
160
+ if (isFirestoreIndexError(error)) {
161
+ const url = extractIndexUrl(error);
162
+ throw new FirestoreIndexError(url
163
+ ? `Missing Firestore index. Create it here: ${url}`
164
+ : 'Missing Firestore composite index. Check the error details in Firebase console.', url ?? '');
165
+ }
166
+ throw error;
167
+ }
168
+ }
169
+ }
170
+ //# sourceMappingURL=firestore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firestore.js","sourceRoot":"","sources":["../../../../src/commands/stats/data/firestore.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export interface SyncResult {
11
11
  syncedCount: number;
12
12
  messageCount: number;
13
13
  errorCount: number;
14
+ updatedExistingCount: number;
14
15
  }
15
16
  /**
16
17
  * Core sync logic — reusable from stats commands and other callers.
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAeA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAkL5E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B1E"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAcA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAwM5E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B1E"}
@@ -4,8 +4,7 @@ import chalk from 'chalk';
4
4
  import ora from 'ora';
5
5
  import { loadSyncState, saveSyncState } from '../utils/config.js';
6
6
  import { trackEvent } from '../utils/telemetry.js';
7
- import { insertSessionWithProject, insertMessages, recalculateUsageStats } from '../db/write.js';
8
- import { sessionExists } from '../db/read.js';
7
+ import { insertSessionWithProjectAndReturnIsNew, insertMessages, recalculateUsageStats } from '../db/write.js';
9
8
  import { getDb } from '../db/client.js';
10
9
  import { getAllProviders, getProvider } from '../providers/registry.js';
11
10
  import { setProviderVerbose } from '../providers/context.js';
@@ -25,6 +24,7 @@ export async function runSync(options = {}) {
25
24
  fail: function () { return this; },
26
25
  warn: function () { return this; },
27
26
  info: function () { return this; },
27
+ stop: function () { return this; },
28
28
  };
29
29
  const createSpinner = options.quiet
30
30
  ? () => noopSpinner
@@ -88,6 +88,7 @@ export async function runSync(options = {}) {
88
88
  let totalSyncedCount = 0;
89
89
  let totalMessageCount = 0;
90
90
  let totalErrorCount = 0;
91
+ let totalUpdatedExisting = 0;
91
92
  for (const provider of providers) {
92
93
  const providerName = provider.getProviderName();
93
94
  try {
@@ -111,7 +112,11 @@ export async function runSync(options = {}) {
111
112
  }
112
113
  continue;
113
114
  }
114
- // Process files
115
+ // Process files — accumulate per-provider counts, show one summary line after
116
+ let providerSyncedCount = 0;
117
+ let providerUpdatedCount = 0;
118
+ let providerSkippedCount = 0;
119
+ let providerMessageCount = 0;
115
120
  for (const filePath of filesToSync) {
116
121
  const fileName = path.basename(filePath);
117
122
  spinner.start(`Processing ${fileName}...`);
@@ -119,29 +124,24 @@ export async function runSync(options = {}) {
119
124
  // Parse session
120
125
  const session = await provider.parse(filePath);
121
126
  if (!session) {
122
- spinner.warn(`Skipped ${fileName} (no valid data)`);
127
+ providerSkippedCount++;
123
128
  continue;
124
129
  }
125
- // Check if already exists in SQLite (unless force)
126
- if (!options.force) {
127
- const exists = sessionExists(session.id);
128
- if (exists) {
129
- spinner.info(`Skipped ${fileName} (already synced)`);
130
- updateSyncState(syncState, filePath, session.id);
131
- saveSyncState(syncState);
132
- continue;
133
- }
134
- }
135
130
  // Write session and messages to SQLite
136
- insertSessionWithProject(session, !!options.force);
131
+ const isNew = insertSessionWithProjectAndReturnIsNew(session, !!options.force);
137
132
  insertMessages(session);
138
133
  // Update and persist sync state after each file
139
134
  // so progress survives crashes
140
135
  updateSyncState(syncState, filePath, session.id);
141
136
  saveSyncState(syncState);
137
+ if (!isNew && !options.force) {
138
+ providerUpdatedCount++;
139
+ totalUpdatedExisting++;
140
+ }
141
+ providerSyncedCount++;
142
+ providerMessageCount += session.messages.length;
142
143
  totalSyncedCount++;
143
144
  totalMessageCount += session.messages.length;
144
- spinner.succeed(`Synced ${fileName} (${session.messages.length} messages)`);
145
145
  }
146
146
  catch (error) {
147
147
  totalErrorCount++;
@@ -151,6 +151,23 @@ export async function runSync(options = {}) {
151
151
  }
152
152
  }
153
153
  }
154
+ // One summary line per provider instead of per-file noise
155
+ spinner.stop();
156
+ if (providerSyncedCount > 0 || providerSkippedCount > 0) {
157
+ const providerNewCount = providerSyncedCount - providerUpdatedCount;
158
+ const parts = [];
159
+ if (providerNewCount > 0)
160
+ parts.push(`${providerNewCount} new`);
161
+ if (providerUpdatedCount > 0)
162
+ parts.push(`${providerUpdatedCount} updated`);
163
+ if (parts.length === 0)
164
+ parts.push('0 synced');
165
+ const syncedPart = `${parts.join(', ')}${providerMessageCount > 0 ? ` (${providerMessageCount.toLocaleString()} messages)` : ''}`;
166
+ const skippedPart = providerSkippedCount > 0
167
+ ? `, ${providerSkippedCount} empty`
168
+ : '';
169
+ log(chalk.gray(` ${syncedPart}${skippedPart}`));
170
+ }
154
171
  }
155
172
  catch (error) {
156
173
  totalErrorCount++;
@@ -161,7 +178,10 @@ export async function runSync(options = {}) {
161
178
  }
162
179
  }
163
180
  // Reconcile usage stats after force sync (skip if nothing changed)
164
- if (options.force && (totalSyncedCount > 0 || totalErrorCount > 0)) {
181
+ const shouldRecalculateUsageStats = options.force
182
+ ? (totalSyncedCount > 0 || totalErrorCount > 0)
183
+ : totalUpdatedExisting > 0;
184
+ if (shouldRecalculateUsageStats) {
165
185
  spinner.start('Recalculating usage stats...');
166
186
  try {
167
187
  const result = recalculateUsageStats();
@@ -181,6 +201,7 @@ export async function runSync(options = {}) {
181
201
  syncedCount: totalSyncedCount,
182
202
  messageCount: totalMessageCount,
183
203
  errorCount: totalErrorCount,
204
+ updatedExistingCount: totalUpdatedExisting,
184
205
  };
185
206
  }
186
207
  /**
@@ -197,7 +218,11 @@ export async function syncCommand(options = {}) {
197
218
  return;
198
219
  }
199
220
  log(chalk.cyan('\n Sync Summary'));
200
- log(chalk.white(` Sessions synced: ${result.syncedCount}`));
221
+ const newCount = Math.max(result.syncedCount - result.updatedExistingCount, 0);
222
+ log(chalk.white(` Sessions new: ${newCount}`));
223
+ if (result.updatedExistingCount > 0) {
224
+ log(chalk.white(` Sessions updated: ${result.updatedExistingCount}`));
225
+ }
201
226
  log(chalk.white(` Messages synced: ${result.messageCount}`));
202
227
  if (result.errorCount > 0) {
203
228
  log(chalk.red(` Errors: ${result.errorCount}`));
@@ -227,15 +252,19 @@ function filterFilesToSync(files, syncState, force) {
227
252
  // If file was never synced, sync it
228
253
  if (!fileState)
229
254
  return true;
230
- // For virtual paths (multi-session files), check if this specific session was synced
231
- if (sessionFragment && fileState.syncedSessionIds) {
232
- return !fileState.syncedSessionIds.includes(sessionFragment);
233
- }
234
- // For regular files, check if modified since last sync
235
255
  if (sessionFragment) {
256
+ // Virtual path (multi-session DB).
257
+ // If the DB file changed, re-sync all sessions from it.
258
+ if (fileState.lastModified !== lastModified)
259
+ return true;
260
+ // Otherwise only sync sessions we haven't seen yet.
261
+ if (fileState.syncedSessionIds) {
262
+ return !fileState.syncedSessionIds.includes(sessionFragment);
263
+ }
236
264
  // Virtual path but no syncedSessionIds tracked yet — needs sync
237
265
  return true;
238
266
  }
267
+ // For regular files, check if modified since last sync
239
268
  return fileState.lastModified !== lastModified;
240
269
  });
241
270
  }
@@ -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":"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"}
@@ -1,3 +1,4 @@
1
1
  export declare const SCHEMA_SQL = "\n-- ============================================================\n-- Projects\n-- ============================================================\nCREATE TABLE IF NOT EXISTS projects (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n path TEXT NOT NULL,\n git_remote_url TEXT,\n project_id_source TEXT NOT NULL DEFAULT 'path-hash',\n session_count INTEGER NOT NULL DEFAULT 0,\n last_activity TEXT NOT NULL,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now')),\n total_input_tokens INTEGER DEFAULT 0,\n total_output_tokens INTEGER DEFAULT 0,\n cache_creation_tokens INTEGER DEFAULT 0,\n cache_read_tokens INTEGER DEFAULT 0,\n estimated_cost_usd REAL DEFAULT 0\n);\n\n-- ============================================================\n-- Sessions\n-- ============================================================\nCREATE TABLE IF NOT EXISTS sessions (\n id TEXT PRIMARY KEY,\n project_id TEXT NOT NULL REFERENCES projects(id),\n project_name TEXT NOT NULL,\n project_path TEXT NOT NULL,\n git_remote_url TEXT,\n summary TEXT,\n custom_title TEXT,\n generated_title TEXT,\n title_source TEXT,\n session_character TEXT,\n started_at TEXT NOT NULL,\n ended_at TEXT NOT NULL,\n message_count INTEGER NOT NULL DEFAULT 0,\n user_message_count INTEGER NOT NULL DEFAULT 0,\n assistant_message_count INTEGER NOT NULL DEFAULT 0,\n tool_call_count INTEGER NOT NULL DEFAULT 0,\n git_branch TEXT,\n claude_version TEXT,\n source_tool TEXT NOT NULL DEFAULT 'claude-code',\n device_id TEXT,\n device_hostname TEXT,\n device_platform TEXT,\n synced_at TEXT NOT NULL DEFAULT (datetime('now')),\n total_input_tokens INTEGER,\n total_output_tokens INTEGER,\n cache_creation_tokens INTEGER,\n cache_read_tokens INTEGER,\n estimated_cost_usd REAL,\n models_used TEXT,\n primary_model TEXT,\n usage_source TEXT\n);\n\nCREATE INDEX IF NOT EXISTS idx_sessions_project_id ON sessions(project_id);\nCREATE INDEX IF NOT EXISTS idx_sessions_started_at ON sessions(started_at DESC);\nCREATE INDEX IF NOT EXISTS idx_sessions_source_tool ON sessions(source_tool);\n\n-- ============================================================\n-- Messages\n-- ============================================================\nCREATE TABLE IF NOT EXISTS messages (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL REFERENCES sessions(id),\n type TEXT NOT NULL,\n content TEXT NOT NULL DEFAULT '',\n thinking TEXT,\n tool_calls TEXT,\n tool_results TEXT,\n usage TEXT,\n timestamp TEXT NOT NULL,\n parent_id TEXT\n);\n\nCREATE INDEX IF NOT EXISTS idx_messages_session_id ON messages(session_id);\nCREATE INDEX IF NOT EXISTS idx_messages_timestamp ON messages(session_id, timestamp ASC);\n\n-- ============================================================\n-- Insights (written by dashboard server, not CLI)\n-- ============================================================\nCREATE TABLE IF NOT EXISTS insights (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL REFERENCES sessions(id),\n project_id TEXT NOT NULL REFERENCES projects(id),\n project_name TEXT NOT NULL,\n type TEXT NOT NULL,\n title TEXT NOT NULL,\n content TEXT NOT NULL,\n summary TEXT NOT NULL,\n bullets TEXT,\n confidence REAL NOT NULL,\n source TEXT NOT NULL DEFAULT 'llm',\n metadata TEXT,\n timestamp TEXT NOT NULL,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n scope TEXT NOT NULL DEFAULT 'session',\n analysis_version TEXT NOT NULL DEFAULT '1.0.0',\n linked_insight_ids TEXT\n);\n\nCREATE INDEX IF NOT EXISTS idx_insights_session_id ON insights(session_id);\nCREATE INDEX IF NOT EXISTS idx_insights_project_id ON insights(project_id);\nCREATE INDEX IF NOT EXISTS idx_insights_type ON insights(type);\nCREATE INDEX IF NOT EXISTS idx_insights_timestamp ON insights(timestamp DESC);\n\n-- ============================================================\n-- Global usage stats (singleton row, updated by CLI sync)\n-- ============================================================\nCREATE TABLE IF NOT EXISTS usage_stats (\n id INTEGER PRIMARY KEY CHECK (id = 1),\n total_input_tokens INTEGER DEFAULT 0,\n total_output_tokens INTEGER DEFAULT 0,\n cache_creation_tokens INTEGER DEFAULT 0,\n cache_read_tokens INTEGER DEFAULT 0,\n estimated_cost_usd REAL DEFAULT 0,\n sessions_with_usage INTEGER DEFAULT 0,\n last_updated_at TEXT DEFAULT (datetime('now'))\n);\n";
2
2
  export declare const CURRENT_SCHEMA_VERSION = 1;
3
+ export { runMigrations } from './migrate.js';
3
4
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU,m9JA0HtB,CAAC;AAEF,eAAO,MAAM,sBAAsB,IAAI,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU,m9JA0HtB,CAAC;AAEF,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
package/dist/db/schema.js CHANGED
@@ -126,4 +126,5 @@ CREATE TABLE IF NOT EXISTS usage_stats (
126
126
  );
127
127
  `;
128
128
  export const CURRENT_SCHEMA_VERSION = 1;
129
+ export { runMigrations } from './migrate.js';
129
130
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,uEAAuE;AACvE,uEAAuE;AACvE,wDAAwD;AAExD,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0HzB,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,uEAAuE;AACvE,uEAAuE;AACvE,wDAAwD;AAExD,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0HzB,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -7,6 +7,11 @@ import type { ParsedSession } from '../types.js';
7
7
  * incrementally added — they'll be recalculated via recalculateUsageStats().
8
8
  */
9
9
  export declare function insertSessionWithProject(session: ParsedSession, isForce?: boolean): void;
10
+ /**
11
+ * Insert a session and return whether it was new to the DB.
12
+ * Lets callers avoid a duplicate sessionExists() query.
13
+ */
14
+ export declare function insertSessionWithProjectAndReturnIsNew(session: ParsedSession, isForce?: boolean): boolean;
10
15
  /**
11
16
  * Insert messages for a session.
12
17
  * Replaces firebase/client.ts uploadMessages().
@@ -1 +1 @@
1
- {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/db/write.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,aAAa,CAAC;AA4JhE;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,UAAQ,GAAG,IAAI,CAgBtF;AA8ED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAmC3D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAmHpH"}
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/db/write.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,aAAa,CAAC;AA4JhE;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,UAAQ,GAAG,IAAI,CAEtF;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,UAAQ,GAAG,OAAO,CAEvG;AAiGD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAmC3D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAmHpH"}
package/dist/db/write.js CHANGED
@@ -150,6 +150,16 @@ function getStmts() {
150
150
  * incrementally added — they'll be recalculated via recalculateUsageStats().
151
151
  */
152
152
  export function insertSessionWithProject(session, isForce = false) {
153
+ insertSessionWithProjectInternal(session, isForce);
154
+ }
155
+ /**
156
+ * Insert a session and return whether it was new to the DB.
157
+ * Lets callers avoid a duplicate sessionExists() query.
158
+ */
159
+ export function insertSessionWithProjectAndReturnIsNew(session, isForce = false) {
160
+ return insertSessionWithProjectInternal(session, isForce);
161
+ }
162
+ function insertSessionWithProjectInternal(session, isForce) {
153
163
  const db = getDb();
154
164
  const { projectId, source: projectIdSource, gitRemoteUrl } = generateStableProjectId(session.projectPath);
155
165
  const deviceInfo = getDeviceInfo();
@@ -162,6 +172,7 @@ export function insertSessionWithProject(session, isForce = false) {
162
172
  }
163
173
  });
164
174
  tx();
175
+ return isNew;
165
176
  }
166
177
  function upsertProject(projectId, session, projectIdSource, gitRemoteUrl, isNewSession, isForce) {
167
178
  const stmts = getStmts();
@@ -1 +1 @@
1
- {"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/db/write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/db/write.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import admin from 'firebase-admin';
2
+ import type { ClaudeInsightConfig, ParsedSession, Project } from '../types.js';
3
+ /**
4
+ * Initialize Firebase Admin SDK
5
+ */
6
+ export declare function initializeFirebase(config: ClaudeInsightConfig): void;
7
+ /**
8
+ * Get Firestore instance
9
+ */
10
+ export declare function getDb(): admin.firestore.Firestore;
11
+ /**
12
+ * Upload a session to Firestore
13
+ */
14
+ export declare function uploadSession(session: ParsedSession, isForceSync?: boolean): Promise<void>;
15
+ /**
16
+ * Upload messages to Firestore for LLM analysis
17
+ */
18
+ export declare function uploadMessages(session: ParsedSession): Promise<void>;
19
+ /**
20
+ * Check if a session already exists
21
+ */
22
+ export declare function sessionExists(sessionId: string): Promise<boolean>;
23
+ /**
24
+ * Get all projects
25
+ */
26
+ export declare function getProjects(): Promise<Project[]>;
27
+ /**
28
+ * Get recent sessions
29
+ */
30
+ export declare function getRecentSessions(limit?: number): Promise<ParsedSession[]>;
31
+ /**
32
+ * Recalculate usage stats from all sessions in Firestore.
33
+ * Used after --force sync to reconcile totals.
34
+ */
35
+ export declare function recalculateUsageStats(): Promise<{
36
+ sessionsWithUsage: number;
37
+ totalTokens: number;
38
+ estimatedCostUsd: number;
39
+ }>;
40
+ /**
41
+ * Get per-tool session counts grouped by project.
42
+ * Uses select() to only fetch projectId and sourceTool fields (efficient).
43
+ */
44
+ export declare function getProjectToolCounts(): Promise<Map<string, Map<string, number>>>;
45
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/firebase/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,gBAAgB,CAAC;AACnC,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAK/E;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAmBpE;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,SAAS,CAKjD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAkG9F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD1E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAIvE;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAetD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA8BpF;AAGD;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC,CAwFD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAsBtF"}