SurfSense/surfsense_web/components/assistant-ui/citation-metadata-context.tsx

35 lines
1.1 KiB
TypeScript
Raw Normal View History

"use client";
import { createContext, type FC, type ReactNode, useContext } from "react";
export interface CitationMeta {
title: string;
snippet?: string;
}
type CitationMetadataMap = ReadonlyMap<string, CitationMeta>;
const EMPTY_CITATION_METADATA: CitationMetadataMap = new Map();
const CitationMetadataContext = createContext<CitationMetadataMap>(EMPTY_CITATION_METADATA);
// The previous web-search citation spine (WEB_RESULT hover cards) was removed
// with the multi-engine web_search tool. Agent citation logic is being reworked
// wholesale, so this provider currently yields no web citation metadata.
export const CitationMetadataProvider: FC<{ children: ReactNode }> = ({ children }) => {
return (
<CitationMetadataContext.Provider value={EMPTY_CITATION_METADATA}>
2026-03-30 01:50:41 +05:30
{children}
</CitationMetadataContext.Provider>
);
};
export function useCitationMetadata(url: string): CitationMeta | undefined {
const map = useContext(CitationMetadataContext);
return map.get(url);
}
export function useAllCitationMetadata(): CitationMetadataMap {
return useContext(CitationMetadataContext);
}