import {
  loadPrompt,
  generatePrompt,
  loadPromptFromTemplate,
} from "../loader.js";

export interface ProcessThoughtPromptParams {
  thought: string;
  thoughtNumber: number;
  totalThoughts: number;
  nextThoughtNeeded: boolean;
  stage: string;
  tags: string[];
  axioms_used: string[];
  assumptions_challenged: string[];
}

export function getProcessThoughtPrompt(
  param: ProcessThoughtPromptParams
): string {
  let nextThoughtNeeded = "";
  if (param.nextThoughtNeeded) {
    nextThoughtNeeded = loadPromptFromTemplate("processThought/moreThought.md");
  } else {
    nextThoughtNeeded = loadPromptFromTemplate(
      "processThought/completedThought.md"
    );
  }

  const indexTemplate = loadPromptFromTemplate("processThought/index.md");

  const prompt = generatePrompt(indexTemplate, {
    thought: param.thought,
    thoughtNumber: param.thoughtNumber,
    totalThoughts: param.totalThoughts,
    stage: param.stage,
    tags: param.tags.join(", ") || "no tags",
    axioms_used: param.axioms_used.join(", ") || "no axioms used",
    assumptions_challenged:
      param.assumptions_challenged.join(", ") || "no assumptions challenged",
    nextThoughtNeeded,
  });

  return loadPrompt(prompt, "PROCESS_THOUGHT");
}
