hermes-agent/gateway/platforms
kshitijk4poor ccfbf42844 feat: secure skill env setup on load (core #688)
When a skill declares required_environment_variables in its YAML
frontmatter, missing env vars trigger a secure TUI prompt (identical
to the sudo password widget) when the skill is loaded. Secrets flow
directly to ~/.hermes/.env, never entering LLM context.

Key changes:
- New required_environment_variables frontmatter field for skills
- Secure TUI widget (masked input, 120s timeout)
- Gateway safety: messaging platforms show local setup guidance
- Legacy prerequisites.env_vars normalized into new format
- Remote backend handling: conservative setup_needed=True
- Env var name validation, file permissions hardened to 0o600
- Redact patterns extended for secret-related JSON fields
- 12 existing skills updated with prerequisites declarations
- ~48 new tests covering skip, timeout, gateway, remote backends
- Dynamic panel widget sizing (fixes hardcoded width from original PR)

Cherry-picked from PR #723 by kshitijk4poor, rebased onto current main
with conflict resolution.

Fixes #688

Co-authored-by: kshitijk4poor <kshitijk4poor@users.noreply.github.com>
2026-03-13 03:14:04 -07:00
..
__init__.py Enhance CLI with multi-platform messaging integration and configuration management 2026-02-02 19:01:51 -08:00
ADDING_A_PLATFORM.md docs: add platform integration checklist for new gateway adapters 2026-03-08 21:20:06 -07:00
base.py feat: secure skill env setup on load (core #688) 2026-03-13 03:14:04 -07:00
discord.py feat(gateway): thread-aware free-response routing for Discord 2026-03-11 09:15:31 -07:00
email.py feat: add email gateway platform (IMAP/SMTP) 2026-03-11 06:32:01 -07:00
homeassistant.py fix: forward thread_id to Telegram adapter + update send_typing signatures 2026-03-10 06:26:32 -07:00
signal.py fix(signal): align send() signature with base class (content, reply_to, metadata) 2026-03-10 15:18:26 -07:00
slack.py fix: slack file upload fallback loses thread context 2026-03-13 04:26:27 +03:00
telegram.py fix: add **kwargs to base/telegram media send methods for metadata routing 2026-03-11 03:24:39 -07:00
whatsapp.py fix: replace blocking time.sleep with await asyncio.sleep in WhatsApp connect 2026-03-11 02:51:49 -07:00