1export function proposedPlanTitle(planMarkdown: string): string | null {
2 const heading = planMarkdown.match(/^\s{0,3}#{1,6}\s+(.+)$/m)?.[1]?.trim();
3 return heading && heading.length > 0 ? heading : null;
4}
5
6export function stripDisplayedPlanMarkdown(planMarkdown: string): string {
7 const lines = planMarkdown.trimEnd().split(/\r?\n/);
8 const sourceLines = lines[0] && /^\s{0,3}#{1,6}\s+/.test(lines[0]) ? lines.slice(1) : [...lines];
9 while (sourceLines[0]?.trim().length === 0) {
10 sourceLines.shift();
11 }
12 const firstHeadingMatch = sourceLines[0]?.match(/^\s{0,3}#{1,6}\s+(.+)$/);
13 if (firstHeadingMatch?.[1]?.trim().toLowerCase() === "summary") {
14 sourceLines.shift();
15 while (sourceLines[0]?.trim().length === 0) {
16 sourceLines.shift();
17 }
18 }
19 return sourceLines.join("\n");
20}