use lean_ctx::core::context_admission::{capture, origin};
pub(super) fn admitted_hints(
hints: &[lean_ctx::core::cross_source_hints::CrossSourceHint],
) -> String {
let formatted = lean_ctx::core::cross_source_hints::format_hints(hints);
let Some(first) = hints.first() else {
return formatted;
};
let class = origin::provider_uri_class(&first.source_uri);
capture::external_span(&class, || {
lean_ctx::core::context_admission::admit_context_source(&formatted, &class)
.ok()
.map(|admission| admission.text)
})
.unwrap_or_default()
}
pub(super) fn note_downloaded_read(path: &str, project_root: &str) {
let root = std::path::Path::new(project_root);
let Some(download) = origin::download_origin(root, root, std::path::Path::new(path)) else {
return;
};
let Some(input) = download.input_ref() else {
return;
};
if origin::session_taint().contains(&input) {
capture::note_origin(&origin::SourceClass::External(download));
}
}