@nahisaho/musubix-codegraph 3.7.3 → 3.8.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.
@@ -6,4 +6,5 @@
6
6
  */
7
7
  export { MemoryStorage } from './memory-storage.js';
8
8
  export { SQLiteStorage } from './sqlite-storage.js';
9
+ export { KnowledgeAdapter, type KnowledgeAdapterOptions } from './knowledge-adapter.js';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -6,5 +6,5 @@
6
6
  */
7
7
  export { MemoryStorage } from './memory-storage.js';
8
8
  export { SQLiteStorage } from './sqlite-storage.js';
9
- // export { KnowledgeAdapter } from './knowledge-adapter.js'; // TODO: Implement @musubix/knowledge integration
9
+ export { KnowledgeAdapter } from './knowledge-adapter.js';
10
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,+GAA+G"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAgC,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @nahisaho/musubix-codegraph - Knowledge Store Adapter
3
+ *
4
+ * Adapts @musubix/knowledge's KnowledgeStore to the codegraph StorageAdapter interface.
5
+ * Maps codegraph entities/relations to knowledge graph entities/relations.
6
+ *
7
+ * @see REQ-CG-API-005
8
+ * @see DES-CG-006
9
+ */
10
+ import type { StorageAdapter, StorageStats, Entity, Relation, GraphQuery } from '../types.js';
11
+ import type { KnowledgeStore } from '@musubix/knowledge';
12
+ /**
13
+ * Options for KnowledgeAdapter
14
+ */
15
+ export interface KnowledgeAdapterOptions {
16
+ /** Whether to auto-save after each mutation (default: false) */
17
+ autoSave?: boolean;
18
+ }
19
+ /**
20
+ * Knowledge Store adapter for codegraph
21
+ *
22
+ * Bridges @musubix/knowledge's KnowledgeStore to the codegraph StorageAdapter
23
+ * interface, allowing codegraph data to be persisted in the knowledge graph.
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * import { createKnowledgeStore } from '@musubix/knowledge';
28
+ * import { KnowledgeAdapter } from '@nahisaho/musubix-codegraph/storage';
29
+ *
30
+ * const store = createKnowledgeStore('.knowledge');
31
+ * const adapter = new KnowledgeAdapter(store);
32
+ * await adapter.initialize();
33
+ *
34
+ * await adapter.saveEntity(entity);
35
+ * const retrieved = await adapter.getEntity(entity.id);
36
+ * ```
37
+ */
38
+ export declare class KnowledgeAdapter implements StorageAdapter {
39
+ private store;
40
+ private options;
41
+ private initialized;
42
+ private filePathSet;
43
+ constructor(store: KnowledgeStore, options?: KnowledgeAdapterOptions);
44
+ initialize(): Promise<void>;
45
+ close(): Promise<void>;
46
+ saveEntity(entity: Entity): Promise<void>;
47
+ getEntity(id: string): Promise<Entity | null>;
48
+ queryEntities(query: GraphQuery): Promise<Entity[]>;
49
+ deleteEntity(id: string): Promise<void>;
50
+ saveRelation(relation: Relation): Promise<void>;
51
+ getRelations(entityId: string, direction?: 'in' | 'out' | 'both'): Promise<Relation[]>;
52
+ deleteRelation(id: string): Promise<void>;
53
+ bulkSave(entities: Entity[], relations: Relation[]): Promise<void>;
54
+ clear(): Promise<void>;
55
+ getStats(): Promise<StorageStats>;
56
+ /**
57
+ * Rebuild the file path index from stored entities
58
+ */
59
+ private rebuildFilePathIndex;
60
+ /**
61
+ * Save all pending changes to disk
62
+ */
63
+ save(): Promise<void>;
64
+ /**
65
+ * Check if the adapter is initialized
66
+ */
67
+ isInitialized(): boolean;
68
+ }
69
+ //# sourceMappingURL=knowledge-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-adapter.d.ts","sourceRoot":"","sources":["../../src/storage/knowledge-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,UAAU,EAEX,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+GD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,gBAAiB,YAAW,cAAc;IACrD,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAqB;gBAE5B,KAAK,EAAE,cAAc,EAAE,OAAO,GAAE,uBAA4B;IAWlE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAM7C,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAwCnD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvC,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/C,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,IAAI,GAAG,KAAK,GAAG,MAAe,GACxC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAYhB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASlE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBtB,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;IAsBvC;;OAEG;YACW,oBAAoB;IAWlC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;OAEG;IACH,aAAa,IAAI,OAAO;CAGzB"}
@@ -0,0 +1,312 @@
1
+ /**
2
+ * @nahisaho/musubix-codegraph - Knowledge Store Adapter
3
+ *
4
+ * Adapts @musubix/knowledge's KnowledgeStore to the codegraph StorageAdapter interface.
5
+ * Maps codegraph entities/relations to knowledge graph entities/relations.
6
+ *
7
+ * @see REQ-CG-API-005
8
+ * @see DES-CG-006
9
+ */
10
+ /** Relation types shared between codegraph and knowledge */
11
+ const SHARED_RELATION_TYPES = new Set([
12
+ 'implements',
13
+ 'depends_on',
14
+ ]);
15
+ /**
16
+ * Map a codegraph RelationType to a knowledge RelationType.
17
+ * Shared types map directly; others map to 'related_to'.
18
+ */
19
+ function toKnowledgeRelationType(type) {
20
+ if (SHARED_RELATION_TYPES.has(type)) {
21
+ return type;
22
+ }
23
+ return 'related_to';
24
+ }
25
+ /**
26
+ * Convert a codegraph Entity to a knowledge Entity
27
+ */
28
+ function toKnowledgeEntity(entity) {
29
+ const now = new Date().toISOString();
30
+ const tags = [];
31
+ if (entity.language)
32
+ tags.push(`lang:${entity.language}`);
33
+ if (entity.type)
34
+ tags.push(`kind:${entity.type}`);
35
+ if (entity.communityId)
36
+ tags.push(`community:${entity.communityId}`);
37
+ return {
38
+ id: `code-node:${entity.id}`,
39
+ type: 'code',
40
+ name: entity.name,
41
+ description: entity.docstring,
42
+ properties: {
43
+ entityType: entity.type,
44
+ qualifiedName: entity.qualifiedName,
45
+ namespace: entity.namespace,
46
+ filePath: entity.filePath,
47
+ startLine: entity.startLine,
48
+ endLine: entity.endLine,
49
+ signature: entity.signature,
50
+ sourceCode: entity.sourceCode,
51
+ communityId: entity.communityId,
52
+ language: entity.language,
53
+ metadata: entity.metadata,
54
+ },
55
+ tags,
56
+ createdAt: entity.createdAt?.toISOString() ?? now,
57
+ updatedAt: entity.updatedAt?.toISOString() ?? now,
58
+ };
59
+ }
60
+ /**
61
+ * Convert a knowledge Entity back to a codegraph Entity
62
+ */
63
+ function fromKnowledgeEntity(kEntity) {
64
+ const props = kEntity.properties;
65
+ return {
66
+ id: String(kEntity.id).replace(/^code-node:/, ''),
67
+ type: props.entityType ?? 'unknown',
68
+ name: kEntity.name,
69
+ qualifiedName: props.qualifiedName,
70
+ namespace: props.namespace,
71
+ filePath: props.filePath,
72
+ startLine: props.startLine,
73
+ endLine: props.endLine,
74
+ signature: props.signature,
75
+ docstring: kEntity.description,
76
+ sourceCode: props.sourceCode,
77
+ communityId: props.communityId,
78
+ language: props.language,
79
+ metadata: props.metadata ?? {},
80
+ createdAt: kEntity.createdAt ? new Date(kEntity.createdAt) : undefined,
81
+ updatedAt: kEntity.updatedAt ? new Date(kEntity.updatedAt) : undefined,
82
+ };
83
+ }
84
+ /**
85
+ * Convert a codegraph Relation to a knowledge Relation
86
+ */
87
+ function toKnowledgeRelation(relation) {
88
+ return {
89
+ id: `code-rel:${relation.id}`,
90
+ source: `code-node:${relation.sourceId}`,
91
+ target: `code-node:${relation.targetId}`,
92
+ type: toKnowledgeRelationType(relation.type),
93
+ properties: {
94
+ relationType: relation.type,
95
+ weight: relation.weight,
96
+ metadata: relation.metadata,
97
+ },
98
+ };
99
+ }
100
+ /**
101
+ * Convert a knowledge Relation back to a codegraph Relation
102
+ */
103
+ function fromKnowledgeRelation(kRelation) {
104
+ const props = kRelation.properties ?? {};
105
+ return {
106
+ id: String(kRelation.id).replace(/^code-rel:/, ''),
107
+ sourceId: String(kRelation.source).replace(/^code-node:/, ''),
108
+ targetId: String(kRelation.target).replace(/^code-node:/, ''),
109
+ type: props.relationType ?? 'references',
110
+ weight: props.weight ?? 1,
111
+ metadata: props.metadata ?? {},
112
+ };
113
+ }
114
+ /**
115
+ * Knowledge Store adapter for codegraph
116
+ *
117
+ * Bridges @musubix/knowledge's KnowledgeStore to the codegraph StorageAdapter
118
+ * interface, allowing codegraph data to be persisted in the knowledge graph.
119
+ *
120
+ * @example
121
+ * ```typescript
122
+ * import { createKnowledgeStore } from '@musubix/knowledge';
123
+ * import { KnowledgeAdapter } from '@nahisaho/musubix-codegraph/storage';
124
+ *
125
+ * const store = createKnowledgeStore('.knowledge');
126
+ * const adapter = new KnowledgeAdapter(store);
127
+ * await adapter.initialize();
128
+ *
129
+ * await adapter.saveEntity(entity);
130
+ * const retrieved = await adapter.getEntity(entity.id);
131
+ * ```
132
+ */
133
+ export class KnowledgeAdapter {
134
+ store;
135
+ options;
136
+ initialized = false;
137
+ filePathSet = new Set();
138
+ constructor(store, options = {}) {
139
+ this.store = store;
140
+ this.options = {
141
+ autoSave: options.autoSave ?? false,
142
+ };
143
+ }
144
+ // =========================================================================
145
+ // Lifecycle
146
+ // =========================================================================
147
+ async initialize() {
148
+ if (this.initialized)
149
+ return;
150
+ await this.store.load();
151
+ // Rebuild the file path set from existing entities
152
+ await this.rebuildFilePathIndex();
153
+ this.initialized = true;
154
+ }
155
+ async close() {
156
+ if (this.options.autoSave) {
157
+ await this.store.save();
158
+ }
159
+ this.filePathSet.clear();
160
+ this.initialized = false;
161
+ }
162
+ // =========================================================================
163
+ // Entity Operations
164
+ // =========================================================================
165
+ async saveEntity(entity) {
166
+ const kEntity = toKnowledgeEntity(entity);
167
+ await this.store.putEntity(kEntity);
168
+ if (entity.filePath) {
169
+ this.filePathSet.add(entity.filePath);
170
+ }
171
+ if (this.options.autoSave) {
172
+ await this.store.save();
173
+ }
174
+ }
175
+ async getEntity(id) {
176
+ const kEntity = await this.store.getEntity(`code-node:${id}`);
177
+ if (!kEntity)
178
+ return null;
179
+ return fromKnowledgeEntity(kEntity);
180
+ }
181
+ async queryEntities(query) {
182
+ // Use the knowledge store's query to get code entities
183
+ const allCodeEntities = await this.store.query({
184
+ type: 'code',
185
+ });
186
+ let results = allCodeEntities.map(fromKnowledgeEntity);
187
+ // Filter by entity types
188
+ if (query.entityTypes && query.entityTypes.length > 0) {
189
+ results = results.filter((e) => query.entityTypes.includes(e.type));
190
+ }
191
+ // Filter by file path
192
+ if (query.filePath) {
193
+ const normalizedPath = query.filePath.toLowerCase();
194
+ results = results.filter((e) => e.filePath?.toLowerCase() === normalizedPath);
195
+ }
196
+ // Text search
197
+ if (query.textSearch) {
198
+ const searchLower = query.textSearch.toLowerCase();
199
+ results = results.filter((e) => e.name.toLowerCase().includes(searchLower) ||
200
+ e.id.toLowerCase().includes(searchLower) ||
201
+ e.docstring?.toLowerCase().includes(searchLower));
202
+ }
203
+ // Apply limit
204
+ if (query.limit && query.limit > 0) {
205
+ results = results.slice(0, query.limit);
206
+ }
207
+ return results;
208
+ }
209
+ async deleteEntity(id) {
210
+ // Remove entity from knowledge store (which also removes related relations)
211
+ await this.store.deleteEntity(`code-node:${id}`);
212
+ if (this.options.autoSave) {
213
+ await this.store.save();
214
+ }
215
+ }
216
+ // =========================================================================
217
+ // Relation Operations
218
+ // =========================================================================
219
+ async saveRelation(relation) {
220
+ const kRelation = toKnowledgeRelation(relation);
221
+ try {
222
+ await this.store.addRelation(kRelation);
223
+ if (this.options.autoSave) {
224
+ await this.store.save();
225
+ }
226
+ }
227
+ catch {
228
+ // If source/target entity not found in knowledge store, silently skip
229
+ // This can happen when relations reference entities not yet saved
230
+ }
231
+ }
232
+ async getRelations(entityId, direction = 'both') {
233
+ const kRelations = await this.store.getRelations(`code-node:${entityId}`, direction);
234
+ // Only return relations that belong to codegraph (prefixed with code-rel:)
235
+ return kRelations
236
+ .filter((r) => String(r.id).startsWith('code-rel:'))
237
+ .map(fromKnowledgeRelation);
238
+ }
239
+ async deleteRelation(id) {
240
+ await this.store.removeRelation(`code-rel:${id}`);
241
+ if (this.options.autoSave) {
242
+ await this.store.save();
243
+ }
244
+ }
245
+ // =========================================================================
246
+ // Bulk Operations
247
+ // =========================================================================
248
+ async bulkSave(entities, relations) {
249
+ for (const entity of entities) {
250
+ await this.saveEntity(entity);
251
+ }
252
+ for (const relation of relations) {
253
+ await this.saveRelation(relation);
254
+ }
255
+ }
256
+ async clear() {
257
+ // Query all code entities and delete them
258
+ const codeEntities = await this.store.query({ type: 'code' });
259
+ for (const entity of codeEntities) {
260
+ await this.store.deleteEntity(entity.id);
261
+ }
262
+ this.filePathSet.clear();
263
+ if (this.options.autoSave) {
264
+ await this.store.save();
265
+ }
266
+ }
267
+ // =========================================================================
268
+ // Statistics
269
+ // =========================================================================
270
+ async getStats() {
271
+ const codeEntities = await this.store.query({ type: 'code' });
272
+ let relationCount = 0;
273
+ for (const entity of codeEntities) {
274
+ const rels = await this.store.getRelations(entity.id, 'out');
275
+ relationCount += rels.filter((r) => String(r.id).startsWith('code-rel:')).length;
276
+ }
277
+ return {
278
+ entityCount: codeEntities.length,
279
+ relationCount,
280
+ fileCount: this.filePathSet.size,
281
+ };
282
+ }
283
+ // =========================================================================
284
+ // Internal Helpers
285
+ // =========================================================================
286
+ /**
287
+ * Rebuild the file path index from stored entities
288
+ */
289
+ async rebuildFilePathIndex() {
290
+ this.filePathSet.clear();
291
+ const codeEntities = await this.store.query({ type: 'code' });
292
+ for (const entity of codeEntities) {
293
+ const filePath = entity.properties.filePath;
294
+ if (typeof filePath === 'string') {
295
+ this.filePathSet.add(filePath);
296
+ }
297
+ }
298
+ }
299
+ /**
300
+ * Save all pending changes to disk
301
+ */
302
+ async save() {
303
+ await this.store.save();
304
+ }
305
+ /**
306
+ * Check if the adapter is initialized
307
+ */
308
+ isInitialized() {
309
+ return this.initialized;
310
+ }
311
+ }
312
+ //# sourceMappingURL=knowledge-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-adapter.js","sourceRoot":"","sources":["../../src/storage/knowledge-adapter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nahisaho/musubix-codegraph",
3
- "version": "3.7.3",
3
+ "version": "3.8.0",
4
4
  "description": "MUSUBIX CodeGraph - Multi-language Code Graph Analysis Engine supporting 16 programming languages with PR generation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -39,6 +39,14 @@
39
39
  "dist",
40
40
  "README.md"
41
41
  ],
42
+ "scripts": {
43
+ "build": "tsc -p tsconfig.json",
44
+ "test": "vitest run",
45
+ "test:watch": "vitest",
46
+ "test:coverage": "vitest run --coverage",
47
+ "lint": "eslint src --ext .ts",
48
+ "clean": "rm -rf dist"
49
+ },
42
50
  "keywords": [
43
51
  "codegraph",
44
52
  "ast",
@@ -85,17 +93,18 @@
85
93
  "tree-sitter-scala": "^0.21.0",
86
94
  "tree-sitter-lua": "^2.1.3"
87
95
  },
96
+ "peerDependencies": {
97
+ "@musubix/knowledge": "^3.0.0"
98
+ },
99
+ "peerDependenciesMeta": {
100
+ "@musubix/knowledge": {
101
+ "optional": true
102
+ }
103
+ },
88
104
  "devDependencies": {
105
+ "@musubix/knowledge": "^3.7.3",
89
106
  "@types/node": "^20.0.0",
90
107
  "typescript": "^5.3.0",
91
108
  "vitest": "^4.0.16"
92
- },
93
- "scripts": {
94
- "build": "tsc -p tsconfig.json",
95
- "test": "vitest run",
96
- "test:watch": "vitest",
97
- "test:coverage": "vitest run --coverage",
98
- "lint": "eslint src --ext .ts",
99
- "clean": "rm -rf dist"
100
109
  }
101
- }
110
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 nahisaho
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.