ai-hist 0.3.7 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +100 -2
- package/dist/cloud-client.d.ts +1 -0
- package/dist/cloud-client.d.ts.map +1 -1
- package/dist/cloud-client.js +2 -0
- package/dist/cloud-client.js.map +1 -1
- package/dist/cloud-push.d.ts +51 -0
- package/dist/cloud-push.d.ts.map +1 -0
- package/dist/cloud-push.js +113 -0
- package/dist/cloud-push.js.map +1 -0
- package/dist/cloud-push.test.d.ts +2 -0
- package/dist/cloud-push.test.d.ts.map +1 -0
- package/dist/cloud-push.test.js +82 -0
- package/dist/cloud-push.test.js.map +1 -0
- package/dist/index.d.ts +119 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +304 -10
- package/dist/index.js.map +1 -1
- package/dist/jsonl-sources.d.ts +4 -6
- package/dist/jsonl-sources.d.ts.map +1 -1
- package/dist/jsonl-sources.js +9 -12
- package/dist/jsonl-sources.js.map +1 -1
- package/dist/mcp-server.js +116 -1
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp-smoke.test.js +194 -44
- package/dist/mcp-smoke.test.js.map +1 -1
- package/dist/session-catalog.d.ts +257 -0
- package/dist/session-catalog.d.ts.map +1 -0
- package/dist/session-catalog.js +340 -0
- package/dist/session-catalog.js.map +1 -0
- package/dist/session-catalog.test.d.ts +2 -0
- package/dist/session-catalog.test.d.ts.map +1 -0
- package/dist/session-catalog.test.js +710 -0
- package/dist/session-catalog.test.js.map +1 -0
- package/dist/session-events.test.d.ts +2 -0
- package/dist/session-events.test.d.ts.map +1 -0
- package/dist/session-events.test.js +177 -0
- package/dist/session-events.test.js.map +1 -0
- package/package.json +1 -1
package/dist/mcp-smoke.test.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
|
-
import { spawn } from 'node:child_process';
|
|
3
|
-
import { mkdtemp, mkdir, realpath,
|
|
2
|
+
import { execFile, spawn } from 'node:child_process';
|
|
3
|
+
import { mkdtemp, mkdir, realpath, writeFile } from 'node:fs/promises';
|
|
4
4
|
import { tmpdir } from 'node:os';
|
|
5
|
-
import { join } from 'node:path';
|
|
5
|
+
import { dirname, join } from 'node:path';
|
|
6
6
|
import { test } from 'node:test';
|
|
7
7
|
import initSqlJs from 'sql.js';
|
|
8
8
|
import { openAiHist } from './index.js';
|
|
@@ -140,32 +140,60 @@ test('SDK fallback ingests compacted per-run trajectories from TRAJECTORY_ROOT',
|
|
|
140
140
|
test('SDK fallback ingests OpenCode rows committed in WAL files', async () => {
|
|
141
141
|
const root = await mkdtemp(join(tmpdir(), 'ai-hist-opencode-wal-'));
|
|
142
142
|
const dbPath = join(root, 'opencode.db');
|
|
143
|
-
const
|
|
144
|
-
const child = spawn('python3', [
|
|
145
|
-
'-c',
|
|
146
|
-
`
|
|
147
|
-
import json, pathlib, sqlite3, time
|
|
148
|
-
db = pathlib.Path(${JSON.stringify(dbPath)})
|
|
149
|
-
ready = pathlib.Path(${JSON.stringify(readyPath)})
|
|
150
|
-
conn = sqlite3.connect(db)
|
|
151
|
-
conn.execute("PRAGMA journal_mode=WAL")
|
|
152
|
-
conn.execute("PRAGMA wal_autocheckpoint=0")
|
|
153
|
-
conn.execute("CREATE TABLE session (id TEXT PRIMARY KEY, directory TEXT, time_created INTEGER)")
|
|
154
|
-
conn.execute("CREATE TABLE message (id TEXT PRIMARY KEY, session_id TEXT, time_created INTEGER, data TEXT)")
|
|
155
|
-
conn.execute("CREATE TABLE part (id TEXT PRIMARY KEY, message_id TEXT, session_id TEXT, time_created INTEGER, data TEXT)")
|
|
156
|
-
conn.execute("INSERT INTO session VALUES ('oc-ts-wal', '/tmp/opencode-ts', 1700000000000)")
|
|
157
|
-
conn.execute("INSERT INTO message VALUES ('msg-ts-wal', 'oc-ts-wal', 1700000001000, ?)", (json.dumps({"role":"user"}),))
|
|
158
|
-
conn.execute("INSERT INTO part VALUES ('part-ts-wal', 'msg-ts-wal', 'oc-ts-wal', 1700000002000, ?)", (json.dumps({"type":"text","text":"ts wal opencode prompt"}),))
|
|
159
|
-
conn.commit()
|
|
160
|
-
live = sqlite3.connect(db)
|
|
161
|
-
assert live.execute("SELECT COUNT(*) FROM part").fetchone()[0] == 1
|
|
162
|
-
live.close()
|
|
163
|
-
ready.write_text("ready")
|
|
164
|
-
time.sleep(60)
|
|
165
|
-
`,
|
|
166
|
-
], { stdio: ['ignore', 'ignore', 'pipe'] });
|
|
143
|
+
const child = spawn('sqlite3', ['-bail', dbPath], { stdio: ['pipe', 'ignore', 'pipe'] });
|
|
167
144
|
const stderr = [];
|
|
168
145
|
child.stderr.on('data', (chunk) => stderr.push(chunk));
|
|
146
|
+
const fixtureReady = new Promise((resolve, reject) => {
|
|
147
|
+
const deadline = Date.now() + 5_000;
|
|
148
|
+
let settled = false;
|
|
149
|
+
let retryTimer;
|
|
150
|
+
const finish = (error, output) => {
|
|
151
|
+
if (settled)
|
|
152
|
+
return;
|
|
153
|
+
settled = true;
|
|
154
|
+
if (retryTimer)
|
|
155
|
+
clearTimeout(retryTimer);
|
|
156
|
+
if (error)
|
|
157
|
+
reject(error);
|
|
158
|
+
else
|
|
159
|
+
resolve(output ?? '');
|
|
160
|
+
};
|
|
161
|
+
const poll = () => {
|
|
162
|
+
execFile('sqlite3', ['-readonly', dbPath, "PRAGMA journal_mode; SELECT count(*) FROM part;"], (error, stdout) => {
|
|
163
|
+
if (!error && stdout === 'wal\n1\n') {
|
|
164
|
+
finish(undefined, stdout);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
if (Date.now() >= deadline) {
|
|
168
|
+
finish(new Error(`timed out waiting for sqlite fixture: ${Buffer.concat(stderr).toString('utf8')}; ` +
|
|
169
|
+
`last probe: ${error ? String(error) : JSON.stringify(stdout)}`));
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
retryTimer = setTimeout(poll, 25);
|
|
173
|
+
});
|
|
174
|
+
};
|
|
175
|
+
child.once('error', (err) => {
|
|
176
|
+
finish(new Error(`could not start sqlite3: ${String(err)}`));
|
|
177
|
+
});
|
|
178
|
+
child.stdin.once('error', (err) => {
|
|
179
|
+
finish(new Error(`could not write sqlite fixture: ${String(err)}`));
|
|
180
|
+
});
|
|
181
|
+
child.once('exit', (code, signal) => {
|
|
182
|
+
finish(new Error(`sqlite3 exited before fixture readiness (code=${String(code)}, signal=${String(signal)}): ` +
|
|
183
|
+
Buffer.concat(stderr).toString('utf8')));
|
|
184
|
+
});
|
|
185
|
+
poll();
|
|
186
|
+
});
|
|
187
|
+
child.stdin.write(`
|
|
188
|
+
PRAGMA journal_mode=WAL;
|
|
189
|
+
PRAGMA wal_autocheckpoint=0;
|
|
190
|
+
CREATE TABLE session (id TEXT PRIMARY KEY, directory TEXT, time_created INTEGER);
|
|
191
|
+
CREATE TABLE message (id TEXT PRIMARY KEY, session_id TEXT, time_created INTEGER, data TEXT);
|
|
192
|
+
CREATE TABLE part (id TEXT PRIMARY KEY, message_id TEXT, session_id TEXT, time_created INTEGER, data TEXT);
|
|
193
|
+
INSERT INTO session VALUES ('oc-ts-wal', '/tmp/opencode-ts', 1700000000000);
|
|
194
|
+
INSERT INTO message VALUES ('msg-ts-wal', 'oc-ts-wal', 1700000001000, '{"role":"user"}');
|
|
195
|
+
INSERT INTO part VALUES ('part-ts-wal', 'msg-ts-wal', 'oc-ts-wal', 1700000002000, '{"type":"text","text":"ts wal opencode prompt"}');
|
|
196
|
+
`);
|
|
169
197
|
const previousDb = process.env.AI_HIST_DB;
|
|
170
198
|
const previousOpenCode = process.env.OPENCODE_DB;
|
|
171
199
|
const previousTrajectory = process.env.TRAJECTORY_ROOT;
|
|
@@ -173,7 +201,9 @@ time.sleep(60)
|
|
|
173
201
|
process.env.OPENCODE_DB = dbPath;
|
|
174
202
|
process.env.TRAJECTORY_ROOT = join(root, 'missing-trajectories');
|
|
175
203
|
try {
|
|
176
|
-
|
|
204
|
+
const fixtureOutput = await fixtureReady;
|
|
205
|
+
assert.match(fixtureOutput, /^wal$/m, 'fixture database did not enter WAL mode');
|
|
206
|
+
assert.match(fixtureOutput, /^1$/m, 'fixture row was not committed and readable');
|
|
177
207
|
const hist = await openAiHist({ dbPath: process.env.AI_HIST_DB });
|
|
178
208
|
try {
|
|
179
209
|
assert.deepEqual(hist.search('ts wal opencode', { source: 'opencode', limit: 5 }).map((entry) => entry.prompt), ['ts wal opencode prompt']);
|
|
@@ -214,11 +244,12 @@ test('MCP server exposes history and trajectory tools over stdio', async () => {
|
|
|
214
244
|
const stderr = [];
|
|
215
245
|
child.stderr.on('data', (chunk) => stderr.push(chunk));
|
|
216
246
|
try {
|
|
217
|
-
const { tools, stats } = await new Promise((resolve, reject) => {
|
|
247
|
+
const { tools, stats, catalog } = await new Promise((resolve, reject) => {
|
|
218
248
|
const timer = setTimeout(() => reject(new Error('timed out waiting for MCP responses')), 5000);
|
|
219
249
|
let buffer = '';
|
|
220
250
|
let tools = null;
|
|
221
251
|
let stats = null;
|
|
252
|
+
let catalog = null;
|
|
222
253
|
child.stdout.on('data', (chunk) => {
|
|
223
254
|
buffer += chunk.toString('utf8');
|
|
224
255
|
while (true) {
|
|
@@ -242,9 +273,13 @@ test('MCP server exposes history and trajectory tools over stdio', async () => {
|
|
|
242
273
|
const text = message.result?.content?.find((item) => item.type === 'text')?.text ?? '{}';
|
|
243
274
|
stats = JSON.parse(text);
|
|
244
275
|
}
|
|
245
|
-
if (
|
|
276
|
+
if (message.id === 4) {
|
|
277
|
+
const text = message.result?.content?.find((item) => item.type === 'text')?.text ?? '{}';
|
|
278
|
+
catalog = JSON.parse(text);
|
|
279
|
+
}
|
|
280
|
+
if (tools && stats && catalog) {
|
|
246
281
|
clearTimeout(timer);
|
|
247
|
-
resolve({ tools, stats });
|
|
282
|
+
resolve({ tools, stats, catalog });
|
|
248
283
|
}
|
|
249
284
|
}
|
|
250
285
|
});
|
|
@@ -285,6 +320,12 @@ test('MCP server exposes history and trajectory tools over stdio', async () => {
|
|
|
285
320
|
method: 'tools/call',
|
|
286
321
|
params: { name: 'stats', arguments: {} },
|
|
287
322
|
});
|
|
323
|
+
writeJsonRpc(child.stdin, {
|
|
324
|
+
jsonrpc: '2.0',
|
|
325
|
+
id: 4,
|
|
326
|
+
method: 'tools/call',
|
|
327
|
+
params: { name: 'list_sessions', arguments: { limit: 5 } },
|
|
328
|
+
});
|
|
288
329
|
});
|
|
289
330
|
for (const name of [
|
|
290
331
|
'search_history',
|
|
@@ -299,10 +340,103 @@ test('MCP server exposes history and trajectory tools over stdio', async () => {
|
|
|
299
340
|
'why_for_task',
|
|
300
341
|
'get_handoff',
|
|
301
342
|
'pair_check',
|
|
343
|
+
'list_sessions',
|
|
302
344
|
]) {
|
|
303
345
|
assert.ok(tools.has(name), `missing MCP tool ${name}`);
|
|
304
346
|
}
|
|
305
347
|
assert.equal(stats.projectScope, root);
|
|
348
|
+
// The catalog tool serves the sessions table, with trajectories excluded.
|
|
349
|
+
assert.equal(catalog.contractVersion, 1);
|
|
350
|
+
assert.deepEqual(catalog.sessions?.map((session) => session.sessionId), ['catalog-codex']);
|
|
351
|
+
assert.deepEqual(catalog.sessions?.[0]?.models, ['gpt-5.4']);
|
|
352
|
+
assert.equal(catalog.sessions?.[0]?.discoveryState, 'shallow');
|
|
353
|
+
}
|
|
354
|
+
finally {
|
|
355
|
+
child.kill();
|
|
356
|
+
}
|
|
357
|
+
});
|
|
358
|
+
test('list_sessions answers without a database instead of scanning provider files', async () => {
|
|
359
|
+
// No SQLite database exists, and the catalog only ever lives in one. Opening
|
|
360
|
+
// the reader here would walk every local provider file to build the JSONL
|
|
361
|
+
// fallback — seconds of I/O for a guaranteed-empty catalog. The tool must
|
|
362
|
+
// short-circuit, which shows up as sourceKind "none" rather than "jsonl".
|
|
363
|
+
const root = await realpath(await mkdtemp(join(tmpdir(), 'ai-hist-mcp-nodb-')));
|
|
364
|
+
const home = join(root, 'home');
|
|
365
|
+
await mkdir(home, { recursive: true });
|
|
366
|
+
const child = spawn(process.execPath, [new URL('./mcp-server.js', import.meta.url).pathname], {
|
|
367
|
+
cwd: root,
|
|
368
|
+
env: {
|
|
369
|
+
...process.env,
|
|
370
|
+
HOME: home,
|
|
371
|
+
USERPROFILE: home,
|
|
372
|
+
AI_HIST_DB: join(root, 'missing.db'),
|
|
373
|
+
TRAJECTORY_ROOT: join(root, 'missing-trajectories'),
|
|
374
|
+
OPENCODE_DB: join(root, 'missing-opencode.db'),
|
|
375
|
+
},
|
|
376
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
377
|
+
});
|
|
378
|
+
const stderr = [];
|
|
379
|
+
child.stderr.on('data', (chunk) => stderr.push(chunk));
|
|
380
|
+
try {
|
|
381
|
+
const payload = await new Promise((resolve, reject) => {
|
|
382
|
+
const timer = setTimeout(() => reject(new Error('timed out waiting for list_sessions')), 10_000);
|
|
383
|
+
let buffer = '';
|
|
384
|
+
child.stdout.on('data', (chunk) => {
|
|
385
|
+
buffer += chunk.toString('utf8');
|
|
386
|
+
while (true) {
|
|
387
|
+
const marker = buffer.indexOf('\n');
|
|
388
|
+
if (marker === -1)
|
|
389
|
+
return;
|
|
390
|
+
const body = buffer.slice(0, marker).trim();
|
|
391
|
+
buffer = buffer.slice(marker + 1);
|
|
392
|
+
if (!body)
|
|
393
|
+
continue;
|
|
394
|
+
const message = JSON.parse(body);
|
|
395
|
+
if (message.error) {
|
|
396
|
+
clearTimeout(timer);
|
|
397
|
+
reject(new Error(`MCP error: ${JSON.stringify(message.error)}`));
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
if (message.id === 2) {
|
|
401
|
+
clearTimeout(timer);
|
|
402
|
+
const text = message.result?.content?.find((item) => item.type === 'text')?.text ?? '{}';
|
|
403
|
+
resolve(JSON.parse(text));
|
|
404
|
+
return;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
});
|
|
408
|
+
child.on('error', (err) => {
|
|
409
|
+
clearTimeout(timer);
|
|
410
|
+
reject(err);
|
|
411
|
+
});
|
|
412
|
+
child.on('exit', (code) => {
|
|
413
|
+
if (code !== null && code !== 0) {
|
|
414
|
+
clearTimeout(timer);
|
|
415
|
+
reject(new Error(`MCP server exited ${code}: ${Buffer.concat(stderr).toString('utf8')}`));
|
|
416
|
+
}
|
|
417
|
+
});
|
|
418
|
+
writeJsonRpc(child.stdin, {
|
|
419
|
+
jsonrpc: '2.0',
|
|
420
|
+
id: 1,
|
|
421
|
+
method: 'initialize',
|
|
422
|
+
params: {
|
|
423
|
+
protocolVersion: '2025-06-18',
|
|
424
|
+
capabilities: {},
|
|
425
|
+
clientInfo: { name: 'ai-hist-smoke', version: '0.0.0' },
|
|
426
|
+
},
|
|
427
|
+
});
|
|
428
|
+
writeJsonRpc(child.stdin, { jsonrpc: '2.0', method: 'notifications/initialized', params: {} });
|
|
429
|
+
writeJsonRpc(child.stdin, {
|
|
430
|
+
jsonrpc: '2.0',
|
|
431
|
+
id: 2,
|
|
432
|
+
method: 'tools/call',
|
|
433
|
+
params: { name: 'list_sessions', arguments: {} },
|
|
434
|
+
});
|
|
435
|
+
});
|
|
436
|
+
assert.equal(payload.sourceKind, 'none');
|
|
437
|
+
assert.deepEqual(payload.sessions, []);
|
|
438
|
+
assert.equal(payload.nextCursor, null);
|
|
439
|
+
assert.match(payload.note ?? '', /sessions discover/);
|
|
306
440
|
}
|
|
307
441
|
finally {
|
|
308
442
|
child.kill();
|
|
@@ -311,19 +445,6 @@ test('MCP server exposes history and trajectory tools over stdio', async () => {
|
|
|
311
445
|
function writeJsonRpc(stdin, payload) {
|
|
312
446
|
stdin.write(`${JSON.stringify(payload)}\n`);
|
|
313
447
|
}
|
|
314
|
-
async function waitForFile(path, getError) {
|
|
315
|
-
const deadline = Date.now() + 5_000;
|
|
316
|
-
while (Date.now() < deadline) {
|
|
317
|
-
try {
|
|
318
|
-
await stat(path);
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
|
-
catch {
|
|
322
|
-
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
throw new Error(`timed out waiting for ${path}: ${getError()}`);
|
|
326
|
-
}
|
|
327
448
|
async function writeScopeFixtureDb(dbPath) {
|
|
328
449
|
const SQL = await initSqlJs();
|
|
329
450
|
const db = new SQL.Database();
|
|
@@ -347,8 +468,37 @@ async function writeScopeFixtureDb(dbPath) {
|
|
|
347
468
|
last_assistant_text TEXT,
|
|
348
469
|
raw_path TEXT,
|
|
349
470
|
parser_version INTEGER NOT NULL DEFAULT 1,
|
|
471
|
+
first_prompt TEXT,
|
|
472
|
+
models_json TEXT,
|
|
473
|
+
originator TEXT,
|
|
474
|
+
agent_version TEXT,
|
|
475
|
+
repo_url TEXT,
|
|
476
|
+
initial_commit TEXT,
|
|
477
|
+
workspace_roots_json TEXT,
|
|
478
|
+
source_stamp TEXT,
|
|
479
|
+
discovery_state TEXT,
|
|
350
480
|
PRIMARY KEY (session_id, source)
|
|
351
481
|
)`);
|
|
482
|
+
// Catalog rows live in the database's own directory so a project-scoped
|
|
483
|
+
// server (the MCP smoke test scopes to that directory) can see them.
|
|
484
|
+
const sessionCwd = dirname(dbPath);
|
|
485
|
+
const insertSession = db.prepare(`INSERT INTO sessions (session_id, source, cwd, git_branch, first_activity_ms,
|
|
486
|
+
last_activity_ms, last_assistant_text, raw_path, parser_version, first_prompt,
|
|
487
|
+
models_json, discovery_state)
|
|
488
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
|
|
489
|
+
try {
|
|
490
|
+
insertSession.run([
|
|
491
|
+
'catalog-codex', 'codex', sessionCwd, 'main', 1_000, 2_000, null, '/raw/codex.jsonl', 1,
|
|
492
|
+
'catalog codex prompt', '["gpt-5.4"]', 'shallow',
|
|
493
|
+
]);
|
|
494
|
+
insertSession.run([
|
|
495
|
+
'catalog-traj', 'trajectory', sessionCwd, null, 9_000, 9_000, null, null, 1,
|
|
496
|
+
null, null, 'full',
|
|
497
|
+
]);
|
|
498
|
+
}
|
|
499
|
+
finally {
|
|
500
|
+
insertSession.free();
|
|
501
|
+
}
|
|
352
502
|
db.run(`CREATE TABLE trajectories (
|
|
353
503
|
id TEXT PRIMARY KEY,
|
|
354
504
|
version INTEGER,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-smoke.test.js","sourceRoot":"","sources":["../src/mcp-smoke.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp-smoke.test.js","sourceRoot":"","sources":["../src/mcp-smoke.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session catalog: the materialized shallow index of coding-agent sessions.
|
|
3
|
+
*
|
|
4
|
+
* Two halves, deliberately split by who owns the write:
|
|
5
|
+
*
|
|
6
|
+
* - **Cache-only listing** — `AiHist.listSessionCatalog()` in `index.ts`
|
|
7
|
+
* reads the `sessions` table and nothing else. No provider file is opened,
|
|
8
|
+
* no `history` / `session_events` scan happens. This module supplies the
|
|
9
|
+
* row type and the raw-row → `CatalogSession` mapping it uses.
|
|
10
|
+
* - **Shallow discovery** — `discoverSessions()` here drives
|
|
11
|
+
* `ai-hist sessions discover --json`, which scans the known provider
|
|
12
|
+
* locations with bounded reads and upserts the catalog. It is a top-level
|
|
13
|
+
* function rather than an `AiHist` method because discovery *writes* the
|
|
14
|
+
* on-disk database, and an `AiHist` instance is an in-memory snapshot taken
|
|
15
|
+
* at open time — a method would hand back a reader that cannot see the rows
|
|
16
|
+
* it just wrote. Re-open (or `openAiHist` again) afterwards to read them.
|
|
17
|
+
*
|
|
18
|
+
* The Rust CLI stays the single source of truth for discovery (provider
|
|
19
|
+
* locations, bounded reads, global recency ordering, stamp comparison), exactly
|
|
20
|
+
* as `cloud-push.ts` defers to `ai-hist push` for the push pipeline.
|
|
21
|
+
*/
|
|
22
|
+
import { spawn } from 'node:child_process';
|
|
23
|
+
import type { Source } from './index.js';
|
|
24
|
+
/**
|
|
25
|
+
* Version of the session-catalog output contract this SDK understands.
|
|
26
|
+
* Mirrors the native `SESSION_CATALOG_CONTRACT_VERSION`; a `summary` whose
|
|
27
|
+
* `contractVersion` differs came from a binary that speaks a different dialect.
|
|
28
|
+
*/
|
|
29
|
+
export declare const SESSION_CATALOG_CONTRACT_VERSION = 1;
|
|
30
|
+
/**
|
|
31
|
+
* One row of the session catalog — a coding-agent session as shallow
|
|
32
|
+
* discovery knows it.
|
|
33
|
+
*
|
|
34
|
+
* Most fields are *observed* (read straight out of provider data);
|
|
35
|
+
* `firstPrompt` is *derived* — a bounded excerpt of the first substantive human
|
|
36
|
+
* prompt. Provider quirks worth knowing:
|
|
37
|
+
*
|
|
38
|
+
* - `cursor` rows never have a `firstActivityMs` (the provider records no
|
|
39
|
+
* timestamps) and their `lastActivityMs` comes from the file mtime.
|
|
40
|
+
* - `relay` rows never have a `cwd` (a relay thread has no working
|
|
41
|
+
* directory) and only exist for threads a previous sync pulled down.
|
|
42
|
+
* - `lastAssistantText` is only written by a full ingest (`ai-hist sync`), so
|
|
43
|
+
* it is `null` on rows that have only ever been discovered shallowly.
|
|
44
|
+
* - `models` / `workspaceRoots` are best effort: `[]` means "not seen in a
|
|
45
|
+
* bounded read", not "none exist".
|
|
46
|
+
*/
|
|
47
|
+
export interface CatalogSession {
|
|
48
|
+
/** Provider that owns the session. `trajectory` never appears here. */
|
|
49
|
+
source: Source;
|
|
50
|
+
/** The provider's own session id. `(source, sessionId)` is the catalog key. */
|
|
51
|
+
sessionId: string;
|
|
52
|
+
cwd: string | null;
|
|
53
|
+
gitBranch: string | null;
|
|
54
|
+
firstActivityMs: number | null;
|
|
55
|
+
lastActivityMs: number | null;
|
|
56
|
+
/** Derived: bounded excerpt of the first substantive human prompt. */
|
|
57
|
+
firstPrompt: string | null;
|
|
58
|
+
/** Full-ingest only; `null` on shallow-only rows. */
|
|
59
|
+
lastAssistantText: string | null;
|
|
60
|
+
/** Parsed from `models_json`; `[]` when nothing was observed. */
|
|
61
|
+
models: string[];
|
|
62
|
+
originator: string | null;
|
|
63
|
+
agentVersion: string | null;
|
|
64
|
+
repoUrl: string | null;
|
|
65
|
+
initialCommit: string | null;
|
|
66
|
+
/** Parsed from `workspace_roots_json`; `[]` when nothing was observed. */
|
|
67
|
+
workspaceRoots: string[];
|
|
68
|
+
rawPath: string | null;
|
|
69
|
+
/** Change stamp of the raw source at scan time (`v{scanner}:{provider stamp}`). */
|
|
70
|
+
sourceStamp: string | null;
|
|
71
|
+
/**
|
|
72
|
+
* `'shallow'` (catalog row only) or `'full'` (full evidence ingested).
|
|
73
|
+
* Rows written before the catalog existed store `NULL` and are reported as
|
|
74
|
+
* `'full'`, matching the native reader.
|
|
75
|
+
*/
|
|
76
|
+
discoveryState: 'shallow' | 'full';
|
|
77
|
+
/** `true` when the row was served from the catalog without re-reading the source. */
|
|
78
|
+
fromCache: boolean;
|
|
79
|
+
/** Parser generation that wrote the row; absent on rows streamed by discovery. */
|
|
80
|
+
parserVersion?: number;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* A precise continuation point in the catalog's total order,
|
|
84
|
+
* `(lastActivityMs DESC, source ASC, sessionId ASC)`.
|
|
85
|
+
*
|
|
86
|
+
* Recency alone is not a key — one discovery pass can stamp many sessions with
|
|
87
|
+
* the same mtime-derived millisecond, and a cursor carrying only a timestamp
|
|
88
|
+
* silently drops every row tied with the page boundary — so the identity
|
|
89
|
+
* columns make the cursor total. `lastActivityMs` is null/absent for the tail
|
|
90
|
+
* of rows whose recency is unknown; those sort after every dated row.
|
|
91
|
+
*/
|
|
92
|
+
export interface CatalogCursor {
|
|
93
|
+
lastActivityMs?: number | null;
|
|
94
|
+
source: string;
|
|
95
|
+
sessionId: string;
|
|
96
|
+
}
|
|
97
|
+
/** Filters for the cache-only catalog listing. */
|
|
98
|
+
export interface ListCatalogOptions {
|
|
99
|
+
/** Restrict to these sources. Omit for every discoverable source. */
|
|
100
|
+
sources?: Iterable<Source | string>;
|
|
101
|
+
/** Row cap. Default 50, mirroring the native `DEFAULT_CATALOG_LIMIT`. */
|
|
102
|
+
limit?: number;
|
|
103
|
+
/**
|
|
104
|
+
* Coarse cutoff: only sessions strictly older than this epoch-ms. Convenient
|
|
105
|
+
* for "anything before last Tuesday", but it cannot separate rows that share
|
|
106
|
+
* a millisecond — use `after` to walk pages. Ignored when `after` is set.
|
|
107
|
+
*/
|
|
108
|
+
beforeMs?: number;
|
|
109
|
+
/** Precise continuation from the previous page's `nextCursor`. */
|
|
110
|
+
after?: CatalogCursor;
|
|
111
|
+
}
|
|
112
|
+
/** One page of the catalog plus the cursor that continues it. */
|
|
113
|
+
export interface SessionCatalogPage {
|
|
114
|
+
/** The rows, newest first. */
|
|
115
|
+
sessions: CatalogSession[];
|
|
116
|
+
/**
|
|
117
|
+
* Pass as {@link ListCatalogOptions.after} for the next page. `null` when
|
|
118
|
+
* the page did not fill its limit, i.e. the catalog is exhausted.
|
|
119
|
+
*/
|
|
120
|
+
nextCursor: CatalogCursor | null;
|
|
121
|
+
}
|
|
122
|
+
/** A non-fatal failure during discovery: one provider, or one bad session. */
|
|
123
|
+
export interface DiscoveryDiagnostic {
|
|
124
|
+
source: string;
|
|
125
|
+
/** File path or provider-scoped handle, when the failure has one. */
|
|
126
|
+
locator: string | null;
|
|
127
|
+
error: string;
|
|
128
|
+
}
|
|
129
|
+
/** Per-provider tallies for one discovery run. */
|
|
130
|
+
export interface ProviderDiscoverySummary {
|
|
131
|
+
/** Candidates enumerated, before the global limit. */
|
|
132
|
+
candidates: number;
|
|
133
|
+
/** Rows emitted after a shallow read. */
|
|
134
|
+
discovered: number;
|
|
135
|
+
/** Rows served from the catalog because the stamp was unchanged. */
|
|
136
|
+
skippedUnchanged: number;
|
|
137
|
+
/** `true` when enumeration itself failed. */
|
|
138
|
+
failed: boolean;
|
|
139
|
+
}
|
|
140
|
+
/** Work one discovery run actually performed — bounded-work evidence. */
|
|
141
|
+
export interface DiscoveryCounters {
|
|
142
|
+
candidatesEnumerated: number;
|
|
143
|
+
shallowReads: number;
|
|
144
|
+
skippedUnchanged: number;
|
|
145
|
+
filesOpened: number;
|
|
146
|
+
bytesRead: number;
|
|
147
|
+
}
|
|
148
|
+
/** A source that deliberately has no shallow adapter, and why. */
|
|
149
|
+
export interface SourceExemption {
|
|
150
|
+
source: string;
|
|
151
|
+
reason: string;
|
|
152
|
+
}
|
|
153
|
+
/** The closing `summary` line of a discovery run. */
|
|
154
|
+
export interface DiscoverySummary {
|
|
155
|
+
/** Compare against {@link SESSION_CATALOG_CONTRACT_VERSION}. */
|
|
156
|
+
contractVersion: number;
|
|
157
|
+
discovered: number;
|
|
158
|
+
skippedUnchanged: number;
|
|
159
|
+
/** Per-provider tallies, keyed by source name. */
|
|
160
|
+
providers: Record<string, ProviderDiscoverySummary>;
|
|
161
|
+
exemptSources: SourceExemption[];
|
|
162
|
+
counters: DiscoveryCounters;
|
|
163
|
+
}
|
|
164
|
+
/** Everything one `discoverSessions()` run produced. */
|
|
165
|
+
export interface DiscoverResult {
|
|
166
|
+
/** Rows in the order the CLI streamed them: newest first, globally. */
|
|
167
|
+
sessions: CatalogSession[];
|
|
168
|
+
/** Non-fatal per-provider / per-session failures. Never throws on these. */
|
|
169
|
+
diagnostics: DiscoveryDiagnostic[];
|
|
170
|
+
/** The closing summary. Always present: a run without one is rejected. */
|
|
171
|
+
summary: DiscoverySummary;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* A discovery run that could not be completed or trusted.
|
|
175
|
+
*
|
|
176
|
+
* The native command emits its diagnostics and the summary trailer even when
|
|
177
|
+
* every provider fails, so a failed run still carries everything it managed to
|
|
178
|
+
* learn: `diagnostics` says which sources broke and why, and `summary` (when
|
|
179
|
+
* the trailer arrived) says what the run actually did. `stderr` and `exitCode`
|
|
180
|
+
* carry the process-level detail.
|
|
181
|
+
*/
|
|
182
|
+
export declare class DiscoveryError extends Error {
|
|
183
|
+
readonly exitCode: number | null;
|
|
184
|
+
readonly stderr: string;
|
|
185
|
+
readonly diagnostics: DiscoveryDiagnostic[];
|
|
186
|
+
readonly summary: DiscoverySummary | null;
|
|
187
|
+
constructor(message: string, details?: {
|
|
188
|
+
exitCode?: number | null;
|
|
189
|
+
stderr?: string;
|
|
190
|
+
diagnostics?: DiscoveryDiagnostic[];
|
|
191
|
+
summary?: DiscoverySummary | null;
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
export interface DiscoverSessionsOptions {
|
|
195
|
+
/** Explicit path to the ai-hist binary (overrides discovery). */
|
|
196
|
+
binPath?: string;
|
|
197
|
+
/** Restrict to these sources (forwarded as repeated `--source`). */
|
|
198
|
+
sources?: Iterable<Source | string>;
|
|
199
|
+
/**
|
|
200
|
+
* Global cap across all providers, applied by recency (`--limit`). The
|
|
201
|
+
* native ordering is global, so a limit of 3 returns the three newest
|
|
202
|
+
* sessions overall, not three per provider.
|
|
203
|
+
*/
|
|
204
|
+
limit?: number;
|
|
205
|
+
/** Called for each session row as it streams, before the promise resolves. */
|
|
206
|
+
onSession?: (session: CatalogSession) => void;
|
|
207
|
+
/** Called for each diagnostic line as it streams. */
|
|
208
|
+
onDiagnostic?: (diagnostic: DiscoveryDiagnostic) => void;
|
|
209
|
+
/** Extra environment for the spawned binary (merged over `process.env`). */
|
|
210
|
+
env?: NodeJS.ProcessEnv;
|
|
211
|
+
/** Injectable spawn for testing. */
|
|
212
|
+
spawnFn?: typeof spawn;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Parse a JSON string array column (`models_json`, `workspace_roots_json`).
|
|
216
|
+
* `NULL`, `''`, and malformed JSON all mean "nothing observed" → `[]`; the
|
|
217
|
+
* column never stores `[]` itself.
|
|
218
|
+
*/
|
|
219
|
+
export declare function parseJsonStringList(raw: string | null | undefined): string[];
|
|
220
|
+
/** `NULL` `discovery_state` predates the catalog and means a fully ingested row. */
|
|
221
|
+
export declare function normalizeDiscoveryState(raw: unknown): 'shallow' | 'full';
|
|
222
|
+
/** Map one snake_case CLI/`sessions`-row object onto a {@link CatalogSession}. */
|
|
223
|
+
export declare function catalogSessionFromJson(raw: Record<string, unknown>): CatalogSession;
|
|
224
|
+
/**
|
|
225
|
+
* Run shallow session discovery by driving `ai-hist sessions discover --json`.
|
|
226
|
+
*
|
|
227
|
+
* The CLI streams JSONL — one `session` object per discovered row, a
|
|
228
|
+
* `diagnostic` per non-fatal failure, then a closing `summary` — and this
|
|
229
|
+
* parses it as it arrives, so `onSession` fires progressively rather than only
|
|
230
|
+
* once the whole run finishes.
|
|
231
|
+
*
|
|
232
|
+
* Discovery **writes the on-disk database**. An `AiHist` opened before the run
|
|
233
|
+
* is a snapshot and will not contain the new rows; re-open (or call
|
|
234
|
+
* `openAiHist` again) before `listSessionCatalog()` to see them.
|
|
235
|
+
*
|
|
236
|
+
* Failure behavior mirrors the CLI's: a provider that blows up contributes a
|
|
237
|
+
* diagnostic and the run still resolves (exit 0). Individual unparseable or
|
|
238
|
+
* unrecognized lines are skipped rather than failing the run, so a newer
|
|
239
|
+
* binary's extra line types stay forward-compatible. The promise rejects with
|
|
240
|
+
* a {@link DiscoveryError} when:
|
|
241
|
+
*
|
|
242
|
+
* - the binary cannot be run at all (the message names `AI_HIST_RUST_BIN`);
|
|
243
|
+
* - the run exits non-zero — every selected provider failed. The native
|
|
244
|
+
* command still writes its diagnostics and the summary trailer before
|
|
245
|
+
* exiting, so the error carries both alongside `stderr` and `exitCode`;
|
|
246
|
+
* - no summary line arrived, or its `contractVersion` is not the one this
|
|
247
|
+
* SDK understands. The trailer is mandatory in the native contract, so a
|
|
248
|
+
* run without one (or with a version this SDK cannot read) means the rows
|
|
249
|
+
* are not safe to interpret — better to say so than to hand back a
|
|
250
|
+
* half-understood catalog.
|
|
251
|
+
*
|
|
252
|
+
* An exception thrown by `onSession` or `onDiagnostic` aborts the run: the
|
|
253
|
+
* child is killed and the promise rejects with that exception, rather than
|
|
254
|
+
* escaping the stream handler as an uncaught error in the host process.
|
|
255
|
+
*/
|
|
256
|
+
export declare function discoverSessions(opts?: DiscoverSessionsOptions): Promise<DiscoverResult>;
|
|
257
|
+
//# sourceMappingURL=session-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-catalog.d.ts","sourceRoot":"","sources":["../src/session-catalog.ts"],"names":[],"mappings":"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"}
|