File size: 1,828 Bytes
8ea6477
ff385be
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7dccf59
6e12eab
ff385be
 
803ee48
ff385be
 
803ee48
2fba789
7dccf59
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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()