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

transform

package
v1.40.0 Latest Latest
Warning

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

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

Documentation

Overview

Package transform contains CLI-owned response transformations. Presentation and output formats belong to internal/app and shared output helpers.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CompletedImageResult

func CompletedImageResult(ctx context.Context, event gjson.Result) (gjson.Result, error)

CompletedImageResult selects the final image bytes into the same data array used by nonstreaming generation and editing. It does not write files or handle previews.

func Identity

func Identity(_ context.Context, value gjson.Result) (gjson.Result, error)

Identity preserves the original response, including its raw JSON bytes.

func ImageGenerationResult

func ImageGenerationResult(ctx context.Context, event gjson.Result) (gjson.Result, error)

ImageGenerationResult retains the generation-only contract for existing callers.

func ProjectAudioResponse

func ProjectAudioResponse(value gjson.Result, route Route) (readable.StreamEvent, bool)

ProjectAudioResponse separates a transcript from its metadata for readable presentation. Native text and subtitle bodies reach this boundary as strings. The original value remains available to every explicit data format.

func ProjectAudioStream

func ProjectAudioStream(value gjson.Result, route Route) (readable.StreamEvent, bool)

ProjectAudioStream selects ordinary transcription deltas and final snapshots. Diarized segments retain their complete structured representation: segment deltas cannot safely be reconciled with a final transcript by position alone.

func ProjectFileMetadata

func ProjectFileMetadata(ctx context.Context, value gjson.Result) (gjson.Result, error)

ProjectFileMetadata preserves complete file records and formats known timestamps. Machine output never calls this presentation-only projection.

func ProjectListTable

func ProjectListTable(ctx context.Context, operation string, items []gjson.Result) (headers []string, rows [][]string, supported bool, err error)

ProjectListTable selects columns from one loaded API page. It preserves IDs and leaves terminal escaping to the renderer. Unsupported or unfamiliar records require full-page fallback, so no partial table hides their details. Cancellation returns an error instead of a partial table or fallback.

func ProjectTextStream

func ProjectTextStream(value gjson.Result, route Route) (readable.StreamEvent, bool)

ProjectTextStream selects text components without modifying the API event. Unknown content stays in Details; a false result preserves the complete event. The caller applies this only to readable output, never explicit data formats.

func SelectModels

func SelectModels(ctx context.Context, items []gjson.Result, selection ModelSelection) ([]gjson.Result, bool, error)

SelectModels retains original records and stable ordering for equal IDs. Ambiguous identities make the whole selection unsupported, including records that would otherwise be filtered out. Metadata does not affect selection.

func StreamFailure

func StreamFailure(value gjson.Result, route Route) string

StreamFailure classifies ordinary SSE results before projection or extraction. Messages are fixed API classifications; the caller separately preserves the original event, including error details, for every presentation format.

func SummarizeResource

func SummarizeResource(ctx context.Context, value gjson.Result, route Route) (gjson.Result, bool, error)

SummarizeResource projects known list/get records without modifying API data. A zero summary asks the presenter to show the full value. Omitted reports whether the projection hides fields; presentation owns any explanatory hint.

Types

type ModelListRow

type ModelListRow struct {
	ID    string
	Owner *string
}

ModelListRow preserves an ID and its owner from the same API record. Owner is nil when the field is absent, empty, malformed, or ambiguous.

func ProjectModelsList

func ProjectModelsList(ctx context.Context, items []gjson.Result, descending bool) ([]ModelListRow, bool, error)

ProjectModelsList selects ID/owner pairs from already-selected records. Equal IDs retain their input order. Other metadata does not affect selection. Ambiguous identities require full rendering; the renderer escapes controls.

type ModelSelection

type ModelSelection struct {
	ExactID    *string
	Pattern    *regexp.Regexp
	Descending bool
	Limit      int64
}

ModelSelection filters exact IDs, sorts them, and then limits the result. Negative limits retain every match. Configured filters must both match.

type OutputKind

type OutputKind string

OutputKind identifies the successful-response boundary being presented.

const (
	OutputUnspecified OutputKind = ""
	OutputResponse    OutputKind = "response"
	OutputPageItem    OutputKind = "page_item"
	OutputStreamEvent OutputKind = "stream_event"
)

type Route

type Route struct {
	Operation  string
	OutputKind OutputKind
}

Route identifies an operation independently of its presentation format.

type StreamCompletionState

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

StreamCompletionState remembers only observed API progress, not event bodies. It detects clean EOF after an unfinished result even when transport framing reports no error. Empty streams and wholly unfamiliar events remain unchanged.

func (*StreamCompletionState) CompletionError

func (s *StreamCompletionState) CompletionError(route Route) string

func (*StreamCompletionState) Observe

func (s *StreamCompletionState) Observe(value gjson.Result, route Route)

type Transformer

type Transformer func(context.Context, gjson.Result) (gjson.Result, error)

Transformer changes one response or iterator value before presentation. Implementations must respect cancellation and must not consume other values.

func Select

func Select(route Route) Transformer

Select is the SDK-owned hook for command-specific default transformations. Only known API fields are summarized; unfamiliar routes preserve their values.

Jump to

Keyboard shortcuts

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