Steer (inbound)
Send a message to a running or idle session; it wakes and continues with its prior context. Minimal form is just text:idempotency_key so retries (flaky network, double-click) are de-duplicated — applied at most once per session, so the same key is safe to reuse across different sessions.
The envelope
Every inbound and outbound message normalizes to this shape. The core fields are fixed; anything source-specific lives underraw, which the platform never interprets.
id— the idempotency key, deduped per session (not global).actor— who sent it (human|agent|system), namespaced.conversation— an opaque reply/routing anchor.text— the content the agent reads (or that you receive).refs— structured context the agent shouldn’t have to infer from prose. Blessed keys:repo,branch,commit,ref,issue,pr(plus your own). Pass them on the initialinputso a coding agent knows its target.raw— untouched original payload; optional, never read by the core.
body is this envelope) — see Webhooks.
Inbound channels (Slack, GitHub, Jira, email) are coming soon — they map onto this same envelope; today you steer in via the API.