feat(generic): config-driven REST/GeoJSON source adapter (ported from Central) (#78)

Universal, no-code data sources: one GenericHttpAdapter polls any public
REST/GeoJSON feed per config.generic_sources[] — dotted-path field mapping
(items/id/lat/lon/geometry/title/fields) → coverage-gated, persisted
(generic_events, v26), cold-start-silent, LLM-queryable events. Ports
Central's GenericHttpAdapter to meshai native. First real use case: Idaho
Power outages, configured (not hardcoded) — anyone can point it at their own
utility/feed. GUI editor is a follow-up.

Co-authored-by: Matt Johnson <mj@k7zvx.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
malice 2026-07-07 00:20:02 -06:00 committed by GitHub
commit 30212ceb18
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 897 additions and 7 deletions

View file

@ -15,7 +15,7 @@ from meshai.persistence.observer_locations import (
# -- schema / migration -------------------------------------------------------
def test_schema_version_is_25():
assert SCHEMA_VERSION == 25
assert SCHEMA_VERSION == 26
def test_observer_locations_table_exists():
@ -30,7 +30,7 @@ def test_schema_meta_at_current():
conn = get_db()
row = conn.execute(
"SELECT value FROM schema_meta WHERE key='version'").fetchone()
assert int(row["value"]) == 25
assert int(row["value"]) == 26
# -- accessors ----------------------------------------------------------------