4c338ed914
Post-merge validation fixes (upstream v0.3.0 + Ai4Sci fork): - llm/patches.py: restore the two module-level patch calls the merge dropped (_patch_openai_empty_sse_keepalive, _patch_deepagents_extracted_document_text) and make _is_ccproxy_codex accept an explicit base_url/api_key so the invocation plan can classify an endpoint without mutating the process env. - llm/models.py: an explicit per-call plan now wins over EVOSCIENTIST_USE_RESPONSES_API (env is only a default), an explicit caller `reasoning` block survives an explicit use_responses_api=False, and the third-party (openrouter) default effort stays the fork's fixed `medium`. - EvoScientist.py: sub-agent stacks pass NO_OP_SINK as `events` instead of None. - middleware/error_normalization.py: platform-generated diagnostics (ModelOutputTruncatedError) keep their actionable text while provider SDK errors still get the canned redacted message. - pyproject.toml: hold google-genai 1.x (langchain-google-genai>=4.3.7,<4.4) because llm/gemini_interactions.py drives the 1.x Interactions API; this is also what deepagents 0.7.13 requires. - config/settings.py: restore upstream's use_responses_api config field. `reasoning_effort` stays deleted on purpose — Ai4Sci keeps reasoning an invocation-plan parameter, never a deployment-env override. - tests: align upstream tests that encode replaced behaviour (ccproxy responses-api context, reasoning-effort-overrides-env, fingerprint coverage) with the fork's contracts.