hermes-agent/tools
teknium1 0a82396718 feat: shared iteration budget across parent + subagents
Subagent tool calls now count toward the same session-wide iteration
limit as the parent agent. Previously, each subagent had its own
independent counter, so a parent with max_iterations=60 could spawn
3 subagents each doing 50 calls = 150 total tool calls unmetered.

Changes:
- IterationBudget: thread-safe shared counter (run_agent.py)
  - consume(): try to use one iteration, returns False if exhausted
  - refund(): give back one iteration (for execute_code turns)
  - Thread-safe via Lock (subagents run in ThreadPoolExecutor)
- Parent creates the budget, children inherit it via delegate_tool.py
- execute_code turns are refunded (don't count against budget)
- Default raised from 60 → 90 to account for shared consumption
- Per-child cap (50) still applies as a safety valve

The per-child max_iterations (default 50) remains as a per-child
ceiling, but the shared budget is the hard session-wide limit.
A child stops at whichever comes first.
2026-03-07 08:16:37 -08:00
..
environments fix(daytona): use shell timeout wrapper instead of broken SDK exec timeout 2026-03-05 13:12:41 -08:00
__init__.py docs: complete Daytona backend documentation coverage 2026-03-06 03:37:05 -08:00
approval.py feat(terminal): integrate Daytona backend into tool pipeline 2026-03-05 10:02:21 -08:00
browser_tool.py feat: local browser backend — zero-cost headless Chromium via agent-browser 2026-03-07 01:14:57 -08:00
clarify_tool.py
code_execution_tool.py Merge PR #309: fix(timezone): timezone-aware now() for prompt, cron, and execute_code 2026-03-07 00:04:41 -08:00
cronjob_tools.py
debug_helpers.py
delegate_tool.py feat: shared iteration budget across parent + subagents 2026-03-07 08:16:37 -08:00
file_operations.py docs: complete Daytona backend documentation coverage 2026-03-06 03:37:05 -08:00
file_tools.py feat(terminal): integrate Daytona backend into tool pipeline 2026-03-05 10:02:21 -08:00
fuzzy_match.py
homeassistant_tool.py
honcho_tools.py
image_generation_tool.py
interrupt.py
mcp_tool.py
memory_tool.py
mixture_of_agents_tool.py
openrouter_client.py
patch_parser.py
process_registry.py refactor: extract atomic_json_write helper, add 24 checkpoint tests 2026-03-06 05:50:12 -08:00
registry.py Merge PR #275: fix(batch_runner): preserve traceback when batch worker fails 2026-03-05 01:44:05 -08:00
rl_training_tool.py Update MiniMax model ID from m2.1 to m2.5 2026-03-06 16:47:48 +08:00
send_message_tool.py
session_search_tool.py refactor: clean up type hints and docstrings in session_search_tool 2026-03-04 21:25:54 -08:00
skill_manager_tool.py
skills_guard.py feat: optional skills — official skills shipped but not activated by default 2026-03-06 01:24:11 -08:00
skills_hub.py fix: review fixes — path traversal guard, trust_style consistency, edge cases 2026-03-06 01:40:01 -08:00
skills_sync.py fix: prevent data loss in skills sync on copy/update failure 2026-03-07 03:58:32 +03:00
skills_tool.py feat: platform-conditional skill loading + Apple/macOS skills 2026-03-07 00:47:54 -08:00
terminal_tool.py feat(terminal): integrate Daytona backend into tool pipeline 2026-03-05 10:02:21 -08:00
todo_tool.py
transcription_tools.py refactor: clean up transcription_tools after PR #262 merge 2026-03-04 21:35:04 -08:00
tts_tool.py
vision_tools.py
web_tools.py fix: allow self-hosted Firecrawl without API key + add self-hosting docs 2026-03-05 16:44:21 -08:00