import { createLogger } from '../utils/logger';
import { getContext, updateContext } from '../utils/contextStore';
import { getLlmClient } from '../llm/llmRouter';
import { productManagerPrompt, jsonRepairPrompt } from '../utils/promptTemplates';

const logger = createLogger('productManager');

export const runProductManager = async () => {
  logger.start();
  const context = getContext();
  const { featurePrompt } = context;

  const llmClient = getLlmClient();
  const prompt = productManagerPrompt.replace('{{featurePrompt}}', featurePrompt);

  let response = await llmClient.generate(prompt);
  let spec;

  try {
    spec = JSON.parse(response);
  } catch (error) {
    logger.error('Invalid JSON response from LLM. Attempting to repair...');
    const repairPrompt = jsonRepairPrompt.replace('{{invalidJson}}', response);
    response = await llmClient.generate(repairPrompt);
    try {
      spec = JSON.parse(response);
    } catch (error) {
      logger.error('Failed to repair JSON response. Skipping spec generation.');
      return;
    }
  }

  updateContext({ spec });
  logger.stop();
  logger.success('Generated product spec.');
  return spec;
};
