e2ff613424
- Extract shared buildContextInjectionTask/injectContextIntoUserMessage on AgentCompiler and reuse across both compilers (3 duplicated sites); the swarm loop now honors the configured context size limits instead of hardcoded defaults, and the user-message rewrite uses a ListIterator instead of index bookkeeping. - Extract parentHandsOffOnToolOf predicate for the swarm turn-skip check. - Join: move the agent output-shaping explanation onto prepareAgentOutput's javadoc and return unmodifiable maps for the constructed shapes (LinkedHashMap kept over Map.of — tool outputs may contain nulls; the pass-through branch stays live to preserve default JOIN behavior).