pub enum Launch {
Dispatch {
task_id: i64,
title: String,
},
Refine {
task_id: i64,
},
Plan {
project: String,
},
Propose {
project: String,
},
}Expand description
What a launch is (DESIGN.md §8): the one place a backgrounded or
foreground agent session’s identity is composed. A launch names its session,
its prompt and log files, and its line in the launch log from this single
value, so a new flavour of launch cannot inherit one of those and forget
another — which is exactly how a refine came to be named voro-{task_id},
literally, on every task at once.
The invariant it carries: every session Voro launches has a Voro-composed
name starting voro-<id> — a dispatch continues into a slug of the task’s
title, anything else pointed at that task into its kind — so nothing Voro
starts shows up anonymous or duplicately named in the agent’s own session
listing. A launch that belongs to no task is named for its project — by
name, not id, since a bare number there would read as a task id.
Variants§
Dispatch
A task dispatched to a headless session (DESIGN.md §8), carrying the task’s title so the session name can say what it is working on.
Refine
A proposed task’s body rewritten by an agent (DESIGN.md §6), at either intensity — the headless note-driven one and the interactive one are the same operation, and only one of them is ever backgrounded.
Plan
An interactive planning session drafting a new task for a project, carrying the project’s name. Project names are unique (schema §5), so two projects cannot claim one session name.
Propose
A headless agent expanding the operator’s one-line intent into a task it files itself (DESIGN.md §6/§8). Like a planning session it belongs to no task — it is drafting one — so it names its project, by name, and the two task-less launches share that one convention: a bare number in a Voro-composed session name is always a task id.
Implementations§
Source§impl Launch
impl Launch
Sourcepub fn session_name(&self) -> String
pub fn session_name(&self) -> String
The name the agent’s session carries, filling SESSION_NAME_PLACEHOLDER.
voro-<id>-<slug> for a dispatch is the published contract
(docs/agent-integration.md) and what attach and the /resume picker
are read by, so anything else pointed at the same task suffixes a kind
rather than colliding with it. The slug says what the task is, which
is all the operator gets in the agents view and on the phone; a title
that survives sanitization to nothing leaves the bare voro-<id>.
Sourcepub fn slug(&self) -> String
pub fn slug(&self) -> String
The stem of this launch’s prompt and log files, and the label its launch-log lines carry.
Sourcepub fn task_id(&self) -> Option<i64>
pub fn task_id(&self) -> Option<i64>
The task this launch is pointed at, if any — None for the two launches
that draft a task rather than naming one, and why
TASK_ID_PLACEHOLDER is refused on the plan verb.
Trait Implementations§
impl Eq for Launch
impl StructuralPartialEq for Launch
Auto Trait Implementations§
impl Freeze for Launch
impl RefUnwindSafe for Launch
impl Send for Launch
impl Sync for Launch
impl Unpin for Launch
impl UnsafeUnpin for Launch
impl UnwindSafe for Launch
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.