@nahisaho/yata-global 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/api-client.d.ts +71 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +165 -0
- package/dist/api-client.js.map +1 -0
- package/dist/cache-manager.d.ts +122 -0
- package/dist/cache-manager.d.ts.map +1 -0
- package/dist/cache-manager.js +376 -0
- package/dist/cache-manager.js.map +1 -0
- package/dist/index.d.ts +138 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +548 -0
- package/dist/index.js.map +1 -0
- package/dist/kgpr/index.d.ts +12 -0
- package/dist/kgpr/index.d.ts.map +1 -0
- package/dist/kgpr/index.js +12 -0
- package/dist/kgpr/index.js.map +1 -0
- package/dist/kgpr/kgpr-manager.d.ts +162 -0
- package/dist/kgpr/kgpr-manager.d.ts.map +1 -0
- package/dist/kgpr/kgpr-manager.js +465 -0
- package/dist/kgpr/kgpr-manager.js.map +1 -0
- package/dist/kgpr/merge-engine.d.ts +269 -0
- package/dist/kgpr/merge-engine.d.ts.map +1 -0
- package/dist/kgpr/merge-engine.js +451 -0
- package/dist/kgpr/merge-engine.js.map +1 -0
- package/dist/kgpr/notification-service.d.ts +227 -0
- package/dist/kgpr/notification-service.d.ts.map +1 -0
- package/dist/kgpr/notification-service.js +440 -0
- package/dist/kgpr/notification-service.js.map +1 -0
- package/dist/kgpr/privacy-filter.d.ts +61 -0
- package/dist/kgpr/privacy-filter.d.ts.map +1 -0
- package/dist/kgpr/privacy-filter.js +191 -0
- package/dist/kgpr/privacy-filter.js.map +1 -0
- package/dist/kgpr/types.d.ts +303 -0
- package/dist/kgpr/types.d.ts.map +1 -0
- package/dist/kgpr/types.js +40 -0
- package/dist/kgpr/types.js.map +1 -0
- package/dist/sync-engine.d.ts +104 -0
- package/dist/sync-engine.d.ts.map +1 -0
- package/dist/sync-engine.js +275 -0
- package/dist/sync-engine.js.map +1 -0
- package/dist/types.d.ts +353 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +19 -0
- package/dist/types.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knowledge Graph Pull Request (KGPR) - Merge Engine
|
|
3
|
+
*
|
|
4
|
+
* Handles conflict detection, diff application, and merge audit logging
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module @nahisaho/yata-global/kgpr
|
|
8
|
+
*
|
|
9
|
+
* @see REQ-KGPR-004
|
|
10
|
+
* @see TSK-KGPR-006
|
|
11
|
+
*/
|
|
12
|
+
import { EventEmitter } from 'events';
|
|
13
|
+
import type { KGPR, KGPRDiff, EntityChange, RelationshipChange } from './types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Conflict type
|
|
16
|
+
*/
|
|
17
|
+
export type ConflictType = 'entity_exists' | 'entity_modified' | 'entity_deleted' | 'relationship_exists' | 'relationship_broken' | 'circular_dependency' | 'schema_violation';
|
|
18
|
+
/**
|
|
19
|
+
* Conflict severity
|
|
20
|
+
*/
|
|
21
|
+
export type ConflictSeverity = 'error' | 'warning' | 'info';
|
|
22
|
+
/**
|
|
23
|
+
* Merge conflict
|
|
24
|
+
*/
|
|
25
|
+
export interface MergeConflict {
|
|
26
|
+
/** Conflict ID */
|
|
27
|
+
id: string;
|
|
28
|
+
/** Conflict type */
|
|
29
|
+
type: ConflictType;
|
|
30
|
+
/** Severity */
|
|
31
|
+
severity: ConflictSeverity;
|
|
32
|
+
/** Human-readable message */
|
|
33
|
+
message: string;
|
|
34
|
+
/** Local entity/relationship ID */
|
|
35
|
+
localId: string;
|
|
36
|
+
/** Global entity/relationship ID (if exists) */
|
|
37
|
+
globalId?: string;
|
|
38
|
+
/** Entity/relationship name */
|
|
39
|
+
name: string;
|
|
40
|
+
/** Namespace */
|
|
41
|
+
namespace: string;
|
|
42
|
+
/** Whether this is an entity or relationship */
|
|
43
|
+
itemType: 'entity' | 'relationship';
|
|
44
|
+
/** Local value */
|
|
45
|
+
localValue?: Record<string, unknown>;
|
|
46
|
+
/** Global value */
|
|
47
|
+
globalValue?: Record<string, unknown>;
|
|
48
|
+
/** Suggested resolution */
|
|
49
|
+
suggestedResolution?: ConflictResolution;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Conflict resolution strategy
|
|
53
|
+
*/
|
|
54
|
+
export type ConflictResolution = 'use_local' | 'use_global' | 'merge' | 'skip' | 'rename';
|
|
55
|
+
/**
|
|
56
|
+
* Merge options
|
|
57
|
+
*/
|
|
58
|
+
export interface MergeOptions {
|
|
59
|
+
/** How to handle conflicts */
|
|
60
|
+
conflictStrategy?: 'fail' | 'skip_conflicts' | 'force';
|
|
61
|
+
/** Custom conflict resolutions by ID */
|
|
62
|
+
resolutions?: Map<string, ConflictResolution>;
|
|
63
|
+
/** Dry run (don't actually apply) */
|
|
64
|
+
dryRun?: boolean;
|
|
65
|
+
/** Merger user ID */
|
|
66
|
+
mergerId?: string;
|
|
67
|
+
/** Merger user name */
|
|
68
|
+
mergerName?: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Merge result
|
|
72
|
+
*/
|
|
73
|
+
export interface MergeResult {
|
|
74
|
+
/** Whether merge was successful */
|
|
75
|
+
success: boolean;
|
|
76
|
+
/** KGPR ID */
|
|
77
|
+
kgprId: string;
|
|
78
|
+
/** Conflicts found */
|
|
79
|
+
conflicts: MergeConflict[];
|
|
80
|
+
/** Applied changes */
|
|
81
|
+
applied: {
|
|
82
|
+
entitiesAdded: number;
|
|
83
|
+
entitiesUpdated: number;
|
|
84
|
+
entitiesDeleted: number;
|
|
85
|
+
relationshipsAdded: number;
|
|
86
|
+
relationshipsUpdated: number;
|
|
87
|
+
relationshipsDeleted: number;
|
|
88
|
+
};
|
|
89
|
+
/** Skipped changes */
|
|
90
|
+
skipped: {
|
|
91
|
+
entities: string[];
|
|
92
|
+
relationships: string[];
|
|
93
|
+
};
|
|
94
|
+
/** Audit log entry */
|
|
95
|
+
auditLog: MergeAuditLog;
|
|
96
|
+
/** Error message (if failed) */
|
|
97
|
+
error?: string;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Merge audit log entry
|
|
101
|
+
*/
|
|
102
|
+
export interface MergeAuditLog {
|
|
103
|
+
/** Log ID */
|
|
104
|
+
id: string;
|
|
105
|
+
/** KGPR ID */
|
|
106
|
+
kgprId: string;
|
|
107
|
+
/** KGPR title */
|
|
108
|
+
kgprTitle: string;
|
|
109
|
+
/** KGPR author */
|
|
110
|
+
kgprAuthor: string;
|
|
111
|
+
/** Merger ID */
|
|
112
|
+
mergerId: string;
|
|
113
|
+
/** Merger name */
|
|
114
|
+
mergerName: string;
|
|
115
|
+
/** Operation type */
|
|
116
|
+
operation: 'merge' | 'dry_run' | 'conflict_check';
|
|
117
|
+
/** Result */
|
|
118
|
+
result: 'success' | 'failed' | 'partial';
|
|
119
|
+
/** Timestamp */
|
|
120
|
+
timestamp: Date;
|
|
121
|
+
/** Changes applied */
|
|
122
|
+
changes: {
|
|
123
|
+
entitiesAdded: EntityChange[];
|
|
124
|
+
entitiesUpdated: EntityChange[];
|
|
125
|
+
entitiesDeleted: EntityChange[];
|
|
126
|
+
relationshipsAdded: RelationshipChange[];
|
|
127
|
+
relationshipsUpdated: RelationshipChange[];
|
|
128
|
+
relationshipsDeleted: RelationshipChange[];
|
|
129
|
+
};
|
|
130
|
+
/** Conflicts */
|
|
131
|
+
conflicts: MergeConflict[];
|
|
132
|
+
/** Resolutions applied */
|
|
133
|
+
resolutions: Array<{
|
|
134
|
+
conflictId: string;
|
|
135
|
+
resolution: ConflictResolution;
|
|
136
|
+
}>;
|
|
137
|
+
/** Duration (ms) */
|
|
138
|
+
durationMs: number;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Global Knowledge Graph interface (for reading/writing to global KG)
|
|
142
|
+
*/
|
|
143
|
+
export interface GlobalKnowledgeGraph {
|
|
144
|
+
/** Check if entity exists */
|
|
145
|
+
entityExists(name: string, namespace: string): Promise<boolean>;
|
|
146
|
+
/** Get entity by name and namespace */
|
|
147
|
+
getEntity(name: string, namespace: string): Promise<{
|
|
148
|
+
id: string;
|
|
149
|
+
name: string;
|
|
150
|
+
type: string;
|
|
151
|
+
namespace: string;
|
|
152
|
+
version?: number;
|
|
153
|
+
metadata?: Record<string, unknown>;
|
|
154
|
+
updatedAt: Date;
|
|
155
|
+
} | null>;
|
|
156
|
+
/** Check if relationship exists */
|
|
157
|
+
relationshipExists(sourceName: string, sourceNamespace: string, targetName: string, targetNamespace: string, type: string): Promise<boolean>;
|
|
158
|
+
/** Add entity */
|
|
159
|
+
addEntity(entity: {
|
|
160
|
+
name: string;
|
|
161
|
+
type: string;
|
|
162
|
+
namespace: string;
|
|
163
|
+
metadata?: Record<string, unknown>;
|
|
164
|
+
}): Promise<string>;
|
|
165
|
+
/** Update entity */
|
|
166
|
+
updateEntity(name: string, namespace: string, updates: Record<string, unknown>): Promise<void>;
|
|
167
|
+
/** Delete entity */
|
|
168
|
+
deleteEntity(name: string, namespace: string): Promise<void>;
|
|
169
|
+
/** Add relationship */
|
|
170
|
+
addRelationship(rel: {
|
|
171
|
+
sourceName: string;
|
|
172
|
+
sourceNamespace: string;
|
|
173
|
+
targetName: string;
|
|
174
|
+
targetNamespace: string;
|
|
175
|
+
type: string;
|
|
176
|
+
metadata?: Record<string, unknown>;
|
|
177
|
+
}): Promise<string>;
|
|
178
|
+
/** Delete relationship */
|
|
179
|
+
deleteRelationship(sourceName: string, sourceNamespace: string, targetName: string, targetNamespace: string, type: string): Promise<void>;
|
|
180
|
+
/** Check for circular dependencies */
|
|
181
|
+
wouldCreateCycle?(sourceName: string, sourceNamespace: string, targetName: string, targetNamespace: string, relationshipType: string): Promise<boolean>;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* MergeEngine events
|
|
185
|
+
*/
|
|
186
|
+
export interface MergeEngineEvents {
|
|
187
|
+
'merge:started': {
|
|
188
|
+
kgprId: string;
|
|
189
|
+
};
|
|
190
|
+
'merge:conflict': {
|
|
191
|
+
conflict: MergeConflict;
|
|
192
|
+
};
|
|
193
|
+
'merge:progress': {
|
|
194
|
+
phase: string;
|
|
195
|
+
progress: number;
|
|
196
|
+
total: number;
|
|
197
|
+
};
|
|
198
|
+
'merge:completed': {
|
|
199
|
+
result: MergeResult;
|
|
200
|
+
};
|
|
201
|
+
'merge:failed': {
|
|
202
|
+
kgprId: string;
|
|
203
|
+
error: string;
|
|
204
|
+
};
|
|
205
|
+
'error': Error;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Merge Engine
|
|
209
|
+
*
|
|
210
|
+
* Handles conflict detection, diff application, and merge audit logging
|
|
211
|
+
*
|
|
212
|
+
* @example
|
|
213
|
+
* ```typescript
|
|
214
|
+
* const engine = new MergeEngine({ globalKG });
|
|
215
|
+
* const conflicts = await engine.checkConflicts(kgpr.diff);
|
|
216
|
+
* if (conflicts.length === 0) {
|
|
217
|
+
* const result = await engine.merge(kgpr);
|
|
218
|
+
* }
|
|
219
|
+
* ```
|
|
220
|
+
*/
|
|
221
|
+
export declare class MergeEngine extends EventEmitter {
|
|
222
|
+
private globalKG;
|
|
223
|
+
private auditLogs;
|
|
224
|
+
private conflictIdCounter;
|
|
225
|
+
constructor(options?: {
|
|
226
|
+
globalKG?: GlobalKnowledgeGraph;
|
|
227
|
+
});
|
|
228
|
+
/**
|
|
229
|
+
* Connect to global knowledge graph
|
|
230
|
+
*/
|
|
231
|
+
connectGlobalKG(globalKG: GlobalKnowledgeGraph): void;
|
|
232
|
+
/**
|
|
233
|
+
* Generate unique conflict ID
|
|
234
|
+
*/
|
|
235
|
+
private generateConflictId;
|
|
236
|
+
/**
|
|
237
|
+
* Generate unique audit log ID
|
|
238
|
+
*/
|
|
239
|
+
private generateAuditLogId;
|
|
240
|
+
/**
|
|
241
|
+
* Check for conflicts in a diff
|
|
242
|
+
*/
|
|
243
|
+
checkConflicts(diff: KGPRDiff): Promise<MergeConflict[]>;
|
|
244
|
+
/**
|
|
245
|
+
* Merge a KGPR into the global knowledge graph
|
|
246
|
+
*/
|
|
247
|
+
merge(kgpr: KGPR, options?: MergeOptions): Promise<MergeResult>;
|
|
248
|
+
/**
|
|
249
|
+
* Apply diff to global KG
|
|
250
|
+
*/
|
|
251
|
+
private applyDiff;
|
|
252
|
+
/**
|
|
253
|
+
* Create an audit log entry
|
|
254
|
+
*/
|
|
255
|
+
private createAuditLog;
|
|
256
|
+
/**
|
|
257
|
+
* Get all audit logs
|
|
258
|
+
*/
|
|
259
|
+
getAuditLogs(): MergeAuditLog[];
|
|
260
|
+
/**
|
|
261
|
+
* Get audit logs for a specific KGPR
|
|
262
|
+
*/
|
|
263
|
+
getAuditLogsForKGPR(kgprId: string): MergeAuditLog[];
|
|
264
|
+
/**
|
|
265
|
+
* Clear audit logs
|
|
266
|
+
*/
|
|
267
|
+
clearAuditLogs(): void;
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=merge-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-engine.d.ts","sourceRoot":"","sources":["../../src/kgpr/merge-engine.ts"],"names":[],"mappings":"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"}
|