pub struct CodingStartIn {
pub after: Option<String>,
pub agent_ref: Option<String>,
pub base: Option<String>,
pub desktop: Option<bool>,
pub project: Option<String>,
pub prompt: Option<String>,
pub reply_channel: Option<String>,
pub reply_thread: Option<String>,
pub repo: Option<String>,
pub target_id: Option<String>,
pub timeout_seconds: Option<i32>,
pub tool: Option<String>,
}Fields§
§after: Option<String>After names a previous run’s session, and starts this one from where that one stopped instead of from the repository’s default. It is how a follow-up instruction — "now add tests for it" — builds on work already done rather than beginning again on a fresh clone. It sets the base and nothing else, so this run still writes its OWN branch. One run, one branch: a run that wrote back onto an earlier run’s branch would break the rule the forge’s ref policy is built on, and would leave two turns of work with one name to review. A caller who already knows the branch may pass Base directly; this exists because the branch is derived from a session id and nobody should have to know how. Base wins if both are given.
agent_ref: Option<String>AgentRef names a configured agent to run as, which is how an org pins a harness, a model and a prompt to a name. Empty runs the default agent.
base: Option<String>Base is the branch to start from. Empty takes the repository’s default. The run never writes here — it writes the agent branch it answers with.
desktop: Option<bool>Desktop asks for a run with a SCREEN — an image carrying an X server — for a task that has to drive a browser or another windowed program. False, the default, is a headless checkout, which is what writing code needs.
project: Option<String>Project scopes the run to one board’s work when the org keeps more than one. Empty is the org’s default.
prompt: Option<String>Prompt is the task, in the words you would use with a colleague who has the checkout open. It is the whole instruction: there is no second field for context, and a prompt that names files and the outcome it wants gets a run that does not have to guess either.
reply_channel: Option<String>ReplyChannel / ReplyThread are WHERE THE RUN NARRATES ITSELF, when the surface that started it has somewhere for it to talk. Empty means nobody is listening and the run simply does not narrate — which is the app surface’s case, because /v1/agents/coding hands back a session id and the session stream is a better progress feed than any message could be. It is an ADDRESS and not a token: the engine says "put this text there", and the process that owns the workspace’s bot credential is the one that actually posts. So a run reports into a Slack thread without the engine ever holding the token that could post anywhere else in that workspace.
reply_thread: Option<String>ReplyThread narrows that address to one THREAD inside the channel: on Slack it is the parent message’s ts, the same value a reply carries as thread_ts. Empty puts the run’s status line at the top level of the channel instead. The channel is what decides whether a run narrates at all, so this on its own addresses nothing — a thread with no ReplyChannel is a run nobody hears.
repo: Option<String>Repo is what to work on, as owner/name in the caller’s own org. The engine resolves the clone URL and the push credential from the org itself, so this says WHICH repository and never how to reach it.
target_id: Option<String>TargetID routes the run to a registered machine the org has claimed instead of to a sandbox in our cluster. Empty runs it here, which is the usual case.
timeout_seconds: Option<i32>TimeoutSeconds bounds the whole run. Unset takes the default budget; a run that hits the bound is stopped and reports what it had done by then.
tool: Option<String>Tool is which harness runs the prompt — dev | claude | codex | python | node — and Desktop is whether the run needs a screen. Both are empty by default, which is dev with no screen, and that default is what every caller gets until it says otherwise. They are two fields because they are two questions. The harness decides what argv starts; the screen decides which image carries an X server. A caller may want claude WITH a browser it can see, and a single enum would have made that combination unsayable.
Implementations§
Source§impl CodingStartIn
impl CodingStartIn
pub fn new() -> CodingStartIn
Trait Implementations§
Source§impl Clone for CodingStartIn
impl Clone for CodingStartIn
Source§fn clone(&self) -> CodingStartIn
fn clone(&self) -> CodingStartIn
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more