mirror of
https://github.com/abhigyanpatwari/GitNexus.git
synced 2026-10-30 06:42:43 +00:00
86 lines
2.5 KiB
TypeScript
86 lines
2.5 KiB
TypeScript
import { t } from './i18n/index.js';
|
|
|
|
type DetectChangesSummary = {
|
|
changed_files?: number;
|
|
changed_count?: number;
|
|
affected_count?: number;
|
|
risk_level?: string;
|
|
};
|
|
|
|
type ChangedSymbol = {
|
|
type?: string;
|
|
name?: string;
|
|
filePath?: string;
|
|
};
|
|
|
|
type ChangedStep = {
|
|
symbol?: string;
|
|
};
|
|
|
|
type AffectedProcess = {
|
|
name?: string;
|
|
step_count?: number;
|
|
changed_steps?: ChangedStep[];
|
|
};
|
|
|
|
type DetectChangesResult = {
|
|
error?: unknown;
|
|
summary?: DetectChangesSummary;
|
|
changed_symbols?: ChangedSymbol[];
|
|
affected_processes?: AffectedProcess[];
|
|
};
|
|
|
|
export function formatDetectChangesResult(result: unknown): string {
|
|
const payload = (result ?? {}) as DetectChangesResult;
|
|
if (payload.error) return t('common.error', { message: String(payload.error) });
|
|
|
|
const summary = payload.summary ?? {};
|
|
if ((summary.changed_count ?? 0) === 0) {
|
|
return t('tool.detectChanges.noChanges');
|
|
}
|
|
|
|
const lines: string[] = [];
|
|
lines.push(
|
|
t('tool.detectChanges.changesSummary', {
|
|
files: summary.changed_files ?? 0,
|
|
symbols: summary.changed_count ?? 0,
|
|
}),
|
|
);
|
|
lines.push(t('tool.detectChanges.affectedProcesses', { count: summary.affected_count ?? 0 }));
|
|
lines.push(
|
|
t('tool.detectChanges.riskLevel', {
|
|
risk: summary.risk_level || t('tool.detectChanges.unknownRisk'),
|
|
}),
|
|
);
|
|
lines.push('');
|
|
|
|
const changed = Array.isArray(payload.changed_symbols) ? payload.changed_symbols : [];
|
|
if (changed.length > 0) {
|
|
lines.push(t('tool.detectChanges.changedSymbols'));
|
|
for (const symbol of changed.slice(0, 15)) {
|
|
lines.push(` ${symbol.type ?? 'Symbol'} ${symbol.name ?? '?'} → ${symbol.filePath ?? '?'}`);
|
|
}
|
|
if (changed.length > 15) {
|
|
lines.push(t('tool.detectChanges.overflowMore', { count: changed.length - 15 }));
|
|
}
|
|
lines.push('');
|
|
}
|
|
|
|
const affected = Array.isArray(payload.affected_processes) ? payload.affected_processes : [];
|
|
if (affected.length > 0) {
|
|
lines.push(t('tool.detectChanges.affectedExecutionFlows'));
|
|
for (const processInfo of affected.slice(0, 10)) {
|
|
const changedSteps = Array.isArray(processInfo.changed_steps)
|
|
? processInfo.changed_steps
|
|
: [];
|
|
const steps = changedSteps.map((step) => step.symbol ?? '?').join(', ');
|
|
lines.push(
|
|
` • ${processInfo.name ?? '?'} (${t('tool.detectChanges.steps', {
|
|
count: processInfo.step_count ?? 0,
|
|
})}) — ${t('tool.detectChanges.changedSteps', { steps })}`,
|
|
);
|
|
}
|
|
}
|
|
|
|
return lines.join('\n').trim();
|
|
}
|