GodsDevProject's picture
Update app.py
ff385be verified
import gradio as gr
from adapters.cia import search_cia
from adapters.fbi import search_fbi
from adapters.dod import search_dod
from adapters.nsa import search_nsa
from adapters.dhs import search_dhs
from adapters.doj import search_doj
from adapters.dea import search_dea
from adapters.ice import search_ice
from adapters.dia import search_dia
from adapters.nia import search_nia
AGENCY_MAP = {
"CIA": search_cia,
"FBI": search_fbi,
"DoD": search_dod,
"NSA": search_nsa,
"DHS": search_dhs,
"DOJ": search_doj,
"DEA": search_dea,
"ICE": search_ice,
"DIA": search_dia,
"NIA": search_nia,
}
def federated_search(query, agencies):
results = []
for agency in agencies:
try:
results.extend(AGENCY_MAP[agency](query))
except Exception:
continue
return results
with gr.Blocks(theme=gr.themes.Soft()) as app:
gr.Markdown("# 📁 FOIA Declassified Document Search")
gr.Markdown("⚠️ Demo Mode — Public FOIA sources only")
query = gr.Textbox(label="Search query")
agencies = gr.CheckboxGroup(
list(AGENCY_MAP.keys()),
label="Filter by agency",
value=["CIA", "FBI"]
)
search_btn = gr.Button("Search")
results = gr.Dataframe(
headers=["title", "agency", "date", "snippet", "url"],
interactive=False
)
search_btn.click(
lambda q, a: [
[r[k] for k in ["title","agency","date","snippet","url"]]
for r in federated_search(q, a)
],
inputs=[query, agencies],
outputs=results
)
gr.Markdown("""
**Dataset Provenance**
- Sources: Official government FOIA reading rooms
- Status: Previously released, unclassified
- Scope: Federated search only
- Verification: No claims beyond source text
""")
app.launch()