@swarmify/agents-cli 1.7.0 → 1.8.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/dist/commands/sessions.d.ts +3 -0
- package/dist/commands/sessions.d.ts.map +1 -0
- package/dist/commands/sessions.js +171 -0
- package/dist/commands/sessions.js.map +1 -0
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/session/discover.d.ts +16 -0
- package/dist/lib/session/discover.d.ts.map +1 -0
- package/dist/lib/session/discover.js +376 -0
- package/dist/lib/session/discover.js.map +1 -0
- package/dist/lib/session/parse.d.ts +14 -0
- package/dist/lib/session/parse.d.ts.map +1 -0
- package/dist/lib/session/parse.js +479 -0
- package/dist/lib/session/parse.js.map +1 -0
- package/dist/lib/session/render.d.ts +21 -0
- package/dist/lib/session/render.d.ts.map +1 -0
- package/dist/lib/session/render.js +170 -0
- package/dist/lib/session/render.js.map +1 -0
- package/dist/lib/session/types.d.ts +28 -0
- package/dist/lib/session/types.d.ts.map +1 -0
- package/dist/lib/session/types.js +2 -0
- package/dist/lib/session/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8IzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8B/D"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { SESSION_AGENTS } from '../lib/session/types.js';
|
|
4
|
+
import { discoverSessions, resolveSessionById } from '../lib/session/discover.js';
|
|
5
|
+
import { parseSession } from '../lib/session/parse.js';
|
|
6
|
+
import { renderTranscript, renderSummary, renderTrace, renderJson } from '../lib/session/render.js';
|
|
7
|
+
const AGENT_COLORS = {
|
|
8
|
+
claude: chalk.magenta,
|
|
9
|
+
codex: chalk.green,
|
|
10
|
+
gemini: chalk.blue,
|
|
11
|
+
};
|
|
12
|
+
async function listAction(options) {
|
|
13
|
+
const agent = options.agent;
|
|
14
|
+
if (agent && !SESSION_AGENTS.includes(agent)) {
|
|
15
|
+
console.error(chalk.red(`Unknown agent: ${agent}. Use: ${SESSION_AGENTS.join(', ')}`));
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
const limit = parseInt(options.limit || '20', 10);
|
|
19
|
+
const spinner = ora('Scanning sessions...').start();
|
|
20
|
+
try {
|
|
21
|
+
const sessions = await discoverSessions({
|
|
22
|
+
agent,
|
|
23
|
+
project: options.project,
|
|
24
|
+
limit,
|
|
25
|
+
});
|
|
26
|
+
spinner.stop();
|
|
27
|
+
if (sessions.length === 0) {
|
|
28
|
+
console.log(chalk.gray('No sessions found.'));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// Print header
|
|
32
|
+
console.log(chalk.gray(padRight('ID', 10) +
|
|
33
|
+
padRight('Agent', 8) +
|
|
34
|
+
padRight('Project', 20) +
|
|
35
|
+
padRight('When', 16) +
|
|
36
|
+
'Branch'));
|
|
37
|
+
for (const session of sessions) {
|
|
38
|
+
const agentColor = AGENT_COLORS[session.agent] || chalk.white;
|
|
39
|
+
const when = formatRelativeTime(session.timestamp);
|
|
40
|
+
const project = session.project || '-';
|
|
41
|
+
const branch = session.gitBranch || '';
|
|
42
|
+
console.log(chalk.white(padRight(session.shortId, 10)) +
|
|
43
|
+
agentColor(padRight(session.agent, 8)) +
|
|
44
|
+
chalk.cyan(padRight(project.length > 18 ? project.slice(0, 17) + '.' : project, 20)) +
|
|
45
|
+
chalk.gray(padRight(when, 16)) +
|
|
46
|
+
chalk.gray(branch));
|
|
47
|
+
}
|
|
48
|
+
console.log(chalk.gray(`\n${sessions.length} session${sessions.length === 1 ? '' : 's'}. Use 'agents sessions view <id>' to read.`));
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
spinner.stop();
|
|
52
|
+
console.error(chalk.red(`Failed to discover sessions: ${err.message}`));
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async function viewAction(idQuery, options) {
|
|
57
|
+
// Determine output mode
|
|
58
|
+
let mode = 'transcript';
|
|
59
|
+
if (options.summary)
|
|
60
|
+
mode = 'summary';
|
|
61
|
+
else if (options.trace)
|
|
62
|
+
mode = 'trace';
|
|
63
|
+
else if (options.json)
|
|
64
|
+
mode = 'json';
|
|
65
|
+
const spinner = ora('Finding session...').start();
|
|
66
|
+
try {
|
|
67
|
+
// Discover all sessions to resolve the ID
|
|
68
|
+
const allSessions = await discoverSessions({ limit: 500 });
|
|
69
|
+
const matches = resolveSessionById(allSessions, idQuery);
|
|
70
|
+
if (matches.length === 0) {
|
|
71
|
+
spinner.stop();
|
|
72
|
+
console.error(chalk.red(`No session found matching: ${idQuery}`));
|
|
73
|
+
console.error(chalk.gray('Run "agents sessions" to list available sessions.'));
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
if (matches.length > 1) {
|
|
77
|
+
spinner.stop();
|
|
78
|
+
console.error(chalk.yellow(`Multiple sessions match "${idQuery}":`));
|
|
79
|
+
for (const m of matches) {
|
|
80
|
+
const agentColor = AGENT_COLORS[m.agent] || chalk.white;
|
|
81
|
+
console.error(` ${chalk.white(m.id)} ${agentColor(m.agent)} ${chalk.cyan(m.project || '-')} ${chalk.gray(formatRelativeTime(m.timestamp))}`);
|
|
82
|
+
}
|
|
83
|
+
console.error(chalk.gray('\nProvide a longer ID to narrow the match.'));
|
|
84
|
+
process.exit(1);
|
|
85
|
+
}
|
|
86
|
+
const session = matches[0];
|
|
87
|
+
spinner.text = `Parsing ${session.agent} session...`;
|
|
88
|
+
const events = parseSession(session.filePath, session.agent);
|
|
89
|
+
spinner.stop();
|
|
90
|
+
// Render and output
|
|
91
|
+
let output;
|
|
92
|
+
switch (mode) {
|
|
93
|
+
case 'transcript':
|
|
94
|
+
output = renderTranscript(events);
|
|
95
|
+
break;
|
|
96
|
+
case 'summary':
|
|
97
|
+
output = renderSummary(events);
|
|
98
|
+
break;
|
|
99
|
+
case 'trace':
|
|
100
|
+
output = renderTrace(events);
|
|
101
|
+
break;
|
|
102
|
+
case 'json':
|
|
103
|
+
output = renderJson(events);
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
console.log(output);
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
spinner.stop();
|
|
110
|
+
console.error(chalk.red(`Failed to read session: ${err.message}`));
|
|
111
|
+
process.exit(1);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
export function registerSessionsCommands(program) {
|
|
115
|
+
const sessionsCmd = program
|
|
116
|
+
.command('sessions')
|
|
117
|
+
.description('List and view agent sessions')
|
|
118
|
+
.option('--agent <agent>', 'Filter by agent (claude, codex, gemini)')
|
|
119
|
+
.option('--project <name>', 'Filter by project name')
|
|
120
|
+
.option('-n, --limit <n>', 'Max sessions to show', '20')
|
|
121
|
+
.action(async (options) => {
|
|
122
|
+
await listAction(options);
|
|
123
|
+
});
|
|
124
|
+
sessionsCmd
|
|
125
|
+
.command('list')
|
|
126
|
+
.description('List sessions across agents')
|
|
127
|
+
.option('--agent <agent>', 'Filter by agent (claude, codex, gemini)')
|
|
128
|
+
.option('--project <name>', 'Filter by project name')
|
|
129
|
+
.option('-n, --limit <n>', 'Max sessions to show', '20')
|
|
130
|
+
.action(async (options) => {
|
|
131
|
+
await listAction(options);
|
|
132
|
+
});
|
|
133
|
+
sessionsCmd
|
|
134
|
+
.command('view <id>')
|
|
135
|
+
.description('View a session')
|
|
136
|
+
.option('--summary', 'Show activity fingerprint (files, commands)')
|
|
137
|
+
.option('--trace', 'Show reasoning trace as markdown')
|
|
138
|
+
.option('--json', 'Output normalized events as JSON')
|
|
139
|
+
.action(async (id, options) => {
|
|
140
|
+
await viewAction(id, options);
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
// ---------------------------------------------------------------------------
|
|
144
|
+
// Formatting helpers
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
function padRight(s, width) {
|
|
147
|
+
return s.length >= width ? s + ' ' : s + ' '.repeat(width - s.length);
|
|
148
|
+
}
|
|
149
|
+
function formatRelativeTime(isoTimestamp) {
|
|
150
|
+
const now = Date.now();
|
|
151
|
+
const then = new Date(isoTimestamp).getTime();
|
|
152
|
+
if (isNaN(then))
|
|
153
|
+
return isoTimestamp;
|
|
154
|
+
const diffMs = now - then;
|
|
155
|
+
const diffMin = Math.floor(diffMs / 60_000);
|
|
156
|
+
const diffHrs = Math.floor(diffMs / 3_600_000);
|
|
157
|
+
const diffDays = Math.floor(diffMs / 86_400_000);
|
|
158
|
+
if (diffMin < 1)
|
|
159
|
+
return 'just now';
|
|
160
|
+
if (diffMin < 60)
|
|
161
|
+
return `${diffMin} min ago`;
|
|
162
|
+
if (diffHrs < 24)
|
|
163
|
+
return `${diffHrs} hour${diffHrs === 1 ? '' : 's'} ago`;
|
|
164
|
+
if (diffDays < 7)
|
|
165
|
+
return `${diffDays} day${diffDays === 1 ? '' : 's'} ago`;
|
|
166
|
+
// Older: show date
|
|
167
|
+
const d = new Date(then);
|
|
168
|
+
const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
|
169
|
+
return `${months[d.getMonth()]} ${d.getDate()}`;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -33,6 +33,7 @@ import { registerExecCommand } from './commands/exec.js';
|
|
|
33
33
|
import { registerSubagentsCommands } from './commands/subagents.js';
|
|
34
34
|
import { registerPluginsCommands } from './commands/plugins.js';
|
|
35
35
|
import { registerSyncCommand } from './commands/sync.js';
|
|
36
|
+
import { registerSessionsCommands } from './commands/sessions.js';
|
|
36
37
|
import { applyGlobalHelpConventions } from './lib/help.js';
|
|
37
38
|
import { isPromptCancelled } from './commands/utils.js';
|
|
38
39
|
const program = new Command();
|
|
@@ -70,6 +71,9 @@ Packages
|
|
|
70
71
|
search <query> Search MCP servers
|
|
71
72
|
install <pkg> Install mcp:name or skill:user/repo
|
|
72
73
|
|
|
74
|
+
Sessions
|
|
75
|
+
sessions List and view agent sessions
|
|
76
|
+
|
|
73
77
|
Automation
|
|
74
78
|
cron Manage scheduled jobs
|
|
75
79
|
daemon Manage the scheduler daemon
|
|
@@ -230,6 +234,7 @@ registerPackagesCommands(program);
|
|
|
230
234
|
registerDaemonCommands(program);
|
|
231
235
|
registerCronCommands(program);
|
|
232
236
|
registerExecCommand(program);
|
|
237
|
+
registerSessionsCommands(program);
|
|
233
238
|
registerSyncCommand(program);
|
|
234
239
|
// Deprecated 'jobs' alias for 'cron'
|
|
235
240
|
program
|
|
@@ -296,5 +301,5 @@ program.on('command:*', (operands) => {
|
|
|
296
301
|
});
|
|
297
302
|
// Run update check on EVERY invocation before parsing
|
|
298
303
|
await checkForUpdates();
|
|
299
|
-
program.
|
|
304
|
+
await program.parseAsync();
|
|
300
305
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { SessionAgentId, SessionMeta } from './types.js';
|
|
2
|
+
export interface DiscoverOptions {
|
|
3
|
+
agent?: SessionAgentId;
|
|
4
|
+
project?: string;
|
|
5
|
+
limit?: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Discover sessions across all installed agents.
|
|
9
|
+
* Returns SessionMeta[] sorted by timestamp descending (most recent first).
|
|
10
|
+
*/
|
|
11
|
+
export declare function discoverSessions(options?: DiscoverOptions): Promise<SessionMeta[]>;
|
|
12
|
+
/**
|
|
13
|
+
* Resolve a session by full or short ID from the full index.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveSessionById(sessions: SessionMeta[], idQuery: string): SessionMeta[];
|
|
16
|
+
//# sourceMappingURL=discover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../src/lib/session/discover.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9D,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA8BxF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAO1F"}
|
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import * as os from 'os';
|
|
4
|
+
import * as crypto from 'crypto';
|
|
5
|
+
import * as readline from 'readline';
|
|
6
|
+
import { SESSION_AGENTS } from './types.js';
|
|
7
|
+
const HOME = os.homedir();
|
|
8
|
+
/**
|
|
9
|
+
* Discover sessions across all installed agents.
|
|
10
|
+
* Returns SessionMeta[] sorted by timestamp descending (most recent first).
|
|
11
|
+
*/
|
|
12
|
+
export async function discoverSessions(options) {
|
|
13
|
+
const agents = options?.agent ? [options.agent] : SESSION_AGENTS;
|
|
14
|
+
const limit = options?.limit ?? 50;
|
|
15
|
+
const results = await Promise.all(agents.map(agent => {
|
|
16
|
+
switch (agent) {
|
|
17
|
+
case 'claude': return discoverClaudeSessions();
|
|
18
|
+
case 'codex': return discoverCodexSessions();
|
|
19
|
+
case 'gemini': return discoverGeminiSessions();
|
|
20
|
+
}
|
|
21
|
+
}));
|
|
22
|
+
let sessions = results.flat();
|
|
23
|
+
// Filter by project (case-insensitive substring match)
|
|
24
|
+
if (options?.project) {
|
|
25
|
+
const query = options.project.toLowerCase();
|
|
26
|
+
sessions = sessions.filter(s => s.project?.toLowerCase().includes(query));
|
|
27
|
+
}
|
|
28
|
+
// Sort by timestamp descending
|
|
29
|
+
sessions.sort((a, b) => {
|
|
30
|
+
const ta = new Date(a.timestamp).getTime() || 0;
|
|
31
|
+
const tb = new Date(b.timestamp).getTime() || 0;
|
|
32
|
+
return tb - ta;
|
|
33
|
+
});
|
|
34
|
+
return sessions.slice(0, limit);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Resolve a session by full or short ID from the full index.
|
|
38
|
+
*/
|
|
39
|
+
export function resolveSessionById(sessions, idQuery) {
|
|
40
|
+
const query = idQuery.toLowerCase();
|
|
41
|
+
// Exact match first
|
|
42
|
+
const exact = sessions.filter(s => s.id.toLowerCase() === query);
|
|
43
|
+
if (exact.length > 0)
|
|
44
|
+
return exact;
|
|
45
|
+
// Prefix match
|
|
46
|
+
return sessions.filter(s => s.id.toLowerCase().startsWith(query));
|
|
47
|
+
}
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
// Claude
|
|
50
|
+
// ---------------------------------------------------------------------------
|
|
51
|
+
async function discoverClaudeSessions() {
|
|
52
|
+
const projectsDir = path.join(HOME, '.claude', 'projects');
|
|
53
|
+
if (!fs.existsSync(projectsDir))
|
|
54
|
+
return [];
|
|
55
|
+
const sessions = [];
|
|
56
|
+
let projectDirs;
|
|
57
|
+
try {
|
|
58
|
+
projectDirs = fs.readdirSync(projectsDir);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
for (const dirName of projectDirs) {
|
|
64
|
+
const dirPath = path.join(projectsDir, dirName);
|
|
65
|
+
const stat = safeStatSync(dirPath);
|
|
66
|
+
if (!stat?.isDirectory())
|
|
67
|
+
continue;
|
|
68
|
+
let files;
|
|
69
|
+
try {
|
|
70
|
+
files = fs.readdirSync(dirPath).filter(f => f.endsWith('.jsonl'));
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
for (const file of files) {
|
|
76
|
+
const filePath = path.join(dirPath, file);
|
|
77
|
+
const sessionId = file.replace('.jsonl', '');
|
|
78
|
+
try {
|
|
79
|
+
const meta = await readClaudeMeta(filePath, sessionId);
|
|
80
|
+
if (meta) {
|
|
81
|
+
sessions.push(meta);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// Skip unreadable files
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return sessions;
|
|
90
|
+
}
|
|
91
|
+
async function readClaudeMeta(filePath, sessionId) {
|
|
92
|
+
const lines = await readFirstLines(filePath, 5);
|
|
93
|
+
for (const line of lines) {
|
|
94
|
+
let parsed;
|
|
95
|
+
try {
|
|
96
|
+
parsed = JSON.parse(line);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
// Look for first user or assistant line with timestamp/cwd
|
|
102
|
+
if ((parsed.type === 'user' || parsed.type === 'assistant') && parsed.timestamp) {
|
|
103
|
+
const cwd = parsed.cwd || '';
|
|
104
|
+
return {
|
|
105
|
+
id: sessionId,
|
|
106
|
+
shortId: sessionId.slice(0, 8),
|
|
107
|
+
agent: 'claude',
|
|
108
|
+
timestamp: parsed.timestamp,
|
|
109
|
+
project: cwd ? path.basename(cwd) : undefined,
|
|
110
|
+
cwd,
|
|
111
|
+
filePath,
|
|
112
|
+
gitBranch: parsed.gitBranch || undefined,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Fallback: use file mtime
|
|
117
|
+
const stat = safeStatSync(filePath);
|
|
118
|
+
return {
|
|
119
|
+
id: sessionId,
|
|
120
|
+
shortId: sessionId.slice(0, 8),
|
|
121
|
+
agent: 'claude',
|
|
122
|
+
timestamp: stat ? stat.mtime.toISOString() : new Date().toISOString(),
|
|
123
|
+
filePath,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
// ---------------------------------------------------------------------------
|
|
127
|
+
// Codex
|
|
128
|
+
// ---------------------------------------------------------------------------
|
|
129
|
+
async function discoverCodexSessions() {
|
|
130
|
+
const sessionsDir = path.join(HOME, '.codex', 'sessions');
|
|
131
|
+
if (!fs.existsSync(sessionsDir))
|
|
132
|
+
return [];
|
|
133
|
+
const sessions = [];
|
|
134
|
+
const jsonlFiles = walkForFiles(sessionsDir, '.jsonl', 200);
|
|
135
|
+
for (const filePath of jsonlFiles) {
|
|
136
|
+
try {
|
|
137
|
+
const meta = await readCodexMeta(filePath);
|
|
138
|
+
if (meta)
|
|
139
|
+
sessions.push(meta);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
// Skip unreadable files
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return sessions;
|
|
146
|
+
}
|
|
147
|
+
async function readCodexMeta(filePath) {
|
|
148
|
+
const lines = await readFirstLines(filePath, 1);
|
|
149
|
+
if (lines.length === 0)
|
|
150
|
+
return null;
|
|
151
|
+
let parsed;
|
|
152
|
+
try {
|
|
153
|
+
parsed = JSON.parse(lines[0]);
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
if (parsed.type !== 'session_meta')
|
|
159
|
+
return null;
|
|
160
|
+
const payload = parsed.payload || {};
|
|
161
|
+
const sessionId = payload.id || '';
|
|
162
|
+
if (!sessionId)
|
|
163
|
+
return null;
|
|
164
|
+
const cwd = payload.cwd || '';
|
|
165
|
+
return {
|
|
166
|
+
id: sessionId,
|
|
167
|
+
shortId: sessionId.slice(0, 8),
|
|
168
|
+
agent: 'codex',
|
|
169
|
+
timestamp: payload.timestamp || parsed.timestamp || new Date().toISOString(),
|
|
170
|
+
project: cwd ? path.basename(cwd) : undefined,
|
|
171
|
+
cwd,
|
|
172
|
+
filePath,
|
|
173
|
+
gitBranch: payload.git?.branch || undefined,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
// ---------------------------------------------------------------------------
|
|
177
|
+
// Gemini
|
|
178
|
+
// ---------------------------------------------------------------------------
|
|
179
|
+
async function discoverGeminiSessions() {
|
|
180
|
+
const tmpDir = path.join(HOME, '.gemini', 'tmp');
|
|
181
|
+
if (!fs.existsSync(tmpDir))
|
|
182
|
+
return [];
|
|
183
|
+
// Build project hash -> name map
|
|
184
|
+
const projectMap = buildGeminiProjectMap();
|
|
185
|
+
const sessions = [];
|
|
186
|
+
let hashDirs;
|
|
187
|
+
try {
|
|
188
|
+
hashDirs = fs.readdirSync(tmpDir);
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
return [];
|
|
192
|
+
}
|
|
193
|
+
for (const hashDir of hashDirs) {
|
|
194
|
+
const chatsDir = path.join(tmpDir, hashDir, 'chats');
|
|
195
|
+
if (!fs.existsSync(chatsDir))
|
|
196
|
+
continue;
|
|
197
|
+
let chatFiles;
|
|
198
|
+
try {
|
|
199
|
+
chatFiles = fs.readdirSync(chatsDir).filter(f => f.endsWith('.json'));
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
for (const file of chatFiles) {
|
|
205
|
+
const filePath = path.join(chatsDir, file);
|
|
206
|
+
try {
|
|
207
|
+
const meta = readGeminiMeta(filePath, hashDir, projectMap);
|
|
208
|
+
if (meta)
|
|
209
|
+
sessions.push(meta);
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
// Skip unreadable files
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return sessions;
|
|
217
|
+
}
|
|
218
|
+
function readGeminiMeta(filePath, hashDir, projectMap) {
|
|
219
|
+
// Read the first ~2KB to get top-level fields without parsing entire messages array
|
|
220
|
+
const fd = fs.openSync(filePath, 'r');
|
|
221
|
+
const buf = Buffer.alloc(2048);
|
|
222
|
+
const bytesRead = fs.readSync(fd, buf, 0, 2048, 0);
|
|
223
|
+
fs.closeSync(fd);
|
|
224
|
+
const header = buf.toString('utf-8', 0, bytesRead);
|
|
225
|
+
// Extract fields via regex (avoids parsing potentially huge messages array)
|
|
226
|
+
const sessionId = extractJsonField(header, 'sessionId');
|
|
227
|
+
const startTime = extractJsonField(header, 'startTime');
|
|
228
|
+
const projectHash = extractJsonField(header, 'projectHash');
|
|
229
|
+
if (!sessionId)
|
|
230
|
+
return null;
|
|
231
|
+
// Resolve project name from hash
|
|
232
|
+
const projectInfo = projectMap.get(projectHash || hashDir);
|
|
233
|
+
const project = projectInfo?.name || hashDir.slice(0, 12);
|
|
234
|
+
const cwd = projectInfo?.path;
|
|
235
|
+
// Count messages roughly by counting occurrences of "type":" in the full file size
|
|
236
|
+
const stat = safeStatSync(filePath);
|
|
237
|
+
return {
|
|
238
|
+
id: sessionId,
|
|
239
|
+
shortId: sessionId.slice(0, 8),
|
|
240
|
+
agent: 'gemini',
|
|
241
|
+
timestamp: startTime || (stat ? stat.mtime.toISOString() : new Date().toISOString()),
|
|
242
|
+
project,
|
|
243
|
+
cwd,
|
|
244
|
+
filePath,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
function buildGeminiProjectMap() {
|
|
248
|
+
const map = new Map();
|
|
249
|
+
const projectsJsonPath = path.join(HOME, '.gemini', 'projects.json');
|
|
250
|
+
if (!fs.existsSync(projectsJsonPath))
|
|
251
|
+
return map;
|
|
252
|
+
try {
|
|
253
|
+
const data = JSON.parse(fs.readFileSync(projectsJsonPath, 'utf-8'));
|
|
254
|
+
const projects = data.projects;
|
|
255
|
+
if (typeof projects === 'object' && projects !== null) {
|
|
256
|
+
if (Array.isArray(projects)) {
|
|
257
|
+
// Array format: ["path1", "path2"]
|
|
258
|
+
for (const p of projects) {
|
|
259
|
+
if (typeof p === 'string') {
|
|
260
|
+
const hash = sha256(p);
|
|
261
|
+
map.set(hash, { name: path.basename(p), path: p });
|
|
262
|
+
// Also try the raw directory name
|
|
263
|
+
map.set(p, { name: path.basename(p), path: p });
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
// Object format: {path: name}
|
|
269
|
+
for (const [p, name] of Object.entries(projects)) {
|
|
270
|
+
const hash = sha256(p);
|
|
271
|
+
map.set(hash, { name: String(name), path: p });
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
// Ignore parse errors
|
|
278
|
+
}
|
|
279
|
+
// Also check ~/.gemini/history/*/.project_root for additional mappings
|
|
280
|
+
const historyDir = path.join(HOME, '.gemini', 'history');
|
|
281
|
+
if (fs.existsSync(historyDir)) {
|
|
282
|
+
try {
|
|
283
|
+
for (const name of fs.readdirSync(historyDir)) {
|
|
284
|
+
const rootFile = path.join(historyDir, name, '.project_root');
|
|
285
|
+
if (fs.existsSync(rootFile)) {
|
|
286
|
+
try {
|
|
287
|
+
const projectPath = fs.readFileSync(rootFile, 'utf-8').trim();
|
|
288
|
+
if (projectPath) {
|
|
289
|
+
const hash = sha256(projectPath);
|
|
290
|
+
map.set(hash, { name, path: projectPath });
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
catch {
|
|
294
|
+
// Skip
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
catch {
|
|
300
|
+
// Skip
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return map;
|
|
304
|
+
}
|
|
305
|
+
// ---------------------------------------------------------------------------
|
|
306
|
+
// Utilities
|
|
307
|
+
// ---------------------------------------------------------------------------
|
|
308
|
+
function readFirstLines(filePath, maxLines) {
|
|
309
|
+
return new Promise((resolve) => {
|
|
310
|
+
const lines = [];
|
|
311
|
+
const stream = fs.createReadStream(filePath, { encoding: 'utf-8' });
|
|
312
|
+
const rl = readline.createInterface({ input: stream, crlfDelay: Infinity });
|
|
313
|
+
rl.on('line', (line) => {
|
|
314
|
+
if (line.trim()) {
|
|
315
|
+
lines.push(line);
|
|
316
|
+
}
|
|
317
|
+
if (lines.length >= maxLines) {
|
|
318
|
+
rl.close();
|
|
319
|
+
stream.destroy();
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
rl.on('close', () => resolve(lines));
|
|
323
|
+
rl.on('error', () => resolve(lines));
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Walk a directory recursively for files with a given extension.
|
|
328
|
+
* Returns at most `limit` files, sorted by mtime descending.
|
|
329
|
+
*/
|
|
330
|
+
function walkForFiles(dir, ext, limit) {
|
|
331
|
+
const results = [];
|
|
332
|
+
function walk(d, depth) {
|
|
333
|
+
if (depth > 5)
|
|
334
|
+
return; // Prevent deep recursion
|
|
335
|
+
let entries;
|
|
336
|
+
try {
|
|
337
|
+
entries = fs.readdirSync(d);
|
|
338
|
+
}
|
|
339
|
+
catch {
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
for (const entry of entries) {
|
|
343
|
+
const full = path.join(d, entry);
|
|
344
|
+
const stat = safeStatSync(full);
|
|
345
|
+
if (!stat)
|
|
346
|
+
continue;
|
|
347
|
+
if (stat.isDirectory()) {
|
|
348
|
+
walk(full, depth + 1);
|
|
349
|
+
}
|
|
350
|
+
else if (entry.endsWith(ext)) {
|
|
351
|
+
results.push({ path: full, mtime: stat.mtimeMs });
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
walk(dir, 0);
|
|
356
|
+
// Sort by mtime descending and limit
|
|
357
|
+
results.sort((a, b) => b.mtime - a.mtime);
|
|
358
|
+
return results.slice(0, limit).map(r => r.path);
|
|
359
|
+
}
|
|
360
|
+
function extractJsonField(text, field) {
|
|
361
|
+
const re = new RegExp(`"${field}"\\s*:\\s*"([^"]*)"`, 'i');
|
|
362
|
+
const match = text.match(re);
|
|
363
|
+
return match ? match[1] : '';
|
|
364
|
+
}
|
|
365
|
+
function sha256(input) {
|
|
366
|
+
return crypto.createHash('sha256').update(input).digest('hex');
|
|
367
|
+
}
|
|
368
|
+
function safeStatSync(p) {
|
|
369
|
+
try {
|
|
370
|
+
return fs.statSync(p);
|
|
371
|
+
}
|
|
372
|
+
catch {
|
|
373
|
+
return null;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
//# sourceMappingURL=discover.js.map
|