cccmemory 1.8.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/LICENSE +21 -0
- package/README.md +349 -0
- package/dist/ConversationMemory.d.ts +231 -0
- package/dist/ConversationMemory.d.ts.map +1 -0
- package/dist/ConversationMemory.js +357 -0
- package/dist/ConversationMemory.js.map +1 -0
- package/dist/cache/QueryCache.d.ts +215 -0
- package/dist/cache/QueryCache.d.ts.map +1 -0
- package/dist/cache/QueryCache.js +294 -0
- package/dist/cache/QueryCache.js.map +1 -0
- package/dist/cli/commands.d.ts +9 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +954 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/help.d.ts +16 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +361 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +30 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +111 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/context/ContextInjector.d.ts +38 -0
- package/dist/context/ContextInjector.d.ts.map +1 -0
- package/dist/context/ContextInjector.js +235 -0
- package/dist/context/ContextInjector.js.map +1 -0
- package/dist/documentation/CodeAnalyzer.d.ts +29 -0
- package/dist/documentation/CodeAnalyzer.d.ts.map +1 -0
- package/dist/documentation/CodeAnalyzer.js +122 -0
- package/dist/documentation/CodeAnalyzer.js.map +1 -0
- package/dist/documentation/ConversationAnalyzer.d.ts +19 -0
- package/dist/documentation/ConversationAnalyzer.d.ts.map +1 -0
- package/dist/documentation/ConversationAnalyzer.js +157 -0
- package/dist/documentation/ConversationAnalyzer.js.map +1 -0
- package/dist/documentation/CrossReferencer.d.ts +67 -0
- package/dist/documentation/CrossReferencer.d.ts.map +1 -0
- package/dist/documentation/CrossReferencer.js +247 -0
- package/dist/documentation/CrossReferencer.js.map +1 -0
- package/dist/documentation/DocumentationGenerator.d.ts +22 -0
- package/dist/documentation/DocumentationGenerator.d.ts.map +1 -0
- package/dist/documentation/DocumentationGenerator.js +57 -0
- package/dist/documentation/DocumentationGenerator.js.map +1 -0
- package/dist/documentation/MarkdownFormatter.d.ts +26 -0
- package/dist/documentation/MarkdownFormatter.d.ts.map +1 -0
- package/dist/documentation/MarkdownFormatter.js +301 -0
- package/dist/documentation/MarkdownFormatter.js.map +1 -0
- package/dist/documentation/types.d.ts +176 -0
- package/dist/documentation/types.d.ts.map +1 -0
- package/dist/documentation/types.js +5 -0
- package/dist/documentation/types.js.map +1 -0
- package/dist/embeddings/ConfigManager.d.ts +46 -0
- package/dist/embeddings/ConfigManager.d.ts.map +1 -0
- package/dist/embeddings/ConfigManager.js +177 -0
- package/dist/embeddings/ConfigManager.js.map +1 -0
- package/dist/embeddings/EmbeddingConfig.d.ts +39 -0
- package/dist/embeddings/EmbeddingConfig.d.ts.map +1 -0
- package/dist/embeddings/EmbeddingConfig.js +132 -0
- package/dist/embeddings/EmbeddingConfig.js.map +1 -0
- package/dist/embeddings/EmbeddingGenerator.d.ts +51 -0
- package/dist/embeddings/EmbeddingGenerator.d.ts.map +1 -0
- package/dist/embeddings/EmbeddingGenerator.js +157 -0
- package/dist/embeddings/EmbeddingGenerator.js.map +1 -0
- package/dist/embeddings/EmbeddingProvider.d.ts +34 -0
- package/dist/embeddings/EmbeddingProvider.d.ts.map +1 -0
- package/dist/embeddings/EmbeddingProvider.js +6 -0
- package/dist/embeddings/EmbeddingProvider.js.map +1 -0
- package/dist/embeddings/ModelRegistry.d.ts +48 -0
- package/dist/embeddings/ModelRegistry.d.ts.map +1 -0
- package/dist/embeddings/ModelRegistry.js +170 -0
- package/dist/embeddings/ModelRegistry.js.map +1 -0
- package/dist/embeddings/VectorStore.d.ts +114 -0
- package/dist/embeddings/VectorStore.d.ts.map +1 -0
- package/dist/embeddings/VectorStore.js +393 -0
- package/dist/embeddings/VectorStore.js.map +1 -0
- package/dist/embeddings/providers/OllamaEmbeddings.d.ts +38 -0
- package/dist/embeddings/providers/OllamaEmbeddings.d.ts.map +1 -0
- package/dist/embeddings/providers/OllamaEmbeddings.js +125 -0
- package/dist/embeddings/providers/OllamaEmbeddings.js.map +1 -0
- package/dist/embeddings/providers/OpenAIEmbeddings.d.ts +40 -0
- package/dist/embeddings/providers/OpenAIEmbeddings.d.ts.map +1 -0
- package/dist/embeddings/providers/OpenAIEmbeddings.js +129 -0
- package/dist/embeddings/providers/OpenAIEmbeddings.js.map +1 -0
- package/dist/embeddings/providers/TransformersEmbeddings.d.ts +38 -0
- package/dist/embeddings/providers/TransformersEmbeddings.d.ts.map +1 -0
- package/dist/embeddings/providers/TransformersEmbeddings.js +115 -0
- package/dist/embeddings/providers/TransformersEmbeddings.js.map +1 -0
- package/dist/handoff/SessionHandoffStore.d.ts +80 -0
- package/dist/handoff/SessionHandoffStore.d.ts.map +1 -0
- package/dist/handoff/SessionHandoffStore.js +314 -0
- package/dist/handoff/SessionHandoffStore.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +115 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server.d.ts +27 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +157 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/memory/WorkingMemoryStore.d.ts +83 -0
- package/dist/memory/WorkingMemoryStore.d.ts.map +1 -0
- package/dist/memory/WorkingMemoryStore.js +318 -0
- package/dist/memory/WorkingMemoryStore.js.map +1 -0
- package/dist/memory/types.d.ts +192 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +8 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/parsers/CodexConversationParser.d.ts +51 -0
- package/dist/parsers/CodexConversationParser.d.ts.map +1 -0
- package/dist/parsers/CodexConversationParser.js +301 -0
- package/dist/parsers/CodexConversationParser.js.map +1 -0
- package/dist/parsers/ConversationParser.d.ts +286 -0
- package/dist/parsers/ConversationParser.d.ts.map +1 -0
- package/dist/parsers/ConversationParser.js +795 -0
- package/dist/parsers/ConversationParser.js.map +1 -0
- package/dist/parsers/DecisionExtractor.d.ts +144 -0
- package/dist/parsers/DecisionExtractor.d.ts.map +1 -0
- package/dist/parsers/DecisionExtractor.js +434 -0
- package/dist/parsers/DecisionExtractor.js.map +1 -0
- package/dist/parsers/GitIntegrator.d.ts +156 -0
- package/dist/parsers/GitIntegrator.d.ts.map +1 -0
- package/dist/parsers/GitIntegrator.js +348 -0
- package/dist/parsers/GitIntegrator.js.map +1 -0
- package/dist/parsers/MistakeExtractor.d.ts +151 -0
- package/dist/parsers/MistakeExtractor.d.ts.map +1 -0
- package/dist/parsers/MistakeExtractor.js +460 -0
- package/dist/parsers/MistakeExtractor.js.map +1 -0
- package/dist/parsers/RequirementsExtractor.d.ts +166 -0
- package/dist/parsers/RequirementsExtractor.d.ts.map +1 -0
- package/dist/parsers/RequirementsExtractor.js +338 -0
- package/dist/parsers/RequirementsExtractor.js.map +1 -0
- package/dist/realtime/ConversationWatcher.d.ts +87 -0
- package/dist/realtime/ConversationWatcher.d.ts.map +1 -0
- package/dist/realtime/ConversationWatcher.js +204 -0
- package/dist/realtime/ConversationWatcher.js.map +1 -0
- package/dist/realtime/IncrementalParser.d.ts +83 -0
- package/dist/realtime/IncrementalParser.d.ts.map +1 -0
- package/dist/realtime/IncrementalParser.js +232 -0
- package/dist/realtime/IncrementalParser.js.map +1 -0
- package/dist/realtime/LiveExtractor.d.ts +72 -0
- package/dist/realtime/LiveExtractor.d.ts.map +1 -0
- package/dist/realtime/LiveExtractor.js +288 -0
- package/dist/realtime/LiveExtractor.js.map +1 -0
- package/dist/search/SemanticSearch.d.ts +121 -0
- package/dist/search/SemanticSearch.d.ts.map +1 -0
- package/dist/search/SemanticSearch.js +823 -0
- package/dist/search/SemanticSearch.js.map +1 -0
- package/dist/storage/BackupManager.d.ts +58 -0
- package/dist/storage/BackupManager.d.ts.map +1 -0
- package/dist/storage/BackupManager.js +223 -0
- package/dist/storage/BackupManager.js.map +1 -0
- package/dist/storage/ConversationStorage.d.ts +341 -0
- package/dist/storage/ConversationStorage.d.ts.map +1 -0
- package/dist/storage/ConversationStorage.js +792 -0
- package/dist/storage/ConversationStorage.js.map +1 -0
- package/dist/storage/DeletionService.d.ts +70 -0
- package/dist/storage/DeletionService.d.ts.map +1 -0
- package/dist/storage/DeletionService.js +253 -0
- package/dist/storage/DeletionService.js.map +1 -0
- package/dist/storage/GlobalIndex.d.ts +133 -0
- package/dist/storage/GlobalIndex.d.ts.map +1 -0
- package/dist/storage/GlobalIndex.js +310 -0
- package/dist/storage/GlobalIndex.js.map +1 -0
- package/dist/storage/SQLiteManager.d.ts +114 -0
- package/dist/storage/SQLiteManager.d.ts.map +1 -0
- package/dist/storage/SQLiteManager.js +636 -0
- package/dist/storage/SQLiteManager.js.map +1 -0
- package/dist/storage/migrations.d.ts +54 -0
- package/dist/storage/migrations.d.ts.map +1 -0
- package/dist/storage/migrations.js +285 -0
- package/dist/storage/migrations.js.map +1 -0
- package/dist/storage/schema.sql +436 -0
- package/dist/tools/ToolDefinitions.d.ts +946 -0
- package/dist/tools/ToolDefinitions.d.ts.map +1 -0
- package/dist/tools/ToolDefinitions.js +937 -0
- package/dist/tools/ToolDefinitions.js.map +1 -0
- package/dist/tools/ToolHandlers.d.ts +791 -0
- package/dist/tools/ToolHandlers.d.ts.map +1 -0
- package/dist/tools/ToolHandlers.js +3262 -0
- package/dist/tools/ToolHandlers.js.map +1 -0
- package/dist/types/ToolTypes.d.ts +824 -0
- package/dist/types/ToolTypes.d.ts.map +1 -0
- package/dist/types/ToolTypes.js +6 -0
- package/dist/types/ToolTypes.js.map +1 -0
- package/dist/utils/Logger.d.ts +70 -0
- package/dist/utils/Logger.d.ts.map +1 -0
- package/dist/utils/Logger.js +131 -0
- package/dist/utils/Logger.js.map +1 -0
- package/dist/utils/McpConfig.d.ts +54 -0
- package/dist/utils/McpConfig.d.ts.map +1 -0
- package/dist/utils/McpConfig.js +136 -0
- package/dist/utils/McpConfig.js.map +1 -0
- package/dist/utils/ProjectMigration.d.ts +82 -0
- package/dist/utils/ProjectMigration.d.ts.map +1 -0
- package/dist/utils/ProjectMigration.js +416 -0
- package/dist/utils/ProjectMigration.js.map +1 -0
- package/dist/utils/constants.d.ts +75 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +105 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/safeJson.d.ts +37 -0
- package/dist/utils/safeJson.d.ts.map +1 -0
- package/dist/utils/safeJson.js +48 -0
- package/dist/utils/safeJson.js.map +1 -0
- package/dist/utils/sanitization.d.ts +45 -0
- package/dist/utils/sanitization.d.ts.map +1 -0
- package/dist/utils/sanitization.js +153 -0
- package/dist/utils/sanitization.js.map +1 -0
- package/dist/utils/worktree.d.ts +15 -0
- package/dist/utils/worktree.d.ts.map +1 -0
- package/dist/utils/worktree.js +86 -0
- package/dist/utils/worktree.js.map +1 -0
- package/package.json +98 -0
- package/scripts/changelog-check.sh +62 -0
- package/scripts/check-node.js +17 -0
- package/scripts/dev-config.js +56 -0
- package/scripts/postinstall.js +117 -0
|
@@ -0,0 +1,310 @@
|
|
|
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, openSync, closeSync } from "fs";
|
|
37
|
+
import { join, dirname } from "path";
|
|
38
|
+
import { homedir } from "os";
|
|
39
|
+
import { nanoid } from "nanoid";
|
|
40
|
+
import { safeJsonParse } from "../utils/safeJson.js";
|
|
41
|
+
import { getCanonicalProjectPath } from "../utils/worktree.js";
|
|
42
|
+
function resolveGlobalIndexPath() {
|
|
43
|
+
const defaultPath = join(homedir(), ".claude", ".cccmemory-global.db");
|
|
44
|
+
const canCreateDbFile = (dbPath) => {
|
|
45
|
+
try {
|
|
46
|
+
mkdirSync(dirname(dbPath), { recursive: true });
|
|
47
|
+
const fd = openSync(dbPath, "a");
|
|
48
|
+
closeSync(fd);
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
const err = error;
|
|
53
|
+
if (err.code === "EACCES" || err.code === "EPERM" || err.code === "EROFS") {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
const canWriteExistingDbFile = (dbPath) => {
|
|
60
|
+
try {
|
|
61
|
+
const fd = openSync(dbPath, "r+");
|
|
62
|
+
closeSync(fd);
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
const err = error;
|
|
67
|
+
if (err.code === "EACCES" ||
|
|
68
|
+
err.code === "EPERM" ||
|
|
69
|
+
err.code === "EROFS" ||
|
|
70
|
+
err.code === "ENOENT") {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
const requestedPath = process.env.CCCMEMORY_GLOBAL_INDEX_PATH;
|
|
77
|
+
if (requestedPath) {
|
|
78
|
+
if (canCreateDbFile(requestedPath)) {
|
|
79
|
+
return requestedPath;
|
|
80
|
+
}
|
|
81
|
+
throw new Error(`Global index path is not writable: ${requestedPath}\n` +
|
|
82
|
+
"Fix permissions or set CCCMEMORY_GLOBAL_INDEX_PATH to a writable file path.\n" +
|
|
83
|
+
"If you're running under Codex or Claude with a locked home dir (~/.claude or ~/.codex), " +
|
|
84
|
+
"you must set CCCMEMORY_GLOBAL_INDEX_PATH explicitly.");
|
|
85
|
+
}
|
|
86
|
+
if (canCreateDbFile(defaultPath)) {
|
|
87
|
+
return defaultPath;
|
|
88
|
+
}
|
|
89
|
+
const canonicalPath = getCanonicalProjectPath(process.cwd()).canonicalPath;
|
|
90
|
+
const fallbackPath = join(canonicalPath, ".cccmemory", "global-index.db");
|
|
91
|
+
if (existsSync(fallbackPath) && canWriteExistingDbFile(fallbackPath)) {
|
|
92
|
+
console.error(`⚠️ Using existing project-local global index at ${fallbackPath}. ` +
|
|
93
|
+
"No new files are created there automatically. " +
|
|
94
|
+
"Set CCCMEMORY_GLOBAL_INDEX_PATH to make this explicit.");
|
|
95
|
+
return fallbackPath;
|
|
96
|
+
}
|
|
97
|
+
throw new Error(`Unable to create global index at ${defaultPath}.\n` +
|
|
98
|
+
`Fix permissions for ${dirname(defaultPath)} or set CCCMEMORY_GLOBAL_INDEX_PATH.\n` +
|
|
99
|
+
"If you're running under Codex or Claude with a locked home dir (~/.claude or ~/.codex), " +
|
|
100
|
+
"you must set CCCMEMORY_GLOBAL_INDEX_PATH explicitly.");
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Global Index Manager
|
|
104
|
+
*
|
|
105
|
+
* Maintains a central registry of all indexed projects in a global database.
|
|
106
|
+
*/
|
|
107
|
+
export class GlobalIndex {
|
|
108
|
+
db = null;
|
|
109
|
+
globalDbPath;
|
|
110
|
+
initialized = false;
|
|
111
|
+
constructor(customPath) {
|
|
112
|
+
// Use custom path or default to ~/.claude/.cccmemory-global.db
|
|
113
|
+
// Note: Database is NOT opened here - lazy initialization in ensureInitialized()
|
|
114
|
+
if (customPath) {
|
|
115
|
+
this.globalDbPath = customPath;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
this.globalDbPath = resolveGlobalIndexPath();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Ensure database is initialized (lazy initialization).
|
|
123
|
+
* Called automatically by methods that need the database.
|
|
124
|
+
*/
|
|
125
|
+
ensureInitialized() {
|
|
126
|
+
if (!this.initialized || !this.db) {
|
|
127
|
+
// Create parent directory if needed
|
|
128
|
+
const parentDir = dirname(this.globalDbPath);
|
|
129
|
+
if (!existsSync(parentDir)) {
|
|
130
|
+
mkdirSync(parentDir, { recursive: true });
|
|
131
|
+
}
|
|
132
|
+
// Open/create database
|
|
133
|
+
this.db = new Database(this.globalDbPath);
|
|
134
|
+
// Initialize schema
|
|
135
|
+
this.initializeSchema();
|
|
136
|
+
this.initialized = true;
|
|
137
|
+
}
|
|
138
|
+
return this.db;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Initialize the global index database schema.
|
|
142
|
+
* Note: this.db is guaranteed to be set when this is called from ensureInitialized()
|
|
143
|
+
*/
|
|
144
|
+
initializeSchema() {
|
|
145
|
+
if (!this.db) {
|
|
146
|
+
throw new Error("Database not initialized");
|
|
147
|
+
}
|
|
148
|
+
this.db.exec(`
|
|
149
|
+
CREATE TABLE IF NOT EXISTS project_metadata (
|
|
150
|
+
id TEXT PRIMARY KEY,
|
|
151
|
+
project_path TEXT NOT NULL UNIQUE,
|
|
152
|
+
source_type TEXT NOT NULL,
|
|
153
|
+
db_path TEXT NOT NULL,
|
|
154
|
+
last_indexed INTEGER NOT NULL,
|
|
155
|
+
message_count INTEGER DEFAULT 0,
|
|
156
|
+
conversation_count INTEGER DEFAULT 0,
|
|
157
|
+
decision_count INTEGER DEFAULT 0,
|
|
158
|
+
mistake_count INTEGER DEFAULT 0,
|
|
159
|
+
metadata TEXT,
|
|
160
|
+
created_at INTEGER NOT NULL,
|
|
161
|
+
updated_at INTEGER NOT NULL
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
CREATE INDEX IF NOT EXISTS idx_proj_source ON project_metadata(source_type);
|
|
165
|
+
CREATE INDEX IF NOT EXISTS idx_proj_last_indexed ON project_metadata(last_indexed);
|
|
166
|
+
CREATE INDEX IF NOT EXISTS idx_proj_path ON project_metadata(project_path);
|
|
167
|
+
`);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Register or update a project in the global index.
|
|
171
|
+
* Uses atomic UPSERT to avoid race conditions.
|
|
172
|
+
*
|
|
173
|
+
* @param options - Project registration options
|
|
174
|
+
* @returns The registered/updated project metadata
|
|
175
|
+
*/
|
|
176
|
+
registerProject(options) {
|
|
177
|
+
const db = this.ensureInitialized();
|
|
178
|
+
const now = Date.now();
|
|
179
|
+
const id = nanoid();
|
|
180
|
+
// Atomic UPSERT - avoids race conditions between concurrent registrations
|
|
181
|
+
const stmt = db.prepare(`
|
|
182
|
+
INSERT INTO project_metadata (
|
|
183
|
+
id, project_path, source_type, db_path, last_indexed,
|
|
184
|
+
message_count, conversation_count, decision_count, mistake_count,
|
|
185
|
+
metadata, created_at, updated_at
|
|
186
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
187
|
+
ON CONFLICT(project_path) DO UPDATE SET
|
|
188
|
+
source_type = excluded.source_type,
|
|
189
|
+
db_path = excluded.db_path,
|
|
190
|
+
last_indexed = excluded.last_indexed,
|
|
191
|
+
message_count = excluded.message_count,
|
|
192
|
+
conversation_count = excluded.conversation_count,
|
|
193
|
+
decision_count = excluded.decision_count,
|
|
194
|
+
mistake_count = excluded.mistake_count,
|
|
195
|
+
metadata = excluded.metadata,
|
|
196
|
+
updated_at = excluded.updated_at
|
|
197
|
+
`);
|
|
198
|
+
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);
|
|
199
|
+
const row = db
|
|
200
|
+
.prepare("SELECT * FROM project_metadata WHERE project_path = ?")
|
|
201
|
+
.get(options.project_path);
|
|
202
|
+
return {
|
|
203
|
+
id: row.id,
|
|
204
|
+
project_path: row.project_path,
|
|
205
|
+
source_type: row.source_type,
|
|
206
|
+
db_path: row.db_path,
|
|
207
|
+
last_indexed: row.last_indexed,
|
|
208
|
+
message_count: row.message_count,
|
|
209
|
+
conversation_count: row.conversation_count,
|
|
210
|
+
decision_count: row.decision_count,
|
|
211
|
+
mistake_count: row.mistake_count,
|
|
212
|
+
metadata: safeJsonParse(row.metadata, {}),
|
|
213
|
+
created_at: row.created_at,
|
|
214
|
+
updated_at: row.updated_at,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Get all registered projects.
|
|
219
|
+
*
|
|
220
|
+
* @param sourceType - Optional filter by source type
|
|
221
|
+
* @returns Array of project metadata
|
|
222
|
+
*/
|
|
223
|
+
getAllProjects(sourceType) {
|
|
224
|
+
let sql = "SELECT * FROM project_metadata";
|
|
225
|
+
const params = [];
|
|
226
|
+
if (sourceType) {
|
|
227
|
+
sql += " WHERE source_type = ?";
|
|
228
|
+
params.push(sourceType);
|
|
229
|
+
}
|
|
230
|
+
sql += " ORDER BY last_indexed DESC";
|
|
231
|
+
const db = this.ensureInitialized();
|
|
232
|
+
const rows = db.prepare(sql).all(...params);
|
|
233
|
+
return rows.map((row) => ({
|
|
234
|
+
...row,
|
|
235
|
+
metadata: safeJsonParse(row.metadata, {}),
|
|
236
|
+
}));
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Get a specific project by path.
|
|
240
|
+
*
|
|
241
|
+
* @param projectPath - Absolute path to the project
|
|
242
|
+
* @returns Project metadata or null if not found
|
|
243
|
+
*/
|
|
244
|
+
getProject(projectPath) {
|
|
245
|
+
const db = this.ensureInitialized();
|
|
246
|
+
const row = db
|
|
247
|
+
.prepare("SELECT * FROM project_metadata WHERE project_path = ?")
|
|
248
|
+
.get(projectPath);
|
|
249
|
+
if (!row) {
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
252
|
+
return {
|
|
253
|
+
...row,
|
|
254
|
+
metadata: safeJsonParse(row.metadata, {}),
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Remove a project from the global index.
|
|
259
|
+
*
|
|
260
|
+
* Note: This does NOT delete the project's database, only removes it from the registry.
|
|
261
|
+
*
|
|
262
|
+
* @param projectPath - Absolute path to the project
|
|
263
|
+
* @returns True if project was removed, false if not found
|
|
264
|
+
*/
|
|
265
|
+
removeProject(projectPath) {
|
|
266
|
+
const db = this.ensureInitialized();
|
|
267
|
+
const stmt = db.prepare("DELETE FROM project_metadata WHERE project_path = ?");
|
|
268
|
+
const result = stmt.run(projectPath);
|
|
269
|
+
return result.changes > 0;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Get global statistics across all projects.
|
|
273
|
+
*
|
|
274
|
+
* @returns Aggregate statistics
|
|
275
|
+
*/
|
|
276
|
+
getGlobalStats() {
|
|
277
|
+
const db = this.ensureInitialized();
|
|
278
|
+
const stats = db
|
|
279
|
+
.prepare(`
|
|
280
|
+
SELECT
|
|
281
|
+
COUNT(*) as total_projects,
|
|
282
|
+
COALESCE(SUM(CASE WHEN source_type = 'claude-code' THEN 1 ELSE 0 END), 0) as claude_code_projects,
|
|
283
|
+
COALESCE(SUM(CASE WHEN source_type = 'codex' THEN 1 ELSE 0 END), 0) as codex_projects,
|
|
284
|
+
COALESCE(SUM(message_count), 0) as total_messages,
|
|
285
|
+
COALESCE(SUM(conversation_count), 0) as total_conversations,
|
|
286
|
+
COALESCE(SUM(decision_count), 0) as total_decisions,
|
|
287
|
+
COALESCE(SUM(mistake_count), 0) as total_mistakes
|
|
288
|
+
FROM project_metadata
|
|
289
|
+
`)
|
|
290
|
+
.get();
|
|
291
|
+
return stats;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Close the global index database.
|
|
295
|
+
*/
|
|
296
|
+
close() {
|
|
297
|
+
if (this.db) {
|
|
298
|
+
this.db.close();
|
|
299
|
+
this.db = null;
|
|
300
|
+
this.initialized = false;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Get the path to the global index database.
|
|
305
|
+
*/
|
|
306
|
+
getDbPath() {
|
|
307
|
+
return this.globalDbPath;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
//# sourceMappingURL=GlobalIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlobalIndex.js","sourceRoot":"","sources":["../../src/storage/GlobalIndex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Manager with optimized settings
|
|
3
|
+
* Based on patterns from code-graph-rag-mcp for maximum performance
|
|
4
|
+
*/
|
|
5
|
+
import Database from "better-sqlite3";
|
|
6
|
+
export interface SQLiteConfig {
|
|
7
|
+
dbPath?: string;
|
|
8
|
+
projectPath?: string;
|
|
9
|
+
readOnly?: boolean;
|
|
10
|
+
verbose?: boolean;
|
|
11
|
+
/** Memory-mapped I/O size in bytes (default: 1GB). Set to 0 to disable. */
|
|
12
|
+
mmapSize?: number;
|
|
13
|
+
/** Cache size in KB (default: 64MB) */
|
|
14
|
+
cacheSizeKb?: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class SQLiteManager {
|
|
17
|
+
private db;
|
|
18
|
+
private dbPath;
|
|
19
|
+
private isReadOnly;
|
|
20
|
+
private mmapSize;
|
|
21
|
+
private cacheSizeKb;
|
|
22
|
+
constructor(config?: SQLiteConfig);
|
|
23
|
+
private ensureDirectoryExists;
|
|
24
|
+
/**
|
|
25
|
+
* Load sqlite-vec extension for vector search
|
|
26
|
+
*/
|
|
27
|
+
private loadVectorExtension;
|
|
28
|
+
/**
|
|
29
|
+
* Create sqlite-vec virtual tables for vector search with specified dimensions
|
|
30
|
+
* Public method called when embedding provider dimensions are known
|
|
31
|
+
*/
|
|
32
|
+
createVecTablesWithDimensions(dimensions: number): void;
|
|
33
|
+
/**
|
|
34
|
+
* Apply performance optimizations
|
|
35
|
+
* Based on code-graph-rag-mcp sqlite-manager.ts
|
|
36
|
+
*/
|
|
37
|
+
private optimizeDatabase;
|
|
38
|
+
/**
|
|
39
|
+
* Initialize database schema from schema.sql
|
|
40
|
+
*/
|
|
41
|
+
private initializeSchema;
|
|
42
|
+
/**
|
|
43
|
+
* Apply database migrations for existing databases
|
|
44
|
+
*/
|
|
45
|
+
private applyMigrations;
|
|
46
|
+
/**
|
|
47
|
+
* Get the underlying database instance
|
|
48
|
+
*/
|
|
49
|
+
getDatabase(): Database.Database;
|
|
50
|
+
/**
|
|
51
|
+
* Execute a transaction
|
|
52
|
+
*/
|
|
53
|
+
transaction<T>(fn: () => T): T;
|
|
54
|
+
/**
|
|
55
|
+
* Prepare a statement
|
|
56
|
+
*/
|
|
57
|
+
prepare<T extends unknown[] = unknown[]>(sql: string): Database.Statement<T>;
|
|
58
|
+
/**
|
|
59
|
+
* Execute SQL directly
|
|
60
|
+
*/
|
|
61
|
+
exec(sql: string): void;
|
|
62
|
+
/**
|
|
63
|
+
* Close the database connection
|
|
64
|
+
*/
|
|
65
|
+
close(): void;
|
|
66
|
+
/**
|
|
67
|
+
* Get database statistics
|
|
68
|
+
*/
|
|
69
|
+
getStats(): {
|
|
70
|
+
dbPath: string;
|
|
71
|
+
fileSize: number;
|
|
72
|
+
pageCount: number;
|
|
73
|
+
pageSize: number;
|
|
74
|
+
wal: {
|
|
75
|
+
enabled: boolean;
|
|
76
|
+
size: number | null;
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Get database file path
|
|
81
|
+
*/
|
|
82
|
+
getDbPath(): string;
|
|
83
|
+
/**
|
|
84
|
+
* Vacuum the database to reclaim space
|
|
85
|
+
*/
|
|
86
|
+
vacuum(): void;
|
|
87
|
+
/**
|
|
88
|
+
* Analyze the database for query optimization
|
|
89
|
+
*/
|
|
90
|
+
analyze(): void;
|
|
91
|
+
/**
|
|
92
|
+
* Checkpoint the WAL file
|
|
93
|
+
*/
|
|
94
|
+
checkpoint(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Get current schema version
|
|
97
|
+
*/
|
|
98
|
+
getSchemaVersion(): number;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get a SQLiteManager instance for the given config.
|
|
102
|
+
* Instances are cached by dbPath to avoid re-opening the same database.
|
|
103
|
+
*/
|
|
104
|
+
export declare function getSQLiteManager(config?: SQLiteConfig): SQLiteManager;
|
|
105
|
+
/**
|
|
106
|
+
* Reset all cached SQLiteManager instances.
|
|
107
|
+
* Useful for testing or when switching projects.
|
|
108
|
+
*/
|
|
109
|
+
export declare function resetSQLiteManager(): void;
|
|
110
|
+
/**
|
|
111
|
+
* Reset a specific SQLiteManager instance by path.
|
|
112
|
+
*/
|
|
113
|
+
export declare function resetSQLiteManagerByPath(dbPath: string): void;
|
|
114
|
+
//# sourceMappingURL=SQLiteManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLiteManager.d.ts","sourceRoot":"","sources":["../../src/storage/SQLiteManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAoBtC,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;IAClB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8KD,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,GAAE,YAAiB;IAoCrC,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;;OAGG;IACH,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IA2DvD;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAyCxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqFxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAyJvB;;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;IAOd;;OAEG;IACH,OAAO,IAAI,IAAI;IAOf;;OAEG;IACH,UAAU,IAAI,IAAI;IAOlB;;OAEG;IACH,gBAAgB,IAAI,MAAM;CAU3B;AAKD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,aAAa,CAarE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAM7D"}
|