def next.loop

bend-kit-llm@0.13.0.1 · llm.bend:596

import bend-kit-llm@0.13.0.1/llm.bend as Llm
import Base
import bend-kit-llm@0.13.0.1/sse.bend as Sse

596# f: events left to skip.
597def next.loop(f: Nat, x: Stream & Ev) -> IO(Stream & Result<&1, &1, Err, Maybe<&2, String>>):
598  match f:
599    case 0n:
600      (s, e) = x
601      IO.pure(Stream & Result<&1, &1, Err, Maybe<&2, String>>, (s, Fail{ErrReply{"too many events without text"}}))
602    case 1n+g:
603      (s, e) = x
604      match e:
605        case EText{t}:
606          IO.pure(Stream & Result<&1, &1, Err, Maybe<&2, String>>, (s, Done{Some{t}}))
607        case EEnd{}:
608          IO.pure(Stream & Result<&1, &1, Err, Maybe<&2, String>>, (s, Done{None{}}))
609        case EFail{err}:
610          IO.pure(Stream & Result<&1, &1, Err, Maybe<&2, String>>, (s, Fail{err}))
611        case ESkip{}:
612          do IO<Stream & Result<&1, &1, Err, Maybe<&2, String>>>:
613            y : Stream & Result<&1, &1, Err, Maybe<&1, Sse.Message>> <- event(s)
614            next.loop(g, next.of(y))

Uses (15)

Used by (1)