|
3 | 3 | Genera contesto operativo compatto per agenti [DataCivicLab](https://github.com/dataciviclab) |
4 | 4 | da GitHub e, se disponibile, dai checkout locali dei repo Lab. |
5 | 5 |
|
6 | | -## Artifact |
| 6 | +ACB è il **layer di contesto** dell'ecosistema: ogni 6 ore scansiona 10 repo, |
| 7 | +colleziona segnali da source-observatory, dataset-incubator e data-explorer, |
| 8 | +e produce artifact che dicono ad agenti e umani *"cosa è successo e cosa serve attenzione"*. |
| 9 | + |
| 10 | +## Artifact prodotti |
7 | 11 |
|
8 | 12 | | Artifact | Versione | Ruolo | |
9 | 13 | |---|---|---| |
10 | | -| `session_bootstrap.md` | — | orientamento rapido per agenti e umani (~40 righe) | |
11 | | -| `workspace_triage.json` | v1 | PR, issue, discussion, warning, git state | |
12 | | -| `topic_index.json` | v2 | repos attivi, dataset per fonte, topic operativi | |
| 14 | +| `session_bootstrap.md` | — | orientamento rapido: segnali, PR, discussion, stato git | |
| 15 | +| `workspace_triage.json` | v1 | dati strutturati: issue, PR, discussion, warning, radar, pipeline | |
| 16 | +| `topic_index.json` | v3 | indice navigabile: repos, dataset per fonte, analisi, explorer themes | |
13 | 17 |
|
14 | | -La CI aggiorna gli artifact GitHub-only ogni 6 ore sul branch `context`. |
| 18 | +URL su branch `context`: |
15 | 19 |
|
16 | | -## Artifact Consumati |
| 20 | +```text |
| 21 | +https://raw.githubusercontent.com/dataciviclab/agent-context-builder/context/session_bootstrap.md |
| 22 | +https://raw.githubusercontent.com/dataciviclab/agent-context-builder/context/workspace_triage.json |
| 23 | +https://raw.githubusercontent.com/dataciviclab/agent-context-builder/context/topic_index.json |
| 24 | +``` |
17 | 25 |
|
18 | | -ACB preferisce artifact JSON generati e versionati dai repo Lab rispetto a |
19 | | -frontmatter o README manuali. Oggi consuma: |
| 26 | +## Artifact consumati da upstream |
20 | 27 |
|
21 | 28 | | Repo | Path | Uso | |
22 | 29 | |---|---|---| |
23 | | -| `source-observatory` | `data/radar/radar_summary.json` | health complessivo delle fonti nel registry | |
24 | | -| `source-observatory` | `data/catalog/catalog_signals.json` | drift/inventory per singola fonte | |
25 | | -| `dataset-incubator` | `registry/pipeline_signals.json` | stato operativo dei dataset candidate | |
26 | | -| `dataset-incubator` | `registry/clean_catalog.json` | dataset clean/queryable disponibili | |
| 30 | +| `source-observatory` | `data/radar/radar_summary.json` | health 33 fonti (GREEN/YELLOW/RED) | |
| 31 | +| `source-observatory` | `data/catalog/catalog_signals.json` | drift inventariale per fonte | |
| 32 | +| `dataset-incubator` | `registry/pipeline_signals.json` | stato 83 candidate pipeline | |
| 33 | +| `dataset-incubator` | `registry/clean_catalog.json` | 63 dataset pubblicati (slug, colonne, periodo) | |
| 34 | +| `data-explorer` | `src/data/themes.json.py` | 6 temi editoriali + gap explorer | |
27 | 35 |
|
28 | | -`radar_summary` presidia la connettivita' e la disponibilita'; `catalog_signals` resta sul drift inventariale. |
| 36 | +## Tool MCP |
29 | 37 |
|
30 | | -URL raw: |
| 38 | +Esposti via `agent-context-mcp` (server MCP `dataciviclab-context`). |
31 | 39 |
|
32 | | -```text |
33 | | -https://raw.githubusercontent.com/dataciviclab/agent-context-builder/context/session_bootstrap.md |
34 | | -https://raw.githubusercontent.com/dataciviclab/agent-context-builder/context/workspace_triage.json |
35 | | -https://raw.githubusercontent.com/dataciviclab/agent-context-builder/context/topic_index.json |
36 | | -``` |
37 | | - |
38 | | -## Utilizzo |
| 40 | +| Tool | Output | Quando usarlo | |
| 41 | +|---|---|---| |
| 42 | +| `session_bootstrap()` | Markdown | Prima chiamata della sessione — orientamento: segnali, PR, discussion, radar | |
| 43 | +| `workspace_triage()` | JSON | Dati precisi: conteggi, stato git, source health, pipeline state | |
| 44 | +| `topic_index(resolve=)` | JSON | Esplorare dataset/analisi per tema o slug | |
| 45 | +| `search(query, limit=10)` | JSON | Cercare in tutto il Lab: issue, PR, dataset, analisi | |
| 46 | +| `refresh_context()` | OK/error | Forzare rebuild CI (richiede GITHUB_TOKEN con scope workflow) | |
39 | 47 |
|
40 | | -### Shared mode via MCP |
| 48 | +### `search()` nel dettaglio |
41 | 49 |
|
42 | | -Usa `agent-context-mcp` / `dataciviclab-context` per leggere gli artifact remoti. |
43 | | -Non richiede checkout locale. |
| 50 | +Combina due fonti in una risposta: |
44 | 51 |
|
45 | | -```bash |
46 | | -pip install -e ".[mcp]" |
47 | | -agent-context-mcp |
| 52 | +``` |
| 53 | +search("disuguaglianza") |
| 54 | + ├── GitHub Issues Search API → issue/PR da tutti i repo dataciviclab |
| 55 | + └── topic_index.json locale → dataset e analisi per nome/slug/fonte |
48 | 56 | ``` |
49 | 57 |
|
50 | | -Tool MCP: |
| 58 | +Senza `GITHUB_TOKEN` funziona solo su dataset e analisi (topic_index). |
51 | 59 |
|
52 | | -| Tool | Uso | |
53 | | -|---|---| |
54 | | -| `session_bootstrap` | orientamento rapido: repo attivi, PR, issue, discussion | |
55 | | -| `workspace_triage` | triage machine-readable: PR, issue, warning, git state | |
56 | | -| `topic_index` | indice v2: repos, datasets per fonte, topic operativi | |
57 | | -| `refresh_context` | triggera build CI; richiede `GITHUB_TOKEN` con scope `workflow` | |
| 60 | +Esempio di risposta: |
58 | 61 |
|
59 | | -Esempio `settings.json`: |
| 62 | +```json |
| 63 | +{ |
| 64 | + "query": "rifiuti", |
| 65 | + "total": 9, |
| 66 | + "results": { |
| 67 | + "issues": [ |
| 68 | + {"repo": "dataciviclab/data-explorer", "number": 201, "title": "feat: add ISPRA GHG...", "type": "pr"} |
| 69 | + ], |
| 70 | + "datasets": [ |
| 71 | + {"slug": "ispra_ru_base", "name": "Rifiuti Urbani", "source": "ISPRA"} |
| 72 | + ], |
| 73 | + "analyses": [ |
| 74 | + {"slug": "rifiuti-km2", "name": "Rifiuti per km²..."} |
| 75 | + ] |
| 76 | + } |
| 77 | +} |
| 78 | +``` |
| 79 | + |
| 80 | +### Configurazione MCP |
60 | 81 |
|
61 | 82 | ```json |
62 | 83 | { |
63 | 84 | "mcpServers": { |
64 | 85 | "dataciviclab-context": { |
65 | 86 | "command": "agent-context-mcp", |
66 | 87 | "env": { |
67 | | - "GITHUB_TOKEN": "<opzionale-per-refresh>" |
| 88 | + "GITHUB_TOKEN": "<opzionale: serve per refresh_context e search issues>" |
68 | 89 | } |
69 | 90 | } |
70 | 91 | } |
71 | 92 | } |
72 | 93 | ``` |
73 | 94 |
|
74 | | -### Local mode |
75 | | - |
76 | | -Esegue il builder localmente per includere lo stato git (branch, dirty). |
| 95 | +## Utilizzo locale |
77 | 96 |
|
78 | 97 | ```bash |
79 | | -pip install -e . |
80 | | -agent-context build \ |
81 | | - --config dataciviclab.config.yml \ |
82 | | - --out generated/ \ |
83 | | - --workspace-root ~/dev/dataciviclab-workspace |
84 | | -``` |
85 | | - |
86 | | -Windows: |
87 | | - |
88 | | -```powershell |
89 | | -.\codex-context.ps1 -WorkspaceRoot "C:\path\to\dataciviclab-workspace" |
90 | | -``` |
91 | | - |
92 | | -Il wrapper imposta UTF-8, neutralizza `CURL_CA_BUNDLE` ereditato e usa `.venv314` |
93 | | -o `.venv` se presenti. |
94 | | - |
95 | | -## Configurazione (`dataciviclab.config.yml`) |
| 98 | +pip install -e ".[mcp]" |
96 | 99 |
|
97 | | -Definisce organizzazione, repo e topic da monitorare. |
| 100 | +# Solo GitHub (stato CI) |
| 101 | +agent-context build --config dataciviclab.config.yml --out generated/ |
98 | 102 |
|
99 | | -```yaml |
100 | | -github_org: dataciviclab |
101 | | -repos: |
102 | | - - dataset-incubator |
103 | | - - dataciviclab |
104 | | -topics: |
105 | | - datasets: |
106 | | - summary: Incubazione dataset |
107 | | - repos: [dataset-incubator, dataciviclab] |
108 | | - paths: [dataset-incubator/, dataciviclab/analisi/] |
| 103 | +# Con stato git locale |
| 104 | +agent-context build --config dataciviclab.config.yml --out generated/ \ |
| 105 | + --workspace-root ~/dev/dataciviclab-workspace |
109 | 106 | ``` |
110 | 107 |
|
111 | | -`workspace_root` resta fuori dalla config: usare `--workspace-root` o |
112 | | -`DATACIVICLAB_WORKSPACE`. `GITHUB_TOKEN` serve per GitHub Discussions e refresh CI. |
113 | | - |
114 | | -Variabili MCP utili: `ACB_REPO`, `ACB_BRANCH`. |
| 108 | +Variabili ambiente utili: |
| 109 | +- `GITHUB_TOKEN` — per discussion, refresh, search issues |
| 110 | +- `DATACIVICLAB_WORKSPACE` — path workspace locale |
| 111 | +- `ACB_REPO`, `ACB_BRANCH` — override repo/branch MCP (default: `dataciviclab/agent-context-builder`, `context`) |
115 | 112 |
|
116 | 113 | ## Degradazione controllata |
117 | 114 |
|
118 | | -Il builder non deve crashare per contesto parziale: |
| 115 | +Nessun crash per contesto parziale: |
119 | 116 |
|
120 | 117 | | Condizione | Comportamento | |
121 | 118 | |---|---| |
122 | 119 | | rate limit / 403 GitHub | campi `null`, errore in JSON | |
123 | | -| repo privato senza token | repo saltato, warning registrato | |
124 | | -| nessun token | discussion saltate | |
| 120 | +| nessun token | discussion e search issues saltate; topic_index search funziona | |
| 121 | +| repo upstream non disponibile | `available: false`, articolazioni interne populate | |
125 | 122 | | repo locale assente | `available: false`, `reason: path_not_found` | |
126 | | -| path non git | `available: false`, `reason: not_git_repo` | |
127 | 123 | | local mode non attivo | `available: false`, `reason: local_disabled` | |
128 | 124 |
|
129 | 125 | ## Sviluppo |
130 | 126 |
|
131 | 127 | ```bash |
132 | 128 | pip install -e ".[dev]" |
133 | 129 | pytest |
134 | | -ruff check . |
| 130 | +ruff check src/ tests/ |
135 | 131 | ``` |
136 | 132 |
|
137 | 133 | ## Licenza |
|
0 commit comments