helpers/parallel_tools.py.dox.md
parallel_tools.py because this directory is intentionally flat.parallel_tools.py owns the runtime implementation.parallel_tools.py.dox.md owns durable notes about responsibilities, contracts, side effects, and verification for that implementation.NormalizedToolCallParallelJobstart_parallel_jobs(...)await_parallel_jobs(...)cancel_parallel_jobs(...)build_parallel_jobs_extras(...)format_parallel_results(...)tool_name and tool_args are present; non-contract planning fields such as thoughts or headline are ignored.tool_calls should be an array, but normalization also accepts a valid JSON string encoding of that array to recover provider/model stringification.document_query and response inside parallel: document parsing and Q&A must run sequentially, while response must remain top-level so it can end the message loop.call_subordinate jobs first enforce the actual calling agent's delegation policy, then call the same creation and execution functions as direct delegation in tools/call_subordinate.py; this helper does not construct or prompt a second kind of subordinate.parent.number + 1 child agents. Their job snapshots expose stable context_id values that direct or parallel reset=false calls can continue after success or failure.parallel.DeferredTask instances so stopping the ancestor also stops its descendants.parallel.get_log_object() output when available, preserving special log rendering (for example: code_execution_tool uses code_exe, wait uses progress, MCP tools use mcp, and regular tools use tool).before_execution() cannot create a second generic worker log or lose the native badge type.wait=True starts jobs and awaits them before returning until all requested jobs finish or the wait timeout is reached; the timeout stops waiting but does not cancel running jobs.collect returns already-finished job results without waiting; await waits for requested job IDs.DeferredTask when cancellation is possible.tools/parallel.py, prompt instructions, and tests.No child DOX files.