@musubix/knowledge 3.0.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.
@@ -0,0 +1,162 @@
1
+ /**
2
+ * @musubix/knowledge - Git-Native Knowledge Store
3
+ *
4
+ * File-based knowledge graph management for MUSUBIX v3.0
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ /**
9
+ * Entity types in the knowledge graph
10
+ */
11
+ export type EntityType = 'requirement' | 'design' | 'task' | 'code' | 'decision' | 'pattern' | 'constraint';
12
+ /**
13
+ * Relation types between entities
14
+ */
15
+ export type RelationType = 'implements' | 'depends_on' | 'traces_to' | 'related_to' | 'derives_from' | 'conflicts_with';
16
+ /**
17
+ * Entity in the knowledge graph
18
+ */
19
+ export interface Entity {
20
+ /** Unique identifier (e.g., "REQ-001", "DES-001") */
21
+ id: string;
22
+ /** Entity type */
23
+ type: EntityType;
24
+ /** Display name */
25
+ name: string;
26
+ /** Optional description */
27
+ description?: string;
28
+ /** Additional properties */
29
+ properties: Record<string, unknown>;
30
+ /** Tags for categorization */
31
+ tags: string[];
32
+ /** Creation timestamp (ISO 8601) */
33
+ createdAt: string;
34
+ /** Last update timestamp (ISO 8601) */
35
+ updatedAt: string;
36
+ }
37
+ /**
38
+ * Relation between entities
39
+ */
40
+ export interface Relation {
41
+ /** Unique identifier */
42
+ id: string;
43
+ /** Source entity ID */
44
+ source: string;
45
+ /** Target entity ID */
46
+ target: string;
47
+ /** Relation type */
48
+ type: RelationType;
49
+ /** Additional properties */
50
+ properties?: Record<string, unknown>;
51
+ }
52
+ /**
53
+ * Knowledge graph structure
54
+ */
55
+ export interface KnowledgeGraph {
56
+ /** Schema version */
57
+ version: '1.0.0';
58
+ /** Metadata */
59
+ metadata: {
60
+ lastModified: string;
61
+ entityCount: number;
62
+ relationCount: number;
63
+ };
64
+ /** Entities by ID */
65
+ entities: Record<string, Entity>;
66
+ /** Relations */
67
+ relations: Relation[];
68
+ }
69
+ /**
70
+ * Filter for querying entities
71
+ */
72
+ export interface QueryFilter {
73
+ /** Filter by entity type */
74
+ type?: EntityType | EntityType[];
75
+ /** Filter by tags (AND) */
76
+ tags?: string[];
77
+ /** Filter by property values */
78
+ properties?: Record<string, unknown>;
79
+ /** Text search in name/description */
80
+ text?: string;
81
+ /** Maximum results */
82
+ limit?: number;
83
+ /** Offset for pagination */
84
+ offset?: number;
85
+ }
86
+ /**
87
+ * Options for search
88
+ */
89
+ export interface SearchOptions {
90
+ /** Fields to search */
91
+ fields?: ('name' | 'description' | 'tags')[];
92
+ /** Case sensitive search */
93
+ caseSensitive?: boolean;
94
+ /** Maximum results */
95
+ limit?: number;
96
+ }
97
+ /**
98
+ * Options for graph traversal
99
+ */
100
+ export interface TraverseOptions {
101
+ /** Maximum depth */
102
+ depth?: number;
103
+ /** Relation types to follow */
104
+ relationTypes?: RelationType[];
105
+ /** Direction */
106
+ direction?: 'out' | 'in' | 'both';
107
+ }
108
+ /**
109
+ * Knowledge Store interface
110
+ */
111
+ export interface KnowledgeStore {
112
+ getEntity(id: string): Promise<Entity | undefined>;
113
+ putEntity(entity: Entity): Promise<void>;
114
+ deleteEntity(id: string): Promise<boolean>;
115
+ addRelation(relation: Relation): Promise<void>;
116
+ removeRelation(id: string): Promise<boolean>;
117
+ getRelations(entityId: string, direction?: 'in' | 'out' | 'both'): Promise<Relation[]>;
118
+ query(filter: QueryFilter): Promise<Entity[]>;
119
+ search(text: string, options?: SearchOptions): Promise<Entity[]>;
120
+ getSubgraph(rootId: string, depth: number): Promise<KnowledgeGraph>;
121
+ traverse(startId: string, options?: TraverseOptions): Promise<Entity[]>;
122
+ save(): Promise<void>;
123
+ load(): Promise<void>;
124
+ getStats(): {
125
+ entityCount: number;
126
+ relationCount: number;
127
+ types: Record<EntityType, number>;
128
+ };
129
+ }
130
+ /**
131
+ * Create a new knowledge store
132
+ */
133
+ export declare function createKnowledgeStore(basePath: string): KnowledgeStore;
134
+ /**
135
+ * File-based knowledge store implementation
136
+ */
137
+ export declare class FileKnowledgeStore implements KnowledgeStore {
138
+ private basePath;
139
+ private graph;
140
+ private loaded;
141
+ constructor(basePath: string);
142
+ private createEmptyGraph;
143
+ private getGraphPath;
144
+ load(): Promise<void>;
145
+ save(): Promise<void>;
146
+ getEntity(id: string): Promise<Entity | undefined>;
147
+ putEntity(entity: Entity): Promise<void>;
148
+ deleteEntity(id: string): Promise<boolean>;
149
+ addRelation(relation: Relation): Promise<void>;
150
+ removeRelation(id: string): Promise<boolean>;
151
+ getRelations(entityId: string, direction?: 'in' | 'out' | 'both'): Promise<Relation[]>;
152
+ query(filter: QueryFilter): Promise<Entity[]>;
153
+ search(text: string, options?: SearchOptions): Promise<Entity[]>;
154
+ getSubgraph(rootId: string, depth: number): Promise<KnowledgeGraph>;
155
+ traverse(startId: string, options?: TraverseOptions): Promise<Entity[]>;
156
+ getStats(): {
157
+ entityCount: number;
158
+ relationCount: number;
159
+ types: Record<EntityType, number>;
160
+ };
161
+ }
162
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,275 @@
1
+ /**
2
+ * @musubix/knowledge - Git-Native Knowledge Store
3
+ *
4
+ * File-based knowledge graph management for MUSUBIX v3.0
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ // ============================================================
9
+ // Factory Function
10
+ // ============================================================
11
+ /**
12
+ * Create a new knowledge store
13
+ */
14
+ export function createKnowledgeStore(basePath) {
15
+ return new FileKnowledgeStore(basePath);
16
+ }
17
+ // ============================================================
18
+ // Implementation
19
+ // ============================================================
20
+ import * as fs from 'node:fs/promises';
21
+ import * as path from 'node:path';
22
+ /**
23
+ * File-based knowledge store implementation
24
+ */
25
+ export class FileKnowledgeStore {
26
+ basePath;
27
+ graph;
28
+ loaded = false;
29
+ constructor(basePath) {
30
+ this.basePath = basePath;
31
+ this.graph = this.createEmptyGraph();
32
+ }
33
+ createEmptyGraph() {
34
+ return {
35
+ version: '1.0.0',
36
+ metadata: {
37
+ lastModified: new Date().toISOString(),
38
+ entityCount: 0,
39
+ relationCount: 0,
40
+ },
41
+ entities: {},
42
+ relations: [],
43
+ };
44
+ }
45
+ getGraphPath() {
46
+ return path.join(this.basePath, 'graph.json');
47
+ }
48
+ async load() {
49
+ try {
50
+ const content = await fs.readFile(this.getGraphPath(), 'utf-8');
51
+ this.graph = JSON.parse(content);
52
+ this.loaded = true;
53
+ }
54
+ catch (error) {
55
+ if (error.code === 'ENOENT') {
56
+ this.graph = this.createEmptyGraph();
57
+ this.loaded = true;
58
+ }
59
+ else {
60
+ throw error;
61
+ }
62
+ }
63
+ }
64
+ async save() {
65
+ await fs.mkdir(this.basePath, { recursive: true });
66
+ this.graph.metadata.lastModified = new Date().toISOString();
67
+ this.graph.metadata.entityCount = Object.keys(this.graph.entities).length;
68
+ this.graph.metadata.relationCount = this.graph.relations.length;
69
+ await fs.writeFile(this.getGraphPath(), JSON.stringify(this.graph, null, 2), 'utf-8');
70
+ }
71
+ async getEntity(id) {
72
+ if (!this.loaded)
73
+ await this.load();
74
+ return this.graph.entities[id];
75
+ }
76
+ async putEntity(entity) {
77
+ if (!this.loaded)
78
+ await this.load();
79
+ const now = new Date().toISOString();
80
+ const existing = this.graph.entities[entity.id];
81
+ this.graph.entities[entity.id] = {
82
+ ...entity,
83
+ createdAt: existing?.createdAt ?? now,
84
+ updatedAt: now,
85
+ };
86
+ }
87
+ async deleteEntity(id) {
88
+ if (!this.loaded)
89
+ await this.load();
90
+ if (!this.graph.entities[id]) {
91
+ return false;
92
+ }
93
+ delete this.graph.entities[id];
94
+ // Remove related relations
95
+ this.graph.relations = this.graph.relations.filter(r => r.source !== id && r.target !== id);
96
+ return true;
97
+ }
98
+ async addRelation(relation) {
99
+ if (!this.loaded)
100
+ await this.load();
101
+ // Validate entities exist
102
+ if (!this.graph.entities[relation.source]) {
103
+ throw new Error(`Source entity not found: ${relation.source}`);
104
+ }
105
+ if (!this.graph.entities[relation.target]) {
106
+ throw new Error(`Target entity not found: ${relation.target}`);
107
+ }
108
+ // Check for duplicates
109
+ const exists = this.graph.relations.some(r => r.source === relation.source &&
110
+ r.target === relation.target &&
111
+ r.type === relation.type);
112
+ if (!exists) {
113
+ this.graph.relations.push(relation);
114
+ }
115
+ }
116
+ async removeRelation(id) {
117
+ if (!this.loaded)
118
+ await this.load();
119
+ const index = this.graph.relations.findIndex(r => r.id === id);
120
+ if (index === -1)
121
+ return false;
122
+ this.graph.relations.splice(index, 1);
123
+ return true;
124
+ }
125
+ async getRelations(entityId, direction = 'both') {
126
+ if (!this.loaded)
127
+ await this.load();
128
+ return this.graph.relations.filter(r => {
129
+ if (direction === 'out')
130
+ return r.source === entityId;
131
+ if (direction === 'in')
132
+ return r.target === entityId;
133
+ return r.source === entityId || r.target === entityId;
134
+ });
135
+ }
136
+ async query(filter) {
137
+ if (!this.loaded)
138
+ await this.load();
139
+ let results = Object.values(this.graph.entities);
140
+ // Filter by type
141
+ if (filter.type) {
142
+ const types = Array.isArray(filter.type) ? filter.type : [filter.type];
143
+ results = results.filter(e => types.includes(e.type));
144
+ }
145
+ // Filter by tags
146
+ if (filter.tags && filter.tags.length > 0) {
147
+ results = results.filter(e => filter.tags.every(tag => e.tags.includes(tag)));
148
+ }
149
+ // Filter by text
150
+ if (filter.text) {
151
+ const searchText = filter.text.toLowerCase();
152
+ results = results.filter(e => e.name.toLowerCase().includes(searchText) ||
153
+ e.description?.toLowerCase().includes(searchText));
154
+ }
155
+ // Apply pagination
156
+ const offset = filter.offset ?? 0;
157
+ const limit = filter.limit ?? results.length;
158
+ return results.slice(offset, offset + limit);
159
+ }
160
+ async search(text, options) {
161
+ if (!this.loaded)
162
+ await this.load();
163
+ const searchText = options?.caseSensitive ? text : text.toLowerCase();
164
+ const fields = options?.fields ?? ['name', 'description', 'tags'];
165
+ let results = Object.values(this.graph.entities).filter(e => {
166
+ for (const field of fields) {
167
+ if (field === 'name') {
168
+ const value = options?.caseSensitive ? e.name : e.name.toLowerCase();
169
+ if (value.includes(searchText))
170
+ return true;
171
+ }
172
+ if (field === 'description' && e.description) {
173
+ const value = options?.caseSensitive ? e.description : e.description.toLowerCase();
174
+ if (value.includes(searchText))
175
+ return true;
176
+ }
177
+ if (field === 'tags') {
178
+ const matched = e.tags.some(tag => {
179
+ const value = options?.caseSensitive ? tag : tag.toLowerCase();
180
+ return value.includes(searchText);
181
+ });
182
+ if (matched)
183
+ return true;
184
+ }
185
+ }
186
+ return false;
187
+ });
188
+ if (options?.limit) {
189
+ results = results.slice(0, options.limit);
190
+ }
191
+ return results;
192
+ }
193
+ async getSubgraph(rootId, depth) {
194
+ if (!this.loaded)
195
+ await this.load();
196
+ const visited = new Set();
197
+ const entities = {};
198
+ const relations = [];
199
+ const traverse = async (id, currentDepth) => {
200
+ if (currentDepth > depth || visited.has(id))
201
+ return;
202
+ visited.add(id);
203
+ const entity = this.graph.entities[id];
204
+ if (!entity)
205
+ return;
206
+ entities[id] = entity;
207
+ const rels = await this.getRelations(id, 'both');
208
+ for (const rel of rels) {
209
+ if (!relations.some(r => r.id === rel.id)) {
210
+ relations.push(rel);
211
+ }
212
+ const nextId = rel.source === id ? rel.target : rel.source;
213
+ await traverse(nextId, currentDepth + 1);
214
+ }
215
+ };
216
+ await traverse(rootId, 0);
217
+ return {
218
+ version: '1.0.0',
219
+ metadata: {
220
+ lastModified: new Date().toISOString(),
221
+ entityCount: Object.keys(entities).length,
222
+ relationCount: relations.length,
223
+ },
224
+ entities,
225
+ relations,
226
+ };
227
+ }
228
+ async traverse(startId, options) {
229
+ if (!this.loaded)
230
+ await this.load();
231
+ const depth = options?.depth ?? 3;
232
+ const direction = options?.direction ?? 'both';
233
+ const relationTypes = options?.relationTypes;
234
+ const visited = new Set();
235
+ const results = [];
236
+ const visit = async (id, currentDepth) => {
237
+ if (currentDepth > depth || visited.has(id))
238
+ return;
239
+ visited.add(id);
240
+ const entity = this.graph.entities[id];
241
+ if (!entity)
242
+ return;
243
+ results.push(entity);
244
+ const rels = await this.getRelations(id, direction);
245
+ for (const rel of rels) {
246
+ if (relationTypes && !relationTypes.includes(rel.type))
247
+ continue;
248
+ const nextId = rel.source === id ? rel.target : rel.source;
249
+ await visit(nextId, currentDepth + 1);
250
+ }
251
+ };
252
+ await visit(startId, 0);
253
+ return results;
254
+ }
255
+ getStats() {
256
+ const types = {
257
+ requirement: 0,
258
+ design: 0,
259
+ task: 0,
260
+ code: 0,
261
+ decision: 0,
262
+ pattern: 0,
263
+ constraint: 0,
264
+ };
265
+ for (const entity of Object.values(this.graph.entities)) {
266
+ types[entity.type]++;
267
+ }
268
+ return {
269
+ entityCount: Object.keys(this.graph.entities).length,
270
+ relationCount: this.graph.relations.length,
271
+ types,
272
+ };
273
+ }
274
+ }
275
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@musubix/knowledge",
3
+ "version": "3.0.0",
4
+ "description": "Git-Native Knowledge Store for MUSUBIX - File-based knowledge graph management",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "scripts": {
18
+ "build": "tsc",
19
+ "test": "vitest run",
20
+ "test:watch": "vitest",
21
+ "clean": "rm -rf dist",
22
+ "typecheck": "tsc --noEmit"
23
+ },
24
+ "keywords": [
25
+ "musubix",
26
+ "knowledge-graph",
27
+ "git-native",
28
+ "file-based"
29
+ ],
30
+ "author": "nahisaho",
31
+ "license": "MIT",
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "git+https://github.com/nahisaho/MUSUBIX.git",
35
+ "directory": "packages/knowledge"
36
+ },
37
+ "engines": {
38
+ "node": ">=20.0.0"
39
+ },
40
+ "devDependencies": {
41
+ "typescript": "^5.3.0",
42
+ "vitest": "^4.0.16"
43
+ }
44
+ }