EvoScientist 0.0.1.dev3__py3-none-any.whl → 0.0.1.dev4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
EvoScientist/paths.py CHANGED
@@ -18,9 +18,8 @@ def _env_path(key: str) -> Path | None:
18
18
  return _expand(value)
19
19
 
20
20
 
21
- STATE_ROOT = _env_path("EVOSCIENTIST_HOME") or (Path.cwd() / ".evoscientist")
22
-
23
- WORKSPACE_ROOT = _env_path("EVOSCIENTIST_WORKSPACE_DIR") or (STATE_ROOT / "workspace")
21
+ # Workspace root: directly under cwd (no hidden .evoscientist layer)
22
+ WORKSPACE_ROOT = _env_path("EVOSCIENTIST_WORKSPACE_DIR") or (Path.cwd() / "workspace")
24
23
 
25
24
  RUNS_DIR = _env_path("EVOSCIENTIST_RUNS_DIR") or (WORKSPACE_ROOT / "runs")
26
25
  MEMORY_DIR = _env_path("EVOSCIENTIST_MEMORY_DIR") or (WORKSPACE_ROOT / "memory")
@@ -1,7 +1,7 @@
1
1
  """Skill installation and management for EvoScientist.
2
2
 
3
3
  This module provides functions for installing, listing, and uninstalling user skills.
4
- Skills are installed to USER_SKILLS_DIR (~/.evoscientist/workspace/skills/).
4
+ Skills are installed to USER_SKILLS_DIR (./workspace/skills/).
5
5
 
6
6
  Supported installation sources:
7
7
  - Local directory paths
@@ -34,7 +34,6 @@ import subprocess
34
34
  import tempfile
35
35
  from dataclasses import dataclass
36
36
  from pathlib import Path
37
- from typing import Iterator
38
37
 
39
38
  import yaml
40
39
 
@@ -194,7 +194,7 @@ def _render_subagent_section(sa: 'SubAgentState', compact: bool = False) -> list
194
194
  pending.append(tc)
195
195
 
196
196
  succeeded = sum(1 for _, tr in completed if tr.get("success", True))
197
- failed = len(completed) - succeeded
197
+ _ = len(completed) - succeeded # failed count, unused for now
198
198
 
199
199
  # Build display name
200
200
  display_name = f"Cooking with {sa.name}"
EvoScientist/tools.py CHANGED
@@ -16,7 +16,16 @@ from typing_extensions import Annotated
16
16
 
17
17
  load_dotenv(override=True)
18
18
 
19
- tavily_client = TavilyClient()
19
+ # Lazy initialization - only create client when needed
20
+ _tavily_client = None
21
+
22
+
23
+ def _get_tavily_client() -> TavilyClient:
24
+ """Get or create the Tavily client (lazy initialization)."""
25
+ global _tavily_client
26
+ if _tavily_client is None:
27
+ _tavily_client = TavilyClient()
28
+ return _tavily_client
20
29
 
21
30
 
22
31
  async def fetch_webpage_content(url: str, timeout: float = 10.0) -> str:
@@ -67,7 +76,7 @@ async def tavily_search(
67
76
  """
68
77
 
69
78
  def _sync_search() -> dict:
70
- return tavily_client.search(
79
+ return _get_tavily_client().search(
71
80
  query,
72
81
  max_results=max_results,
73
82
  topic=topic,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: EvoScientist
3
- Version: 0.0.1.dev3
3
+ Version: 0.0.1.dev4
4
4
  Summary: EvoScientist: Towards Self-Evolving AI Scientists for End-to-End Scientific Discovery
5
5
  Author: Xi Zhang
6
6
  Maintainer: Xi Zhang
@@ -16,11 +16,13 @@ License-File: LICENSE
16
16
  Requires-Dist: deepagents>=0.3.6
17
17
  Requires-Dist: langchain>=1.2
18
18
  Requires-Dist: langchain-anthropic>=1.3
19
- Requires-Dist: anthropic>=0.76
19
+ Requires-Dist: langchain-openai>=0.3
20
+ Requires-Dist: langchain-nvidia-ai-endpoints>=0.3
20
21
  Requires-Dist: tavily-python>=0.7
21
22
  Requires-Dist: pyyaml>=6.0
22
23
  Requires-Dist: rich>=14.0
23
24
  Requires-Dist: prompt-toolkit>=3.0
25
+ Requires-Dist: questionary>=2.0.1
24
26
  Requires-Dist: typer>=0.12
25
27
  Requires-Dist: python-dotenv>=1.0
26
28
  Requires-Dist: langgraph-cli[inmem]>=0.4
@@ -29,6 +31,8 @@ Requires-Dist: markdownify>=0.14
29
31
  Provides-Extra: dev
30
32
  Requires-Dist: pytest>=8.0; extra == "dev"
31
33
  Requires-Dist: pytest-cov>=5.0; extra == "dev"
34
+ Requires-Dist: ruff>=0.5; extra == "dev"
35
+ Requires-Dist: build>=1.0; extra == "dev"
32
36
  Dynamic: license-file
33
37
 
34
38
  <!-- Add logo here -->
@@ -61,6 +65,7 @@ Dynamic: license-file
61
65
 
62
66
 
63
67
  ## 📖 Contents
68
+ - [🤖 Supported Models](#-supported-models)
64
69
  - [⛏️ Installation](#️-installation)
65
70
  - [🔑 API Key Configuration](#-api-key-configuration)
66
71
  - [⚡ Quick Start](#-quick-start)
@@ -73,6 +78,24 @@ Dynamic: license-file
73
78
  - [📦 Codebase Contributors](#-codebase-contributors)
74
79
  - [📜 License](#-license)
75
80
 
81
+ ## 🤖 Supported Models
82
+
83
+ | Provider | Short Name | Model ID |
84
+ |----------|-----------|----------|
85
+ | Anthropic | `claude-sonnet-4-5` | `claude-sonnet-4-5-20250929` |
86
+ | Anthropic | `claude-opus-4-5` | `claude-opus-4-5-20251101` |
87
+ | Anthropic | `claude-3-5-sonnet` | `claude-3-5-sonnet-20241022` |
88
+ | Anthropic | `claude-3-5-haiku` | `claude-3-5-haiku-20241022` |
89
+ | OpenAI | `gpt-4o` | `gpt-4o` |
90
+ | OpenAI | `gpt-4o-mini` | `gpt-4o-mini` |
91
+ | OpenAI | `o1` | `o1` |
92
+ | OpenAI | `o1-mini` | `o1-mini` |
93
+ | NVIDIA | `glm4.7` | `z-ai/glm4.7` |
94
+ | NVIDIA | `deepseek-v3.1` | `deepseek-ai/deepseek-v3.1-terminus` |
95
+ | NVIDIA | `nemotron-nano` | `nvidia/nemotron-3-nano-30b-a3b` |
96
+
97
+ You can also use any full model ID directly — the provider will be inferred automatically.
98
+
76
99
  ## ⛏️ Installation
77
100
 
78
101
  > [!TIP]
@@ -110,18 +133,30 @@ uv pip install -e .
110
133
 
111
134
  ## 🔑 API Key Configuration
112
135
 
113
- EvoScientist requires API keys for LLM inference and web search. You can configure them in two ways:
136
+ EvoScientist requires API keys for LLM inference and web search. You can configure them in three ways:
137
+
138
+ ### Option A: Interactive Setup Wizard (Recommended)
139
+
140
+ ```Shell
141
+ EvoSci onboard
142
+ ```
143
+
144
+ The wizard guides you through selecting a provider, entering API keys, choosing a model, and configuring workspace settings. Keys are validated automatically.
114
145
 
115
- ### Option A: Environment Variables (Global)
146
+ ### Option B: Environment Variables (Global)
116
147
 
117
148
  Set keys directly in your terminal session. Add these to your shell profile (`~/.bashrc`, `~/.zshrc`, etc.) to persist across sessions:
118
149
 
119
150
  ```Shell
120
151
  export ANTHROPIC_API_KEY="your_anthropic_api_key_here"
121
152
  export TAVILY_API_KEY="your_tavily_api_key_here"
153
+
154
+ # Optional: OpenAI or NVIDIA provider
155
+ export OPENAI_API_KEY="your_openai_api_key_here"
156
+ export NVIDIA_API_KEY="your_nvidia_api_key_here"
122
157
  ```
123
158
 
124
- ### Option B: `.env` File (Project-level)
159
+ ### Option C: `.env` File (Project-level)
125
160
 
126
161
  Create a `.env` file in the project root. This keeps keys scoped to the project and out of your shell history:
127
162
 
@@ -141,7 +176,9 @@ TAVILY_API_KEY=your_tavily_api_key_here
141
176
 
142
177
  | Key | Required | Description |
143
178
  |-----|----------|-------------|
144
- | `ANTHROPIC_API_KEY` | Yes | Anthropic API key for Claude ([console.anthropic.com](https://console.anthropic.com/)) |
179
+ | `ANTHROPIC_API_KEY` | For Anthropic | Anthropic API key for Claude ([console.anthropic.com](https://console.anthropic.com/)) |
180
+ | `OPENAI_API_KEY` | For OpenAI | OpenAI API key for GPT models ([platform.openai.com](https://platform.openai.com/)) |
181
+ | `NVIDIA_API_KEY` | For NVIDIA | NVIDIA API key for NIM models ([build.nvidia.com](https://build.nvidia.com/)) |
145
182
  | `TAVILY_API_KEY` | Yes | Tavily API key for web search ([app.tavily.com](https://app.tavily.com/)) |
146
183
 
147
184
  ## ⚡ Quick Start
@@ -161,10 +198,24 @@ EvoSci # or EvoScientist
161
198
  **Optional arguments:**
162
199
 
163
200
  ```
201
+ --mode <mode> Workspace mode: 'daemon' (persistent) or 'run' (isolated per-session)
164
202
  --workdir <path> Override workspace directory for this session
165
203
  --use-cwd Use current working directory as workspace
166
204
  --thread-id <id> Resume a conversation thread
167
205
  --no-thinking Disable thinking display
206
+ -p, --prompt <q> Single-shot mode: execute query and exit
207
+ ```
208
+
209
+ **Configuration commands:**
210
+
211
+ ```Shell
212
+ EvoSci onboard # Interactive setup wizard
213
+ EvoSci onboard --skip-validation # Skip API key validation
214
+ EvoSci config # List all configuration values
215
+ EvoSci config get <key> # Get a single value
216
+ EvoSci config set <key> <val> # Set a single value
217
+ EvoSci config reset --yes # Reset to defaults
218
+ EvoSci config path # Show config file path
168
219
  ```
169
220
 
170
221
  **Interactive Commands:**
@@ -193,30 +244,25 @@ EvoSci # or EvoScientist
193
244
 
194
245
  ### Runtime Directories
195
246
 
196
- By default, the **workspace** is created under a hidden directory in the current
197
- project directory:
247
+ By default, the **workspace** is created under the current directory:
198
248
 
199
249
  ```
200
- ./.evoscientist/workspace/
201
- memory/ # shared MEMORY.md
250
+ ./workspace/
251
+ memory/ # shared MEMORY.md (persistent across sessions)
202
252
  skills/ # user-installed skills
203
- runs/ # per-thread workspaces
253
+ runs/ # per-session workspaces
204
254
  ```
205
255
 
206
256
  You can force workspace to be the current directory via `--use-cwd`.
207
257
 
208
- If you set `EVOSCIENTIST_HOME`, EvoScientist will place `workspace/` under that
209
- directory instead of the project root:
210
-
211
- Example with `EVOSCIENTIST_HOME=~/.evoscientist`:
258
+ Override individual paths via environment variables:
212
259
 
213
- ```
214
- ~/.evoscientist/
215
- workspace/
216
- memory/
217
- skills/
218
- runs/
219
- ```
260
+ | Variable | Default | Description |
261
+ |----------|---------|-------------|
262
+ | `EVOSCIENTIST_WORKSPACE_DIR` | `./workspace` | Root workspace directory |
263
+ | `EVOSCIENTIST_RUNS_DIR` | `./workspace/runs` | Per-session run directories |
264
+ | `EVOSCIENTIST_MEMORY_DIR` | `./workspace/memory` | Shared memory storage |
265
+ | `EVOSCIENTIST_SKILLS_DIR` | `./workspace/skills` | User-installed skills |
220
266
 
221
267
  ### Script Inference
222
268
  ```python
@@ -1,16 +1,20 @@
1
- EvoScientist/EvoScientist.py,sha256=q5sB69kCLP1EwLLwGZFv_dikSfHoVOXO7jcDJ5BIKoM,5877
2
- EvoScientist/__init__.py,sha256=yj4YJUPldtq4xx8geadIoZ1n-BmgsM2Z_S2W8ld9S1k,702
1
+ EvoScientist/EvoScientist.py,sha256=qhiCOOZvH6cmjLiKRMvfr74xJM7x-dZrrRoX9xrfLtQ,6053
2
+ EvoScientist/__init__.py,sha256=BN8yi3iCIaq2gNfKORrI9OvMq49a2LrYWgEqW86vYLw,1120
3
3
  EvoScientist/__main__.py,sha256=P5USQ_BiiY0TBhtajGMuX5AMXlQ5joz1kvljHeacqmA,91
4
4
  EvoScientist/backends.py,sha256=3fIYRdOecL-KZx2hSNolsLO-2_rMzey-NpVMDMN701U,13355
5
- EvoScientist/cli.py,sha256=Xn8gXM9LPFakHvDME0em_7sVTkJPwMFSCkEQu0ilM5g,17028
5
+ EvoScientist/cli.py,sha256=5y_yTBhLnXxI5JVFawcYbsbDEWMED_t2-X4LVbT24kY,25978
6
+ EvoScientist/config.py,sha256=rXD_qlrTxP3HLH7H6DxvqKP4WwymyrzRyS8665igd6k,8649
6
7
  EvoScientist/memory.py,sha256=ZgITkiLezjAeo9z12UWRZurE1hZU7ehF-SAKrchPIEs,26475
7
8
  EvoScientist/middleware.py,sha256=hBHov8wFhe-AS-C84BFRDgikl5q8Xb9AMU4FfNxs9Jg,2620
8
- EvoScientist/paths.py,sha256=cXfSGzrNbZsHqcQaTUziFCN9xc1PQkxs9KkYa1BJyps,1356
9
+ EvoScientist/onboard.py,sha256=x6THI4ryTMTBQBb90JRFhcZmPsc970yh77_VCuNqwm8,22200
10
+ EvoScientist/paths.py,sha256=r3u632RJXfl8KPVhWBwVKPx9zFbvj1CZCIf7NeFBja4,1346
9
11
  EvoScientist/prompts.py,sha256=ni-qHoEoM703xtfD4J3IlvwAWPcW8gcNiCBVjRJoy3g,10692
10
- EvoScientist/skills_manager.py,sha256=TTex405Xzcu1uFoeGk8aCcOw3zgAHzSV5RPFcpputCw,12247
12
+ EvoScientist/skills_manager.py,sha256=r1ZCnZkFij-uRwj09FmT67VFR5eRgd3ynzKWmykQJeI,12205
11
13
  EvoScientist/subagent.yaml,sha256=yoFlMJWitLlYuOe4_44EPG6vjpNP_txHBlqr-kNX2GM,6130
12
- EvoScientist/tools.py,sha256=dNXJuoe9rRWKNAl5TfEPkN-HeXyZxRx4lOc9x6Yay8I,6487
14
+ EvoScientist/tools.py,sha256=7rCq3Sy74qAKEKnttvy9H7-LB8moXeYK0h7xRJnZJGk,6772
13
15
  EvoScientist/utils.py,sha256=GuWMRMkPHYgUOtoPZA0ErIt4FUBE4NMkz_OZluxYyRo,6801
16
+ EvoScientist/llm/__init__.py,sha256=A3nQPKGP6qqh2K72_NZlUozNNwfD4jcEMyBerne9IGc,363
17
+ EvoScientist/llm/models.py,sha256=3AhHG__OLbnQlgB3kIM3Ejf9kU2Cv6rDzc7uT5eKzYk,3335
14
18
  EvoScientist/skills/accelerate/SKILL.md,sha256=Ju_xLlGW3bZBWQO_8FWThkP155jE2atq9Ww0Zn8XwEs,8328
15
19
  EvoScientist/skills/accelerate/references/custom-plugins.md,sha256=Gy8c9dcKFV93ksrRKkZr5DFbeH_iHgGzbTK_N0aTwCA,11781
16
20
  EvoScientist/skills/accelerate/references/megatron-integration.md,sha256=ad7cw8eMGX3vqGUxQSVBuWpiQJDAr9eHqWfPhlEXJz0,11252
@@ -98,16 +102,16 @@ EvoScientist/skills/skill-creator/scripts/init_skill.py,sha256=C7olC5TKpMsrKLFdr
98
102
  EvoScientist/skills/skill-creator/scripts/package_skill.py,sha256=sx-8s-Ni1cUwjpklX_joPN46UT4GNpU5ZKZISUyhCTE,3288
99
103
  EvoScientist/skills/skill-creator/scripts/quick_validate.py,sha256=OBqy09H9XsMjcQFkEwY-_5nQ1IxBV0cIXGFRfpZ9u4c,3523
100
104
  EvoScientist/stream/__init__.py,sha256=_mdc88i75D3qlfuIBWpNm4-W5xMYIvM39vERgb53Bkk,1933
101
- EvoScientist/stream/display.py,sha256=esTQaoU_sLLKr-GuXYc6GD4X2S0QP-qvPdQ11bUCnRo,22538
105
+ EvoScientist/stream/display.py,sha256=jCyohjfulwgyV-gOa5g5HXsepNLNLjdMdfQE9bt1-ZA,22565
102
106
  EvoScientist/stream/emitter.py,sha256=zmdn8vIXNgkgoWRtanrMtPN2GlsHmZtdFmoqCry3o_o,2978
103
107
  EvoScientist/stream/events.py,sha256=dSnHsDGl_HEBbfmQYv40YZVR-RDZPLZFsjlwmO46ch4,17251
104
108
  EvoScientist/stream/formatter.py,sha256=vyv89NGoTzxjsWt0teBXX38MZzFLhzMDBUcIH6-slDo,5532
105
109
  EvoScientist/stream/state.py,sha256=RX7JOBJLYXu7tdtDx71QR2U8JDHHTsB4GM877z9UKLM,12961
106
110
  EvoScientist/stream/tracker.py,sha256=cVWmiTCiwzOh84I7sAXXfgr_HXxOCCCzTvli-XJhthQ,3670
107
111
  EvoScientist/stream/utils.py,sha256=yQXhPIzOYzpNUUyDvkQDv1K-Yo0ePkXMtU7fHhRoG64,7718
108
- evoscientist-0.0.1.dev3.dist-info/licenses/LICENSE,sha256=NsYFy5JSm90lmXcPNQuthVTCVaVcbT4XZ9h5HpAoGIo,1069
109
- evoscientist-0.0.1.dev3.dist-info/METADATA,sha256=WLYDPRWew36WSil81mwy5310BokbaBB8W33vQ_DvFe8,11537
110
- evoscientist-0.0.1.dev3.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
111
- evoscientist-0.0.1.dev3.dist-info/entry_points.txt,sha256=mGxz9_-jfGhwkdiiVGTQ9IQEhzLixWJoPNU39_boWMM,154
112
- evoscientist-0.0.1.dev3.dist-info/top_level.txt,sha256=XBZouSd9lQfNn0Fus6jQb9nqdXzAbKyzh987Jt3A2-A,13
113
- evoscientist-0.0.1.dev3.dist-info/RECORD,,
112
+ evoscientist-0.0.1.dev4.dist-info/licenses/LICENSE,sha256=NsYFy5JSm90lmXcPNQuthVTCVaVcbT4XZ9h5HpAoGIo,1069
113
+ evoscientist-0.0.1.dev4.dist-info/METADATA,sha256=Hi6nET3VH8m2uv_JIcCNrQZJz4jL1OfbMd6jM5tGEY0,13901
114
+ evoscientist-0.0.1.dev4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
115
+ evoscientist-0.0.1.dev4.dist-info/entry_points.txt,sha256=mGxz9_-jfGhwkdiiVGTQ9IQEhzLixWJoPNU39_boWMM,154
116
+ evoscientist-0.0.1.dev4.dist-info/top_level.txt,sha256=XBZouSd9lQfNn0Fus6jQb9nqdXzAbKyzh987Jt3A2-A,13
117
+ evoscientist-0.0.1.dev4.dist-info/RECORD,,