hermes-agent/website/docs/guides
Teknium 47d5177a7d
fix(plugins): thread-safe lazy-singleton helpers; fix honcho TOCTOU (#24759) (#42150)
* 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.
2026-06-08 09:35:22 -07:00
..
_category_.json
automate-with-cron.md
automation-templates.md
aws-bedrock.md
azure-foundry.md
build-a-hermes-plugin.md fix(plugins): thread-safe lazy-singleton helpers; fix honcho TOCTOU (#24759) (#42150) 2026-06-08 09:35:22 -07:00
cron-script-only.md
cron-troubleshooting.md
daily-briefing-bot.md
delegation-patterns.md feat(delegation): uncap max_spawn_depth (floor 1, no ceiling) (#39772) 2026-06-05 04:46:02 -07:00
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 docs: replace invalid 'hermes config get <key>' with 'hermes config show' 2026-05-29 12:06:22 -07:00
minimax-oauth.md
oauth-over-ssh.md docs(xai-oauth): note bare-code manual-paste from #33880 2026-05-29 00:57:13 -07:00
operate-teams-meeting-pipeline.md
pipe-script-output.md
python-library.md
run-hermes-with-nous-portal.md fix(cli): harden hermes portal SystemExit handling + finish model-pick doc sweep 2026-06-04 02:33:33 +05:30
run-nemotron-3-ultra-free.md fix(docs): update all install instructions everywhere 2026-06-04 21:07:45 -04:00
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 docs: replace invalid 'hermes config get <key>' with 'hermes config show' 2026-05-29 12:06:22 -07:00
xai-grok-oauth.md fix(xai): route video models by modality 2026-06-01 19:00:30 -07:00