Skip to main content

TranscriptLayout

Struct TranscriptLayout 

Source
pub struct TranscriptLayout<'w, 's> { /* private fields */ }
Expand description

Lays out an agent’s transcript as the terminal view draws it, without drawing it: for any agent, shown or not, in a run with the terminal or without, by the view’s own layout (its order, its renderers, wrapping and the matches it lights), so an export, a copy, a search or a screen reader reads what the view shows. Each layout renders and wraps the whole transcript, so lay one out when asked, not every frame. It is there in any run with the TuiPlugin, and takes the TranscriptView to lay out with, such as a pane’s, so a system that changes the view lays out with it too.

use rig_harness::prelude::*;
use rig_tui::{MainPane, TranscriptLayout, TranscriptView};

/// `/export`: the agent's transcript as the main pane draws it, a line
/// per row.
fn export(
    In(args): In<CommandArgs>,
    layout: TranscriptLayout,
    view: Single<&TranscriptView, With<MainPane>>,
) {
    let width = view.width().unwrap_or(100);
    let Some(laid_out) = layout.lay_out(&view, args.agent, width) else {
        return;
    };
    let rows: Vec<&str> = laid_out.rows().iter().map(|row| row.text.as_str()).collect();
    std::fs::write("transcript.txt", rows.join("\n")).ok();
}

Implementations§

Source§

impl TranscriptLayout<'_, '_>

Source

pub fn lay_out( &self, view: &TranscriptView, agent: Entity, width: u16, ) -> Option<DrawnTranscript>

agent’s transcript laid out in rows width columns wide (as TranscriptView::width says the view draws it; u16::MAX keeps a line in one row), the matches of view’s highlights counted, as the view would draw it with view. It has no rows on screen. DrawnTranscript::item takes one item’s rows out of it. None when agent is no agent.

Trait Implementations§

Source§

impl<'w, 's> ReadOnlySystemParam for TranscriptLayout<'w, 's>
where Query<'w, 's, (&'static AgentId, &'static Conversation)>: ReadOnlySystemParam, Query<'w, 's, &'static ActiveTurn>: ReadOnlySystemParam, Query<'w, 's, &'static Calls>: ReadOnlySystemParam, Query<'w, 's, &'static Partial, Without<SupersededBy>>: ReadOnlySystemParam, Query<'w, 's, (&'static Effect, &'static Incoming, &'static ForAgent), (With<Started>, Without<Outcome>)>: ReadOnlySystemParam, Looks<'w, 's>: ReadOnlySystemParam, CallStates<'w, 's>: ReadOnlySystemParam, Query<'w, 's, (Entity, &'static Effect, (Option<&'static ToolRequest>, Option<&'static ModelRequest>, Option<&'static SentTo>), (Option<&'static ForAgent>, Option<&'static Outcome>), (Has<Started>, Has<Partial>)), Without<Settled>>: ReadOnlySystemParam, Query<'w, 's, &'static Name>: ReadOnlySystemParam, Res<'w, CallFacts>: ReadOnlySystemParam, Query<'w, 's, &'static StreamingCalls>: ReadOnlySystemParam, Res<'w, Notices>: ReadOnlySystemParam, Res<'w, Theme>: ReadOnlySystemParam,

Source§

impl SystemParam for TranscriptLayout<'_, '_>

Source§

type State = FetchState

Used to store data which persists across invocations of a system.
Source§

type Item<'w, 's> = TranscriptLayout<'w, 's>

The item type returned when constructing this system param. The value of this associated type should be Self, instantiated with new lifetimes. Read more
Source§

fn init_state(world: &mut World) -> Self::State

Creates a new instance of this param’s State.
Source§

fn init_access( state: &Self::State, system_meta: &mut SystemMeta, system_access: &mut SystemAccess, world: &mut World, )

Registers any World access used by this SystemParam. Read more
Source§

fn apply(state: &mut Self::State, system_meta: &SystemMeta, world: &mut World)

Applies any deferred mutations stored in this SystemParam’s state. This is used to apply Commands during ApplyDeferred.
Source§

fn queue( state: &mut Self::State, system_meta: &SystemMeta, world: DeferredWorld<'_>, )

Queues any deferred mutations to be applied at the next ApplyDeferred.
Source§

unsafe fn get_param<'w, 's>( state: &'s mut Self::State, system_meta: &SystemMeta, world: UnsafeWorldCell<'w>, change_tick: Tick, ) -> Result<Self::Item<'w, 's>, SystemParamValidationError>

Creates a parameter to be passed into a SystemParamFunction. Read more

Auto Trait Implementations§

§

impl<'w, 's> !RefUnwindSafe for TranscriptLayout<'w, 's>

§

impl<'w, 's> !UnwindSafe for TranscriptLayout<'w, 's>

§

impl<'w, 's> Freeze for TranscriptLayout<'w, 's>

§

impl<'w, 's> Send for TranscriptLayout<'w, 's>

§

impl<'w, 's> Sync for TranscriptLayout<'w, 's>

§

impl<'w, 's> Unpin for TranscriptLayout<'w, 's>

§

impl<'w, 's> UnsafeUnpin for TranscriptLayout<'w, 's>

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> ConditionalSend for T
where T: Send,

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> IntoResult<T> for T

Source§

fn into_result(self) -> Result<T, RunSystemError>

Converts this type into the system output type.
Source§

impl<A> Is for A
where A: Any,

Source§

fn is<T>() -> bool
where T: Any,

Checks if the current type “is” another type, using a TypeId equality comparison. This is most useful in the context of generic logic. Read more
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: Sized + 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: Sized + 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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<T> WasmCompatSend for T
where T: Send,

Source§

impl<T> WasmCompatSync for T
where T: Sync,

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