// 工具箱生成留痕的两个纯格式化助手（AI 对话记录用）：
// - fieldSummary：把作者填写的输入字段拼成人读摘要（author 气泡 content；长文进 content 不进 meta）。
// - renderPreviewText：把结构化预览渲染成人读文本（ai 气泡 content；不把原始产物塞进 meta）。
// 确定性纯函数，无 IO；供 GeneratorRunner 结束后 append 一批往复。

import type { ToolInputFieldView } from "@/lib/api/types";
import type { FieldValues, PreviewModel } from "./toolbox";

// 输入字段 → 「label：value」摘要，跳过空值，多字段用 · 连接。
export function fieldSummary(
  fields: readonly ToolInputFieldView[],
  values: FieldValues,
): string {
  return fields
    .map((f) => ({ label: f.label, value: (values[f.name] ?? "").trim() }))
    .filter((entry) => entry.value.length > 0)
    .map((entry) => `${entry.label}：${entry.value}`)
    .join(" · ");
}

// 预览模型 → 人读文本：每项 = heading + 「label：value」次要字段 + 正文段，项间空行分隔。
export function renderPreviewText(preview: PreviewModel): string {
  return preview.items
    .map((item) => {
      const lines: string[] = [];
      if (item.heading) lines.push(item.heading);
      for (const f of item.fields) lines.push(`${f.label}：${f.value}`);
      if (item.body) lines.push(item.body);
      return lines.join("\n");
    })
    .filter((block) => block.length > 0)
    .join("\n\n");
}
