ai-hist 0.6.0 → 0.8.2

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 (58) hide show
  1. package/README.md +34 -254
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +248 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/cloud-client.d.ts +0 -1
  7. package/dist/cloud-client.d.ts.map +1 -1
  8. package/dist/cloud-client.js +0 -2
  9. package/dist/cloud-client.js.map +1 -1
  10. package/dist/index.d.ts +138 -309
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +258 -1191
  13. package/dist/index.js.map +1 -1
  14. package/dist/mcp-server.d.ts +0 -9
  15. package/dist/mcp-server.d.ts.map +1 -1
  16. package/dist/mcp-server.js +52 -790
  17. package/dist/mcp-server.js.map +1 -1
  18. package/package.json +14 -8
  19. package/dist/cloud-push.d.ts +0 -51
  20. package/dist/cloud-push.d.ts.map +0 -1
  21. package/dist/cloud-push.js +0 -113
  22. package/dist/cloud-push.js.map +0 -1
  23. package/dist/cloud-push.test.d.ts +0 -2
  24. package/dist/cloud-push.test.d.ts.map +0 -1
  25. package/dist/cloud-push.test.js +0 -82
  26. package/dist/cloud-push.test.js.map +0 -1
  27. package/dist/jsonl-sources.d.ts +0 -33
  28. package/dist/jsonl-sources.d.ts.map +0 -1
  29. package/dist/jsonl-sources.js +0 -351
  30. package/dist/jsonl-sources.js.map +0 -1
  31. package/dist/mcp-smoke.test.d.ts +0 -2
  32. package/dist/mcp-smoke.test.d.ts.map +0 -1
  33. package/dist/mcp-smoke.test.js +0 -574
  34. package/dist/mcp-smoke.test.js.map +0 -1
  35. package/dist/pair-client.d.ts +0 -41
  36. package/dist/pair-client.d.ts.map +0 -1
  37. package/dist/pair-client.js +0 -60
  38. package/dist/pair-client.js.map +0 -1
  39. package/dist/pair-client.test.d.ts +0 -2
  40. package/dist/pair-client.test.d.ts.map +0 -1
  41. package/dist/pair-client.test.js +0 -118
  42. package/dist/pair-client.test.js.map +0 -1
  43. package/dist/session-catalog.d.ts +0 -257
  44. package/dist/session-catalog.d.ts.map +0 -1
  45. package/dist/session-catalog.js +0 -340
  46. package/dist/session-catalog.js.map +0 -1
  47. package/dist/session-catalog.test.d.ts +0 -2
  48. package/dist/session-catalog.test.d.ts.map +0 -1
  49. package/dist/session-catalog.test.js +0 -710
  50. package/dist/session-catalog.test.js.map +0 -1
  51. package/dist/session-events.test.d.ts +0 -2
  52. package/dist/session-events.test.d.ts.map +0 -1
  53. package/dist/session-events.test.js +0 -177
  54. package/dist/session-events.test.js.map +0 -1
  55. package/dist/trajectory-sources.d.ts +0 -36
  56. package/dist/trajectory-sources.d.ts.map +0 -1
  57. package/dist/trajectory-sources.js +0 -201
  58. package/dist/trajectory-sources.js.map +0 -1
@@ -1,351 +0,0 @@
1
- /**
2
- * Direct JSONL parsers for Claude / Codex / Cursor history files.
3
- *
4
- * Used as a fallback when the SQLite database the native `ai-hist sync`
5
- * command maintains isn't present — lets `npm install ai-hist` work
6
- * standalone for users who have any of these CLIs locally.
7
- *
8
- * Mirrors the canonical parser behavior in the Rust CLI. Format drift in
9
- * those upstream CLIs is the main maintenance risk.
10
- */
11
- import { readFile, readdir, stat } from 'node:fs/promises';
12
- import { homedir } from 'node:os';
13
- import { basename, dirname, join } from 'node:path';
14
- function yieldToEventLoop() {
15
- return new Promise((resolve) => setImmediate(resolve));
16
- }
17
- const CLAUDE_HISTORY = join(homedir(), '.claude', 'history.jsonl');
18
- const CODEX_HISTORY = join(homedir(), '.codex', 'history.jsonl');
19
- const CURSOR_ROOT = join(homedir(), '.cursor', 'projects');
20
- const GROK_SESSIONS_ROOT = join(homedir(), '.grok', 'sessions');
21
- async function safeStat(path) {
22
- try {
23
- const s = await stat(path);
24
- return { isDirectory: s.isDirectory(), isFile: s.isFile(), size: s.size, mtimeMs: s.mtimeMs };
25
- }
26
- catch {
27
- return null;
28
- }
29
- }
30
- async function readLines(path) {
31
- try {
32
- const content = await readFile(path, 'utf8');
33
- return content.split('\n');
34
- }
35
- catch {
36
- return [];
37
- }
38
- }
39
- function readJsonRecord(line) {
40
- try {
41
- const parsed = JSON.parse(line);
42
- if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
43
- return parsed;
44
- }
45
- return null;
46
- }
47
- catch {
48
- return null;
49
- }
50
- }
51
- function asString(value) {
52
- return typeof value === 'string' && value.length > 0 ? value : null;
53
- }
54
- function asNumber(value) {
55
- return typeof value === 'number' && Number.isFinite(value) ? value : null;
56
- }
57
- function parseClaudeLine(line) {
58
- if (!line.trim())
59
- return null;
60
- const obj = readJsonRecord(line);
61
- if (!obj)
62
- return null;
63
- const display = typeof obj.display === 'string' ? obj.display.trim() : '';
64
- if (!display)
65
- return null;
66
- return {
67
- source: 'claude',
68
- sessionId: asString(obj.sessionId),
69
- project: asString(obj.project),
70
- prompt: display,
71
- timestampMs: asNumber(obj.timestamp) ?? 0,
72
- gitBranch: asString(obj.gitBranch),
73
- };
74
- }
75
- function parseCodexLine(line) {
76
- if (!line.trim())
77
- return null;
78
- const obj = readJsonRecord(line);
79
- if (!obj)
80
- return null;
81
- const text = typeof obj.text === 'string' ? obj.text.trim() : '';
82
- if (!text)
83
- return null;
84
- const ts = asNumber(obj.ts) ?? 0;
85
- return {
86
- source: 'codex',
87
- // Codex historically uses obj.session_id (snake_case).
88
- sessionId: asString(obj.session_id ?? obj.sessionId),
89
- project: null,
90
- prompt: text,
91
- // Convert Codex's seconds-since-epoch value to milliseconds.
92
- timestampMs: Math.trunc(ts * 1000),
93
- gitBranch: null,
94
- };
95
- }
96
- /**
97
- * Cursor lines carry `{role, message: {content: [{type, text}, ...]}}` and
98
- * NO per-line timestamp. The native CLI falls back to the file mtime;
99
- * we do the same. User prompts are wrapped in `<user_query>...</user_query>`.
100
- */
101
- function parseCursorLine(line) {
102
- if (!line.trim())
103
- return null;
104
- const obj = readJsonRecord(line);
105
- if (!obj)
106
- return null;
107
- if (obj.role !== 'user')
108
- return null;
109
- const message = obj.message;
110
- if (!message || typeof message !== 'object')
111
- return null;
112
- const content = message.content;
113
- let text = '';
114
- if (typeof content === 'string') {
115
- text = content;
116
- }
117
- else if (Array.isArray(content)) {
118
- for (const c of content) {
119
- if (c && typeof c === 'object' && c.type === 'text') {
120
- const t = c.text;
121
- if (typeof t === 'string') {
122
- text = t;
123
- break;
124
- }
125
- }
126
- }
127
- }
128
- text = text.trim();
129
- if (!text)
130
- return null;
131
- if (text.startsWith('<user_query>') && text.endsWith('</user_query>')) {
132
- text = text.slice('<user_query>'.length, -'</user_query>'.length).trim();
133
- }
134
- return text || null;
135
- }
136
- // `~/.cursor/projects/<encoded-path>/...` — encoded path is the absolute
137
- // project path with `/` replaced by `-`. Rejoining on `-` → `/` is lossy for
138
- // any real `-` in a path segment, but preserves the established behavior.
139
- function decodeCursorProject(encoded) {
140
- return `/${encoded.replace(/-/g, '/')}`;
141
- }
142
- async function readDirSafe(path) {
143
- try {
144
- return await readdir(path);
145
- }
146
- catch {
147
- return [];
148
- }
149
- }
150
- async function collectMatchingFiles(root, filename, out = []) {
151
- const rootStat = await safeStat(root);
152
- if (!rootStat)
153
- return out;
154
- for (const name of await readDirSafe(root)) {
155
- const full = join(root, name);
156
- const child = await safeStat(full);
157
- if (!child)
158
- continue;
159
- if (name === filename && child.isFile) {
160
- out.push(full);
161
- }
162
- else if (child.isDirectory) {
163
- await collectMatchingFiles(full, filename, out);
164
- }
165
- }
166
- return out;
167
- }
168
- async function scanClaude() {
169
- const lines = await readLines(CLAUDE_HISTORY);
170
- const rows = [];
171
- for (const line of lines) {
172
- const row = parseClaudeLine(line);
173
- if (row)
174
- rows.push(row);
175
- }
176
- return rows;
177
- }
178
- async function scanCodex() {
179
- const lines = await readLines(CODEX_HISTORY);
180
- const rows = [];
181
- for (const line of lines) {
182
- const row = parseCodexLine(line);
183
- if (row)
184
- rows.push(row);
185
- }
186
- return rows;
187
- }
188
- async function scanCursor() {
189
- const root = await safeStat(CURSOR_ROOT);
190
- if (!root)
191
- return [];
192
- const rows = [];
193
- const projectDirs = await readDirSafe(CURSOR_ROOT);
194
- for (const projectDirName of projectDirs) {
195
- const projectDir = join(CURSOR_ROOT, projectDirName);
196
- if (!(await safeStat(projectDir)))
197
- continue;
198
- const tsRoot = join(projectDir, 'agent-transcripts');
199
- if (!(await safeStat(tsRoot)))
200
- continue;
201
- const projectPath = decodeCursorProject(projectDirName);
202
- const sessionDirs = await readDirSafe(tsRoot);
203
- for (const sessionDirName of sessionDirs) {
204
- const sessionDir = join(tsRoot, sessionDirName);
205
- if (!(await safeStat(sessionDir)))
206
- continue;
207
- const sessionId = sessionDirName;
208
- const jsonl = join(sessionDir, `${sessionId}.jsonl`);
209
- const fileStat = await safeStat(jsonl);
210
- if (!fileStat)
211
- continue;
212
- const tsMs = Math.trunc(fileStat.mtimeMs);
213
- for (const line of await readLines(jsonl)) {
214
- const text = parseCursorLine(line);
215
- if (!text)
216
- continue;
217
- rows.push({
218
- source: 'cursor',
219
- sessionId,
220
- project: projectPath,
221
- prompt: text,
222
- timestampMs: tsMs,
223
- gitBranch: null,
224
- });
225
- }
226
- }
227
- // Yield between project dirs so very large cursor histories don't
228
- // hold the event loop for seconds at a time.
229
- await yieldToEventLoop();
230
- }
231
- return rows;
232
- }
233
- function parseIsoMs(value, fallbackMs) {
234
- if (typeof value !== 'string' || value.length === 0)
235
- return fallbackMs;
236
- const parsed = Date.parse(value);
237
- return Number.isFinite(parsed) ? parsed : fallbackMs;
238
- }
239
- function grokText(obj, role) {
240
- if (obj.type !== role)
241
- return null;
242
- if (role === 'user' && obj.synthetic_reason)
243
- return null;
244
- const content = obj.content;
245
- const parts = [];
246
- if (typeof content === 'string') {
247
- parts.push(content);
248
- }
249
- else if (Array.isArray(content)) {
250
- for (const item of content) {
251
- if (!item || typeof item !== 'object')
252
- continue;
253
- const record = item;
254
- if (record.type === 'text' && typeof record.text === 'string')
255
- parts.push(record.text);
256
- }
257
- }
258
- else if (content && typeof content === 'object') {
259
- const record = content;
260
- if (typeof record.text === 'string')
261
- parts.push(record.text);
262
- }
263
- const text = parts.map((part) => part.trim()).filter(Boolean).join('\n');
264
- return text || null;
265
- }
266
- function grokProjectFromPath(chatPath) {
267
- const encodedProject = basename(dirname(dirname(chatPath)));
268
- try {
269
- const decoded = decodeURIComponent(encodedProject);
270
- return decoded.length > 0 ? decoded : null;
271
- }
272
- catch {
273
- return null;
274
- }
275
- }
276
- async function readGrokSummary(chatPath) {
277
- try {
278
- const parsed = JSON.parse(await readFile(join(dirname(chatPath), 'summary.json'), 'utf8'));
279
- return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : null;
280
- }
281
- catch {
282
- return null;
283
- }
284
- }
285
- function nestedString(obj, path) {
286
- let current = obj;
287
- for (const part of path) {
288
- if (!current || typeof current !== 'object' || Array.isArray(current))
289
- return null;
290
- current = current[part];
291
- }
292
- return asString(current);
293
- }
294
- async function scanGrok() {
295
- const root = await safeStat(GROK_SESSIONS_ROOT);
296
- if (!root)
297
- return [];
298
- const rows = [];
299
- for (const chatPath of await collectMatchingFiles(GROK_SESSIONS_ROOT, 'chat_history.jsonl')) {
300
- const summary = await readGrokSummary(chatPath);
301
- const fileStat = await safeStat(chatPath);
302
- const fallbackMs = Math.trunc(fileStat?.mtimeMs ?? 0);
303
- const sessionId = nestedString(summary, ['info', 'id']) ?? basename(dirname(chatPath));
304
- const project = nestedString(summary, ['info', 'cwd']) ?? asString(summary?.git_root_dir) ?? grokProjectFromPath(chatPath);
305
- const gitBranch = asString(summary?.head_branch);
306
- const baseMs = parseIsoMs(summary?.created_at, fallbackMs);
307
- let idx = 0;
308
- for (const line of await readLines(chatPath)) {
309
- const obj = readJsonRecord(line);
310
- if (!obj)
311
- continue;
312
- const prompt = grokText(obj, 'user');
313
- if (!prompt)
314
- continue;
315
- rows.push({
316
- source: 'grok',
317
- sessionId,
318
- project,
319
- prompt,
320
- timestampMs: baseMs + idx,
321
- gitBranch,
322
- });
323
- idx += 1;
324
- }
325
- await yieldToEventLoop();
326
- }
327
- return rows;
328
- }
329
- /**
330
- * Scan all available local source files. Async + yields between sources
331
- * so a host event loop (e.g. Electron's main process) stays responsive.
332
- * Silently skips sources whose paths don't exist — that's the common
333
- * case for users who only have one CLI.
334
- */
335
- export async function scanLocalSources() {
336
- const claudeRows = await scanClaude();
337
- await yieldToEventLoop();
338
- const codexRows = await scanCodex();
339
- await yieldToEventLoop();
340
- const cursorRows = await scanCursor();
341
- await yieldToEventLoop();
342
- const grokRows = await scanGrok();
343
- return [...claudeRows, ...codexRows, ...cursorRows, ...grokRows];
344
- }
345
- export const LOCAL_SOURCE_PATHS = {
346
- claude: CLAUDE_HISTORY,
347
- codex: CODEX_HISTORY,
348
- cursorRoot: CURSOR_ROOT,
349
- grokSessionsRoot: GROK_SESSIONS_ROOT,
350
- };
351
- //# sourceMappingURL=jsonl-sources.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsonl-sources.js","sourceRoot":"","sources":["../src/jsonl-sources.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=mcp-smoke.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-smoke.test.d.ts","sourceRoot":"","sources":["../src/mcp-smoke.test.ts"],"names":[],"mappings":""}