Core

Policy and presets

Settings for streaming text, tool updates, response status, announcement channels, timing, and queue limits.

PresetName

Each preset defines a complete set of default values.

PresetStreamingStatus updates
minimalRestrainedFinal states
balancedSentence-pacedUseful status
verboseMore frequentProgress enabled
completion-onlyFinal text onlyMinimal

PolicyOverrides

Nested overrides merge with the selected preset. Unspecified values remain controlled by that preset.

typescript
const runtime = createGenerativeA11y({
  preset: "balanced",
  policy: {
    text: { minimumCharacters: 48, maximumDelayMs: 1_800 },
    tools: { announceProgress: false },
    minimumGapMs: 900,
    maxQueueSize: 64,
  },
});

How this code works

  1. 01
    Keep a tested baseline

    balanced continues to supply every property not shown.

  2. 02
    Tune useful differences

    Text becomes less fragmented and tool progress remains quiet.

  3. 03
    Keep work bounded

    maxQueueSize prevents an inactive consumer from creating unlimited pending output.

Options and return values

text.strategyTextStrategyOptional

Selects silent, sentence, paragraph, or completion segmentation.

Default
preset value
text.minimumCharactersnumberOptional

Avoids tiny fragments except when a terminal or maximum-delay flush applies.

Default
preset value
text.maximumDelayMsnumberOptional

Bounds how long useful buffered text waits for a natural boundary.

Default
preset value
minimumGapMsnumberOptional

Paces adjacent intents to reduce interruption and overlap.

Default
preset value
dedupeWindowMsnumberOptional

Suppresses equivalent recent output.

Default
preset value
maxQueueSizenumberOptional

Bounds scheduler candidates and favors content over status during eviction.

Default
preset value
maxActiveEntitiesnumberOptional

Bounds response and tool identity state and fails closed after capacity.

Default
preset value