@nahisaho/musubix-dfg 1.8.5

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.
@@ -0,0 +1,557 @@
1
+ /**
2
+ * YATA Knowledge Graph integration for DFG/CFG
3
+ *
4
+ * @packageDocumentation
5
+ * @module @nahisaho/musubix-dfg/yata
6
+ */
7
+ /**
8
+ * Namespace prefixes for DFG/CFG triples
9
+ */
10
+ export const DFG_NAMESPACES = {
11
+ dfg: 'https://musubix.dev/ontology/dfg#',
12
+ cfg: 'https://musubix.dev/ontology/cfg#',
13
+ code: 'https://musubix.dev/ontology/code#',
14
+ rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
15
+ rdfs: 'http://www.w3.org/2000/01/rdf-schema#',
16
+ xsd: 'http://www.w3.org/2001/XMLSchema#',
17
+ };
18
+ /**
19
+ * Default export options
20
+ */
21
+ export const DEFAULT_EXPORT_OPTIONS = {
22
+ includeLocation: true,
23
+ includeTypes: true,
24
+ includeMetadata: true,
25
+ graphNamespace: 'code:dfg',
26
+ };
27
+ /**
28
+ * Convert Data Flow Graph to YATA triples
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const converter = new DFGToYATAConverter();
33
+ * const triples = converter.convert(dfg);
34
+ *
35
+ * // Import to YATA
36
+ * await yataLocal.importTriples(triples);
37
+ * ```
38
+ *
39
+ * @traces REQ-DFG-003
40
+ */
41
+ export class DFGToYATAConverter {
42
+ options;
43
+ constructor(options = {}) {
44
+ this.options = { ...DEFAULT_EXPORT_OPTIONS, ...options };
45
+ }
46
+ /**
47
+ * Convert DFG to triples
48
+ */
49
+ convert(dfg) {
50
+ const triples = [];
51
+ const graphUri = `${DFG_NAMESPACES.dfg}graph/${dfg.id}`;
52
+ // Graph metadata
53
+ triples.push({
54
+ subject: graphUri,
55
+ predicate: `${DFG_NAMESPACES.rdf}type`,
56
+ object: `${DFG_NAMESPACES.dfg}DataFlowGraph`,
57
+ graph: this.options.graphNamespace,
58
+ });
59
+ triples.push({
60
+ subject: graphUri,
61
+ predicate: `${DFG_NAMESPACES.dfg}filePath`,
62
+ object: `"${dfg.filePath}"`,
63
+ graph: this.options.graphNamespace,
64
+ });
65
+ triples.push({
66
+ subject: graphUri,
67
+ predicate: `${DFG_NAMESPACES.dfg}nodeCount`,
68
+ object: `"${dfg.metadata.nodeCount}"^^${DFG_NAMESPACES.xsd}integer`,
69
+ graph: this.options.graphNamespace,
70
+ });
71
+ triples.push({
72
+ subject: graphUri,
73
+ predicate: `${DFG_NAMESPACES.dfg}edgeCount`,
74
+ object: `"${dfg.metadata.edgeCount}"^^${DFG_NAMESPACES.xsd}integer`,
75
+ graph: this.options.graphNamespace,
76
+ });
77
+ // Convert nodes
78
+ for (const node of dfg.nodes.values()) {
79
+ triples.push(...this.convertDFGNode(node, graphUri));
80
+ }
81
+ // Convert edges
82
+ for (const edge of dfg.edges.values()) {
83
+ triples.push(...this.convertDFGEdge(edge, graphUri));
84
+ }
85
+ // Entry/exit points
86
+ for (const entryId of dfg.entryPoints) {
87
+ triples.push({
88
+ subject: graphUri,
89
+ predicate: `${DFG_NAMESPACES.dfg}hasEntryPoint`,
90
+ object: `${DFG_NAMESPACES.dfg}node/${entryId}`,
91
+ graph: this.options.graphNamespace,
92
+ });
93
+ }
94
+ for (const exitId of dfg.exitPoints) {
95
+ triples.push({
96
+ subject: graphUri,
97
+ predicate: `${DFG_NAMESPACES.dfg}hasExitPoint`,
98
+ object: `${DFG_NAMESPACES.dfg}node/${exitId}`,
99
+ graph: this.options.graphNamespace,
100
+ });
101
+ }
102
+ return triples;
103
+ }
104
+ convertDFGNode(node, graphUri) {
105
+ const triples = [];
106
+ const nodeUri = `${DFG_NAMESPACES.dfg}node/${node.id}`;
107
+ // Node type
108
+ triples.push({
109
+ subject: nodeUri,
110
+ predicate: `${DFG_NAMESPACES.rdf}type`,
111
+ object: `${DFG_NAMESPACES.dfg}${this.capitalize(node.type)}Node`,
112
+ graph: this.options.graphNamespace,
113
+ });
114
+ // Node belongs to graph
115
+ triples.push({
116
+ subject: graphUri,
117
+ predicate: `${DFG_NAMESPACES.dfg}hasNode`,
118
+ object: nodeUri,
119
+ graph: this.options.graphNamespace,
120
+ });
121
+ // Node properties
122
+ triples.push({
123
+ subject: nodeUri,
124
+ predicate: `${DFG_NAMESPACES.dfg}name`,
125
+ object: `"${this.escapeString(node.name)}"`,
126
+ graph: this.options.graphNamespace,
127
+ });
128
+ triples.push({
129
+ subject: nodeUri,
130
+ predicate: `${DFG_NAMESPACES.dfg}scope`,
131
+ object: `"${node.scope}"`,
132
+ graph: this.options.graphNamespace,
133
+ });
134
+ // Location
135
+ if (this.options.includeLocation) {
136
+ triples.push({
137
+ subject: nodeUri,
138
+ predicate: `${DFG_NAMESPACES.code}startLine`,
139
+ object: `"${node.location.startLine}"^^${DFG_NAMESPACES.xsd}integer`,
140
+ graph: this.options.graphNamespace,
141
+ });
142
+ triples.push({
143
+ subject: nodeUri,
144
+ predicate: `${DFG_NAMESPACES.code}endLine`,
145
+ object: `"${node.location.endLine}"^^${DFG_NAMESPACES.xsd}integer`,
146
+ graph: this.options.graphNamespace,
147
+ });
148
+ }
149
+ // Type information
150
+ if (this.options.includeTypes && node.typeInfo) {
151
+ triples.push({
152
+ subject: nodeUri,
153
+ predicate: `${DFG_NAMESPACES.code}hasType`,
154
+ object: `"${this.escapeString(node.typeInfo.fullType)}"`,
155
+ graph: this.options.graphNamespace,
156
+ });
157
+ if (node.typeInfo.nullable) {
158
+ triples.push({
159
+ subject: nodeUri,
160
+ predicate: `${DFG_NAMESPACES.code}isNullable`,
161
+ object: `"true"^^${DFG_NAMESPACES.xsd}boolean`,
162
+ graph: this.options.graphNamespace,
163
+ });
164
+ }
165
+ }
166
+ return triples;
167
+ }
168
+ convertDFGEdge(edge, graphUri) {
169
+ const triples = [];
170
+ const edgeUri = `${DFG_NAMESPACES.dfg}edge/${edge.id}`;
171
+ const sourceUri = `${DFG_NAMESPACES.dfg}node/${edge.source}`;
172
+ const targetUri = `${DFG_NAMESPACES.dfg}node/${edge.target}`;
173
+ // Edge type
174
+ triples.push({
175
+ subject: edgeUri,
176
+ predicate: `${DFG_NAMESPACES.rdf}type`,
177
+ object: `${DFG_NAMESPACES.dfg}${this.edgeTypeToClass(edge.type)}`,
178
+ graph: this.options.graphNamespace,
179
+ });
180
+ // Edge belongs to graph
181
+ triples.push({
182
+ subject: graphUri,
183
+ predicate: `${DFG_NAMESPACES.dfg}hasEdge`,
184
+ object: edgeUri,
185
+ graph: this.options.graphNamespace,
186
+ });
187
+ // Source and target
188
+ triples.push({
189
+ subject: edgeUri,
190
+ predicate: `${DFG_NAMESPACES.dfg}source`,
191
+ object: sourceUri,
192
+ graph: this.options.graphNamespace,
193
+ });
194
+ triples.push({
195
+ subject: edgeUri,
196
+ predicate: `${DFG_NAMESPACES.dfg}target`,
197
+ object: targetUri,
198
+ graph: this.options.graphNamespace,
199
+ });
200
+ // Direct relationship triple
201
+ triples.push({
202
+ subject: sourceUri,
203
+ predicate: `${DFG_NAMESPACES.dfg}${edge.type.replace(/-/g, '')}`,
204
+ object: targetUri,
205
+ graph: this.options.graphNamespace,
206
+ });
207
+ // Label
208
+ if (edge.label) {
209
+ triples.push({
210
+ subject: edgeUri,
211
+ predicate: `${DFG_NAMESPACES.rdfs}label`,
212
+ object: `"${this.escapeString(edge.label)}"`,
213
+ graph: this.options.graphNamespace,
214
+ });
215
+ }
216
+ return triples;
217
+ }
218
+ capitalize(str) {
219
+ return str
220
+ .split('-')
221
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
222
+ .join('');
223
+ }
224
+ edgeTypeToClass(type) {
225
+ const mapping = {
226
+ 'def-use': 'DefinitionUseEdge',
227
+ 'use-def': 'UseDefinitionEdge',
228
+ 'data-dep': 'DataDependencyEdge',
229
+ 'call-arg': 'CallArgumentEdge',
230
+ 'call-return': 'CallReturnEdge',
231
+ property: 'PropertyAccessEdge',
232
+ alias: 'AliasEdge',
233
+ phi: 'PhiEdge',
234
+ 'control-dep': 'ControlDependencyEdge',
235
+ };
236
+ return mapping[type] || 'Edge';
237
+ }
238
+ escapeString(str) {
239
+ return str.replace(/"/g, '\\"').replace(/\n/g, '\\n');
240
+ }
241
+ }
242
+ /**
243
+ * Convert Control Flow Graph to YATA triples
244
+ *
245
+ * @traces REQ-DFG-003
246
+ */
247
+ export class CFGToYATAConverter {
248
+ options;
249
+ constructor(options = {}) {
250
+ this.options = { ...DEFAULT_EXPORT_OPTIONS, ...options };
251
+ }
252
+ /**
253
+ * Convert CFG to triples
254
+ */
255
+ convert(cfg) {
256
+ const triples = [];
257
+ const graphUri = `${DFG_NAMESPACES.cfg}graph/${cfg.id}`;
258
+ // Graph metadata
259
+ triples.push({
260
+ subject: graphUri,
261
+ predicate: `${DFG_NAMESPACES.rdf}type`,
262
+ object: `${DFG_NAMESPACES.cfg}ControlFlowGraph`,
263
+ graph: this.options.graphNamespace,
264
+ });
265
+ triples.push({
266
+ subject: graphUri,
267
+ predicate: `${DFG_NAMESPACES.cfg}functionName`,
268
+ object: `"${cfg.functionName}"`,
269
+ graph: this.options.graphNamespace,
270
+ });
271
+ triples.push({
272
+ subject: graphUri,
273
+ predicate: `${DFG_NAMESPACES.cfg}filePath`,
274
+ object: `"${cfg.filePath}"`,
275
+ graph: this.options.graphNamespace,
276
+ });
277
+ triples.push({
278
+ subject: graphUri,
279
+ predicate: `${DFG_NAMESPACES.cfg}cyclomaticComplexity`,
280
+ object: `"${cfg.metadata.cyclomaticComplexity}"^^${DFG_NAMESPACES.xsd}integer`,
281
+ graph: this.options.graphNamespace,
282
+ });
283
+ triples.push({
284
+ subject: graphUri,
285
+ predicate: `${DFG_NAMESPACES.cfg}maxLoopDepth`,
286
+ object: `"${cfg.metadata.maxLoopDepth}"^^${DFG_NAMESPACES.xsd}integer`,
287
+ graph: this.options.graphNamespace,
288
+ });
289
+ // Convert blocks
290
+ for (const block of cfg.blocks.values()) {
291
+ triples.push(...this.convertCFGBlock(block, graphUri));
292
+ }
293
+ // Convert edges
294
+ for (const edge of cfg.edges.values()) {
295
+ triples.push(...this.convertCFGEdge(edge, graphUri));
296
+ }
297
+ // Entry block
298
+ triples.push({
299
+ subject: graphUri,
300
+ predicate: `${DFG_NAMESPACES.cfg}hasEntryBlock`,
301
+ object: `${DFG_NAMESPACES.cfg}block/${cfg.entryBlock}`,
302
+ graph: this.options.graphNamespace,
303
+ });
304
+ // Exit blocks
305
+ for (const exitId of cfg.exitBlocks) {
306
+ triples.push({
307
+ subject: graphUri,
308
+ predicate: `${DFG_NAMESPACES.cfg}hasExitBlock`,
309
+ object: `${DFG_NAMESPACES.cfg}block/${exitId}`,
310
+ graph: this.options.graphNamespace,
311
+ });
312
+ }
313
+ return triples;
314
+ }
315
+ convertCFGBlock(block, graphUri) {
316
+ const triples = [];
317
+ const blockUri = `${DFG_NAMESPACES.cfg}block/${block.id}`;
318
+ // Block type
319
+ triples.push({
320
+ subject: blockUri,
321
+ predicate: `${DFG_NAMESPACES.rdf}type`,
322
+ object: `${DFG_NAMESPACES.cfg}${this.capitalize(block.type)}Block`,
323
+ graph: this.options.graphNamespace,
324
+ });
325
+ // Block belongs to graph
326
+ triples.push({
327
+ subject: graphUri,
328
+ predicate: `${DFG_NAMESPACES.cfg}hasBlock`,
329
+ object: blockUri,
330
+ graph: this.options.graphNamespace,
331
+ });
332
+ // Block properties
333
+ triples.push({
334
+ subject: blockUri,
335
+ predicate: `${DFG_NAMESPACES.rdfs}label`,
336
+ object: `"${this.escapeString(block.label)}"`,
337
+ graph: this.options.graphNamespace,
338
+ });
339
+ triples.push({
340
+ subject: blockUri,
341
+ predicate: `${DFG_NAMESPACES.cfg}loopDepth`,
342
+ object: `"${block.loopDepth}"^^${DFG_NAMESPACES.xsd}integer`,
343
+ graph: this.options.graphNamespace,
344
+ });
345
+ // Statements
346
+ for (let i = 0; i < block.statements.length; i++) {
347
+ const stmt = block.statements[i];
348
+ const stmtUri = `${blockUri}/stmt/${i}`;
349
+ triples.push({
350
+ subject: blockUri,
351
+ predicate: `${DFG_NAMESPACES.cfg}hasStatement`,
352
+ object: stmtUri,
353
+ graph: this.options.graphNamespace,
354
+ });
355
+ triples.push({
356
+ subject: stmtUri,
357
+ predicate: `${DFG_NAMESPACES.cfg}statementText`,
358
+ object: `"${this.escapeString(stmt.text)}"`,
359
+ graph: this.options.graphNamespace,
360
+ });
361
+ triples.push({
362
+ subject: stmtUri,
363
+ predicate: `${DFG_NAMESPACES.cfg}statementIndex`,
364
+ object: `"${i}"^^${DFG_NAMESPACES.xsd}integer`,
365
+ graph: this.options.graphNamespace,
366
+ });
367
+ }
368
+ // Location
369
+ if (this.options.includeLocation) {
370
+ triples.push({
371
+ subject: blockUri,
372
+ predicate: `${DFG_NAMESPACES.code}startLine`,
373
+ object: `"${block.location.startLine}"^^${DFG_NAMESPACES.xsd}integer`,
374
+ graph: this.options.graphNamespace,
375
+ });
376
+ }
377
+ return triples;
378
+ }
379
+ convertCFGEdge(edge, graphUri) {
380
+ const triples = [];
381
+ const edgeUri = `${DFG_NAMESPACES.cfg}edge/${edge.id}`;
382
+ const sourceUri = `${DFG_NAMESPACES.cfg}block/${edge.source}`;
383
+ const targetUri = `${DFG_NAMESPACES.cfg}block/${edge.target}`;
384
+ // Edge type
385
+ triples.push({
386
+ subject: edgeUri,
387
+ predicate: `${DFG_NAMESPACES.rdf}type`,
388
+ object: `${DFG_NAMESPACES.cfg}${this.edgeTypeToClass(edge.type)}`,
389
+ graph: this.options.graphNamespace,
390
+ });
391
+ // Edge belongs to graph
392
+ triples.push({
393
+ subject: graphUri,
394
+ predicate: `${DFG_NAMESPACES.cfg}hasEdge`,
395
+ object: edgeUri,
396
+ graph: this.options.graphNamespace,
397
+ });
398
+ // Source and target
399
+ triples.push({
400
+ subject: edgeUri,
401
+ predicate: `${DFG_NAMESPACES.cfg}source`,
402
+ object: sourceUri,
403
+ graph: this.options.graphNamespace,
404
+ });
405
+ triples.push({
406
+ subject: edgeUri,
407
+ predicate: `${DFG_NAMESPACES.cfg}target`,
408
+ object: targetUri,
409
+ graph: this.options.graphNamespace,
410
+ });
411
+ // Direct successor relationship
412
+ triples.push({
413
+ subject: sourceUri,
414
+ predicate: `${DFG_NAMESPACES.cfg}successor`,
415
+ object: targetUri,
416
+ graph: this.options.graphNamespace,
417
+ });
418
+ // Condition
419
+ if (edge.condition) {
420
+ triples.push({
421
+ subject: edgeUri,
422
+ predicate: `${DFG_NAMESPACES.cfg}condition`,
423
+ object: `"${this.escapeString(edge.condition)}"`,
424
+ graph: this.options.graphNamespace,
425
+ });
426
+ }
427
+ // Back edge marker
428
+ if (edge.isBackEdge) {
429
+ triples.push({
430
+ subject: edgeUri,
431
+ predicate: `${DFG_NAMESPACES.cfg}isBackEdge`,
432
+ object: `"true"^^${DFG_NAMESPACES.xsd}boolean`,
433
+ graph: this.options.graphNamespace,
434
+ });
435
+ }
436
+ return triples;
437
+ }
438
+ capitalize(str) {
439
+ return str
440
+ .split('-')
441
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
442
+ .join('');
443
+ }
444
+ edgeTypeToClass(type) {
445
+ const mapping = {
446
+ sequential: 'SequentialEdge',
447
+ 'conditional-true': 'ConditionalTrueEdge',
448
+ 'conditional-false': 'ConditionalFalseEdge',
449
+ 'loop-back': 'LoopBackEdge',
450
+ 'loop-exit': 'LoopExitEdge',
451
+ 'switch-case': 'SwitchCaseEdge',
452
+ 'switch-default': 'SwitchDefaultEdge',
453
+ exception: 'ExceptionEdge',
454
+ return: 'ReturnEdge',
455
+ break: 'BreakEdge',
456
+ continue: 'ContinueEdge',
457
+ };
458
+ return mapping[type] || 'Edge';
459
+ }
460
+ escapeString(str) {
461
+ return str.replace(/"/g, '\\"').replace(/\n/g, '\\n');
462
+ }
463
+ }
464
+ /**
465
+ * YATA integration helper for DFG/CFG
466
+ *
467
+ * @example
468
+ * ```typescript
469
+ * import { YATALocal } from '@nahisaho/yata-local';
470
+ *
471
+ * const yata = new YATALocal('myproject.db');
472
+ * const integrator = new YATAIntegrator(yata);
473
+ *
474
+ * // Import DFG
475
+ * await integrator.importDFG(dfg);
476
+ *
477
+ * // Query related code
478
+ * const results = await integrator.queryRelatedCode('userId');
479
+ * ```
480
+ */
481
+ export class YATAIntegrator {
482
+ yataClient;
483
+ dfgConverter;
484
+ cfgConverter;
485
+ constructor(yataClient, // YATALocal type when available
486
+ options = {}) {
487
+ this.yataClient = yataClient;
488
+ this.dfgConverter = new DFGToYATAConverter(options);
489
+ this.cfgConverter = new CFGToYATAConverter({
490
+ ...options,
491
+ graphNamespace: options.graphNamespace || 'code:cfg',
492
+ });
493
+ }
494
+ /**
495
+ * Import DFG to YATA knowledge graph
496
+ */
497
+ async importDFG(dfg) {
498
+ const triples = this.dfgConverter.convert(dfg);
499
+ await this.importTriples(triples);
500
+ }
501
+ /**
502
+ * Import CFG to YATA knowledge graph
503
+ */
504
+ async importCFG(cfg) {
505
+ const triples = this.cfgConverter.convert(cfg);
506
+ await this.importTriples(triples);
507
+ }
508
+ /**
509
+ * Import multiple graphs
510
+ */
511
+ async importAll(dfgs, cfgs) {
512
+ const allTriples = [];
513
+ for (const dfg of dfgs) {
514
+ allTriples.push(...this.dfgConverter.convert(dfg));
515
+ }
516
+ for (const cfg of cfgs) {
517
+ allTriples.push(...this.cfgConverter.convert(cfg));
518
+ }
519
+ await this.importTriples(allTriples);
520
+ }
521
+ /**
522
+ * Export triples without importing
523
+ */
524
+ exportToTriples(dfg) {
525
+ return this.dfgConverter.convert(dfg);
526
+ }
527
+ /**
528
+ * Export to N-Triples format
529
+ */
530
+ exportToNTriples(dfg) {
531
+ const triples = this.dfgConverter.convert(dfg);
532
+ return triples
533
+ .map((t) => {
534
+ const subject = t.subject.startsWith('"')
535
+ ? t.subject
536
+ : `<${t.subject}>`;
537
+ const predicate = `<${t.predicate}>`;
538
+ const object = t.object.startsWith('"')
539
+ ? t.object
540
+ : t.object.startsWith('_:')
541
+ ? t.object
542
+ : `<${t.object}>`;
543
+ return `${subject} ${predicate} ${object} .`;
544
+ })
545
+ .join('\n');
546
+ }
547
+ async importTriples(triples) {
548
+ if (this.yataClient && typeof this.yataClient.addTriples === 'function') {
549
+ await this.yataClient.addTriples(triples);
550
+ }
551
+ else {
552
+ // Log triples when no client available
553
+ console.log(`[YATAIntegrator] ${triples.length} triples generated (no client connected)`);
554
+ }
555
+ }
556
+ }
557
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/yata/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,82 @@
1
+ {
2
+ "name": "@nahisaho/musubix-dfg",
3
+ "version": "1.8.5",
4
+ "description": "MUSUBIX Data Flow Graph and Control Flow Graph analysis for neuro-symbolic code understanding",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./analyzers": {
14
+ "types": "./dist/analyzers/index.d.ts",
15
+ "import": "./dist/analyzers/index.js"
16
+ },
17
+ "./graph": {
18
+ "types": "./dist/graph/index.d.ts",
19
+ "import": "./dist/graph/index.js"
20
+ },
21
+ "./yata": {
22
+ "types": "./dist/yata/index.d.ts",
23
+ "import": "./dist/yata/index.js"
24
+ }
25
+ },
26
+ "bin": {
27
+ "musubix-dfg": "bin/musubix-dfg.js"
28
+ },
29
+ "files": [
30
+ "dist",
31
+ "bin",
32
+ "README.md"
33
+ ],
34
+ "scripts": {
35
+ "build": "tsc",
36
+ "test": "vitest run",
37
+ "test:watch": "vitest",
38
+ "test:coverage": "vitest run --coverage",
39
+ "typecheck": "tsc --noEmit",
40
+ "clean": "rm -rf dist"
41
+ },
42
+ "keywords": [
43
+ "musubix",
44
+ "dfg",
45
+ "data-flow-graph",
46
+ "cfg",
47
+ "control-flow-graph",
48
+ "static-analysis",
49
+ "neuro-symbolic",
50
+ "code-analysis",
51
+ "typescript"
52
+ ],
53
+ "author": "nahisaho",
54
+ "license": "MIT",
55
+ "repository": {
56
+ "type": "git",
57
+ "url": "https://github.com/nahisaho/MUSUBIX",
58
+ "directory": "packages/dfg"
59
+ },
60
+ "bugs": {
61
+ "url": "https://github.com/nahisaho/MUSUBIX/issues"
62
+ },
63
+ "homepage": "https://github.com/nahisaho/MUSUBIX/tree/main/packages/dfg#readme",
64
+ "engines": {
65
+ "node": ">=20.0.0"
66
+ },
67
+ "dependencies": {
68
+ "typescript": "^5.7.2"
69
+ },
70
+ "devDependencies": {
71
+ "@types/node": "^22.10.2",
72
+ "vitest": "^3.0.4"
73
+ },
74
+ "peerDependencies": {
75
+ "@nahisaho/yata-local": "^1.8.0"
76
+ },
77
+ "peerDependenciesMeta": {
78
+ "@nahisaho/yata-local": {
79
+ "optional": true
80
+ }
81
+ }
82
+ }