All files / api/src/utils templates.ts

4.54% Statements 1/22
100% Branches 0/0
0% Functions 0/1
4.54% Lines 1/22

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 271x                                                    
export function renderTemplate(
  template: string,
  variables: Record<string, unknown>,
  allowedVariables?: string[],
): string {
  // If allowedVariables is specified, only use variables that are in the allowed list
  const filteredVariables = allowedVariables
    ? Object.fromEntries(
        Object.entries(variables).filter(([key]) =>
          allowedVariables.includes(key),
        ),
      )
    : variables;
 
  let systemPrompt = template;
  // Simple Jinja-style variable replacement
  Object.entries(filteredVariables).forEach(([key, value]) => {
    const placeholder = `{{ ${key} }}`;
    systemPrompt = systemPrompt.replace(
      new RegExp(placeholder.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'),
      String(value),
    );
  });
 
  return systemPrompt;
}