@nahisaho/musubix-ontology-mcp 1.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.
Files changed (45) hide show
  1. package/dist/index.d.ts +12 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +17 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/inference/index.d.ts +6 -0
  6. package/dist/inference/index.d.ts.map +1 -0
  7. package/dist/inference/index.js +6 -0
  8. package/dist/inference/index.js.map +1 -0
  9. package/dist/inference/rule-engine.d.ts +149 -0
  10. package/dist/inference/rule-engine.d.ts.map +1 -0
  11. package/dist/inference/rule-engine.js +478 -0
  12. package/dist/inference/rule-engine.js.map +1 -0
  13. package/dist/integration/index.d.ts +6 -0
  14. package/dist/integration/index.d.ts.map +1 -0
  15. package/dist/integration/index.js +6 -0
  16. package/dist/integration/index.js.map +1 -0
  17. package/dist/integration/pattern-bridge.d.ts +146 -0
  18. package/dist/integration/pattern-bridge.d.ts.map +1 -0
  19. package/dist/integration/pattern-bridge.js +517 -0
  20. package/dist/integration/pattern-bridge.js.map +1 -0
  21. package/dist/privacy/index.d.ts +6 -0
  22. package/dist/privacy/index.d.ts.map +1 -0
  23. package/dist/privacy/index.js +6 -0
  24. package/dist/privacy/index.js.map +1 -0
  25. package/dist/privacy/privacy-guard.d.ts +43 -0
  26. package/dist/privacy/privacy-guard.d.ts.map +1 -0
  27. package/dist/privacy/privacy-guard.js +59 -0
  28. package/dist/privacy/privacy-guard.js.map +1 -0
  29. package/dist/store/index.d.ts +7 -0
  30. package/dist/store/index.d.ts.map +1 -0
  31. package/dist/store/index.js +7 -0
  32. package/dist/store/index.js.map +1 -0
  33. package/dist/store/n3-store.d.ts +115 -0
  34. package/dist/store/n3-store.d.ts.map +1 -0
  35. package/dist/store/n3-store.js +344 -0
  36. package/dist/store/n3-store.js.map +1 -0
  37. package/dist/store/ontology-store.d.ts +59 -0
  38. package/dist/store/ontology-store.d.ts.map +1 -0
  39. package/dist/store/ontology-store.js +135 -0
  40. package/dist/store/ontology-store.js.map +1 -0
  41. package/dist/types.d.ts +81 -0
  42. package/dist/types.d.ts.map +1 -0
  43. package/dist/types.js +6 -0
  44. package/dist/types.js.map +1 -0
  45. package/package.json +50 -0
@@ -0,0 +1,517 @@
1
+ /**
2
+ * @fileoverview Pattern-Ontology Integration Bridge
3
+ * @traceability TSK-INT-001, REQ-INT-001
4
+ *
5
+ * Integrates Pattern Library Learning with Ontology Reasoning:
6
+ * - Converts patterns to RDF triples for knowledge graph
7
+ * - Applies inference rules to discover pattern relationships
8
+ * - Enables semantic querying of pattern library
9
+ */
10
+ import { RuleEngine } from '../inference/rule-engine.js';
11
+ /**
12
+ * Namespace URIs
13
+ */
14
+ const NS = {
15
+ pattern: 'https://musubix.dev/ontology/pattern#',
16
+ sdd: 'https://musubix.dev/ontology/sdd#',
17
+ rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
18
+ rdfs: 'http://www.w3.org/2000/01/rdf-schema#',
19
+ owl: 'http://www.w3.org/2002/07/owl#',
20
+ };
21
+ /**
22
+ * Pattern-Ontology Integration Bridge
23
+ *
24
+ * Provides bidirectional integration between:
25
+ * - Pattern Library (structural code patterns)
26
+ * - Ontology Store (semantic knowledge graph)
27
+ */
28
+ export class PatternOntologyBridge {
29
+ store;
30
+ ruleEngine;
31
+ config;
32
+ patternCache = new Map();
33
+ constructor(store, config) {
34
+ this.store = store;
35
+ this.config = {
36
+ enableInference: config?.enableInference ?? true,
37
+ minConfidence: config?.minConfidence ?? 0.5,
38
+ maxInferenceIterations: config?.maxInferenceIterations ?? 5,
39
+ };
40
+ this.ruleEngine = new RuleEngine({
41
+ maxIterations: this.config.maxInferenceIterations,
42
+ });
43
+ // Add pattern-specific inference rules
44
+ this.addPatternInferenceRules();
45
+ }
46
+ /**
47
+ * Add pattern-specific inference rules
48
+ */
49
+ addPatternInferenceRules() {
50
+ // Subsumption transitivity
51
+ this.ruleEngine.addRule({
52
+ id: 'pattern-subsumes-trans',
53
+ name: 'Pattern Subsumption Transitivity',
54
+ description: 'If A subsumes B and B subsumes C, then A subsumes C',
55
+ priority: 90,
56
+ conditions: [
57
+ { type: 'transitive', predicate: `${NS.pattern}subsumes` },
58
+ ],
59
+ actions: [],
60
+ });
61
+ // Subsumes implies specializes inverse
62
+ this.ruleEngine.addRule({
63
+ id: 'pattern-subsumes-inverse',
64
+ name: 'Subsumes-Specializes Inverse',
65
+ description: 'If A subsumes B, then B specializes A',
66
+ priority: 85,
67
+ conditions: [
68
+ { type: 'inverse', predicate1: `${NS.pattern}subsumes`, predicate2: `${NS.pattern}specializes` },
69
+ ],
70
+ actions: [],
71
+ });
72
+ // SimilarTo is symmetric
73
+ this.ruleEngine.addRule({
74
+ id: 'pattern-similar-sym',
75
+ name: 'Pattern Similarity Symmetry',
76
+ description: 'If A similarTo B, then B similarTo A',
77
+ priority: 80,
78
+ conditions: [
79
+ { type: 'symmetric', predicate: `${NS.pattern}similarTo` },
80
+ ],
81
+ actions: [],
82
+ });
83
+ }
84
+ /**
85
+ * Import pattern into ontology
86
+ */
87
+ importPattern(pattern) {
88
+ const patternUri = this.getPatternUri(pattern.id);
89
+ // Store pattern in cache
90
+ this.patternCache.set(pattern.id, pattern);
91
+ // Create pattern entity triples
92
+ const triples = [
93
+ // Type declaration
94
+ {
95
+ subject: patternUri,
96
+ predicate: `${NS.rdf}type`,
97
+ object: `${NS.pattern}Pattern`,
98
+ },
99
+ // Name
100
+ {
101
+ subject: patternUri,
102
+ predicate: `${NS.rdfs}label`,
103
+ object: pattern.name,
104
+ },
105
+ // Language
106
+ {
107
+ subject: patternUri,
108
+ predicate: `${NS.pattern}language`,
109
+ object: pattern.language,
110
+ },
111
+ // AST root type
112
+ {
113
+ subject: patternUri,
114
+ predicate: `${NS.pattern}astType`,
115
+ object: pattern.ast.type,
116
+ },
117
+ // Frequency
118
+ {
119
+ subject: patternUri,
120
+ predicate: `${NS.pattern}frequency`,
121
+ object: String(pattern.frequency),
122
+ },
123
+ // Hole count
124
+ {
125
+ subject: patternUri,
126
+ predicate: `${NS.pattern}holeCount`,
127
+ object: String(pattern.holes.length),
128
+ },
129
+ ];
130
+ // Add hole types
131
+ for (const hole of pattern.holes) {
132
+ triples.push({
133
+ subject: patternUri,
134
+ predicate: `${NS.pattern}hasHoleType`,
135
+ object: hole.type,
136
+ });
137
+ }
138
+ // Add AST structure classification
139
+ const structureClass = this.classifyASTStructure(pattern.ast);
140
+ triples.push({
141
+ subject: patternUri,
142
+ predicate: `${NS.pattern}structureClass`,
143
+ object: structureClass,
144
+ });
145
+ // Add complexity metrics
146
+ const complexity = this.calculateComplexity(pattern.ast);
147
+ triples.push({
148
+ subject: patternUri,
149
+ predicate: `${NS.pattern}complexity`,
150
+ object: String(complexity),
151
+ });
152
+ // Store triples
153
+ return this.store.addTriples(triples) === triples.length;
154
+ }
155
+ /**
156
+ * Import multiple patterns
157
+ */
158
+ importPatterns(patterns) {
159
+ let imported = 0;
160
+ for (const pattern of patterns) {
161
+ if (this.importPattern(pattern)) {
162
+ imported++;
163
+ }
164
+ }
165
+ // Discover relationships after import
166
+ if (this.config.enableInference) {
167
+ this.discoverRelationships(patterns);
168
+ }
169
+ return imported;
170
+ }
171
+ /**
172
+ * Discover relationships between patterns
173
+ */
174
+ discoverRelationships(patterns) {
175
+ const relationships = [];
176
+ for (let i = 0; i < patterns.length; i++) {
177
+ for (let j = i + 1; j < patterns.length; j++) {
178
+ const a = patterns[i];
179
+ const b = patterns[j];
180
+ // Check subsumption
181
+ const subsumption = this.checkSubsumption(a, b);
182
+ if (subsumption) {
183
+ relationships.push(subsumption);
184
+ this.addRelationshipTriple(subsumption);
185
+ }
186
+ // Check similarity
187
+ const similarity = this.checkSimilarity(a, b);
188
+ if (similarity && similarity.confidence >= this.config.minConfidence) {
189
+ relationships.push(similarity);
190
+ this.addRelationshipTriple(similarity);
191
+ }
192
+ // Check composition
193
+ const composition = this.checkComposition(a, b);
194
+ if (composition) {
195
+ relationships.push(composition);
196
+ this.addRelationshipTriple(composition);
197
+ }
198
+ }
199
+ }
200
+ // Apply inference rules
201
+ if (this.config.enableInference) {
202
+ this.applyInference();
203
+ }
204
+ return relationships;
205
+ }
206
+ /**
207
+ * Check if pattern A subsumes pattern B
208
+ */
209
+ checkSubsumption(a, b) {
210
+ // A subsumes B if A is more general (has more holes at same positions)
211
+ if (a.ast.type !== b.ast.type)
212
+ return null;
213
+ if (a.language !== b.language)
214
+ return null;
215
+ const aHoleCount = a.holes.length;
216
+ const bHoleCount = b.holes.length;
217
+ // More holes = more general
218
+ if (aHoleCount > bHoleCount) {
219
+ const confidence = Math.min(1.0, (aHoleCount - bHoleCount) / Math.max(aHoleCount, 1) + 0.5);
220
+ return {
221
+ source: a.id,
222
+ target: b.id,
223
+ relation: 'subsumes',
224
+ confidence,
225
+ evidence: [`A has ${aHoleCount} holes, B has ${bHoleCount} holes`],
226
+ };
227
+ }
228
+ return null;
229
+ }
230
+ /**
231
+ * Check similarity between patterns
232
+ */
233
+ checkSimilarity(a, b) {
234
+ if (a.language !== b.language)
235
+ return null;
236
+ // Calculate structural similarity
237
+ const similarity = this.calculateASTSimilarity(a.ast, b.ast);
238
+ if (similarity >= this.config.minConfidence) {
239
+ return {
240
+ source: a.id,
241
+ target: b.id,
242
+ relation: 'similarTo',
243
+ confidence: similarity,
244
+ evidence: [`Structural similarity: ${(similarity * 100).toFixed(1)}%`],
245
+ };
246
+ }
247
+ return null;
248
+ }
249
+ /**
250
+ * Check if pattern A contains pattern B
251
+ */
252
+ checkComposition(a, b) {
253
+ if (a.language !== b.language)
254
+ return null;
255
+ // Check if B's AST structure appears in A's children
256
+ const contains = this.containsStructure(a.ast, b.ast);
257
+ if (contains) {
258
+ return {
259
+ source: a.id,
260
+ target: b.id,
261
+ relation: 'composedOf',
262
+ confidence: 0.8,
263
+ evidence: [`Pattern A contains structure of pattern B`],
264
+ };
265
+ }
266
+ return null;
267
+ }
268
+ /**
269
+ * Calculate AST similarity
270
+ */
271
+ calculateASTSimilarity(a, b) {
272
+ if (a.type !== b.type)
273
+ return 0;
274
+ let matches = 1;
275
+ let total = 1;
276
+ // Compare children
277
+ const maxChildren = Math.max(a.children.length, b.children.length);
278
+ const minChildren = Math.min(a.children.length, b.children.length);
279
+ total += maxChildren;
280
+ matches += minChildren;
281
+ // Recursively compare matching children
282
+ for (let i = 0; i < minChildren; i++) {
283
+ const childSim = this.calculateASTSimilarity(a.children[i], b.children[i]);
284
+ matches += childSim;
285
+ total += 1;
286
+ }
287
+ return matches / total;
288
+ }
289
+ /**
290
+ * Check if AST A contains structure B
291
+ */
292
+ containsStructure(a, b) {
293
+ if (a.type === b.type && this.calculateASTSimilarity(a, b) > 0.9) {
294
+ return true;
295
+ }
296
+ for (const child of a.children) {
297
+ if (this.containsStructure(child, b)) {
298
+ return true;
299
+ }
300
+ }
301
+ return false;
302
+ }
303
+ /**
304
+ * Add relationship triple to store
305
+ */
306
+ addRelationshipTriple(rel) {
307
+ const sourceUri = this.getPatternUri(rel.source);
308
+ const targetUri = this.getPatternUri(rel.target);
309
+ const predicateUri = `${NS.pattern}${rel.relation}`;
310
+ this.store.addTriple({
311
+ subject: sourceUri,
312
+ predicate: predicateUri,
313
+ object: targetUri,
314
+ });
315
+ // Add confidence as annotation
316
+ this.store.addTriple({
317
+ subject: `${sourceUri}_${rel.relation}_${targetUri}`,
318
+ predicate: `${NS.pattern}confidence`,
319
+ object: String(rel.confidence),
320
+ });
321
+ }
322
+ /**
323
+ * Apply inference rules
324
+ */
325
+ applyInference() {
326
+ // Get all triples
327
+ const results = this.store.query({});
328
+ const triples = results.map(r => ({
329
+ subject: r.subject,
330
+ predicate: r.predicate,
331
+ object: r.object,
332
+ }));
333
+ // Apply rules
334
+ const { triples: inferred, stats } = this.ruleEngine.applyRules(triples);
335
+ // Add new triples
336
+ for (const triple of inferred) {
337
+ if (!this.store.has(triple)) {
338
+ this.store.addTriple(triple);
339
+ }
340
+ }
341
+ return stats;
342
+ }
343
+ /**
344
+ * Query patterns by criteria
345
+ */
346
+ queryPatterns(criteria) {
347
+ const results = [];
348
+ const relationships = [];
349
+ // Build query pattern
350
+ const patterns = [];
351
+ if (criteria.language) {
352
+ const langResults = this.store.query({
353
+ predicate: `${NS.pattern}language`,
354
+ object: criteria.language,
355
+ });
356
+ patterns.push(...langResults.map(r => r.subject));
357
+ }
358
+ if (criteria.astType) {
359
+ const typeResults = this.store.query({
360
+ predicate: `${NS.pattern}astType`,
361
+ object: criteria.astType,
362
+ });
363
+ patterns.push(...typeResults.map(r => r.subject));
364
+ }
365
+ // Get unique pattern URIs
366
+ const patternUris = patterns.length > 0
367
+ ? [...new Set(patterns)]
368
+ : this.store.getSubjectsOfType(`${NS.pattern}Pattern`);
369
+ // Retrieve patterns from cache
370
+ for (const uri of patternUris) {
371
+ const id = this.getPatternIdFromUri(uri);
372
+ const pattern = this.patternCache.get(id);
373
+ if (pattern) {
374
+ // Apply frequency filter
375
+ if (criteria.minFrequency && pattern.frequency < criteria.minFrequency) {
376
+ continue;
377
+ }
378
+ results.push(pattern);
379
+ }
380
+ }
381
+ // Get relationships if requested
382
+ if (criteria.hasRelation && criteria.relatedTo) {
383
+ const relResults = this.store.query({
384
+ predicate: `${NS.pattern}${criteria.hasRelation}`,
385
+ object: this.getPatternUri(criteria.relatedTo),
386
+ });
387
+ for (const r of relResults) {
388
+ relationships.push({
389
+ source: this.getPatternIdFromUri(r.subject),
390
+ target: criteria.relatedTo,
391
+ relation: criteria.hasRelation,
392
+ confidence: 1.0,
393
+ });
394
+ }
395
+ }
396
+ return { patterns: results, relationships };
397
+ }
398
+ /**
399
+ * Find related patterns
400
+ */
401
+ findRelatedPatterns(patternId, relation) {
402
+ const patternUri = this.getPatternUri(patternId);
403
+ const relationships = [];
404
+ const relations = relation
405
+ ? [relation]
406
+ : ['subsumes', 'specializes', 'similarTo', 'composedOf', 'usedWith', 'derivedFrom'];
407
+ for (const rel of relations) {
408
+ // Outgoing relationships
409
+ const outgoing = this.store.query({
410
+ subject: patternUri,
411
+ predicate: `${NS.pattern}${rel}`,
412
+ });
413
+ for (const r of outgoing) {
414
+ relationships.push({
415
+ source: patternId,
416
+ target: this.getPatternIdFromUri(r.object),
417
+ relation: rel,
418
+ confidence: 1.0,
419
+ });
420
+ }
421
+ // Incoming relationships
422
+ const incoming = this.store.query({
423
+ predicate: `${NS.pattern}${rel}`,
424
+ object: patternUri,
425
+ });
426
+ for (const r of incoming) {
427
+ relationships.push({
428
+ source: this.getPatternIdFromUri(r.subject),
429
+ target: patternId,
430
+ relation: rel,
431
+ confidence: 1.0,
432
+ });
433
+ }
434
+ }
435
+ return relationships;
436
+ }
437
+ /**
438
+ * Get pattern URI
439
+ */
440
+ getPatternUri(id) {
441
+ return `${NS.pattern}${id}`;
442
+ }
443
+ /**
444
+ * Extract pattern ID from URI
445
+ */
446
+ getPatternIdFromUri(uri) {
447
+ return uri.replace(NS.pattern, '');
448
+ }
449
+ /**
450
+ * Classify AST structure
451
+ */
452
+ classifyASTStructure(ast) {
453
+ const type = ast.type.toLowerCase();
454
+ if (type.includes('function') || type.includes('method')) {
455
+ return 'function-like';
456
+ }
457
+ if (type.includes('class') || type.includes('interface')) {
458
+ return 'type-definition';
459
+ }
460
+ if (type.includes('if') || type.includes('switch') || type.includes('conditional')) {
461
+ return 'conditional';
462
+ }
463
+ if (type.includes('for') || type.includes('while') || type.includes('loop')) {
464
+ return 'loop';
465
+ }
466
+ if (type.includes('try') || type.includes('catch')) {
467
+ return 'error-handling';
468
+ }
469
+ if (type.includes('import') || type.includes('export')) {
470
+ return 'module';
471
+ }
472
+ return 'other';
473
+ }
474
+ /**
475
+ * Calculate AST complexity
476
+ */
477
+ calculateComplexity(ast) {
478
+ let complexity = 1;
479
+ for (const child of ast.children) {
480
+ complexity += this.calculateComplexity(child);
481
+ }
482
+ // Bonus for certain node types
483
+ if (ast.type.includes('If') || ast.type.includes('Loop') || ast.type.includes('Try')) {
484
+ complexity += 1;
485
+ }
486
+ return complexity;
487
+ }
488
+ /**
489
+ * Export pattern graph as Turtle
490
+ */
491
+ async exportAsTurtle() {
492
+ return this.store.exportTurtle({
493
+ pattern: NS.pattern,
494
+ sdd: NS.sdd,
495
+ rdf: NS.rdf,
496
+ rdfs: NS.rdfs,
497
+ owl: NS.owl,
498
+ });
499
+ }
500
+ /**
501
+ * Get statistics
502
+ */
503
+ getStats() {
504
+ const patterns = this.store.getSubjectsOfType(`${NS.pattern}Pattern`);
505
+ let relationshipCount = 0;
506
+ const relations = ['subsumes', 'specializes', 'similarTo', 'composedOf', 'usedWith', 'derivedFrom'];
507
+ for (const rel of relations) {
508
+ relationshipCount += this.store.query({ predicate: `${NS.pattern}${rel}` }).length;
509
+ }
510
+ return {
511
+ patternCount: patterns.length,
512
+ tripleCount: this.store.size,
513
+ relationshipCount,
514
+ };
515
+ }
516
+ }
517
+ //# sourceMappingURL=pattern-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-bridge.js","sourceRoot":"","sources":["../../src/integration/pattern-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @fileoverview Privacy protection module
3
+ * @traceability TSK-ONTO-008
4
+ */
5
+ export { OntologyPrivacyGuard } from './privacy-guard.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/privacy/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @fileoverview Privacy protection module
3
+ * @traceability TSK-ONTO-008
4
+ */
5
+ export { OntologyPrivacyGuard } from './privacy-guard.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/privacy/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @fileoverview Privacy guard for ontology store
3
+ * @traceability TSK-ONTO-008, REQ-ONTO-001-F008
4
+ */
5
+ /**
6
+ * Privacy guard configuration
7
+ */
8
+ export interface PrivacyGuardConfig {
9
+ /** Block all external network calls */
10
+ blockExternalCommunication: boolean;
11
+ /** Allow only local file system storage */
12
+ localStorageOnly: boolean;
13
+ }
14
+ /**
15
+ * Privacy guard to ensure ontology data stays local
16
+ *
17
+ * @description
18
+ * - All data stored locally only
19
+ * - No external network communication
20
+ * - Enforces local-first architecture
21
+ */
22
+ export declare class OntologyPrivacyGuard {
23
+ private config;
24
+ constructor(config?: Partial<PrivacyGuardConfig>);
25
+ /**
26
+ * Check if external communication is blocked
27
+ */
28
+ isExternalCommunicationBlocked(): boolean;
29
+ /**
30
+ * Check if storage is local only
31
+ */
32
+ isLocalStorageOnly(): boolean;
33
+ /**
34
+ * Validate storage path is local
35
+ */
36
+ validateStoragePath(path: string): boolean;
37
+ /**
38
+ * Assert privacy constraints
39
+ * @throws Error if constraints are violated
40
+ */
41
+ assertPrivacyConstraints(storagePath: string): void;
42
+ }
43
+ //# sourceMappingURL=privacy-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy-guard.d.ts","sourceRoot":"","sources":["../../src/privacy/privacy-guard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,0BAA0B,EAAE,OAAO,CAAC;IACpC,2CAA2C;IAC3C,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM;IAOpD;;OAEG;IACH,8BAA8B,IAAI,OAAO;IAIzC;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAe1C;;;OAGG;IACH,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;CAKpD"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @fileoverview Privacy guard for ontology store
3
+ * @traceability TSK-ONTO-008, REQ-ONTO-001-F008
4
+ */
5
+ /**
6
+ * Privacy guard to ensure ontology data stays local
7
+ *
8
+ * @description
9
+ * - All data stored locally only
10
+ * - No external network communication
11
+ * - Enforces local-first architecture
12
+ */
13
+ export class OntologyPrivacyGuard {
14
+ config;
15
+ constructor(config = {}) {
16
+ this.config = {
17
+ blockExternalCommunication: config.blockExternalCommunication ?? true,
18
+ localStorageOnly: config.localStorageOnly ?? true,
19
+ };
20
+ }
21
+ /**
22
+ * Check if external communication is blocked
23
+ */
24
+ isExternalCommunicationBlocked() {
25
+ return this.config.blockExternalCommunication;
26
+ }
27
+ /**
28
+ * Check if storage is local only
29
+ */
30
+ isLocalStorageOnly() {
31
+ return this.config.localStorageOnly;
32
+ }
33
+ /**
34
+ * Validate storage path is local
35
+ */
36
+ validateStoragePath(path) {
37
+ if (!this.config.localStorageOnly)
38
+ return true;
39
+ // Block remote paths
40
+ const remotePatterns = [
41
+ /^https?:\/\//i,
42
+ /^s3:\/\//i,
43
+ /^gs:\/\//i,
44
+ /^azure:\/\//i,
45
+ /^ftp:\/\//i,
46
+ ];
47
+ return !remotePatterns.some(pattern => pattern.test(path));
48
+ }
49
+ /**
50
+ * Assert privacy constraints
51
+ * @throws Error if constraints are violated
52
+ */
53
+ assertPrivacyConstraints(storagePath) {
54
+ if (!this.validateStoragePath(storagePath)) {
55
+ throw new Error(`Privacy violation: Remote storage path not allowed: ${storagePath}`);
56
+ }
57
+ }
58
+ }
59
+ //# sourceMappingURL=privacy-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy-guard.js","sourceRoot":"","sources":["../../src/privacy/privacy-guard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH;;;;;;;GAOG;AACH,MAAM,OAAO,oBAAoB;IACvB,MAAM,CAAqB;IAEnC,YAAY,SAAsC,EAAE;QAClD,IAAI,CAAC,MAAM,GAAG;YACZ,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,IAAI,IAAI;YACrE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,IAAI;SAClD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,8BAA8B;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,IAAY;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAC;QAE/C,qBAAqB;QACrB,MAAM,cAAc,GAAG;YACrB,eAAe;YACf,WAAW;YACX,WAAW;YACX,cAAc;YACd,YAAY;SACb,CAAC;QAEF,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACH,wBAAwB,CAAC,WAAmB;QAC1C,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,uDAAuD,WAAW,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @fileoverview Ontology store module
3
+ * @traceability TSK-ONTO-001
4
+ */
5
+ export { OntologyStore } from './ontology-store.js';
6
+ export { N3Store, type QueryPattern, type N3QueryResult, type InferenceRule } from './n3-store.js';
7
+ //# sourceMappingURL=index.d.ts.map