Skip to content

@mfui/gemini

@mfui/gemini adapts Gemini SSE streams into MFUI semantic SSE streams.

Use this package when the upstream stream emits Gemini chunks with either text or candidates[].content.parts[].text.

createMFUIResponse()

Creates an MFUI semantic SSE Response from an upstream Gemini stream.

Import

ts
import { createMFUIResponse } from '@mfui/gemini';

Signature

ts
function createMFUIResponse(
  source: GeminiStreamSource,
  mfui: MFUIManifest,
  options?: GeminiMFUIResponseOptions,
): Response

Parameters

NameTypeRequiredDefaultDescription
sourceGeminiStreamSourceYesn/aProvider Response, response body stream, or null.
mfuiMFUIManifestYesn/aComponents available to this request.
optionsGeminiMFUIResponseOptionsNo{}Response, parser, writer, and lifecycle options.

Returns

TypeDescription
Responsetext/event-stream response that emits MFUI semantic SSE events.

Example

ts
import { createMFUIPrompt } from '@mfui/server';
import { createMFUIResponse } from '@mfui/gemini';

const upstream = await fetch(
  'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse',
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      systemInstruction: {
        parts: [
          {
            text: [
              'You are a helpful assistant.',
              createMFUIPrompt(mfui),
            ].join('\n\n'),
          },
        ],
      },
      contents,
    }),
  },
);

return createMFUIResponse(upstream, mfui);

Notes

When provider processing fails, the returned MFUI stream emits an error event and then closes. onError is called when provided.

GeminiStreamSource

Source accepted by createMFUIResponse(), readStream(), and pipeMFUIStream().

Shape

ts
type GeminiStreamSource =
  | Response
  | ReadableStream<Uint8Array>
  | null

GeminiMFUIResponseOptions

Options for createMFUIResponse().

PropertyTypeRequiredDefaultDescription
closebooleanNotrueWhether to close the MFUI parser and writer when the provider stream finishes.
parserMFUIBlockParserOptionsNo{}Options passed to createMFUIBlockParser().
writerMFUIStreamWriterOptionsNo{}Options passed to createMFUIStreamWriter().
responseInitResponseInitNo{}Init object passed to the returned Response.
onMessageMFUIMessageHandlerNon/aCalled with the final projected message after the MFUI response finishes.
onErrorMFUIErrorHandlerNon/aCalled when provider stream processing or MFUI block parsing fails.

readStream()

Reads Gemini SSE events and yields JSON chunks.

Import

ts
import { readStream } from '@mfui/gemini';

Signature

ts
function readStream(
  source: GeminiStreamSource,
): AsyncIterable<GeminiStreamChunk>

Parameters

NameTypeRequiredDefaultDescription
sourceGeminiStreamSourceYesn/aProvider SSE source.

Returns

TypeDescription
AsyncIterable<GeminiStreamChunk>Parsed provider chunks.

GeminiStreamChunk

Provider chunk shape consumed by writeMFUIStream().

PropertyTypeRequiredDefaultDescription
textstringNon/aDirect text chunk. Used before candidate text parts when present.
candidatesArray<Record<string, unknown>>Non/aCandidate objects. Text is read from candidate.content.parts[].text.
usageMetadataGeminiUsageMetadataNon/aToken usage metadata.
[key]unknownNon/aAdditional provider fields are ignored by MFUI.

GeminiUsageMetadata

Usage metadata read from Gemini chunks.

PropertyTypeRequiredDefaultDescription
promptTokenCountnumberNon/aMaps to MFUI inputTokens.
candidatesTokenCountnumberNon/aMaps to MFUI outputTokens.
[key]unknownNon/aAdditional usage fields are ignored by MFUI.

writeMFUIStream()

Writes parsed Gemini chunks into an MFUI block parser.

Import

ts
import { writeMFUIStream } from '@mfui/gemini';

Signature

ts
function writeMFUIStream(
  stream: AsyncIterable<GeminiStreamChunk>,
  parser: MFUIBlockParser,
  options?: GeminiMFUIStreamOptions,
): Promise<void>

Parameters

NameTypeRequiredDefaultDescription
streamAsyncIterable<GeminiStreamChunk>Yesn/aParsed provider chunks.
parserMFUIBlockParserYesn/aMFUI block parser receiving provider text deltas.
optionsGeminiMFUIStreamOptionsNo{}Stream writing options.

Returns

TypeDescription
Promise<void>Resolves after the provider stream is fully consumed and the parser is flushed or closed.

GeminiMFUIStreamOptions

Options for writeMFUIStream() and pipeMFUIStream().

PropertyTypeRequiredDefaultDescription
closebooleanNotrueWhether to call parser.close() when the provider stream ends. When false, parser.flush() is called instead.

pipeMFUIStream()

Reads a provider SSE source and writes it into an MFUI block parser.

Import

ts
import { pipeMFUIStream } from '@mfui/gemini';

Signature

ts
function pipeMFUIStream(
  source: GeminiStreamSource,
  parser: MFUIBlockParser,
  options?: GeminiMFUIStreamOptions,
): Promise<void>

Parameters

NameTypeRequiredDefaultDescription
sourceGeminiStreamSourceYesn/aProvider SSE source.
parserMFUIBlockParserYesn/aMFUI block parser receiving provider text deltas.
optionsGeminiMFUIStreamOptionsNo{}Stream writing options.

Returns

TypeDescription
Promise<void>Resolves after the provider stream is consumed.