UNPKG

@terminals-tech/graph

Version:

Language-first event graph system. Extract relationships from text, find patterns, and navigate event chains.

109 lines (108 loc) 2.54 kB
/** * GraphProcessor - Scalable graph algorithms for 100K+ events * Phase 3: Efficient graph operations */ import { Event, Relation } from './TextGraph'; export interface GraphNode { id: string; data: any; weight?: number; } export interface GraphEdge { from: string; to: string; weight?: number; type?: string; } export interface Subgraph { nodes: Set<string>; edges: GraphEdge[]; } export interface Path { nodes: string[]; totalWeight: number; length: number; } export interface PageRankResult { node: string; score: number; rank: number; } export interface Cluster { id: number; nodes: Set<string>; center?: string; density: number; } export declare class GraphProcessor { private adjacencyList; private reverseIndex; private edgeWeights; private nodeData; private pageRankCache; private clusters; private isDirty; private nodeCount; private edgeCount; private processedEvents; private edgeHashes; /** * Add event to graph incrementally (idempotent) */ addEvent(event: Event, relations: Relation[]): void; /** * Add edge between nodes (idempotent) */ addEdge(from: string, to: string, weight?: number, type?: string): void; /** * Calculate PageRank scores using power iteration */ calculatePageRank(iterations?: number, damping?: number): PageRankResult[]; /** * Find connected components (clusters) */ findClusters(): Cluster[]; /** * Find shortest path using BFS */ findPath(from: string, to: string): Path | null; /** * Find all paths between two nodes (limited depth) */ findAllPaths(from: string, to: string, maxDepth?: number): Path[]; /** * Get subgraph around a node */ getSubgraph(nodeId: string, depth?: number): Subgraph; /** * Detect cycles in the graph */ detectCycles(): string[][]; /** * Calculate graph statistics */ getStatistics(): { nodes: number; edges: number; density: number; avgDegree: number; maxDegree: number; connected: boolean; cyclic: boolean; }; /** * Clear the graph */ clear(): void; /** * Create a snapshot for rollback */ private createSnapshot; /** * Restore from snapshot */ private restoreSnapshot; private formatPageRankResults; private calculateClusterDensity; private findClusterCenter; }