ai-hist 0.2.3 → 0.3.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-smoke.test.js","sourceRoot":"","sources":["../src/mcp-smoke.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export interface TrajectoryDecision {
2
+ question: string;
3
+ chosen: string;
4
+ reasoning: string;
5
+ alternatives: string[];
6
+ }
7
+ export interface TrajectoryRetrospective {
8
+ summary: string | null;
9
+ approach: string | null;
10
+ learnings: string[];
11
+ confidence: unknown;
12
+ }
13
+ export interface RawTrajectory {
14
+ id: string;
15
+ version: number | null;
16
+ personaId: string | null;
17
+ projectId: string | null;
18
+ task: {
19
+ title: string | null;
20
+ description: string | null;
21
+ };
22
+ status: string | null;
23
+ startedAt: string | null;
24
+ completedAt: string | null;
25
+ decisions: TrajectoryDecision[];
26
+ retrospective: TrajectoryRetrospective;
27
+ searchText: string;
28
+ path: string;
29
+ updatedMs: number;
30
+ timestampMs: number;
31
+ }
32
+ export declare const DEFAULT_TRAJECTORY_SEARCH_ROOT: string;
33
+ export declare function trajectoryRootDescription(): string;
34
+ export declare function readTrajectoryFile(path: string): Promise<RawTrajectory | null>;
35
+ export declare function scanLocalTrajectories(): Promise<RawTrajectory[]>;
36
+ //# sourceMappingURL=trajectory-sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trajectory-sources.d.ts","sourceRoot":"","sources":["../src/trajectory-sources.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,aAAa,EAAE,uBAAuB,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,8BAA8B,QAA8B,CAAC;AAyC1E,wBAAgB,yBAAyB,IAAI,MAAM,CAIlD;AA2FD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA8CpF;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CActE"}
@@ -0,0 +1,201 @@
1
+ import { readFile, readdir, stat } from 'node:fs/promises';
2
+ import { homedir } from 'node:os';
3
+ import { basename, dirname, join } from 'node:path';
4
+ export const DEFAULT_TRAJECTORY_SEARCH_ROOT = join(homedir(), 'Projects');
5
+ function yieldToEventLoop() {
6
+ return new Promise((resolve) => setImmediate(resolve));
7
+ }
8
+ async function safeStat(path) {
9
+ try {
10
+ const s = await stat(path);
11
+ return { isDirectory: s.isDirectory(), isFile: s.isFile(), size: s.size, mtimeMs: s.mtimeMs };
12
+ }
13
+ catch {
14
+ return null;
15
+ }
16
+ }
17
+ async function readDirSafe(path) {
18
+ try {
19
+ return await readdir(path);
20
+ }
21
+ catch {
22
+ return [];
23
+ }
24
+ }
25
+ async function walkDirs(root, visit) {
26
+ const rootStat = await safeStat(root);
27
+ if (!rootStat?.isDirectory)
28
+ return;
29
+ await visit(root);
30
+ for (const name of await readDirSafe(root)) {
31
+ await walkDirs(join(root, name), visit);
32
+ }
33
+ }
34
+ function configuredTrajectoryRoots() {
35
+ const env = process.env.TRAJECTORY_ROOT?.trim();
36
+ if (!env)
37
+ return [];
38
+ return env
39
+ .split(process.platform === 'win32' ? ';' : ':')
40
+ .map((part) => part.trim())
41
+ .filter(Boolean);
42
+ }
43
+ export function trajectoryRootDescription() {
44
+ const roots = configuredTrajectoryRoots();
45
+ if (roots.length > 0)
46
+ return roots.join(', ');
47
+ return join(DEFAULT_TRAJECTORY_SEARCH_ROOT, '**', '.trajectories');
48
+ }
49
+ async function defaultTrajectoryRoots() {
50
+ const projects = await safeStat(DEFAULT_TRAJECTORY_SEARCH_ROOT);
51
+ if (!projects?.isDirectory)
52
+ return [];
53
+ const roots = [];
54
+ await walkDirs(DEFAULT_TRAJECTORY_SEARCH_ROOT, async (path) => {
55
+ if (basename(path) === '.trajectories')
56
+ roots.push(path);
57
+ });
58
+ return roots.sort();
59
+ }
60
+ async function trajectoryRoots() {
61
+ const configured = configuredTrajectoryRoots();
62
+ if (configured.length > 0)
63
+ return configured;
64
+ return defaultTrajectoryRoots();
65
+ }
66
+ async function compactedJsonFiles(root) {
67
+ const rootStat = await safeStat(root);
68
+ if (!rootStat)
69
+ return [];
70
+ if (rootStat.isFile && root.endsWith('.json'))
71
+ return [root];
72
+ const searchRoot = basename(root) === 'compacted' ? dirname(root) : root;
73
+ const files = [];
74
+ await walkDirs(searchRoot, async (path) => {
75
+ if (basename(path) !== 'compacted')
76
+ return;
77
+ for (const name of await readDirSafe(path)) {
78
+ if (!name.endsWith('.json') || name === 'index.json' || name === '.sync-state.json')
79
+ continue;
80
+ const full = join(path, name);
81
+ if ((await safeStat(full))?.isFile)
82
+ files.push(full);
83
+ }
84
+ });
85
+ return files;
86
+ }
87
+ function isRecord(value) {
88
+ return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
89
+ }
90
+ function asString(value) {
91
+ return typeof value === 'string' && value.length > 0 ? value : null;
92
+ }
93
+ function asStringArray(value) {
94
+ return Array.isArray(value) ? value.filter((item) => typeof item === 'string') : [];
95
+ }
96
+ function parseTimestampMs(value, fallbackMs) {
97
+ if (!value)
98
+ return fallbackMs;
99
+ const parsed = Date.parse(value);
100
+ return Number.isFinite(parsed) ? parsed : fallbackMs;
101
+ }
102
+ function normalizeDecision(value) {
103
+ if (!isRecord(value))
104
+ return null;
105
+ return {
106
+ question: asString(value.question) ?? '',
107
+ chosen: asString(value.chosen) ?? '',
108
+ reasoning: asString(value.reasoning) ?? '',
109
+ alternatives: asStringArray(value.alternatives),
110
+ };
111
+ }
112
+ function normalizeRetrospective(value) {
113
+ const obj = isRecord(value) ? value : {};
114
+ return {
115
+ summary: asString(obj.summary),
116
+ approach: asString(obj.approach),
117
+ learnings: asStringArray(obj.learnings),
118
+ confidence: obj.confidence ?? null,
119
+ };
120
+ }
121
+ function buildSearchText(t) {
122
+ const parts = [
123
+ t.id,
124
+ t.personaId,
125
+ t.projectId,
126
+ t.status,
127
+ t.task.title,
128
+ t.task.description,
129
+ ...t.decisions.flatMap((d) => [d.question, d.chosen, d.reasoning, ...d.alternatives]),
130
+ t.retrospective.summary,
131
+ t.retrospective.approach,
132
+ ...t.retrospective.learnings,
133
+ t.retrospective.confidence == null ? null : String(t.retrospective.confidence),
134
+ ];
135
+ return parts.filter((part) => typeof part === 'string' && part.length > 0).join('\n');
136
+ }
137
+ export async function readTrajectoryFile(path) {
138
+ const fileStat = await safeStat(path);
139
+ if (!fileStat?.isFile)
140
+ return null;
141
+ let raw;
142
+ try {
143
+ raw = JSON.parse(await readFile(path, 'utf8'));
144
+ }
145
+ catch {
146
+ return null;
147
+ }
148
+ if (!isRecord(raw))
149
+ return null;
150
+ const id = asString(raw.id);
151
+ if (!id)
152
+ return null;
153
+ if (raw.type === 'compacted' &&
154
+ Array.isArray(raw.sourceTrajectories) &&
155
+ !('task' in raw || 'retrospective' in raw || 'personaId' in raw || 'projectId' in raw)) {
156
+ return null;
157
+ }
158
+ const task = isRecord(raw.task) ? raw.task : {};
159
+ const completedAt = asString(raw.completedAt);
160
+ const startedAt = asString(raw.startedAt);
161
+ const timestampMs = parseTimestampMs(completedAt ?? startedAt ?? asString(raw.compactedAt), Math.trunc(fileStat.mtimeMs));
162
+ const trajectory = {
163
+ id,
164
+ version: typeof raw.version === 'number' && Number.isFinite(raw.version) ? raw.version : null,
165
+ personaId: asString(raw.personaId),
166
+ projectId: asString(raw.projectId),
167
+ task: {
168
+ title: asString(task.title),
169
+ description: asString(task.description),
170
+ },
171
+ status: asString(raw.status),
172
+ startedAt,
173
+ completedAt,
174
+ decisions: Array.isArray(raw.decisions)
175
+ ? raw.decisions.map(normalizeDecision).filter((d) => d !== null)
176
+ : [],
177
+ retrospective: normalizeRetrospective(raw.retrospective),
178
+ path,
179
+ updatedMs: Math.trunc(fileStat.mtimeMs),
180
+ timestampMs,
181
+ };
182
+ return { ...trajectory, searchText: buildSearchText(trajectory) };
183
+ }
184
+ export async function scanLocalTrajectories() {
185
+ const roots = await trajectoryRoots();
186
+ const seen = new Set();
187
+ const trajectories = [];
188
+ for (const root of roots) {
189
+ for (const file of await compactedJsonFiles(root)) {
190
+ if (seen.has(file))
191
+ continue;
192
+ seen.add(file);
193
+ const trajectory = await readTrajectoryFile(file);
194
+ if (trajectory)
195
+ trajectories.push(trajectory);
196
+ }
197
+ await yieldToEventLoop();
198
+ }
199
+ return trajectories;
200
+ }
201
+ //# sourceMappingURL=trajectory-sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trajectory-sources.js","sourceRoot":"","sources":["../src/trajectory-sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAoCpD,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAE1E,SAAS,gBAAgB;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAY;IAClC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAChG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAY;IACrC,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,KAAsC;IAC1E,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ,EAAE,WAAW;QAAE,OAAO;IACnC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,GAAG;SACP,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;SAC/C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,MAAM,KAAK,GAAG,yBAAyB,EAAE,CAAC;IAC1C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,8BAA8B,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;AACrE,CAAC;AAED,KAAK,UAAU,sBAAsB;IACnC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,8BAA8B,CAAC,CAAC;IAChE,IAAI,CAAC,QAAQ,EAAE,WAAW;QAAE,OAAO,EAAE,CAAC;IACtC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,CAAC,8BAA8B,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5D,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,eAAe;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,MAAM,UAAU,GAAG,yBAAyB,EAAE,CAAC;IAC/C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IAC7C,OAAO,sBAAsB,EAAE,CAAC;AAClC,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAY;IAC5C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzB,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACxC,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,WAAW;YAAE,OAAO;QAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,kBAAkB;gBAAE,SAAS;YAC9F,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtG,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAoB,EAAE,UAAkB;IAChE,IAAI,CAAC,KAAK;QAAE,OAAO,UAAU,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;AACvD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;QACxC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;QACpC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;QAC1C,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC;KAChD,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;QAC9B,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;QAChC,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC;QACvC,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI;KACnC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,CAAoC;IAC3D,MAAM,KAAK,GAAG;QACZ,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,IAAI,CAAC,KAAK;QACZ,CAAC,CAAC,IAAI,CAAC,WAAW;QAClB,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;QACrF,CAAC,CAAC,aAAa,CAAC,OAAO;QACvB,CAAC,CAAC,aAAa,CAAC,QAAQ;QACxB,GAAG,CAAC,CAAC,aAAa,CAAC,SAAS;QAC5B,CAAC,CAAC,aAAa,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC;KAC/E,CAAC;IACF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IAEnC,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACrB,IACE,GAAG,CAAC,IAAI,KAAK,WAAW;QACxB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QACrC,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,eAAe,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,CAAC,EACtF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,IAAI,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1H,MAAM,UAAU,GAAsC;QACpD,EAAE;QACF,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QAC7F,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;QAClC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;QAClC,IAAI,EAAE;YACJ,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;SACxC;QACD,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;QAC5B,SAAS;QACT,WAAW;QACX,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YACrC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAA2B,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;YACzF,CAAC,CAAC,EAAE;QACN,aAAa,EAAE,sBAAsB,CAAC,GAAG,CAAC,aAAa,CAAC;QACxD,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvC,WAAW;KACZ,CAAC;IACF,OAAO,EAAE,GAAG,UAAU,EAAE,UAAU,EAAE,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,YAAY,GAAoB,EAAE,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,UAAU;gBAAE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,gBAAgB,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}
package/package.json CHANGED
@@ -1,19 +1,42 @@
1
1
  {
2
2
  "name": "ai-hist",
3
- "version": "0.2.3",
4
- "description": "TypeScript SDK for browsing your Claude / Codex / Cursor history — reads the ai-hist SQLite DB when present, falls back to scanning the local JSONL files directly when not.",
3
+ "version": "0.3.0",
4
+ "description": "TypeScript SDK and MCP server for AI coding agent session history — Claude Code, Codex, Cursor, and Agent Relay in one searchable index. Works with or without ai-hist sync via automatic JSONL fallback.",
5
5
  "license": "MIT",
6
6
  "private": false,
7
7
  "type": "module",
8
8
  "main": "dist/index.js",
9
9
  "types": "dist/index.d.ts",
10
+ "bin": {
11
+ "ai-hist-mcp": "./dist/mcp-server.js"
12
+ },
10
13
  "exports": {
11
14
  ".": {
12
15
  "types": "./dist/index.d.ts",
13
16
  "default": "./dist/index.js"
14
17
  },
18
+ "./mcp-server": {
19
+ "types": "./dist/mcp-server.d.ts",
20
+ "default": "./dist/mcp-server.js"
21
+ },
15
22
  "./package.json": "./package.json"
16
23
  },
24
+ "keywords": [
25
+ "mcp",
26
+ "model-context-protocol",
27
+ "claude",
28
+ "claude-code",
29
+ "codex",
30
+ "cursor",
31
+ "history",
32
+ "search",
33
+ "sqlite",
34
+ "ai-agent",
35
+ "ai-cli",
36
+ "coding-agent",
37
+ "session-history"
38
+ ],
39
+ "homepage": "https://github.com/AgentWorkforce/ai-hist",
17
40
  "files": [
18
41
  "dist",
19
42
  "README.md",
@@ -36,7 +59,9 @@
36
59
  "prepare": "npm run build"
37
60
  },
38
61
  "dependencies": {
39
- "sql.js": "^1.13.0"
62
+ "@modelcontextprotocol/sdk": "^1.29.0",
63
+ "sql.js": "^1.13.0",
64
+ "zod": "^4.4.3"
40
65
  },
41
66
  "devDependencies": {
42
67
  "@types/node": "^22.18.0",