// Shared reactive state for Riprap web components. // // Lit components import these signals; updating one signal re-renders // every subscribed component. Replaces the hand-wired DOM-querying // cross-linking we used to do in vanilla JS. import { signal } from "https://esm.sh/@lit-labs/signals@0.1.x"; // Currently-highlighted citation doc_id. When a Briefing chip is hovered // or clicked, this gets set; SourcesFooter observes it and highlights // the matching row, and vice versa. export const highlightedDocId = signal(null); // The full agent run output (from /api/agent/stream `final` event). // Components that need the result post-render read from this. export const lastResult = signal(null); // The cite-index map { doc_id: number } populated by Briefing as it // renders the streamed markdown. SourcesFooter reads it to know which // numbered rows to render. export const citeIndex = signal({});