Help us shape the future of Go! Take the 2026 Go Developer Survey

blocks

package
v0.0.51 Latest Latest
Warning

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

Go to latest
Published: Oct 26, 2026 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Overview

Package blocks prepares the structured, non-Markdown conversation blocks in mecatui's conversation view.

It is an internal package, but its boundary is intentionally stable enough for other UI components and contributors to use. Blocks is a pure presentation layer: callers provide immutable snapshots and resolved presentation inputs; preparation returns final block-local lines plus lockstep structural rows. It does not know about conversations, session events, viewports, Bubble Tea models, block identity, or cache lifetime.

The major pieces are:

  • Prepared and Row: final lines and their semantic provenance. A Row has the semantic region, visible-text offset, fallback row, leading column, and grapheme span needed by the parent UI to build frame provenance without parsing decorated output.
  • styled_tool.go and styled_tool_rows.go: the framed tool-card compiler and its layout/provenance reconciliation for headers, arguments, results, artifacts, diffs, and delegation output.
  • plain.go and plain_cards.go: shared plain-card width and terminal-safety handling plus User, Notice, Hook, Delivery, and TurnStat preparation.
  • error_cards.go: transient and permanent error presentation, including the collapsed permanent-error summary and expanded raw payload.

The parent ui package owns the rest of the rendering pipeline. Conversation mutation advances each block's content revision; the renderer combines that revision with shared view context (width, expansion, and rendering dialect) to decide cache reuse. After a cache miss, it adapts Prepared.Rows into its document-local frame by attaching block identity, indentation, kind, and inter-block separators.

Package blocks prepares stateless, structured conversation-block snapshots.

It deliberately has no knowledge of the conversation, renderer cache, viewport, or Bubble Tea model. The parent ui package attaches document-local identity and frame ownership when it adapts a Prepared value into its rendered frame.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CollapseErrorSummary

func CollapseErrorSummary(s string) string

CollapseErrorSummary rewrites a legacy SDK-shaped provider error.

func DeliveryBodyForDisplay

func DeliveryBodyForDisplay(raw string) string

DeliveryBodyForDisplay strips only the recognized delivery fence and header.

func PermanentErrorSummary

func PermanentErrorSummary(raw string) string

PermanentErrorSummary preserves compatibility with legacy SDK-shaped errors.

func SanitizePlain

func SanitizePlain(s string) string

SanitizePlain removes terminal controls from plain card text while preserving layout newlines and tabs. Markdown must not pass through this function.

Types

type DeliveryInput

type DeliveryInput struct{ ScheduleName, FireID, Text string }

DeliveryInput is caller-owned scheduled-delivery content.

type DeliverySnapshot

type DeliverySnapshot struct {
	// contains filtered or unexported fields
}

DeliverySnapshot is an immutable delivery snapshot.

func SnapshotDelivery

func SnapshotDelivery(in DeliveryInput) DeliverySnapshot

SnapshotDelivery owns a scheduled-delivery input.

type ErrorInput

type ErrorInput struct{ Text string }

ErrorInput is caller-owned transient-error content.

type ErrorSnapshot

type ErrorSnapshot struct {
	// contains filtered or unexported fields
}

ErrorSnapshot is an immutable transient-error snapshot.

func SnapshotError

func SnapshotError(in ErrorInput) ErrorSnapshot

SnapshotError owns a transient-error input.

type HookInput

type HookInput struct{ Text, Phase, Tool, Decision string }

HookInput is caller-owned structured hook content.

type HookSnapshot

type HookSnapshot struct {
	// contains filtered or unexported fields
}

HookSnapshot is an immutable hook snapshot.

func SnapshotHook

func SnapshotHook(in HookInput) HookSnapshot

SnapshotHook owns a structured hook input.

type NoticeInput

type NoticeInput struct {
	Text     string
	Recovery bool
}

NoticeInput is caller-owned notice content.

type NoticeSnapshot

type NoticeSnapshot struct {
	// contains filtered or unexported fields
}

NoticeSnapshot is an immutable notice snapshot.

func SnapshotNotice

func SnapshotNotice(in NoticeInput) NoticeSnapshot

SnapshotNotice owns a notice input.

type PermanentErrorInput

type PermanentErrorInput struct{ Text string }

PermanentErrorInput is caller-owned permanent-error content.

type PermanentErrorSnapshot

type PermanentErrorSnapshot struct {
	// contains filtered or unexported fields
}

PermanentErrorSnapshot is an immutable permanent-error snapshot.

func SnapshotPermanentError

func SnapshotPermanentError(in PermanentErrorInput) PermanentErrorSnapshot

SnapshotPermanentError owns a permanent-error input.

type PlainLayout

type PlainLayout struct {
	// contains filtered or unexported fields
}

PlainLayout is an immutable geometry snapshot.

func SnapshotPlainLayout

func SnapshotPlainLayout(in PlainLayoutInput) PlainLayout

SnapshotPlainLayout detaches plain-card preparation from renderer state.

type PlainLayoutInput

type PlainLayoutInput struct {
	Width      int
	Expanded   bool
	ExpandMark string
}

PlainLayoutInput is the caller-owned geometry used by non-Markdown cards.

type Prepared

type Prepared struct {
	Lines []string
	Rows  []Row
}

Prepared is the complete output of one stateless preparation.

func PrepareDelivery

func PrepareDelivery(in DeliverySnapshot, layout PlainLayout, theme Theme) Prepared

PrepareDelivery prepares a scheduled-delivery card.

func PrepareError

func PrepareError(in ErrorSnapshot, layout PlainLayout, theme Theme) Prepared

PrepareError prepares a transient error.

func PrepareHook

func PrepareHook(in HookSnapshot, layout PlainLayout, theme Theme) Prepared

PrepareHook prepares a decision-specific hook notice.

func PrepareNotice

func PrepareNotice(in NoticeSnapshot, layout PlainLayout, theme Theme) Prepared

PrepareNotice prepares an ordinary or recovery notice.

func PreparePermanentError

func PreparePermanentError(in PermanentErrorSnapshot, layout PlainLayout, theme Theme) Prepared

PreparePermanentError prepares collapsed or expanded permanent-error content.

func PrepareStyledTool

func PrepareStyledTool(input StyledToolSnapshot, theme Theme) Prepared

PrepareStyledTool produces the actual main-conversation block lines and their structural provenance in one stateless operation.

func PrepareTurnStat

func PrepareTurnStat(in TurnStatSnapshot, layout PlainLayout, theme Theme) Prepared

PrepareTurnStat prepares a turn-stat line.

func PrepareUser

func PrepareUser(in UserSnapshot, layout PlainLayout, theme Theme) Prepared

PrepareUser prepares a user-prompt block.

func (Prepared) Text

func (p Prepared) Text() string

Text joins the prepared display lines for rendering.

type Region

type Region uint8

Region identifies a block-local semantic area. It has no document identity.

const (
	// RegionChrome identifies frame and header rows without visible semantic text.
	RegionChrome Region = iota
	// RegionBody identifies visible non-tool card text.
	RegionBody
	// RegionArguments identifies visible tool-argument text.
	RegionArguments
	// RegionResult identifies visible tool-result text.
	RegionResult
)

type Row

type Row struct {
	Region        Region
	Text          bool
	SourceOffset  int
	FallbackRow   int
	LeadingColumn int
	GraphemeSpan  int
}

Row is the structural provenance for one final card-local line. It carries no semantic source text; the frame remains the owner of rendered strings.

type StyledSectionInput

type StyledSectionInput struct {
	Region   Region
	Text     string
	Trailing int
}

StyledSectionInput is one already width-bounded semantic section of a real tool card. Text may contain ANSI styling, but all dynamic text has been wrapped before that styling was applied.

type StyledToolInput

type StyledToolInput struct {
	Sections []StyledSectionInput
}

StyledToolInput is the caller-owned input for the main-conversation tool card.

type StyledToolSnapshot

type StyledToolSnapshot struct {
	// contains filtered or unexported fields
}

StyledToolSnapshot owns the strings used by a tool-card preparation.

func SnapshotStyledTool

func SnapshotStyledTool(input StyledToolInput) StyledToolSnapshot

SnapshotStyledTool detaches preparation from the mutable conversation block.

type Theme

type Theme struct {
	UserGlyph     string
	UserMarker    lipgloss.Style
	UserLabel     lipgloss.Style
	UserRail      lipgloss.Style
	UserBody      lipgloss.Style
	HarnessGlyph  string
	HarnessMarker lipgloss.Style
	HarnessLabel  lipgloss.Style
	HarnessText   lipgloss.Style
	Statistics    lipgloss.Style
	Muted         lipgloss.Style
	Warning       lipgloss.Style
	Error         lipgloss.Style
	HookModified  lipgloss.Style
	HookAdvisory  lipgloss.Style
	DeliveryHead  lipgloss.Style
	ToolCard      lipgloss.Style
}

Theme contains the resolved semantic styles required to prepare conversation blocks. The UI maps its stylesheet roles to this value at the package boundary.

type TurnStatInput

type TurnStatInput struct{ Text string }

TurnStatInput is caller-owned turn-stat content.

type TurnStatSnapshot

type TurnStatSnapshot struct {
	// contains filtered or unexported fields
}

TurnStatSnapshot is an immutable turn-stat snapshot.

func SnapshotTurnStat

func SnapshotTurnStat(in TurnStatInput) TurnStatSnapshot

SnapshotTurnStat owns a turn-stat input.

type UserInput

type UserInput struct {
	Text  string
	Media []string
}

UserInput is caller-owned user-prompt content.

type UserSnapshot

type UserSnapshot struct {
	// contains filtered or unexported fields
}

UserSnapshot is an immutable user-prompt snapshot.

func SnapshotUser

func SnapshotUser(in UserInput) UserSnapshot

SnapshotUser owns a user-prompt input.

Jump to

Keyboard shortcuts

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