Notes
- Push-based; for poll-based checks use
<Task>with a compute function. - External integration webhooks (the
@smithers-orchestrator/integrationspackage) deliver these events. A source signalsintegration:<service>:<event>(for exampleintegration:github:pull_request) with acorrelationIdthat isowner/repo#number,owner/repo, ornulldepending on the payload, so setsignalNameandcorrelationIdto match. - With
async, dependents viadependsOn/needsstill block until payload arrives. - Async waits are tracked by the
smithers_external_wait_async_pending{kind="event"}gauge while pending (it rises on start, falls on completion). - A run suspended on
<WaitForEvent>(statuswaiting-event) does not resume itself when the event is delivered out of process. A controller should deliver it with GatewaysubmitSignal, then callresumeRun. For ad-hoc CLI operation, deliver the event and resume withbunx smithers-orchestrator up workflow.tsx --run-id RUN_ID --resume truefrom the workspace root. Never locate or select the backing store yourself; discover the verified workspace Gateway withsmithers gateway status --format json. See the keeper-loop pattern in the CLI overview.