cccmemory 1.8.1 → 1.9.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 (76) hide show
  1. package/README.md +36 -17
  2. package/dist/ConversationMemory.d.ts +1 -1
  3. package/dist/ConversationMemory.d.ts.map +1 -1
  4. package/dist/ConversationMemory.js +57 -14
  5. package/dist/ConversationMemory.js.map +1 -1
  6. package/dist/cli/help.js +2 -2
  7. package/dist/documentation/CodeAnalyzer.d.ts +7 -17
  8. package/dist/documentation/CodeAnalyzer.d.ts.map +1 -1
  9. package/dist/documentation/CodeAnalyzer.js +73 -83
  10. package/dist/documentation/CodeAnalyzer.js.map +1 -1
  11. package/dist/documentation/ConversationAnalyzer.d.ts.map +1 -1
  12. package/dist/documentation/ConversationAnalyzer.js +68 -25
  13. package/dist/documentation/ConversationAnalyzer.js.map +1 -1
  14. package/dist/documentation/DocumentationGenerator.d.ts +1 -3
  15. package/dist/documentation/DocumentationGenerator.d.ts.map +1 -1
  16. package/dist/documentation/DocumentationGenerator.js +2 -3
  17. package/dist/documentation/DocumentationGenerator.js.map +1 -1
  18. package/dist/documentation/MarkdownFormatter.js +1 -1
  19. package/dist/documentation/types.d.ts +0 -27
  20. package/dist/documentation/types.d.ts.map +1 -1
  21. package/dist/embeddings/VectorStore.d.ts +11 -7
  22. package/dist/embeddings/VectorStore.d.ts.map +1 -1
  23. package/dist/embeddings/VectorStore.js +36 -8
  24. package/dist/embeddings/VectorStore.js.map +1 -1
  25. package/dist/index.js +0 -0
  26. package/dist/mcp-server.d.ts.map +1 -1
  27. package/dist/mcp-server.js +2 -0
  28. package/dist/mcp-server.js.map +1 -1
  29. package/dist/parsers/CodexConversationParser.d.ts +3 -0
  30. package/dist/parsers/CodexConversationParser.d.ts.map +1 -1
  31. package/dist/parsers/CodexConversationParser.js +39 -2
  32. package/dist/parsers/CodexConversationParser.js.map +1 -1
  33. package/dist/parsers/ConversationParser.d.ts.map +1 -1
  34. package/dist/parsers/ConversationParser.js +36 -5
  35. package/dist/parsers/ConversationParser.js.map +1 -1
  36. package/dist/realtime/IncrementalParser.d.ts.map +1 -1
  37. package/dist/realtime/IncrementalParser.js +9 -5
  38. package/dist/realtime/IncrementalParser.js.map +1 -1
  39. package/dist/search/SemanticSearch.d.ts +16 -3
  40. package/dist/search/SemanticSearch.d.ts.map +1 -1
  41. package/dist/search/SemanticSearch.js +345 -153
  42. package/dist/search/SemanticSearch.js.map +1 -1
  43. package/dist/storage/ConversationStorage.d.ts +39 -12
  44. package/dist/storage/ConversationStorage.d.ts.map +1 -1
  45. package/dist/storage/ConversationStorage.js +392 -118
  46. package/dist/storage/ConversationStorage.js.map +1 -1
  47. package/dist/storage/GlobalIndex.d.ts +13 -92
  48. package/dist/storage/GlobalIndex.d.ts.map +1 -1
  49. package/dist/storage/GlobalIndex.js +171 -254
  50. package/dist/storage/GlobalIndex.js.map +1 -1
  51. package/dist/storage/SQLiteManager.d.ts +4 -3
  52. package/dist/storage/SQLiteManager.d.ts.map +1 -1
  53. package/dist/storage/SQLiteManager.js +113 -134
  54. package/dist/storage/SQLiteManager.js.map +1 -1
  55. package/dist/storage/migrations.d.ts +1 -1
  56. package/dist/storage/migrations.d.ts.map +1 -1
  57. package/dist/storage/migrations.js +3 -149
  58. package/dist/storage/migrations.js.map +1 -1
  59. package/dist/storage/schema.sql +159 -138
  60. package/dist/tools/ToolDefinitions.d.ts +79 -0
  61. package/dist/tools/ToolDefinitions.d.ts.map +1 -1
  62. package/dist/tools/ToolDefinitions.js +89 -12
  63. package/dist/tools/ToolDefinitions.js.map +1 -1
  64. package/dist/tools/ToolHandlers.d.ts +13 -8
  65. package/dist/tools/ToolHandlers.d.ts.map +1 -1
  66. package/dist/tools/ToolHandlers.js +619 -538
  67. package/dist/tools/ToolHandlers.js.map +1 -1
  68. package/dist/types/ToolTypes.d.ts +86 -12
  69. package/dist/types/ToolTypes.d.ts.map +1 -1
  70. package/dist/utils/ProjectMigration.d.ts +12 -13
  71. package/dist/utils/ProjectMigration.d.ts.map +1 -1
  72. package/dist/utils/ProjectMigration.js +186 -203
  73. package/dist/utils/ProjectMigration.js.map +1 -1
  74. package/package.json +8 -4
  75. package/scripts/check-node.js +3 -4
  76. package/scripts/mcp-smoke-test.js +249 -0
package/README.md CHANGED
@@ -165,23 +165,30 @@ Open Codex and run `/mcp` in the TUI to verify the server is active.
165
165
 
166
166
  ### Storage Paths
167
167
 
168
- By default, CCCMemory stores per-project databases in:
168
+ By default, CCCMemory uses a **single database**:
169
+
170
+ - `~/.cccmemory.db`
171
+
172
+ If you want per-project isolation, set:
173
+
174
+ ```bash
175
+ export CCCMEMORY_DB_MODE="per-project"
176
+ ```
177
+
178
+ In per-project mode, CCCMemory stores:
169
179
 
170
180
  - `~/.claude/projects/<project>/.cccmemory.db`
171
- - Global index: `~/.claude/.cccmemory-global.db`
181
+ - Fallback (restricted sandboxes): `<project>/.cccmemory/.cccmemory.db`
172
182
 
173
183
  If your home directory is not writable (common in sandboxed Codex/Claude setups where
174
- `~/.claude` and `~/.codex` are locked), the server will exit with a clear error.
175
- Set explicit paths to a writable location:
184
+ `~/.claude` and `~/.codex` are locked), set an explicit writable path:
176
185
 
177
186
  ```bash
178
187
  export CCCMEMORY_DB_PATH="/path/to/cccmemory.db"
179
- export CCCMEMORY_GLOBAL_INDEX_PATH="/path/to/cccmemory-global.db"
180
188
  ```
181
189
 
182
- For MCP configs, add these env vars in your server definition. CCCMemory will not
183
- silently create new databases outside `~/.claude`; it only uses an existing
184
- project-local DB if one already exists and logs a warning.
190
+ For MCP configs, add these env vars in your server definition. CCCMemory stores the
191
+ global project registry **inside the same database** (projects + project_sources tables).
185
192
 
186
193
  ### Embedding Configuration (Optional)
187
194
 
@@ -254,6 +261,7 @@ Set `OPENAI_API_KEY` environment variable.
254
261
  | Tool | Description |
255
262
  |------|-------------|
256
263
  | `search_conversations` | Search messages in current project |
264
+ | `search_project_conversations` | Search a project across Claude Code + Codex |
257
265
  | `search_all_conversations` | Search across all indexed projects |
258
266
  | `get_decisions` | Find architectural decisions |
259
267
  | `get_all_decisions` | Decisions across all projects |
@@ -268,6 +276,7 @@ Set `OPENAI_API_KEY` environment variable.
268
276
  | `get_file_evolution` | See file history with commits |
269
277
  | `search_by_file` | Find all context related to a file |
270
278
  | `list_recent_sessions` | List recent sessions with summaries |
279
+ | `get_latest_session_summary` | Summarize the latest session (problem, actions, errors) |
271
280
  | `recall_and_apply` | Recall past work for current task |
272
281
  | `get_requirements` | Look up component requirements |
273
282
  | `get_tool_history` | Query tool usage history |
@@ -279,7 +288,16 @@ Set `OPENAI_API_KEY` environment variable.
279
288
  | `discover_old_conversations` | Find folders from renamed projects |
280
289
  | `migrate_project` | Migrate/merge conversation history |
281
290
  | `forget_by_topic` | Delete conversations by keyword |
282
- | `generate_documentation` | Generate docs from conversations |
291
+ | `generate_documentation` | Generate docs from local code scan + conversations |
292
+
293
+ ### Session IDs
294
+
295
+ `list_recent_sessions` returns **two identifiers**:
296
+
297
+ - `id`: internal conversation id (use for `scope="current"` filters, handoffs, and documentation filters)
298
+ - `session_id`: external session id (Claude JSONL filename / Codex rollout id). Use for `index_conversations` and CLI `index --session`.
299
+
300
+ `index_conversations` accepts either, but external `session_id` is preferred.
283
301
 
284
302
  ## CLI Usage
285
303
 
@@ -310,14 +328,15 @@ CCCMemory indexes local session history from stable, parseable on-disk formats.
310
328
  ## Architecture
311
329
 
312
330
  ```
313
- Per-Project Databases (isolation)
314
- ├── ~/.claude/projects/{project}/.cccmemory.db (Claude Code default)
315
- ├── ~/.codex/.cccmemory.db (Codex default)
316
- └── {project}/.cccmemory/.cccmemory.db (fallback in restricted sandboxes)
317
-
318
- Global Registry (cross-project search)
319
- ├── ~/.claude/.cccmemory-global.db (default)
320
- └── {project}/.cccmemory/global-index.db (fallback in restricted sandboxes)
331
+ Single Database (default)
332
+ └── ~/.cccmemory.db
333
+ ├── projects + project_aliases
334
+ ├── project_sources (global index)
335
+ └── conversations/messages/decisions/mistakes/...
336
+
337
+ Per-Project Databases (optional)
338
+ └── ~/.claude/projects/{project}/.cccmemory.db
339
+ └── {project}/.cccmemory/.cccmemory.db (sandbox fallback)
321
340
  ```
322
341
 
323
342
  ## Troubleshooting
@@ -46,7 +46,7 @@ export interface IndexOptions {
46
46
  /**
47
47
  * List of specific MCP server names to exclude.
48
48
  * More granular than `excludeMcpConversations`.
49
- * @example ['cccmemory', 'code-graph-rag']
49
+ * @example ['cccmemory', 'filesystem']
50
50
  */
51
51
  excludeMcpServers?: string[];
52
52
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationMemory.d.ts","sourceRoot":"","sources":["../src/ConversationMemory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAMvE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IAEpB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IAE5D;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,cAAc,CAAiB;;IAiBvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACG,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;QACvD,oBAAoB,EAAE,OAAO,CAAC;QAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IAiIF;;;;;;;;;;;;;;;;OAgBG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW;IAI9C;;;;;;;;;;;;;;;;;OAiBG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW;IAIvD;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM;;;;;;IAIhC;;;;;;;;;;;OAWG;IACH,QAAQ;;;;;;;;;;;;;;;;;IAIR;;;;;;;OAOG;IACH,UAAU;IAIV;;;;;OAKG;IACH,iBAAiB;IAIjB;;;;;;;;;OASG;IACH,OAAO,CAAC,sBAAsB;CA6E/B"}
1
+ {"version":3,"file":"ConversationMemory.d.ts","sourceRoot":"","sources":["../src/ConversationMemory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAMvE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IAEpB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IAE5D;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,cAAc,CAAiB;;IAiBvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACG,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;QACvD,oBAAoB,EAAE,OAAO,CAAC;QAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IAyLF;;;;;;;;;;;;;;;;OAgBG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW;IAI9C;;;;;;;;;;;;;;;;;OAiBG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW;IAIvD;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM;;;;;;IAIhC;;;;;;;;;;;OAWG;IACH,QAAQ;;;;;;;;;;;;;;;;;IAIR;;;;;;;OAOG;IACH,UAAU;IAIV;;;;;OAKG;IACH,iBAAiB;IAIjB;;;;;;;;;OASG;IACH,OAAO,CAAC,sBAAsB;CA6E/B"}
@@ -106,38 +106,46 @@ export class ConversationMemory {
106
106
  parseResult = this.filterMcpConversations(parseResult, options);
107
107
  }
108
108
  // Store basic entities (skip FTS rebuild for performance, will rebuild once at end)
109
- await this.storage.storeConversations(parseResult.conversations);
110
- await this.storage.storeMessages(parseResult.messages, true);
111
- await this.storage.storeToolUses(parseResult.tool_uses);
112
- await this.storage.storeToolResults(parseResult.tool_results);
113
- await this.storage.storeFileEdits(parseResult.file_edits);
109
+ const conversationIdMap = await this.storage.storeConversations(parseResult.conversations);
110
+ const messageIdMap = await this.storage.storeMessages(parseResult.messages, {
111
+ skipFtsRebuild: true,
112
+ conversationIdMap,
113
+ });
114
+ const toolUseIdMap = await this.storage.storeToolUses(parseResult.tool_uses, messageIdMap);
115
+ await this.storage.storeToolResults(parseResult.tool_results, messageIdMap, toolUseIdMap);
116
+ await this.storage.storeFileEdits(parseResult.file_edits, conversationIdMap, messageIdMap);
114
117
  // Only store thinking blocks if explicitly enabled (default: false for privacy)
115
118
  if (options.includeThinking === true) {
116
- await this.storage.storeThinkingBlocks(parseResult.thinking_blocks);
119
+ await this.storage.storeThinkingBlocks(parseResult.thinking_blocks, messageIdMap);
117
120
  }
118
121
  // Extract decisions
119
122
  console.error("\n=== Extracting Decisions ===");
120
123
  const decisions = this.decisionExtractor.extractDecisions(parseResult.messages, parseResult.thinking_blocks);
121
- await this.storage.storeDecisions(decisions, true);
124
+ const decisionIdMap = await this.storage.storeDecisions(decisions, {
125
+ skipFtsRebuild: true,
126
+ conversationIdMap,
127
+ messageIdMap,
128
+ });
122
129
  // Rebuild FTS indexes once after all data is stored
123
130
  this.storage.rebuildAllFts();
124
131
  // Extract mistakes
125
132
  console.error("\n=== Extracting Mistakes ===");
126
133
  const mistakes = this.mistakeExtractor.extractMistakes(parseResult.messages, parseResult.tool_results);
127
- await this.storage.storeMistakes(mistakes);
134
+ const mistakeIdMap = await this.storage.storeMistakes(mistakes, conversationIdMap, messageIdMap);
128
135
  // Extract requirements and validations
129
136
  console.error("\n=== Extracting Requirements ===");
130
137
  const requirements = this.requirementsExtractor.extractRequirements(parseResult.messages);
131
- await this.storage.storeRequirements(requirements);
138
+ await this.storage.storeRequirements(requirements, conversationIdMap, messageIdMap);
132
139
  const validations = this.requirementsExtractor.extractValidations(parseResult.tool_uses, parseResult.tool_results, parseResult.messages);
133
- await this.storage.storeValidations(validations);
140
+ await this.storage.storeValidations(validations, conversationIdMap);
134
141
  // Git integration
135
142
  if (options.enableGitIntegration !== false) {
136
143
  try {
137
144
  console.error("\n=== Integrating Git History ===");
138
145
  const gitIntegrator = new GitIntegrator(canonicalPath);
139
146
  const commits = await gitIntegrator.linkCommitsToConversations(parseResult.conversations, parseResult.file_edits, decisions);
140
- await this.storage.storeGitCommits(commits);
147
+ const projectId = this.storage.getProjectId(canonicalPath);
148
+ await this.storage.storeGitCommits(commits, projectId, conversationIdMap, messageIdMap);
141
149
  console.error(`✓ Linked ${commits.length} git commits`);
142
150
  }
143
151
  catch (error) {
@@ -150,9 +158,44 @@ export class ConversationMemory {
150
158
  console.error("\n=== Indexing for Semantic Search ===");
151
159
  let embeddingError;
152
160
  try {
153
- await this.semanticSearch.indexMessages(parseResult.messages);
154
- await this.semanticSearch.indexDecisions(decisions);
155
- await this.semanticSearch.indexMistakes(mistakes);
161
+ const messagesForEmbedding = parseResult.messages
162
+ .map((msg) => {
163
+ const internalId = messageIdMap.get(msg.id);
164
+ if (!internalId || !msg.content) {
165
+ return null;
166
+ }
167
+ return { id: internalId, content: msg.content };
168
+ })
169
+ .filter((msg) => Boolean(msg));
170
+ const decisionsForEmbedding = [];
171
+ for (const decision of decisions) {
172
+ const internalId = decisionIdMap.get(decision.id);
173
+ if (!internalId) {
174
+ continue;
175
+ }
176
+ decisionsForEmbedding.push({
177
+ id: internalId,
178
+ decision_text: decision.decision_text,
179
+ rationale: decision.rationale,
180
+ context: decision.context ?? null,
181
+ });
182
+ }
183
+ const mistakesForEmbedding = [];
184
+ for (const mistake of mistakes) {
185
+ const internalId = mistakeIdMap.get(mistake.id);
186
+ if (!internalId) {
187
+ continue;
188
+ }
189
+ mistakesForEmbedding.push({
190
+ id: internalId,
191
+ what_went_wrong: mistake.what_went_wrong,
192
+ correction: mistake.correction ?? null,
193
+ mistake_type: mistake.mistake_type,
194
+ });
195
+ }
196
+ await this.semanticSearch.indexMessages(messagesForEmbedding);
197
+ await this.semanticSearch.indexDecisions(decisionsForEmbedding);
198
+ await this.semanticSearch.indexMistakes(mistakesForEmbedding);
156
199
  // Also index any decisions/mistakes in DB that are missing embeddings
157
200
  // (catches items created before embeddings were available)
158
201
  await this.semanticSearch.indexMissingDecisionEmbeddings();
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationMemory.js","sourceRoot":"","sources":["../src/ConversationMemory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConversationMemory.js","sourceRoot":"","sources":["../src/ConversationMemory.ts"],"names":[],"mappings":"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"}
package/dist/cli/help.js CHANGED
@@ -121,7 +121,7 @@ ${chalk.bold("DESCRIPTION:")}
121
121
 
122
122
  ${chalk.bold("OPTIONS:")}
123
123
  --project <path> Project path (default: current directory)
124
- --session <id> Index specific session only
124
+ --session <id> Index specific session only (use list_recent_sessions.session_id)
125
125
  --exclude-mcp Exclude MCP conversations
126
126
  --include-mcp Include all MCP conversations
127
127
  --no-git Disable git integration
@@ -131,7 +131,7 @@ ${chalk.bold("EXAMPLES:")}
131
131
  index
132
132
  index --exclude-mcp
133
133
  index --project /path/to/project
134
- index --session abc123
134
+ index --session a1172af3-ca62-41be-9b90-701cef39daae
135
135
 
136
136
  ${chalk.bold("ALIASES:")}
137
137
  None
@@ -1,26 +1,16 @@
1
1
  /**
2
- * CodeAnalyzer - Processes code graph data from CODE-GRAPH-RAG-MCP
2
+ * CodeAnalyzer - Lightweight codebase analyzer for documentation.
3
3
  *
4
- * Note: This class processes data that should be fetched from CODE-GRAPH-RAG-MCP
5
- * The actual MCP calls should be made by the tool handler and passed to this analyzer
4
+ * Scans the local filesystem to build a basic code index without
5
+ * relying on external MCP services.
6
6
  */
7
- import type { CodeData, RawEntity, RawHotspot, RawClone } from './types.js';
8
- export interface CodeGraphRagData {
9
- entities?: RawEntity[];
10
- hotspots?: RawHotspot[];
11
- clones?: RawClone[];
12
- graph?: Record<string, unknown>;
13
- }
7
+ import type { CodeData } from './types.js';
14
8
  export declare class CodeAnalyzer {
15
9
  /**
16
- * Process code graph data from CODE-GRAPH-RAG-MCP
10
+ * Scan a project directory and return lightweight code metadata.
17
11
  */
18
- analyze(codeGraphData: CodeGraphRagData): Promise<CodeData>;
19
- private parseEntities;
20
- private normalizeEntityType;
21
- private groupEntitiesByFile;
22
- private parseHotspots;
23
- private parseClones;
12
+ analyze(projectPath: string, moduleFilter?: string): Promise<CodeData>;
13
+ private collectFiles;
24
14
  /**
25
15
  * Extract file paths from code data for cross-referencing
26
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"CodeAnalyzer.d.ts","sourceRoot":"","sources":["../../src/documentation/CodeAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,QAAQ,EAKR,SAAS,EACT,UAAU,EACV,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,qBAAa,YAAY;IACvB;;OAEG;IACG,OAAO,CAAC,aAAa,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmBjE,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,WAAW;IAYnB;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE;CAqB/C"}
1
+ {"version":3,"file":"CodeAnalyzer.d.ts","sourceRoot":"","sources":["../../src/documentation/CodeAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,QAAQ,EAKT,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAY;IACvB;;OAEG;IACG,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAyB5E,OAAO,CAAC,YAAY;IAiEpB;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE;CAqB/C"}
@@ -1,101 +1,91 @@
1
1
  /**
2
- * CodeAnalyzer - Processes code graph data from CODE-GRAPH-RAG-MCP
2
+ * CodeAnalyzer - Lightweight codebase analyzer for documentation.
3
3
  *
4
- * Note: This class processes data that should be fetched from CODE-GRAPH-RAG-MCP
5
- * The actual MCP calls should be made by the tool handler and passed to this analyzer
4
+ * Scans the local filesystem to build a basic code index without
5
+ * relying on external MCP services.
6
6
  */
7
+ import { readdirSync, statSync } from 'fs';
8
+ import { join, relative } from 'path';
7
9
  export class CodeAnalyzer {
8
10
  /**
9
- * Process code graph data from CODE-GRAPH-RAG-MCP
11
+ * Scan a project directory and return lightweight code metadata.
10
12
  */
11
- async analyze(codeGraphData) {
12
- console.error('🔍 Processing codebase structure...');
13
- const entities = this.parseEntities(codeGraphData.entities || []);
14
- const files = this.groupEntitiesByFile(entities);
15
- const hotspots = this.parseHotspots(codeGraphData.hotspots || []);
16
- const clones = this.parseClones(codeGraphData.clones || []);
17
- console.error(` Found ${entities.length} entities in ${files.length} files`);
13
+ async analyze(projectPath, moduleFilter) {
14
+ console.error('🔍 Scanning codebase structure...');
15
+ const files = this.collectFiles(projectPath, moduleFilter);
16
+ const fileInfos = files.map((file) => ({
17
+ path: file.relativePath,
18
+ size: file.size,
19
+ entities: [],
20
+ }));
21
+ const entities = [];
22
+ const hotspots = [];
23
+ const clones = [];
24
+ console.error(` Found ${fileInfos.length} files`);
18
25
  return {
19
26
  entities,
20
27
  relationships: [],
21
- files,
28
+ files: fileInfos,
22
29
  hotspots,
23
- clones
30
+ clones,
24
31
  };
25
32
  }
26
- parseEntities(rawEntities) {
27
- if (!Array.isArray(rawEntities)) {
28
- return [];
29
- }
30
- return rawEntities.map(entity => ({
31
- id: entity.id || entity.name || '',
32
- name: entity.name || '',
33
- type: this.normalizeEntityType(entity.type || ''),
34
- filePath: entity.filePath || entity.file || '',
35
- lineNumber: entity.lineNumber || entity.line,
36
- complexity: entity.complexity,
37
- description: entity.description
38
- })).filter(e => e.id && e.name);
39
- }
40
- normalizeEntityType(type) {
41
- const normalized = (type || '').toLowerCase();
42
- if (normalized.includes('class')) {
43
- return 'class';
44
- }
45
- if (normalized.includes('function') || normalized.includes('method')) {
46
- return 'function';
47
- }
48
- if (normalized.includes('interface')) {
49
- return 'interface';
50
- }
51
- if (normalized.includes('module')) {
52
- return 'module';
53
- }
54
- if (normalized.includes('component')) {
55
- return 'component';
56
- }
57
- return 'function';
58
- }
59
- groupEntitiesByFile(entities) {
60
- const fileMap = new Map();
61
- for (const entity of entities) {
62
- if (!entity.filePath) {
63
- continue;
33
+ collectFiles(projectPath, moduleFilter) {
34
+ const ignoreDirs = new Set([
35
+ 'node_modules',
36
+ '.git',
37
+ '.turbo',
38
+ '.next',
39
+ 'dist',
40
+ 'build',
41
+ 'coverage',
42
+ '.cache',
43
+ '.cccmemory',
44
+ ]);
45
+ const includeExts = new Set([
46
+ '.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs',
47
+ '.py', '.go', '.rs', '.java', '.kt', '.swift',
48
+ '.c', '.cpp', '.h', '.hpp', '.cs', '.json', '.md'
49
+ ]);
50
+ const results = [];
51
+ const walk = (dir) => {
52
+ let entries;
53
+ try {
54
+ entries = readdirSync(dir);
64
55
  }
65
- if (!fileMap.has(entity.filePath)) {
66
- fileMap.set(entity.filePath, []);
56
+ catch (_error) {
57
+ return;
67
58
  }
68
- const fileEntities = fileMap.get(entity.filePath);
69
- if (fileEntities) {
70
- fileEntities.push(entity);
59
+ for (const entry of entries) {
60
+ const fullPath = join(dir, entry);
61
+ let stats;
62
+ try {
63
+ stats = statSync(fullPath);
64
+ }
65
+ catch (_error) {
66
+ continue;
67
+ }
68
+ if (stats.isDirectory()) {
69
+ if (ignoreDirs.has(entry)) {
70
+ continue;
71
+ }
72
+ walk(fullPath);
73
+ continue;
74
+ }
75
+ const relativePath = relative(projectPath, fullPath).replace(/\\/g, '/');
76
+ if (moduleFilter && !relativePath.includes(moduleFilter)) {
77
+ continue;
78
+ }
79
+ const extIndex = entry.lastIndexOf('.');
80
+ const ext = extIndex >= 0 ? entry.slice(extIndex) : '';
81
+ if (!includeExts.has(ext)) {
82
+ continue;
83
+ }
84
+ results.push({ relativePath, size: stats.size });
71
85
  }
72
- }
73
- return Array.from(fileMap.entries()).map(([path, entities]) => ({
74
- path,
75
- size: 0, // Would need to read file to get actual size
76
- entities
77
- }));
78
- }
79
- parseHotspots(rawHotspots) {
80
- if (!Array.isArray(rawHotspots)) {
81
- return [];
82
- }
83
- return rawHotspots.map(h => ({
84
- filePath: h.filePath || h.file || h.path || '',
85
- complexity: h.complexity || h.score || 0,
86
- changeCount: h.changeCount || h.changes || 0,
87
- metric: h.metric || 'complexity'
88
- })).filter(h => h.filePath);
89
- }
90
- parseClones(rawClones) {
91
- if (!Array.isArray(rawClones)) {
92
- return [];
93
- }
94
- return rawClones.map(c => ({
95
- files: Array.isArray(c.files) ? c.files : [],
96
- similarity: c.similarity || c.score || 0,
97
- description: c.description || 'Code duplication detected'
98
- })).filter(c => c.files.length >= 2);
86
+ };
87
+ walk(projectPath);
88
+ return results;
99
89
  }
100
90
  /**
101
91
  * Extract file paths from code data for cross-referencing
@@ -1 +1 @@
1
- {"version":3,"file":"CodeAnalyzer.js","sourceRoot":"","sources":["../../src/documentation/CodeAnalyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CodeAnalyzer.js","sourceRoot":"","sources":["../../src/documentation/CodeAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAStC,MAAM,OAAO,YAAY;IACvB;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,WAAmB,EAAE,YAAqB;QACtD,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAEnD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAe,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjD,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC,CAAC;QAEJ,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAgB,EAAE,CAAC;QAE/B,OAAO,CAAC,KAAK,CAAC,WAAW,SAAS,CAAC,MAAM,QAAQ,CAAC,CAAC;QAEnD,OAAO;YACL,QAAQ;YACR,aAAa,EAAE,EAAE;YACjB,KAAK,EAAE,SAAS;YAChB,QAAQ;YACR,MAAM;SACP,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,WAAmB,EAAE,YAAqB;QAC7D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;YACzB,cAAc;YACd,MAAM;YACN,QAAQ;YACR,OAAO;YACP,MAAM;YACN,OAAO;YACP,UAAU;YACV,QAAQ;YACR,YAAY;SACb,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;YAC1B,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YAC5C,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ;YAC7C,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;SAClD,CAAC,CAAC;QAEH,MAAM,OAAO,GAAkD,EAAE,CAAC;QAElE,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;YAC3B,IAAI,OAAiB,CAAC;YACtB,IAAI,CAAC;gBACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAClC,IAAI,KAAK,CAAC;gBACV,IAAI,CAAC;oBACH,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC7B,CAAC;gBAAC,OAAO,MAAM,EAAE,CAAC;oBAChB,SAAS;gBACX,CAAC;gBAED,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC1B,SAAS;oBACX,CAAC;oBACD,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACf,SAAS;gBACX,CAAC;gBAED,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACzE,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;oBACzD,SAAS;gBACX,CAAC;gBAED,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACxC,MAAM,GAAG,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1B,SAAS;gBACX,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,CAAC;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,QAAkB;QACjC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAEhC,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAAA,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAAA,CAAC;QACpD,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACxC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationAnalyzer.d.ts","sourceRoot":"","sources":["../../src/documentation/ConversationAnalyzer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAuD,MAAM,YAAY,CAAC;AAIxG,qBAAa,oBAAoB;IACnB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,aAAa;IAErC;;OAEG;IACG,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoBjF,OAAO,CAAC,YAAY;IAkCpB,OAAO,CAAC,WAAW;IAgCnB,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,YAAY;IA4BpB,OAAO,CAAC,aAAa;CA4BtB"}
1
+ {"version":3,"file":"ConversationAnalyzer.d.ts","sourceRoot":"","sources":["../../src/documentation/ConversationAnalyzer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAuD,MAAM,YAAY,CAAC;AAIxG,qBAAa,oBAAoB;IACnB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,aAAa;IAErC;;OAEG;IACG,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoBjF,OAAO,CAAC,YAAY;IAsDpB,OAAO,CAAC,WAAW;IAwCnB,OAAO,CAAC,eAAe;IAmCvB,OAAO,CAAC,YAAY;IAgCpB,OAAO,CAAC,aAAa;CAkCtB"}