EvoScientist 0.0.1.dev3__py3-none-any.whl → 0.1.0rc1__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.
Files changed (108) hide show
  1. EvoScientist/EvoScientist.py +17 -49
  2. EvoScientist/backends.py +0 -26
  3. EvoScientist/cli.py +1109 -255
  4. EvoScientist/middleware.py +8 -61
  5. EvoScientist/stream/__init__.py +0 -25
  6. EvoScientist/stream/utils.py +16 -23
  7. EvoScientist/tools.py +0 -64
  8. evoscientist-0.1.0rc1.dist-info/METADATA +199 -0
  9. evoscientist-0.1.0rc1.dist-info/RECORD +21 -0
  10. evoscientist-0.1.0rc1.dist-info/entry_points.txt +2 -0
  11. EvoScientist/memory.py +0 -715
  12. EvoScientist/paths.py +0 -45
  13. EvoScientist/skills/accelerate/SKILL.md +0 -332
  14. EvoScientist/skills/accelerate/references/custom-plugins.md +0 -453
  15. EvoScientist/skills/accelerate/references/megatron-integration.md +0 -489
  16. EvoScientist/skills/accelerate/references/performance.md +0 -525
  17. EvoScientist/skills/bitsandbytes/SKILL.md +0 -411
  18. EvoScientist/skills/bitsandbytes/references/memory-optimization.md +0 -521
  19. EvoScientist/skills/bitsandbytes/references/qlora-training.md +0 -521
  20. EvoScientist/skills/bitsandbytes/references/quantization-formats.md +0 -447
  21. EvoScientist/skills/find-skills/SKILL.md +0 -133
  22. EvoScientist/skills/find-skills/scripts/install_skill.py +0 -211
  23. EvoScientist/skills/flash-attention/SKILL.md +0 -367
  24. EvoScientist/skills/flash-attention/references/benchmarks.md +0 -215
  25. EvoScientist/skills/flash-attention/references/transformers-integration.md +0 -293
  26. EvoScientist/skills/llama-cpp/SKILL.md +0 -258
  27. EvoScientist/skills/llama-cpp/references/optimization.md +0 -89
  28. EvoScientist/skills/llama-cpp/references/quantization.md +0 -213
  29. EvoScientist/skills/llama-cpp/references/server.md +0 -125
  30. EvoScientist/skills/lm-evaluation-harness/SKILL.md +0 -490
  31. EvoScientist/skills/lm-evaluation-harness/references/api-evaluation.md +0 -490
  32. EvoScientist/skills/lm-evaluation-harness/references/benchmark-guide.md +0 -488
  33. EvoScientist/skills/lm-evaluation-harness/references/custom-tasks.md +0 -602
  34. EvoScientist/skills/lm-evaluation-harness/references/distributed-eval.md +0 -519
  35. EvoScientist/skills/ml-paper-writing/SKILL.md +0 -937
  36. EvoScientist/skills/ml-paper-writing/references/checklists.md +0 -361
  37. EvoScientist/skills/ml-paper-writing/references/citation-workflow.md +0 -562
  38. EvoScientist/skills/ml-paper-writing/references/reviewer-guidelines.md +0 -367
  39. EvoScientist/skills/ml-paper-writing/references/sources.md +0 -159
  40. EvoScientist/skills/ml-paper-writing/references/writing-guide.md +0 -476
  41. EvoScientist/skills/ml-paper-writing/templates/README.md +0 -251
  42. EvoScientist/skills/ml-paper-writing/templates/aaai2026/README.md +0 -534
  43. EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-supp.tex +0 -144
  44. EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-template.tex +0 -952
  45. EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026.bib +0 -111
  46. EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026.bst +0 -1493
  47. EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026.sty +0 -315
  48. EvoScientist/skills/ml-paper-writing/templates/acl/README.md +0 -50
  49. EvoScientist/skills/ml-paper-writing/templates/acl/acl.sty +0 -312
  50. EvoScientist/skills/ml-paper-writing/templates/acl/acl_latex.tex +0 -377
  51. EvoScientist/skills/ml-paper-writing/templates/acl/acl_lualatex.tex +0 -101
  52. EvoScientist/skills/ml-paper-writing/templates/acl/acl_natbib.bst +0 -1940
  53. EvoScientist/skills/ml-paper-writing/templates/acl/anthology.bib.txt +0 -26
  54. EvoScientist/skills/ml-paper-writing/templates/acl/custom.bib +0 -70
  55. EvoScientist/skills/ml-paper-writing/templates/acl/formatting.md +0 -326
  56. EvoScientist/skills/ml-paper-writing/templates/colm2025/README.md +0 -3
  57. EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bib +0 -11
  58. EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bst +0 -1440
  59. EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.pdf +0 -0
  60. EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.sty +0 -218
  61. EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.tex +0 -305
  62. EvoScientist/skills/ml-paper-writing/templates/colm2025/fancyhdr.sty +0 -485
  63. EvoScientist/skills/ml-paper-writing/templates/colm2025/math_commands.tex +0 -508
  64. EvoScientist/skills/ml-paper-writing/templates/colm2025/natbib.sty +0 -1246
  65. EvoScientist/skills/ml-paper-writing/templates/iclr2026/fancyhdr.sty +0 -485
  66. EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bib +0 -24
  67. EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bst +0 -1440
  68. EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.pdf +0 -0
  69. EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.sty +0 -246
  70. EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.tex +0 -414
  71. EvoScientist/skills/ml-paper-writing/templates/iclr2026/math_commands.tex +0 -508
  72. EvoScientist/skills/ml-paper-writing/templates/iclr2026/natbib.sty +0 -1246
  73. EvoScientist/skills/ml-paper-writing/templates/icml2026/algorithm.sty +0 -79
  74. EvoScientist/skills/ml-paper-writing/templates/icml2026/algorithmic.sty +0 -201
  75. EvoScientist/skills/ml-paper-writing/templates/icml2026/example_paper.bib +0 -75
  76. EvoScientist/skills/ml-paper-writing/templates/icml2026/example_paper.pdf +0 -0
  77. EvoScientist/skills/ml-paper-writing/templates/icml2026/example_paper.tex +0 -662
  78. EvoScientist/skills/ml-paper-writing/templates/icml2026/fancyhdr.sty +0 -864
  79. EvoScientist/skills/ml-paper-writing/templates/icml2026/icml2026.bst +0 -1443
  80. EvoScientist/skills/ml-paper-writing/templates/icml2026/icml2026.sty +0 -767
  81. EvoScientist/skills/ml-paper-writing/templates/icml2026/icml_numpapers.pdf +0 -0
  82. EvoScientist/skills/ml-paper-writing/templates/neurips2025/Makefile +0 -36
  83. EvoScientist/skills/ml-paper-writing/templates/neurips2025/extra_pkgs.tex +0 -53
  84. EvoScientist/skills/ml-paper-writing/templates/neurips2025/main.tex +0 -38
  85. EvoScientist/skills/ml-paper-writing/templates/neurips2025/neurips.sty +0 -382
  86. EvoScientist/skills/peft/SKILL.md +0 -431
  87. EvoScientist/skills/peft/references/advanced-usage.md +0 -514
  88. EvoScientist/skills/peft/references/troubleshooting.md +0 -480
  89. EvoScientist/skills/ray-data/SKILL.md +0 -326
  90. EvoScientist/skills/ray-data/references/integration.md +0 -82
  91. EvoScientist/skills/ray-data/references/transformations.md +0 -83
  92. EvoScientist/skills/skill-creator/LICENSE.txt +0 -202
  93. EvoScientist/skills/skill-creator/SKILL.md +0 -356
  94. EvoScientist/skills/skill-creator/references/output-patterns.md +0 -82
  95. EvoScientist/skills/skill-creator/references/workflows.md +0 -28
  96. EvoScientist/skills/skill-creator/scripts/init_skill.py +0 -303
  97. EvoScientist/skills/skill-creator/scripts/package_skill.py +0 -110
  98. EvoScientist/skills/skill-creator/scripts/quick_validate.py +0 -95
  99. EvoScientist/skills_manager.py +0 -392
  100. EvoScientist/stream/display.py +0 -604
  101. EvoScientist/stream/events.py +0 -415
  102. EvoScientist/stream/state.py +0 -343
  103. evoscientist-0.0.1.dev3.dist-info/METADATA +0 -321
  104. evoscientist-0.0.1.dev3.dist-info/RECORD +0 -113
  105. evoscientist-0.0.1.dev3.dist-info/entry_points.txt +0 -5
  106. {evoscientist-0.0.1.dev3.dist-info → evoscientist-0.1.0rc1.dist-info}/WHEEL +0 -0
  107. {evoscientist-0.0.1.dev3.dist-info → evoscientist-0.1.0rc1.dist-info}/licenses/LICENSE +0 -0
  108. {evoscientist-0.0.1.dev3.dist-info → evoscientist-0.1.0rc1.dist-info}/top_level.txt +0 -0
@@ -21,17 +21,11 @@ from deepagents import create_deep_agent
21
21
  from deepagents.backends import FilesystemBackend, CompositeBackend
22
22
  from langchain.chat_models import init_chat_model
23
23
 
24
- from .backends import CustomSandboxBackend, MergedReadOnlyBackend
25
- from .middleware import create_skills_middleware, create_memory_middleware
24
+ from .backends import CustomSandboxBackend, ReadOnlyFilesystemBackend
25
+ from .middleware import create_skills_middleware
26
26
  from .prompts import RESEARCHER_INSTRUCTIONS, get_system_prompt
27
27
  from .utils import load_subagents
28
- from .tools import tavily_search, think_tool, skill_manager
29
- from .paths import (
30
- ensure_dirs,
31
- default_workspace_dir,
32
- MEMORY_DIR as _MEMORY_DIR_PATH,
33
- USER_SKILLS_DIR as _USER_SKILLS_DIR_PATH,
34
- )
28
+ from .tools import tavily_search, think_tool
35
29
 
36
30
  # =============================================================================
37
31
  # Configuration
@@ -45,11 +39,8 @@ MAX_CONCURRENT = 3 # Max parallel sub-agents
45
39
  MAX_ITERATIONS = 3 # Max delegation rounds
46
40
 
47
41
  # Workspace settings
48
- ensure_dirs()
49
- WORKSPACE_DIR = str(default_workspace_dir())
50
- MEMORY_DIR = str(_MEMORY_DIR_PATH) # Shared across sessions (not per-session)
51
- SKILLS_DIR = str(Path(__file__).parent / "skills")
52
- USER_SKILLS_DIR = str(_USER_SKILLS_DIR_PATH)
42
+ WORKSPACE_DIR = "./workspace/"
43
+ SKILLS_DIR = "./skills/"
53
44
  SUBAGENTS_CONFIG = Path(__file__).parent / "subagent.yaml"
54
45
 
55
46
  # =============================================================================
@@ -85,25 +76,16 @@ else:
85
76
  virtual_mode=True,
86
77
  )
87
78
 
88
- # Skills backend: merge user-installed (./skills/) and system (package) skills
89
- _skills_backend = MergedReadOnlyBackend(
90
- primary_dir=USER_SKILLS_DIR, # user-installed, takes priority
91
- secondary_dir=SKILLS_DIR, # package built-in, fallback
92
- )
93
-
94
- # Memory backend: persistent filesystem for long-term memory (shared across sessions)
95
- _memory_backend = FilesystemBackend(
96
- root_dir=MEMORY_DIR,
79
+ # Skills backend: read-only access to ./skills/
80
+ _skills_backend = ReadOnlyFilesystemBackend(
81
+ root_dir=SKILLS_DIR,
97
82
  virtual_mode=True,
98
83
  )
99
84
 
100
- # Composite backend: workspace as default, skills and memory mounted
85
+ # Composite backend: workspace as default, skills mounted at /skills/
101
86
  backend = CompositeBackend(
102
87
  default=_workspace_backend,
103
- routes={
104
- "/skills/": _skills_backend,
105
- "/memory/": _memory_backend,
106
- },
88
+ routes={"/skills/": _skills_backend},
107
89
  )
108
90
 
109
91
  tool_registry = {
@@ -125,13 +107,10 @@ subagents = load_subagents(
125
107
  _AGENT_KWARGS = dict(
126
108
  name="EvoScientist",
127
109
  model=chat_model,
128
- tools=[think_tool, skill_manager],
110
+ tools=[think_tool],
129
111
  backend=backend,
130
112
  subagents=subagents,
131
- middleware=[
132
- create_memory_middleware(MEMORY_DIR, extraction_model=chat_model),
133
- create_skills_middleware(SKILLS_DIR, user_skills_dir=USER_SKILLS_DIR),
134
- ],
113
+ middleware=[create_skills_middleware(SKILLS_DIR, WORKSPACE_DIR)],
135
114
  system_prompt=SYSTEM_PROMPT,
136
115
  )
137
116
 
@@ -145,7 +124,7 @@ def create_cli_agent(workspace_dir: str | None = None):
145
124
  Args:
146
125
  workspace_dir: Optional per-session workspace directory. If provided,
147
126
  creates a fresh backend rooted at this path. If None, uses the
148
- module-level default backend (./workspace).
127
+ module-level default backend (./workspace/).
149
128
  """
150
129
  from langgraph.checkpoint.memory import InMemorySaver # type: ignore[import-untyped]
151
130
 
@@ -155,26 +134,15 @@ def create_cli_agent(workspace_dir: str | None = None):
155
134
  virtual_mode=True,
156
135
  timeout=300,
157
136
  )
158
- sk_backend = MergedReadOnlyBackend(
159
- primary_dir=USER_SKILLS_DIR,
160
- secondary_dir=SKILLS_DIR,
161
- )
162
- # Memory always uses SHARED directory (not per-session) for cross-session persistence
163
- mem_backend = FilesystemBackend(
164
- root_dir=MEMORY_DIR,
137
+ sk_backend = ReadOnlyFilesystemBackend(
138
+ root_dir=SKILLS_DIR,
165
139
  virtual_mode=True,
166
140
  )
167
141
  be = CompositeBackend(
168
142
  default=ws_backend,
169
- routes={
170
- "/skills/": sk_backend,
171
- "/memory/": mem_backend,
172
- },
143
+ routes={"/skills/": sk_backend},
173
144
  )
174
- mw = [
175
- create_memory_middleware(MEMORY_DIR, extraction_model=chat_model),
176
- create_skills_middleware(SKILLS_DIR, user_skills_dir=USER_SKILLS_DIR),
177
- ]
145
+ mw = [create_skills_middleware(SKILLS_DIR, workspace_dir)]
178
146
  kwargs = dict(
179
147
  _AGENT_KWARGS,
180
148
  backend=be,
EvoScientist/backends.py CHANGED
@@ -9,8 +9,6 @@ from deepagents.backends import FilesystemBackend
9
9
  from deepagents.backends.filesystem import WriteResult, EditResult
10
10
  from deepagents.backends.protocol import (
11
11
  ExecuteResponse,
12
- FileDownloadResponse,
13
- FileUploadResponse,
14
12
  SandboxBackendProtocol,
15
13
  )
16
14
 
@@ -225,30 +223,6 @@ class MergedReadOnlyBackend:
225
223
  async def aedit(self, file_path: str, old_string: str, new_string: str, replace_all: bool = False) -> EditResult:
226
224
  return self.edit(file_path, old_string, new_string, replace_all)
227
225
 
228
- # -- download / upload (required by BackendProtocol) --
229
-
230
- def download_files(self, paths: list[str]) -> list[FileDownloadResponse]:
231
- """Download files, trying primary then secondary."""
232
- responses: list[FileDownloadResponse] = []
233
- for path in paths:
234
- resp = self._primary.download_files([path])[0]
235
- if resp.error is not None:
236
- resp = self._secondary.download_files([path])[0]
237
- responses.append(resp)
238
- return responses
239
-
240
- async def adownload_files(self, paths: list[str]) -> list[FileDownloadResponse]:
241
- return self.download_files(paths)
242
-
243
- def upload_files(self, files: list[tuple[str, bytes]]) -> list[FileUploadResponse]:
244
- return [
245
- FileUploadResponse(path=path, error="permission_denied")
246
- for path, _ in files
247
- ]
248
-
249
- async def aupload_files(self, files: list[tuple[str, bytes]]) -> list[FileUploadResponse]:
250
- return self.upload_files(files)
251
-
252
226
 
253
227
  class CustomSandboxBackend(FilesystemBackend, SandboxBackendProtocol):
254
228
  """