import { fileURLToPath as __fileURLToPath } from 'url';
import { dirname as __pathDirname } from 'path';
const __filename = __fileURLToPath(import.meta.url);
const __dirname = __pathDirname(__filename);
function buildSweepPrompt(input) {
  const parts = [];
  if (input.contextFiles) {
    for (const [path, content] of Object.entries(input.contextFiles)) {
      parts.push(`<|file_sep|>${path}`);
      parts.push(content);
    }
  }
  const diffSection = buildDiffSection(input.recentDiffs);
  if (diffSection) {
    parts.push(diffSection);
  }
  parts.push(`<|file_sep|>original/${input.filePath}`);
  parts.push(input.originalContent || input.currentContent);
  parts.push(`<|file_sep|>current/${input.filePath}`);
  parts.push(input.currentContent);
  parts.push(`<|file_sep|>updated/${input.filePath}`);
  return parts.join("\n");
}
function buildDiffSection(diffs) {
  if (!diffs || diffs.length === 0) {
    return "";
  }
  const parts = [];
  for (const diff of diffs) {
    if (!diff.original && !diff.updated) {
      continue;
    }
    parts.push(`<|file_sep|>${diff.file_path}.diff`);
    parts.push("original:");
    parts.push(diff.original || "");
    parts.push("updated:");
    parts.push(diff.updated || "");
  }
  return parts.join("\n");
}
function trimContentAroundCursor(lines, cursorLine, cursorCol, maxTokens) {
  const totalChars = lines.join("\n").length;
  const estimatedTokens = Math.ceil(totalChars / 4);
  if (estimatedTokens <= maxTokens) {
    return { lines, offset: 0, didTrim: false };
  }
  const targetChars = maxTokens * 4;
  const avgLineLength = totalChars / lines.length;
  const windowSize = Math.floor(targetChars / avgLineLength);
  const halfWindow = Math.floor(windowSize / 2);
  let start = Math.max(0, cursorLine - halfWindow);
  let end = Math.min(lines.length, start + windowSize);
  if (end === lines.length) {
    start = Math.max(0, end - windowSize);
  }
  return {
    lines: lines.slice(start, end),
    offset: start,
    didTrim: true
  };
}
function parseCompletion(completionText, originalLines, windowStart, windowEnd) {
  let text = completionText.replace(/<\|file_sep\|>$/, "").replace(/<\/s>$/, "").trimEnd();
  if (!text || text.trim().length === 0) {
    return null;
  }
  const newLines = text.split("\n");
  const oldLines = originalLines.slice(windowStart, windowEnd);
  const oldText = oldLines.join("\n").trimEnd();
  if (text === oldText) {
    return null;
  }
  return {
    lines: newLines,
    startLine: windowStart + 1,
    // Convert to 1-indexed
    endLine: windowEnd
  };
}
export {
  buildSweepPrompt,
  parseCompletion,
  trimContentAroundCursor
};
//# sourceMappingURL=prompt-builder.js.map
