ai-hist 0.2.3 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +101 -14
- package/dist/index.d.ts +36 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +132 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.d.ts +12 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +471 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/mcp-smoke.test.d.ts +2 -0
- package/dist/mcp-smoke.test.d.ts.map +1 -0
- package/dist/mcp-smoke.test.js +151 -0
- package/dist/mcp-smoke.test.js.map +1 -0
- package/dist/trajectory-sources.d.ts +36 -0
- package/dist/trajectory-sources.d.ts.map +1 -0
- package/dist/trajectory-sources.js +201 -0
- package/dist/trajectory-sources.js.map +1 -0
- package/package.json +28 -3
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# ai-hist (TypeScript SDK)
|
|
1
|
+
# ai-hist (TypeScript SDK and MCP server)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
TypeScript reader for the [ai-hist](../README.md) history database, plus an MCP server for searching local AI coding-agent history from Claude Code, Codex, Cursor, and Agent Relay.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The SDK uses `sql.js`, so it has no native build step. It reads the same SQLite file the Python `ai-hist sync` tool writes, or falls back to scanning local Claude/Codex/Cursor JSONL files and compacted trajectory JSON when the database is missing.
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
@@ -10,14 +10,12 @@ Built to let Electron / Node consumers (e.g. the `pear` desktop app) render a Co
|
|
|
10
10
|
npm install ai-hist
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
`better-sqlite3` is a native dep — when bundling into an Electron app, run `electron-rebuild` (or your bundler's equivalent) after install.
|
|
14
|
-
|
|
15
13
|
## Quick start
|
|
16
14
|
|
|
17
15
|
```ts
|
|
18
|
-
import {
|
|
16
|
+
import { openAiHist, resumeCommand } from 'ai-hist';
|
|
19
17
|
|
|
20
|
-
const hist =
|
|
18
|
+
const hist = await openAiHist(); // uses $AI_HIST_DB or ~/.local/share/ai-hist/ai-history.db
|
|
21
19
|
try {
|
|
22
20
|
const sessions = hist.listSessions({ limit: 20 });
|
|
23
21
|
for (const s of sessions) {
|
|
@@ -29,17 +27,60 @@ try {
|
|
|
29
27
|
}
|
|
30
28
|
```
|
|
31
29
|
|
|
30
|
+
To require the Python-managed SQLite database instead of JSONL fallback:
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
const hist = await openAiHist({ fallback: 'error' });
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## MCP server
|
|
37
|
+
|
|
38
|
+
After the package is published, run the local stdio MCP server with:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npx -y ai-hist-mcp
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
From a local checkout:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm install
|
|
48
|
+
npm run build
|
|
49
|
+
node dist/mcp-server.js
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The MCP server exposes tools for search, recent history, session lookup, temporal context, evidence packing, stats, trajectory search, and task WHY lookup over stdio. It runs on the user's machine and uses the same data-opening behavior as the SDK: SQLite first, then local fallback scanning.
|
|
53
|
+
|
|
54
|
+
Contract tools:
|
|
55
|
+
|
|
56
|
+
- `search_history(query, limit?)`
|
|
57
|
+
- `recent_entries(limit?, project?)`
|
|
58
|
+
- `get_session(session_id)`
|
|
59
|
+
- `get_context(id)`
|
|
60
|
+
- `stats()`
|
|
61
|
+
- `search_trajectories(query, limit?)`
|
|
62
|
+
- `why_for_task(query)`
|
|
63
|
+
|
|
32
64
|
## API
|
|
33
65
|
|
|
34
66
|
```ts
|
|
35
|
-
|
|
36
|
-
|
|
67
|
+
openAiHist(opts?: {
|
|
68
|
+
dbPath?: string;
|
|
69
|
+
fallback?: 'jsonl' | 'error';
|
|
70
|
+
}): Promise<AiHist>
|
|
71
|
+
|
|
72
|
+
hist.close(): void
|
|
37
73
|
hist.dbPath: string
|
|
74
|
+
hist.sourceKind: 'sqlite' | 'jsonl'
|
|
38
75
|
|
|
39
76
|
hist.recent(opts?): HistoryEntry[] // newest prompts first
|
|
40
|
-
hist.listSessions(opts?): SessionSummary[] // grouped by session_id, last
|
|
77
|
+
hist.listSessions(opts?): SessionSummary[] // grouped by session_id, last activity DESC
|
|
41
78
|
hist.getSession(sessionId): HistoryEntry[] // all prompts in a session, oldest first
|
|
42
|
-
hist.
|
|
79
|
+
hist.getEntry(id): HistoryEntry | null
|
|
80
|
+
hist.getInTimeWindow(timestampMs, windowMs): HistoryEntry[]
|
|
81
|
+
hist.search(query, opts?): HistoryEntry[] // literal substring search, recent matches first
|
|
82
|
+
hist.searchTrajectories(query, opts?): TrajectoryEntry[]
|
|
83
|
+
hist.whyForTask(query): TrajectoryEntry | null
|
|
43
84
|
hist.stats(): Stats // counts + date range
|
|
44
85
|
```
|
|
45
86
|
|
|
@@ -50,15 +91,61 @@ resumeCommand(entry): string | null // shell command per source; null
|
|
|
50
91
|
defaultDbPath(): string // resolve env / OS default
|
|
51
92
|
```
|
|
52
93
|
|
|
53
|
-
##
|
|
94
|
+
## Trajectories
|
|
95
|
+
|
|
96
|
+
ai-hist indexes compacted per-run trajectory JSON files as the decision WHY. Set `TRAJECTORY_ROOT` to an explicit root; the scanner reads:
|
|
97
|
+
|
|
98
|
+
```text
|
|
99
|
+
$TRAJECTORY_ROOT/**/compacted/*.json
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Without `TRAJECTORY_ROOT`, default discovery scans:
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
~/Projects/**/.trajectories/**/compacted/*.json
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
The runtime contract is one JSON file per completed run:
|
|
109
|
+
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"id": "run-id",
|
|
113
|
+
"version": 1,
|
|
114
|
+
"personaId": "planner",
|
|
115
|
+
"projectId": "agent-workforce",
|
|
116
|
+
"task": { "title": "Task title", "description": "Task description" },
|
|
117
|
+
"status": "completed",
|
|
118
|
+
"startedAt": "2026-06-06T10:00:00.000Z",
|
|
119
|
+
"completedAt": "2026-06-06T10:05:00.000Z",
|
|
120
|
+
"decisions": [
|
|
121
|
+
{
|
|
122
|
+
"question": "What should we do?",
|
|
123
|
+
"chosen": "Chosen option",
|
|
124
|
+
"reasoning": "Why this option won",
|
|
125
|
+
"alternatives": ["Other option"]
|
|
126
|
+
}
|
|
127
|
+
],
|
|
128
|
+
"retrospective": {
|
|
129
|
+
"summary": "What happened",
|
|
130
|
+
"approach": "How the work was done",
|
|
131
|
+
"learnings": ["What to carry forward"],
|
|
132
|
+
"confidence": 0.8
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Schema
|
|
138
|
+
|
|
139
|
+
The canonical schema is owned by the Python tool:
|
|
54
140
|
|
|
55
141
|
```sql
|
|
56
142
|
CREATE TABLE history (
|
|
57
143
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
58
|
-
source TEXT NOT NULL,
|
|
144
|
+
source TEXT NOT NULL,
|
|
59
145
|
session_id TEXT,
|
|
60
146
|
project TEXT,
|
|
61
147
|
prompt TEXT NOT NULL,
|
|
148
|
+
prompt_hash TEXT,
|
|
62
149
|
timestamp_ms INTEGER NOT NULL,
|
|
63
150
|
UNIQUE(source, timestamp_ms, prompt)
|
|
64
151
|
);
|
|
@@ -66,7 +153,7 @@ CREATE TABLE history (
|
|
|
66
153
|
CREATE VIRTUAL TABLE history_fts USING fts5(prompt, project, content='history', content_rowid='id');
|
|
67
154
|
```
|
|
68
155
|
|
|
69
|
-
|
|
156
|
+
Trajectory sync also creates a structured `trajectories` table and inserts each per-run compact file into `history` with `source='trajectory'`, so general history search and WHY-specific lookup both work.
|
|
70
157
|
|
|
71
158
|
## License
|
|
72
159
|
|
package/dist/index.d.ts
CHANGED
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
* of data); revisit if anyone hits millions.
|
|
13
13
|
*/
|
|
14
14
|
import { type Database } from 'sql.js';
|
|
15
|
-
|
|
15
|
+
import { type TrajectoryDecision, type TrajectoryRetrospective } from './trajectory-sources.js';
|
|
16
|
+
export type Source = 'claude' | 'codex' | 'cursor' | 'relay' | 'trajectory';
|
|
16
17
|
export interface HistoryEntry {
|
|
17
18
|
id: number;
|
|
18
19
|
source: Source;
|
|
@@ -52,6 +53,29 @@ export interface Stats {
|
|
|
52
53
|
firstTimestampMs: number | null;
|
|
53
54
|
lastTimestampMs: number | null;
|
|
54
55
|
}
|
|
56
|
+
export interface TrajectoryEntry {
|
|
57
|
+
id: string;
|
|
58
|
+
version: number | null;
|
|
59
|
+
personaId: string | null;
|
|
60
|
+
projectId: string | null;
|
|
61
|
+
task: {
|
|
62
|
+
title: string | null;
|
|
63
|
+
description: string | null;
|
|
64
|
+
};
|
|
65
|
+
status: string | null;
|
|
66
|
+
startedAt: string | null;
|
|
67
|
+
completedAt: string | null;
|
|
68
|
+
decisions: TrajectoryDecision[];
|
|
69
|
+
retrospective: TrajectoryRetrospective;
|
|
70
|
+
searchText: string;
|
|
71
|
+
path: string | null;
|
|
72
|
+
updatedMs: number;
|
|
73
|
+
timestampMs: number;
|
|
74
|
+
}
|
|
75
|
+
export interface TrajectorySearchOptions {
|
|
76
|
+
/** Default 20. */
|
|
77
|
+
limit?: number;
|
|
78
|
+
}
|
|
55
79
|
/** Resolve the SQLite path the Python CLI writes to. */
|
|
56
80
|
export declare function defaultDbPath(): string;
|
|
57
81
|
export interface OpenOptions {
|
|
@@ -123,6 +147,17 @@ export declare class AiHist {
|
|
|
123
147
|
* search for them. Empty queries return an empty array.
|
|
124
148
|
*/
|
|
125
149
|
search(query: string, opts?: SearchOptions): HistoryEntry[];
|
|
150
|
+
/** Search compacted per-run trajectory WHY: decisions and retrospectives. */
|
|
151
|
+
searchTrajectories(query: string, opts?: TrajectorySearchOptions): TrajectoryEntry[];
|
|
152
|
+
/** Best-matching per-run trajectory for a task query, or `null` if none match. */
|
|
153
|
+
whyForTask(query: string): TrajectoryEntry | null;
|
|
154
|
+
/** Single entry by id, or `null` if not found. */
|
|
155
|
+
getEntry(id: number): HistoryEntry | null;
|
|
156
|
+
/**
|
|
157
|
+
* All entries whose timestamp falls within [timestampMs - windowMs,
|
|
158
|
+
* timestampMs + windowMs], ordered oldest first. Used by get_context.
|
|
159
|
+
*/
|
|
160
|
+
getInTimeWindow(timestampMs: number, windowMs: number): HistoryEntry[];
|
|
126
161
|
/** Counts + date range, mirroring `ai-hist stats`. */
|
|
127
162
|
stats(): Stats;
|
|
128
163
|
}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAkB,EAAE,KAAK,QAAQ,EAAoB,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,7 @@ import { readFile, stat } from 'node:fs/promises';
|
|
|
16
16
|
import { homedir } from 'node:os';
|
|
17
17
|
import { join } from 'node:path';
|
|
18
18
|
import { scanLocalSources, LOCAL_SOURCE_PATHS } from './jsonl-sources.js';
|
|
19
|
+
import { scanLocalTrajectories, trajectoryRootDescription, } from './trajectory-sources.js';
|
|
19
20
|
/** Resolve the SQLite path the Python CLI writes to. */
|
|
20
21
|
export function defaultDbPath() {
|
|
21
22
|
const fromEnv = process.env.AI_HIST_DB;
|
|
@@ -30,6 +31,27 @@ function getSqlJs() {
|
|
|
30
31
|
}
|
|
31
32
|
return _sqlPromise;
|
|
32
33
|
}
|
|
34
|
+
function ensureTrajectorySchema(db) {
|
|
35
|
+
db.run(`CREATE TABLE IF NOT EXISTS trajectories (
|
|
36
|
+
id TEXT PRIMARY KEY,
|
|
37
|
+
version INTEGER,
|
|
38
|
+
persona_id TEXT,
|
|
39
|
+
project_id TEXT,
|
|
40
|
+
task_title TEXT,
|
|
41
|
+
task_description TEXT,
|
|
42
|
+
status TEXT,
|
|
43
|
+
started_at TEXT,
|
|
44
|
+
completed_at TEXT,
|
|
45
|
+
decisions_json TEXT NOT NULL,
|
|
46
|
+
retrospective_json TEXT NOT NULL,
|
|
47
|
+
search_text TEXT NOT NULL,
|
|
48
|
+
path TEXT,
|
|
49
|
+
updated_ms INTEGER NOT NULL,
|
|
50
|
+
timestamp_ms INTEGER NOT NULL
|
|
51
|
+
)`);
|
|
52
|
+
db.run('CREATE INDEX IF NOT EXISTS idx_trajectories_timestamp ON trajectories(timestamp_ms DESC)');
|
|
53
|
+
db.run('CREATE INDEX IF NOT EXISTS idx_trajectories_project ON trajectories(project_id)');
|
|
54
|
+
}
|
|
33
55
|
/**
|
|
34
56
|
* Open an `AiHist` reader. Async because sql.js initializes its WASM
|
|
35
57
|
* runtime lazily and the DB file is read asynchronously so the host
|
|
@@ -46,6 +68,7 @@ export async function openAiHist(opts = {}) {
|
|
|
46
68
|
if (await pathExists(dbPath)) {
|
|
47
69
|
const fileBuffer = await readFile(dbPath);
|
|
48
70
|
const db = new SQL.Database(fileBuffer);
|
|
71
|
+
ensureTrajectorySchema(db);
|
|
49
72
|
// The Python CLI's schema doesn't create `idx_history_session` or
|
|
50
73
|
// `idx_history_timestamp`. Without them, listSessions degrades to
|
|
51
74
|
// an O(sessions × rows) full table scan and freezes the WASM
|
|
@@ -78,21 +101,55 @@ export async function openAiHist(opts = {}) {
|
|
|
78
101
|
)`);
|
|
79
102
|
db.run('CREATE INDEX idx_history_timestamp ON history (timestamp_ms DESC)');
|
|
80
103
|
db.run('CREATE INDEX idx_history_session ON history (session_id)');
|
|
104
|
+
ensureTrajectorySchema(db);
|
|
81
105
|
// scanLocalSources is async with yields between sources so the event
|
|
82
106
|
// loop stays responsive while we scan many MB of JSONL.
|
|
83
107
|
const rows = await scanLocalSources();
|
|
108
|
+
const trajectories = await scanLocalTrajectories();
|
|
84
109
|
const insert = db.prepare('INSERT OR IGNORE INTO history (source, session_id, project, prompt, timestamp_ms) VALUES (?, ?, ?, ?, ?)');
|
|
110
|
+
const insertTrajectory = db.prepare(`INSERT OR REPLACE INTO trajectories
|
|
111
|
+
(id, version, persona_id, project_id, task_title, task_description, status,
|
|
112
|
+
started_at, completed_at, decisions_json, retrospective_json, search_text,
|
|
113
|
+
path, updated_ms, timestamp_ms)
|
|
114
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
|
|
85
115
|
try {
|
|
86
116
|
db.exec('BEGIN');
|
|
87
117
|
for (const row of rows) {
|
|
88
118
|
insert.run([row.source, row.sessionId, row.project, row.prompt, row.timestampMs]);
|
|
89
119
|
}
|
|
120
|
+
for (const trajectory of trajectories) {
|
|
121
|
+
insertTrajectory.run([
|
|
122
|
+
trajectory.id,
|
|
123
|
+
trajectory.version,
|
|
124
|
+
trajectory.personaId,
|
|
125
|
+
trajectory.projectId,
|
|
126
|
+
trajectory.task.title,
|
|
127
|
+
trajectory.task.description,
|
|
128
|
+
trajectory.status,
|
|
129
|
+
trajectory.startedAt,
|
|
130
|
+
trajectory.completedAt,
|
|
131
|
+
JSON.stringify(trajectory.decisions),
|
|
132
|
+
JSON.stringify(trajectory.retrospective),
|
|
133
|
+
trajectory.searchText,
|
|
134
|
+
trajectory.path,
|
|
135
|
+
trajectory.updatedMs,
|
|
136
|
+
trajectory.timestampMs,
|
|
137
|
+
]);
|
|
138
|
+
insert.run([
|
|
139
|
+
'trajectory',
|
|
140
|
+
trajectory.id,
|
|
141
|
+
trajectory.projectId,
|
|
142
|
+
trajectory.searchText,
|
|
143
|
+
trajectory.timestampMs,
|
|
144
|
+
]);
|
|
145
|
+
}
|
|
90
146
|
db.exec('COMMIT');
|
|
91
147
|
}
|
|
92
148
|
finally {
|
|
93
149
|
insert.free();
|
|
150
|
+
insertTrajectory.free();
|
|
94
151
|
}
|
|
95
|
-
const scannedPaths = `${LOCAL_SOURCE_PATHS.claude}, ${LOCAL_SOURCE_PATHS.codex}, ${LOCAL_SOURCE_PATHS.cursorRoot}`;
|
|
152
|
+
const scannedPaths = `${LOCAL_SOURCE_PATHS.claude}, ${LOCAL_SOURCE_PATHS.codex}, ${LOCAL_SOURCE_PATHS.cursorRoot}, ${trajectoryRootDescription()}`;
|
|
96
153
|
return new AiHist(db, { kind: 'jsonl', path: scannedPaths });
|
|
97
154
|
}
|
|
98
155
|
async function pathExists(p) {
|
|
@@ -114,6 +171,40 @@ function rowToEntry(row) {
|
|
|
114
171
|
timestampMs: row.timestamp_ms,
|
|
115
172
|
};
|
|
116
173
|
}
|
|
174
|
+
function parseJson(raw, fallback) {
|
|
175
|
+
try {
|
|
176
|
+
return JSON.parse(raw);
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
return fallback;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
function rowToTrajectory(row) {
|
|
183
|
+
return {
|
|
184
|
+
id: row.id,
|
|
185
|
+
version: row.version,
|
|
186
|
+
personaId: row.persona_id,
|
|
187
|
+
projectId: row.project_id,
|
|
188
|
+
task: {
|
|
189
|
+
title: row.task_title,
|
|
190
|
+
description: row.task_description,
|
|
191
|
+
},
|
|
192
|
+
status: row.status,
|
|
193
|
+
startedAt: row.started_at,
|
|
194
|
+
completedAt: row.completed_at,
|
|
195
|
+
decisions: parseJson(row.decisions_json, []),
|
|
196
|
+
retrospective: parseJson(row.retrospective_json, {
|
|
197
|
+
summary: null,
|
|
198
|
+
approach: null,
|
|
199
|
+
learnings: [],
|
|
200
|
+
confidence: null,
|
|
201
|
+
}),
|
|
202
|
+
searchText: row.search_text,
|
|
203
|
+
path: row.path,
|
|
204
|
+
updatedMs: row.updated_ms,
|
|
205
|
+
timestampMs: row.timestamp_ms,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
117
208
|
function buildFilters(opts) {
|
|
118
209
|
const clauses = [];
|
|
119
210
|
const params = [];
|
|
@@ -288,6 +379,46 @@ export class AiHist {
|
|
|
288
379
|
ORDER BY timestamp_ms DESC
|
|
289
380
|
LIMIT ?`, [...params, limit]).map(rowToEntry);
|
|
290
381
|
}
|
|
382
|
+
/** Search compacted per-run trajectory WHY: decisions and retrospectives. */
|
|
383
|
+
searchTrajectories(query, opts = {}) {
|
|
384
|
+
const trimmed = query.trim();
|
|
385
|
+
if (!trimmed)
|
|
386
|
+
return [];
|
|
387
|
+
const limit = opts.limit ?? 20;
|
|
388
|
+
const escaped = trimmed.replace(/\\/g, '\\\\').replace(/%/g, '\\%').replace(/_/g, '\\_');
|
|
389
|
+
const pattern = `%${escaped}%`;
|
|
390
|
+
return runQuery(this.db, `SELECT id, version, persona_id, project_id, task_title, task_description, status,
|
|
391
|
+
started_at, completed_at, decisions_json, retrospective_json, search_text,
|
|
392
|
+
path, updated_ms, timestamp_ms
|
|
393
|
+
FROM trajectories
|
|
394
|
+
WHERE LOWER(search_text) LIKE LOWER(?) ESCAPE '\\'
|
|
395
|
+
OR LOWER(COALESCE(task_title, '')) LIKE LOWER(?) ESCAPE '\\'
|
|
396
|
+
OR LOWER(COALESCE(task_description, '')) LIKE LOWER(?) ESCAPE '\\'
|
|
397
|
+
OR LOWER(COALESCE(persona_id, '')) LIKE LOWER(?) ESCAPE '\\'
|
|
398
|
+
OR LOWER(COALESCE(project_id, '')) LIKE LOWER(?) ESCAPE '\\'
|
|
399
|
+
ORDER BY timestamp_ms DESC
|
|
400
|
+
LIMIT ?`, [pattern, pattern, pattern, pattern, pattern, limit]).map(rowToTrajectory);
|
|
401
|
+
}
|
|
402
|
+
/** Best-matching per-run trajectory for a task query, or `null` if none match. */
|
|
403
|
+
whyForTask(query) {
|
|
404
|
+
return this.searchTrajectories(query, { limit: 1 })[0] ?? null;
|
|
405
|
+
}
|
|
406
|
+
/** Single entry by id, or `null` if not found. */
|
|
407
|
+
getEntry(id) {
|
|
408
|
+
const rows = runQuery(this.db, `SELECT id, source, session_id, project, prompt, timestamp_ms
|
|
409
|
+
FROM history WHERE id = ?`, [id]);
|
|
410
|
+
return rows.length > 0 ? rowToEntry(rows[0]) : null;
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* All entries whose timestamp falls within [timestampMs - windowMs,
|
|
414
|
+
* timestampMs + windowMs], ordered oldest first. Used by get_context.
|
|
415
|
+
*/
|
|
416
|
+
getInTimeWindow(timestampMs, windowMs) {
|
|
417
|
+
return runQuery(this.db, `SELECT id, source, session_id, project, prompt, timestamp_ms
|
|
418
|
+
FROM history
|
|
419
|
+
WHERE timestamp_ms BETWEEN ? AND ?
|
|
420
|
+
ORDER BY timestamp_ms ASC`, [timestampMs - windowMs, timestampMs + windowMs]).map(rowToEntry);
|
|
421
|
+
}
|
|
291
422
|
/** Counts + date range, mirroring `ai-hist stats`. */
|
|
292
423
|
stats() {
|
|
293
424
|
const total = runQuery(this.db, 'SELECT COUNT(*) AS c FROM history', [])[0]?.c ?? 0;
|
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,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* ai-hist MCP server — exposes AI coding agent history as MCP tools.
|
|
4
|
+
*
|
|
5
|
+
* Covers Claude Code, Codex, Cursor, and Agent Relay in a single index.
|
|
6
|
+
* Uses the ai-hist SQLite database when present ($AI_HIST_DB or the
|
|
7
|
+
* default ~/.local/share/ai-hist/ai-history.db), falling back to
|
|
8
|
+
* scanning local JSONL source files directly so the server works without
|
|
9
|
+
* running `ai-hist sync` first.
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=mcp-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
|