ruststream 0.7.3

Async messaging framework for Rust: broker-agnostic traits, router, codecs, and a conformance harness for broker authors.
Documentation
import {forwardRef, useImperativeHandle, type ReactNode} from 'react';
import {closeAskAi, openAskAi} from './events';

// The search plugin renders this in place of its default Ask AI widget and calls these
// methods when the reader picks "Ask AI" in the results; the site's panel answers instead.
export interface AskAIWidgetRef {
  open: () => void;
  close: () => void;
  openWithNewSession: (message: string) => void;
}

export const AskAIWidget = forwardRef<AskAIWidgetRef, {children?: ReactNode}>(
  function AskAIWidget(_props, ref) {
    useImperativeHandle(ref, () => ({
      open: () => openAskAi(),
      close: closeAskAi,
      openWithNewSession: (message) => openAskAi(message),
    }));
    return null;
  },
);