import { DiagramType } from './detect'; /** Node collection that may carry `sources` evidence, per diagram type. */ export const EVIDENCE_COLLECTIONS: Record = { architecture: 'components', workflow: 'nodes', sequence: 'participants', dataflow: 'nodes', lifecycle: 'states', }; export function hasSourceEvidence(type: DiagramType, diagram: Record): boolean { const meta = diagram.meta as Record | undefined; if (meta && meta.repository) return true; const nodes = diagram[EVIDENCE_COLLECTIONS[type]]; return Array.isArray(nodes) && nodes.some((node) => Array.isArray(node?.sources) && node.sources.length > 0); } /** Returns a copy of the diagram with repository evidence removed. */ export function stripSourceEvidence(type: DiagramType, diagram: Record): Record { const copy = structuredClone(diagram); const meta = copy.meta as Record | undefined; if (meta) delete meta.repository; const nodes = copy[EVIDENCE_COLLECTIONS[type]]; if (Array.isArray(nodes)) { for (const node of nodes) { if (node && typeof node === 'object') delete node.sources; } } return copy; }