@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.
Files changed (45) hide show
  1. package/dist/api-client.d.ts +71 -0
  2. package/dist/api-client.d.ts.map +1 -0
  3. package/dist/api-client.js +165 -0
  4. package/dist/api-client.js.map +1 -0
  5. package/dist/cache-manager.d.ts +122 -0
  6. package/dist/cache-manager.d.ts.map +1 -0
  7. package/dist/cache-manager.js +376 -0
  8. package/dist/cache-manager.js.map +1 -0
  9. package/dist/index.d.ts +138 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +548 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/kgpr/index.d.ts +12 -0
  14. package/dist/kgpr/index.d.ts.map +1 -0
  15. package/dist/kgpr/index.js +12 -0
  16. package/dist/kgpr/index.js.map +1 -0
  17. package/dist/kgpr/kgpr-manager.d.ts +162 -0
  18. package/dist/kgpr/kgpr-manager.d.ts.map +1 -0
  19. package/dist/kgpr/kgpr-manager.js +465 -0
  20. package/dist/kgpr/kgpr-manager.js.map +1 -0
  21. package/dist/kgpr/merge-engine.d.ts +269 -0
  22. package/dist/kgpr/merge-engine.d.ts.map +1 -0
  23. package/dist/kgpr/merge-engine.js +451 -0
  24. package/dist/kgpr/merge-engine.js.map +1 -0
  25. package/dist/kgpr/notification-service.d.ts +227 -0
  26. package/dist/kgpr/notification-service.d.ts.map +1 -0
  27. package/dist/kgpr/notification-service.js +440 -0
  28. package/dist/kgpr/notification-service.js.map +1 -0
  29. package/dist/kgpr/privacy-filter.d.ts +61 -0
  30. package/dist/kgpr/privacy-filter.d.ts.map +1 -0
  31. package/dist/kgpr/privacy-filter.js +191 -0
  32. package/dist/kgpr/privacy-filter.js.map +1 -0
  33. package/dist/kgpr/types.d.ts +303 -0
  34. package/dist/kgpr/types.d.ts.map +1 -0
  35. package/dist/kgpr/types.js +40 -0
  36. package/dist/kgpr/types.js.map +1 -0
  37. package/dist/sync-engine.d.ts +104 -0
  38. package/dist/sync-engine.d.ts.map +1 -0
  39. package/dist/sync-engine.js +275 -0
  40. package/dist/sync-engine.js.map +1 -0
  41. package/dist/types.d.ts +353 -0
  42. package/dist/types.d.ts.map +1 -0
  43. package/dist/types.js +19 -0
  44. package/dist/types.js.map +1 -0
  45. 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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"}