Synced package doc
Docs/prompts-gpt Package/Orchestration API

Orchestration API

The orchestration module provides four multi-agent execution patterns: auto planning, parallel racing, sequential pipeline, and eval scoring.

orchestrateAuto()

Describe a goal and let the system plan, execute, and evaluate a full pipeline automatically.

import { orchestrateAuto } from "prompts-gpt";

const result = await orchestrateAuto({
  goal: "Add user authentication with JWT tokens, write tests, and update docs",
  maxSteps: 5,
  qualityGate: 80,
  cwd: process.cwd(),
  onProgress: (event) => {
    if (event.type === "auto_plan") {
      console.log("Generated plan:", event.steps.map(s => s.name).join(" → "));
    }
  },
});

console.log(`Goal: ${result.goal}`);
console.log(`Steps: ${result.generatedSteps.length}`);
if (result.evaluation) {
  console.log(`Score: ${result.evaluation.score}/100`);
}

OrchestrateAutoInput

PropertyTypeRequiredDescription
goal`string \AutoModeGoal`YesWhat to accomplish
agentstringNoProvider for planning and execution
modelstringNoModel override
maxStepsnumberNoMax pipeline steps (default: 5)
qualityGatenumberNoMinimum score (default: 70)
interactivebooleanNoConfirm plan before executing
cwdstringNoWorking directory
onProgressfunctionNoProgress callback

OrchestrateAutoResult

PropertyTypeDescription
mode"auto"Execution mode
goalstringThe goal that was executed
generatedStepsArraySteps that were generated and executed
pipelineResult`PipelineResult \null`Pipeline execution result
evaluation`EvalScore \null`Quality evaluation
totalDurationMsnumberTotal duration

orchestrateParallel()

Race the same prompt across multiple providers simultaneously.

import { orchestrateParallel } from "prompts-gpt";

const result = await orchestrateParallel({
  promptFile: ".prompts-gpt/refactor.md",
  providers: ["codex", "claude", "cursor"],
  model: "auto",
  cwd: process.cwd(),
  timeoutSeconds: 600,
  onProgress: (event) => {
    console.log(`${event.provider}: ${event.status}`);
  },
});

for (const [provider, run] of Object.entries(result.results)) {
  console.log(`${provider}: ${run.ok ? "OK" : "FAILED"} (${run.durationMs}ms)`);
}

OrchestrateParallelInput

PropertyTypeRequiredDescription
promptFilestringYesPrompt file path
providersstring[]YesProvider names to race
modelstringNoModel override (per-provider)
cwdstringNoWorking directory
timeoutSecondsnumberNoTimeout per provider
onProgressfunctionNoProgress callback

OrchestrateParallelResult

PropertyTypeDescription
mode"parallel"Execution mode
resultsRecord<string, RunPromptResult>Per-provider results
winnerstringFastest successful provider
totalDurationMsnumberWall-clock time

orchestratePipeline()

Chain multiple providers sequentially — output from each step feeds into the next.

import { orchestratePipeline } from "prompts-gpt";

const result = await orchestratePipeline({
  steps: [
    {
      name: "research",
      promptFile: ".prompts-gpt/orchestrations/pipeline-steps/research.md",
      agent: "claude",
      model: "claude-sonnet-4-20250514",
    },
    {
      name: "implement",
      promptFile: ".prompts-gpt/orchestrations/pipeline-steps/implement.md",
      agent: "codex",
      model: "gpt-5.5",
    },
    {
      name: "review",
      promptFile: ".prompts-gpt/orchestrations/pipeline-steps/review.md",
      agent: "cursor",
    },
  ],
  cwd: process.cwd(),
});

for (const step of result.steps) {
  console.log(`${step.name}: ${step.result.ok ? "OK" : "FAILED"}`);
}

OrchestratePipelineInput

PropertyTypeRequiredDescription
stepsOrchestratePipelineStep[]YesPipeline steps
defaultsOrchestratePipelineDefaultsNoDefault values
cwdstringNoWorking directory
onProgressfunctionNoProgress callback

OrchestratePipelineStep

PropertyTypeRequiredDescription
namestringYesStep name
promptFilestringYesPrompt file path
agentstringNoProvider override
modelstringNoModel override
timeoutSecondsnumberNoStep timeout

OrchestratePipelineResult

PropertyTypeDescription
mode"pipeline"Execution mode
stepsArray<{ name: string; result: RunPromptResult }>Step results
totalDurationMsnumberTotal duration

orchestrateEval()

Execute a prompt and automatically evaluate/score the output.

import { orchestrateEval } from "prompts-gpt";

const result = await orchestrateEval({
  promptFile: ".prompts-gpt/code-review.md",
  provider: "codex",
  model: "gpt-5.5",
  criteria: [
    { name: "correctness", weight: 0.4 },
    { name: "completeness", weight: 0.3 },
    { name: "code-quality", weight: 0.3 },
  ],
  evaluatorProvider: "claude",
  cwd: process.cwd(),
});

console.log(`Overall score: ${result.overallScore}`);
for (const score of result.scores) {
  console.log(`  ${score.name}: ${score.score}/1.0`);
}

OrchestrateEvalInput

PropertyTypeRequiredDescription
promptFilestringYesPrompt file path
providerstringYesExecution provider
modelstringNoModel override
criteriaScoringCriterion[]YesEvaluation criteria
evaluatorProviderstringNoSeparate provider for eval
cwdstringNoWorking directory

ScoringCriterion

PropertyTypeDescription
namestringCriterion name
weightnumberRelative weight (0.0–1.0)

OrchestrateEvalResult

PropertyTypeDescription
mode"eval"Execution mode
runResultRunPromptResultExecution result
scoresEvalScore[]Per-criterion scores
overallScorenumberWeighted average
totalDurationMsnumberTotal duration

Helper Functions

buildEvalPrompt()

Build a prompt for evaluating agent output:

import { buildEvalPrompt } from "prompts-gpt";

const evalPrompt = buildEvalPrompt({
  originalPrompt: "Review security...",
  agentOutput: "Fixed 3 issues...",
  criteria: ["correctness", "completeness"],
});

parseEvalResponse()

Parse evaluation scores from agent output:

import { parseEvalResponse } from "prompts-gpt";

const scores = parseEvalResponse(evalOutput);

scoreIterationOutput()

Score a single iteration's output:

import { scoreIterationOutput } from "prompts-gpt";

const score = await scoreIterationOutput({
  prompt: "Original prompt...",
  output: "Agent output...",
  criteria: ["correctness"],
  provider: "claude",
});

See Also