Repository navigation
v0.4.6
[0.4.6] - 2026-11-04
Added
Async API: Agent.aexecute_task, aexecute_task_with_retry, astream_task and arun_loop; AgentManager.aassign_task, agather_tasks (concurrent across agents, results in order, optional return_exceptions), acollaborative_task and arun_workflow; AgentProxy.aexecute_task and astream_task. They run the existing synchronous code on worker threads (maki/aio.py), so memory, tool policies and callbacks behave as before; one agent still runs one task at a time and different agents overlap. Closing astream_task early stops the stream and frees the agent. Context variables (trace ids, logging context) reach the worker thread, and calls queued on one busy agent wait on the event loop rather than each holding an executor thread, so they cannot starve other agents
429 handling: the HTTP backends (Connector and AsyncConnector) retry a 429 up to MAKI_RATE_LIMIT_RETRIES times (default 2), waiting the server's Retry-After or a 1s/2s/4s backoff, and raise at once when Retry-After exceeds MAKI_RATE_LIMIT_MAX_WAIT (default 30s). MakiAPIError.retry_after carries the server's value for every backend (SDK ones included), and FallbackBackend keeps a rate-limited backend out of rotation at least that long. Retry-After accepts seconds or an HTTP date (a zone-less date is read as UTC). A request whose body is a stream or file is never replayed, so it is not retried
AgentManager.add_agent() accepts stateful, allow_dangerous_tools, memory, tool_policy and callbacks (keyword-only) and passes them to Agent, so a manager-created agent no longer needs them set afterwards