470cf75722
Merged upstream/main (418abca, release v0.3.0) into our fork on a
dedicated branch. 21 conflicting files resolved; main worktree untouched.
Resolution policy and key decisions:
- Keep Ai4Sci runtime endpoints, durable dispatch, workspace scopes and
the HITL/DynamicReview approval chain (approval path is product-critical).
- Adopt upstream model registry (llm/registry.py): our 136 model entries
are a strict subset of upstream's 180, so dropping our inline table
loses nothing and gains 44 new models.
- Adopt upstream native EvoChatDeepSeek; drop our obsolete
_patch_deepseek_reasoning_passback monkey patch.
- Keep our six patches.py additions, ported onto upstream's new
_OpenAICompatContent class: stable tool-call ids, tool-history
sanitization, drop_reasoning_metadata, empty-SSE keepalive,
extracted-document-text patch, _has_assistant_tool_protocol.
- Keep our skill-budget middleware path (skills=None) instead of passing
skills through, to avoid double loading.
- Keep sanitized error labels (_safe_error_label) while adopting
upstream's injected MiddlewareEventSink for fallback narration.
- Keep port 3076 and the LANGGRAPH_SERVER_URL override; adopt upstream's
host/probe-host handling and CONFIG_DRIFT_SINCE_LAUNCH.
- Adopt upstream dependency stack: deepagents 0.7.6, langchain-quickjs
0.3.7, langgraph-api 0.14; keep our extra deps (rfc8785, pillow,
firecrawl-anydoc, nest-asyncio).
- Align call sites with upstream APIs: create_tool_selector_middleware
now takes events= instead of track_stream_selection=.
🍪 Examples & Recipes
Customize your EvoScientist — harness it, make it yours.
| Example | Description |
|---|---|
| Survey literature | Run EvoScientist with the paper-navigator skill to produce a bilingual, conference-grade literature survey |
| Recipe | Description |
|---|---|
| macOS 24/7 Deployment | Run EvoScientist as an always-on service on macOS with OAuth + Telegram + STT |
| Subscription OAuth (Claude + ChatGPT/Codex) | Use Claude and GPT models through your existing subscriptions — no API keys, including Codex-route pitfalls & fixes |
| Guide | Description |
|---|---|
stream-json output protocol |
Line-delimited JSON event stream (--output-format stream-json) for driving EvoScientist headlessly from SDK / programmatic clients |
Contributing a Recipe
See the Contributing Guide for general guidelines. When adding a new recipe:
- Use
EvoSciCLI — recipes should work withEvoSci serve,EvoSci config, orEvoSci onboard - Pin dependencies — specify EvoScientist extras (e.g.,
pip install -e ".[telegram,stt]") - Include a README with clear setup and usage instructions
- Keep it focused — each recipe should demonstrate one deployment or integration scenario
- Add to the table above so others can discover it