@harness-engineering/graph 0.4.0 → 0.4.1

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/README.md CHANGED
@@ -73,27 +73,29 @@ const results = fusion.search('authentication handler', { topK: 10 });
73
73
 
74
74
  ## Key Classes
75
75
 
76
- | Class | Description |
77
- | ------------------------- | ------------------------------------------------------------------------------- |
78
- | `GraphStore` | In-memory graph backed by LokiJS with indexed node/edge collections |
79
- | `VectorStore` | Optional vector index for semantic similarity search (hnswlib) |
80
- | `ContextQL` | BFS-based graph traversal engine with type filtering and observability pruning |
81
- | `project` | Projection utility to select specific fields from query results |
82
- | `CodeIngestor` | Parses TypeScript/JavaScript files into file, class, function, and method nodes |
83
- | `GitIngestor` | Extracts commit history and co-change relationships from git |
84
- | `KnowledgeIngestor` | Ingests ADRs, learnings, and markdown knowledge artifacts |
85
- | `TopologicalLinker` | Creates structural edges (imports, calls, references) between code nodes |
86
- | `FusionLayer` | Hybrid search combining keyword matching and semantic similarity scores |
87
- | `Assembler` | Phase-aware context assembly with token budgets and coverage reports |
88
- | `SyncManager` | Orchestrates connector syncs with incremental update tracking |
89
- | `GraphEntropyAdapter` | Detects graph drift and dead code for entropy monitoring |
90
- | `GraphConstraintAdapter` | Validates dependency rules and layer boundary violations |
91
- | `GraphFeedbackAdapter` | Computes impact analysis and harness check data from graph state |
92
- | `saveGraph` / `loadGraph` | Serializes and deserializes the graph store to/from disk |
76
+ | Class | Description |
77
+ | ------------------------------ | ------------------------------------------------------------------------------------ |
78
+ | `GraphStore` | In-memory graph backed by LokiJS with indexed node/edge collections |
79
+ | `VectorStore` | Optional vector index for semantic similarity search (hnswlib) |
80
+ | `ContextQL` | BFS-based graph traversal engine with type filtering and observability pruning |
81
+ | `project` | Projection utility to select specific fields from query results |
82
+ | `CodeIngestor` | Parses TypeScript/JavaScript files into file, class, function, and method nodes |
83
+ | `GitIngestor` | Extracts commit history and co-change relationships from git |
84
+ | `KnowledgeIngestor` | Ingests ADRs, learnings, and markdown knowledge artifacts |
85
+ | `TopologicalLinker` | Creates structural edges (imports, calls, references) between code nodes |
86
+ | `FusionLayer` | Hybrid search combining keyword matching and semantic similarity scores |
87
+ | `Assembler` | Phase-aware context assembly with token budgets and coverage reports |
88
+ | `SyncManager` | Orchestrates connector syncs with incremental update tracking |
89
+ | `GraphEntropyAdapter` | Detects graph drift and dead code for entropy monitoring |
90
+ | `GraphConstraintAdapter` | Validates dependency rules and layer boundary violations |
91
+ | `GraphFeedbackAdapter` | Computes impact analysis and harness check data from graph state |
92
+ | `CascadeSimulator` | Probability-weighted BFS for cascading failure simulation (`compute_blast_radius`) |
93
+ | `CompositeProbabilityStrategy` | Default edge probability strategy blending edge type, change frequency, and coupling |
94
+ | `saveGraph` / `loadGraph` | Serializes and deserializes the graph store to/from disk |
93
95
 
94
96
  ## Node Types
95
97
 
96
- 24 node types organized by category:
98
+ 28 node types organized by category:
97
99
 
98
100
  | Category | Types |
99
101
  | ----------------- | -------------------------------------------------------------------------------------- |
@@ -102,19 +104,23 @@ const results = fusion.search('authentication handler', { topK: 10 });
102
104
  | **VCS** | `commit`, `build`, `test_result` |
103
105
  | **Observability** | `span`, `metric`, `log` |
104
106
  | **Structural** | `layer`, `pattern`, `constraint`, `violation` |
107
+ | **Design** | `design_token`, `aesthetic_intent`, `design_constraint` |
108
+ | **Traceability** | `requirement` |
105
109
 
106
110
  Observability types (`span`, `metric`, `log`) are pruned by default in ContextQL queries to reduce noise.
107
111
 
108
112
  ## Edge Types
109
113
 
110
- 17 edge types organized by category:
114
+ 24 edge types organized by category:
111
115
 
112
- | Category | Types |
113
- | ------------- | ----------------------------------------------------------------------------------------- |
114
- | **Code** | `contains`, `imports`, `calls`, `implements`, `inherits`, `references` |
115
- | **Knowledge** | `applies_to`, `caused_by`, `resolved_by`, `documents`, `violates`, `specifies`, `decided` |
116
- | **VCS** | `co_changes_with`, `triggered_by`, `failed_in` |
117
- | **Execution** | `executed_by`, `measured_by` |
116
+ | Category | Types |
117
+ | ---------------- | ----------------------------------------------------------------------------------------- |
118
+ | **Code** | `contains`, `imports`, `calls`, `implements`, `inherits`, `references` |
119
+ | **Knowledge** | `applies_to`, `caused_by`, `resolved_by`, `documents`, `violates`, `specifies`, `decided` |
120
+ | **VCS** | `co_changes_with`, `triggered_by`, `failed_in` |
121
+ | **Execution** | `executed_by`, `measured_by` |
122
+ | **Design** | `uses_token`, `declares_intent`, `violates_design`, `platform_binding` |
123
+ | **Traceability** | `requires`, `verified_by`, `tested_by` |
118
124
 
119
125
  Edges carry an optional `confidence` score (0-1) used by the FusionLayer for ranking.
120
126
 
package/dist/index.d.mts CHANGED
@@ -176,6 +176,8 @@ declare class GraphStore {
176
176
  addEdge(edge: GraphEdge): void;
177
177
  batchAddEdges(edges: readonly GraphEdge[]): void;
178
178
  getEdges(query: EdgeQuery): GraphEdge[];
179
+ /** Pick the most selective index to start from. */
180
+ private selectCandidates;
179
181
  getNeighbors(nodeId: string, direction?: 'outbound' | 'inbound' | 'both'): GraphNode[];
180
182
  get nodeCount(): number;
181
183
  get edgeCount(): number;
@@ -252,6 +254,9 @@ declare class ContextQL {
252
254
 
253
255
  declare function project(nodes: readonly GraphNode[], spec: ProjectionSpec | undefined): Partial<GraphNode>[];
254
256
 
257
+ type NodeCategory = 'tests' | 'docs' | 'code' | 'other';
258
+ /** Classify a graph node into an impact category. */
259
+ declare function classifyNodeCategory(node: GraphNode): NodeCategory;
255
260
  interface ImpactGroups {
256
261
  readonly tests: readonly GraphNode[];
257
262
  readonly docs: readonly GraphNode[];
@@ -1030,6 +1035,91 @@ declare class ConflictPredictor {
1030
1035
  private generateVerdict;
1031
1036
  }
1032
1037
 
1033
- declare const VERSION = "0.2.0";
1038
+ interface ProbabilityStrategy {
1039
+ /** Compute failure propagation probability for a single edge (0..1). */
1040
+ getEdgeProbability(edge: GraphEdge, fromNode: GraphNode, toNode: GraphNode): number;
1041
+ }
1042
+ interface CascadeSimulationOptions {
1043
+ /** Minimum cumulative probability to continue traversal. Default: 0.05 */
1044
+ readonly probabilityFloor?: number;
1045
+ /** Maximum BFS depth. Default: 10 */
1046
+ readonly maxDepth?: number;
1047
+ /** Filter to specific edge types. Default: all edge types. */
1048
+ readonly edgeTypes?: readonly string[];
1049
+ /** Pluggable probability strategy. Default: CompositeProbabilityStrategy. */
1050
+ readonly strategy?: ProbabilityStrategy;
1051
+ }
1052
+ interface CascadeNode {
1053
+ readonly nodeId: string;
1054
+ readonly name: string;
1055
+ readonly path?: string;
1056
+ readonly type: string;
1057
+ readonly cumulativeProbability: number;
1058
+ readonly depth: number;
1059
+ readonly incomingEdge: string;
1060
+ readonly parentId: string;
1061
+ }
1062
+ interface CascadeLayer {
1063
+ readonly depth: number;
1064
+ readonly nodes: readonly CascadeNode[];
1065
+ readonly categoryBreakdown: {
1066
+ readonly code: number;
1067
+ readonly tests: number;
1068
+ readonly docs: number;
1069
+ readonly other: number;
1070
+ };
1071
+ }
1072
+ interface CascadeResult {
1073
+ readonly sourceNodeId: string;
1074
+ readonly sourceName: string;
1075
+ readonly layers: readonly CascadeLayer[];
1076
+ readonly flatSummary: readonly CascadeNode[];
1077
+ readonly summary: {
1078
+ readonly totalAffected: number;
1079
+ readonly maxDepthReached: number;
1080
+ readonly highRisk: number;
1081
+ readonly mediumRisk: number;
1082
+ readonly lowRisk: number;
1083
+ readonly categoryBreakdown: {
1084
+ readonly code: number;
1085
+ readonly tests: number;
1086
+ readonly docs: number;
1087
+ readonly other: number;
1088
+ };
1089
+ readonly amplificationPoints: readonly string[];
1090
+ readonly truncated: boolean;
1091
+ };
1092
+ }
1093
+
1094
+ /**
1095
+ * Default probability strategy blending three signals:
1096
+ * - 50% edge type base weight
1097
+ * - 30% normalized change frequency of target node
1098
+ * - 20% normalized coupling strength of target node
1099
+ */
1100
+ declare class CompositeProbabilityStrategy implements ProbabilityStrategy {
1101
+ private readonly changeFreqMap;
1102
+ private readonly couplingMap;
1103
+ static readonly BASE_WEIGHTS: Record<string, number>;
1104
+ private static readonly FALLBACK_WEIGHT;
1105
+ private static readonly EDGE_TYPE_BLEND;
1106
+ private static readonly CHANGE_FREQ_BLEND;
1107
+ private static readonly COUPLING_BLEND;
1108
+ constructor(changeFreqMap: Map<string, number>, couplingMap: Map<string, number>);
1109
+ getEdgeProbability(edge: GraphEdge, _fromNode: GraphNode, toNode: GraphNode): number;
1110
+ }
1111
+
1112
+ declare class CascadeSimulator {
1113
+ private readonly store;
1114
+ constructor(store: GraphStore);
1115
+ simulate(sourceNodeId: string, options?: CascadeSimulationOptions): CascadeResult;
1116
+ private seedQueue;
1117
+ private runBfs;
1118
+ private expandNode;
1119
+ private buildDefaultStrategy;
1120
+ private buildResult;
1121
+ }
1122
+
1123
+ declare const VERSION = "0.4.0";
1034
1124
 
1035
- export { type AnomalyDetectionOptions, type AnomalyReport, type ArticulationPoint, type AskGraphResult, type AssembledContext, Assembler, CIConnector, CURRENT_SCHEMA_VERSION, type ClassificationResult, CodeIngestor, type ConflictDetail, type ConflictPrediction, ConflictPredictor, type ConflictSeverity, ConfluenceConnector, type ConnectorConfig, ContextQL, type ContextQLParams, type ContextQLResult, DesignConstraintAdapter, DesignIngestor, type DesignStrictness, type DesignViolation, EDGE_TYPES, type EdgeQuery, type EdgeType, EntityExtractor, EntityResolver, FusionLayer, type FusionResult, GitIngestor, type GitRunner, GraphAnomalyAdapter, type GraphBudget, GraphComplexityAdapter, type GraphComplexityHotspot, type GraphComplexityResult, type GraphConnector, GraphConstraintAdapter, GraphCouplingAdapter, type GraphCouplingFileData, type GraphCouplingResult, type GraphCoverageReport, type GraphDeadCodeData, type GraphDependencyData, type GraphDriftData, type GraphEdge, GraphEdgeSchema, GraphEntropyAdapter, GraphFeedbackAdapter, type GraphFilterResult, type GraphHarnessCheckData, type GraphImpactData, type GraphLayerViolation, type GraphMetadata, type GraphNode, GraphNodeSchema, type GraphSnapshotSummary, GraphStore, type HttpClient, INTENTS, type ImpactGroups, type IndependenceCheckParams, type IndependenceResult, type IngestResult, type Intent, IntentClassifier, JiraConnector, KnowledgeIngestor, type LinkResult, NODE_TYPES, type NodeQuery, type NodeType, OBSERVABILITY_TYPES, type OverlapDetail, type PairResult, type ProjectionSpec, type RequirementCoverage, RequirementIngestor, type ResolvedEntity, ResponseFormatter, SlackConnector, type SourceLocation, type StatisticalOutlier, SyncManager, type SyncMetadata, type TaskDefinition, TaskIndependenceAnalyzer, TopologicalLinker, type TraceabilityOptions, type TraceabilityResult, type TracedFile, VERSION, type VectorSearchResult, VectorStore, askGraph, groupNodesByImpact, linkToCode, loadGraph, project, queryTraceability, saveGraph };
1125
+ export { type AnomalyDetectionOptions, type AnomalyReport, type ArticulationPoint, type AskGraphResult, type AssembledContext, Assembler, CIConnector, CURRENT_SCHEMA_VERSION, type CascadeLayer, type CascadeNode, type CascadeResult, type CascadeSimulationOptions, CascadeSimulator, type ClassificationResult, CodeIngestor, CompositeProbabilityStrategy, type ConflictDetail, type ConflictPrediction, ConflictPredictor, type ConflictSeverity, ConfluenceConnector, type ConnectorConfig, ContextQL, type ContextQLParams, type ContextQLResult, DesignConstraintAdapter, DesignIngestor, type DesignStrictness, type DesignViolation, EDGE_TYPES, type EdgeQuery, type EdgeType, EntityExtractor, EntityResolver, FusionLayer, type FusionResult, GitIngestor, type GitRunner, GraphAnomalyAdapter, type GraphBudget, GraphComplexityAdapter, type GraphComplexityHotspot, type GraphComplexityResult, type GraphConnector, GraphConstraintAdapter, GraphCouplingAdapter, type GraphCouplingFileData, type GraphCouplingResult, type GraphCoverageReport, type GraphDeadCodeData, type GraphDependencyData, type GraphDriftData, type GraphEdge, GraphEdgeSchema, GraphEntropyAdapter, GraphFeedbackAdapter, type GraphFilterResult, type GraphHarnessCheckData, type GraphImpactData, type GraphLayerViolation, type GraphMetadata, type GraphNode, GraphNodeSchema, type GraphSnapshotSummary, GraphStore, type HttpClient, INTENTS, type ImpactGroups, type IndependenceCheckParams, type IndependenceResult, type IngestResult, type Intent, IntentClassifier, JiraConnector, KnowledgeIngestor, type LinkResult, NODE_TYPES, type NodeCategory, type NodeQuery, type NodeType, OBSERVABILITY_TYPES, type OverlapDetail, type PairResult, type ProbabilityStrategy, type ProjectionSpec, type RequirementCoverage, RequirementIngestor, type ResolvedEntity, ResponseFormatter, SlackConnector, type SourceLocation, type StatisticalOutlier, SyncManager, type SyncMetadata, type TaskDefinition, TaskIndependenceAnalyzer, TopologicalLinker, type TraceabilityOptions, type TraceabilityResult, type TracedFile, VERSION, type VectorSearchResult, VectorStore, askGraph, classifyNodeCategory, groupNodesByImpact, linkToCode, loadGraph, project, queryTraceability, saveGraph };
package/dist/index.d.ts CHANGED
@@ -176,6 +176,8 @@ declare class GraphStore {
176
176
  addEdge(edge: GraphEdge): void;
177
177
  batchAddEdges(edges: readonly GraphEdge[]): void;
178
178
  getEdges(query: EdgeQuery): GraphEdge[];
179
+ /** Pick the most selective index to start from. */
180
+ private selectCandidates;
179
181
  getNeighbors(nodeId: string, direction?: 'outbound' | 'inbound' | 'both'): GraphNode[];
180
182
  get nodeCount(): number;
181
183
  get edgeCount(): number;
@@ -252,6 +254,9 @@ declare class ContextQL {
252
254
 
253
255
  declare function project(nodes: readonly GraphNode[], spec: ProjectionSpec | undefined): Partial<GraphNode>[];
254
256
 
257
+ type NodeCategory = 'tests' | 'docs' | 'code' | 'other';
258
+ /** Classify a graph node into an impact category. */
259
+ declare function classifyNodeCategory(node: GraphNode): NodeCategory;
255
260
  interface ImpactGroups {
256
261
  readonly tests: readonly GraphNode[];
257
262
  readonly docs: readonly GraphNode[];
@@ -1030,6 +1035,91 @@ declare class ConflictPredictor {
1030
1035
  private generateVerdict;
1031
1036
  }
1032
1037
 
1033
- declare const VERSION = "0.2.0";
1038
+ interface ProbabilityStrategy {
1039
+ /** Compute failure propagation probability for a single edge (0..1). */
1040
+ getEdgeProbability(edge: GraphEdge, fromNode: GraphNode, toNode: GraphNode): number;
1041
+ }
1042
+ interface CascadeSimulationOptions {
1043
+ /** Minimum cumulative probability to continue traversal. Default: 0.05 */
1044
+ readonly probabilityFloor?: number;
1045
+ /** Maximum BFS depth. Default: 10 */
1046
+ readonly maxDepth?: number;
1047
+ /** Filter to specific edge types. Default: all edge types. */
1048
+ readonly edgeTypes?: readonly string[];
1049
+ /** Pluggable probability strategy. Default: CompositeProbabilityStrategy. */
1050
+ readonly strategy?: ProbabilityStrategy;
1051
+ }
1052
+ interface CascadeNode {
1053
+ readonly nodeId: string;
1054
+ readonly name: string;
1055
+ readonly path?: string;
1056
+ readonly type: string;
1057
+ readonly cumulativeProbability: number;
1058
+ readonly depth: number;
1059
+ readonly incomingEdge: string;
1060
+ readonly parentId: string;
1061
+ }
1062
+ interface CascadeLayer {
1063
+ readonly depth: number;
1064
+ readonly nodes: readonly CascadeNode[];
1065
+ readonly categoryBreakdown: {
1066
+ readonly code: number;
1067
+ readonly tests: number;
1068
+ readonly docs: number;
1069
+ readonly other: number;
1070
+ };
1071
+ }
1072
+ interface CascadeResult {
1073
+ readonly sourceNodeId: string;
1074
+ readonly sourceName: string;
1075
+ readonly layers: readonly CascadeLayer[];
1076
+ readonly flatSummary: readonly CascadeNode[];
1077
+ readonly summary: {
1078
+ readonly totalAffected: number;
1079
+ readonly maxDepthReached: number;
1080
+ readonly highRisk: number;
1081
+ readonly mediumRisk: number;
1082
+ readonly lowRisk: number;
1083
+ readonly categoryBreakdown: {
1084
+ readonly code: number;
1085
+ readonly tests: number;
1086
+ readonly docs: number;
1087
+ readonly other: number;
1088
+ };
1089
+ readonly amplificationPoints: readonly string[];
1090
+ readonly truncated: boolean;
1091
+ };
1092
+ }
1093
+
1094
+ /**
1095
+ * Default probability strategy blending three signals:
1096
+ * - 50% edge type base weight
1097
+ * - 30% normalized change frequency of target node
1098
+ * - 20% normalized coupling strength of target node
1099
+ */
1100
+ declare class CompositeProbabilityStrategy implements ProbabilityStrategy {
1101
+ private readonly changeFreqMap;
1102
+ private readonly couplingMap;
1103
+ static readonly BASE_WEIGHTS: Record<string, number>;
1104
+ private static readonly FALLBACK_WEIGHT;
1105
+ private static readonly EDGE_TYPE_BLEND;
1106
+ private static readonly CHANGE_FREQ_BLEND;
1107
+ private static readonly COUPLING_BLEND;
1108
+ constructor(changeFreqMap: Map<string, number>, couplingMap: Map<string, number>);
1109
+ getEdgeProbability(edge: GraphEdge, _fromNode: GraphNode, toNode: GraphNode): number;
1110
+ }
1111
+
1112
+ declare class CascadeSimulator {
1113
+ private readonly store;
1114
+ constructor(store: GraphStore);
1115
+ simulate(sourceNodeId: string, options?: CascadeSimulationOptions): CascadeResult;
1116
+ private seedQueue;
1117
+ private runBfs;
1118
+ private expandNode;
1119
+ private buildDefaultStrategy;
1120
+ private buildResult;
1121
+ }
1122
+
1123
+ declare const VERSION = "0.4.0";
1034
1124
 
1035
- export { type AnomalyDetectionOptions, type AnomalyReport, type ArticulationPoint, type AskGraphResult, type AssembledContext, Assembler, CIConnector, CURRENT_SCHEMA_VERSION, type ClassificationResult, CodeIngestor, type ConflictDetail, type ConflictPrediction, ConflictPredictor, type ConflictSeverity, ConfluenceConnector, type ConnectorConfig, ContextQL, type ContextQLParams, type ContextQLResult, DesignConstraintAdapter, DesignIngestor, type DesignStrictness, type DesignViolation, EDGE_TYPES, type EdgeQuery, type EdgeType, EntityExtractor, EntityResolver, FusionLayer, type FusionResult, GitIngestor, type GitRunner, GraphAnomalyAdapter, type GraphBudget, GraphComplexityAdapter, type GraphComplexityHotspot, type GraphComplexityResult, type GraphConnector, GraphConstraintAdapter, GraphCouplingAdapter, type GraphCouplingFileData, type GraphCouplingResult, type GraphCoverageReport, type GraphDeadCodeData, type GraphDependencyData, type GraphDriftData, type GraphEdge, GraphEdgeSchema, GraphEntropyAdapter, GraphFeedbackAdapter, type GraphFilterResult, type GraphHarnessCheckData, type GraphImpactData, type GraphLayerViolation, type GraphMetadata, type GraphNode, GraphNodeSchema, type GraphSnapshotSummary, GraphStore, type HttpClient, INTENTS, type ImpactGroups, type IndependenceCheckParams, type IndependenceResult, type IngestResult, type Intent, IntentClassifier, JiraConnector, KnowledgeIngestor, type LinkResult, NODE_TYPES, type NodeQuery, type NodeType, OBSERVABILITY_TYPES, type OverlapDetail, type PairResult, type ProjectionSpec, type RequirementCoverage, RequirementIngestor, type ResolvedEntity, ResponseFormatter, SlackConnector, type SourceLocation, type StatisticalOutlier, SyncManager, type SyncMetadata, type TaskDefinition, TaskIndependenceAnalyzer, TopologicalLinker, type TraceabilityOptions, type TraceabilityResult, type TracedFile, VERSION, type VectorSearchResult, VectorStore, askGraph, groupNodesByImpact, linkToCode, loadGraph, project, queryTraceability, saveGraph };
1125
+ export { type AnomalyDetectionOptions, type AnomalyReport, type ArticulationPoint, type AskGraphResult, type AssembledContext, Assembler, CIConnector, CURRENT_SCHEMA_VERSION, type CascadeLayer, type CascadeNode, type CascadeResult, type CascadeSimulationOptions, CascadeSimulator, type ClassificationResult, CodeIngestor, CompositeProbabilityStrategy, type ConflictDetail, type ConflictPrediction, ConflictPredictor, type ConflictSeverity, ConfluenceConnector, type ConnectorConfig, ContextQL, type ContextQLParams, type ContextQLResult, DesignConstraintAdapter, DesignIngestor, type DesignStrictness, type DesignViolation, EDGE_TYPES, type EdgeQuery, type EdgeType, EntityExtractor, EntityResolver, FusionLayer, type FusionResult, GitIngestor, type GitRunner, GraphAnomalyAdapter, type GraphBudget, GraphComplexityAdapter, type GraphComplexityHotspot, type GraphComplexityResult, type GraphConnector, GraphConstraintAdapter, GraphCouplingAdapter, type GraphCouplingFileData, type GraphCouplingResult, type GraphCoverageReport, type GraphDeadCodeData, type GraphDependencyData, type GraphDriftData, type GraphEdge, GraphEdgeSchema, GraphEntropyAdapter, GraphFeedbackAdapter, type GraphFilterResult, type GraphHarnessCheckData, type GraphImpactData, type GraphLayerViolation, type GraphMetadata, type GraphNode, GraphNodeSchema, type GraphSnapshotSummary, GraphStore, type HttpClient, INTENTS, type ImpactGroups, type IndependenceCheckParams, type IndependenceResult, type IngestResult, type Intent, IntentClassifier, JiraConnector, KnowledgeIngestor, type LinkResult, NODE_TYPES, type NodeCategory, type NodeQuery, type NodeType, OBSERVABILITY_TYPES, type OverlapDetail, type PairResult, type ProbabilityStrategy, type ProjectionSpec, type RequirementCoverage, RequirementIngestor, type ResolvedEntity, ResponseFormatter, SlackConnector, type SourceLocation, type StatisticalOutlier, SyncManager, type SyncMetadata, type TaskDefinition, TaskIndependenceAnalyzer, TopologicalLinker, type TraceabilityOptions, type TraceabilityResult, type TracedFile, VERSION, type VectorSearchResult, VectorStore, askGraph, classifyNodeCategory, groupNodesByImpact, linkToCode, loadGraph, project, queryTraceability, saveGraph };