Documentation Index
Fetch the complete documentation index at: https://smithers.sh/llms.txt
Use this file to discover all available pages before exploring further.
// Props
import { ClassifyAndRoute } from "smithers-orchestrator";
type CategoryConfig = {
agent: AgentLike;
output?: OutputTarget;
prompt?: (item: unknown) => string;
};
type ClassifyAndRouteProps = {
id?: string; // default: "classify-and-route"
items: unknown | unknown[];
categories: Record<string, AgentLike | CategoryConfig>;
classifierAgent: AgentLike;
classifierOutput: OutputTarget;
routeOutput: OutputTarget;
classificationResult?: { classifications: Array<{ category: string; itemId?: string }> } | null;
maxConcurrency?: number; // default: Infinity
skipIf?: boolean;
children?: ReactNode; // custom classifier prompt
};
const classification = ctx.outputMaybe(outputs.classification, {
nodeId: "classify-and-route-classify",
});
<Workflow name="support-router">
<ClassifyAndRoute
items={ctx.input.tickets}
categories={{ billing: billingAgent, support: supportAgent, sales: salesAgent }}
classifierAgent={classifierAgent}
classifierOutput={outputs.classification}
routeOutput={outputs.handled}
classificationResult={classification}
/>
</Workflow>;
Notes
- Two-phase: first render classifies; pass the result back via
classificationResult to mount route handlers.
- Each entry’s
category must match a key in categories; unknown categories are silently skipped.
- Route tasks default to
continueOnFail.