claude-conversation-memory-mcp 1.4.0 → 1.5.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.
Files changed (35) hide show
  1. package/README.md +230 -31
  2. package/dist/mcp-server.d.ts.map +1 -1
  3. package/dist/mcp-server.js +12 -0
  4. package/dist/mcp-server.js.map +1 -1
  5. package/dist/parsers/CodexConversationParser.d.ts +51 -0
  6. package/dist/parsers/CodexConversationParser.d.ts.map +1 -0
  7. package/dist/parsers/CodexConversationParser.js +279 -0
  8. package/dist/parsers/CodexConversationParser.js.map +1 -0
  9. package/dist/parsers/ConversationParser.d.ts +1 -0
  10. package/dist/parsers/ConversationParser.d.ts.map +1 -1
  11. package/dist/parsers/ConversationParser.js.map +1 -1
  12. package/dist/storage/ConversationStorage.d.ts.map +1 -1
  13. package/dist/storage/ConversationStorage.js +3 -3
  14. package/dist/storage/ConversationStorage.js.map +1 -1
  15. package/dist/storage/GlobalIndex.d.ts +125 -0
  16. package/dist/storage/GlobalIndex.d.ts.map +1 -0
  17. package/dist/storage/GlobalIndex.js +243 -0
  18. package/dist/storage/GlobalIndex.js.map +1 -0
  19. package/dist/storage/SQLiteManager.d.ts +4 -0
  20. package/dist/storage/SQLiteManager.d.ts.map +1 -1
  21. package/dist/storage/SQLiteManager.js +36 -2
  22. package/dist/storage/SQLiteManager.js.map +1 -1
  23. package/dist/storage/schema.sql +26 -0
  24. package/dist/tools/ToolDefinitions.d.ts +117 -0
  25. package/dist/tools/ToolDefinitions.d.ts.map +1 -1
  26. package/dist/tools/ToolDefinitions.js +116 -0
  27. package/dist/tools/ToolDefinitions.js.map +1 -1
  28. package/dist/tools/ToolHandlers.d.ts +31 -0
  29. package/dist/tools/ToolHandlers.d.ts.map +1 -1
  30. package/dist/tools/ToolHandlers.js +302 -0
  31. package/dist/tools/ToolHandlers.js.map +1 -1
  32. package/dist/types/ToolTypes.d.ts +83 -0
  33. package/dist/types/ToolTypes.d.ts.map +1 -1
  34. package/package.json +2 -1
  35. package/scripts/changelog-check.sh +62 -0
@@ -0,0 +1,243 @@
1
+ /**
2
+ * Global Index for Cross-Project Search
3
+ *
4
+ * This module manages a lightweight global registry of all indexed projects
5
+ * (both Claude Code and Codex). It maintains a central database that tracks:
6
+ * - Which projects have been indexed
7
+ * - Where their databases are located
8
+ * - When they were last indexed
9
+ * - Basic statistics about each project
10
+ *
11
+ * The global index enables:
12
+ * - Discovery of all indexed projects
13
+ * - Cross-project search routing
14
+ * - Batch indexing operations
15
+ * - Global statistics
16
+ *
17
+ * Architecture:
18
+ * - Each project keeps its own database (per-project isolation)
19
+ * - The global index is a registry that links to project databases
20
+ * - Cross-project searches query multiple databases and merge results
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const globalIndex = new GlobalIndex();
25
+ * await globalIndex.registerProject({
26
+ * project_path: '/Users/user/project',
27
+ * source_type: 'claude-code',
28
+ * db_path: '/Users/user/.claude/projects/-project/.db',
29
+ * });
30
+ *
31
+ * const projects = await globalIndex.getAllProjects();
32
+ * console.log(`Tracking ${projects.length} projects`);
33
+ * ```
34
+ */
35
+ import Database from "better-sqlite3";
36
+ import { existsSync, mkdirSync } from "fs";
37
+ import { join } from "path";
38
+ import { homedir } from "os";
39
+ import { nanoid } from "nanoid";
40
+ /**
41
+ * Global Index Manager
42
+ *
43
+ * Maintains a central registry of all indexed projects in a global database.
44
+ */
45
+ export class GlobalIndex {
46
+ db;
47
+ globalDbPath;
48
+ constructor(customPath) {
49
+ // Use custom path or default to ~/.claude/.claude-global-index.db
50
+ if (customPath) {
51
+ this.globalDbPath = customPath;
52
+ }
53
+ else {
54
+ const claudeHome = join(homedir(), ".claude");
55
+ if (!existsSync(claudeHome)) {
56
+ mkdirSync(claudeHome, { recursive: true });
57
+ }
58
+ this.globalDbPath = join(claudeHome, ".claude-global-index.db");
59
+ }
60
+ // Open/create database
61
+ this.db = new Database(this.globalDbPath);
62
+ // Initialize schema
63
+ this.initializeSchema();
64
+ }
65
+ /**
66
+ * Initialize the global index database schema.
67
+ */
68
+ initializeSchema() {
69
+ this.db.exec(`
70
+ CREATE TABLE IF NOT EXISTS project_metadata (
71
+ id TEXT PRIMARY KEY,
72
+ project_path TEXT NOT NULL UNIQUE,
73
+ source_type TEXT NOT NULL,
74
+ db_path TEXT NOT NULL,
75
+ last_indexed INTEGER NOT NULL,
76
+ message_count INTEGER DEFAULT 0,
77
+ conversation_count INTEGER DEFAULT 0,
78
+ decision_count INTEGER DEFAULT 0,
79
+ mistake_count INTEGER DEFAULT 0,
80
+ metadata TEXT,
81
+ created_at INTEGER NOT NULL,
82
+ updated_at INTEGER NOT NULL
83
+ );
84
+
85
+ CREATE INDEX IF NOT EXISTS idx_proj_source ON project_metadata(source_type);
86
+ CREATE INDEX IF NOT EXISTS idx_proj_last_indexed ON project_metadata(last_indexed);
87
+ CREATE INDEX IF NOT EXISTS idx_proj_path ON project_metadata(project_path);
88
+ `);
89
+ }
90
+ /**
91
+ * Register or update a project in the global index.
92
+ *
93
+ * @param options - Project registration options
94
+ * @returns The registered/updated project metadata
95
+ */
96
+ registerProject(options) {
97
+ const now = Date.now();
98
+ // Check if project already exists
99
+ const existing = this.db
100
+ .prepare("SELECT * FROM project_metadata WHERE project_path = ?")
101
+ .get(options.project_path);
102
+ if (existing) {
103
+ // Update existing project
104
+ const stmt = this.db.prepare(`
105
+ UPDATE project_metadata
106
+ SET source_type = ?,
107
+ db_path = ?,
108
+ last_indexed = ?,
109
+ message_count = ?,
110
+ conversation_count = ?,
111
+ decision_count = ?,
112
+ mistake_count = ?,
113
+ metadata = ?,
114
+ updated_at = ?
115
+ WHERE project_path = ?
116
+ `);
117
+ stmt.run(options.source_type, options.db_path, now, options.message_count || 0, options.conversation_count || 0, options.decision_count || 0, options.mistake_count || 0, JSON.stringify(options.metadata || {}), now, options.project_path);
118
+ return {
119
+ ...existing,
120
+ source_type: options.source_type,
121
+ db_path: options.db_path,
122
+ last_indexed: now,
123
+ message_count: options.message_count || 0,
124
+ conversation_count: options.conversation_count || 0,
125
+ decision_count: options.decision_count || 0,
126
+ mistake_count: options.mistake_count || 0,
127
+ metadata: options.metadata || {},
128
+ updated_at: now,
129
+ };
130
+ }
131
+ else {
132
+ // Insert new project
133
+ const id = nanoid();
134
+ const stmt = this.db.prepare(`
135
+ INSERT INTO project_metadata (
136
+ id, project_path, source_type, db_path, last_indexed,
137
+ message_count, conversation_count, decision_count, mistake_count,
138
+ metadata, created_at, updated_at
139
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
140
+ `);
141
+ stmt.run(id, options.project_path, options.source_type, options.db_path, now, options.message_count || 0, options.conversation_count || 0, options.decision_count || 0, options.mistake_count || 0, JSON.stringify(options.metadata || {}), now, now);
142
+ return {
143
+ id,
144
+ project_path: options.project_path,
145
+ source_type: options.source_type,
146
+ db_path: options.db_path,
147
+ last_indexed: now,
148
+ message_count: options.message_count || 0,
149
+ conversation_count: options.conversation_count || 0,
150
+ decision_count: options.decision_count || 0,
151
+ mistake_count: options.mistake_count || 0,
152
+ metadata: options.metadata || {},
153
+ created_at: now,
154
+ updated_at: now,
155
+ };
156
+ }
157
+ }
158
+ /**
159
+ * Get all registered projects.
160
+ *
161
+ * @param sourceType - Optional filter by source type
162
+ * @returns Array of project metadata
163
+ */
164
+ getAllProjects(sourceType) {
165
+ let sql = "SELECT * FROM project_metadata";
166
+ const params = [];
167
+ if (sourceType) {
168
+ sql += " WHERE source_type = ?";
169
+ params.push(sourceType);
170
+ }
171
+ sql += " ORDER BY last_indexed DESC";
172
+ const rows = this.db.prepare(sql).all(...params);
173
+ return rows.map((row) => ({
174
+ ...row,
175
+ metadata: JSON.parse(row.metadata || "{}"),
176
+ }));
177
+ }
178
+ /**
179
+ * Get a specific project by path.
180
+ *
181
+ * @param projectPath - Absolute path to the project
182
+ * @returns Project metadata or null if not found
183
+ */
184
+ getProject(projectPath) {
185
+ const row = this.db
186
+ .prepare("SELECT * FROM project_metadata WHERE project_path = ?")
187
+ .get(projectPath);
188
+ if (!row) {
189
+ return null;
190
+ }
191
+ return {
192
+ ...row,
193
+ metadata: JSON.parse(row.metadata || "{}"),
194
+ };
195
+ }
196
+ /**
197
+ * Remove a project from the global index.
198
+ *
199
+ * Note: This does NOT delete the project's database, only removes it from the registry.
200
+ *
201
+ * @param projectPath - Absolute path to the project
202
+ * @returns True if project was removed, false if not found
203
+ */
204
+ removeProject(projectPath) {
205
+ const stmt = this.db.prepare("DELETE FROM project_metadata WHERE project_path = ?");
206
+ const result = stmt.run(projectPath);
207
+ return result.changes > 0;
208
+ }
209
+ /**
210
+ * Get global statistics across all projects.
211
+ *
212
+ * @returns Aggregate statistics
213
+ */
214
+ getGlobalStats() {
215
+ const stats = this.db
216
+ .prepare(`
217
+ SELECT
218
+ COUNT(*) as total_projects,
219
+ COALESCE(SUM(CASE WHEN source_type = 'claude-code' THEN 1 ELSE 0 END), 0) as claude_code_projects,
220
+ COALESCE(SUM(CASE WHEN source_type = 'codex' THEN 1 ELSE 0 END), 0) as codex_projects,
221
+ COALESCE(SUM(message_count), 0) as total_messages,
222
+ COALESCE(SUM(conversation_count), 0) as total_conversations,
223
+ COALESCE(SUM(decision_count), 0) as total_decisions,
224
+ COALESCE(SUM(mistake_count), 0) as total_mistakes
225
+ FROM project_metadata
226
+ `)
227
+ .get();
228
+ return stats;
229
+ }
230
+ /**
231
+ * Close the global index database.
232
+ */
233
+ close() {
234
+ this.db.close();
235
+ }
236
+ /**
237
+ * Get the path to the global index database.
238
+ */
239
+ getDbPath() {
240
+ return this.globalDbPath;
241
+ }
242
+ }
243
+ //# sourceMappingURL=GlobalIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlobalIndex.js","sourceRoot":"","sources":["../../src/storage/GlobalIndex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AA4BhC;;;;GAIG;AACH,MAAM,OAAO,WAAW;IACd,EAAE,CAAoB;IACtB,YAAY,CAAS;IAE7B,YAAY,UAAmB;QAC7B,kEAAkE;QAClE,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAC;QAClE,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE1C,oBAAoB;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;KAmBZ,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,OAA+B;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,kCAAkC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE;aACrB,OAAO,CAAC,uDAAuD,CAAC;aAChE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAgC,CAAC;QAE5D,IAAI,QAAQ,EAAE,CAAC;YACb,0BAA0B;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;OAY5B,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CACN,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,OAAO,EACf,GAAG,EACH,OAAO,CAAC,aAAa,IAAI,CAAC,EAC1B,OAAO,CAAC,kBAAkB,IAAI,CAAC,EAC/B,OAAO,CAAC,cAAc,IAAI,CAAC,EAC3B,OAAO,CAAC,aAAa,IAAI,CAAC,EAC1B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,EACtC,GAAG,EACH,OAAO,CAAC,YAAY,CACrB,CAAC;YAEF,OAAO;gBACL,GAAG,QAAQ;gBACX,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,YAAY,EAAE,GAAG;gBACjB,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,CAAC;gBACzC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,CAAC;gBACnD,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,CAAC;gBAC3C,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,CAAC;gBACzC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;gBAChC,UAAU,EAAE,GAAG;aAChB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,qBAAqB;YACrB,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;OAM5B,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CACN,EAAE,EACF,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,OAAO,EACf,GAAG,EACH,OAAO,CAAC,aAAa,IAAI,CAAC,EAC1B,OAAO,CAAC,kBAAkB,IAAI,CAAC,EAC/B,OAAO,CAAC,cAAc,IAAI,CAAC,EAC3B,OAAO,CAAC,aAAa,IAAI,CAAC,EAC1B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,EACtC,GAAG,EACH,GAAG,CACJ,CAAC;YAEF,OAAO;gBACL,EAAE;gBACF,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,YAAY,EAAE,GAAG;gBACjB,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,CAAC;gBACzC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,CAAC;gBACnD,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,CAAC;gBAC3C,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,CAAC;gBACzC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;gBAChC,UAAU,EAAE,GAAG;gBACf,UAAU,EAAE,GAAG;aAChB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,UAAoC;QACjD,IAAI,GAAG,GAAG,gCAAgC,CAAC;QAC3C,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,UAAU,EAAE,CAAC;YACf,GAAG,IAAI,wBAAwB,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC;QAED,GAAG,IAAI,6BAA6B,CAAC;QAErC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAa7C,CAAC;QAEH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxB,GAAG,GAAG;YACN,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAA4B;SACtE,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,WAAmB;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,uDAAuD,CAAC;aAChE,GAAG,CAAC,WAAW,CAaL,CAAC;QAEd,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,GAAG,GAAG;YACN,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAA4B;SACtE,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,WAAmB;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC;QACpF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,cAAc;QASZ,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE;aAClB,OAAO,CACN;;;;;;;;;;KAUH,CACE;aACA,GAAG,EAQL,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF"}
@@ -33,6 +33,10 @@ export declare class SQLiteManager {
33
33
  * Initialize database schema from schema.sql
34
34
  */
35
35
  private initializeSchema;
36
+ /**
37
+ * Apply database migrations for existing databases
38
+ */
39
+ private applyMigrations;
36
40
  /**
37
41
  * Get the underlying database instance
38
42
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SQLiteManager.d.ts","sourceRoot":"","sources":["../../src/storage/SQLiteManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAkBtC,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAU;gBAEhB,MAAM,GAAE,YAAiB;IAyCrC,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;;OAGG;IACH,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAyCvD;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA6BxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmCxB;;OAEG;IACH,WAAW,IAAI,QAAQ,CAAC,QAAQ;IAIhC;;OAEG;IACH,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAK9B;;OAEG;IACH,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAI5E;;OAEG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,QAAQ,IAAI;QACV,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC;KAChD;IA+BD;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,gBAAgB,IAAI,MAAM;CAU3B;AAKD,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,aAAa,CAKrE;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC"}
1
+ {"version":3,"file":"SQLiteManager.d.ts","sourceRoot":"","sources":["../../src/storage/SQLiteManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAkBtC,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAU;gBAEhB,MAAM,GAAE,YAAiB;IAyCrC,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;;OAGG;IACH,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAyCvD;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA6BxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsCxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAuCvB;;OAEG;IACH,WAAW,IAAI,QAAQ,CAAC,QAAQ;IAIhC;;OAEG;IACH,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAK9B;;OAEG;IACH,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAI5E;;OAEG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,QAAQ,IAAI;QACV,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC;KAChD;IA+BD;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,gBAAgB,IAAI,MAAM;CAU3B;AAKD,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,aAAa,CAKrE;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC"}
@@ -154,18 +154,52 @@ export class SQLiteManager {
154
154
  // Execute the entire schema at once
155
155
  // SQLite can handle multiple statements in a single exec() call
156
156
  this.db.exec(schema);
157
- // Record schema version
157
+ // Record schema version (current version is 2)
158
158
  this.db
159
159
  .prepare("INSERT INTO schema_version (version, applied_at, description) VALUES (?, ?, ?)")
160
- .run(1, Date.now(), "Initial schema");
160
+ .run(2, Date.now(), "Initial schema with source_type support");
161
161
  console.log("Database schema initialized successfully");
162
162
  }
163
+ else {
164
+ // Apply migrations if needed
165
+ this.applyMigrations();
166
+ }
163
167
  }
164
168
  catch (error) {
165
169
  console.error("Error initializing schema:", error);
166
170
  throw error;
167
171
  }
168
172
  }
173
+ /**
174
+ * Apply database migrations for existing databases
175
+ */
176
+ applyMigrations() {
177
+ const currentVersion = this.getSchemaVersion();
178
+ // Migration 1 -> 2: Add source_type column to conversations table
179
+ if (currentVersion < 2) {
180
+ try {
181
+ console.log("Applying migration: Adding source_type column...");
182
+ // Check if column already exists (in case of partial migration)
183
+ const columns = this.db
184
+ .prepare("PRAGMA table_info(conversations)")
185
+ .all();
186
+ const hasSourceType = columns.some((col) => col.name === "source_type");
187
+ if (!hasSourceType) {
188
+ this.db.exec("ALTER TABLE conversations ADD COLUMN source_type TEXT DEFAULT 'claude-code'");
189
+ this.db.exec("CREATE INDEX IF NOT EXISTS idx_conv_source ON conversations(source_type)");
190
+ }
191
+ // Record migration
192
+ this.db
193
+ .prepare("INSERT INTO schema_version (version, applied_at, description) VALUES (?, ?, ?)")
194
+ .run(2, Date.now(), "Add source_type column and global index support");
195
+ console.log("Migration applied successfully");
196
+ }
197
+ catch (error) {
198
+ console.error("Error applying migration:", error);
199
+ throw error;
200
+ }
201
+ }
202
+ }
169
203
  /**
170
204
  * Get the underlying database instance
171
205
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SQLiteManager.js","sourceRoot":"","sources":["../../src/storage/SQLiteManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AAExC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,kDAAkD;AAClD,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,aAAa;AAC1C,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,yBAAyB;AACxD,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,gBAAgB;AACxC,MAAM,kBAAkB,GAAG,IAAI,CAAC,CAAC,kCAAkC;AASnE,MAAM,OAAO,aAAa;IAChB,EAAE,CAAoB;IACtB,MAAM,CAAS;IACf,UAAU,CAAU;IAE5B,YAAY,SAAuB,EAAE;QACnC,8BAA8B;QAC9B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,yBAAyB;YACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,+DAA+D;YAC/D,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACxD,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM,GAAG,IAAI,CAChB,OAAO,EAAE,EACT,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,iCAAiC,CAClC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC;QAE3C,0BAA0B;QAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,sBAAsB;QACtB,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;YAClC,QAAQ,EAAE,IAAI,CAAC,UAAU;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;SAClD,CAAC,CAAC;QAEH,4BAA4B;QAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,0BAA0B;QAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,8BAA8B;QAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,qBAAqB;QAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,IAAI,CAAC;YACH,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YAC7C,uEAAuE;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,6BAA6B,CAAC,UAAkB;QAC9C,IAAI,CAAC;YACH,wDAAwD;YACxD,wEAAwE;YACxE,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAAE,CAAC;gBACrF,IAAI,MAAM,EAAE,CAAC;oBACX,oDAAoD;oBACpD,+BAA+B;oBAC/B,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;oBACzD,OAAO;gBACT,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,kCAAkC;YACpC,CAAC;YAED,0CAA0C;YAC1C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;4BAIS,UAAU;;OAE/B,CAAC,CAAC;YAEH,2CAA2C;YAC3C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;4BAIS,UAAU;;OAE/B,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,wCAAwC,UAAU,cAAc,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,gBAAgB;QACtB,8CAA8C;QAC9C,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAErC,oCAAoC;QACpC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,aAAa,EAAE,CAAC,CAAC;QAEjD,0DAA0D;QAC1D,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAEvC,8BAA8B;QAC9B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAEtC,sCAAsC;QACtC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC;QAE3C,2CAA2C;QAC3C,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC;QAE3C,uCAAuC;QACvC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,wBAAwB,kBAAkB,EAAE,CAAC,CAAC;QAE7D,iCAAiC;QACjC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAEpC,kCAAkC;QAClC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,IAAI,CAAC;YACH,yCAAyC;YACzC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;iBACnB,OAAO,CACN,6EAA6E,CAC9E;iBACA,GAAG,EAAE,CAAC;YAET,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;gBAE/C,8BAA8B;gBAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAEjD,oCAAoC;gBACpC,gEAAgE;gBAChE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAErB,wBAAwB;gBACxB,IAAI,CAAC,EAAE;qBACJ,OAAO,CACN,gFAAgF,CACjF;qBACA,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC;gBAExC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,WAAW,CAAI,EAAW;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;IAED;;OAEG;IACH,OAAO,CAAkC,GAAW;QAClD,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAI,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,GAAW;QACd,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QAON,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAW,CAAC;QAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAW,CAAC;QACzE,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE;YACjD,MAAM,EAAE,IAAI;SACb,CAAW,CAAC;QAEb,IAAI,OAAO,GAAkB,IAAI,CAAC;QAClC,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE;qBACpB,OAAO,CAAC,gDAAgD,CAAC;qBACzD,GAAG,EAAkC,CAAC;gBACzC,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC;YACjC,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;gBACZ,oBAAoB;YACtB,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,SAAS,GAAG,QAAQ;YAC9B,SAAS;YACT,QAAQ;YACR,GAAG,EAAE;gBACH,OAAO,EAAE,WAAW,KAAK,KAAK;gBAC9B,IAAI,EAAE,OAAO;aACd;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;iBACnB,OAAO,CAAC,oDAAoD,CAAC;iBAC7D,GAAG,EAAqC,CAAC;YAC5C,OAAO,MAAM,EAAE,OAAO,IAAI,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;CACF;AAED,qBAAqB;AACrB,IAAI,QAAQ,GAAyB,IAAI,CAAC;AAE1C,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"SQLiteManager.js","sourceRoot":"","sources":["../../src/storage/SQLiteManager.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@
10
10
  CREATE TABLE IF NOT EXISTS conversations (
11
11
  id TEXT PRIMARY KEY, -- sessionId from JSONL
12
12
  project_path TEXT NOT NULL, -- Derived from directory name
13
+ source_type TEXT DEFAULT 'claude-code', -- 'claude-code' or 'codex'
13
14
  first_message_at INTEGER NOT NULL,
14
15
  last_message_at INTEGER NOT NULL,
15
16
  message_count INTEGER DEFAULT 0,
@@ -21,6 +22,7 @@ CREATE TABLE IF NOT EXISTS conversations (
21
22
  );
22
23
 
23
24
  CREATE INDEX IF NOT EXISTS idx_conv_project ON conversations(project_path);
25
+ CREATE INDEX IF NOT EXISTS idx_conv_source ON conversations(source_type);
24
26
  CREATE INDEX IF NOT EXISTS idx_conv_time ON conversations(last_message_at);
25
27
  CREATE INDEX IF NOT EXISTS idx_conv_branch ON conversations(git_branch);
26
28
  CREATE INDEX IF NOT EXISTS idx_conv_created ON conversations(created_at);
@@ -319,3 +321,27 @@ CREATE TABLE IF NOT EXISTS schema_version (
319
321
  description TEXT,
320
322
  checksum TEXT
321
323
  );
324
+
325
+ -- ==================================================
326
+ -- GLOBAL INDEX TABLE (for cross-project search)
327
+ -- ==================================================
328
+
329
+ -- Table 18: Project Metadata (Global registry of all indexed projects)
330
+ CREATE TABLE IF NOT EXISTS project_metadata (
331
+ id TEXT PRIMARY KEY, -- UUID for project entry
332
+ project_path TEXT NOT NULL UNIQUE, -- Absolute path to project
333
+ source_type TEXT NOT NULL, -- 'claude-code' or 'codex'
334
+ db_path TEXT NOT NULL, -- Path to project's database
335
+ last_indexed INTEGER NOT NULL, -- Last indexing timestamp
336
+ message_count INTEGER DEFAULT 0, -- Total messages indexed
337
+ conversation_count INTEGER DEFAULT 0, -- Total conversations indexed
338
+ decision_count INTEGER DEFAULT 0, -- Total decisions indexed
339
+ mistake_count INTEGER DEFAULT 0, -- Total mistakes indexed
340
+ metadata TEXT, -- JSON: {git_repo, last_commit, etc}
341
+ created_at INTEGER NOT NULL,
342
+ updated_at INTEGER NOT NULL
343
+ );
344
+
345
+ CREATE INDEX IF NOT EXISTS idx_proj_source ON project_metadata(source_type);
346
+ CREATE INDEX IF NOT EXISTS idx_proj_last_indexed ON project_metadata(last_indexed);
347
+ CREATE INDEX IF NOT EXISTS idx_proj_path ON project_metadata(project_path);
@@ -405,5 +405,122 @@ export declare const TOOLS: {
405
405
  required: string[];
406
406
  };
407
407
  };
408
+ index_all_projects: {
409
+ name: string;
410
+ description: string;
411
+ inputSchema: {
412
+ type: string;
413
+ properties: {
414
+ include_codex: {
415
+ type: string;
416
+ description: string;
417
+ default: boolean;
418
+ };
419
+ include_claude_code: {
420
+ type: string;
421
+ description: string;
422
+ default: boolean;
423
+ };
424
+ codex_path: {
425
+ type: string;
426
+ description: string;
427
+ };
428
+ claude_projects_path: {
429
+ type: string;
430
+ description: string;
431
+ };
432
+ };
433
+ };
434
+ };
435
+ search_all_conversations: {
436
+ name: string;
437
+ description: string;
438
+ inputSchema: {
439
+ type: string;
440
+ properties: {
441
+ query: {
442
+ type: string;
443
+ description: string;
444
+ };
445
+ limit: {
446
+ type: string;
447
+ description: string;
448
+ default: number;
449
+ };
450
+ date_range: {
451
+ type: string;
452
+ description: string;
453
+ items: {
454
+ type: string;
455
+ };
456
+ };
457
+ source_type: {
458
+ type: string;
459
+ description: string;
460
+ enum: string[];
461
+ default: string;
462
+ };
463
+ };
464
+ required: string[];
465
+ };
466
+ };
467
+ get_all_decisions: {
468
+ name: string;
469
+ description: string;
470
+ inputSchema: {
471
+ type: string;
472
+ properties: {
473
+ query: {
474
+ type: string;
475
+ description: string;
476
+ };
477
+ file_path: {
478
+ type: string;
479
+ description: string;
480
+ };
481
+ limit: {
482
+ type: string;
483
+ description: string;
484
+ default: number;
485
+ };
486
+ source_type: {
487
+ type: string;
488
+ description: string;
489
+ enum: string[];
490
+ default: string;
491
+ };
492
+ };
493
+ required: string[];
494
+ };
495
+ };
496
+ search_all_mistakes: {
497
+ name: string;
498
+ description: string;
499
+ inputSchema: {
500
+ type: string;
501
+ properties: {
502
+ query: {
503
+ type: string;
504
+ description: string;
505
+ };
506
+ mistake_type: {
507
+ type: string;
508
+ description: string;
509
+ };
510
+ limit: {
511
+ type: string;
512
+ description: string;
513
+ default: number;
514
+ };
515
+ source_type: {
516
+ type: string;
517
+ description: string;
518
+ enum: string[];
519
+ default: string;
520
+ };
521
+ };
522
+ required: string[];
523
+ };
524
+ };
408
525
  };
409
526
  //# sourceMappingURL=ToolDefinitions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolDefinitions.d.ts","sourceRoot":"","sources":["../../src/tools/ToolDefinitions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0ZjB,CAAC"}
1
+ {"version":3,"file":"ToolDefinitions.d.ts","sourceRoot":"","sources":["../../src/tools/ToolDefinitions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmhBjB,CAAC"}
@@ -397,5 +397,121 @@ export const TOOLS = {
397
397
  required: ["keywords"],
398
398
  },
399
399
  },
400
+ // ==================== Global Cross-Project Tools ====================
401
+ index_all_projects: {
402
+ name: "index_all_projects",
403
+ description: "Index all projects from both Claude Code and Codex. Discovers and indexes conversations from all sources, registering them in a global index for cross-project search. This enables searching across all your work globally.",
404
+ inputSchema: {
405
+ type: "object",
406
+ properties: {
407
+ include_codex: {
408
+ type: "boolean",
409
+ description: "Include Codex conversations (default: true)",
410
+ default: true,
411
+ },
412
+ include_claude_code: {
413
+ type: "boolean",
414
+ description: "Include Claude Code conversations (default: true)",
415
+ default: true,
416
+ },
417
+ codex_path: {
418
+ type: "string",
419
+ description: "Path to Codex home directory (default: ~/.codex)",
420
+ },
421
+ claude_projects_path: {
422
+ type: "string",
423
+ description: "Path to Claude Code projects directory (default: ~/.claude/projects)",
424
+ },
425
+ },
426
+ },
427
+ },
428
+ search_all_conversations: {
429
+ name: "search_all_conversations",
430
+ description: "Search conversations across all indexed projects (Claude Code + Codex). Returns results from all projects with source type and project path for context.",
431
+ inputSchema: {
432
+ type: "object",
433
+ properties: {
434
+ query: {
435
+ type: "string",
436
+ description: "Natural language search query",
437
+ },
438
+ limit: {
439
+ type: "number",
440
+ description: "Maximum number of results (default: 20)",
441
+ default: 20,
442
+ },
443
+ date_range: {
444
+ type: "array",
445
+ description: "Optional date range filter [start_timestamp, end_timestamp]",
446
+ items: { type: "number" },
447
+ },
448
+ source_type: {
449
+ type: "string",
450
+ description: "Filter by source: 'claude-code', 'codex', or 'all' (default: 'all')",
451
+ enum: ["claude-code", "codex", "all"],
452
+ default: "all",
453
+ },
454
+ },
455
+ required: ["query"],
456
+ },
457
+ },
458
+ get_all_decisions: {
459
+ name: "get_all_decisions",
460
+ description: "Find decisions made across all indexed projects. Shows rationale, alternatives, and rejected approaches from all your work globally.",
461
+ inputSchema: {
462
+ type: "object",
463
+ properties: {
464
+ query: {
465
+ type: "string",
466
+ description: "Topic or keyword to search for (e.g., 'authentication', 'database')",
467
+ },
468
+ file_path: {
469
+ type: "string",
470
+ description: "Optional: filter decisions related to a specific file",
471
+ },
472
+ limit: {
473
+ type: "number",
474
+ description: "Maximum number of decisions to return (default: 20)",
475
+ default: 20,
476
+ },
477
+ source_type: {
478
+ type: "string",
479
+ description: "Filter by source: 'claude-code', 'codex', or 'all' (default: 'all')",
480
+ enum: ["claude-code", "codex", "all"],
481
+ default: "all",
482
+ },
483
+ },
484
+ required: ["query"],
485
+ },
486
+ },
487
+ search_all_mistakes: {
488
+ name: "search_all_mistakes",
489
+ description: "Find past mistakes across all indexed projects to avoid repeating them. Shows what went wrong and how it was corrected across all your work.",
490
+ inputSchema: {
491
+ type: "object",
492
+ properties: {
493
+ query: {
494
+ type: "string",
495
+ description: "Search query for mistakes",
496
+ },
497
+ mistake_type: {
498
+ type: "string",
499
+ description: "Optional: filter by type (logic_error, wrong_approach, misunderstanding, tool_error, syntax_error)",
500
+ },
501
+ limit: {
502
+ type: "number",
503
+ description: "Maximum number of results (default: 20)",
504
+ default: 20,
505
+ },
506
+ source_type: {
507
+ type: "string",
508
+ description: "Filter by source: 'claude-code', 'codex', or 'all' (default: 'all')",
509
+ enum: ["claude-code", "codex", "all"],
510
+ default: "all",
511
+ },
512
+ },
513
+ required: ["query"],
514
+ },
515
+ },
400
516
  };
401
517
  //# sourceMappingURL=ToolDefinitions.js.map