@nahisaho/yata-local 1.6.6
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.
- package/dist/auto-updater.d.ts +101 -0
- package/dist/auto-updater.d.ts.map +1 -0
- package/dist/auto-updater.js +402 -0
- package/dist/auto-updater.js.map +1 -0
- package/dist/database.d.ts +229 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +959 -0
- package/dist/database.js.map +1 -0
- package/dist/index.d.ts +298 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +436 -0
- package/dist/index.js.map +1 -0
- package/dist/io.d.ts +77 -0
- package/dist/io.d.ts.map +1 -0
- package/dist/io.js +403 -0
- package/dist/io.js.map +1 -0
- package/dist/kgpr/diff-engine.d.ts +110 -0
- package/dist/kgpr/diff-engine.d.ts.map +1 -0
- package/dist/kgpr/diff-engine.js +335 -0
- package/dist/kgpr/diff-engine.js.map +1 -0
- package/dist/kgpr/index.d.ts +16 -0
- package/dist/kgpr/index.d.ts.map +1 -0
- package/dist/kgpr/index.js +14 -0
- package/dist/kgpr/index.js.map +1 -0
- package/dist/kgpr/kgpr-manager.d.ts +122 -0
- package/dist/kgpr/kgpr-manager.d.ts.map +1 -0
- package/dist/kgpr/kgpr-manager.js +344 -0
- package/dist/kgpr/kgpr-manager.js.map +1 -0
- package/dist/kgpr/privacy-filter.d.ts +109 -0
- package/dist/kgpr/privacy-filter.d.ts.map +1 -0
- package/dist/kgpr/privacy-filter.js +295 -0
- package/dist/kgpr/privacy-filter.js.map +1 -0
- package/dist/kgpr/types.d.ts +234 -0
- package/dist/kgpr/types.d.ts.map +1 -0
- package/dist/kgpr/types.js +54 -0
- package/dist/kgpr/types.js.map +1 -0
- package/dist/query-engine.d.ts +78 -0
- package/dist/query-engine.d.ts.map +1 -0
- package/dist/query-engine.js +368 -0
- package/dist/query-engine.js.map +1 -0
- package/dist/reasoning.d.ts +112 -0
- package/dist/reasoning.d.ts.map +1 -0
- package/dist/reasoning.js +455 -0
- package/dist/reasoning.js.map +1 -0
- package/dist/types.d.ts +580 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +37 -0
- package/dist/types.js.map +1 -0
- package/dist/wake-sleep/cycle-manager.d.ts +76 -0
- package/dist/wake-sleep/cycle-manager.d.ts.map +1 -0
- package/dist/wake-sleep/cycle-manager.js +291 -0
- package/dist/wake-sleep/cycle-manager.js.map +1 -0
- package/dist/wake-sleep/index.d.ts +15 -0
- package/dist/wake-sleep/index.d.ts.map +1 -0
- package/dist/wake-sleep/index.js +19 -0
- package/dist/wake-sleep/index.js.map +1 -0
- package/dist/wake-sleep/pattern-compressor.d.ts +86 -0
- package/dist/wake-sleep/pattern-compressor.d.ts.map +1 -0
- package/dist/wake-sleep/pattern-compressor.js +333 -0
- package/dist/wake-sleep/pattern-compressor.js.map +1 -0
- package/dist/wake-sleep/sleep-phase.d.ts +79 -0
- package/dist/wake-sleep/sleep-phase.d.ts.map +1 -0
- package/dist/wake-sleep/sleep-phase.js +329 -0
- package/dist/wake-sleep/sleep-phase.js.map +1 -0
- package/dist/wake-sleep/types.d.ts +244 -0
- package/dist/wake-sleep/types.d.ts.map +1 -0
- package/dist/wake-sleep/types.js +35 -0
- package/dist/wake-sleep/types.js.map +1 -0
- package/dist/wake-sleep/wake-phase.d.ts +83 -0
- package/dist/wake-sleep/wake-phase.d.ts.map +1 -0
- package/dist/wake-sleep/wake-phase.js +457 -0
- package/dist/wake-sleep/wake-phase.js.map +1 -0
- package/dist/yata-bridge.d.ts +78 -0
- package/dist/yata-bridge.d.ts.map +1 -0
- package/dist/yata-bridge.js +193 -0
- package/dist/yata-bridge.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YATA Local KGPR - Privacy Filter
|
|
3
|
+
*
|
|
4
|
+
* Removes sensitive information before sharing local knowledge graphs
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module @nahisaho/yata-local/kgpr
|
|
8
|
+
*
|
|
9
|
+
* @see REQ-YL-EXT-KGPR-002
|
|
10
|
+
*/
|
|
11
|
+
import { DEFAULT_LOCAL_PRIVACY_STRICT, DEFAULT_LOCAL_PRIVACY_MODERATE, DEFAULT_LOCAL_PRIVACY_NONE, } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Privacy filter for local KGPR
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const filter = createLocalPrivacyFilter('strict');
|
|
18
|
+
* const sanitizedDiff = filter.filterDiff(diff);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export class LocalPrivacyFilter {
|
|
22
|
+
config;
|
|
23
|
+
excludeRegexes;
|
|
24
|
+
constructor(config) {
|
|
25
|
+
this.config = config;
|
|
26
|
+
this.excludeRegexes = config.excludePatterns.map((pattern) => new RegExp(pattern, 'i'));
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get the current configuration
|
|
30
|
+
*/
|
|
31
|
+
getConfig() {
|
|
32
|
+
return { ...this.config };
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Filter a complete diff
|
|
36
|
+
*
|
|
37
|
+
* @param diff - The diff to filter
|
|
38
|
+
* @returns Filtered diff with sensitive data removed
|
|
39
|
+
*/
|
|
40
|
+
filterDiff(diff) {
|
|
41
|
+
const filteredEntities = {
|
|
42
|
+
added: this.filterEntityChanges(diff.entities.added),
|
|
43
|
+
updated: this.filterEntityChanges(diff.entities.updated),
|
|
44
|
+
deleted: this.filterEntityChanges(diff.entities.deleted),
|
|
45
|
+
};
|
|
46
|
+
const filteredRelationships = {
|
|
47
|
+
added: this.filterRelationshipChanges(diff.relationships.added),
|
|
48
|
+
updated: this.filterRelationshipChanges(diff.relationships.updated),
|
|
49
|
+
deleted: this.filterRelationshipChanges(diff.relationships.deleted),
|
|
50
|
+
};
|
|
51
|
+
return {
|
|
52
|
+
entities: filteredEntities,
|
|
53
|
+
relationships: filteredRelationships,
|
|
54
|
+
stats: this.calculateStats(filteredEntities, filteredRelationships),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Filter entity changes
|
|
59
|
+
*/
|
|
60
|
+
filterEntityChanges(changes) {
|
|
61
|
+
return changes
|
|
62
|
+
.filter((change) => this.shouldIncludeEntity(change))
|
|
63
|
+
.map((change) => this.sanitizeEntity(change));
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Filter relationship changes
|
|
67
|
+
*/
|
|
68
|
+
filterRelationshipChanges(changes) {
|
|
69
|
+
return changes
|
|
70
|
+
.filter((change) => this.shouldIncludeRelationship(change))
|
|
71
|
+
.map((change) => this.sanitizeRelationship(change));
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Check if an entity should be included
|
|
75
|
+
*/
|
|
76
|
+
shouldIncludeEntity(entity) {
|
|
77
|
+
// Check namespace exclusion
|
|
78
|
+
if (this.isNamespaceExcluded(entity.namespace)) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
// Check name pattern exclusion
|
|
82
|
+
if (this.isNameExcluded(entity.name)) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
// Check file path exclusion
|
|
86
|
+
if (entity.filePath && this.isPathExcluded(entity.filePath)) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Check if a relationship should be included
|
|
93
|
+
*/
|
|
94
|
+
shouldIncludeRelationship(rel) {
|
|
95
|
+
// Exclude if either endpoint is in excluded namespace
|
|
96
|
+
if (this.isNamespaceExcluded(rel.sourceNamespace) || this.isNamespaceExcluded(rel.targetNamespace)) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
// Check name pattern exclusion for both endpoints
|
|
100
|
+
if (this.isNameExcluded(rel.sourceName) || this.isNameExcluded(rel.targetName)) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Sanitize an entity change
|
|
107
|
+
*/
|
|
108
|
+
sanitizeEntity(entity) {
|
|
109
|
+
const sanitized = {
|
|
110
|
+
changeType: entity.changeType,
|
|
111
|
+
localId: entity.localId,
|
|
112
|
+
name: this.applyReplacements(entity.name),
|
|
113
|
+
entityType: entity.entityType,
|
|
114
|
+
namespace: this.applyReplacements(entity.namespace),
|
|
115
|
+
};
|
|
116
|
+
// Conditionally include file path
|
|
117
|
+
if (!this.config.removeFilePaths && entity.filePath) {
|
|
118
|
+
sanitized.filePath = this.sanitizePath(entity.filePath);
|
|
119
|
+
}
|
|
120
|
+
// Conditionally include line number
|
|
121
|
+
if (!this.config.removeLineNumbers && entity.line !== undefined) {
|
|
122
|
+
sanitized.line = entity.line;
|
|
123
|
+
}
|
|
124
|
+
// Conditionally include metadata
|
|
125
|
+
if (!this.config.removeMetadata && entity.metadata) {
|
|
126
|
+
sanitized.metadata = this.sanitizeMetadata(entity.metadata);
|
|
127
|
+
}
|
|
128
|
+
return sanitized;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Sanitize a relationship change
|
|
132
|
+
*/
|
|
133
|
+
sanitizeRelationship(rel) {
|
|
134
|
+
const sanitized = {
|
|
135
|
+
changeType: rel.changeType,
|
|
136
|
+
sourceName: this.applyReplacements(rel.sourceName),
|
|
137
|
+
sourceNamespace: this.applyReplacements(rel.sourceNamespace),
|
|
138
|
+
targetName: this.applyReplacements(rel.targetName),
|
|
139
|
+
targetNamespace: this.applyReplacements(rel.targetNamespace),
|
|
140
|
+
relationshipType: rel.relationshipType,
|
|
141
|
+
};
|
|
142
|
+
if (rel.localId) {
|
|
143
|
+
sanitized.localId = rel.localId;
|
|
144
|
+
}
|
|
145
|
+
// Conditionally include metadata
|
|
146
|
+
if (!this.config.removeMetadata && rel.metadata) {
|
|
147
|
+
sanitized.metadata = this.sanitizeMetadata(rel.metadata);
|
|
148
|
+
}
|
|
149
|
+
return sanitized;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Check if a namespace should be excluded
|
|
153
|
+
*/
|
|
154
|
+
isNamespaceExcluded(namespace) {
|
|
155
|
+
const lowerNs = namespace.toLowerCase();
|
|
156
|
+
return this.config.excludeNamespaces.some((excluded) => lowerNs.includes(excluded.toLowerCase()));
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Check if a name should be excluded
|
|
160
|
+
*/
|
|
161
|
+
isNameExcluded(name) {
|
|
162
|
+
return this.excludeRegexes.some((regex) => regex.test(name));
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Check if a file path should be excluded
|
|
166
|
+
*/
|
|
167
|
+
isPathExcluded(filePath) {
|
|
168
|
+
const lowerPath = filePath.toLowerCase();
|
|
169
|
+
return this.config.excludeNamespaces.some((excluded) => lowerPath.includes(excluded.toLowerCase()));
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Sanitize a file path
|
|
173
|
+
*/
|
|
174
|
+
sanitizePath(filePath) {
|
|
175
|
+
// Apply replacements to path
|
|
176
|
+
return this.applyReplacements(filePath);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Sanitize metadata object
|
|
180
|
+
*/
|
|
181
|
+
sanitizeMetadata(metadata) {
|
|
182
|
+
const sanitized = {};
|
|
183
|
+
for (const [key, value] of Object.entries(metadata)) {
|
|
184
|
+
// Skip keys that match exclude patterns
|
|
185
|
+
if (this.isNameExcluded(key)) {
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
// Sanitize string values
|
|
189
|
+
if (typeof value === 'string') {
|
|
190
|
+
sanitized[key] = this.applyReplacements(value);
|
|
191
|
+
}
|
|
192
|
+
else if (typeof value === 'object' && value !== null) {
|
|
193
|
+
// Recursively sanitize nested objects
|
|
194
|
+
sanitized[key] = this.sanitizeMetadata(value);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
sanitized[key] = value;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return sanitized;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Apply configured string replacements
|
|
204
|
+
*/
|
|
205
|
+
applyReplacements(str) {
|
|
206
|
+
let result = str;
|
|
207
|
+
for (const { pattern, replacement } of this.config.replacements) {
|
|
208
|
+
result = result.replace(new RegExp(pattern, 'gi'), replacement);
|
|
209
|
+
}
|
|
210
|
+
return result;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Calculate stats from filtered changes
|
|
214
|
+
*/
|
|
215
|
+
calculateStats(entities, relationships) {
|
|
216
|
+
const entitiesAdded = entities.added.length;
|
|
217
|
+
const entitiesUpdated = entities.updated.length;
|
|
218
|
+
const entitiesDeleted = entities.deleted.length;
|
|
219
|
+
const relationshipsAdded = relationships.added.length;
|
|
220
|
+
const relationshipsUpdated = relationships.updated.length;
|
|
221
|
+
const relationshipsDeleted = relationships.deleted.length;
|
|
222
|
+
return {
|
|
223
|
+
entitiesAdded,
|
|
224
|
+
entitiesUpdated,
|
|
225
|
+
entitiesDeleted,
|
|
226
|
+
relationshipsAdded,
|
|
227
|
+
relationshipsUpdated,
|
|
228
|
+
relationshipsDeleted,
|
|
229
|
+
totalChanges: entitiesAdded +
|
|
230
|
+
entitiesUpdated +
|
|
231
|
+
entitiesDeleted +
|
|
232
|
+
relationshipsAdded +
|
|
233
|
+
relationshipsUpdated +
|
|
234
|
+
relationshipsDeleted,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Create a privacy filter with a preset level
|
|
240
|
+
*
|
|
241
|
+
* @param level - Privacy level preset
|
|
242
|
+
* @param customConfig - Custom configuration to merge with preset
|
|
243
|
+
* @returns Configured privacy filter
|
|
244
|
+
*
|
|
245
|
+
* @example
|
|
246
|
+
* ```typescript
|
|
247
|
+
* // Use strict preset
|
|
248
|
+
* const strictFilter = createLocalPrivacyFilter('strict');
|
|
249
|
+
*
|
|
250
|
+
* // Use moderate with custom exclusions
|
|
251
|
+
* const customFilter = createLocalPrivacyFilter('moderate', {
|
|
252
|
+
* excludePatterns: [...DEFAULT_LOCAL_PRIVACY_MODERATE.excludePatterns, 'my_secret'],
|
|
253
|
+
* });
|
|
254
|
+
* ```
|
|
255
|
+
*/
|
|
256
|
+
export function createLocalPrivacyFilter(level, customConfig) {
|
|
257
|
+
let baseConfig;
|
|
258
|
+
switch (level) {
|
|
259
|
+
case 'strict':
|
|
260
|
+
baseConfig = { ...DEFAULT_LOCAL_PRIVACY_STRICT };
|
|
261
|
+
break;
|
|
262
|
+
case 'moderate':
|
|
263
|
+
baseConfig = { ...DEFAULT_LOCAL_PRIVACY_MODERATE };
|
|
264
|
+
break;
|
|
265
|
+
case 'none':
|
|
266
|
+
baseConfig = { ...DEFAULT_LOCAL_PRIVACY_NONE };
|
|
267
|
+
break;
|
|
268
|
+
default:
|
|
269
|
+
baseConfig = { ...DEFAULT_LOCAL_PRIVACY_MODERATE };
|
|
270
|
+
}
|
|
271
|
+
// Merge custom config if provided
|
|
272
|
+
if (customConfig) {
|
|
273
|
+
return new LocalPrivacyFilter({
|
|
274
|
+
...baseConfig,
|
|
275
|
+
...customConfig,
|
|
276
|
+
// Merge arrays instead of replacing
|
|
277
|
+
excludeNamespaces: [
|
|
278
|
+
...baseConfig.excludeNamespaces,
|
|
279
|
+
...(customConfig.excludeNamespaces || []),
|
|
280
|
+
],
|
|
281
|
+
excludePatterns: [
|
|
282
|
+
...baseConfig.excludePatterns,
|
|
283
|
+
...(customConfig.excludePatterns || []),
|
|
284
|
+
],
|
|
285
|
+
replacements: [
|
|
286
|
+
...baseConfig.replacements,
|
|
287
|
+
...(customConfig.replacements || []),
|
|
288
|
+
],
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
return new LocalPrivacyFilter(baseConfig);
|
|
292
|
+
}
|
|
293
|
+
// Re-export default configs
|
|
294
|
+
export { DEFAULT_LOCAL_PRIVACY_STRICT, DEFAULT_LOCAL_PRIVACY_MODERATE, DEFAULT_LOCAL_PRIVACY_NONE, } from './types.js';
|
|
295
|
+
//# sourceMappingURL=privacy-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy-filter.js","sourceRoot":"","sources":["../../src/kgpr/privacy-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YATA Local KGPR Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for local Knowledge Graph Pull Requests
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module @nahisaho/yata-local/kgpr
|
|
8
|
+
*
|
|
9
|
+
* @see REQ-YL-EXT-KGPR-001
|
|
10
|
+
*/
|
|
11
|
+
import type { Entity, EntityType, RelationType, KGPRStatusLocal, PrivacyLevel as BasePrivacyLevel } from '../types.js';
|
|
12
|
+
export type { KGPRStatusLocal, PrivacyLevel } from '../types.js';
|
|
13
|
+
/**
|
|
14
|
+
* Change type
|
|
15
|
+
*/
|
|
16
|
+
export type ChangeType = 'add' | 'update' | 'delete';
|
|
17
|
+
/**
|
|
18
|
+
* Entity change in a KGPR diff
|
|
19
|
+
*/
|
|
20
|
+
export interface LocalEntityChange {
|
|
21
|
+
/** Change type */
|
|
22
|
+
changeType: ChangeType;
|
|
23
|
+
/** Local entity ID */
|
|
24
|
+
localId: string;
|
|
25
|
+
/** Entity name */
|
|
26
|
+
name: string;
|
|
27
|
+
/** Entity type */
|
|
28
|
+
entityType: EntityType;
|
|
29
|
+
/** Namespace */
|
|
30
|
+
namespace: string;
|
|
31
|
+
/** File path (may be sanitized) */
|
|
32
|
+
filePath?: string;
|
|
33
|
+
/** Line number */
|
|
34
|
+
line?: number;
|
|
35
|
+
/** Metadata */
|
|
36
|
+
metadata?: Record<string, unknown>;
|
|
37
|
+
/** Previous value (for updates) */
|
|
38
|
+
previousValue?: Partial<Entity>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Relationship change in a KGPR diff
|
|
42
|
+
*/
|
|
43
|
+
export interface LocalRelationshipChange {
|
|
44
|
+
/** Change type */
|
|
45
|
+
changeType: ChangeType;
|
|
46
|
+
/** Local relationship ID */
|
|
47
|
+
localId?: string;
|
|
48
|
+
/** Source entity name */
|
|
49
|
+
sourceName: string;
|
|
50
|
+
/** Source namespace */
|
|
51
|
+
sourceNamespace: string;
|
|
52
|
+
/** Target entity name */
|
|
53
|
+
targetName: string;
|
|
54
|
+
/** Target namespace */
|
|
55
|
+
targetNamespace: string;
|
|
56
|
+
/** Relationship type */
|
|
57
|
+
relationshipType: RelationType;
|
|
58
|
+
/** Metadata */
|
|
59
|
+
metadata?: Record<string, unknown>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* KGPR diff - all changes
|
|
63
|
+
*/
|
|
64
|
+
export interface LocalKGPRDiff {
|
|
65
|
+
/** Entity changes */
|
|
66
|
+
entities: {
|
|
67
|
+
added: LocalEntityChange[];
|
|
68
|
+
updated: LocalEntityChange[];
|
|
69
|
+
deleted: LocalEntityChange[];
|
|
70
|
+
};
|
|
71
|
+
/** Relationship changes */
|
|
72
|
+
relationships: {
|
|
73
|
+
added: LocalRelationshipChange[];
|
|
74
|
+
updated: LocalRelationshipChange[];
|
|
75
|
+
deleted: LocalRelationshipChange[];
|
|
76
|
+
};
|
|
77
|
+
/** Statistics */
|
|
78
|
+
stats: LocalDiffStats;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Diff statistics
|
|
82
|
+
*/
|
|
83
|
+
export interface LocalDiffStats {
|
|
84
|
+
entitiesAdded: number;
|
|
85
|
+
entitiesUpdated: number;
|
|
86
|
+
entitiesDeleted: number;
|
|
87
|
+
relationshipsAdded: number;
|
|
88
|
+
relationshipsUpdated: number;
|
|
89
|
+
relationshipsDeleted: number;
|
|
90
|
+
totalChanges: number;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* KGPR review from local storage
|
|
94
|
+
*/
|
|
95
|
+
export interface LocalKGPRReviewEntry {
|
|
96
|
+
/** Review ID */
|
|
97
|
+
id: string;
|
|
98
|
+
/** KGPR ID */
|
|
99
|
+
kgprId: string;
|
|
100
|
+
/** Reviewer ID */
|
|
101
|
+
reviewerId: string;
|
|
102
|
+
/** Review status */
|
|
103
|
+
status: 'approved' | 'changes_requested' | 'commented';
|
|
104
|
+
/** Review comment */
|
|
105
|
+
comment?: string;
|
|
106
|
+
/** Created timestamp */
|
|
107
|
+
createdAt: Date;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Local KGPR info (full object with parsed diff)
|
|
111
|
+
*/
|
|
112
|
+
export interface LocalKGPRInfo {
|
|
113
|
+
/** KGPR ID */
|
|
114
|
+
id: string;
|
|
115
|
+
/** Title */
|
|
116
|
+
title: string;
|
|
117
|
+
/** Description */
|
|
118
|
+
description: string;
|
|
119
|
+
/** Status */
|
|
120
|
+
status: KGPRStatusLocal;
|
|
121
|
+
/** Source namespace */
|
|
122
|
+
namespace: string;
|
|
123
|
+
/** Diff (parsed) */
|
|
124
|
+
diff: LocalKGPRDiff;
|
|
125
|
+
/** Privacy level used */
|
|
126
|
+
privacyLevel: BasePrivacyLevel;
|
|
127
|
+
/** Entity types included */
|
|
128
|
+
entityTypes: EntityType[];
|
|
129
|
+
/** Reviews */
|
|
130
|
+
reviews: LocalKGPRReviewEntry[];
|
|
131
|
+
/** Created timestamp */
|
|
132
|
+
createdAt: Date;
|
|
133
|
+
/** Updated timestamp */
|
|
134
|
+
updatedAt: Date;
|
|
135
|
+
/** Submitted timestamp */
|
|
136
|
+
submittedAt?: Date;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Options for creating a KGPR
|
|
140
|
+
*/
|
|
141
|
+
export interface CreateLocalKGPROptions {
|
|
142
|
+
/** Title */
|
|
143
|
+
title: string;
|
|
144
|
+
/** Description */
|
|
145
|
+
description?: string;
|
|
146
|
+
/** Author ID */
|
|
147
|
+
author?: string;
|
|
148
|
+
/** Source namespace to include (optional filter) */
|
|
149
|
+
namespace?: string;
|
|
150
|
+
/** Entity types to include (optional filter) */
|
|
151
|
+
entityTypes?: EntityType[];
|
|
152
|
+
/** Privacy level */
|
|
153
|
+
privacyLevel?: BasePrivacyLevel;
|
|
154
|
+
/** Baseline snapshot ID (for diff) */
|
|
155
|
+
baselineId?: string;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Options for listing KGPRs
|
|
159
|
+
*/
|
|
160
|
+
export interface ListLocalKGPROptions {
|
|
161
|
+
/** Filter by status */
|
|
162
|
+
status?: KGPRStatusLocal | KGPRStatusLocal[];
|
|
163
|
+
/** Filter by namespace */
|
|
164
|
+
namespace?: string;
|
|
165
|
+
/** Search in title/description */
|
|
166
|
+
search?: string;
|
|
167
|
+
/** Sort by field */
|
|
168
|
+
sortBy?: 'created' | 'updated' | 'title';
|
|
169
|
+
/** Sort order */
|
|
170
|
+
sortOrder?: 'asc' | 'desc';
|
|
171
|
+
/** Limit results */
|
|
172
|
+
limit?: number;
|
|
173
|
+
/** Offset for pagination */
|
|
174
|
+
offset?: number;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Privacy filter configuration
|
|
178
|
+
*/
|
|
179
|
+
export interface LocalPrivacyFilterConfig {
|
|
180
|
+
/** Remove file paths from output */
|
|
181
|
+
removeFilePaths: boolean;
|
|
182
|
+
/** Remove line numbers from output */
|
|
183
|
+
removeLineNumbers: boolean;
|
|
184
|
+
/** Remove metadata from output */
|
|
185
|
+
removeMetadata: boolean;
|
|
186
|
+
/** Namespace patterns to exclude */
|
|
187
|
+
excludeNamespaces: string[];
|
|
188
|
+
/** Entity name patterns to exclude (regex) */
|
|
189
|
+
excludePatterns: string[];
|
|
190
|
+
/** String replacements */
|
|
191
|
+
replacements: {
|
|
192
|
+
pattern: string;
|
|
193
|
+
replacement: string;
|
|
194
|
+
}[];
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Default strict privacy filter
|
|
198
|
+
*/
|
|
199
|
+
export declare const DEFAULT_LOCAL_PRIVACY_STRICT: LocalPrivacyFilterConfig;
|
|
200
|
+
/**
|
|
201
|
+
* Default moderate privacy filter
|
|
202
|
+
*/
|
|
203
|
+
export declare const DEFAULT_LOCAL_PRIVACY_MODERATE: LocalPrivacyFilterConfig;
|
|
204
|
+
/**
|
|
205
|
+
* Default no privacy filter
|
|
206
|
+
*/
|
|
207
|
+
export declare const DEFAULT_LOCAL_PRIVACY_NONE: LocalPrivacyFilterConfig;
|
|
208
|
+
/**
|
|
209
|
+
* Snapshot of the knowledge graph at a point in time
|
|
210
|
+
*/
|
|
211
|
+
export interface KGSnapshot {
|
|
212
|
+
/** Snapshot ID */
|
|
213
|
+
id: string;
|
|
214
|
+
/** Snapshot timestamp */
|
|
215
|
+
timestamp: Date;
|
|
216
|
+
/** Entity hashes (id -> hash) */
|
|
217
|
+
entityHashes: Map<string, string>;
|
|
218
|
+
/** Relationship hashes (id -> hash) */
|
|
219
|
+
relationshipHashes: Map<string, string>;
|
|
220
|
+
/** Description */
|
|
221
|
+
description?: string;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Diff generation options
|
|
225
|
+
*/
|
|
226
|
+
export interface DiffOptions {
|
|
227
|
+
/** Namespace filter */
|
|
228
|
+
namespace?: string;
|
|
229
|
+
/** Entity types filter */
|
|
230
|
+
entityTypes?: EntityType[];
|
|
231
|
+
/** Include deleted entities */
|
|
232
|
+
includeDeleted?: boolean;
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/kgpr/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YATA Local KGPR Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for local Knowledge Graph Pull Requests
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module @nahisaho/yata-local/kgpr
|
|
8
|
+
*
|
|
9
|
+
* @see REQ-YL-EXT-KGPR-001
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Default strict privacy filter
|
|
13
|
+
*/
|
|
14
|
+
export const DEFAULT_LOCAL_PRIVACY_STRICT = {
|
|
15
|
+
removeFilePaths: true,
|
|
16
|
+
removeLineNumbers: true,
|
|
17
|
+
removeMetadata: true,
|
|
18
|
+
excludeNamespaces: ['internal', 'private', 'secret', 'config', 'test', '__tests__'],
|
|
19
|
+
excludePatterns: [
|
|
20
|
+
'password',
|
|
21
|
+
'secret',
|
|
22
|
+
'token',
|
|
23
|
+
'api[_-]?key',
|
|
24
|
+
'credential',
|
|
25
|
+
'auth',
|
|
26
|
+
'private',
|
|
27
|
+
'\\$_',
|
|
28
|
+
'_internal',
|
|
29
|
+
],
|
|
30
|
+
replacements: [],
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Default moderate privacy filter
|
|
34
|
+
*/
|
|
35
|
+
export const DEFAULT_LOCAL_PRIVACY_MODERATE = {
|
|
36
|
+
removeFilePaths: false,
|
|
37
|
+
removeLineNumbers: false,
|
|
38
|
+
removeMetadata: false,
|
|
39
|
+
excludeNamespaces: ['secret', 'config'],
|
|
40
|
+
excludePatterns: ['password', 'secret', 'token', 'api[_-]?key'],
|
|
41
|
+
replacements: [],
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Default no privacy filter
|
|
45
|
+
*/
|
|
46
|
+
export const DEFAULT_LOCAL_PRIVACY_NONE = {
|
|
47
|
+
removeFilePaths: false,
|
|
48
|
+
removeLineNumbers: false,
|
|
49
|
+
removeMetadata: false,
|
|
50
|
+
excludeNamespaces: [],
|
|
51
|
+
excludePatterns: [],
|
|
52
|
+
replacements: [],
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/kgpr/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAqMH;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAA6B;IACpE,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,IAAI;IACvB,cAAc,EAAE,IAAI;IACpB,iBAAiB,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC;IACnF,eAAe,EAAE;QACf,UAAU;QACV,QAAQ;QACR,OAAO;QACP,aAAa;QACb,YAAY;QACZ,MAAM;QACN,SAAS;QACT,MAAM;QACN,WAAW;KACZ;IACD,YAAY,EAAE,EAAE;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAA6B;IACtE,eAAe,EAAE,KAAK;IACtB,iBAAiB,EAAE,KAAK;IACxB,cAAc,EAAE,KAAK;IACrB,iBAAiB,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACvC,eAAe,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC;IAC/D,YAAY,EAAE,EAAE;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAA6B;IAClE,eAAe,EAAE,KAAK;IACtB,iBAAiB,EAAE,KAAK;IACxB,cAAc,EAAE,KAAK;IACrB,iBAAiB,EAAE,EAAE;IACrB,eAAe,EAAE,EAAE;IACnB,YAAY,EAAE,EAAE;CACjB,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YATA Local - Query Engine
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
* @module @nahisaho/yata-local/query-engine
|
|
6
|
+
*
|
|
7
|
+
* @see REQ-YL-QUERY-001 ~ REQ-YL-QUERY-005
|
|
8
|
+
*/
|
|
9
|
+
import type { Entity, EntityType, Relationship, RelationType, GraphQuery, QueryResult, Path, Subgraph, GraphPattern, PatternMatch, QueryOptions } from './types.js';
|
|
10
|
+
import type { YataDatabase } from './database.js';
|
|
11
|
+
/**
|
|
12
|
+
* Query engine for traversing and querying the knowledge graph
|
|
13
|
+
*/
|
|
14
|
+
export declare class QueryEngine {
|
|
15
|
+
private db;
|
|
16
|
+
constructor(db: YataDatabase);
|
|
17
|
+
/**
|
|
18
|
+
* Execute graph query
|
|
19
|
+
* @see REQ-YL-QUERY-001
|
|
20
|
+
*/
|
|
21
|
+
query(query: GraphQuery, options?: Partial<QueryOptions>): QueryResult;
|
|
22
|
+
/**
|
|
23
|
+
* Find shortest path between two entities
|
|
24
|
+
* @see REQ-YL-QUERY-002
|
|
25
|
+
*/
|
|
26
|
+
findPath(startId: string, endId: string, options?: {
|
|
27
|
+
maxDepth?: number;
|
|
28
|
+
relationshipTypes?: RelationType[];
|
|
29
|
+
direction?: 'forward' | 'backward' | 'both';
|
|
30
|
+
}): Path | null;
|
|
31
|
+
/**
|
|
32
|
+
* Extract subgraph around entity
|
|
33
|
+
* @see REQ-YL-QUERY-003
|
|
34
|
+
*/
|
|
35
|
+
extractSubgraph(rootId: string, options?: {
|
|
36
|
+
depth?: number;
|
|
37
|
+
entityTypes?: EntityType[];
|
|
38
|
+
relationshipTypes?: RelationType[];
|
|
39
|
+
direction?: 'in' | 'out' | 'both';
|
|
40
|
+
}): Subgraph;
|
|
41
|
+
/**
|
|
42
|
+
* Pattern matching on graph
|
|
43
|
+
* @see REQ-YL-QUERY-004
|
|
44
|
+
*/
|
|
45
|
+
matchPattern(pattern: GraphPattern): PatternMatch[];
|
|
46
|
+
/**
|
|
47
|
+
* Recursive pattern matching helper
|
|
48
|
+
*/
|
|
49
|
+
private tryMatchPattern;
|
|
50
|
+
/**
|
|
51
|
+
* Check if name matches pattern
|
|
52
|
+
*/
|
|
53
|
+
private matchNamePattern;
|
|
54
|
+
/**
|
|
55
|
+
* Find entities by traversing relationships
|
|
56
|
+
*/
|
|
57
|
+
traverse(startId: string, relationshipTypes: RelationType[], direction: 'forward' | 'backward', maxHops?: number): Entity[];
|
|
58
|
+
/**
|
|
59
|
+
* Get entity neighbors
|
|
60
|
+
*/
|
|
61
|
+
getNeighbors(entityId: string, options?: {
|
|
62
|
+
direction?: 'in' | 'out' | 'both';
|
|
63
|
+
relationshipTypes?: RelationType[];
|
|
64
|
+
entityTypes?: EntityType[];
|
|
65
|
+
}): Array<{
|
|
66
|
+
entity: Entity;
|
|
67
|
+
relationship: Relationship;
|
|
68
|
+
}>;
|
|
69
|
+
/**
|
|
70
|
+
* Find all paths between two entities (up to limit)
|
|
71
|
+
*/
|
|
72
|
+
findAllPaths(startId: string, endId: string, options?: {
|
|
73
|
+
maxDepth?: number;
|
|
74
|
+
maxPaths?: number;
|
|
75
|
+
relationshipTypes?: RelationType[];
|
|
76
|
+
}): Path[];
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=query-engine.d.ts.map
|