Documentation Index
Fetch the complete documentation index at: https://smithers.sh/llms.txt
Use this file to discover all available pages before exploring further.
import { Signal } from "smithers-orchestrator";
type SignalProps = {
id: string; // signal name and node id
schema: z.ZodObject; // typed payload + output target
correlationId?: string;
timeoutMs?: number;
onTimeout?: "fail" | "skip" | "continue"; // default "fail"
async?: boolean;
skipIf?: boolean;
dependsOn?: string[];
needs?: Record<string, string>;
label?: string;
meta?: Record<string, unknown>;
children?: (data) => ReactNode; // mounts only after payload arrives
};
import { Signal, Task, Workflow, createSmithers } from "smithers-orchestrator";
import { z } from "zod";
const { smithers, outputs } = createSmithers({
feedback: z.object({ rating: z.number(), comment: z.string() }),
summary: z.object({ upper: z.string() }),
});
export default smithers(() => (
<Workflow name="signal-demo">
<Signal id="user-feedback" schema={outputs.feedback} async>
{(feedback) => (
<Task id="summarize" output={outputs.summary}>
{{ upper: feedback.comment.toUpperCase() }}
</Task>
)}
</Signal>
</Workflow>
));
Notes
- Renders
<WaitForEvent event={id} output={schema}> internally.
- Async waits show in
smithers_external_wait_async_pending{kind="event"}.