Add town-hall community ability - #358
Conversation
Voice civic briefings from Virginia LIS and Legistar cities (Richmond, Seattle, Oakland, Boston, Denver, Baltimore, Phoenix, Pittsburgh, San Jose) with meetings, legislation, and optional one-turn details. Co-authored-by: Cursor <cursoragent@cursor.com>
🔀 Branch Merge CheckPR direction: ✅ Passed — |
✅ Community PR Path Check — PassedAll changed files are inside the |
🔍 Lint Results✅
|
✅ Ability Validation Passed |
Move source registration to registry.py so __init__.py stays empty, rename ambiguous lambda names, and apply autofix formatting. Co-authored-by: Cursor <cursoragent@cursor.com>
Update scenarios for Legistar cities, townhall_meetings.md cache, details follow-ups, topics, empty calendar, and mid-session switching. Co-authored-by: Cursor <cursoragent@cursor.com>
What does this Ability do?
Town Hall gives voice civic briefings from official government sources — upcoming meetings, active legislation, and agenda details for Virginia (LIS) plus Legistar cities (Richmond, Seattle, Oakland, Boston, Denver, Baltimore, Phoenix, Pittsburgh, San Jose). Built so contributors can add more jurisdictions via a
CivicSource/LegistarCitySourcesubclass.Suggested Trigger Words
virginia state/virginia legislationrichmond city/richmond legislationseattle city/seattle legislationoakland city/boston city/denver city/baltimore city/phoenix city/pittsburgh city/san jose city(and matching* legislation)town hall(asks which briefing)configure topics/remove topics/clear topicsType
External APIs
LIS_API_KEY; public ICS /BILLS.CSVfallbackswebapi.legistar.com) — public, no keyTesting
/eventsand/matterssmoke-checked per city; Detroit / Miami-Dade dropped (stale public feeds)Checklist
community/town-hall/main.pyfollows SDK pattern (extendsMatchingCapability, hasregister_capability+call)README.mdincluded with description, suggested triggers, and setupresume_normal_flow()called on every exit pathprint()— usingeditor_logging_handlerredis,user_config,importlib, rawopen())asyncio.sleep()orasyncio.create_task()— usingsession_tasksdev)Anything else?
CivicSourcebase +LegistarCitySourceparent for Legistar cities; Virginia stays a separate LIS source.notes/locally (gitignored) and are not part of this PR..openhome.jsonfields stripped; community manifest hascapability_id: null.Made with Cursor