@ebowwa/claudecodehistory 1.2.2 → 1.2.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/README.md +65 -0
- package/dist/history-service.d.ts +75 -0
- package/dist/history-service.d.ts.map +1 -1
- package/dist/history-service.js +259 -1
- package/dist/history-service.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -0
- package/example/src/index.js +275 -0
- package/package.json +13 -11
package/README.md
CHANGED
|
@@ -138,6 +138,55 @@ const sessions = await service.listSessions({
|
|
|
138
138
|
|
|
139
139
|
Returns: `SessionInfo[]`
|
|
140
140
|
|
|
141
|
+
##### `getCurrentSession()`
|
|
142
|
+
|
|
143
|
+
Get information about the currently active Claude Code session.
|
|
144
|
+
|
|
145
|
+
```typescript
|
|
146
|
+
const currentSession = await service.getCurrentSession();
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Returns: `CurrentSessionInfo | null`
|
|
150
|
+
|
|
151
|
+
**Notes:**
|
|
152
|
+
- Returns `null` if no active session is found
|
|
153
|
+
- Uses a best-effort approach to detect the current session by checking running processes and recently modified session files
|
|
154
|
+
- The detected session may not always be the actual active session if multiple Claude Code instances are running
|
|
155
|
+
|
|
156
|
+
##### `getSessionByPid(pid)`
|
|
157
|
+
|
|
158
|
+
Get session information by process ID.
|
|
159
|
+
|
|
160
|
+
```typescript
|
|
161
|
+
const sessionInfo = await service.getSessionByPid(12345);
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**Parameters:**
|
|
165
|
+
- `pid` (number) - Process ID of the Claude Code session
|
|
166
|
+
|
|
167
|
+
Returns: `SessionProcessInfo | null`
|
|
168
|
+
|
|
169
|
+
**Notes:**
|
|
170
|
+
- Returns `null` if no session is found for the given PID
|
|
171
|
+
- Cross-references running processes with session history files
|
|
172
|
+
- Useful for correlating active Claude Code processes with their conversation history
|
|
173
|
+
|
|
174
|
+
##### `listAllSessionUuids()`
|
|
175
|
+
|
|
176
|
+
List all session UUIDs across all projects.
|
|
177
|
+
|
|
178
|
+
```typescript
|
|
179
|
+
const uuids = await service.listAllSessionUuids();
|
|
180
|
+
// Returns: ["uuid-1", "uuid-2", "uuid-3", ...]
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Returns: `string[]`
|
|
184
|
+
|
|
185
|
+
**Notes:**
|
|
186
|
+
- Returns a flat array of all session UUIDs
|
|
187
|
+
- Useful for bulk operations or generating session inventories
|
|
188
|
+
- Does not include project path information - use `listSessions()` for detailed session metadata
|
|
189
|
+
|
|
141
190
|
## Types
|
|
142
191
|
|
|
143
192
|
```typescript
|
|
@@ -189,6 +238,22 @@ interface SessionInfo {
|
|
|
189
238
|
userMessageCount: number;
|
|
190
239
|
assistantMessageCount: number;
|
|
191
240
|
}
|
|
241
|
+
|
|
242
|
+
interface CurrentSessionInfo {
|
|
243
|
+
uuid: string;
|
|
244
|
+
projectPath: string;
|
|
245
|
+
pid?: number;
|
|
246
|
+
command?: string;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
interface SessionProcessInfo {
|
|
250
|
+
uuid: string;
|
|
251
|
+
projectPath: string;
|
|
252
|
+
pid: number;
|
|
253
|
+
command: string;
|
|
254
|
+
startTime?: string;
|
|
255
|
+
messageCount?: number;
|
|
256
|
+
}
|
|
192
257
|
```
|
|
193
258
|
|
|
194
259
|
## Smart Features
|
|
@@ -75,6 +75,16 @@ export interface SessionInfo {
|
|
|
75
75
|
messageCount: number;
|
|
76
76
|
userMessageCount: number;
|
|
77
77
|
assistantMessageCount: number;
|
|
78
|
+
/** First user message preview (truncated to ~100 chars) */
|
|
79
|
+
firstUserMessage?: string;
|
|
80
|
+
/** Duration in milliseconds */
|
|
81
|
+
durationMs?: number;
|
|
82
|
+
/** Human-readable duration (e.g., "5m 30s") */
|
|
83
|
+
durationFormatted?: string;
|
|
84
|
+
/** Session status indicators */
|
|
85
|
+
hasErrors?: boolean;
|
|
86
|
+
/** Project name extracted from path (basename) */
|
|
87
|
+
projectName?: string;
|
|
78
88
|
}
|
|
79
89
|
export interface SearchOptions {
|
|
80
90
|
limit?: number;
|
|
@@ -83,6 +93,34 @@ export interface SearchOptions {
|
|
|
83
93
|
endDate?: string;
|
|
84
94
|
timezone?: string;
|
|
85
95
|
}
|
|
96
|
+
export interface CurrentSessionInfo {
|
|
97
|
+
sessionId: string;
|
|
98
|
+
timestamp: string;
|
|
99
|
+
projectPath?: string;
|
|
100
|
+
display?: string;
|
|
101
|
+
}
|
|
102
|
+
export interface SessionProcessInfo {
|
|
103
|
+
sessionId: string;
|
|
104
|
+
pid: number;
|
|
105
|
+
command: string;
|
|
106
|
+
alive: boolean;
|
|
107
|
+
}
|
|
108
|
+
export interface RecentActivityOptions {
|
|
109
|
+
limit?: number;
|
|
110
|
+
includeSummaries?: boolean;
|
|
111
|
+
}
|
|
112
|
+
export interface RecentActivityItem {
|
|
113
|
+
sessionId: string;
|
|
114
|
+
projectPath: string;
|
|
115
|
+
projectName: string;
|
|
116
|
+
timestamp: string;
|
|
117
|
+
/** First user message - what was asked */
|
|
118
|
+
asked: string;
|
|
119
|
+
/** Brief summary from assistant messages - what was done */
|
|
120
|
+
done?: string;
|
|
121
|
+
/** Human-readable relative time */
|
|
122
|
+
timeAgo: string;
|
|
123
|
+
}
|
|
86
124
|
export declare class ClaudeCodeHistoryService {
|
|
87
125
|
private claudeDir;
|
|
88
126
|
constructor(claudeDir?: string);
|
|
@@ -94,14 +132,51 @@ export declare class ClaudeCodeHistoryService {
|
|
|
94
132
|
searchConversations(searchQuery: string, options?: SearchOptions): Promise<ConversationEntry[]>;
|
|
95
133
|
listProjects(): Promise<ProjectInfo[]>;
|
|
96
134
|
listSessions(options?: SessionListOptions): Promise<SessionInfo[]>;
|
|
135
|
+
/**
|
|
136
|
+
* Get recent activity across all projects
|
|
137
|
+
* Returns what was asked, what was done, and when for the most recent sessions
|
|
138
|
+
*/
|
|
139
|
+
getRecentActivity(options?: RecentActivityOptions): Promise<RecentActivityItem[]>;
|
|
140
|
+
/**
|
|
141
|
+
* Generate a brief summary of what was done in a session from assistant messages
|
|
142
|
+
*/
|
|
143
|
+
private generateSessionSummary;
|
|
97
144
|
private loadClaudeHistoryEntries;
|
|
98
145
|
private parseJsonlFile;
|
|
99
146
|
private convertClaudeMessageToEntry;
|
|
100
147
|
private getTimeAgo;
|
|
148
|
+
/**
|
|
149
|
+
* Format duration in milliseconds to human-readable string
|
|
150
|
+
*/
|
|
151
|
+
private formatDuration;
|
|
101
152
|
private decodeProjectPath;
|
|
102
153
|
/**
|
|
103
154
|
* Determines whether to skip reading a file based on its modification time
|
|
104
155
|
*/
|
|
105
156
|
private shouldSkipFile;
|
|
157
|
+
/**
|
|
158
|
+
* Gets the current active Claude Code session by reading the last line from history.jsonl
|
|
159
|
+
*/
|
|
160
|
+
getCurrentSession(): Promise<CurrentSessionInfo | null>;
|
|
161
|
+
/**
|
|
162
|
+
* Maps a process ID to a Claude Code session by examining the process tree
|
|
163
|
+
*/
|
|
164
|
+
getSessionByPid(pid: number): Promise<SessionProcessInfo | null>;
|
|
165
|
+
/**
|
|
166
|
+
* Lists all session UUIDs from the session-env directory
|
|
167
|
+
*/
|
|
168
|
+
listAllSessionUuids(): Promise<string[]>;
|
|
169
|
+
/**
|
|
170
|
+
* Reads only the last line from a file efficiently
|
|
171
|
+
*/
|
|
172
|
+
private readLastLineFromFile;
|
|
173
|
+
/**
|
|
174
|
+
* Extracts session ID from a Claude Code process by examining command and environment
|
|
175
|
+
*/
|
|
176
|
+
private extractSessionIdFromProcess;
|
|
177
|
+
/**
|
|
178
|
+
* Checks if a process is still alive
|
|
179
|
+
*/
|
|
180
|
+
private isProcessAlive;
|
|
106
181
|
}
|
|
107
182
|
//# sourceMappingURL=history-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-service.d.ts","sourceRoot":"","sources":["../src/history-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"history-service.d.ts","sourceRoot":"","sources":["../src/history-service.ts"],"names":[],"mappings":"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"}
|
package/dist/history-service.js
CHANGED
|
@@ -3,6 +3,9 @@ import * as path from 'path';
|
|
|
3
3
|
import * as os from 'os';
|
|
4
4
|
import { createReadStream } from 'fs';
|
|
5
5
|
import { createInterface } from 'readline';
|
|
6
|
+
import { exec } from 'child_process';
|
|
7
|
+
import { promisify } from 'util';
|
|
8
|
+
const execAsync = promisify(exec);
|
|
6
9
|
export class ClaudeCodeHistoryService {
|
|
7
10
|
claudeDir;
|
|
8
11
|
constructor(claudeDir) {
|
|
@@ -200,14 +203,34 @@ export class ClaudeCodeHistoryService {
|
|
|
200
203
|
continue;
|
|
201
204
|
const userMessageCount = entries.filter(e => e.type === 'user').length;
|
|
202
205
|
const assistantMessageCount = entries.filter(e => e.type === 'assistant').length;
|
|
206
|
+
// Calculate duration
|
|
207
|
+
const startTime = new Date(sessionStart).getTime();
|
|
208
|
+
const endTime = new Date(sessionEnd).getTime();
|
|
209
|
+
const durationMs = endTime - startTime;
|
|
210
|
+
// Find first user message for preview
|
|
211
|
+
const firstUserEntry = entries.slice().reverse().find(e => e.type === 'user');
|
|
212
|
+
const firstUserMessage = firstUserEntry
|
|
213
|
+
? (firstUserEntry.content.length > 100
|
|
214
|
+
? firstUserEntry.content.slice(0, 100) + '...'
|
|
215
|
+
: firstUserEntry.content)
|
|
216
|
+
: undefined;
|
|
217
|
+
// Check for errors
|
|
218
|
+
const hasErrors = entries.some(e => e.metadata?.isError === true);
|
|
219
|
+
// Extract project name from path
|
|
220
|
+
const projectName = decodedPath.split('/').pop() || decodedPath;
|
|
203
221
|
sessions.push({
|
|
204
222
|
sessionId,
|
|
205
223
|
projectPath: decodedPath,
|
|
224
|
+
projectName,
|
|
206
225
|
startTime: sessionStart,
|
|
207
226
|
endTime: sessionEnd,
|
|
208
227
|
messageCount: entries.length,
|
|
209
228
|
userMessageCount,
|
|
210
|
-
assistantMessageCount
|
|
229
|
+
assistantMessageCount,
|
|
230
|
+
firstUserMessage,
|
|
231
|
+
durationMs,
|
|
232
|
+
durationFormatted: this.formatDuration(durationMs),
|
|
233
|
+
hasErrors
|
|
211
234
|
});
|
|
212
235
|
}
|
|
213
236
|
}
|
|
@@ -221,6 +244,62 @@ export class ClaudeCodeHistoryService {
|
|
|
221
244
|
sessions.sort((a, b) => new Date(b.startTime).getTime() - new Date(a.startTime).getTime());
|
|
222
245
|
return sessions;
|
|
223
246
|
}
|
|
247
|
+
/**
|
|
248
|
+
* Get recent activity across all projects
|
|
249
|
+
* Returns what was asked, what was done, and when for the most recent sessions
|
|
250
|
+
*/
|
|
251
|
+
async getRecentActivity(options = {}) {
|
|
252
|
+
const { limit = 10, includeSummaries = true } = options;
|
|
253
|
+
// Get all sessions (sorted by start time, newest first)
|
|
254
|
+
const allSessions = await this.listSessions();
|
|
255
|
+
// Take the most recent N sessions
|
|
256
|
+
const recentSessions = allSessions.slice(0, limit);
|
|
257
|
+
// Build activity items with summaries
|
|
258
|
+
const activities = [];
|
|
259
|
+
for (const session of recentSessions) {
|
|
260
|
+
const activity = {
|
|
261
|
+
sessionId: session.sessionId,
|
|
262
|
+
projectPath: session.projectPath,
|
|
263
|
+
projectName: session.projectName || session.projectPath.split('/').pop() || session.projectPath,
|
|
264
|
+
timestamp: session.startTime,
|
|
265
|
+
timeAgo: this.getTimeAgo(new Date(session.startTime)),
|
|
266
|
+
asked: session.firstUserMessage || 'No user message found',
|
|
267
|
+
};
|
|
268
|
+
// Generate summary from assistant messages if requested
|
|
269
|
+
if (includeSummaries) {
|
|
270
|
+
activity.done = await this.generateSessionSummary(session.sessionId);
|
|
271
|
+
}
|
|
272
|
+
activities.push(activity);
|
|
273
|
+
}
|
|
274
|
+
return activities;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Generate a brief summary of what was done in a session from assistant messages
|
|
278
|
+
*/
|
|
279
|
+
async generateSessionSummary(sessionId) {
|
|
280
|
+
try {
|
|
281
|
+
const result = await this.getConversationHistory({
|
|
282
|
+
sessionId,
|
|
283
|
+
limit: 50, // Get first 50 messages for summary
|
|
284
|
+
messageTypes: ['assistant'],
|
|
285
|
+
});
|
|
286
|
+
if (result.entries.length === 0) {
|
|
287
|
+
return undefined;
|
|
288
|
+
}
|
|
289
|
+
// Extract the first meaningful assistant response
|
|
290
|
+
const firstAssistant = result.entries[result.entries.length - 1];
|
|
291
|
+
if (!firstAssistant || !firstAssistant.content) {
|
|
292
|
+
return undefined;
|
|
293
|
+
}
|
|
294
|
+
// Truncate summary to ~150 characters
|
|
295
|
+
const content = firstAssistant.content;
|
|
296
|
+
return content.length > 150 ? content.slice(0, 150) + '...' : content;
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
console.error(`Error generating summary for session ${sessionId}:`, error);
|
|
300
|
+
return undefined;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
224
303
|
async loadClaudeHistoryEntries(options = {}) {
|
|
225
304
|
const entries = [];
|
|
226
305
|
const { startDate, endDate } = options;
|
|
@@ -362,6 +441,29 @@ export class ClaudeCodeHistoryService {
|
|
|
362
441
|
return `${Math.floor(diffDays / 30)}mo ago`;
|
|
363
442
|
return `${Math.floor(diffDays / 365)}y ago`;
|
|
364
443
|
}
|
|
444
|
+
/**
|
|
445
|
+
* Format duration in milliseconds to human-readable string
|
|
446
|
+
*/
|
|
447
|
+
formatDuration(ms) {
|
|
448
|
+
if (ms < 1000)
|
|
449
|
+
return `${ms}ms`;
|
|
450
|
+
const seconds = Math.floor(ms / 1000);
|
|
451
|
+
if (seconds < 60)
|
|
452
|
+
return `${seconds}s`;
|
|
453
|
+
const minutes = Math.floor(seconds / 60);
|
|
454
|
+
const remainingSeconds = seconds % 60;
|
|
455
|
+
if (minutes < 60) {
|
|
456
|
+
return remainingSeconds > 0 ? `${minutes}m ${remainingSeconds}s` : `${minutes}m`;
|
|
457
|
+
}
|
|
458
|
+
const hours = Math.floor(minutes / 60);
|
|
459
|
+
const remainingMinutes = minutes % 60;
|
|
460
|
+
if (hours < 24) {
|
|
461
|
+
return remainingMinutes > 0 ? `${hours}h ${remainingMinutes}m` : `${hours}h`;
|
|
462
|
+
}
|
|
463
|
+
const days = Math.floor(hours / 24);
|
|
464
|
+
const remainingHours = hours % 24;
|
|
465
|
+
return remainingHours > 0 ? `${days}d ${remainingHours}h` : `${days}d`;
|
|
466
|
+
}
|
|
365
467
|
decodeProjectPath(projectDir) {
|
|
366
468
|
return projectDir.replace(/-/g, '/').replace(/^\//, '');
|
|
367
469
|
}
|
|
@@ -394,5 +496,161 @@ export class ClaudeCodeHistoryService {
|
|
|
394
496
|
return false; // Safe fallback: read the file if stat fails
|
|
395
497
|
}
|
|
396
498
|
}
|
|
499
|
+
/**
|
|
500
|
+
* Gets the current active Claude Code session by reading the last line from history.jsonl
|
|
501
|
+
*/
|
|
502
|
+
async getCurrentSession() {
|
|
503
|
+
try {
|
|
504
|
+
const historyPath = path.join(this.claudeDir, 'history.jsonl');
|
|
505
|
+
const lastLine = await this.readLastLineFromFile(historyPath);
|
|
506
|
+
if (!lastLine) {
|
|
507
|
+
return null;
|
|
508
|
+
}
|
|
509
|
+
const entry = JSON.parse(lastLine);
|
|
510
|
+
// Validate and parse timestamp
|
|
511
|
+
let timestamp;
|
|
512
|
+
if (typeof entry.timestamp === 'number') {
|
|
513
|
+
timestamp = new Date(entry.timestamp).toISOString();
|
|
514
|
+
}
|
|
515
|
+
else if (typeof entry.timestamp === 'string') {
|
|
516
|
+
const date = new Date(entry.timestamp);
|
|
517
|
+
if (isNaN(date.getTime())) {
|
|
518
|
+
return null; // Invalid date
|
|
519
|
+
}
|
|
520
|
+
timestamp = date.toISOString();
|
|
521
|
+
}
|
|
522
|
+
else {
|
|
523
|
+
return null;
|
|
524
|
+
}
|
|
525
|
+
return {
|
|
526
|
+
sessionId: entry.sessionId,
|
|
527
|
+
timestamp,
|
|
528
|
+
projectPath: entry.project,
|
|
529
|
+
display: entry.display
|
|
530
|
+
};
|
|
531
|
+
}
|
|
532
|
+
catch (error) {
|
|
533
|
+
console.error('Error getting current session:', error);
|
|
534
|
+
return null;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
/**
|
|
538
|
+
* Maps a process ID to a Claude Code session by examining the process tree
|
|
539
|
+
*/
|
|
540
|
+
async getSessionByPid(pid) {
|
|
541
|
+
try {
|
|
542
|
+
// Get process info including parent PID and command
|
|
543
|
+
const { stdout } = await execAsync(`ps -p ${pid} -o pid,ppid,command`);
|
|
544
|
+
const lines = stdout.trim().split('\n');
|
|
545
|
+
if (lines.length < 2) {
|
|
546
|
+
return null;
|
|
547
|
+
}
|
|
548
|
+
// Parse the process line (skip header)
|
|
549
|
+
const parts = lines[1].trim().split(/\s+/);
|
|
550
|
+
const processPid = parseInt(parts[0], 10);
|
|
551
|
+
const parentPid = parseInt(parts[1], 10);
|
|
552
|
+
const command = parts.slice(2).join(' ');
|
|
553
|
+
// Check if this is a Claude Code process
|
|
554
|
+
if (!command.toLowerCase().includes('claude')) {
|
|
555
|
+
return null;
|
|
556
|
+
}
|
|
557
|
+
// Extract session ID from command arguments or trace process tree
|
|
558
|
+
let sessionId = await this.extractSessionIdFromProcess(processPid);
|
|
559
|
+
// Check if process is still alive
|
|
560
|
+
const isAlive = await this.isProcessAlive(processPid);
|
|
561
|
+
return {
|
|
562
|
+
sessionId,
|
|
563
|
+
pid: processPid,
|
|
564
|
+
command,
|
|
565
|
+
alive: isAlive
|
|
566
|
+
};
|
|
567
|
+
}
|
|
568
|
+
catch (error) {
|
|
569
|
+
console.error(`Error getting session by PID ${pid}:`, error);
|
|
570
|
+
return null;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Lists all session UUIDs from the session-env directory
|
|
575
|
+
*/
|
|
576
|
+
async listAllSessionUuids() {
|
|
577
|
+
try {
|
|
578
|
+
const sessionEnvDir = path.join(this.claudeDir, 'session-env');
|
|
579
|
+
const entries = await fs.readdir(sessionEnvDir);
|
|
580
|
+
// Filter only UUID-like directory names
|
|
581
|
+
const uuids = entries.filter(entry => {
|
|
582
|
+
// UUID v4 pattern: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
|
|
583
|
+
const uuidPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
584
|
+
return uuidPattern.test(entry);
|
|
585
|
+
});
|
|
586
|
+
return uuids;
|
|
587
|
+
}
|
|
588
|
+
catch (error) {
|
|
589
|
+
console.error('Error listing session UUIDs:', error);
|
|
590
|
+
return [];
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* Reads only the last line from a file efficiently
|
|
595
|
+
*/
|
|
596
|
+
async readLastLineFromFile(filePath) {
|
|
597
|
+
try {
|
|
598
|
+
const fileStream = createReadStream(filePath, { encoding: 'utf-8' });
|
|
599
|
+
const rl = createInterface({
|
|
600
|
+
input: fileStream,
|
|
601
|
+
crlfDelay: Infinity
|
|
602
|
+
});
|
|
603
|
+
let lastLine = null;
|
|
604
|
+
for await (const line of rl) {
|
|
605
|
+
if (line.trim()) {
|
|
606
|
+
lastLine = line;
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
return lastLine;
|
|
610
|
+
}
|
|
611
|
+
catch (error) {
|
|
612
|
+
console.error('Error reading last line from file:', error);
|
|
613
|
+
return null;
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
/**
|
|
617
|
+
* Extracts session ID from a Claude Code process by examining command and environment
|
|
618
|
+
*/
|
|
619
|
+
async extractSessionIdFromProcess(pid) {
|
|
620
|
+
try {
|
|
621
|
+
// First, check if the command contains a session ID argument (-r flag)
|
|
622
|
+
const { stdout: psOutput } = await execAsync(`ps -p ${pid} -o command`);
|
|
623
|
+
const command = psOutput.trim();
|
|
624
|
+
// Look for -r flag with session ID
|
|
625
|
+
const sessionMatch = command.match(/-r\s+([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/i);
|
|
626
|
+
if (sessionMatch) {
|
|
627
|
+
return sessionMatch[1];
|
|
628
|
+
}
|
|
629
|
+
// If not found in command, check the current session from history
|
|
630
|
+
const currentSession = await this.getCurrentSession();
|
|
631
|
+
if (currentSession) {
|
|
632
|
+
return currentSession.sessionId;
|
|
633
|
+
}
|
|
634
|
+
// Fallback: return empty string
|
|
635
|
+
return '';
|
|
636
|
+
}
|
|
637
|
+
catch (error) {
|
|
638
|
+
console.error('Error extracting session ID from process:', error);
|
|
639
|
+
return '';
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* Checks if a process is still alive
|
|
644
|
+
*/
|
|
645
|
+
async isProcessAlive(pid) {
|
|
646
|
+
try {
|
|
647
|
+
// Send signal 0 to check if process exists
|
|
648
|
+
process.kill(pid, 0);
|
|
649
|
+
return true;
|
|
650
|
+
}
|
|
651
|
+
catch (error) {
|
|
652
|
+
return false;
|
|
653
|
+
}
|
|
654
|
+
}
|
|
397
655
|
}
|
|
398
656
|
//# sourceMappingURL=history-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-service.js","sourceRoot":"","sources":["../src/history-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"history-service.js","sourceRoot":"","sources":["../src/history-service.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { ClaudeCodeHistoryService } from './history-service.js';
|
|
2
|
-
export type { ClaudeCodeMessage, ConversationEntry, PaginatedConversationResponse, HistoryQueryOptions, SessionListOptions, ProjectInfo, SessionInfo, SearchOptions, } from './history-service.js';
|
|
2
|
+
export type { ClaudeCodeMessage, ConversationEntry, PaginatedConversationResponse, HistoryQueryOptions, SessionListOptions, ProjectInfo, SessionInfo, SearchOptions, CurrentSessionInfo, SessionProcessInfo, RecentActivityOptions, RecentActivityItem, } from './history-service.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,6BAA6B,EAC7B,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,WAAW,EACX,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,6BAA6B,EAC7B,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
"use strict";
|
|
3
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
13
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
14
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
15
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
16
|
+
function step(op) {
|
|
17
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
18
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
19
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
20
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
21
|
+
switch (op[0]) {
|
|
22
|
+
case 0: case 1: t = op; break;
|
|
23
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
24
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
25
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
26
|
+
default:
|
|
27
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
28
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
29
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
30
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
31
|
+
if (t[2]) _.ops.pop();
|
|
32
|
+
_.trys.pop(); continue;
|
|
33
|
+
}
|
|
34
|
+
op = body.call(thisArg, _);
|
|
35
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
36
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
var index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
41
|
+
var stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
42
|
+
var types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
43
|
+
var claudecodehistory_1 = require("@ebowwa/claudecodehistory");
|
|
44
|
+
var server = new index_js_1.Server({
|
|
45
|
+
name: 'claude-code-history-mcp',
|
|
46
|
+
version: '1.1.0',
|
|
47
|
+
}, {
|
|
48
|
+
capabilities: {
|
|
49
|
+
tools: {},
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
var historyService = new claudecodehistory_1.ClaudeCodeHistoryService();
|
|
53
|
+
// Helper function to create response
|
|
54
|
+
var createResponse = function (data) { return ({
|
|
55
|
+
content: [{
|
|
56
|
+
type: 'text',
|
|
57
|
+
text: JSON.stringify(data),
|
|
58
|
+
}],
|
|
59
|
+
}); };
|
|
60
|
+
// Define available tools (ordered by recommended workflow)
|
|
61
|
+
var tools = [
|
|
62
|
+
{
|
|
63
|
+
name: 'list_projects',
|
|
64
|
+
description: 'List all projects with Claude Code conversation history (start here to explore available data)',
|
|
65
|
+
inputSchema: {
|
|
66
|
+
type: 'object',
|
|
67
|
+
properties: {},
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'list_sessions',
|
|
72
|
+
description: 'List conversation sessions for a project or date range (use after list_projects to find specific sessions)',
|
|
73
|
+
inputSchema: {
|
|
74
|
+
type: 'object',
|
|
75
|
+
properties: {
|
|
76
|
+
projectPath: {
|
|
77
|
+
type: 'string',
|
|
78
|
+
description: 'Filter by specific project path (optional)',
|
|
79
|
+
},
|
|
80
|
+
startDate: {
|
|
81
|
+
type: 'string',
|
|
82
|
+
description: 'Start date in ISO format (optional)',
|
|
83
|
+
},
|
|
84
|
+
endDate: {
|
|
85
|
+
type: 'string',
|
|
86
|
+
description: 'End date in ISO format (optional)',
|
|
87
|
+
},
|
|
88
|
+
timezone: {
|
|
89
|
+
type: 'string',
|
|
90
|
+
description: 'Timezone for date filtering (e.g., "Asia/Tokyo", "UTC"). Defaults to system timezone.',
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: 'get_conversation_history',
|
|
97
|
+
description: 'Get paginated conversation history (use after exploring with list_projects/list_sessions for targeted data)',
|
|
98
|
+
inputSchema: {
|
|
99
|
+
type: 'object',
|
|
100
|
+
properties: {
|
|
101
|
+
sessionId: {
|
|
102
|
+
type: 'string',
|
|
103
|
+
description: 'Specific session ID to get history for (optional)',
|
|
104
|
+
},
|
|
105
|
+
startDate: {
|
|
106
|
+
type: 'string',
|
|
107
|
+
description: 'Start date in ISO format (optional)',
|
|
108
|
+
},
|
|
109
|
+
endDate: {
|
|
110
|
+
type: 'string',
|
|
111
|
+
description: 'End date in ISO format (optional)',
|
|
112
|
+
},
|
|
113
|
+
limit: {
|
|
114
|
+
type: 'number',
|
|
115
|
+
description: 'Maximum number of conversations to return (default: 20)',
|
|
116
|
+
default: 20,
|
|
117
|
+
},
|
|
118
|
+
offset: {
|
|
119
|
+
type: 'number',
|
|
120
|
+
description: 'Number of conversations to skip for pagination (default: 0)',
|
|
121
|
+
default: 0,
|
|
122
|
+
},
|
|
123
|
+
messageTypes: {
|
|
124
|
+
type: 'array',
|
|
125
|
+
items: {
|
|
126
|
+
type: 'string',
|
|
127
|
+
enum: ['user', 'assistant', 'system', 'result']
|
|
128
|
+
},
|
|
129
|
+
description: 'Filter by specific message types. Defaults to ["user"] to reduce data volume. Use ["user", "assistant"] to include Claude responses.',
|
|
130
|
+
default: ['user']
|
|
131
|
+
},
|
|
132
|
+
timezone: {
|
|
133
|
+
type: 'string',
|
|
134
|
+
description: 'Timezone for date filtering (e.g., "Asia/Tokyo", "UTC"). Defaults to system timezone.',
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: 'search_conversations',
|
|
141
|
+
description: 'Search through conversation history by content (useful for finding specific topics across all conversations)',
|
|
142
|
+
inputSchema: {
|
|
143
|
+
type: 'object',
|
|
144
|
+
properties: {
|
|
145
|
+
query: {
|
|
146
|
+
type: 'string',
|
|
147
|
+
description: 'Search query to find in conversation content',
|
|
148
|
+
},
|
|
149
|
+
limit: {
|
|
150
|
+
type: 'number',
|
|
151
|
+
description: 'Maximum number of results to return (default: 30)',
|
|
152
|
+
default: 30,
|
|
153
|
+
},
|
|
154
|
+
projectPath: {
|
|
155
|
+
type: 'string',
|
|
156
|
+
description: 'Filter by specific project path (optional)',
|
|
157
|
+
},
|
|
158
|
+
startDate: {
|
|
159
|
+
type: 'string',
|
|
160
|
+
description: 'Start date in ISO format (optional)',
|
|
161
|
+
},
|
|
162
|
+
endDate: {
|
|
163
|
+
type: 'string',
|
|
164
|
+
description: 'End date in ISO format (optional)',
|
|
165
|
+
},
|
|
166
|
+
timezone: {
|
|
167
|
+
type: 'string',
|
|
168
|
+
description: 'Timezone for date filtering (e.g., "Asia/Tokyo", "UTC"). Defaults to system timezone.',
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
required: ['query'],
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
];
|
|
175
|
+
// Handle list tools request
|
|
176
|
+
server.setRequestHandler(types_js_1.ListToolsRequestSchema, function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
177
|
+
return __generator(this, function (_a) {
|
|
178
|
+
return [2 /*return*/, { tools: tools }];
|
|
179
|
+
});
|
|
180
|
+
}); });
|
|
181
|
+
// Handle tool calls
|
|
182
|
+
server.setRequestHandler(types_js_1.CallToolRequestSchema, function (request) { return __awaiter(void 0, void 0, void 0, function () {
|
|
183
|
+
var _a, name, args, _b, history_1, query, results, projects, sessions, error_1, errorMessage;
|
|
184
|
+
return __generator(this, function (_c) {
|
|
185
|
+
switch (_c.label) {
|
|
186
|
+
case 0:
|
|
187
|
+
_a = request.params, name = _a.name, args = _a.arguments;
|
|
188
|
+
_c.label = 1;
|
|
189
|
+
case 1:
|
|
190
|
+
_c.trys.push([1, 12, , 13]);
|
|
191
|
+
_b = name;
|
|
192
|
+
switch (_b) {
|
|
193
|
+
case 'get_conversation_history': return [3 /*break*/, 2];
|
|
194
|
+
case 'search_conversations': return [3 /*break*/, 4];
|
|
195
|
+
case 'list_projects': return [3 /*break*/, 6];
|
|
196
|
+
case 'list_sessions': return [3 /*break*/, 8];
|
|
197
|
+
}
|
|
198
|
+
return [3 /*break*/, 10];
|
|
199
|
+
case 2: return [4 /*yield*/, historyService.getConversationHistory({
|
|
200
|
+
sessionId: args === null || args === void 0 ? void 0 : args.sessionId,
|
|
201
|
+
startDate: args === null || args === void 0 ? void 0 : args.startDate,
|
|
202
|
+
endDate: args === null || args === void 0 ? void 0 : args.endDate,
|
|
203
|
+
limit: (args === null || args === void 0 ? void 0 : args.limit) || 20,
|
|
204
|
+
offset: (args === null || args === void 0 ? void 0 : args.offset) || 0,
|
|
205
|
+
messageTypes: args === null || args === void 0 ? void 0 : args.messageTypes,
|
|
206
|
+
timezone: args === null || args === void 0 ? void 0 : args.timezone,
|
|
207
|
+
})];
|
|
208
|
+
case 3:
|
|
209
|
+
history_1 = _c.sent();
|
|
210
|
+
return [2 /*return*/, createResponse(history_1)];
|
|
211
|
+
case 4:
|
|
212
|
+
query = args === null || args === void 0 ? void 0 : args.query;
|
|
213
|
+
if (!query) {
|
|
214
|
+
throw new Error('Search query is required');
|
|
215
|
+
}
|
|
216
|
+
return [4 /*yield*/, historyService.searchConversations(query, {
|
|
217
|
+
limit: (args === null || args === void 0 ? void 0 : args.limit) || 30,
|
|
218
|
+
projectPath: args === null || args === void 0 ? void 0 : args.projectPath,
|
|
219
|
+
startDate: args === null || args === void 0 ? void 0 : args.startDate,
|
|
220
|
+
endDate: args === null || args === void 0 ? void 0 : args.endDate,
|
|
221
|
+
timezone: args === null || args === void 0 ? void 0 : args.timezone,
|
|
222
|
+
})];
|
|
223
|
+
case 5:
|
|
224
|
+
results = _c.sent();
|
|
225
|
+
return [2 /*return*/, createResponse(results)];
|
|
226
|
+
case 6: return [4 /*yield*/, historyService.listProjects()];
|
|
227
|
+
case 7:
|
|
228
|
+
projects = _c.sent();
|
|
229
|
+
return [2 /*return*/, createResponse(projects)];
|
|
230
|
+
case 8: return [4 /*yield*/, historyService.listSessions({
|
|
231
|
+
projectPath: args === null || args === void 0 ? void 0 : args.projectPath,
|
|
232
|
+
startDate: args === null || args === void 0 ? void 0 : args.startDate,
|
|
233
|
+
endDate: args === null || args === void 0 ? void 0 : args.endDate,
|
|
234
|
+
timezone: args === null || args === void 0 ? void 0 : args.timezone,
|
|
235
|
+
})];
|
|
236
|
+
case 9:
|
|
237
|
+
sessions = _c.sent();
|
|
238
|
+
return [2 /*return*/, createResponse(sessions)];
|
|
239
|
+
case 10: throw new Error("Unknown tool: ".concat(name));
|
|
240
|
+
case 11: return [3 /*break*/, 13];
|
|
241
|
+
case 12:
|
|
242
|
+
error_1 = _c.sent();
|
|
243
|
+
errorMessage = error_1 instanceof Error ? error_1.message : 'Unknown error';
|
|
244
|
+
return [2 /*return*/, {
|
|
245
|
+
content: [{
|
|
246
|
+
type: 'text',
|
|
247
|
+
text: "Error: ".concat(errorMessage),
|
|
248
|
+
}],
|
|
249
|
+
isError: true,
|
|
250
|
+
}];
|
|
251
|
+
case 13: return [2 /*return*/];
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
}); });
|
|
255
|
+
// Start the server
|
|
256
|
+
function main() {
|
|
257
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
258
|
+
var transport;
|
|
259
|
+
return __generator(this, function (_a) {
|
|
260
|
+
switch (_a.label) {
|
|
261
|
+
case 0:
|
|
262
|
+
transport = new stdio_js_1.StdioServerTransport();
|
|
263
|
+
return [4 /*yield*/, server.connect(transport)];
|
|
264
|
+
case 1:
|
|
265
|
+
_a.sent();
|
|
266
|
+
console.error('Claude Code History MCP Server started');
|
|
267
|
+
return [2 /*return*/];
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
main().catch(function (error) {
|
|
273
|
+
console.error('Failed to start server:', error);
|
|
274
|
+
process.exit(1);
|
|
275
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ebowwa/claudecodehistory",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"description": "TypeScript library for accessing and analyzing Claude Code conversation history",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -23,10 +23,6 @@
|
|
|
23
23
|
"typecheck": "tsc --noEmit",
|
|
24
24
|
"prepublishOnly": "npm run build"
|
|
25
25
|
},
|
|
26
|
-
"devDependencies": {
|
|
27
|
-
"@types/node": "^24.0.4",
|
|
28
|
-
"typescript": "^5.8.3"
|
|
29
|
-
},
|
|
30
26
|
"keywords": [
|
|
31
27
|
"claude-code",
|
|
32
28
|
"history",
|
|
@@ -34,19 +30,25 @@
|
|
|
34
30
|
"ai",
|
|
35
31
|
"typescript",
|
|
36
32
|
"library",
|
|
37
|
-
"analytics"
|
|
33
|
+
"analytics",
|
|
34
|
+
"mcp"
|
|
38
35
|
],
|
|
39
|
-
"author": "ebowwa",
|
|
36
|
+
"author": "Ebowwa Labs <labs@ebowwa.com>",
|
|
40
37
|
"license": "MIT",
|
|
38
|
+
"homepage": "https://github.com/ebowwa/codespaces/tree/main/packages/src/claudecode-history#readme",
|
|
41
39
|
"repository": {
|
|
42
40
|
"type": "git",
|
|
43
|
-
"url": "https://github.com/ebowwa/
|
|
41
|
+
"url": "https://github.com/ebowwa/codespaces.git",
|
|
42
|
+
"directory": "packages/src/claudecode-history"
|
|
44
43
|
},
|
|
45
|
-
"homepage": "https://github.com/ebowwa/claude-code-history-mcp#readme",
|
|
46
44
|
"bugs": {
|
|
47
|
-
"url": "https://github.com/ebowwa/
|
|
45
|
+
"url": "https://github.com/ebowwa/codespaces/issues"
|
|
48
46
|
},
|
|
49
47
|
"engines": {
|
|
50
|
-
"
|
|
48
|
+
"node": ">=18.0.0"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/node": "^24.0.4",
|
|
52
|
+
"typescript": "^5.8.3"
|
|
51
53
|
}
|
|
52
54
|
}
|