ts-knowledge-graph 0.1.1

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 (68) hide show
  1. package/.env-sample +34 -0
  2. package/LICENSE +21 -0
  3. package/README.md +153 -0
  4. package/dist/agent/agent-tools.d.ts +13 -0
  5. package/dist/agent/agent-tools.d.ts.map +1 -0
  6. package/dist/agent/agent-tools.js +153 -0
  7. package/dist/agent/agent-tools.js.map +1 -0
  8. package/dist/agent/code-editor.d.ts +18 -0
  9. package/dist/agent/code-editor.d.ts.map +1 -0
  10. package/dist/agent/code-editor.js +43 -0
  11. package/dist/agent/code-editor.js.map +1 -0
  12. package/dist/agent/optimizer-agent.d.ts +30 -0
  13. package/dist/agent/optimizer-agent.d.ts.map +1 -0
  14. package/dist/agent/optimizer-agent.js +97 -0
  15. package/dist/agent/optimizer-agent.js.map +1 -0
  16. package/dist/agent/verifier.d.ts +9 -0
  17. package/dist/agent/verifier.d.ts.map +1 -0
  18. package/dist/agent/verifier.js +19 -0
  19. package/dist/agent/verifier.js.map +1 -0
  20. package/dist/cli.d.ts +14 -0
  21. package/dist/cli.d.ts.map +1 -0
  22. package/dist/cli.js +221 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/extract/graph-builder.d.ts +16 -0
  25. package/dist/extract/graph-builder.d.ts.map +1 -0
  26. package/dist/extract/graph-builder.js +39 -0
  27. package/dist/extract/graph-builder.js.map +1 -0
  28. package/dist/extract/node-id.d.ts +8 -0
  29. package/dist/extract/node-id.d.ts.map +1 -0
  30. package/dist/extract/node-id.js +22 -0
  31. package/dist/extract/node-id.js.map +1 -0
  32. package/dist/extract/project-loader.d.ts +5 -0
  33. package/dist/extract/project-loader.d.ts.map +1 -0
  34. package/dist/extract/project-loader.js +19 -0
  35. package/dist/extract/project-loader.js.map +1 -0
  36. package/dist/extract/semantic-extractor.d.ts +22 -0
  37. package/dist/extract/semantic-extractor.d.ts.map +1 -0
  38. package/dist/extract/semantic-extractor.js +254 -0
  39. package/dist/extract/semantic-extractor.js.map +1 -0
  40. package/dist/extract/structural-extractor.d.ts +18 -0
  41. package/dist/extract/structural-extractor.d.ts.map +1 -0
  42. package/dist/extract/structural-extractor.js +97 -0
  43. package/dist/extract/structural-extractor.js.map +1 -0
  44. package/dist/query/graph-query.d.ts +28 -0
  45. package/dist/query/graph-query.d.ts.map +1 -0
  46. package/dist/query/graph-query.js +93 -0
  47. package/dist/query/graph-query.js.map +1 -0
  48. package/dist/schema/edge.d.ts +25 -0
  49. package/dist/schema/edge.d.ts.map +1 -0
  50. package/dist/schema/edge.js +25 -0
  51. package/dist/schema/edge.js.map +1 -0
  52. package/dist/schema/node.d.ts +73 -0
  53. package/dist/schema/node.d.ts.map +1 -0
  54. package/dist/schema/node.js +31 -0
  55. package/dist/schema/node.js.map +1 -0
  56. package/dist/store/jsonl-reader.d.ts +11 -0
  57. package/dist/store/jsonl-reader.d.ts.map +1 -0
  58. package/dist/store/jsonl-reader.js +19 -0
  59. package/dist/store/jsonl-reader.js.map +1 -0
  60. package/dist/store/jsonl-store.d.ts +7 -0
  61. package/dist/store/jsonl-store.d.ts.map +1 -0
  62. package/dist/store/jsonl-store.js +13 -0
  63. package/dist/store/jsonl-store.js.map +1 -0
  64. package/dist/store/kuzu-store.d.ts +14 -0
  65. package/dist/store/kuzu-store.d.ts.map +1 -0
  66. package/dist/store/kuzu-store.js +52 -0
  67. package/dist/store/kuzu-store.js.map +1 -0
  68. package/package.json +41 -0
@@ -0,0 +1,73 @@
1
+ import { z } from 'zod';
2
+ export declare const NODE_KINDS: readonly ["Module", "Class", "Interface", "TypeAlias", "Enum", "Function", "Method", "Property", "Parameter", "Variable", "ExternalModule"];
3
+ export declare const NodeKindSchema: z.ZodEnum<["Module", "Class", "Interface", "TypeAlias", "Enum", "Function", "Method", "Property", "Parameter", "Variable", "ExternalModule"]>;
4
+ export type NodeKind = z.infer<typeof NodeKindSchema>;
5
+ export declare const RangeSchema: z.ZodObject<{
6
+ startLine: z.ZodNumber;
7
+ startColumn: z.ZodNumber;
8
+ endLine: z.ZodNumber;
9
+ endColumn: z.ZodNumber;
10
+ }, "strip", z.ZodTypeAny, {
11
+ startLine: number;
12
+ startColumn: number;
13
+ endLine: number;
14
+ endColumn: number;
15
+ }, {
16
+ startLine: number;
17
+ startColumn: number;
18
+ endLine: number;
19
+ endColumn: number;
20
+ }>;
21
+ export type Range = z.infer<typeof RangeSchema>;
22
+ export declare const GraphNodeSchema: z.ZodObject<{
23
+ id: z.ZodString;
24
+ kind: z.ZodEnum<["Module", "Class", "Interface", "TypeAlias", "Enum", "Function", "Method", "Property", "Parameter", "Variable", "ExternalModule"]>;
25
+ name: z.ZodString;
26
+ filePath: z.ZodString;
27
+ range: z.ZodOptional<z.ZodObject<{
28
+ startLine: z.ZodNumber;
29
+ startColumn: z.ZodNumber;
30
+ endLine: z.ZodNumber;
31
+ endColumn: z.ZodNumber;
32
+ }, "strip", z.ZodTypeAny, {
33
+ startLine: number;
34
+ startColumn: number;
35
+ endLine: number;
36
+ endColumn: number;
37
+ }, {
38
+ startLine: number;
39
+ startColumn: number;
40
+ endLine: number;
41
+ endColumn: number;
42
+ }>>;
43
+ exported: z.ZodOptional<z.ZodBoolean>;
44
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
45
+ }, "strip", z.ZodTypeAny, {
46
+ id: string;
47
+ kind: "Module" | "Class" | "Interface" | "TypeAlias" | "Enum" | "Function" | "Method" | "Property" | "Parameter" | "Variable" | "ExternalModule";
48
+ name: string;
49
+ filePath: string;
50
+ metadata?: Record<string, unknown> | undefined;
51
+ range?: {
52
+ startLine: number;
53
+ startColumn: number;
54
+ endLine: number;
55
+ endColumn: number;
56
+ } | undefined;
57
+ exported?: boolean | undefined;
58
+ }, {
59
+ id: string;
60
+ kind: "Module" | "Class" | "Interface" | "TypeAlias" | "Enum" | "Function" | "Method" | "Property" | "Parameter" | "Variable" | "ExternalModule";
61
+ name: string;
62
+ filePath: string;
63
+ metadata?: Record<string, unknown> | undefined;
64
+ range?: {
65
+ startLine: number;
66
+ startColumn: number;
67
+ endLine: number;
68
+ endColumn: number;
69
+ } | undefined;
70
+ exported?: boolean | undefined;
71
+ }>;
72
+ export type GraphNode = z.infer<typeof GraphNodeSchema>;
73
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/schema/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,UAAU,6IAYb,CAAC;AAEX,eAAO,MAAM,cAAc,+IAAqB,CAAC;AACjD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;EAKtB,CAAC;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEhD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { z } from 'zod';
2
+ export const NODE_KINDS = [
3
+ 'Module',
4
+ 'Class',
5
+ 'Interface',
6
+ 'TypeAlias',
7
+ 'Enum',
8
+ 'Function',
9
+ 'Method',
10
+ 'Property',
11
+ 'Parameter',
12
+ 'Variable',
13
+ 'ExternalModule',
14
+ ];
15
+ export const NodeKindSchema = z.enum(NODE_KINDS);
16
+ export const RangeSchema = z.object({
17
+ startLine: z.number().int(),
18
+ startColumn: z.number().int(),
19
+ endLine: z.number().int(),
20
+ endColumn: z.number().int(),
21
+ });
22
+ export const GraphNodeSchema = z.object({
23
+ id: z.string(),
24
+ kind: NodeKindSchema,
25
+ name: z.string(),
26
+ filePath: z.string(),
27
+ range: RangeSchema.optional(),
28
+ exported: z.boolean().optional(),
29
+ metadata: z.record(z.unknown()).optional(),
30
+ });
31
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/schema/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,QAAQ;IACR,OAAO;IACP,WAAW;IACX,WAAW;IACX,MAAM;IACN,UAAU;IACV,QAAQ;IACR,UAAU;IACV,WAAW;IACX,UAAU;IACV,gBAAgB;CACP,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAGjD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;CAC3B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { GraphEdge } from '../schema/edge.js';
2
+ import { GraphNode } from '../schema/node.js';
3
+ export type GraphData = {
4
+ nodes: GraphNode[];
5
+ edges: GraphEdge[];
6
+ };
7
+ export declare class JsonlReader {
8
+ static read(dir: string): Promise<GraphData>;
9
+ private static readLines;
10
+ }
11
+ //# sourceMappingURL=jsonl-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonl-reader.d.ts","sourceRoot":"","sources":["../../src/store/jsonl-reader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG;IACvB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;CACnB,CAAC;AAEF,qBAAa,WAAW;WACV,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;mBAM7B,SAAS;CAO9B"}
@@ -0,0 +1,19 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { GraphEdgeSchema } from '../schema/edge.js';
4
+ import { GraphNodeSchema } from '../schema/node.js';
5
+ export class JsonlReader {
6
+ static async read(dir) {
7
+ const nodes = await JsonlReader.readLines(join(dir, 'nodes.jsonl'), GraphNodeSchema);
8
+ const edges = await JsonlReader.readLines(join(dir, 'edges.jsonl'), GraphEdgeSchema);
9
+ return { nodes, edges };
10
+ }
11
+ static async readLines(path, schema) {
12
+ const content = await readFile(path, 'utf8');
13
+ return content
14
+ .split('\n')
15
+ .filter((line) => line.trim().length > 0)
16
+ .map((line) => schema.parse(JSON.parse(line)));
17
+ }
18
+ }
19
+ //# sourceMappingURL=jsonl-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonl-reader.js","sourceRoot":"","sources":["../../src/store/jsonl-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAa,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAa,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAO/D,MAAM,OAAO,WAAW;IACvB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAW;QAC5B,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,CAAC;QACrF,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,CAAC;QACrF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAI,IAAY,EAAE,MAAoB;QACnE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,OAAO;aACZ,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;aACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;CACD"}
@@ -0,0 +1,7 @@
1
+ import { GraphEdge } from '../schema/edge.js';
2
+ import { GraphNode } from '../schema/node.js';
3
+ export declare class JsonlStore {
4
+ static write(outDir: string, nodes: GraphNode[], edges: GraphEdge[]): Promise<void>;
5
+ private static serialize;
6
+ }
7
+ //# sourceMappingURL=jsonl-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonl-store.d.ts","sourceRoot":"","sources":["../../src/store/jsonl-store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,UAAU;WACT,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzF,OAAO,CAAC,MAAM,CAAC,SAAS;CAGxB"}
@@ -0,0 +1,13 @@
1
+ import { mkdir, writeFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ export class JsonlStore {
4
+ static async write(outDir, nodes, edges) {
5
+ await mkdir(outDir, { recursive: true });
6
+ await writeFile(join(outDir, 'nodes.jsonl'), JsonlStore.serialize(nodes), 'utf8');
7
+ await writeFile(join(outDir, 'edges.jsonl'), JsonlStore.serialize(edges), 'utf8');
8
+ }
9
+ static serialize(rows) {
10
+ return rows.map((row) => JSON.stringify(row)).join('\n') + '\n';
11
+ }
12
+ }
13
+ //# sourceMappingURL=jsonl-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonl-store.js","sourceRoot":"","sources":["../../src/store/jsonl-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,OAAO,UAAU;IACtB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,KAAkB,EAAE,KAAkB;QACxE,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;QAClF,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,IAAe;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACjE,CAAC;CACD"}
@@ -0,0 +1,14 @@
1
+ import type { KuzuValue } from 'kuzu';
2
+ import { GraphEdge } from '../schema/edge.js';
3
+ import { GraphNode } from '../schema/node.js';
4
+ export declare class KuzuStore {
5
+ private readonly db;
6
+ private readonly conn;
7
+ constructor(dbPath: string);
8
+ initSchema(): Promise<void>;
9
+ load(nodes: GraphNode[], edges: GraphEdge[]): Promise<void>;
10
+ run(cypher: string, params?: Record<string, KuzuValue>): Promise<Record<string, KuzuValue>[]>;
11
+ close(): Promise<void>;
12
+ private static first;
13
+ }
14
+ //# sourceMappingURL=kuzu-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kuzu-store.d.ts","sourceRoot":"","sources":["../../src/store/kuzu-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAO9C,qBAAa,SAAS;IACrB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,MAAM,EAAE,MAAM;IAMpB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB3D,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;IAQ7F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,OAAO,CAAC,MAAM,CAAC,KAAK;CAGpB"}
@@ -0,0 +1,52 @@
1
+ import { mkdirSync } from 'node:fs';
2
+ import { dirname } from 'node:path';
3
+ import { Connection, Database } from 'kuzu';
4
+ const SCHEMA = [
5
+ 'CREATE NODE TABLE IF NOT EXISTS GraphNode (id STRING, kind STRING, name STRING, filePath STRING, exported BOOLEAN, startLine INT64, endLine INT64, PRIMARY KEY (id))',
6
+ 'CREATE REL TABLE IF NOT EXISTS Edge (FROM GraphNode TO GraphNode, kind STRING)',
7
+ ];
8
+ export class KuzuStore {
9
+ constructor(dbPath) {
10
+ mkdirSync(dirname(dbPath), { recursive: true });
11
+ this.db = new Database(dbPath);
12
+ this.conn = new Connection(this.db);
13
+ }
14
+ async initSchema() {
15
+ for (const statement of SCHEMA) {
16
+ await this.conn.query(statement);
17
+ }
18
+ }
19
+ async load(nodes, edges) {
20
+ const nodeStmt = await this.conn.prepare('MERGE (n:GraphNode {id: $id}) SET n.kind = $kind, n.name = $name, n.filePath = $filePath, n.exported = $exported, n.startLine = $startLine, n.endLine = $endLine');
21
+ for (const node of nodes) {
22
+ await this.conn.execute(nodeStmt, {
23
+ id: node.id,
24
+ kind: node.kind,
25
+ name: node.name,
26
+ filePath: node.filePath,
27
+ exported: node.exported ?? false,
28
+ startLine: node.range?.startLine ?? 0,
29
+ endLine: node.range?.endLine ?? 0,
30
+ });
31
+ }
32
+ const edgeStmt = await this.conn.prepare('MATCH (f:GraphNode {id: $from}), (t:GraphNode {id: $to}) MERGE (f)-[:Edge {kind: $kind}]->(t)');
33
+ for (const edge of edges) {
34
+ await this.conn.execute(edgeStmt, { from: edge.from, to: edge.to, kind: edge.kind });
35
+ }
36
+ }
37
+ async run(cypher, params) {
38
+ if (params === undefined) {
39
+ return KuzuStore.first(await this.conn.query(cypher)).getAll();
40
+ }
41
+ const stmt = await this.conn.prepare(cypher);
42
+ return KuzuStore.first(await this.conn.execute(stmt, params)).getAll();
43
+ }
44
+ async close() {
45
+ await this.conn.close();
46
+ await this.db.close();
47
+ }
48
+ static first(result) {
49
+ return Array.isArray(result) ? result[0] : result;
50
+ }
51
+ }
52
+ //# sourceMappingURL=kuzu-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kuzu-store.js","sourceRoot":"","sources":["../../src/store/kuzu-store.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "ts-knowledge-graph",
3
+ "version": "0.1.1",
4
+ "description": "Parse TypeScript source into a knowledge graph for autonomous code optimization",
5
+ "type": "module",
6
+ "bin": {
7
+ "ts-knowledge-graph": "dist/cli.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "README.md",
12
+ "LICENSE",
13
+ ".env-sample"
14
+ ],
15
+ "engines": {
16
+ "node": ">=18"
17
+ },
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "scripts": {
22
+ "extract": "tsx src/cli.ts extract",
23
+ "dev": "tsx src/cli.ts",
24
+ "build": "tsc -p tsconfig.build.json",
25
+ "publish:all": "npm run build && npm version patch && npm publish",
26
+ "typecheck": "tsc --noEmit"
27
+ },
28
+ "dependencies": {
29
+ "chalk": "^5.3.0",
30
+ "commander": "^12.1.0",
31
+ "kuzu": "^0.11.3",
32
+ "openai": "^6.42.0",
33
+ "ts-morph": "^23.0.0",
34
+ "zod": "^3.23.8"
35
+ },
36
+ "devDependencies": {
37
+ "@types/node": "^20.14.0",
38
+ "tsx": "^4.16.0",
39
+ "typescript": "^5.5.0"
40
+ }
41
+ }