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 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationStorage.js","sourceRoot":"","sources":["../../src/storage/ConversationStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DeletionService - Handle selective deletion of conversations by topic/keyword
|
|
3
|
+
* Uses semantic + FTS5 search to find matching conversations
|
|
4
|
+
*/
|
|
5
|
+
import type Database from "better-sqlite3";
|
|
6
|
+
import { type BackupMetadata } from "./BackupManager.js";
|
|
7
|
+
import type { ConversationStorage } from "./ConversationStorage.js";
|
|
8
|
+
import type { SemanticSearch } from "../search/SemanticSearch.js";
|
|
9
|
+
/**
|
|
10
|
+
* Deletion preview - shows what would be deleted
|
|
11
|
+
*/
|
|
12
|
+
export interface DeletionPreview {
|
|
13
|
+
conversationIds: string[];
|
|
14
|
+
conversations: Array<{
|
|
15
|
+
id: string;
|
|
16
|
+
session_id: string;
|
|
17
|
+
created_at: number;
|
|
18
|
+
message_count: number;
|
|
19
|
+
}>;
|
|
20
|
+
totalMessages: number;
|
|
21
|
+
totalDecisions: number;
|
|
22
|
+
totalMistakes: number;
|
|
23
|
+
summary: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Deletion result - what was actually deleted
|
|
27
|
+
*/
|
|
28
|
+
export interface DeletionResult {
|
|
29
|
+
backup: BackupMetadata;
|
|
30
|
+
deleted: {
|
|
31
|
+
conversations: number;
|
|
32
|
+
messages: number;
|
|
33
|
+
decisions: number;
|
|
34
|
+
mistakes: number;
|
|
35
|
+
toolUses: number;
|
|
36
|
+
fileEdits: number;
|
|
37
|
+
};
|
|
38
|
+
summary: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* DeletionService class
|
|
42
|
+
*/
|
|
43
|
+
export declare class DeletionService {
|
|
44
|
+
private db;
|
|
45
|
+
private backupManager;
|
|
46
|
+
private storage;
|
|
47
|
+
private semanticSearch;
|
|
48
|
+
constructor(db: Database.Database, storage: ConversationStorage, semanticSearch?: SemanticSearch | null);
|
|
49
|
+
/**
|
|
50
|
+
* Preview what would be deleted for given keywords/topics
|
|
51
|
+
*/
|
|
52
|
+
previewDeletionByTopic(keywords: string[], projectPath: string): Promise<DeletionPreview>;
|
|
53
|
+
/**
|
|
54
|
+
* Delete conversations by topic/keywords with automatic backup
|
|
55
|
+
*/
|
|
56
|
+
forgetByTopic(keywords: string[], projectPath: string): Promise<DeletionResult>;
|
|
57
|
+
/**
|
|
58
|
+
* Find conversations matching keywords/topics using search
|
|
59
|
+
*/
|
|
60
|
+
private findConversationsByTopic;
|
|
61
|
+
/**
|
|
62
|
+
* Count helpers
|
|
63
|
+
*/
|
|
64
|
+
private countMessages;
|
|
65
|
+
private countDecisions;
|
|
66
|
+
private countMistakes;
|
|
67
|
+
private countToolUses;
|
|
68
|
+
private countFileEdits;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=DeletionService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeletionService.d.ts","sourceRoot":"","sources":["../../src/storage/DeletionService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,KAAK,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,cAAc,CAAwB;gBAG5C,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,mBAAmB,EAC5B,cAAc,GAAE,cAAc,GAAG,IAAW;IAQ9C;;OAEG;IACG,sBAAsB,CAC1B,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC;IAgD3B;;OAEG;IACG,aAAa,CACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC;IA+H1B;;OAEG;YACW,wBAAwB;IAsDtC;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,cAAc;CASvB"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DeletionService - Handle selective deletion of conversations by topic/keyword
|
|
3
|
+
* Uses semantic + FTS5 search to find matching conversations
|
|
4
|
+
*/
|
|
5
|
+
import { BackupManager } from "./BackupManager.js";
|
|
6
|
+
/**
|
|
7
|
+
* DeletionService class
|
|
8
|
+
*/
|
|
9
|
+
export class DeletionService {
|
|
10
|
+
db;
|
|
11
|
+
backupManager;
|
|
12
|
+
storage;
|
|
13
|
+
semanticSearch;
|
|
14
|
+
constructor(db, storage, semanticSearch = null) {
|
|
15
|
+
this.db = db;
|
|
16
|
+
this.backupManager = new BackupManager(db);
|
|
17
|
+
this.storage = storage;
|
|
18
|
+
this.semanticSearch = semanticSearch;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Preview what would be deleted for given keywords/topics
|
|
22
|
+
*/
|
|
23
|
+
async previewDeletionByTopic(keywords, projectPath) {
|
|
24
|
+
// Find matching conversations using search
|
|
25
|
+
const conversationIds = await this.findConversationsByTopic(keywords, projectPath);
|
|
26
|
+
if (conversationIds.length === 0) {
|
|
27
|
+
return {
|
|
28
|
+
conversationIds: [],
|
|
29
|
+
conversations: [],
|
|
30
|
+
totalMessages: 0,
|
|
31
|
+
totalDecisions: 0,
|
|
32
|
+
totalMistakes: 0,
|
|
33
|
+
summary: `No conversations found matching: ${keywords.join(", ")}`,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
// Get conversation details
|
|
37
|
+
const placeholders = conversationIds.map(() => "?").join(",");
|
|
38
|
+
const conversations = this.db
|
|
39
|
+
.prepare(`SELECT id, id as session_id, created_at, message_count
|
|
40
|
+
FROM conversations
|
|
41
|
+
WHERE id IN (${placeholders})
|
|
42
|
+
ORDER BY created_at DESC`)
|
|
43
|
+
.all(...conversationIds);
|
|
44
|
+
// Count related records
|
|
45
|
+
const totalMessages = this.countMessages(conversationIds);
|
|
46
|
+
const totalDecisions = this.countDecisions(conversationIds);
|
|
47
|
+
const totalMistakes = this.countMistakes(conversationIds);
|
|
48
|
+
const summary = `Found ${conversations.length} conversation${conversations.length !== 1 ? "s" : ""} (${totalMessages} messages, ${totalDecisions} decisions, ${totalMistakes} mistakes) matching: ${keywords.join(", ")}`;
|
|
49
|
+
return {
|
|
50
|
+
conversationIds,
|
|
51
|
+
conversations,
|
|
52
|
+
totalMessages,
|
|
53
|
+
totalDecisions,
|
|
54
|
+
totalMistakes,
|
|
55
|
+
summary,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Delete conversations by topic/keywords with automatic backup
|
|
60
|
+
*/
|
|
61
|
+
async forgetByTopic(keywords, projectPath) {
|
|
62
|
+
// First, preview what we're going to delete
|
|
63
|
+
const preview = await this.previewDeletionByTopic(keywords, projectPath);
|
|
64
|
+
if (preview.conversationIds.length === 0) {
|
|
65
|
+
throw new Error(`No conversations found matching: ${keywords.join(", ")}`);
|
|
66
|
+
}
|
|
67
|
+
// Create backup before deletion
|
|
68
|
+
const description = `Forget conversations about: ${keywords.join(", ")}`;
|
|
69
|
+
const backup = this.backupManager.createBackupForConversations(preview.conversationIds, description, projectPath);
|
|
70
|
+
// Count records before deletion for reporting
|
|
71
|
+
const beforeCounts = {
|
|
72
|
+
conversations: preview.conversationIds.length,
|
|
73
|
+
messages: preview.totalMessages,
|
|
74
|
+
decisions: preview.totalDecisions,
|
|
75
|
+
mistakes: preview.totalMistakes,
|
|
76
|
+
toolUses: this.countToolUses(preview.conversationIds),
|
|
77
|
+
fileEdits: this.countFileEdits(preview.conversationIds),
|
|
78
|
+
};
|
|
79
|
+
// Perform deletion (CASCADE will handle related records)
|
|
80
|
+
const placeholders = preview.conversationIds.map(() => "?").join(",");
|
|
81
|
+
// Use transaction for atomic deletion
|
|
82
|
+
this.db.transaction(() => {
|
|
83
|
+
// Delete FTS entries first (no CASCADE)
|
|
84
|
+
this.db
|
|
85
|
+
.prepare(`DELETE FROM messages_fts
|
|
86
|
+
WHERE rowid IN (
|
|
87
|
+
SELECT rowid FROM messages
|
|
88
|
+
WHERE conversation_id IN (${placeholders})
|
|
89
|
+
)`)
|
|
90
|
+
.run(...preview.conversationIds);
|
|
91
|
+
this.db
|
|
92
|
+
.prepare(`DELETE FROM decisions_fts
|
|
93
|
+
WHERE rowid IN (
|
|
94
|
+
SELECT rowid FROM decisions
|
|
95
|
+
WHERE conversation_id IN (${placeholders})
|
|
96
|
+
)`)
|
|
97
|
+
.run(...preview.conversationIds);
|
|
98
|
+
// Delete vector embeddings (no CASCADE from sqlite-vec tables)
|
|
99
|
+
// Get message IDs first
|
|
100
|
+
const messageIds = this.db
|
|
101
|
+
.prepare(`SELECT id FROM messages WHERE conversation_id IN (${placeholders})`)
|
|
102
|
+
.all(...preview.conversationIds);
|
|
103
|
+
if (messageIds.length > 0) {
|
|
104
|
+
const msgPlaceholders = messageIds.map(() => "?").join(",");
|
|
105
|
+
const msgEmbedIds = messageIds.map(m => `msg_${m.id}`);
|
|
106
|
+
// Delete from BLOB fallback table
|
|
107
|
+
try {
|
|
108
|
+
this.db
|
|
109
|
+
.prepare(`DELETE FROM message_embeddings WHERE message_id IN (${msgPlaceholders})`)
|
|
110
|
+
.run(...messageIds.map(m => m.id));
|
|
111
|
+
}
|
|
112
|
+
catch (_e) {
|
|
113
|
+
// Table might not exist
|
|
114
|
+
}
|
|
115
|
+
// Delete from sqlite-vec virtual table
|
|
116
|
+
try {
|
|
117
|
+
this.db
|
|
118
|
+
.prepare(`DELETE FROM vec_message_embeddings WHERE id IN (${msgPlaceholders})`)
|
|
119
|
+
.run(...msgEmbedIds);
|
|
120
|
+
}
|
|
121
|
+
catch (_e) {
|
|
122
|
+
// Vec table might not exist
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Delete decision embeddings
|
|
126
|
+
const decisionIds = this.db
|
|
127
|
+
.prepare(`SELECT id FROM decisions WHERE conversation_id IN (${placeholders})`)
|
|
128
|
+
.all(...preview.conversationIds);
|
|
129
|
+
if (decisionIds.length > 0) {
|
|
130
|
+
const decPlaceholders = decisionIds.map(() => "?").join(",");
|
|
131
|
+
const decEmbedIds = decisionIds.map(d => `dec_${d.id}`);
|
|
132
|
+
// Delete from BLOB fallback table
|
|
133
|
+
try {
|
|
134
|
+
this.db
|
|
135
|
+
.prepare(`DELETE FROM decision_embeddings WHERE decision_id IN (${decPlaceholders})`)
|
|
136
|
+
.run(...decisionIds.map(d => d.id));
|
|
137
|
+
}
|
|
138
|
+
catch (_e) {
|
|
139
|
+
// Table might not exist
|
|
140
|
+
}
|
|
141
|
+
// Delete from sqlite-vec virtual table
|
|
142
|
+
try {
|
|
143
|
+
this.db
|
|
144
|
+
.prepare(`DELETE FROM vec_decision_embeddings WHERE id IN (${decPlaceholders})`)
|
|
145
|
+
.run(...decEmbedIds);
|
|
146
|
+
}
|
|
147
|
+
catch (_e) {
|
|
148
|
+
// Vec table might not exist
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// Delete conversations (CASCADE handles the rest)
|
|
152
|
+
this.db
|
|
153
|
+
.prepare(`DELETE FROM conversations WHERE id IN (${placeholders})`)
|
|
154
|
+
.run(...preview.conversationIds);
|
|
155
|
+
})();
|
|
156
|
+
// Clear cache since data was deleted
|
|
157
|
+
this.storage.clearCache();
|
|
158
|
+
const summary = `✓ Deleted ${beforeCounts.conversations} conversations (${beforeCounts.messages} messages, ${beforeCounts.decisions} decisions, ${beforeCounts.mistakes} mistakes)\n✓ Backup saved: ${backup.backupPath}`;
|
|
159
|
+
return {
|
|
160
|
+
backup,
|
|
161
|
+
deleted: beforeCounts,
|
|
162
|
+
summary,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Find conversations matching keywords/topics using search
|
|
167
|
+
*/
|
|
168
|
+
async findConversationsByTopic(keywords, projectPath) {
|
|
169
|
+
const conversationIds = new Set();
|
|
170
|
+
// Build search query from keywords
|
|
171
|
+
const searchQuery = keywords.join(" ");
|
|
172
|
+
// Try semantic search if available
|
|
173
|
+
if (this.semanticSearch) {
|
|
174
|
+
try {
|
|
175
|
+
const results = await this.semanticSearch.searchConversations(searchQuery, 100 // Cast wide net
|
|
176
|
+
);
|
|
177
|
+
// Filter by project path
|
|
178
|
+
for (const result of results) {
|
|
179
|
+
if (result.conversation.project_path === projectPath) {
|
|
180
|
+
conversationIds.add(result.conversation.id);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
console.error("Semantic search failed, falling back to FTS:", error.message);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// Also try FTS5 search for exact matches
|
|
189
|
+
try {
|
|
190
|
+
// Escape internal double quotes in keywords to prevent FTS syntax errors
|
|
191
|
+
const ftsQuery = keywords.map((k) => `"${k.replace(/"/g, '""')}"`).join(" OR ");
|
|
192
|
+
const messages = this.db
|
|
193
|
+
.prepare(`SELECT DISTINCT m.conversation_id
|
|
194
|
+
FROM messages_fts mf
|
|
195
|
+
JOIN messages m ON m.rowid = mf.rowid
|
|
196
|
+
JOIN conversations c ON c.id = m.conversation_id
|
|
197
|
+
WHERE messages_fts MATCH ?
|
|
198
|
+
AND c.project_path = ?
|
|
199
|
+
LIMIT 100`)
|
|
200
|
+
.all(ftsQuery, projectPath);
|
|
201
|
+
for (const msg of messages) {
|
|
202
|
+
conversationIds.add(msg.conversation_id);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
console.error("FTS search failed:", error.message);
|
|
207
|
+
}
|
|
208
|
+
return Array.from(conversationIds);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Count helpers
|
|
212
|
+
*/
|
|
213
|
+
countMessages(conversationIds) {
|
|
214
|
+
const placeholders = conversationIds.map(() => "?").join(",");
|
|
215
|
+
const result = this.db
|
|
216
|
+
.prepare(`SELECT COUNT(*) as count FROM messages WHERE conversation_id IN (${placeholders})`)
|
|
217
|
+
.get(...conversationIds);
|
|
218
|
+
return result.count;
|
|
219
|
+
}
|
|
220
|
+
countDecisions(conversationIds) {
|
|
221
|
+
const placeholders = conversationIds.map(() => "?").join(",");
|
|
222
|
+
const result = this.db
|
|
223
|
+
.prepare(`SELECT COUNT(*) as count FROM decisions WHERE conversation_id IN (${placeholders})`)
|
|
224
|
+
.get(...conversationIds);
|
|
225
|
+
return result.count;
|
|
226
|
+
}
|
|
227
|
+
countMistakes(conversationIds) {
|
|
228
|
+
const placeholders = conversationIds.map(() => "?").join(",");
|
|
229
|
+
const result = this.db
|
|
230
|
+
.prepare(`SELECT COUNT(*) as count FROM mistakes WHERE conversation_id IN (${placeholders})`)
|
|
231
|
+
.get(...conversationIds);
|
|
232
|
+
return result.count;
|
|
233
|
+
}
|
|
234
|
+
countToolUses(conversationIds) {
|
|
235
|
+
const placeholders = conversationIds.map(() => "?").join(",");
|
|
236
|
+
const result = this.db
|
|
237
|
+
.prepare(`SELECT COUNT(*) as count
|
|
238
|
+
FROM tool_uses
|
|
239
|
+
WHERE message_id IN (
|
|
240
|
+
SELECT id FROM messages WHERE conversation_id IN (${placeholders})
|
|
241
|
+
)`)
|
|
242
|
+
.get(...conversationIds);
|
|
243
|
+
return result.count;
|
|
244
|
+
}
|
|
245
|
+
countFileEdits(conversationIds) {
|
|
246
|
+
const placeholders = conversationIds.map(() => "?").join(",");
|
|
247
|
+
const result = this.db
|
|
248
|
+
.prepare(`SELECT COUNT(*) as count FROM file_edits WHERE conversation_id IN (${placeholders})`)
|
|
249
|
+
.get(...conversationIds);
|
|
250
|
+
return result.count;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=DeletionService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeletionService.js","sourceRoot":"","sources":["../../src/storage/DeletionService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
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
|
+
export interface ProjectMetadata {
|
|
36
|
+
id: string;
|
|
37
|
+
project_path: string;
|
|
38
|
+
source_type: "claude-code" | "codex";
|
|
39
|
+
db_path: string;
|
|
40
|
+
last_indexed: number;
|
|
41
|
+
message_count: number;
|
|
42
|
+
conversation_count: number;
|
|
43
|
+
decision_count: number;
|
|
44
|
+
mistake_count: number;
|
|
45
|
+
metadata: Record<string, unknown>;
|
|
46
|
+
created_at: number;
|
|
47
|
+
updated_at: number;
|
|
48
|
+
}
|
|
49
|
+
export interface RegisterProjectOptions {
|
|
50
|
+
project_path: string;
|
|
51
|
+
source_type: "claude-code" | "codex";
|
|
52
|
+
db_path: string;
|
|
53
|
+
message_count?: number;
|
|
54
|
+
conversation_count?: number;
|
|
55
|
+
decision_count?: number;
|
|
56
|
+
mistake_count?: number;
|
|
57
|
+
metadata?: Record<string, unknown>;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Global Index Manager
|
|
61
|
+
*
|
|
62
|
+
* Maintains a central registry of all indexed projects in a global database.
|
|
63
|
+
*/
|
|
64
|
+
export declare class GlobalIndex {
|
|
65
|
+
private db;
|
|
66
|
+
private globalDbPath;
|
|
67
|
+
private initialized;
|
|
68
|
+
constructor(customPath?: string);
|
|
69
|
+
/**
|
|
70
|
+
* Ensure database is initialized (lazy initialization).
|
|
71
|
+
* Called automatically by methods that need the database.
|
|
72
|
+
*/
|
|
73
|
+
private ensureInitialized;
|
|
74
|
+
/**
|
|
75
|
+
* Initialize the global index database schema.
|
|
76
|
+
* Note: this.db is guaranteed to be set when this is called from ensureInitialized()
|
|
77
|
+
*/
|
|
78
|
+
private initializeSchema;
|
|
79
|
+
/**
|
|
80
|
+
* Register or update a project in the global index.
|
|
81
|
+
* Uses atomic UPSERT to avoid race conditions.
|
|
82
|
+
*
|
|
83
|
+
* @param options - Project registration options
|
|
84
|
+
* @returns The registered/updated project metadata
|
|
85
|
+
*/
|
|
86
|
+
registerProject(options: RegisterProjectOptions): ProjectMetadata;
|
|
87
|
+
/**
|
|
88
|
+
* Get all registered projects.
|
|
89
|
+
*
|
|
90
|
+
* @param sourceType - Optional filter by source type
|
|
91
|
+
* @returns Array of project metadata
|
|
92
|
+
*/
|
|
93
|
+
getAllProjects(sourceType?: "claude-code" | "codex"): ProjectMetadata[];
|
|
94
|
+
/**
|
|
95
|
+
* Get a specific project by path.
|
|
96
|
+
*
|
|
97
|
+
* @param projectPath - Absolute path to the project
|
|
98
|
+
* @returns Project metadata or null if not found
|
|
99
|
+
*/
|
|
100
|
+
getProject(projectPath: string): ProjectMetadata | null;
|
|
101
|
+
/**
|
|
102
|
+
* Remove a project from the global index.
|
|
103
|
+
*
|
|
104
|
+
* Note: This does NOT delete the project's database, only removes it from the registry.
|
|
105
|
+
*
|
|
106
|
+
* @param projectPath - Absolute path to the project
|
|
107
|
+
* @returns True if project was removed, false if not found
|
|
108
|
+
*/
|
|
109
|
+
removeProject(projectPath: string): boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Get global statistics across all projects.
|
|
112
|
+
*
|
|
113
|
+
* @returns Aggregate statistics
|
|
114
|
+
*/
|
|
115
|
+
getGlobalStats(): {
|
|
116
|
+
total_projects: number;
|
|
117
|
+
claude_code_projects: number;
|
|
118
|
+
codex_projects: number;
|
|
119
|
+
total_messages: number;
|
|
120
|
+
total_conversations: number;
|
|
121
|
+
total_decisions: number;
|
|
122
|
+
total_mistakes: number;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Close the global index database.
|
|
126
|
+
*/
|
|
127
|
+
close(): void;
|
|
128
|
+
/**
|
|
129
|
+
* Get the path to the global index database.
|
|
130
|
+
*/
|
|
131
|
+
getDbPath(): string;
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=GlobalIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlobalIndex.d.ts","sourceRoot":"","sources":["../../src/storage/GlobalIndex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAmFH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,aAAa,GAAG,OAAO,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,aAAa,GAAG,OAAO,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAkC;IAC5C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAS;gBAEhB,UAAU,CAAC,EAAE,MAAM;IAU/B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;;;;;OAMG;IACH,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe;IA0EjE;;;;;OAKG;IACH,cAAc,CAAC,UAAU,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,eAAe,EAAE;IAiCvE;;;;;OAKG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IA6BvD;;;;;;;OAOG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAO3C;;;;OAIG;IACH,cAAc,IAAI;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;KACxB;IA6BD;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,SAAS,IAAI,MAAM;CAGpB"}
|