35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
|
|
import type { ConvoyClassification } from "../convoy-lifecycle/schemas";
|
||
|
|
|
||
|
|
export type CompletionSummaryInput = {
|
||
|
|
slug: string;
|
||
|
|
classification: ConvoyClassification;
|
||
|
|
successMetric: string;
|
||
|
|
briefs: Array<{ title: string; status: string | null }>;
|
||
|
|
modelAlias?: string | null;
|
||
|
|
harnessAlias?: string | null;
|
||
|
|
prUrl?: string | null;
|
||
|
|
};
|
||
|
|
|
||
|
|
export function generateCompletionSummary(input: CompletionSummaryInput): string {
|
||
|
|
const briefCount = input.briefs.length;
|
||
|
|
const briefTitles =
|
||
|
|
briefCount === 0
|
||
|
|
? "No briefs"
|
||
|
|
: input.briefs.map((b) => `${b.title} (${b.status ?? "—"})`).join(", ");
|
||
|
|
|
||
|
|
const modelLine = input.modelAlias ? `Model: ${input.modelAlias}` : "Model: n/a";
|
||
|
|
const harnessLine = input.harnessAlias ? `Harness: ${input.harnessAlias}` : "Harness: n/a";
|
||
|
|
const prLine = input.prUrl ? `PR: ${input.prUrl}` : "PR: n/a";
|
||
|
|
|
||
|
|
const lines: string[] = [
|
||
|
|
"## Summary",
|
||
|
|
`Convoy ${input.slug} ${input.classification} — ${input.successMetric}`,
|
||
|
|
`Briefs: ${briefCount} — ${briefTitles}`,
|
||
|
|
modelLine,
|
||
|
|
harnessLine,
|
||
|
|
prLine,
|
||
|
|
];
|
||
|
|
|
||
|
|
return lines.join("\n");
|
||
|
|
}
|