@colbymchenry/codegraph 0.2.9 → 0.5.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 (118) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +647 -641
  3. package/dist/bin/codegraph.d.ts +7 -2
  4. package/dist/bin/codegraph.d.ts.map +1 -1
  5. package/dist/bin/codegraph.js +360 -140
  6. package/dist/bin/codegraph.js.map +1 -1
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +43 -10
  9. package/dist/config.js.map +1 -1
  10. package/dist/context/index.d.ts +17 -4
  11. package/dist/context/index.d.ts.map +1 -1
  12. package/dist/context/index.js +182 -15
  13. package/dist/context/index.js.map +1 -1
  14. package/dist/db/index.d.ts.map +1 -1
  15. package/dist/db/index.js +21 -0
  16. package/dist/db/index.js.map +1 -1
  17. package/dist/db/migrations.d.ts +1 -1
  18. package/dist/db/migrations.d.ts.map +1 -1
  19. package/dist/db/migrations.js +19 -12
  20. package/dist/db/migrations.js.map +1 -1
  21. package/dist/db/queries.d.ts +32 -1
  22. package/dist/db/queries.d.ts.map +1 -1
  23. package/dist/db/queries.js +271 -118
  24. package/dist/db/queries.js.map +1 -1
  25. package/dist/db/schema.sql +163 -149
  26. package/dist/directory.d.ts +13 -1
  27. package/dist/directory.d.ts.map +1 -1
  28. package/dist/directory.js +85 -19
  29. package/dist/directory.js.map +1 -1
  30. package/dist/errors.d.ts +1 -1
  31. package/dist/errors.d.ts.map +1 -1
  32. package/dist/errors.js +7 -1
  33. package/dist/errors.js.map +1 -1
  34. package/dist/extraction/grammars.d.ts +9 -4
  35. package/dist/extraction/grammars.d.ts.map +1 -1
  36. package/dist/extraction/grammars.js +133 -65
  37. package/dist/extraction/grammars.js.map +1 -1
  38. package/dist/extraction/index.d.ts +6 -0
  39. package/dist/extraction/index.d.ts.map +1 -1
  40. package/dist/extraction/index.js +209 -44
  41. package/dist/extraction/index.js.map +1 -1
  42. package/dist/extraction/tree-sitter.d.ts +67 -0
  43. package/dist/extraction/tree-sitter.d.ts.map +1 -1
  44. package/dist/extraction/tree-sitter.js +980 -38
  45. package/dist/extraction/tree-sitter.js.map +1 -1
  46. package/dist/graph/traversal.d.ts.map +1 -1
  47. package/dist/graph/traversal.js +6 -2
  48. package/dist/graph/traversal.js.map +1 -1
  49. package/dist/index.d.ts +6 -38
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +91 -74
  52. package/dist/index.js.map +1 -1
  53. package/dist/installer/banner.js +7 -7
  54. package/dist/installer/claude-md-template.js +32 -32
  55. package/dist/installer/config-writer.d.ts +9 -0
  56. package/dist/installer/config-writer.d.ts.map +1 -1
  57. package/dist/installer/config-writer.js +126 -17
  58. package/dist/installer/config-writer.js.map +1 -1
  59. package/dist/installer/index.d.ts.map +1 -1
  60. package/dist/installer/index.js +28 -16
  61. package/dist/installer/index.js.map +1 -1
  62. package/dist/mcp/index.d.ts +14 -3
  63. package/dist/mcp/index.d.ts.map +1 -1
  64. package/dist/mcp/index.js +109 -29
  65. package/dist/mcp/index.js.map +1 -1
  66. package/dist/mcp/tools.d.ts +66 -1
  67. package/dist/mcp/tools.d.ts.map +1 -1
  68. package/dist/mcp/tools.js +442 -49
  69. package/dist/mcp/tools.js.map +1 -1
  70. package/dist/mcp/transport.d.ts.map +1 -1
  71. package/dist/mcp/transport.js +2 -0
  72. package/dist/mcp/transport.js.map +1 -1
  73. package/dist/resolution/frameworks/index.d.ts +1 -0
  74. package/dist/resolution/frameworks/index.d.ts.map +1 -1
  75. package/dist/resolution/frameworks/index.js +5 -1
  76. package/dist/resolution/frameworks/index.js.map +1 -1
  77. package/dist/resolution/frameworks/svelte.d.ts +9 -0
  78. package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
  79. package/dist/resolution/frameworks/svelte.js +268 -0
  80. package/dist/resolution/frameworks/svelte.js.map +1 -0
  81. package/dist/resolution/index.d.ts +11 -2
  82. package/dist/resolution/index.d.ts.map +1 -1
  83. package/dist/resolution/index.js +94 -13
  84. package/dist/resolution/index.js.map +1 -1
  85. package/dist/search/query-utils.d.ts +25 -0
  86. package/dist/search/query-utils.d.ts.map +1 -0
  87. package/dist/search/query-utils.js +124 -0
  88. package/dist/search/query-utils.js.map +1 -0
  89. package/dist/sentry.d.ts +22 -0
  90. package/dist/sentry.d.ts.map +1 -0
  91. package/dist/sentry.js +159 -0
  92. package/dist/sentry.js.map +1 -0
  93. package/dist/sync/index.d.ts +4 -2
  94. package/dist/sync/index.d.ts.map +1 -1
  95. package/dist/sync/index.js +3 -5
  96. package/dist/sync/index.js.map +1 -1
  97. package/dist/types.d.ts +7 -1
  98. package/dist/types.d.ts.map +1 -1
  99. package/dist/types.js +13 -0
  100. package/dist/types.js.map +1 -1
  101. package/dist/utils.d.ts +89 -2
  102. package/dist/utils.d.ts.map +1 -1
  103. package/dist/utils.js +252 -3
  104. package/dist/utils.js.map +1 -1
  105. package/dist/vectors/embedder.d.ts +1 -1
  106. package/dist/vectors/embedder.d.ts.map +1 -1
  107. package/dist/vectors/embedder.js +5 -2
  108. package/dist/vectors/embedder.js.map +1 -1
  109. package/dist/vectors/search.d.ts.map +1 -1
  110. package/dist/vectors/search.js +33 -32
  111. package/dist/vectors/search.js.map +1 -1
  112. package/package.json +74 -65
  113. package/scripts/patch-tree-sitter-dart.js +112 -0
  114. package/scripts/postinstall.js +71 -0
  115. package/dist/sync/git-hooks.d.ts +0 -66
  116. package/dist/sync/git-hooks.d.ts.map +0 -1
  117. package/dist/sync/git-hooks.js +0 -281
  118. package/dist/sync/git-hooks.js.map +0 -1
@@ -1,149 +1,163 @@
1
- -- CodeGraph SQLite Schema
2
- -- Version 1
3
-
4
- -- Schema version tracking
5
- CREATE TABLE IF NOT EXISTS schema_versions (
6
- version INTEGER PRIMARY KEY,
7
- applied_at INTEGER NOT NULL,
8
- description TEXT
9
- );
10
-
11
- -- Insert initial version
12
- INSERT INTO schema_versions (version, applied_at, description)
13
- VALUES (1, strftime('%s', 'now') * 1000, 'Initial schema');
14
-
15
- -- =============================================================================
16
- -- Core Tables
17
- -- =============================================================================
18
-
19
- -- Nodes: Code symbols (functions, classes, variables, etc.)
20
- CREATE TABLE IF NOT EXISTS nodes (
21
- id TEXT PRIMARY KEY,
22
- kind TEXT NOT NULL,
23
- name TEXT NOT NULL,
24
- qualified_name TEXT NOT NULL,
25
- file_path TEXT NOT NULL,
26
- language TEXT NOT NULL,
27
- start_line INTEGER NOT NULL,
28
- end_line INTEGER NOT NULL,
29
- start_column INTEGER NOT NULL,
30
- end_column INTEGER NOT NULL,
31
- docstring TEXT,
32
- signature TEXT,
33
- visibility TEXT,
34
- is_exported INTEGER DEFAULT 0,
35
- is_async INTEGER DEFAULT 0,
36
- is_static INTEGER DEFAULT 0,
37
- is_abstract INTEGER DEFAULT 0,
38
- decorators TEXT, -- JSON array
39
- type_parameters TEXT, -- JSON array
40
- updated_at INTEGER NOT NULL
41
- );
42
-
43
- -- Edges: Relationships between nodes
44
- CREATE TABLE IF NOT EXISTS edges (
45
- id INTEGER PRIMARY KEY AUTOINCREMENT,
46
- source TEXT NOT NULL,
47
- target TEXT NOT NULL,
48
- kind TEXT NOT NULL,
49
- metadata TEXT, -- JSON object
50
- line INTEGER,
51
- col INTEGER,
52
- FOREIGN KEY (source) REFERENCES nodes(id) ON DELETE CASCADE,
53
- FOREIGN KEY (target) REFERENCES nodes(id) ON DELETE CASCADE
54
- );
55
-
56
- -- Files: Tracked source files
57
- CREATE TABLE IF NOT EXISTS files (
58
- path TEXT PRIMARY KEY,
59
- content_hash TEXT NOT NULL,
60
- language TEXT NOT NULL,
61
- size INTEGER NOT NULL,
62
- modified_at INTEGER NOT NULL,
63
- indexed_at INTEGER NOT NULL,
64
- node_count INTEGER DEFAULT 0,
65
- errors TEXT -- JSON array
66
- );
67
-
68
- -- Unresolved References: References that need resolution after full indexing
69
- CREATE TABLE IF NOT EXISTS unresolved_refs (
70
- id INTEGER PRIMARY KEY AUTOINCREMENT,
71
- from_node_id TEXT NOT NULL,
72
- reference_name TEXT NOT NULL,
73
- reference_kind TEXT NOT NULL,
74
- line INTEGER NOT NULL,
75
- col INTEGER NOT NULL,
76
- candidates TEXT, -- JSON array
77
- FOREIGN KEY (from_node_id) REFERENCES nodes(id) ON DELETE CASCADE
78
- );
79
-
80
- -- =============================================================================
81
- -- Indexes for Query Performance
82
- -- =============================================================================
83
-
84
- -- Node indexes
85
- CREATE INDEX IF NOT EXISTS idx_nodes_kind ON nodes(kind);
86
- CREATE INDEX IF NOT EXISTS idx_nodes_name ON nodes(name);
87
- CREATE INDEX IF NOT EXISTS idx_nodes_qualified_name ON nodes(qualified_name);
88
- CREATE INDEX IF NOT EXISTS idx_nodes_file_path ON nodes(file_path);
89
- CREATE INDEX IF NOT EXISTS idx_nodes_language ON nodes(language);
90
- CREATE INDEX IF NOT EXISTS idx_nodes_file_line ON nodes(file_path, start_line);
91
-
92
- -- Full-text search index on node names and docstrings
93
- CREATE VIRTUAL TABLE IF NOT EXISTS nodes_fts USING fts5(
94
- id,
95
- name,
96
- qualified_name,
97
- docstring,
98
- content='nodes',
99
- content_rowid='rowid'
100
- );
101
-
102
- -- Triggers to keep FTS index in sync
103
- CREATE TRIGGER IF NOT EXISTS nodes_ai AFTER INSERT ON nodes BEGIN
104
- INSERT INTO nodes_fts(rowid, id, name, qualified_name, docstring)
105
- VALUES (NEW.rowid, NEW.id, NEW.name, NEW.qualified_name, NEW.docstring);
106
- END;
107
-
108
- CREATE TRIGGER IF NOT EXISTS nodes_ad AFTER DELETE ON nodes BEGIN
109
- INSERT INTO nodes_fts(nodes_fts, rowid, id, name, qualified_name, docstring)
110
- VALUES ('delete', OLD.rowid, OLD.id, OLD.name, OLD.qualified_name, OLD.docstring);
111
- END;
112
-
113
- CREATE TRIGGER IF NOT EXISTS nodes_au AFTER UPDATE ON nodes BEGIN
114
- INSERT INTO nodes_fts(nodes_fts, rowid, id, name, qualified_name, docstring)
115
- VALUES ('delete', OLD.rowid, OLD.id, OLD.name, OLD.qualified_name, OLD.docstring);
116
- INSERT INTO nodes_fts(rowid, id, name, qualified_name, docstring)
117
- VALUES (NEW.rowid, NEW.id, NEW.name, NEW.qualified_name, NEW.docstring);
118
- END;
119
-
120
- -- Edge indexes
121
- CREATE INDEX IF NOT EXISTS idx_edges_source ON edges(source);
122
- CREATE INDEX IF NOT EXISTS idx_edges_target ON edges(target);
123
- CREATE INDEX IF NOT EXISTS idx_edges_kind ON edges(kind);
124
- CREATE INDEX IF NOT EXISTS idx_edges_source_kind ON edges(source, kind);
125
- CREATE INDEX IF NOT EXISTS idx_edges_target_kind ON edges(target, kind);
126
-
127
- -- File indexes
128
- CREATE INDEX IF NOT EXISTS idx_files_language ON files(language);
129
- CREATE INDEX IF NOT EXISTS idx_files_modified_at ON files(modified_at);
130
-
131
- -- Unresolved refs indexes
132
- CREATE INDEX IF NOT EXISTS idx_unresolved_from_node ON unresolved_refs(from_node_id);
133
- CREATE INDEX IF NOT EXISTS idx_unresolved_name ON unresolved_refs(reference_name);
134
-
135
- -- =============================================================================
136
- -- Vector Storage (for future semantic search)
137
- -- =============================================================================
138
-
139
- -- Vector embeddings for semantic search
140
- -- Note: No foreign key constraint to allow standalone vector testing
141
- -- The VectorManager handles node-vector relationship at the application level
142
- CREATE TABLE IF NOT EXISTS vectors (
143
- node_id TEXT PRIMARY KEY,
144
- embedding BLOB NOT NULL, -- Float32 array stored as blob
145
- model TEXT NOT NULL, -- Model used to generate embedding
146
- created_at INTEGER NOT NULL
147
- );
148
-
149
- CREATE INDEX IF NOT EXISTS idx_vectors_model ON vectors(model);
1
+ -- CodeGraph SQLite Schema
2
+ -- Version 1
3
+
4
+ -- Schema version tracking
5
+ CREATE TABLE IF NOT EXISTS schema_versions (
6
+ version INTEGER PRIMARY KEY,
7
+ applied_at INTEGER NOT NULL,
8
+ description TEXT
9
+ );
10
+
11
+ -- Insert initial version
12
+ INSERT INTO schema_versions (version, applied_at, description)
13
+ VALUES (1, strftime('%s', 'now') * 1000, 'Initial schema');
14
+
15
+ -- =============================================================================
16
+ -- Core Tables
17
+ -- =============================================================================
18
+
19
+ -- Nodes: Code symbols (functions, classes, variables, etc.)
20
+ CREATE TABLE IF NOT EXISTS nodes (
21
+ id TEXT PRIMARY KEY,
22
+ kind TEXT NOT NULL,
23
+ name TEXT NOT NULL,
24
+ qualified_name TEXT NOT NULL,
25
+ file_path TEXT NOT NULL,
26
+ language TEXT NOT NULL,
27
+ start_line INTEGER NOT NULL,
28
+ end_line INTEGER NOT NULL,
29
+ start_column INTEGER NOT NULL,
30
+ end_column INTEGER NOT NULL,
31
+ docstring TEXT,
32
+ signature TEXT,
33
+ visibility TEXT,
34
+ is_exported INTEGER DEFAULT 0,
35
+ is_async INTEGER DEFAULT 0,
36
+ is_static INTEGER DEFAULT 0,
37
+ is_abstract INTEGER DEFAULT 0,
38
+ decorators TEXT, -- JSON array
39
+ type_parameters TEXT, -- JSON array
40
+ updated_at INTEGER NOT NULL
41
+ );
42
+
43
+ -- Edges: Relationships between nodes
44
+ CREATE TABLE IF NOT EXISTS edges (
45
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
46
+ source TEXT NOT NULL,
47
+ target TEXT NOT NULL,
48
+ kind TEXT NOT NULL,
49
+ metadata TEXT, -- JSON object
50
+ line INTEGER,
51
+ col INTEGER,
52
+ provenance TEXT DEFAULT NULL,
53
+ FOREIGN KEY (source) REFERENCES nodes(id) ON DELETE CASCADE,
54
+ FOREIGN KEY (target) REFERENCES nodes(id) ON DELETE CASCADE
55
+ );
56
+
57
+ -- Files: Tracked source files
58
+ CREATE TABLE IF NOT EXISTS files (
59
+ path TEXT PRIMARY KEY,
60
+ content_hash TEXT NOT NULL,
61
+ language TEXT NOT NULL,
62
+ size INTEGER NOT NULL,
63
+ modified_at INTEGER NOT NULL,
64
+ indexed_at INTEGER NOT NULL,
65
+ node_count INTEGER DEFAULT 0,
66
+ errors TEXT -- JSON array
67
+ );
68
+
69
+ -- Unresolved References: References that need resolution after full indexing
70
+ CREATE TABLE IF NOT EXISTS unresolved_refs (
71
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
72
+ from_node_id TEXT NOT NULL,
73
+ reference_name TEXT NOT NULL,
74
+ reference_kind TEXT NOT NULL,
75
+ line INTEGER NOT NULL,
76
+ col INTEGER NOT NULL,
77
+ candidates TEXT, -- JSON array
78
+ file_path TEXT NOT NULL DEFAULT '',
79
+ language TEXT NOT NULL DEFAULT 'unknown',
80
+ FOREIGN KEY (from_node_id) REFERENCES nodes(id) ON DELETE CASCADE
81
+ );
82
+
83
+ -- =============================================================================
84
+ -- Indexes for Query Performance
85
+ -- =============================================================================
86
+
87
+ -- Node indexes
88
+ CREATE INDEX IF NOT EXISTS idx_nodes_kind ON nodes(kind);
89
+ CREATE INDEX IF NOT EXISTS idx_nodes_name ON nodes(name);
90
+ CREATE INDEX IF NOT EXISTS idx_nodes_qualified_name ON nodes(qualified_name);
91
+ CREATE INDEX IF NOT EXISTS idx_nodes_file_path ON nodes(file_path);
92
+ CREATE INDEX IF NOT EXISTS idx_nodes_language ON nodes(language);
93
+ CREATE INDEX IF NOT EXISTS idx_nodes_file_line ON nodes(file_path, start_line);
94
+
95
+ -- Full-text search index on node names, docstrings, and signatures
96
+ CREATE VIRTUAL TABLE IF NOT EXISTS nodes_fts USING fts5(
97
+ id,
98
+ name,
99
+ qualified_name,
100
+ docstring,
101
+ signature,
102
+ content='nodes',
103
+ content_rowid='rowid'
104
+ );
105
+
106
+ -- Triggers to keep FTS index in sync
107
+ CREATE TRIGGER IF NOT EXISTS nodes_ai AFTER INSERT ON nodes BEGIN
108
+ INSERT INTO nodes_fts(rowid, id, name, qualified_name, docstring, signature)
109
+ VALUES (NEW.rowid, NEW.id, NEW.name, NEW.qualified_name, NEW.docstring, NEW.signature);
110
+ END;
111
+
112
+ CREATE TRIGGER IF NOT EXISTS nodes_ad AFTER DELETE ON nodes BEGIN
113
+ INSERT INTO nodes_fts(nodes_fts, rowid, id, name, qualified_name, docstring, signature)
114
+ VALUES ('delete', OLD.rowid, OLD.id, OLD.name, OLD.qualified_name, OLD.docstring, OLD.signature);
115
+ END;
116
+
117
+ CREATE TRIGGER IF NOT EXISTS nodes_au AFTER UPDATE ON nodes BEGIN
118
+ INSERT INTO nodes_fts(nodes_fts, rowid, id, name, qualified_name, docstring, signature)
119
+ VALUES ('delete', OLD.rowid, OLD.id, OLD.name, OLD.qualified_name, OLD.docstring, OLD.signature);
120
+ INSERT INTO nodes_fts(rowid, id, name, qualified_name, docstring, signature)
121
+ VALUES (NEW.rowid, NEW.id, NEW.name, NEW.qualified_name, NEW.docstring, NEW.signature);
122
+ END;
123
+
124
+ -- Edge indexes
125
+ CREATE INDEX IF NOT EXISTS idx_edges_source ON edges(source);
126
+ CREATE INDEX IF NOT EXISTS idx_edges_target ON edges(target);
127
+ CREATE INDEX IF NOT EXISTS idx_edges_kind ON edges(kind);
128
+ CREATE INDEX IF NOT EXISTS idx_edges_source_kind ON edges(source, kind);
129
+ CREATE INDEX IF NOT EXISTS idx_edges_target_kind ON edges(target, kind);
130
+
131
+ -- File indexes
132
+ CREATE INDEX IF NOT EXISTS idx_files_language ON files(language);
133
+ CREATE INDEX IF NOT EXISTS idx_files_modified_at ON files(modified_at);
134
+
135
+ -- Unresolved refs indexes
136
+ CREATE INDEX IF NOT EXISTS idx_unresolved_from_node ON unresolved_refs(from_node_id);
137
+ CREATE INDEX IF NOT EXISTS idx_unresolved_name ON unresolved_refs(reference_name);
138
+ CREATE INDEX IF NOT EXISTS idx_unresolved_file_path ON unresolved_refs(file_path);
139
+ CREATE INDEX IF NOT EXISTS idx_unresolved_from_name ON unresolved_refs(from_node_id, reference_name);
140
+ CREATE INDEX IF NOT EXISTS idx_edges_provenance ON edges(provenance);
141
+
142
+ -- =============================================================================
143
+ -- Vector Storage (for future semantic search)
144
+ -- =============================================================================
145
+
146
+ -- Vector embeddings for semantic search
147
+ -- Note: No foreign key constraint to allow standalone vector testing
148
+ -- The VectorManager handles node-vector relationship at the application level
149
+ CREATE TABLE IF NOT EXISTS vectors (
150
+ node_id TEXT PRIMARY KEY,
151
+ embedding BLOB NOT NULL, -- Float32 array stored as blob
152
+ model TEXT NOT NULL, -- Model used to generate embedding
153
+ created_at INTEGER NOT NULL
154
+ );
155
+
156
+ CREATE INDEX IF NOT EXISTS idx_vectors_model ON vectors(model);
157
+
158
+ -- Project metadata for version/provenance tracking
159
+ CREATE TABLE IF NOT EXISTS project_metadata (
160
+ key TEXT PRIMARY KEY,
161
+ value TEXT NOT NULL,
162
+ updated_at INTEGER NOT NULL
163
+ );
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Directory Management
3
3
  *
4
- * Manages the .codegraph/ directory structure.
4
+ * Manages the .codegraph/ directory structure for CodeGraph data.
5
5
  */
6
6
  /**
7
7
  * CodeGraph directory name
@@ -13,10 +13,22 @@ export declare const CODEGRAPH_DIR = ".codegraph";
13
13
  export declare function getCodeGraphDir(projectRoot: string): string;
14
14
  /**
15
15
  * Check if a project has been initialized with CodeGraph
16
+ * Requires both .codegraph/ directory AND codegraph.db to exist
16
17
  */
17
18
  export declare function isInitialized(projectRoot: string): boolean;
19
+ /**
20
+ * Find the nearest parent directory containing .codegraph/
21
+ *
22
+ * Walks up from the given path to find a CodeGraph-initialized project,
23
+ * similar to how git finds .git/ directories.
24
+ *
25
+ * @param startPath - Directory to start searching from
26
+ * @returns The project root containing .codegraph/, or null if not found
27
+ */
28
+ export declare function findNearestCodeGraphRoot(startPath: string): string | null;
18
29
  /**
19
30
  * Create the .codegraph directory structure
31
+ * Note: Only throws if codegraph.db already exists, not just if .codegraph/ exists.
20
32
  */
21
33
  export declare function createDirectory(projectRoot: string): void;
22
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"directory.d.ts","sourceRoot":"","sources":["../src/directory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAG1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CA4BzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CASzD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBnE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA0B5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAQlF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG;IACtD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAwBA"}
1
+ {"version":3,"file":"directory.d.ts","sourceRoot":"","sources":["../src/directory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmBzE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAoCzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAuBzD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CA8BnE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA+B5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAYlF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG;IACtD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAwBA"}
package/dist/directory.js CHANGED
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Directory Management
4
4
  *
5
- * Manages the .codegraph/ directory structure.
5
+ * Manages the .codegraph/ directory structure for CodeGraph data.
6
6
  */
7
7
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
8
  if (k2 === undefined) k2 = k;
@@ -41,6 +41,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
41
41
  exports.CODEGRAPH_DIR = void 0;
42
42
  exports.getCodeGraphDir = getCodeGraphDir;
43
43
  exports.isInitialized = isInitialized;
44
+ exports.findNearestCodeGraphRoot = findNearestCodeGraphRoot;
44
45
  exports.createDirectory = createDirectory;
45
46
  exports.removeDirectory = removeDirectory;
46
47
  exports.listDirectoryContents = listDirectoryContents;
@@ -61,38 +62,80 @@ function getCodeGraphDir(projectRoot) {
61
62
  }
62
63
  /**
63
64
  * Check if a project has been initialized with CodeGraph
65
+ * Requires both .codegraph/ directory AND codegraph.db to exist
64
66
  */
65
67
  function isInitialized(projectRoot) {
66
68
  const codegraphDir = getCodeGraphDir(projectRoot);
67
- return fs.existsSync(codegraphDir) && fs.statSync(codegraphDir).isDirectory();
69
+ if (!fs.existsSync(codegraphDir) || !fs.statSync(codegraphDir).isDirectory()) {
70
+ return false;
71
+ }
72
+ // Must have codegraph.db, not just .codegraph folder
73
+ const dbPath = path.join(codegraphDir, 'codegraph.db');
74
+ return fs.existsSync(dbPath);
75
+ }
76
+ /**
77
+ * Find the nearest parent directory containing .codegraph/
78
+ *
79
+ * Walks up from the given path to find a CodeGraph-initialized project,
80
+ * similar to how git finds .git/ directories.
81
+ *
82
+ * @param startPath - Directory to start searching from
83
+ * @returns The project root containing .codegraph/, or null if not found
84
+ */
85
+ function findNearestCodeGraphRoot(startPath) {
86
+ let current = path.resolve(startPath);
87
+ const root = path.parse(current).root;
88
+ while (current !== root) {
89
+ if (isInitialized(current)) {
90
+ return current;
91
+ }
92
+ const parent = path.dirname(current);
93
+ if (parent === current)
94
+ break; // Reached filesystem root
95
+ current = parent;
96
+ }
97
+ // Check root as well
98
+ if (isInitialized(current)) {
99
+ return current;
100
+ }
101
+ return null;
68
102
  }
69
103
  /**
70
104
  * Create the .codegraph directory structure
105
+ * Note: Only throws if codegraph.db already exists, not just if .codegraph/ exists.
71
106
  */
72
107
  function createDirectory(projectRoot) {
73
108
  const codegraphDir = getCodeGraphDir(projectRoot);
74
- if (fs.existsSync(codegraphDir)) {
109
+ const dbPath = path.join(codegraphDir, 'codegraph.db');
110
+ // Only throw if CodeGraph is actually initialized (db exists)
111
+ // .codegraph/ folder alone is fine
112
+ if (fs.existsSync(dbPath)) {
75
113
  throw new Error(`CodeGraph already initialized in ${projectRoot}`);
76
114
  }
77
- // Create main directory
115
+ // Create main directory (if it doesn't exist)
78
116
  fs.mkdirSync(codegraphDir, { recursive: true });
79
- // Create .gitignore inside .codegraph
117
+ // Create .gitignore inside .codegraph (if it doesn't exist)
80
118
  const gitignorePath = path.join(codegraphDir, '.gitignore');
81
- const gitignoreContent = `# CodeGraph data files
82
- # These are local to each machine and should not be committed
83
-
84
- # Database
85
- *.db
86
- *.db-wal
87
- *.db-shm
88
-
89
- # Cache
90
- cache/
91
-
92
- # Logs
93
- *.log
119
+ if (!fs.existsSync(gitignorePath)) {
120
+ const gitignoreContent = `# CodeGraph data files
121
+ # These are local to each machine and should not be committed
122
+
123
+ # Database
124
+ *.db
125
+ *.db-wal
126
+ *.db-shm
127
+
128
+ # Cache
129
+ cache/
130
+
131
+ # Logs
132
+ *.log
133
+
134
+ # Hook markers
135
+ .dirty
94
136
  `;
95
- fs.writeFileSync(gitignorePath, gitignoreContent, 'utf-8');
137
+ fs.writeFileSync(gitignorePath, gitignoreContent, 'utf-8');
138
+ }
96
139
  }
97
140
  /**
98
141
  * Remove the .codegraph directory
@@ -102,6 +145,18 @@ function removeDirectory(projectRoot) {
102
145
  if (!fs.existsSync(codegraphDir)) {
103
146
  return;
104
147
  }
148
+ // Verify .codegraph is a real directory, not a symlink pointing elsewhere
149
+ const lstat = fs.lstatSync(codegraphDir);
150
+ if (lstat.isSymbolicLink()) {
151
+ // Only remove the symlink itself, never follow it for recursive delete
152
+ fs.unlinkSync(codegraphDir);
153
+ return;
154
+ }
155
+ if (!lstat.isDirectory()) {
156
+ // Not a directory - remove the single file
157
+ fs.unlinkSync(codegraphDir);
158
+ return;
159
+ }
105
160
  // Recursively remove directory
106
161
  fs.rmSync(codegraphDir, { recursive: true, force: true });
107
162
  }
@@ -118,6 +173,10 @@ function listDirectoryContents(projectRoot) {
118
173
  const entries = fs.readdirSync(dir, { withFileTypes: true });
119
174
  for (const entry of entries) {
120
175
  const relativePath = prefix ? `${prefix}/${entry.name}` : entry.name;
176
+ // Skip symlinks to prevent following links outside .codegraph
177
+ if (entry.isSymbolicLink()) {
178
+ continue;
179
+ }
121
180
  if (entry.isDirectory()) {
122
181
  walkDir(path.join(dir, entry.name), relativePath);
123
182
  }
@@ -141,6 +200,10 @@ function getDirectorySize(projectRoot) {
141
200
  function walkDir(dir) {
142
201
  const entries = fs.readdirSync(dir, { withFileTypes: true });
143
202
  for (const entry of entries) {
203
+ // Skip symlinks to prevent following links outside .codegraph
204
+ if (entry.isSymbolicLink()) {
205
+ continue;
206
+ }
144
207
  const fullPath = path.join(dir, entry.name);
145
208
  if (entry.isDirectory()) {
146
209
  walkDir(fullPath);
@@ -158,6 +221,9 @@ function getDirectorySize(projectRoot) {
158
221
  * Ensure a subdirectory exists within .codegraph
159
222
  */
160
223
  function ensureSubdirectory(projectRoot, subdirName) {
224
+ if (subdirName.includes('..') || subdirName.includes(path.sep) || subdirName.includes('/')) {
225
+ throw new Error(`Invalid subdirectory name: ${subdirName}`);
226
+ }
161
227
  const subdirPath = path.join(getCodeGraphDir(projectRoot), subdirName);
162
228
  if (!fs.existsSync(subdirPath)) {
163
229
  fs.mkdirSync(subdirPath, { recursive: true });
@@ -1 +1 @@
1
- {"version":3,"file":"directory.js","sourceRoot":"","sources":["../src/directory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"directory.js","sourceRoot":"","sources":["../src/directory.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -130,7 +130,7 @@ export declare function logDebug(message: string, context?: Record<string, unkno
130
130
  */
131
131
  export declare function logWarn(message: string, context?: Record<string, unknown>): void;
132
132
  /**
133
- * Log an error message
133
+ * Log an error message (also sends to Sentry if initialized)
134
134
  */
135
135
  export declare function logError(message: string, context?: Record<string, unknown>): void;
136
136
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/errors.js CHANGED
@@ -211,9 +211,15 @@ function logWarn(message, context) {
211
211
  currentLogger.warn(message, context);
212
212
  }
213
213
  /**
214
- * Log an error message
214
+ * Log an error message (also sends to Sentry if initialized)
215
215
  */
216
216
  function logError(message, context) {
217
217
  currentLogger.error(message, context);
218
+ // Lazy import to avoid circular deps
219
+ try {
220
+ const { captureMessage } = require('./sentry');
221
+ captureMessage(message, context);
222
+ }
223
+ catch { }
218
224
  }
219
225
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Grammar Loading and Caching
3
3
  *
4
- * Manages tree-sitter language grammars.
4
+ * Uses lazy per-language loading so one missing native grammar does not
5
+ * break extraction for all other languages.
5
6
  */
6
7
  import Parser from 'tree-sitter';
7
8
  import { Language } from '../types';
@@ -18,17 +19,21 @@ export declare function getParser(language: Language): Parser | null;
18
19
  */
19
20
  export declare function detectLanguage(filePath: string): Language;
20
21
  /**
21
- * Check if a language is supported
22
+ * Check if a language is supported by currently available parsers.
22
23
  */
23
24
  export declare function isLanguageSupported(language: Language): boolean;
24
25
  /**
25
- * Get all supported languages
26
+ * Get all currently supported languages.
26
27
  */
27
28
  export declare function getSupportedLanguages(): Language[];
28
29
  /**
29
- * Clear the parser cache (useful for testing)
30
+ * Clear parser/grammar caches (useful for testing)
30
31
  */
31
32
  export declare function clearParserCache(): void;
33
+ /**
34
+ * Report grammars that failed to load.
35
+ */
36
+ export declare function getUnavailableGrammarErrors(): Partial<Record<Language, string>>;
32
37
  /**
33
38
  * Get language display name
34
39
  */