@szabadkai/graphite 0.1.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 (148) hide show
  1. package/README.md +427 -0
  2. package/dist/cli/formatters.d.ts +3 -0
  3. package/dist/cli/formatters.js +61 -0
  4. package/dist/cli/formatters.js.map +1 -0
  5. package/dist/cli/index.d.ts +2 -0
  6. package/dist/cli/index.js +186 -0
  7. package/dist/cli/index.js.map +1 -0
  8. package/dist/index.d.ts +6 -0
  9. package/dist/index.js +23 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/indexer/call-resolver.d.ts +8 -0
  12. package/dist/indexer/call-resolver.js +161 -0
  13. package/dist/indexer/call-resolver.js.map +1 -0
  14. package/dist/indexer/extractors/calls.d.ts +17 -0
  15. package/dist/indexer/extractors/calls.js +206 -0
  16. package/dist/indexer/extractors/calls.js.map +1 -0
  17. package/dist/indexer/extractors/classes.d.ts +35 -0
  18. package/dist/indexer/extractors/classes.js +209 -0
  19. package/dist/indexer/extractors/classes.js.map +1 -0
  20. package/dist/indexer/extractors/exports.d.ts +12 -0
  21. package/dist/indexer/extractors/exports.js +267 -0
  22. package/dist/indexer/extractors/exports.js.map +1 -0
  23. package/dist/indexer/extractors/functions.d.ts +12 -0
  24. package/dist/indexer/extractors/functions.js +169 -0
  25. package/dist/indexer/extractors/functions.js.map +1 -0
  26. package/dist/indexer/extractors/imports.d.ts +12 -0
  27. package/dist/indexer/extractors/imports.js +195 -0
  28. package/dist/indexer/extractors/imports.js.map +1 -0
  29. package/dist/indexer/extractors/index.d.ts +7 -0
  30. package/dist/indexer/extractors/index.js +24 -0
  31. package/dist/indexer/extractors/index.js.map +1 -0
  32. package/dist/indexer/extractors/types.d.ts +12 -0
  33. package/dist/indexer/extractors/types.js +138 -0
  34. package/dist/indexer/extractors/types.js.map +1 -0
  35. package/dist/indexer/extractors/variables.d.ts +10 -0
  36. package/dist/indexer/extractors/variables.js +134 -0
  37. package/dist/indexer/extractors/variables.js.map +1 -0
  38. package/dist/indexer/file-discovery.d.ts +7 -0
  39. package/dist/indexer/file-discovery.js +92 -0
  40. package/dist/indexer/file-discovery.js.map +1 -0
  41. package/dist/indexer/file-indexer.d.ts +2 -0
  42. package/dist/indexer/file-indexer.js +267 -0
  43. package/dist/indexer/file-indexer.js.map +1 -0
  44. package/dist/indexer/graph-contract.d.ts +25 -0
  45. package/dist/indexer/graph-contract.js +7 -0
  46. package/dist/indexer/graph-contract.js.map +1 -0
  47. package/dist/indexer/hasher.d.ts +1 -0
  48. package/dist/indexer/hasher.js +11 -0
  49. package/dist/indexer/hasher.js.map +1 -0
  50. package/dist/indexer/import-resolver.d.ts +11 -0
  51. package/dist/indexer/import-resolver.js +131 -0
  52. package/dist/indexer/import-resolver.js.map +1 -0
  53. package/dist/indexer/index.d.ts +11 -0
  54. package/dist/indexer/index.js +28 -0
  55. package/dist/indexer/index.js.map +1 -0
  56. package/dist/indexer/inheritance-resolver.d.ts +7 -0
  57. package/dist/indexer/inheritance-resolver.js +119 -0
  58. package/dist/indexer/inheritance-resolver.js.map +1 -0
  59. package/dist/indexer/parser.d.ts +5 -0
  60. package/dist/indexer/parser.js +48 -0
  61. package/dist/indexer/parser.js.map +1 -0
  62. package/dist/indexer/path-utils.d.ts +3 -0
  63. package/dist/indexer/path-utils.js +20 -0
  64. package/dist/indexer/path-utils.js.map +1 -0
  65. package/dist/indexer/project-indexer.d.ts +14 -0
  66. package/dist/indexer/project-indexer.js +167 -0
  67. package/dist/indexer/project-indexer.js.map +1 -0
  68. package/dist/indexer/property-parsers.d.ts +20 -0
  69. package/dist/indexer/property-parsers.js +81 -0
  70. package/dist/indexer/property-parsers.js.map +1 -0
  71. package/dist/mcp/index.d.ts +3 -0
  72. package/dist/mcp/index.js +20 -0
  73. package/dist/mcp/index.js.map +1 -0
  74. package/dist/mcp/response-formatter.d.ts +10 -0
  75. package/dist/mcp/response-formatter.js +47 -0
  76. package/dist/mcp/response-formatter.js.map +1 -0
  77. package/dist/mcp/server.d.ts +10 -0
  78. package/dist/mcp/server.js +118 -0
  79. package/dist/mcp/server.js.map +1 -0
  80. package/dist/mcp/tools-list.d.ts +9 -0
  81. package/dist/mcp/tools-list.js +12 -0
  82. package/dist/mcp/tools-list.js.map +1 -0
  83. package/dist/mcp/tools.d.ts +13 -0
  84. package/dist/mcp/tools.js +163 -0
  85. package/dist/mcp/tools.js.map +1 -0
  86. package/dist/query/analyze-impact.d.ts +18 -0
  87. package/dist/query/analyze-impact.js +58 -0
  88. package/dist/query/analyze-impact.js.map +1 -0
  89. package/dist/query/find-callees.d.ts +12 -0
  90. package/dist/query/find-callees.js +46 -0
  91. package/dist/query/find-callees.js.map +1 -0
  92. package/dist/query/find-callers.d.ts +12 -0
  93. package/dist/query/find-callers.js +46 -0
  94. package/dist/query/find-callers.js.map +1 -0
  95. package/dist/query/find-definition.d.ts +3 -0
  96. package/dist/query/find-definition.js +41 -0
  97. package/dist/query/find-definition.js.map +1 -0
  98. package/dist/query/find-dependency-path.d.ts +2 -0
  99. package/dist/query/find-dependency-path.js +39 -0
  100. package/dist/query/find-dependency-path.js.map +1 -0
  101. package/dist/query/find-implementations.d.ts +10 -0
  102. package/dist/query/find-implementations.js +34 -0
  103. package/dist/query/find-implementations.js.map +1 -0
  104. package/dist/query/get-exports.d.ts +3 -0
  105. package/dist/query/get-exports.js +82 -0
  106. package/dist/query/get-exports.js.map +1 -0
  107. package/dist/query/get-file-structure.d.ts +3 -0
  108. package/dist/query/get-file-structure.js +58 -0
  109. package/dist/query/get-file-structure.js.map +1 -0
  110. package/dist/query/get-graph-stats.d.ts +21 -0
  111. package/dist/query/get-graph-stats.js +42 -0
  112. package/dist/query/get-graph-stats.js.map +1 -0
  113. package/dist/query/index.d.ts +11 -0
  114. package/dist/query/index.js +28 -0
  115. package/dist/query/index.js.map +1 -0
  116. package/dist/query/search-symbols.d.ts +6 -0
  117. package/dist/query/search-symbols.js +75 -0
  118. package/dist/query/search-symbols.js.map +1 -0
  119. package/dist/query/types.d.ts +41 -0
  120. package/dist/query/types.js +36 -0
  121. package/dist/query/types.js.map +1 -0
  122. package/dist/storage/database.d.ts +13 -0
  123. package/dist/storage/database.js +49 -0
  124. package/dist/storage/database.js.map +1 -0
  125. package/dist/storage/index.d.ts +7 -0
  126. package/dist/storage/index.js +24 -0
  127. package/dist/storage/index.js.map +1 -0
  128. package/dist/storage/migrations/001_initial.sql +59 -0
  129. package/dist/storage/migrations/002_add_name_index.sql +9 -0
  130. package/dist/storage/migrator.d.ts +9 -0
  131. package/dist/storage/migrator.js +86 -0
  132. package/dist/storage/migrator.js.map +1 -0
  133. package/dist/storage/paths.d.ts +5 -0
  134. package/dist/storage/paths.js +25 -0
  135. package/dist/storage/paths.js.map +1 -0
  136. package/dist/storage/reader.d.ts +10 -0
  137. package/dist/storage/reader.js +103 -0
  138. package/dist/storage/reader.js.map +1 -0
  139. package/dist/storage/schema.d.ts +14 -0
  140. package/dist/storage/schema.js +18 -0
  141. package/dist/storage/schema.js.map +1 -0
  142. package/dist/storage/types.d.ts +42 -0
  143. package/dist/storage/types.js +3 -0
  144. package/dist/storage/types.js.map +1 -0
  145. package/dist/storage/writer.d.ts +13 -0
  146. package/dist/storage/writer.js +160 -0
  147. package/dist/storage/writer.js.map +1 -0
  148. package/package.json +47 -0
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createStorageWriter = createStorageWriter;
4
+ function createStorageWriter(db) {
5
+ const upsertFileStatement = db.prepare(`
6
+ INSERT INTO files (path, content_hash, language, indexed_at)
7
+ VALUES (@path, @content_hash, @language, @indexed_at)
8
+ ON CONFLICT(path) DO UPDATE SET
9
+ content_hash = excluded.content_hash,
10
+ language = excluded.language,
11
+ indexed_at = excluded.indexed_at
12
+ `);
13
+ const upsertNodeStatement = db.prepare(`
14
+ INSERT INTO nodes (id, type, name, file_path, start_line, end_line, start_col, end_col, properties)
15
+ VALUES (@id, @type, @name, @file_path, @start_line, @end_line, @start_col, @end_col, @properties)
16
+ ON CONFLICT(id) DO UPDATE SET
17
+ type = excluded.type,
18
+ name = excluded.name,
19
+ file_path = excluded.file_path,
20
+ start_line = excluded.start_line,
21
+ end_line = excluded.end_line,
22
+ start_col = excluded.start_col,
23
+ end_col = excluded.end_col,
24
+ properties = excluded.properties
25
+ `);
26
+ const upsertEdgeStatement = db.prepare(`
27
+ INSERT INTO edges (source_id, target_id, type, properties)
28
+ VALUES (@source_id, @target_id, @type, @properties)
29
+ ON CONFLICT(source_id, target_id, type) DO UPDATE SET
30
+ properties = excluded.properties
31
+ `);
32
+ const deleteFileEdgesStatement = db.prepare(`
33
+ DELETE FROM edges
34
+ WHERE source_id IN (SELECT id FROM nodes WHERE file_path = ?)
35
+ `);
36
+ const deleteEdgesByTypeStatement = db.prepare(`
37
+ DELETE FROM edges WHERE type = ?
38
+ `);
39
+ const deleteFileNodesStatement = db.prepare(`
40
+ DELETE FROM nodes WHERE file_path = ?
41
+ `);
42
+ const deleteFileRecordStatement = db.prepare(`
43
+ DELETE FROM files WHERE path = ?
44
+ `);
45
+ const selectFileNodeIdsStatement = db.prepare(`
46
+ SELECT id FROM nodes WHERE file_path = ?
47
+ `);
48
+ const deleteIncidentEdgesForNodeStatement = db.prepare(`
49
+ DELETE FROM edges WHERE source_id = ? OR target_id = ?
50
+ `);
51
+ const deleteNodeByIdStatement = db.prepare(`
52
+ DELETE FROM nodes WHERE id = ?
53
+ `);
54
+ const upsertFile = (file) => {
55
+ upsertFileStatement.run({
56
+ path: file.path,
57
+ content_hash: file.contentHash,
58
+ language: file.language,
59
+ indexed_at: file.indexedAt
60
+ });
61
+ };
62
+ const upsertNode = (node) => {
63
+ upsertNodeStatement.run({
64
+ id: node.id,
65
+ type: node.type,
66
+ name: node.name,
67
+ file_path: node.filePath,
68
+ start_line: node.startLine,
69
+ end_line: node.endLine,
70
+ start_col: node.startCol ?? null,
71
+ end_col: node.endCol ?? null,
72
+ properties: node.properties ?? null
73
+ });
74
+ };
75
+ const upsertEdge = (edge) => {
76
+ upsertEdgeStatement.run({
77
+ source_id: edge.sourceId,
78
+ target_id: edge.targetId,
79
+ type: edge.type,
80
+ properties: edge.properties ?? null
81
+ });
82
+ };
83
+ const deleteFileEdges = (filePath) => {
84
+ const result = deleteFileEdgesStatement.run(filePath);
85
+ return result.changes;
86
+ };
87
+ const deleteEdgesByType = (type) => {
88
+ const result = deleteEdgesByTypeStatement.run(type);
89
+ return result.changes;
90
+ };
91
+ const deleteFileNodes = (filePath) => {
92
+ return deleteFileNodesTransaction(filePath);
93
+ };
94
+ const deleteFileNodesTransaction = db.transaction((filePath) => {
95
+ const nodeRows = selectFileNodeIdsStatement.all(filePath);
96
+ for (const row of nodeRows) {
97
+ deleteIncidentEdgesForNodeStatement.run(row.id, row.id);
98
+ }
99
+ const result = deleteFileNodesStatement.run(filePath);
100
+ return result.changes;
101
+ });
102
+ const deleteFileGraphTransaction = db.transaction((filePath) => {
103
+ const nodeRows = selectFileNodeIdsStatement.all(filePath);
104
+ for (const row of nodeRows) {
105
+ deleteIncidentEdgesForNodeStatement.run(row.id, row.id);
106
+ deleteNodeByIdStatement.run(row.id);
107
+ }
108
+ deleteFileRecordStatement.run(filePath);
109
+ });
110
+ const validateReplacementInput = (file, nodes, edges) => {
111
+ const nodeIdSet = new Set();
112
+ for (const node of nodes) {
113
+ if (node.filePath !== file.path) {
114
+ throw new Error(`replaceFileGraph received node '${node.id}' for file '${node.filePath}' while replacing '${file.path}'.`);
115
+ }
116
+ nodeIdSet.add(node.id);
117
+ }
118
+ for (const edge of edges) {
119
+ if (!nodeIdSet.has(edge.sourceId)) {
120
+ throw new Error(`replaceFileGraph edge source '${edge.sourceId}' is not part of file snapshot '${file.path}'.`);
121
+ }
122
+ }
123
+ return nodeIdSet;
124
+ };
125
+ const replaceFileGraphTransaction = db.transaction((file, nodes, edges) => {
126
+ const nodeIdSet = validateReplacementInput(file, nodes, edges);
127
+ const existingNodeRows = selectFileNodeIdsStatement.all(file.path);
128
+ const existingNodeIdSet = new Set(existingNodeRows.map((row) => row.id));
129
+ for (const edge of edges) {
130
+ if (existingNodeIdSet.has(edge.targetId) && !nodeIdSet.has(edge.targetId)) {
131
+ throw new Error(`replaceFileGraph edge target '${edge.targetId}' is a stale same-file node in '${file.path}'.`);
132
+ }
133
+ }
134
+ upsertFile(file);
135
+ for (const node of nodes) {
136
+ upsertNode(node);
137
+ }
138
+ deleteFileEdges(file.path);
139
+ for (const edge of edges) {
140
+ upsertEdge(edge);
141
+ }
142
+ for (const row of existingNodeRows) {
143
+ if (!nodeIdSet.has(row.id)) {
144
+ deleteIncidentEdgesForNodeStatement.run(row.id, row.id);
145
+ deleteNodeByIdStatement.run(row.id);
146
+ }
147
+ }
148
+ });
149
+ return {
150
+ upsertFile,
151
+ upsertNode,
152
+ upsertEdge,
153
+ deleteEdgesByType,
154
+ deleteFileEdges,
155
+ deleteFileNodes,
156
+ deleteFileGraph: (filePath) => deleteFileGraphTransaction(filePath),
157
+ replaceFileGraph: (file, nodes, edges) => replaceFileGraphTransaction(file, nodes, edges)
158
+ };
159
+ }
160
+ //# sourceMappingURL=writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/storage/writer.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@szabadkai/graphite",
3
+ "version": "0.1.0",
4
+ "description": "Local-first semantic code index and MCP server for structural code queries.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "graphite": "dist/cli/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "README.md"
13
+ ],
14
+ "scripts": {
15
+ "build": "tsc -p tsconfig.json && node scripts/copy-migrations.mjs",
16
+ "typecheck": "tsc --noEmit",
17
+ "test": "vitest run",
18
+ "test:watch": "vitest",
19
+ "benchmark:indexer": "npm run build && node scripts/benchmark-indexer.mjs"
20
+ },
21
+ "engines": {
22
+ "node": ">=18"
23
+ },
24
+ "keywords": ["code-index", "mcp", "tree-sitter", "code-graph", "semantic-search"],
25
+ "author": "",
26
+ "license": "ISC",
27
+ "type": "commonjs",
28
+ "dependencies": {
29
+ "@modelcontextprotocol/sdk": "^1.27.1",
30
+ "better-sqlite3": "^12.8.0",
31
+ "commander": "^14.0.3",
32
+ "ignore": "^7.0.5",
33
+ "tree-sitter": "^0.21.1",
34
+ "tree-sitter-javascript": "^0.21.4",
35
+ "tree-sitter-typescript": "^0.23.2"
36
+ },
37
+ "devDependencies": {
38
+ "@eslint/js": "^9.37.0",
39
+ "@types/better-sqlite3": "^7.6.13",
40
+ "@types/node": "^25.5.0",
41
+ "@vitest/coverage-v8": "^4.1.0",
42
+ "eslint": "^10.0.3",
43
+ "tsx": "^4.21.0",
44
+ "typescript": "^5.9.3",
45
+ "vitest": "^4.1.0"
46
+ }
47
+ }