From bed74f9d33594ef11486cc609220a218c5882b95 Mon Sep 17 00:00:00 2001 From: Michael Freno Date: Mon, 3 Aug 2026 20:18:54 -0400 Subject: [PATCH] Make /ralpi-reset select the loop to reset like resume --- index.ts | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/index.ts b/index.ts index 5b42b3d..6e543e7 100644 --- a/index.ts +++ b/index.ts @@ -201,13 +201,14 @@ async function selectLoopOptions( /** * When multiple PRD loops have progress, prompt the user to select which one - * to resume. Returns the selected PRD key and sourcePath. + * to act on. Returns the selected PRD key and sourcePath. * If only one PRD exists, returns it without prompting. * Returns null if no PRDs exist. */ -async function selectPRDToResume( +async function selectPRD( ctx: ExtensionContext, found: NonNullable>, + prompt: string, ): Promise<{ prdKey: string; sourcePath: string } | null> { const prds = listPRDsSorted(found.state); if (prds.length === 0) return null; @@ -230,10 +231,7 @@ async function selectPRDToResume( return `${relPath} — ${completed}/${total} done${failed ? `, ${failed} failed` : ""} · ${updated}`; }); - const selected = await ctx.ui.select( - "Multiple loops found. Which to resume?", - options, - ); + const selected = await ctx.ui.select(prompt, options); if (!selected) return null; const idx = options.indexOf(selected); @@ -1231,7 +1229,11 @@ async function handleResume( // When no specific task file is given, let the user select which loop // to resume from multiple PRDs (sorted by most recent first). - const selected = await selectPRDToResume(ctx, found); + const selected = await selectPRD( + ctx, + found, + "Multiple loops found. Which to resume?", + ); if (!selected) { ctx.ui.notify("Resume cancelled.", "info"); return; @@ -1301,11 +1303,23 @@ async function handleReset( return; } const projectDir = path.dirname(path.dirname(found.path)); - // Use the most recently updated PRD (first in sorted order) - const prds = listPRDsSorted(found.state); - const sourcePath = - prds.length > 0 ? prds[0].prd.sourcePath : found.state.sourcePath; - const progress = new ProgressTracker(projectDir, sourcePath); + + // Multiple loops may have progress — let the user select which one to + // reset (sorted by most recent first), same as resume. + const selected = await selectPRD( + ctx, + found, + "Multiple loops found. Which to reset?", + ); + if (!selected) { + ctx.ui.notify("Reset cancelled.", "info"); + return; + } + const progress = new ProgressTracker( + projectDir, + selected.sourcePath, + selected.prdKey, + ); progress.reset(); }