Skip to main content

TaskEvent

Enum TaskEvent 

Source
pub enum TaskEvent {
    GoalSet {
        at: DateTime<Utc>,
        objective: String,
        success_criteria: Vec<String>,
        forbidden: Vec<String>,
        source_session_id: String,
        source_turn_id: String,
        source_text_hash: String,
        source_kind: GoalSourceKind,
        confidence: f32,
    },
    GoalReaffirmed {
        at: DateTime<Utc>,
        progress_note: String,
    },
    GoalCleared {
        at: DateTime<Utc>,
        reason: String,
    },
    TaskAdded {
        at: DateTime<Utc>,
        id: String,
        content: String,
        parent_id: Option<String>,
    },
    TaskStatus {
        at: DateTime<Utc>,
        id: String,
        status: SessionTaskStatus,
        note: Option<String>,
    },
    DriftDetected {
        at: DateTime<Utc>,
        tool_calls_since_reaffirm: u32,
        errors_since_reaffirm: u32,
    },
}
Expand description

A single durable event in the session task log.

TaskEvent is the append-only record format for session goal governance and task lifecycle tracking. Each variant captures one fact that happened at a specific UTC timestamp. The current materialized task state is reconstructed by replaying these events in order, rather than by editing earlier records.

Events are serialized with an internally tagged Serde representation. The kind field stores the variant name in snake_case, which keeps persisted JSONL task logs readable and stable across releases.

Variants§

§

GoalSet

Declares or replaces the active session goal.

A goal contains the objective the agent should pursue, optional completion criteria, explicit forbidden behaviors, and provenance fields describing where the objective came from. When this event is folded into task state, it supersedes any previously active goal.

Fields

§at: DateTime<Utc>

Time at which the goal was declared.

§objective: String

Human-readable objective the agent should work toward.

§success_criteria: Vec<String>

Criteria that indicate the objective has been satisfied.

Defaults to an empty list when omitted by older log entries or simple goal-setting paths.

§forbidden: Vec<String>

Actions or behaviors that are explicitly out of scope.

Defaults to an empty list when no additional forbidden behaviors were recorded.

§source_session_id: String

Identifier of the session containing the source evidence for this goal.

Empty when the producer did not capture a source session.

§source_turn_id: String

Turn identifier or turn index within the source session.

Empty when the goal is not anchored to a specific raw transcript turn.

§source_text_hash: String

Hash of the source text used to derive the goal.

This allows provenance comparisons without duplicating the full source text in every event.

§source_kind: GoalSourceKind

Category describing how the goal was derived.

Consumers can use this to distinguish strong provenance, such as raw transcript turns or direct user input, from weaker provenance, such as summarized recall, durable memory, or inference.

§confidence: f32

Producer-supplied confidence in the recorded provenance.

1.0 means the goal is directly supported by the recorded source evidence. 0.0 means no confidence was supplied or the goal should be treated as unverified.

§

GoalReaffirmed

Records that the agent reaffirmed alignment with the active goal.

Reaffirmation does not change the objective. It stores a progress note so governance logic can reset drift counters and later explain why work continued.

Fields

§at: DateTime<Utc>

Time at which the reaffirmation was recorded.

§progress_note: String

Concise statement of completed work, remaining work, or the current blocker.

§

GoalCleared

Clears the active session goal.

Folding the log after this event leaves the session without an active goal until a later TaskEvent::GoalSet appears.

Fields

§reason: String
§

TaskAdded

Adds a task to the session task list.

Added tasks start as pending in folded state. Later TaskEvent::TaskStatus events update tasks by matching the id field.

Fields

§at: DateTime<Utc>

Time at which the task was added.

§id: String

Stable identifier for this task within the session task log.

§content: String

Human-readable task description.

§parent_id: Option<String>

Optional parent task identifier for nested task breakdowns.

Defaults to None for top-level tasks and older log entries.

§

TaskStatus

Updates the lifecycle status of an existing task.

Folding logic applies this transition to the task with the matching id when that task exists in the materialized task map. The event remains in the append-only log even if the task is missing.

Fields

§at: DateTime<Utc>

Time at which the status transition was recorded.

§id: String

Identifier of the task being updated.

§status: SessionTaskStatus

New lifecycle status for the task.

§note: Option<String>

Optional note explaining the transition, such as a blocker, cancellation reason, or completion summary.

§

DriftDetected

Records that governance detected possible drift from the active goal.

Drift events preserve the counters that triggered an alignment warning, allowing later inspection to understand why the agent was asked to reaffirm the goal or stop before continuing.

Fields

§at: DateTime<Utc>

Time at which drift was detected.

§tool_calls_since_reaffirm: u32

Number of tool calls since the last goal reaffirmation.

§errors_since_reaffirm: u32

Number of errors since the last goal reaffirmation.

Trait Implementations§

Source§

impl Clone for TaskEvent

Source§

fn clone(&self) -> TaskEvent

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TaskEvent

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for TaskEvent

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for TaskEvent

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Serialize for T
where T: Serialize + ?Sized,

Source§

fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>

Source§

fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>

Source§

impl<T> ServiceExt for T

Source§

fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>
where Self: Sized,

Apply a transformation to the response body. Read more
Source§

fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>
where Self: Sized,

High level tracing that classifies responses using HTTP status codes. Read more
Source§

fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>
where Self: Sized,

High level tracing that classifies responses using gRPC headers. Read more
Source§

fn follow_redirects(self) -> FollowRedirect<Self>
where Self: Sized,

Follow redirect resposes using the Standard policy. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,