import type { NodeLabel } from './graph/types.js'; export type FeatureClusterKind = 'feature' | 'page' | 'domain' | 'service' | 'api' | 'tooling' | 'data' | 'docs' | 'test' | 'infrastructure'; export interface FeatureClusterSignal { kind: 'path' | 'symbol' | 'route' | 'tool' | 'process' | 'community' | 'test' | 'docs' | 'package' | 'contract'; value: string; weight: number; } export type ClusterSignal = FeatureClusterSignal; export interface CrossRepoClusterLink { sourceRepo: string; sourceService?: string; sourceClusterId: string; sourceClusterName?: string; targetRepo: string; targetService?: string; targetClusterId?: string; targetClusterName?: string; contractName?: string; relationship: 'provider' | 'consumer' | 'shared-contract' | 'depends-on'; confidence: number; evidence: string[]; } export interface FeatureCluster { id: string; name: string; slug: string; featureKind: FeatureClusterKind; summary: string; description: string; repo?: string; service?: string; signals: string[]; memberCount: number; entryPointIds: string[]; routes: string[]; tools: string[]; testCoverageHints: string[]; lastIndexedCommit?: string; confidence: number; source: 'heuristic' | 'manual' | 'imported'; crossRepoLinks?: CrossRepoClusterLink[]; } export interface FeatureClusterMember { nodeId?: string; id?: string; clusterId?: string; name?: string; label?: NodeLabel; type?: NodeLabel; filePath?: string; startLine?: number; endLine?: number; role?: 'entrypoint' | 'definition' | 'implementation' | 'supporting'; confidence: number; signals: string[]; } export interface FeatureClusterDependency { sourceClusterId: string; targetClusterId: string; edgeCount: number; relationshipTypes: string[]; confidence: number; } export interface FeatureClusterReference { id: string; name: string; slug?: string; featureKind?: FeatureClusterKind | string; confidence?: number; reason?: string; } export interface FeatureContextPack { cluster: FeatureCluster; members: FeatureClusterMember[]; dependencies: { incoming: FeatureClusterReference[]; outgoing: FeatureClusterReference[]; }; dependencyEdges?: FeatureClusterDependency[]; entryPoints?: FeatureClusterMember[]; routes?: FeatureClusterMember[]; tools?: FeatureClusterMember[]; processes?: Array<{ id: string; label: string; processType?: string; stepCount?: number; }>; tests?: FeatureClusterMember[]; docs?: FeatureClusterMember[]; crossRepoLinks?: CrossRepoClusterLink[]; safeEditSurface?: { files: string[]; symbols: string[]; warnings: string[]; }; } export type ClusterContextPack = FeatureContextPack; //# sourceMappingURL=feature-clusters.d.ts.map