@mduenas/codegraph 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +641 -0
- package/dist/bin/codegraph.d.ts +20 -0
- package/dist/bin/codegraph.d.ts.map +1 -0
- package/dist/bin/codegraph.js +704 -0
- package/dist/bin/codegraph.js.map +1 -0
- package/dist/config.d.ts +51 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +291 -0
- package/dist/config.js.map +1 -0
- package/dist/context/formatter.d.ts +30 -0
- package/dist/context/formatter.d.ts.map +1 -0
- package/dist/context/formatter.js +244 -0
- package/dist/context/formatter.js.map +1 -0
- package/dist/context/index.d.ts +86 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +402 -0
- package/dist/context/index.js.map +1 -0
- package/dist/db/index.d.ts +64 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +170 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrations.d.ts +44 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +105 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/queries.d.ts +148 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +669 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/directory.d.ts +45 -0
- package/dist/directory.d.ts.map +1 -0
- package/dist/directory.js +191 -0
- package/dist/directory.js.map +1 -0
- package/dist/errors.d.ts +136 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +219 -0
- package/dist/errors.js.map +1 -0
- package/dist/extraction/grammars.d.ts +36 -0
- package/dist/extraction/grammars.d.ts.map +1 -0
- package/dist/extraction/grammars.js +181 -0
- package/dist/extraction/grammars.js.map +1 -0
- package/dist/extraction/index.d.ts +91 -0
- package/dist/extraction/index.d.ts.map +1 -0
- package/dist/extraction/index.js +493 -0
- package/dist/extraction/index.js.map +1 -0
- package/dist/extraction/tree-sitter.d.ts +176 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -0
- package/dist/extraction/tree-sitter.js +1798 -0
- package/dist/extraction/tree-sitter.js.map +1 -0
- package/dist/graph/index.d.ts +8 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +13 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/queries.d.ts +106 -0
- package/dist/graph/queries.d.ts.map +1 -0
- package/dist/graph/queries.js +355 -0
- package/dist/graph/queries.js.map +1 -0
- package/dist/graph/traversal.d.ts +127 -0
- package/dist/graph/traversal.d.ts.map +1 -0
- package/dist/graph/traversal.js +465 -0
- package/dist/graph/traversal.js.map +1 -0
- package/dist/index.d.ts +496 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +818 -0
- package/dist/index.js.map +1 -0
- package/dist/installer/banner.d.ts +40 -0
- package/dist/installer/banner.d.ts.map +1 -0
- package/dist/installer/banner.js +162 -0
- package/dist/installer/banner.js.map +1 -0
- package/dist/installer/claude-md-template.d.ts +10 -0
- package/dist/installer/claude-md-template.d.ts.map +1 -0
- package/dist/installer/claude-md-template.js +46 -0
- package/dist/installer/claude-md-template.js.map +1 -0
- package/dist/installer/config-writer.d.ts +36 -0
- package/dist/installer/config-writer.d.ts.map +1 -0
- package/dist/installer/config-writer.js +282 -0
- package/dist/installer/config-writer.js.map +1 -0
- package/dist/installer/index.d.ts +13 -0
- package/dist/installer/index.d.ts.map +1 -0
- package/dist/installer/index.js +155 -0
- package/dist/installer/index.js.map +1 -0
- package/dist/installer/prompts.d.ts +18 -0
- package/dist/installer/prompts.d.ts.map +1 -0
- package/dist/installer/prompts.js +113 -0
- package/dist/installer/prompts.js.map +1 -0
- package/dist/mcp/index.d.ts +64 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +207 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/tools.d.ts +93 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +442 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/transport.d.ts +89 -0
- package/dist/mcp/transport.d.ts.map +1 -0
- package/dist/mcp/transport.js +170 -0
- package/dist/mcp/transport.js.map +1 -0
- package/dist/resolution/frameworks/csharp.d.ts +8 -0
- package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
- package/dist/resolution/frameworks/csharp.js +274 -0
- package/dist/resolution/frameworks/csharp.js.map +1 -0
- package/dist/resolution/frameworks/express.d.ts +8 -0
- package/dist/resolution/frameworks/express.d.ts.map +1 -0
- package/dist/resolution/frameworks/express.js +208 -0
- package/dist/resolution/frameworks/express.js.map +1 -0
- package/dist/resolution/frameworks/go.d.ts +8 -0
- package/dist/resolution/frameworks/go.d.ts.map +1 -0
- package/dist/resolution/frameworks/go.js +225 -0
- package/dist/resolution/frameworks/go.js.map +1 -0
- package/dist/resolution/frameworks/index.d.ts +33 -0
- package/dist/resolution/frameworks/index.d.ts.map +1 -0
- package/dist/resolution/frameworks/index.js +113 -0
- package/dist/resolution/frameworks/index.js.map +1 -0
- package/dist/resolution/frameworks/java.d.ts +8 -0
- package/dist/resolution/frameworks/java.d.ts.map +1 -0
- package/dist/resolution/frameworks/java.js +239 -0
- package/dist/resolution/frameworks/java.js.map +1 -0
- package/dist/resolution/frameworks/laravel.d.ts +13 -0
- package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
- package/dist/resolution/frameworks/laravel.js +198 -0
- package/dist/resolution/frameworks/laravel.js.map +1 -0
- package/dist/resolution/frameworks/python.d.ts +10 -0
- package/dist/resolution/frameworks/python.d.ts.map +1 -0
- package/dist/resolution/frameworks/python.js +331 -0
- package/dist/resolution/frameworks/python.js.map +1 -0
- package/dist/resolution/frameworks/react.d.ts +8 -0
- package/dist/resolution/frameworks/react.d.ts.map +1 -0
- package/dist/resolution/frameworks/react.js +294 -0
- package/dist/resolution/frameworks/react.js.map +1 -0
- package/dist/resolution/frameworks/ruby.d.ts +8 -0
- package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
- package/dist/resolution/frameworks/ruby.js +262 -0
- package/dist/resolution/frameworks/ruby.js.map +1 -0
- package/dist/resolution/frameworks/rust.d.ts +8 -0
- package/dist/resolution/frameworks/rust.d.ts.map +1 -0
- package/dist/resolution/frameworks/rust.js +222 -0
- package/dist/resolution/frameworks/rust.js.map +1 -0
- package/dist/resolution/frameworks/swift.d.ts +10 -0
- package/dist/resolution/frameworks/swift.d.ts.map +1 -0
- package/dist/resolution/frameworks/swift.js +486 -0
- package/dist/resolution/frameworks/swift.js.map +1 -0
- package/dist/resolution/import-resolver.d.ts +20 -0
- package/dist/resolution/import-resolver.d.ts.map +1 -0
- package/dist/resolution/import-resolver.js +445 -0
- package/dist/resolution/import-resolver.js.map +1 -0
- package/dist/resolution/index.d.ts +72 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +301 -0
- package/dist/resolution/index.js.map +1 -0
- package/dist/resolution/name-matcher.d.ts +27 -0
- package/dist/resolution/name-matcher.d.ts.map +1 -0
- package/dist/resolution/name-matcher.js +210 -0
- package/dist/resolution/name-matcher.js.map +1 -0
- package/dist/resolution/types.d.ts +108 -0
- package/dist/resolution/types.d.ts.map +1 -0
- package/dist/resolution/types.js +8 -0
- package/dist/resolution/types.js.map +1 -0
- package/dist/sync/git-hooks.d.ts +66 -0
- package/dist/sync/git-hooks.d.ts.map +1 -0
- package/dist/sync/git-hooks.js +281 -0
- package/dist/sync/git-hooks.js.map +1 -0
- package/dist/sync/index.d.ts +13 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +18 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/types.d.ts +410 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +165 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +116 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +295 -0
- package/dist/utils.js.map +1 -0
- package/dist/vectors/embedder.d.ts +140 -0
- package/dist/vectors/embedder.d.ts.map +1 -0
- package/dist/vectors/embedder.js +336 -0
- package/dist/vectors/embedder.js.map +1 -0
- package/dist/vectors/index.d.ts +9 -0
- package/dist/vectors/index.d.ts.map +1 -0
- package/dist/vectors/index.js +20 -0
- package/dist/vectors/index.js.map +1 -0
- package/dist/vectors/manager.d.ts +119 -0
- package/dist/vectors/manager.d.ts.map +1 -0
- package/dist/vectors/manager.js +274 -0
- package/dist/vectors/manager.js.map +1 -0
- package/dist/vectors/search.d.ts +134 -0
- package/dist/vectors/search.d.ts.map +1 -0
- package/dist/vectors/search.js +409 -0
- package/dist/vectors/search.js.map +1 -0
- package/package.json +67 -0
- package/scripts/postinstall.js +68 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Migrations
|
|
3
|
+
*
|
|
4
|
+
* Schema versioning and migration support.
|
|
5
|
+
*/
|
|
6
|
+
import Database from 'better-sqlite3';
|
|
7
|
+
/**
|
|
8
|
+
* Current schema version
|
|
9
|
+
*/
|
|
10
|
+
export declare const CURRENT_SCHEMA_VERSION = 1;
|
|
11
|
+
/**
|
|
12
|
+
* Migration definition
|
|
13
|
+
*/
|
|
14
|
+
interface Migration {
|
|
15
|
+
version: number;
|
|
16
|
+
description: string;
|
|
17
|
+
up: (db: Database.Database) => void;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get the current schema version from the database
|
|
21
|
+
*/
|
|
22
|
+
export declare function getCurrentVersion(db: Database.Database): number;
|
|
23
|
+
/**
|
|
24
|
+
* Run all pending migrations
|
|
25
|
+
*/
|
|
26
|
+
export declare function runMigrations(db: Database.Database, fromVersion: number): void;
|
|
27
|
+
/**
|
|
28
|
+
* Check if the database needs migration
|
|
29
|
+
*/
|
|
30
|
+
export declare function needsMigration(db: Database.Database): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Get list of pending migrations
|
|
33
|
+
*/
|
|
34
|
+
export declare function getPendingMigrations(db: Database.Database): Migration[];
|
|
35
|
+
/**
|
|
36
|
+
* Get migration history from database
|
|
37
|
+
*/
|
|
38
|
+
export declare function getMigrationHistory(db: Database.Database): Array<{
|
|
39
|
+
version: number;
|
|
40
|
+
appliedAt: number;
|
|
41
|
+
description: string | null;
|
|
42
|
+
}>;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=migrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC;;GAEG;AACH,UAAU,SAAS;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC;CACrC;AAsBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAU/D;AAWD;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAiB9E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAG7D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,SAAS,EAAE,CAKvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GACpB,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAU3E"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Database Migrations
|
|
4
|
+
*
|
|
5
|
+
* Schema versioning and migration support.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.CURRENT_SCHEMA_VERSION = void 0;
|
|
9
|
+
exports.getCurrentVersion = getCurrentVersion;
|
|
10
|
+
exports.runMigrations = runMigrations;
|
|
11
|
+
exports.needsMigration = needsMigration;
|
|
12
|
+
exports.getPendingMigrations = getPendingMigrations;
|
|
13
|
+
exports.getMigrationHistory = getMigrationHistory;
|
|
14
|
+
/**
|
|
15
|
+
* Current schema version
|
|
16
|
+
*/
|
|
17
|
+
exports.CURRENT_SCHEMA_VERSION = 1;
|
|
18
|
+
/**
|
|
19
|
+
* All migrations in order
|
|
20
|
+
*
|
|
21
|
+
* Note: Version 1 is the initial schema, handled by schema.sql
|
|
22
|
+
* Future migrations go here.
|
|
23
|
+
*/
|
|
24
|
+
const migrations = [
|
|
25
|
+
// Example migration for version 2 (when needed):
|
|
26
|
+
// {
|
|
27
|
+
// version: 2,
|
|
28
|
+
// description: 'Add support for module resolution',
|
|
29
|
+
// up: (db) => {
|
|
30
|
+
// db.exec(`
|
|
31
|
+
// ALTER TABLE nodes ADD COLUMN module_path TEXT;
|
|
32
|
+
// CREATE INDEX idx_nodes_module_path ON nodes(module_path);
|
|
33
|
+
// `);
|
|
34
|
+
// },
|
|
35
|
+
// },
|
|
36
|
+
];
|
|
37
|
+
/**
|
|
38
|
+
* Get the current schema version from the database
|
|
39
|
+
*/
|
|
40
|
+
function getCurrentVersion(db) {
|
|
41
|
+
try {
|
|
42
|
+
const row = db
|
|
43
|
+
.prepare('SELECT MAX(version) as version FROM schema_versions')
|
|
44
|
+
.get();
|
|
45
|
+
return row?.version ?? 0;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Table doesn't exist yet
|
|
49
|
+
return 0;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Record a migration as applied
|
|
54
|
+
*/
|
|
55
|
+
function recordMigration(db, version, description) {
|
|
56
|
+
db.prepare('INSERT INTO schema_versions (version, applied_at, description) VALUES (?, ?, ?)').run(version, Date.now(), description);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Run all pending migrations
|
|
60
|
+
*/
|
|
61
|
+
function runMigrations(db, fromVersion) {
|
|
62
|
+
const pending = migrations.filter((m) => m.version > fromVersion);
|
|
63
|
+
if (pending.length === 0) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
// Sort by version
|
|
67
|
+
pending.sort((a, b) => a.version - b.version);
|
|
68
|
+
// Run each migration in a transaction
|
|
69
|
+
for (const migration of pending) {
|
|
70
|
+
db.transaction(() => {
|
|
71
|
+
migration.up(db);
|
|
72
|
+
recordMigration(db, migration.version, migration.description);
|
|
73
|
+
})();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Check if the database needs migration
|
|
78
|
+
*/
|
|
79
|
+
function needsMigration(db) {
|
|
80
|
+
const current = getCurrentVersion(db);
|
|
81
|
+
return current < exports.CURRENT_SCHEMA_VERSION;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get list of pending migrations
|
|
85
|
+
*/
|
|
86
|
+
function getPendingMigrations(db) {
|
|
87
|
+
const current = getCurrentVersion(db);
|
|
88
|
+
return migrations
|
|
89
|
+
.filter((m) => m.version > current)
|
|
90
|
+
.sort((a, b) => a.version - b.version);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get migration history from database
|
|
94
|
+
*/
|
|
95
|
+
function getMigrationHistory(db) {
|
|
96
|
+
const rows = db
|
|
97
|
+
.prepare('SELECT version, applied_at, description FROM schema_versions ORDER BY version')
|
|
98
|
+
.all();
|
|
99
|
+
return rows.map((row) => ({
|
|
100
|
+
version: row.version,
|
|
101
|
+
appliedAt: row.applied_at,
|
|
102
|
+
description: row.description,
|
|
103
|
+
}));
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=migrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Queries
|
|
3
|
+
*
|
|
4
|
+
* Prepared statements for CRUD operations on the knowledge graph.
|
|
5
|
+
*/
|
|
6
|
+
import Database from 'better-sqlite3';
|
|
7
|
+
import { Node, Edge, FileRecord, UnresolvedReference, NodeKind, EdgeKind, GraphStats, SearchOptions, SearchResult } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Query builder for the knowledge graph database
|
|
10
|
+
*/
|
|
11
|
+
export declare class QueryBuilder {
|
|
12
|
+
private db;
|
|
13
|
+
private nodeCache;
|
|
14
|
+
private readonly maxCacheSize;
|
|
15
|
+
private stmts;
|
|
16
|
+
constructor(db: Database.Database);
|
|
17
|
+
/**
|
|
18
|
+
* Insert a new node
|
|
19
|
+
*/
|
|
20
|
+
insertNode(node: Node): void;
|
|
21
|
+
/**
|
|
22
|
+
* Insert multiple nodes in a transaction
|
|
23
|
+
*/
|
|
24
|
+
insertNodes(nodes: Node[]): void;
|
|
25
|
+
/**
|
|
26
|
+
* Update an existing node
|
|
27
|
+
*/
|
|
28
|
+
updateNode(node: Node): void;
|
|
29
|
+
/**
|
|
30
|
+
* Delete a node by ID
|
|
31
|
+
*/
|
|
32
|
+
deleteNode(id: string): void;
|
|
33
|
+
/**
|
|
34
|
+
* Delete all nodes for a file
|
|
35
|
+
*/
|
|
36
|
+
deleteNodesByFile(filePath: string): void;
|
|
37
|
+
/**
|
|
38
|
+
* Get a node by ID
|
|
39
|
+
*/
|
|
40
|
+
getNodeById(id: string): Node | null;
|
|
41
|
+
/**
|
|
42
|
+
* Add a node to the cache, evicting oldest if needed
|
|
43
|
+
*/
|
|
44
|
+
private cacheNode;
|
|
45
|
+
/**
|
|
46
|
+
* Clear the node cache
|
|
47
|
+
*/
|
|
48
|
+
clearCache(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Get all nodes in a file
|
|
51
|
+
*/
|
|
52
|
+
getNodesByFile(filePath: string): Node[];
|
|
53
|
+
/**
|
|
54
|
+
* Get all nodes of a specific kind
|
|
55
|
+
*/
|
|
56
|
+
getNodesByKind(kind: NodeKind): Node[];
|
|
57
|
+
/**
|
|
58
|
+
* Search nodes by name using FTS with fallback to LIKE for better matching
|
|
59
|
+
*
|
|
60
|
+
* Search strategy:
|
|
61
|
+
* 1. Try FTS5 prefix match (query*) for word-start matching
|
|
62
|
+
* 2. If no results, try LIKE for substring matching (e.g., "signIn" finds "signInWithGoogle")
|
|
63
|
+
* 3. Score results based on match quality
|
|
64
|
+
*/
|
|
65
|
+
searchNodes(query: string, options?: SearchOptions): SearchResult[];
|
|
66
|
+
/**
|
|
67
|
+
* FTS5 search with prefix matching
|
|
68
|
+
*/
|
|
69
|
+
private searchNodesFTS;
|
|
70
|
+
/**
|
|
71
|
+
* LIKE-based substring search for cases where FTS doesn't match
|
|
72
|
+
* Useful for camelCase matching (e.g., "signIn" finds "signInWithGoogle")
|
|
73
|
+
*/
|
|
74
|
+
private searchNodesLike;
|
|
75
|
+
/**
|
|
76
|
+
* Insert a new edge
|
|
77
|
+
*/
|
|
78
|
+
insertEdge(edge: Edge): void;
|
|
79
|
+
/**
|
|
80
|
+
* Insert multiple edges in a transaction
|
|
81
|
+
*/
|
|
82
|
+
insertEdges(edges: Edge[]): void;
|
|
83
|
+
/**
|
|
84
|
+
* Delete all edges from a source node
|
|
85
|
+
*/
|
|
86
|
+
deleteEdgesBySource(sourceId: string): void;
|
|
87
|
+
/**
|
|
88
|
+
* Get outgoing edges from a node
|
|
89
|
+
*/
|
|
90
|
+
getOutgoingEdges(sourceId: string, kinds?: EdgeKind[]): Edge[];
|
|
91
|
+
/**
|
|
92
|
+
* Get incoming edges to a node
|
|
93
|
+
*/
|
|
94
|
+
getIncomingEdges(targetId: string, kinds?: EdgeKind[]): Edge[];
|
|
95
|
+
/**
|
|
96
|
+
* Insert or update a file record
|
|
97
|
+
*/
|
|
98
|
+
upsertFile(file: FileRecord): void;
|
|
99
|
+
/**
|
|
100
|
+
* Delete a file record and its nodes
|
|
101
|
+
*/
|
|
102
|
+
deleteFile(filePath: string): void;
|
|
103
|
+
/**
|
|
104
|
+
* Get a file record by path
|
|
105
|
+
*/
|
|
106
|
+
getFileByPath(filePath: string): FileRecord | null;
|
|
107
|
+
/**
|
|
108
|
+
* Get all tracked files
|
|
109
|
+
*/
|
|
110
|
+
getAllFiles(): FileRecord[];
|
|
111
|
+
/**
|
|
112
|
+
* Get files that need re-indexing (hash changed)
|
|
113
|
+
*/
|
|
114
|
+
getStaleFiles(currentHashes: Map<string, string>): FileRecord[];
|
|
115
|
+
/**
|
|
116
|
+
* Insert an unresolved reference
|
|
117
|
+
*/
|
|
118
|
+
insertUnresolvedRef(ref: UnresolvedReference): void;
|
|
119
|
+
/**
|
|
120
|
+
* Delete unresolved references from a node
|
|
121
|
+
*/
|
|
122
|
+
deleteUnresolvedByNode(nodeId: string): void;
|
|
123
|
+
/**
|
|
124
|
+
* Get unresolved references by name (for resolution)
|
|
125
|
+
*/
|
|
126
|
+
getUnresolvedByName(name: string): UnresolvedReference[];
|
|
127
|
+
/**
|
|
128
|
+
* Get all unresolved references
|
|
129
|
+
*/
|
|
130
|
+
getUnresolvedReferences(): UnresolvedReference[];
|
|
131
|
+
/**
|
|
132
|
+
* Delete all unresolved references (after resolution)
|
|
133
|
+
*/
|
|
134
|
+
clearUnresolvedReferences(): void;
|
|
135
|
+
/**
|
|
136
|
+
* Delete resolved references by their IDs
|
|
137
|
+
*/
|
|
138
|
+
deleteResolvedReferences(fromNodeIds: string[]): void;
|
|
139
|
+
/**
|
|
140
|
+
* Get graph statistics
|
|
141
|
+
*/
|
|
142
|
+
getStats(): GraphStats;
|
|
143
|
+
/**
|
|
144
|
+
* Clear all data from the database
|
|
145
|
+
*/
|
|
146
|
+
clear(): void;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"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"}
|