mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-30 19:09:28 +00:00
Four deferrals following the established truthy-skip / PEP 562 lazy-load patterns (PRs #22681/#22859 lineage). Rebased over #74194, which independently landed the browser_tool half of this work — that file is dropped here; the remaining four modules are untouched by it: - tools/vision_tools.py: defer agent.auxiliary_client (credential_pool -> hermes_cli.auth -> httpx -> rich, ~50 ms) to first vision handler call. async_call_llm / extract_content_or_reasoning stay patchable module attributes; injected test mocks win over the loader. - agent/model_metadata.py: defer 'requests' (+urllib3, ~27 ms of the 'import cli' waterfall) to the fetch functions. PEP 562 __getattr__ keeps patch('agent.model_metadata.requests.get') working. - tools/browser_supervisor.py: websockets (~22 ms) imports on first CDP connect; ClientConnection type under TYPE_CHECKING. - cron/jobs.py: croniter (~15 ms) resolves on first cron-expression use; HAS_CRONITER stays monkeypatchable (None = unprobed sentinel). A/B vs current main incl. #74194 (median of 7, cold subprocess): import cli 147 -> 132 ms (-10%) import model_tools 244 -> 224 ms (-8%) import run_agent 264 -> 244 ms (-8%) Lazy-verify: importing the four modules no longer pulls requests / croniter / websockets into sys.modules. 369 targeted tests green post-rebase. |
||
|---|---|---|
| .. | ||
| scripts | ||
| __init__.py | ||
| blueprint_catalog.py | ||
| executions.py | ||
| jobs.py | ||
| lifecycle_guard.py | ||
| scheduler.py | ||
| scheduler_provider.py | ||
| suggestion_catalog.py | ||
| suggestions.py | ||