mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-10 08:32:09 +00:00
* fix(plugins): add thread-safe lazy-singleton helpers, fix honcho TOCTOU (#24759) get_honcho_client() and fal's _load_fal_client() used unlocked check-then-init: racing threads both ran the expensive build and the loser's client (open connection) leaked. Rather than one-off locks, add plugins/plugin_utils.py with two reusable primitives every plugin author can drop in: - lazy_singleton: decorator for zero-arg accessors - SingletonSlot: manual slot for config-keyed accessors (first wins) Both use double-checked locking; factory runs at most once; failed builds aren't cached. honcho is the reference consumer; fal's sibling TOCTOU gets a matching double-checked lock. Plugin dev guide documents the pattern so future plugins don't reintroduce the race. Closes #24759 * test(honcho): update reset test for SingletonSlot internals test_reset_clears_singleton poked the removed _honcho_client module global directly. Assert through the slot's public peek() surface instead, matching the #24759 refactor. |
||
|---|---|---|
| .. | ||
| _category_.json | ||
| automate-with-cron.md | ||
| automation-templates.md | ||
| aws-bedrock.md | ||
| azure-foundry.md | ||
| build-a-hermes-plugin.md | ||
| cron-script-only.md | ||
| cron-troubleshooting.md | ||
| daily-briefing-bot.md | ||
| delegation-patterns.md | ||
| github-pr-review-agent.md | ||
| google-gemini.md | ||
| local-llm-on-mac.md | ||
| local-ollama-setup.md | ||
| microsoft-graph-app-registration.md | ||
| migrate-from-openclaw.md | ||
| minimax-oauth.md | ||
| oauth-over-ssh.md | ||
| operate-teams-meeting-pipeline.md | ||
| pipe-script-output.md | ||
| python-library.md | ||
| run-hermes-with-nous-portal.md | ||
| run-nemotron-3-ultra-free.md | ||
| team-telegram-assistant.md | ||
| tips.md | ||
| use-mcp-with-hermes.md | ||
| use-soul-with-hermes.md | ||
| use-voice-mode-with-hermes.md | ||
| webhook-github-pr-review.md | ||
| work-with-skills.md | ||
| xai-grok-oauth.md | ||