pub enum ExecutionFocus {
AgentTurn(AgentTurnFocus),
WorkflowController(WorkflowControllerFocus),
}Expand description
Where the operation’s control flow currently is.
GAP-1 fixes a closed transition table; the transitions themselves are implemented with the root execution work (Phase 3), and this type is what they are allowed to express:
RootKind::Agentstarts atAgentTurn { root task }. Exactly two transitions exist: when the workflow an agent started through a P1 syscall commits its start effect, focus moves toWorkflowController { workflow_id, parent_task_id: Some(agent task) }; when that workflow completes (success, failure or cancellation) and the completion commits, focus moves back to the originalAgentTurn. Depth is at most 1 — workflows have no stack (§10.2), so requesting another workflow while the focus is aWorkflowControlleris anInvalidAuthorityfault.RootKind::Workflowis permanentlyWorkflowController { root workflow, parent_task_id: None }. Agent execution inside a DAG node is a P2 child attempt and does not move the root’s focus.- Focus only ever moves on a committed transition. There is no input — host command or otherwise — that sets it directly.
Variants§
AgentTurn(AgentTurnFocus)
WorkflowController(WorkflowControllerFocus)
Implementations§
Source§impl ExecutionFocus
impl ExecutionFocus
pub fn agent_turn(task_id: TaskId) -> Self
pub fn workflow_controller( workflow_id: WorkflowId, parent_task_id: Option<TaskId>, ) -> Self
Sourcepub fn root_kind_hint(&self) -> RootKind
pub fn root_kind_hint(&self) -> RootKind
The root kind this focus is only ever reachable from. A WorkflowController with a parent
task is the nested case of an Agent root, so callers that need to distinguish “nested”
from “root workflow” use Self::is_nested_in_agent.
Sourcepub fn is_nested_in_agent(&self) -> bool
pub fn is_nested_in_agent(&self) -> bool
Whether this focus is the nested workflow of an agent root — the only case in which a workflow completion must restore a parent agent rather than terminate the operation.
Trait Implementations§
Source§impl Clone for ExecutionFocus
impl Clone for ExecutionFocus
Source§fn clone(&self) -> ExecutionFocus
fn clone(&self) -> ExecutionFocus
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ExecutionFocus
impl Debug for ExecutionFocus
Source§impl<'de> Deserialize<'de> for ExecutionFocus
impl<'de> Deserialize<'de> for ExecutionFocus
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for ExecutionFocus
Source§impl PartialEq for ExecutionFocus
impl PartialEq for ExecutionFocus
Source§impl Serialize for ExecutionFocus
impl Serialize for ExecutionFocus
impl StructuralPartialEq for ExecutionFocus
Auto Trait Implementations§
impl Freeze for ExecutionFocus
impl RefUnwindSafe for ExecutionFocus
impl Send for ExecutionFocus
impl Sync for ExecutionFocus
impl Unpin for ExecutionFocus
impl UnsafeUnpin for ExecutionFocus
impl UnwindSafe for ExecutionFocus
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
Mutably borrows from an owned value. Read more