Synced package doc

Sweep API

The sweep engine runs a prompt multiple times with context chaining — each iteration receives the previous iteration's summary as additional context, enabling progressive refinement.

sweepPrompt()

Main entry point for multi-iteration sweeps.

import { sweepPrompt } from "prompts-gpt";

const result = await sweepPrompt({
  promptFile: ".prompts-gpt/sweeps/security-audit.md",
  iterations: 3,
  provider: "codex",
  model: "gpt-5.5",
  cwd: process.cwd(),
  timeoutSeconds: 5400,
  maxRetries: 2,
  summaryLines: 40,
  onProgress: (event) => {
    console.log(`Iteration ${event.iteration}/${event.total}: ${event.status}`);
  },
});

console.log(result.ok);                  // boolean
console.log(result.iterationsCompleted); // number
console.log(result.totalDurationMs);     // number

SweepInput

PropertyTypeRequiredDefaultDescription
promptFilestringYesPath to sweep Markdown file
iterationsnumberYesNumber of iterations to run
providerstringYesProvider name
modelstringNoModel override
cwdstringNoprocess.cwd()Working directory
timeoutSecondsnumberNo5400Per-iteration timeout
maxRetriesnumberNo2Retries per iteration
summaryLinesnumberNo40Lines of summary to extract
artifactsDirstringNo.scripts/runsArtifacts directory
runIdstringNoautoCustom run ID
maxRunDirsnumberNo20Max artifact dirs to keep
phasestringNoPhase label for prompts
sandboxstringNoworkspace-writeCodex sandbox mode
permissionModestringNoacceptEditsClaude permission mode
backgroundbooleanNofalseCursor background mode
quietbooleanNofalseSuppress live output
silentbooleanNofalseSuppress all output
dryRunbooleanNofalsePreview only
allowDestructiveGitbooleanNofalseAllow git stash/reset
parallelnumberNoParallel iteration batches
evalSweepEvalConfigNoSelf-evaluation config
onProgressfunctionNoProgress callback

SweepResult

PropertyTypeDescription
okbooleanOverall success
iterationsSweepIterationResult[]Per-iteration results
totalDurationMsnumberTotal duration
providerstringProvider used
modelstringModel used
iterationsCompletednumberCompleted iteration count
iterationsRequestednumberRequested iterations
evalScoresSweepEvalScore[]Evaluation scores (if eval enabled)

SweepIterationResult

PropertyTypeDescription
iterationnumberIteration number (1-based)
statusSweepIterationStatus"completed", "failed", "timeout", "skipped"
exitCodenumberProcess exit code
durationMsnumberDuration in ms
summaryTextstringExtracted summary
outputFilestringRaw output log path
tokenUsageTokenUsageToken consumption
errorstringError message (if failed)
retryCountnumberNumber of retries used

Self-Evaluation

Configure self-evaluation via YAML frontmatter or the eval parameter:

const result = await sweepPrompt({
  promptFile: ".prompts-gpt/sweeps/audit.md",
  iterations: 3,
  provider: "codex",
  eval: {
    criteria: ["correctness", "completeness", "code-quality"],
    passThreshold: 0.7,
  },
});

for (const score of result.evalScores ?? []) {
  console.log(`Iteration ${score.iteration}: ${score.overallScore}`);
  for (const criterion of score.criteria) {
    console.log(`  ${criterion.name}: ${criterion.score}`);
  }
}

SweepEvalConfig

PropertyTypeDescription
criteriastring[]Scoring dimensions
passThresholdnumberPass/fail threshold (0.0–1.0)

SweepEvalScore

PropertyTypeDescription
iterationnumberIteration number
overallScorenumberWeighted average score
criteriaArray<{ name: string; score: number }>Per-criterion scores
passedbooleanWhether threshold was met

Lock Management

Sweep uses lock files to prevent concurrent execution on the same prompt:

import { acquireSweepLock, releaseSweepLock, forceReleaseSweepLock } from "prompts-gpt";

const lock = await acquireSweepLock(promptFile, cwd);
try {
  // ... sweep logic ...
} finally {
  await releaseSweepLock(lock);
}

// Force-release a stale lock
await forceReleaseSweepLock(promptFile, cwd);

Helper Functions

buildIterationPrompt()

Build a prompt with context from previous iterations:

import { buildIterationPrompt } from "prompts-gpt";

const prompt = buildIterationPrompt({
  originalPrompt: "Review security...",
  iteration: 2,
  totalIterations: 5,
  previousSummary: "Fixed 3 SQL injection issues...",
  phase: "hardening",
});

runPreFlight()

Execute pre-flight checks before a sweep:

import { runPreFlight } from "prompts-gpt";

const report = await runPreFlight({
  promptFile: ".prompts-gpt/sweeps/audit.md",
  provider: "codex",
  cwd: process.cwd(),
});

if (!report.ok) {
  console.error("Pre-flight failed:", report.errors);
}

Progress Events

sweepPrompt({
  // ...
  onProgress: (event: SweepProgressEvent) => {
    switch (event.type) {
      case "iteration-start":
        console.log(`Starting iteration ${event.iteration}`);
        break;
      case "iteration-complete":
        console.log(`Completed: ${event.status}`);
        break;
      case "sweep-complete":
        console.log(`Sweep done: ${event.iterationsCompleted} iterations`);
        break;
    }
  },
});

See Also