Stirling-Tools/Stirling-PDF · error · Error
Automation step ${stepIndex + 1} failed: ${error}
Error message
Automation step ${stepIndex + 1} failed: ${error} What it means
Thrown from the per-step error callback passed to `executeAutomationSequence`. When any step in the automation chain fails, the executor invokes onStepError with the index and error string; this callback rethrows so the overall automation aborts and surfaces which step broke. The error string is whatever the failed step (a downstream tool operation) reported.
Source
Thrown at frontend/editor/src/core/hooks/tools/automate/useAutomateOperation.ts:43
// Execute the automation sequence and return the final results
const finalResults = await executeAutomationSequence(
params.automationConfig!,
files,
toolRegistry,
(stepIndex: number, operationName: string) => {
console.log(`Step ${stepIndex + 1} started: ${operationName}`);
params.onStepStart?.(stepIndex, operationName);
},
(stepIndex: number, resultFiles: File[]) => {
console.log(
`Step ${stepIndex + 1} completed with ${resultFiles.length} files`,
);
params.onStepComplete?.(stepIndex, resultFiles);
},
(stepIndex: number, error: string) => {
console.error(`Step ${stepIndex + 1} failed:`, error);
params.onStepError?.(stepIndex, error);
throw new Error(`Automation step ${stepIndex + 1} failed: ${error}`);
},
);
console.log(
`✅ Automation completed, returning ${finalResults.length} files`,
);
return {
files: finalResults,
consumedAllInputs: true,
};
},
[toolRegistry],
);
return useToolOperation<AutomateParameters>(
defineCustomTool({
operationType: "automate",
customProcessor,View on GitHub (pinned to 9ef20dcab8)
Solutions
- Inspect the originating step's own error (it is carried in the `${error}` fragment) and fix the root cause there.
- Make automation steps resilient: validate each step's output before passing it downstream.
- Add per-step retry with backoff for transient (network/5xx) errors so a single flaky step does not abort the whole run.
- Log the full AutomationStep + params at onStepError for debugging which configuration is at fault.
Example fix
// before
(stepIndex: number, error: string) => {
console.error(`Step ${stepIndex + 1} failed:`, error);
params.onStepError?.(stepIndex, error);
throw new Error(`Automation step ${stepIndex + 1} failed: ${error}`);
},
// after — keep cause and step identity for richer debugging
(stepIndex: number, error: string) => {
console.error(`Step ${stepIndex + 1} failed:`, error);
params.onStepError?.(stepIndex, error);
throw new Error(`Automation step ${stepIndex + 1} failed: ${error}`, { cause: error });
}, Defensive patterns
Strategy: try-catch
Validate before calling
// Validate each step's config + output compatibility before running the chain
for (const step of params.automationConfig.steps) {
if (!toolRegistry[step.operation]) {
// surface 'step N references unknown operation' before running
}
} Try / catch
try {
await runAutomation();
} catch (e) {
const m = e instanceof Error && e.message.match(/Automation step (\d+) failed: (.+)/);
if (m) {
const [, step, reason] = m;
toast.error(`Step ${step} failed: ${reason}`);
} else throw e;
} Prevention
- Validate each step references a registered operation before execution.
- Add per-step retry/backoff for transient errors so one flaky step does not abort the run.
- Log the full AutomationStep params at onStepError to identify the misconfigured step.
When it happens
Trigger: A downstream tool in the chain threw (e.g. convert got 'Unsupported conversion format', compress hit a network error, split returned no files); a step received a file format it cannot handle; a step's API call failed (5xx / timeout); a step produced zero output files and the executor treats that as failure.
Common situations: Multi-step automations where an earlier step's output is incompatible with a later step; backend intermittently failing one endpoint in the chain; a step referencing a tool not present in the registry.
Related errors
- No automation configuration provided
- Invalid folder scanning config: expected JSON object
- Invalid folder scanning config: missing 'pipeline' array
- Invalid folder scanning config: pipeline[${index}] is not an
- Invalid folder scanning config: pipeline[${index}].operation
AI-assisted analysis of Stirling-Tools/Stirling-PDF@9ef20dcab8 (2026-08-13).
Data as JSON: /api/errors/097636c438921724.
Report an issue: GitHub.