@mcp-graph-workflow/mcp-graph 5.2.0 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/dist/api/router.d.ts +0 -1
  2. package/dist/api/router.d.ts.map +1 -1
  3. package/dist/api/router.js +3 -4
  4. package/dist/api/router.js.map +1 -1
  5. package/dist/api/routes/benchmark.d.ts.map +1 -1
  6. package/dist/api/routes/benchmark.js +47 -2
  7. package/dist/api/routes/benchmark.js.map +1 -1
  8. package/dist/api/routes/code-graph.d.ts +12 -0
  9. package/dist/api/routes/code-graph.d.ts.map +1 -0
  10. package/dist/api/routes/code-graph.js +154 -0
  11. package/dist/api/routes/code-graph.js.map +1 -0
  12. package/dist/api/routes/folder.d.ts +1 -4
  13. package/dist/api/routes/folder.d.ts.map +1 -1
  14. package/dist/api/routes/folder.js +19 -17
  15. package/dist/api/routes/folder.js.map +1 -1
  16. package/dist/api/routes/integrations.d.ts.map +1 -1
  17. package/dist/api/routes/integrations.js +60 -16
  18. package/dist/api/routes/integrations.js.map +1 -1
  19. package/dist/api/routes/knowledge.js +1 -1
  20. package/dist/api/routes/knowledge.js.map +1 -1
  21. package/dist/api/routes/skills.d.ts.map +1 -1
  22. package/dist/api/routes/skills.js +57 -3
  23. package/dist/api/routes/skills.js.map +1 -1
  24. package/dist/cli/commands/index-cmd.js +5 -5
  25. package/dist/cli/commands/index-cmd.js.map +1 -1
  26. package/dist/core/code/code-indexer.d.ts +20 -0
  27. package/dist/core/code/code-indexer.d.ts.map +1 -0
  28. package/dist/core/code/code-indexer.js +161 -0
  29. package/dist/core/code/code-indexer.js.map +1 -0
  30. package/dist/core/code/code-search.d.ts +16 -0
  31. package/dist/core/code/code-search.d.ts.map +1 -0
  32. package/dist/core/code/code-search.js +77 -0
  33. package/dist/core/code/code-search.js.map +1 -0
  34. package/dist/core/code/code-store.d.ts +35 -0
  35. package/dist/core/code/code-store.d.ts.map +1 -0
  36. package/dist/core/code/code-store.js +228 -0
  37. package/dist/core/code/code-store.js.map +1 -0
  38. package/dist/core/code/code-types.d.ts +209 -0
  39. package/dist/core/code/code-types.d.ts.map +1 -0
  40. package/dist/core/code/code-types.js +94 -0
  41. package/dist/core/code/code-types.js.map +1 -0
  42. package/dist/core/code/graph-traversal.d.ts +27 -0
  43. package/dist/core/code/graph-traversal.d.ts.map +1 -0
  44. package/dist/core/code/graph-traversal.js +122 -0
  45. package/dist/core/code/graph-traversal.js.map +1 -0
  46. package/dist/core/code/process-detector.d.ts +11 -0
  47. package/dist/core/code/process-detector.d.ts.map +1 -0
  48. package/dist/core/code/process-detector.js +65 -0
  49. package/dist/core/code/process-detector.js.map +1 -0
  50. package/dist/core/code/ts-analyzer.d.ts +12 -0
  51. package/dist/core/code/ts-analyzer.d.ts.map +1 -0
  52. package/dist/core/code/ts-analyzer.js +331 -0
  53. package/dist/core/code/ts-analyzer.js.map +1 -0
  54. package/dist/core/config/ai-memory-generator.d.ts.map +1 -1
  55. package/dist/core/config/ai-memory-generator.js +149 -61
  56. package/dist/core/config/ai-memory-generator.js.map +1 -1
  57. package/dist/core/config/config-loader.d.ts.map +1 -1
  58. package/dist/core/config/config-loader.js +2 -10
  59. package/dist/core/config/config-loader.js.map +1 -1
  60. package/dist/core/config/config-schema.d.ts +1 -2
  61. package/dist/core/config/config-schema.d.ts.map +1 -1
  62. package/dist/core/config/config-schema.js +2 -3
  63. package/dist/core/config/config-schema.js.map +1 -1
  64. package/dist/core/context/compact-context.d.ts +51 -0
  65. package/dist/core/context/compact-context.d.ts.map +1 -1
  66. package/dist/core/context/compact-context.js +292 -0
  67. package/dist/core/context/compact-context.js.map +1 -1
  68. package/dist/core/context/context-assembler.d.ts +1 -1
  69. package/dist/core/context/context-assembler.js +1 -1
  70. package/dist/core/doctor/doctor-checks.d.ts +1 -1
  71. package/dist/core/doctor/doctor-checks.js +21 -21
  72. package/dist/core/doctor/doctor-checks.js.map +1 -1
  73. package/dist/core/insights/bottleneck-detector.js +1 -1
  74. package/dist/core/insights/bottleneck-detector.js.map +1 -1
  75. package/dist/core/integrations/enriched-context.d.ts +10 -6
  76. package/dist/core/integrations/enriched-context.d.ts.map +1 -1
  77. package/dist/core/integrations/enriched-context.js +35 -35
  78. package/dist/core/integrations/enriched-context.js.map +1 -1
  79. package/dist/core/integrations/integration-orchestrator.js +2 -2
  80. package/dist/core/integrations/integration-orchestrator.js.map +1 -1
  81. package/dist/core/integrations/mcp-deps-installer.d.ts +1 -1
  82. package/dist/core/integrations/mcp-deps-installer.d.ts.map +1 -1
  83. package/dist/core/integrations/mcp-deps-installer.js +1 -60
  84. package/dist/core/integrations/mcp-deps-installer.js.map +1 -1
  85. package/dist/core/integrations/mcp-servers-config.d.ts +1 -1
  86. package/dist/core/integrations/mcp-servers-config.d.ts.map +1 -1
  87. package/dist/core/integrations/mcp-servers-config.js +0 -17
  88. package/dist/core/integrations/mcp-servers-config.js.map +1 -1
  89. package/dist/core/integrations/tool-status.d.ts +8 -3
  90. package/dist/core/integrations/tool-status.d.ts.map +1 -1
  91. package/dist/core/integrations/tool-status.js +38 -48
  92. package/dist/core/integrations/tool-status.js.map +1 -1
  93. package/dist/core/memory/memory-migrator.d.ts +15 -0
  94. package/dist/core/memory/memory-migrator.d.ts.map +1 -0
  95. package/dist/core/memory/memory-migrator.js +64 -0
  96. package/dist/core/memory/memory-migrator.js.map +1 -0
  97. package/dist/core/memory/memory-reader.d.ts +30 -0
  98. package/dist/core/memory/memory-reader.d.ts.map +1 -0
  99. package/dist/core/memory/memory-reader.js +106 -0
  100. package/dist/core/memory/memory-reader.js.map +1 -0
  101. package/dist/core/planner/lifecycle-phase.d.ts +1 -0
  102. package/dist/core/planner/lifecycle-phase.d.ts.map +1 -1
  103. package/dist/core/planner/lifecycle-phase.js +11 -8
  104. package/dist/core/planner/lifecycle-phase.js.map +1 -1
  105. package/dist/core/rag/memory-indexer.d.ts +16 -0
  106. package/dist/core/rag/memory-indexer.d.ts.map +1 -0
  107. package/dist/core/rag/{serena-indexer.js → memory-indexer.js} +12 -12
  108. package/dist/core/rag/memory-indexer.js.map +1 -0
  109. package/dist/core/rag/{serena-rag-query.d.ts → memory-rag-query.d.ts} +11 -9
  110. package/dist/core/rag/memory-rag-query.d.ts.map +1 -0
  111. package/dist/core/rag/{serena-rag-query.js → memory-rag-query.js} +18 -15
  112. package/dist/core/rag/memory-rag-query.js.map +1 -0
  113. package/dist/core/rag/skill-indexer.d.ts +16 -0
  114. package/dist/core/rag/skill-indexer.d.ts.map +1 -0
  115. package/dist/core/rag/skill-indexer.js +98 -0
  116. package/dist/core/rag/skill-indexer.js.map +1 -0
  117. package/dist/core/skills/built-in-skills.d.ts +26 -0
  118. package/dist/core/skills/built-in-skills.d.ts.map +1 -0
  119. package/dist/core/skills/built-in-skills.js +203 -0
  120. package/dist/core/skills/built-in-skills.js.map +1 -0
  121. package/dist/core/store/knowledge-store.d.ts +1 -1
  122. package/dist/core/store/knowledge-store.js +1 -1
  123. package/dist/core/store/migrations.d.ts.map +1 -1
  124. package/dist/core/store/migrations.js +89 -0
  125. package/dist/core/store/migrations.js.map +1 -1
  126. package/dist/core/store/tool-token-store.d.ts +39 -0
  127. package/dist/core/store/tool-token-store.d.ts.map +1 -0
  128. package/dist/core/store/tool-token-store.js +79 -0
  129. package/dist/core/store/tool-token-store.js.map +1 -0
  130. package/dist/mcp/app-factory.d.ts +0 -1
  131. package/dist/mcp/app-factory.d.ts.map +1 -1
  132. package/dist/mcp/app-factory.js +2 -2
  133. package/dist/mcp/app-factory.js.map +1 -1
  134. package/dist/mcp/lifecycle-wrapper.d.ts +1 -0
  135. package/dist/mcp/lifecycle-wrapper.d.ts.map +1 -1
  136. package/dist/mcp/lifecycle-wrapper.js +21 -0
  137. package/dist/mcp/lifecycle-wrapper.js.map +1 -1
  138. package/dist/mcp/server.js +19 -14
  139. package/dist/mcp/server.js.map +1 -1
  140. package/dist/mcp/tools/index.d.ts.map +1 -1
  141. package/dist/mcp/tools/index.js +4 -0
  142. package/dist/mcp/tools/index.js.map +1 -1
  143. package/dist/mcp/tools/list-skills.d.ts +7 -0
  144. package/dist/mcp/tools/list-skills.d.ts.map +1 -0
  145. package/dist/mcp/tools/list-skills.js +68 -0
  146. package/dist/mcp/tools/list-skills.js.map +1 -0
  147. package/dist/mcp/tools/memory.d.ts +8 -0
  148. package/dist/mcp/tools/memory.d.ts.map +1 -0
  149. package/dist/mcp/tools/memory.js +106 -0
  150. package/dist/mcp/tools/memory.js.map +1 -0
  151. package/dist/mcp/tools/reindex-knowledge.d.ts.map +1 -1
  152. package/dist/mcp/tools/reindex-knowledge.js +11 -7
  153. package/dist/mcp/tools/reindex-knowledge.js.map +1 -1
  154. package/dist/schemas/knowledge.schema.d.ts +4 -0
  155. package/dist/schemas/knowledge.schema.d.ts.map +1 -1
  156. package/dist/schemas/knowledge.schema.js +1 -1
  157. package/dist/schemas/knowledge.schema.js.map +1 -1
  158. package/dist/web/dashboard/dist/assets/benchmark-tab-B5Sr8Cah.js +1 -0
  159. package/dist/web/dashboard/dist/assets/constants-kpH_c6vY.js +1 -0
  160. package/dist/web/dashboard/dist/assets/gitnexus-tab-DqmbSdzV.js +430 -0
  161. package/dist/web/dashboard/dist/assets/graph-tab-BKns5HdW.js +1 -0
  162. package/dist/web/dashboard/dist/assets/graph-utils-BxUWNvsI.js +7 -0
  163. package/dist/web/dashboard/dist/assets/index-CZOiKbTP.js +53 -0
  164. package/dist/web/dashboard/dist/assets/index-Dd4vKyDX.js +17 -0
  165. package/dist/web/dashboard/dist/assets/index-xyMN-_UV.css +1 -0
  166. package/dist/web/dashboard/dist/assets/insights-tab-B1kPckBM.js +52 -0
  167. package/dist/web/dashboard/dist/assets/{logs-tab-Cxpcv_ni.js → logs-tab-BWfsrRlB.js} +1 -1
  168. package/dist/web/dashboard/dist/assets/memories-tab-D3zm-1Sq.js +1 -0
  169. package/dist/web/dashboard/dist/assets/prd-backlog-tab-DXP4dFP-.js +1 -0
  170. package/dist/web/dashboard/dist/assets/skills-tab-CAlVL80S.js +1 -0
  171. package/dist/web/dashboard/dist/index.html +2 -2
  172. package/package.json +2 -2
  173. package/dist/api/routes/gitnexus.d.ts +0 -12
  174. package/dist/api/routes/gitnexus.d.ts.map +0 -1
  175. package/dist/api/routes/gitnexus.js +0 -164
  176. package/dist/api/routes/gitnexus.js.map +0 -1
  177. package/dist/core/integrations/gitnexus-launcher.d.ts +0 -67
  178. package/dist/core/integrations/gitnexus-launcher.d.ts.map +0 -1
  179. package/dist/core/integrations/gitnexus-launcher.js +0 -268
  180. package/dist/core/integrations/gitnexus-launcher.js.map +0 -1
  181. package/dist/core/integrations/gitnexus-queries.d.ts +0 -55
  182. package/dist/core/integrations/gitnexus-queries.d.ts.map +0 -1
  183. package/dist/core/integrations/gitnexus-queries.js +0 -168
  184. package/dist/core/integrations/gitnexus-queries.js.map +0 -1
  185. package/dist/core/integrations/serena-reader.d.ts +0 -18
  186. package/dist/core/integrations/serena-reader.d.ts.map +0 -1
  187. package/dist/core/integrations/serena-reader.js +0 -68
  188. package/dist/core/integrations/serena-reader.js.map +0 -1
  189. package/dist/core/rag/serena-indexer.d.ts +0 -16
  190. package/dist/core/rag/serena-indexer.d.ts.map +0 -1
  191. package/dist/core/rag/serena-indexer.js.map +0 -1
  192. package/dist/core/rag/serena-rag-query.d.ts.map +0 -1
  193. package/dist/core/rag/serena-rag-query.js.map +0 -1
  194. package/dist/web/dashboard/dist/assets/benchmark-tab-DE6hAHVG.js +0 -1
  195. package/dist/web/dashboard/dist/assets/constants-BIEJOBya.js +0 -1
  196. package/dist/web/dashboard/dist/assets/gitnexus-tab-DsBjJHx8.js +0 -312
  197. package/dist/web/dashboard/dist/assets/graph-tab-C09DzeZ_.js +0 -1
  198. package/dist/web/dashboard/dist/assets/graph-utils-D4LFspTf.js +0 -23
  199. package/dist/web/dashboard/dist/assets/index-B2fTJ4AS.js +0 -53
  200. package/dist/web/dashboard/dist/assets/index-CkqEqKiH.css +0 -1
  201. package/dist/web/dashboard/dist/assets/insights-tab-Bm7CDckb.js +0 -1
  202. package/dist/web/dashboard/dist/assets/prd-backlog-tab-X84Rj-IB.js +0 -1
  203. package/dist/web/dashboard/dist/assets/serena-tab-BunULNvw.js +0 -1
@@ -0,0 +1,228 @@
1
+ /**
2
+ * SQLite CRUD operations for code_symbols and code_relations tables.
3
+ * Uses the same Database instance from SqliteStore (shared DB).
4
+ */
5
+ import { generateId } from "../utils/id.js";
6
+ import { now } from "../utils/time.js";
7
+ // ── Mappers ──────────────────────────────────────────────
8
+ function rowToSymbol(row) {
9
+ return {
10
+ id: row.id,
11
+ projectId: row.project_id,
12
+ name: row.name,
13
+ kind: row.kind,
14
+ file: row.file,
15
+ startLine: row.start_line,
16
+ endLine: row.end_line,
17
+ exported: row.exported === 1,
18
+ modulePath: row.module_path,
19
+ signature: row.signature,
20
+ metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
21
+ indexedAt: row.indexed_at,
22
+ };
23
+ }
24
+ function rowToRelation(row) {
25
+ return {
26
+ id: row.id,
27
+ projectId: row.project_id,
28
+ fromSymbol: row.from_symbol,
29
+ toSymbol: row.to_symbol,
30
+ type: row.type,
31
+ file: row.file,
32
+ line: row.line,
33
+ metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
34
+ indexedAt: row.indexed_at,
35
+ };
36
+ }
37
+ function rowToMeta(row) {
38
+ return {
39
+ projectId: row.project_id,
40
+ lastIndexed: row.last_indexed,
41
+ fileCount: row.file_count,
42
+ symbolCount: row.symbol_count,
43
+ relationCount: row.relation_count,
44
+ gitHash: row.git_hash,
45
+ };
46
+ }
47
+ // ── CodeStore ────────────────────────────────────────────
48
+ export class CodeStore {
49
+ db;
50
+ constructor(db) {
51
+ this.db = db;
52
+ }
53
+ // ── Symbols ──────────────────────────────────────
54
+ insertSymbol(symbol) {
55
+ const id = generateId("csym");
56
+ const indexedAt = now();
57
+ this.db
58
+ .prepare(`INSERT INTO code_symbols (id, project_id, name, kind, file, start_line, end_line, exported, module_path, signature, metadata, indexed_at)
59
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
60
+ .run(id, symbol.projectId, symbol.name, symbol.kind, symbol.file, symbol.startLine, symbol.endLine, symbol.exported ? 1 : 0, symbol.modulePath ?? null, symbol.signature ?? null, symbol.metadata ? JSON.stringify(symbol.metadata) : null, indexedAt);
61
+ return { ...symbol, id, indexedAt };
62
+ }
63
+ insertSymbolsBulk(symbols) {
64
+ const indexedAt = now();
65
+ const stmt = this.db.prepare(`INSERT INTO code_symbols (id, project_id, name, kind, file, start_line, end_line, exported, module_path, signature, metadata, indexed_at)
66
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
67
+ const insertMany = this.db.transaction((syms) => {
68
+ for (const s of syms) {
69
+ stmt.run(generateId("csym"), s.projectId, s.name, s.kind, s.file, s.startLine, s.endLine, s.exported ? 1 : 0, s.modulePath ?? null, s.signature ?? null, s.metadata ? JSON.stringify(s.metadata) : null, indexedAt);
70
+ }
71
+ return syms.length;
72
+ });
73
+ return insertMany(symbols);
74
+ }
75
+ getSymbol(id) {
76
+ const row = this.db
77
+ .prepare("SELECT * FROM code_symbols WHERE id = ?")
78
+ .get(id);
79
+ return row ? rowToSymbol(row) : null;
80
+ }
81
+ findSymbolsByName(name, projectId) {
82
+ const rows = this.db
83
+ .prepare("SELECT * FROM code_symbols WHERE name = ? AND project_id = ?")
84
+ .all(name, projectId);
85
+ return rows.map(rowToSymbol);
86
+ }
87
+ findSymbolsByFile(file, projectId) {
88
+ const rows = this.db
89
+ .prepare("SELECT * FROM code_symbols WHERE file = ? AND project_id = ?")
90
+ .all(file, projectId);
91
+ return rows.map(rowToSymbol);
92
+ }
93
+ findSymbolAtLine(file, line, projectId) {
94
+ const row = this.db
95
+ .prepare("SELECT * FROM code_symbols WHERE file = ? AND start_line <= ? AND end_line >= ? AND project_id = ? ORDER BY (end_line - start_line) ASC LIMIT 1")
96
+ .get(file, line, line, projectId);
97
+ return row ? rowToSymbol(row) : null;
98
+ }
99
+ getAllSymbols(projectId, limit = 5000) {
100
+ const rows = this.db
101
+ .prepare("SELECT * FROM code_symbols WHERE project_id = ? LIMIT ?")
102
+ .all(projectId, limit);
103
+ return rows.map(rowToSymbol);
104
+ }
105
+ deleteSymbolsByFile(file, projectId) {
106
+ // First delete relations referencing these symbols
107
+ const symbolIds = this.db
108
+ .prepare("SELECT id FROM code_symbols WHERE file = ? AND project_id = ?")
109
+ .all(file, projectId);
110
+ if (symbolIds.length === 0)
111
+ return 0;
112
+ const ids = symbolIds.map((r) => r.id);
113
+ const placeholders = ids.map(() => "?").join(",");
114
+ this.db
115
+ .prepare(`DELETE FROM code_relations WHERE from_symbol IN (${placeholders}) OR to_symbol IN (${placeholders})`)
116
+ .run(...ids, ...ids);
117
+ const result = this.db
118
+ .prepare("DELETE FROM code_symbols WHERE file = ? AND project_id = ?")
119
+ .run(file, projectId);
120
+ return result.changes;
121
+ }
122
+ deleteAllSymbols(projectId) {
123
+ this.db.transaction(() => {
124
+ this.db.prepare("DELETE FROM code_relations WHERE project_id = ?").run(projectId);
125
+ this.db.prepare("DELETE FROM code_symbols WHERE project_id = ?").run(projectId);
126
+ })();
127
+ }
128
+ // ── Relations ────────────────────────────────────
129
+ insertRelation(relation) {
130
+ const id = generateId("crel");
131
+ const indexedAt = now();
132
+ this.db
133
+ .prepare(`INSERT INTO code_relations (id, project_id, from_symbol, to_symbol, type, file, line, metadata, indexed_at)
134
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`)
135
+ .run(id, relation.projectId, relation.fromSymbol, relation.toSymbol, relation.type, relation.file ?? null, relation.line ?? null, relation.metadata ? JSON.stringify(relation.metadata) : null, indexedAt);
136
+ return { ...relation, id, indexedAt };
137
+ }
138
+ insertRelationsBulk(relations) {
139
+ const indexedAt = now();
140
+ const stmt = this.db.prepare(`INSERT INTO code_relations (id, project_id, from_symbol, to_symbol, type, file, line, metadata, indexed_at)
141
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`);
142
+ const insertMany = this.db.transaction((rels) => {
143
+ for (const r of rels) {
144
+ stmt.run(generateId("crel"), r.projectId, r.fromSymbol, r.toSymbol, r.type, r.file ?? null, r.line ?? null, r.metadata ? JSON.stringify(r.metadata) : null, indexedAt);
145
+ }
146
+ return rels.length;
147
+ });
148
+ return insertMany(relations);
149
+ }
150
+ getRelationsFrom(symbolId) {
151
+ const rows = this.db
152
+ .prepare("SELECT * FROM code_relations WHERE from_symbol = ?")
153
+ .all(symbolId);
154
+ return rows.map(rowToRelation);
155
+ }
156
+ getRelationsTo(symbolId) {
157
+ const rows = this.db
158
+ .prepare("SELECT * FROM code_relations WHERE to_symbol = ?")
159
+ .all(symbolId);
160
+ return rows.map(rowToRelation);
161
+ }
162
+ getRelationsBetween(fromId, toId) {
163
+ const rows = this.db
164
+ .prepare("SELECT * FROM code_relations WHERE from_symbol = ? AND to_symbol = ?")
165
+ .all(fromId, toId);
166
+ return rows.map(rowToRelation);
167
+ }
168
+ getAllRelations(projectId, limit = 10000) {
169
+ const rows = this.db
170
+ .prepare("SELECT * FROM code_relations WHERE project_id = ? LIMIT ?")
171
+ .all(projectId, limit);
172
+ return rows.map(rowToRelation);
173
+ }
174
+ // ── FTS5 Search ──────────────────────────────────
175
+ searchSymbols(query, projectId, limit = 20) {
176
+ const rows = this.db
177
+ .prepare(`SELECT cs.*, rank AS score
178
+ FROM code_symbols_fts fts
179
+ JOIN code_symbols cs ON cs.rowid = fts.rowid
180
+ WHERE code_symbols_fts MATCH ? AND cs.project_id = ?
181
+ ORDER BY rank
182
+ LIMIT ?`)
183
+ .all(query, projectId, limit);
184
+ return rows.map((row) => ({
185
+ symbol: rowToSymbol(row),
186
+ score: Math.abs(row.score), // BM25 returns negative scores
187
+ }));
188
+ }
189
+ // ── Index Meta ───────────────────────────────────
190
+ getIndexMeta(projectId) {
191
+ const row = this.db
192
+ .prepare("SELECT * FROM code_index_meta WHERE project_id = ?")
193
+ .get(projectId);
194
+ return row ? rowToMeta(row) : null;
195
+ }
196
+ upsertIndexMeta(meta) {
197
+ this.db
198
+ .prepare(`INSERT INTO code_index_meta (project_id, last_indexed, file_count, symbol_count, relation_count, git_hash)
199
+ VALUES (?, ?, ?, ?, ?, ?)
200
+ ON CONFLICT(project_id) DO UPDATE SET
201
+ last_indexed = excluded.last_indexed,
202
+ file_count = excluded.file_count,
203
+ symbol_count = excluded.symbol_count,
204
+ relation_count = excluded.relation_count,
205
+ git_hash = excluded.git_hash`)
206
+ .run(meta.projectId, meta.lastIndexed, meta.fileCount, meta.symbolCount, meta.relationCount, meta.gitHash ?? null);
207
+ }
208
+ // ── Stats ────────────────────────────────────────
209
+ getSymbolCount(projectId) {
210
+ const row = this.db
211
+ .prepare("SELECT COUNT(*) as count FROM code_symbols WHERE project_id = ?")
212
+ .get(projectId);
213
+ return row.count;
214
+ }
215
+ getRelationCount(projectId) {
216
+ const row = this.db
217
+ .prepare("SELECT COUNT(*) as count FROM code_relations WHERE project_id = ?")
218
+ .get(projectId);
219
+ return row.count;
220
+ }
221
+ getModulePaths(projectId) {
222
+ const rows = this.db
223
+ .prepare("SELECT DISTINCT module_path FROM code_symbols WHERE project_id = ? AND module_path IS NOT NULL ORDER BY module_path")
224
+ .all(projectId);
225
+ return rows.map((r) => r.module_path);
226
+ }
227
+ }
228
+ //# sourceMappingURL=code-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-store.js","sourceRoot":"","sources":["../../../src/core/code/code-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Zod schemas and types for the native Code Intelligence engine.
3
+ * Replaces GitNexus types with Zod-validated, SQLite-backed structures.
4
+ */
5
+ import { z } from "zod/v4";
6
+ export declare const SymbolKindSchema: z.ZodEnum<{
7
+ function: "function";
8
+ enum: "enum";
9
+ class: "class";
10
+ method: "method";
11
+ variable: "variable";
12
+ interface: "interface";
13
+ type_alias: "type_alias";
14
+ }>;
15
+ export type SymbolKind = z.infer<typeof SymbolKindSchema>;
16
+ export declare const RelationTypeSchema: z.ZodEnum<{
17
+ implements: "implements";
18
+ calls: "calls";
19
+ imports: "imports";
20
+ extends: "extends";
21
+ belongs_to: "belongs_to";
22
+ }>;
23
+ export type CodeRelationType = z.infer<typeof RelationTypeSchema>;
24
+ export declare const RiskLevelSchema: z.ZodEnum<{
25
+ low: "low";
26
+ medium: "medium";
27
+ high: "high";
28
+ }>;
29
+ export type RiskLevel = z.infer<typeof RiskLevelSchema>;
30
+ export declare const CodeSymbolSchema: z.ZodObject<{
31
+ id: z.ZodString;
32
+ projectId: z.ZodString;
33
+ name: z.ZodString;
34
+ kind: z.ZodEnum<{
35
+ function: "function";
36
+ enum: "enum";
37
+ class: "class";
38
+ method: "method";
39
+ variable: "variable";
40
+ interface: "interface";
41
+ type_alias: "type_alias";
42
+ }>;
43
+ file: z.ZodString;
44
+ startLine: z.ZodInt;
45
+ endLine: z.ZodInt;
46
+ exported: z.ZodBoolean;
47
+ modulePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
48
+ signature: z.ZodOptional<z.ZodNullable<z.ZodString>>;
49
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
50
+ indexedAt: z.ZodString;
51
+ }, z.core.$strip>;
52
+ export type CodeSymbol = z.infer<typeof CodeSymbolSchema>;
53
+ export declare const CodeRelationSchema: z.ZodObject<{
54
+ id: z.ZodString;
55
+ projectId: z.ZodString;
56
+ fromSymbol: z.ZodString;
57
+ toSymbol: z.ZodString;
58
+ type: z.ZodEnum<{
59
+ implements: "implements";
60
+ calls: "calls";
61
+ imports: "imports";
62
+ extends: "extends";
63
+ belongs_to: "belongs_to";
64
+ }>;
65
+ file: z.ZodOptional<z.ZodNullable<z.ZodString>>;
66
+ line: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
67
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
68
+ indexedAt: z.ZodString;
69
+ }, z.core.$strip>;
70
+ export type CodeRelation = z.infer<typeof CodeRelationSchema>;
71
+ export declare const CodeGraphDataSchema: z.ZodObject<{
72
+ symbols: z.ZodArray<z.ZodObject<{
73
+ id: z.ZodString;
74
+ projectId: z.ZodString;
75
+ name: z.ZodString;
76
+ kind: z.ZodEnum<{
77
+ function: "function";
78
+ enum: "enum";
79
+ class: "class";
80
+ method: "method";
81
+ variable: "variable";
82
+ interface: "interface";
83
+ type_alias: "type_alias";
84
+ }>;
85
+ file: z.ZodString;
86
+ startLine: z.ZodInt;
87
+ endLine: z.ZodInt;
88
+ exported: z.ZodBoolean;
89
+ modulePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
90
+ signature: z.ZodOptional<z.ZodNullable<z.ZodString>>;
91
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
92
+ indexedAt: z.ZodString;
93
+ }, z.core.$strip>>;
94
+ relations: z.ZodArray<z.ZodObject<{
95
+ id: z.ZodString;
96
+ projectId: z.ZodString;
97
+ fromSymbol: z.ZodString;
98
+ toSymbol: z.ZodString;
99
+ type: z.ZodEnum<{
100
+ implements: "implements";
101
+ calls: "calls";
102
+ imports: "imports";
103
+ extends: "extends";
104
+ belongs_to: "belongs_to";
105
+ }>;
106
+ file: z.ZodOptional<z.ZodNullable<z.ZodString>>;
107
+ line: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
108
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
109
+ indexedAt: z.ZodString;
110
+ }, z.core.$strip>>;
111
+ }, z.core.$strip>;
112
+ export type CodeGraphData = z.infer<typeof CodeGraphDataSchema>;
113
+ export declare const AffectedSymbolSchema: z.ZodObject<{
114
+ name: z.ZodString;
115
+ file: z.ZodString;
116
+ confidence: z.ZodNumber;
117
+ depth: z.ZodOptional<z.ZodInt>;
118
+ }, z.core.$strip>;
119
+ export type AffectedSymbol = z.infer<typeof AffectedSymbolSchema>;
120
+ export declare const ImpactResultSchema: z.ZodObject<{
121
+ symbol: z.ZodString;
122
+ affectedSymbols: z.ZodArray<z.ZodObject<{
123
+ name: z.ZodString;
124
+ file: z.ZodString;
125
+ confidence: z.ZodNumber;
126
+ depth: z.ZodOptional<z.ZodInt>;
127
+ }, z.core.$strip>>;
128
+ riskLevel: z.ZodEnum<{
129
+ low: "low";
130
+ medium: "medium";
131
+ high: "high";
132
+ }>;
133
+ }, z.core.$strip>;
134
+ export type ImpactResult = z.infer<typeof ImpactResultSchema>;
135
+ export declare const CodeIndexMetaSchema: z.ZodObject<{
136
+ projectId: z.ZodString;
137
+ lastIndexed: z.ZodString;
138
+ fileCount: z.ZodInt;
139
+ symbolCount: z.ZodInt;
140
+ relationCount: z.ZodInt;
141
+ gitHash: z.ZodOptional<z.ZodNullable<z.ZodString>>;
142
+ }, z.core.$strip>;
143
+ export type CodeIndexMeta = z.infer<typeof CodeIndexMetaSchema>;
144
+ export declare const CodeSearchResultSchema: z.ZodObject<{
145
+ symbol: z.ZodObject<{
146
+ id: z.ZodString;
147
+ projectId: z.ZodString;
148
+ name: z.ZodString;
149
+ kind: z.ZodEnum<{
150
+ function: "function";
151
+ enum: "enum";
152
+ class: "class";
153
+ method: "method";
154
+ variable: "variable";
155
+ interface: "interface";
156
+ type_alias: "type_alias";
157
+ }>;
158
+ file: z.ZodString;
159
+ startLine: z.ZodInt;
160
+ endLine: z.ZodInt;
161
+ exported: z.ZodBoolean;
162
+ modulePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
163
+ signature: z.ZodOptional<z.ZodNullable<z.ZodString>>;
164
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
165
+ indexedAt: z.ZodString;
166
+ }, z.core.$strip>;
167
+ score: z.ZodNumber;
168
+ modulePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
169
+ }, z.core.$strip>;
170
+ export type CodeSearchResult = z.infer<typeof CodeSearchResultSchema>;
171
+ export interface AnalyzedFile {
172
+ file: string;
173
+ symbols: Omit<CodeSymbol, "id" | "projectId" | "indexedAt">[];
174
+ relations: Omit<CodeRelation, "id" | "projectId" | "indexedAt">[];
175
+ }
176
+ export interface DetectedChange {
177
+ file: string;
178
+ changeType: "added" | "modified" | "deleted";
179
+ affectedSymbols: string[];
180
+ }
181
+ export interface ChangeDetectionResult {
182
+ changes: DetectedChange[];
183
+ impactSummary: {
184
+ totalFiles: number;
185
+ totalSymbols: number;
186
+ riskLevel: RiskLevel;
187
+ };
188
+ }
189
+ export interface DetectedProcess {
190
+ entryPoint: string;
191
+ entryFile: string;
192
+ chain: Array<{
193
+ name: string;
194
+ file: string;
195
+ }>;
196
+ }
197
+ export interface CodeAnalyzer {
198
+ /** Languages supported by this analyzer (e.g., ["typescript", "javascript"]) */
199
+ readonly languages: string[];
200
+ /** Analyze a single file and return symbols + relations */
201
+ analyzeFile(filePath: string, basePath: string): AnalyzedFile;
202
+ }
203
+ export interface IndexResult {
204
+ fileCount: number;
205
+ symbolCount: number;
206
+ relationCount: number;
207
+ }
208
+ export declare function calculateRiskLevel(affectedCount: number): RiskLevel;
209
+ //# sourceMappingURL=code-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-types.d.ts","sourceRoot":"","sources":["../../../src/core/code/code-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Zod schemas and types for the native Code Intelligence engine.
3
+ * Replaces GitNexus types with Zod-validated, SQLite-backed structures.
4
+ */
5
+ import { z } from "zod/v4";
6
+ // ── Symbol Kinds ──────────────────────────────────────
7
+ export const SymbolKindSchema = z.enum([
8
+ "function",
9
+ "class",
10
+ "method",
11
+ "interface",
12
+ "type_alias",
13
+ "enum",
14
+ "variable",
15
+ ]);
16
+ // ── Relation Types ────────────────────────────────────
17
+ export const RelationTypeSchema = z.enum([
18
+ "calls",
19
+ "imports",
20
+ "extends",
21
+ "implements",
22
+ "belongs_to",
23
+ ]);
24
+ // ── Risk Levels ───────────────────────────────────────
25
+ export const RiskLevelSchema = z.enum(["low", "medium", "high"]);
26
+ // ── Code Symbol ───────────────────────────────────────
27
+ export const CodeSymbolSchema = z.object({
28
+ id: z.string(),
29
+ projectId: z.string(),
30
+ name: z.string(),
31
+ kind: SymbolKindSchema,
32
+ file: z.string(),
33
+ startLine: z.int().min(1),
34
+ endLine: z.int().min(1),
35
+ exported: z.boolean(),
36
+ modulePath: z.string().nullable().optional(),
37
+ signature: z.string().nullable().optional(),
38
+ metadata: z.record(z.string(), z.unknown()).optional(),
39
+ indexedAt: z.string(),
40
+ });
41
+ // ── Code Relation ─────────────────────────────────────
42
+ export const CodeRelationSchema = z.object({
43
+ id: z.string(),
44
+ projectId: z.string(),
45
+ fromSymbol: z.string(),
46
+ toSymbol: z.string(),
47
+ type: RelationTypeSchema,
48
+ file: z.string().nullable().optional(),
49
+ line: z.int().nullable().optional(),
50
+ metadata: z.record(z.string(), z.unknown()).optional(),
51
+ indexedAt: z.string(),
52
+ });
53
+ // ── Code Graph Data (API response shape) ──────────────
54
+ export const CodeGraphDataSchema = z.object({
55
+ symbols: z.array(CodeSymbolSchema),
56
+ relations: z.array(CodeRelationSchema),
57
+ });
58
+ // ── Affected Symbol (impact analysis) ─────────────────
59
+ export const AffectedSymbolSchema = z.object({
60
+ name: z.string(),
61
+ file: z.string(),
62
+ confidence: z.number().min(0).max(1),
63
+ depth: z.int().min(1).optional(),
64
+ });
65
+ // ── Impact Result ─────────────────────────────────────
66
+ export const ImpactResultSchema = z.object({
67
+ symbol: z.string(),
68
+ affectedSymbols: z.array(AffectedSymbolSchema),
69
+ riskLevel: RiskLevelSchema,
70
+ });
71
+ // ── Index Meta ────────────────────────────────────────
72
+ export const CodeIndexMetaSchema = z.object({
73
+ projectId: z.string(),
74
+ lastIndexed: z.string(),
75
+ fileCount: z.int().min(0),
76
+ symbolCount: z.int().min(0),
77
+ relationCount: z.int().min(0),
78
+ gitHash: z.string().nullable().optional(),
79
+ });
80
+ // ── Search Result ─────────────────────────────────────
81
+ export const CodeSearchResultSchema = z.object({
82
+ symbol: CodeSymbolSchema,
83
+ score: z.number(),
84
+ modulePath: z.string().nullable().optional(),
85
+ });
86
+ // ── Helpers ───────────────────────────────────────────
87
+ export function calculateRiskLevel(affectedCount) {
88
+ if (affectedCount > 15)
89
+ return "high";
90
+ if (affectedCount >= 5)
91
+ return "medium";
92
+ return "low";
93
+ }
94
+ //# sourceMappingURL=code-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-types.js","sourceRoot":"","sources":["../../../src/core/code/code-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Graph traversal algorithms for Code Intelligence.
3
+ * Operates on CodeStore data: BFS for context/impact, symbol lookup for change detection.
4
+ */
5
+ import type { CodeStore } from "./code-store.js";
6
+ import type { CodeGraphData, CodeSymbol, CodeRelation, ImpactResult } from "./code-types.js";
7
+ /**
8
+ * Get 360° context for a symbol: all direct callers, callees, and related symbols.
9
+ */
10
+ export declare function getSymbolContext(store: CodeStore, name: string, projectId: string): CodeGraphData;
11
+ /**
12
+ * Analyze blast radius via BFS. Direction controls traversal:
13
+ * - "upstream": who depends on this symbol (callers, importers)
14
+ * - "downstream": what this symbol depends on (callees, imported)
15
+ */
16
+ export declare function analyzeImpact(store: CodeStore, name: string, projectId: string, direction?: "upstream" | "downstream", maxDepth?: number): ImpactResult;
17
+ /**
18
+ * Get the complete code graph for a project (with optional limit).
19
+ */
20
+ export declare function getFullGraph(store: CodeStore, projectId: string, symbolLimit?: number): {
21
+ symbols: CodeSymbol[];
22
+ relations: Array<CodeRelation & {
23
+ from: string;
24
+ to: string;
25
+ }>;
26
+ };
27
+ //# sourceMappingURL=graph-traversal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-traversal.d.ts","sourceRoot":"","sources":["../../../src/core/code/graph-traversal.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,iBAAiB,CAAC;AAM7G;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,CAuCjG;AAID;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,UAAU,GAAG,YAAyB,EACjD,QAAQ,GAAE,MAAU,GACnB,YAAY,CA2Dd;AAID;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,MAAa,GACzB;IAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAAC,SAAS,EAAE,KAAK,CAAC,YAAY,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAiB1F"}