• Strip the union of every provider's expressive XML markup (provider-agnostic).

    The transcript sinks strip downstream, where the originating TTS/provider is no longer in scope, so they remove every provider's XML tags at once: expr markers (all the LLM is ever taught) plus every native tag name, so a hallucinated native tag is stripped rather than leaked.

    Square-bracket spans are not stripped: the LLM only writes expr, so brackets in its output are prose (a [text](url) link) that a strip would mangle. Provider-native brackets never arrive here — dropBracketCues removes them at their source.

    Parameters

    • text: string
    • options: {
          atLineStart?: boolean;
          atTextEnd?: boolean;
      } = {}

      atLineStart: whether text begins a line, so a marker heading it takes the space after it along; false for a chunk picked up mid-line, where that whitespace is a real separator between two words. atTextEnd: whether text really ends here, so a marker ending it takes the space before it along (see dropTrailingSeparator); false mid-stream, where that whitespace belongs to words still arriving. Both default to true.

      • Optional atLineStart?: boolean
      • Optional atTextEnd?: boolean

    Returns [string, ExpressiveTag[]]