streamui

package
v0.0.0-...-f0e47c8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 11, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ApplyChunk

func ApplyChunk(state *UIState, chunk map[string]any)

func RecordApprovalResponse

func RecordApprovalResponse(state *UIState, approvalID, toolCallID string, approved bool, reason string)

func SnapshotCanonicalUIMessage

func SnapshotCanonicalUIMessage(state *UIState) map[string]any

func ToolDisplayTitle

func ToolDisplayTitle(toolName string) string

ToolDisplayTitle returns toolName or a fallback "tool" for display.

Types

type Emitter

type Emitter struct {
	State *UIState
	Emit  func(ctx context.Context, portal *bridgev2.Portal, part map[string]any)
}

Emitter provides shared UI stream event emission. Bridges supply the Emit callback which delegates to bridge-specific transport.

func (*Emitter) EmitUIAbort

func (e *Emitter) EmitUIAbort(ctx context.Context, portal *bridgev2.Portal, reason string)

EmitUIAbort sends an "abort" event.

func (*Emitter) EmitUIError

func (e *Emitter) EmitUIError(ctx context.Context, portal *bridgev2.Portal, errText string)

EmitUIError sends an "error" event.

func (*Emitter) EmitUIFile

func (e *Emitter) EmitUIFile(ctx context.Context, portal *bridgev2.Portal, fileURL, mediaType string)

EmitUIFile sends a "file" event (deduplicated by URL).

func (*Emitter) EmitUIFinish

func (e *Emitter) EmitUIFinish(ctx context.Context, portal *bridgev2.Portal, finishReason string, messageMetadata map[string]any)

EmitUIFinish closes any open text/reasoning/step, finalises pending tools, and sends the "finish" event.

func (*Emitter) EmitUIMessageMetadata

func (e *Emitter) EmitUIMessageMetadata(ctx context.Context, portal *bridgev2.Portal, metadata map[string]any)

EmitUIMessageMetadata sends a "message-metadata" event.

func (*Emitter) EmitUIReasoningDelta

func (e *Emitter) EmitUIReasoningDelta(ctx context.Context, portal *bridgev2.Portal, delta string)

EmitUIReasoningDelta sends a "reasoning-delta" event, ensuring reasoning has started.

func (*Emitter) EmitUISourceDocument

func (e *Emitter) EmitUISourceDocument(ctx context.Context, portal *bridgev2.Portal, doc citations.SourceDocument)

EmitUISourceDocument sends a "source-document" event (deduplicated by id/filename/title).

func (*Emitter) EmitUISourceURL

func (e *Emitter) EmitUISourceURL(ctx context.Context, portal *bridgev2.Portal, citation citations.SourceCitation)

EmitUISourceURL sends a "source-url" event (deduplicated by URL).

func (*Emitter) EmitUIStart

func (e *Emitter) EmitUIStart(ctx context.Context, portal *bridgev2.Portal, messageMetadata map[string]any)

EmitUIStart sends the "start" event.

func (*Emitter) EmitUIStepFinish

func (e *Emitter) EmitUIStepFinish(ctx context.Context, portal *bridgev2.Portal)

EmitUIStepFinish sends a "finish-step" event (no-op if no step is open).

func (*Emitter) EmitUIStepStart

func (e *Emitter) EmitUIStepStart(ctx context.Context, portal *bridgev2.Portal)

EmitUIStepStart sends a "start-step" event (idempotent while a step is open).

func (*Emitter) EmitUITextDelta

func (e *Emitter) EmitUITextDelta(ctx context.Context, portal *bridgev2.Portal, delta string)

EmitUITextDelta sends a "text-delta" event, ensuring text has started.

func (*Emitter) EmitUIToolApprovalRequest

func (e *Emitter) EmitUIToolApprovalRequest(
	ctx context.Context,
	portal *bridgev2.Portal,
	approvalID, toolCallID, toolName string,
	ttlSeconds int,
)

EmitUIToolApprovalRequest sends a "tool-approval-request" event.

func (*Emitter) EmitUIToolInputAvailable

func (e *Emitter) EmitUIToolInputAvailable(ctx context.Context, portal *bridgev2.Portal, toolCallID, toolName string, input any, providerExecuted bool)

EmitUIToolInputAvailable sends a "tool-input-available" event.

func (*Emitter) EmitUIToolInputDelta

func (e *Emitter) EmitUIToolInputDelta(ctx context.Context, portal *bridgev2.Portal, toolCallID, toolName, delta string, providerExecuted bool)

EmitUIToolInputDelta sends a "tool-input-delta" event.

func (*Emitter) EmitUIToolInputError

func (e *Emitter) EmitUIToolInputError(
	ctx context.Context,
	portal *bridgev2.Portal,
	toolCallID, toolName string,
	input any,
	errorText string,
	providerExecuted, dynamic bool,
)

EmitUIToolInputError sends a "tool-input-error" event.

func (*Emitter) EmitUIToolOutputAvailable

func (e *Emitter) EmitUIToolOutputAvailable(ctx context.Context, portal *bridgev2.Portal, toolCallID string, output any, providerExecuted, preliminary bool)

EmitUIToolOutputAvailable sends a "tool-output-available" event.

func (*Emitter) EmitUIToolOutputDenied

func (e *Emitter) EmitUIToolOutputDenied(ctx context.Context, portal *bridgev2.Portal, toolCallID string)

EmitUIToolOutputDenied sends a "tool-output-denied" event.

func (*Emitter) EmitUIToolOutputError

func (e *Emitter) EmitUIToolOutputError(ctx context.Context, portal *bridgev2.Portal, toolCallID, errorText string, providerExecuted bool)

EmitUIToolOutputError sends a "tool-output-error" event.

func (*Emitter) EnsureUIReasoning

func (e *Emitter) EnsureUIReasoning(ctx context.Context, portal *bridgev2.Portal)

EnsureUIReasoning sends "reasoning-start" the first time it's called for a turn.

func (*Emitter) EnsureUIText

func (e *Emitter) EnsureUIText(ctx context.Context, portal *bridgev2.Portal)

EnsureUIText sends "text-start" the first time it's called for a turn.

func (*Emitter) EnsureUIToolInputStart

func (e *Emitter) EnsureUIToolInputStart(
	ctx context.Context,
	portal *bridgev2.Portal,
	toolCallID, toolName string,
	providerExecuted, dynamic bool,
	title string,
	providerMetadata map[string]any,
)

EnsureUIToolInputStart sends "tool-input-start" once per toolCallID.

type UIState

type UIState struct {
	TurnID                   string
	UIStarted                bool
	UIFinished               bool
	UITextID                 string
	UIReasoningID            string
	UIStepOpen               bool
	UIStepCount              int
	UICanonicalMessage       map[string]any
	UIToolStarted            map[string]bool
	UISourceURLSeen          map[string]bool
	UISourceDocumentSeen     map[string]bool
	UIFileSeen               map[string]bool
	UIToolOutputFinalized    map[string]bool
	UIToolCallIDByApproval   map[string]string
	UIToolApprovalRequested  map[string]bool
	UIToolNameByToolCallID   map[string]string
	UIToolTypeByToolCallID   map[string]matrixevents.ToolType
	UITextPartIndexByID      map[string]int
	UIReasoningPartIndexByID map[string]int
	UIToolPartIndexByID      map[string]int
	UIToolInputTextByID      map[string]string
}

UIState tracks AI SDK UIMessage stream state shared across bridges.

func (*UIState) InitMaps

func (s *UIState) InitMaps()

InitMaps initialises all nil maps so callers don't need nil checks.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL