UNPKG

assistant-stream

Version:

Streaming utilities for AI assistants

42 lines (36 loc) • 1.14 kB
import type { ToolModelContentPart } from "../core/tool/tool-types"; const ENVELOPE_KEY = "__aui_modelContent"; export type ModelContentEnvelope<TResult = unknown> = { readonly [ENVELOPE_KEY]: readonly ToolModelContentPart[]; readonly value: TResult; }; function isModelContentEnvelope<TResult = unknown>( value: TResult | ModelContentEnvelope<TResult>, ): value is ModelContentEnvelope<TResult> { return ( value != null && typeof value === "object" && ENVELOPE_KEY in value && Array.isArray((value as Record<string, unknown>)[ENVELOPE_KEY]) ); } export function wrapModelContentEnvelope<TResult>( result: TResult, modelContent: readonly ToolModelContentPart[], ): ModelContentEnvelope<TResult> { return { [ENVELOPE_KEY]: modelContent, value: result }; } export function unwrapModelContentEnvelope<TResult>( output: TResult | ModelContentEnvelope<TResult>, ): { result: TResult; modelContent?: readonly ToolModelContentPart[]; } { if (isModelContentEnvelope(output)) { return { result: output.value, modelContent: output[ENVELOPE_KEY], }; } return { result: output }; }