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.