diff --git a/src/resources/extensions/sf/auto-prompts.ts b/src/resources/extensions/sf/auto-prompts.ts index a8cb933a6..0aad714ac 100644 --- a/src/resources/extensions/sf/auto-prompts.ts +++ b/src/resources/extensions/sf/auto-prompts.ts @@ -7,6 +7,7 @@ */ import { loadFile, parseContinue, parseSummary, loadActiveOverrides, formatOverridesSection, parseTaskPlanFile } from "./files.js"; +import { getActiveMemoriesRanked, formatMemoriesForPrompt } from "./memory-store.js"; import type { Override, UatType } from "./files.js"; import { hasVerdict, getUatType } from "./verdict-parser.js"; import { loadPrompt, inlineTemplate } from "./prompt-loader.js"; @@ -1872,7 +1873,18 @@ export async function buildExecuteTaskPrompt( { pending: new Set(etPending.map((g) => g.gate_id)), allowOmit: true }, ); + const memoriesSection = (() => { + try { + const memories = getActiveMemoriesRanked(10); + if (memories.length === 0) return "## Project Memories\n(none yet)"; + return `## Project Memories\n${formatMemoriesForPrompt(memories)}`; + } catch { + return "## Project Memories\n(unavailable)"; + } + })(); + return loadPrompt("execute-task", { + memoriesSection, overridesSection, runtimeContext, phaseAnchorSection, diff --git a/src/resources/extensions/sf/tests/plan-slice-prompt.test.ts b/src/resources/extensions/sf/tests/plan-slice-prompt.test.ts index 0c8ff5684..abec86f91 100644 --- a/src/resources/extensions/sf/tests/plan-slice-prompt.test.ts +++ b/src/resources/extensions/sf/tests/plan-slice-prompt.test.ts @@ -111,6 +111,10 @@ test("skillActivation default leaves no unresolved placeholder", () => { inlinedTemplates: "Template", verificationBudget: "~10K chars", overridesSection: "", + memoriesSection: "## Project Memories\n(none yet)", + runtimeContext: "", + phaseAnchorSection: "", + gatesToClose: "", }); assert.ok(!result.includes("{{skillActivation}}")); @@ -136,6 +140,10 @@ test("custom skillActivation is substituted into execute-task", () => { inlinedTemplates: "Template", verificationBudget: "~10K chars", overridesSection: "", + memoriesSection: "## Project Memories\n(none yet)", + runtimeContext: "", + phaseAnchorSection: "", + gatesToClose: "", skillActivation: "Load React and accessibility skills first.", });