UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

49 lines (48 loc) 1.64 kB
/** * Panorama summarization helper for internal agent responses. * * Extracted from bootstrap-internal.ts. * Note: MissionBriefingBuilder has its own typed version for the MissionBriefing interface. * * @module bootstrap/shared/panorama-utils */ /** * Summarize PanoramaResult into a compact internal-agent-friendly shape. * * Returns the top layers, coupling hotspots, cyclic dependencies, and knowledge gaps. */ export function summarizePanorama(panoramaResult) { if (!panoramaResult || typeof panoramaResult !== 'object') { return null; } const pr = panoramaResult; const moduleMap = pr.modules; const layers = pr.layers; const gaps = pr.gaps ?? []; const cycles = pr.cycles ?? []; // Coupling hotspots: fanIn >= 10 or fanOut >= 10 const couplingHotspots = []; if (moduleMap) { const entries = moduleMap instanceof Map ? [...moduleMap.values()] : Object.values(moduleMap); for (const mod of entries) { if ((mod.fanIn || 0) >= 10 || (mod.fanOut || 0) >= 10) { couplingHotspots.push({ name: mod.name || '', fanIn: mod.fanIn || 0, fanOut: mod.fanOut || 0, }); } } } return { layers: layers?.levels?.slice(0, 10) ?? [], couplingHotspots: couplingHotspots.slice(0, 10), cyclicDependencies: cycles.slice(0, 10).map((c) => c.modules), knowledgeGaps: gaps.slice(0, 20).map((g) => ({ module: g.module, suggestedFocus: g.suggestedFocus, })), }; }