@researai/deepscientist 1.5.7 → 1.5.9

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 (156) hide show
  1. package/LICENSE +186 -21
  2. package/README.md +8 -4
  3. package/bin/ds.js +224 -9
  4. package/docs/en/00_QUICK_START.md +2 -2
  5. package/docs/en/07_MEMORY_AND_MCP.md +40 -3
  6. package/docs/en/99_ACKNOWLEDGEMENTS.md +1 -0
  7. package/docs/zh/00_QUICK_START.md +2 -2
  8. package/docs/zh/07_MEMORY_AND_MCP.md +40 -3
  9. package/docs/zh/99_ACKNOWLEDGEMENTS.md +1 -0
  10. package/install.sh +34 -0
  11. package/package.json +2 -2
  12. package/pyproject.toml +2 -2
  13. package/src/deepscientist/__init__.py +1 -1
  14. package/src/deepscientist/acp/envelope.py +1 -0
  15. package/src/deepscientist/artifact/metrics.py +814 -83
  16. package/src/deepscientist/artifact/schemas.py +1 -0
  17. package/src/deepscientist/artifact/service.py +2001 -229
  18. package/src/deepscientist/bash_exec/monitor.py +1 -1
  19. package/src/deepscientist/bash_exec/service.py +17 -9
  20. package/src/deepscientist/channels/qq.py +17 -0
  21. package/src/deepscientist/channels/relay.py +16 -0
  22. package/src/deepscientist/config/models.py +6 -0
  23. package/src/deepscientist/config/service.py +70 -2
  24. package/src/deepscientist/daemon/api/handlers.py +414 -14
  25. package/src/deepscientist/daemon/api/router.py +4 -0
  26. package/src/deepscientist/daemon/app.py +292 -21
  27. package/src/deepscientist/gitops/diff.py +6 -10
  28. package/src/deepscientist/mcp/server.py +191 -40
  29. package/src/deepscientist/prompts/builder.py +65 -19
  30. package/src/deepscientist/quest/node_traces.py +129 -2
  31. package/src/deepscientist/quest/service.py +140 -34
  32. package/src/deepscientist/quest/stage_views.py +175 -33
  33. package/src/deepscientist/registries/baseline.py +56 -4
  34. package/src/deepscientist/runners/codex.py +1 -1
  35. package/src/prompts/connectors/qq.md +1 -1
  36. package/src/prompts/contracts/shared_interaction.md +14 -0
  37. package/src/prompts/system.md +113 -32
  38. package/src/skills/analysis-campaign/SKILL.md +10 -14
  39. package/src/skills/baseline/SKILL.md +51 -38
  40. package/src/skills/baseline/references/baseline-plan-template.md +2 -0
  41. package/src/skills/decision/SKILL.md +12 -8
  42. package/src/skills/experiment/SKILL.md +28 -16
  43. package/src/skills/experiment/references/main-experiment-plan-template.md +2 -0
  44. package/src/skills/figure-polish/SKILL.md +1 -0
  45. package/src/skills/finalize/SKILL.md +3 -8
  46. package/src/skills/idea/SKILL.md +18 -8
  47. package/src/skills/idea/references/literature-survey-template.md +24 -0
  48. package/src/skills/idea/references/related-work-playbook.md +4 -0
  49. package/src/skills/idea/references/selection-gate.md +9 -0
  50. package/src/skills/intake-audit/SKILL.md +2 -8
  51. package/src/skills/rebuttal/SKILL.md +2 -8
  52. package/src/skills/review/SKILL.md +2 -8
  53. package/src/skills/scout/SKILL.md +2 -8
  54. package/src/skills/write/SKILL.md +53 -17
  55. package/src/skills/write/templates/DEEPSCIENTIST_NOTES.md +21 -0
  56. package/src/skills/write/templates/README.md +408 -0
  57. package/src/skills/write/templates/UPSTREAM_LICENSE.txt +21 -0
  58. package/src/skills/write/templates/aaai2026/README.md +534 -0
  59. package/src/skills/write/templates/aaai2026/aaai2026-unified-supp.tex +144 -0
  60. package/src/skills/write/templates/aaai2026/aaai2026-unified-template.tex +952 -0
  61. package/src/skills/write/templates/aaai2026/aaai2026.bib +111 -0
  62. package/src/skills/write/templates/aaai2026/aaai2026.bst +1493 -0
  63. package/src/skills/write/templates/aaai2026/aaai2026.sty +315 -0
  64. package/src/skills/write/templates/acl/README.md +50 -0
  65. package/src/skills/write/templates/acl/acl.sty +312 -0
  66. package/src/skills/write/templates/acl/acl_latex.tex +377 -0
  67. package/src/skills/write/templates/acl/acl_lualatex.tex +101 -0
  68. package/src/skills/write/templates/acl/acl_natbib.bst +1940 -0
  69. package/src/skills/write/templates/acl/anthology.bib.txt +26 -0
  70. package/src/skills/write/templates/acl/custom.bib +70 -0
  71. package/src/skills/write/templates/acl/formatting.md +326 -0
  72. package/src/skills/write/templates/asplos2027/main.tex +459 -0
  73. package/src/skills/write/templates/asplos2027/references.bib +135 -0
  74. package/src/skills/write/templates/colm2025/README.md +3 -0
  75. package/src/skills/write/templates/colm2025/colm2025_conference.bib +11 -0
  76. package/src/skills/write/templates/colm2025/colm2025_conference.bst +1440 -0
  77. package/src/skills/write/templates/colm2025/colm2025_conference.sty +218 -0
  78. package/src/skills/write/templates/colm2025/colm2025_conference.tex +305 -0
  79. package/src/skills/write/templates/colm2025/fancyhdr.sty +485 -0
  80. package/src/skills/write/templates/colm2025/math_commands.tex +508 -0
  81. package/src/skills/write/templates/colm2025/natbib.sty +1246 -0
  82. package/src/skills/write/templates/iclr2026/fancyhdr.sty +485 -0
  83. package/src/skills/write/templates/iclr2026/iclr2026_conference.bib +24 -0
  84. package/src/skills/write/templates/iclr2026/iclr2026_conference.bst +1440 -0
  85. package/src/skills/write/templates/iclr2026/iclr2026_conference.sty +246 -0
  86. package/src/skills/write/templates/iclr2026/iclr2026_conference.tex +414 -0
  87. package/src/skills/write/templates/iclr2026/math_commands.tex +508 -0
  88. package/src/skills/write/templates/iclr2026/natbib.sty +1246 -0
  89. package/src/skills/write/templates/icml2026/algorithm.sty +79 -0
  90. package/src/skills/write/templates/icml2026/algorithmic.sty +201 -0
  91. package/src/skills/write/templates/icml2026/example_paper.bib +75 -0
  92. package/src/skills/write/templates/icml2026/example_paper.tex +662 -0
  93. package/src/skills/write/templates/icml2026/fancyhdr.sty +864 -0
  94. package/src/skills/write/templates/icml2026/icml2026.bst +1443 -0
  95. package/src/skills/write/templates/icml2026/icml2026.sty +767 -0
  96. package/src/skills/write/templates/neurips2025/Makefile +36 -0
  97. package/src/skills/write/templates/neurips2025/extra_pkgs.tex +53 -0
  98. package/src/skills/write/templates/neurips2025/main.tex +38 -0
  99. package/src/skills/write/templates/neurips2025/neurips.sty +382 -0
  100. package/src/skills/write/templates/nsdi2027/main.tex +426 -0
  101. package/src/skills/write/templates/nsdi2027/references.bib +151 -0
  102. package/src/skills/write/templates/nsdi2027/usenix-2020-09.sty +83 -0
  103. package/src/skills/write/templates/osdi2026/main.tex +429 -0
  104. package/src/skills/write/templates/osdi2026/references.bib +150 -0
  105. package/src/skills/write/templates/osdi2026/usenix-2020-09.sty +83 -0
  106. package/src/skills/write/templates/sosp2026/main.tex +532 -0
  107. package/src/skills/write/templates/sosp2026/references.bib +148 -0
  108. package/src/tui/package.json +1 -1
  109. package/src/ui/dist/assets/{AiManusChatView-BS3V4ZOk.js → AiManusChatView-BKZ103sn.js} +110 -14
  110. package/src/ui/dist/assets/{AnalysisPlugin-DLPXQsmr.js → AnalysisPlugin-mTTzGAlK.js} +1 -1
  111. package/src/ui/dist/assets/{AutoFigurePlugin-C-Fr9knQ.js → AutoFigurePlugin-C_wWw4AP.js} +5 -5
  112. package/src/ui/dist/assets/{CliPlugin-Dd8AHzFg.js → CliPlugin-BH58n3GY.js} +9 -9
  113. package/src/ui/dist/assets/{CodeEditorPlugin-Dg-RepTl.js → CodeEditorPlugin-BKGRUH7e.js} +8 -8
  114. package/src/ui/dist/assets/{CodeViewerPlugin-D2J_3nyt.js → CodeViewerPlugin-BMADwFWJ.js} +5 -5
  115. package/src/ui/dist/assets/{DocViewerPlugin-ChRLLKNb.js → DocViewerPlugin-ZOnTIHLN.js} +3 -3
  116. package/src/ui/dist/assets/{GitDiffViewerPlugin-DgHfcved.js → GitDiffViewerPlugin-CQ7h1Djm.js} +830 -86
  117. package/src/ui/dist/assets/{ImageViewerPlugin-C89GZMBy.js → ImageViewerPlugin-GVS5MsnC.js} +5 -5
  118. package/src/ui/dist/assets/{LabCopilotPanel-BUfIwUcb.js → LabCopilotPanel-BZNv1JML.js} +10 -10
  119. package/src/ui/dist/assets/{LabPlugin-zvUmQUMq.js → LabPlugin-TWcJsdQA.js} +1 -1
  120. package/src/ui/dist/assets/{LatexPlugin-C1SSNuWp.js → LatexPlugin-DIjHiR2x.js} +7 -7
  121. package/src/ui/dist/assets/{MarkdownViewerPlugin-D2Mf5tU5.js → MarkdownViewerPlugin-D3ooGAH0.js} +4 -4
  122. package/src/ui/dist/assets/{MarketplacePlugin-CF4LgiS2.js → MarketplacePlugin-DfVfE9hN.js} +3 -3
  123. package/src/ui/dist/assets/{NotebookEditor-BM7Bgwlv.js → NotebookEditor-DDl0_Mc0.js} +1 -1
  124. package/src/ui/dist/assets/{index-Be0NAmh8.js → NotebookEditor-s8JhzuX1.js} +12 -155
  125. package/src/ui/dist/assets/{PdfLoader-Bc5qfD-Z.js → PdfLoader-C2Sf6SJM.js} +1 -1
  126. package/src/ui/dist/assets/{PdfMarkdownPlugin-sh1-IRcp.js → PdfMarkdownPlugin-CXFLoIsa.js} +3 -3
  127. package/src/ui/dist/assets/{PdfViewerPlugin-C_a7CpWG.js → PdfViewerPlugin-BYTmz2fK.js} +10 -10
  128. package/src/ui/dist/assets/{SearchPlugin-L4z3HcLf.js → SearchPlugin-CjWBI1O9.js} +1 -1
  129. package/src/ui/dist/assets/{Stepper-Dk4aQ3fN.js → Stepper-B0Dd8CxK.js} +1 -1
  130. package/src/ui/dist/assets/{TextViewerPlugin-BsNtlKVo.js → TextViewerPlugin-DdOBU3-S.js} +4 -4
  131. package/src/ui/dist/assets/{VNCViewer-BpeDcZ5_.js → VNCViewer-B8HGgLwQ.js} +9 -9
  132. package/src/ui/dist/assets/{bibtex-C4QI-bbj.js → bibtex-CKaefIN2.js} +1 -1
  133. package/src/ui/dist/assets/{code-DuMINRsg.js → code-BWAY76JP.js} +1 -1
  134. package/src/ui/dist/assets/{file-content-C3N-432K.js → file-content-C1NwU5oQ.js} +1 -1
  135. package/src/ui/dist/assets/{file-diff-panel-CffQ4ZMg.js → file-diff-panel-CywslwB9.js} +1 -1
  136. package/src/ui/dist/assets/{file-socket-CRH59PCO.js → file-socket-B4kzuOBQ.js} +1 -1
  137. package/src/ui/dist/assets/{file-utils-vYGtW2mI.js → file-utils-H2fjA46S.js} +1 -1
  138. package/src/ui/dist/assets/{image-DBVGaooo.js → image-D-NZM-6P.js} +1 -1
  139. package/src/ui/dist/assets/{index-B1P6hQRJ.js → index-7Chr1g9c.js} +3734 -1862
  140. package/src/ui/dist/assets/{index-DjSFDmgB.js → index-BdM1Gqfr.js} +2 -2
  141. package/src/ui/dist/assets/{index-BpjYH9Vg.js → index-CDxNdQdz.js} +1 -1
  142. package/src/ui/dist/assets/{index-Do9N28uB.css → index-DGIYDuTv.css} +163 -34
  143. package/src/ui/dist/assets/index-DHZJ_0TI.js +159 -0
  144. package/src/ui/dist/assets/{message-square-BsPDBhiY.js → message-square-BzjLiXir.js} +1 -1
  145. package/src/ui/dist/assets/{monaco-BTkdPojV.js → monaco-Cb2uKKe6.js} +1 -1
  146. package/src/ui/dist/assets/{popover-cWjCk-vc.js → popover-Bg72DGgT.js} +1 -1
  147. package/src/ui/dist/assets/{project-sync-CXn530xb.js → project-sync-Ce_0BglY.js} +1 -1
  148. package/src/ui/dist/assets/{sigma-04Jr12jg.js → sigma-DPaACDrh.js} +1 -1
  149. package/src/ui/dist/assets/{tooltip-BdVDl0G5.js → tooltip-C_mA6R0w.js} +1 -1
  150. package/src/ui/dist/assets/{trash-CB_GlQyC.js → trash-BvTgE5__.js} +1 -1
  151. package/src/ui/dist/assets/{useCliAccess-BL932NwS.js → useCliAccess-CgPeMOwP.js} +1 -1
  152. package/src/ui/dist/assets/{useFileDiffOverlay-B2WK7Tvq.js → useFileDiffOverlay-xPhz7P5B.js} +1 -1
  153. package/src/ui/dist/assets/{wrap-text-YC68g12z.js → wrap-text-C3Un3YQr.js} +1 -1
  154. package/src/ui/dist/assets/{zoom-out-C0RJvFiJ.js → zoom-out-BgxLa0Ri.js} +1 -1
  155. package/src/ui/dist/index.html +5 -2
  156. /package/src/ui/dist/assets/{index-CccQYZjX.css → NotebookEditor-CccQYZjX.css} +0 -0
@@ -209,7 +209,44 @@ Example:
209
209
  Do not replace an experiment artifact with a memory card.
210
210
  Do not replace a reusable lesson with a progress artifact.
211
211
 
212
- ## 4. Bash exec usage
212
+ ## 4. Artifact metric-contract rules
213
+
214
+ Use `artifact` as the authoritative submission surface for baseline and main-experiment metrics.
215
+
216
+ ### `artifact.confirm_baseline(...)`
217
+
218
+ For a confirmed baseline:
219
+
220
+ - the canonical metric contract should live in `<baseline_root>/json/metric_contract.json`
221
+ - the canonical `metrics_summary` should be a flat top-level dictionary keyed by the paper-facing metric ids
222
+ - if the raw evaluator output is nested, map each required canonical metric through explicit `origin_path` fields inside `metric_contract.metrics`
223
+ - every canonical baseline metric entry should explain where the number came from:
224
+ - `description`
225
+ - either `derivation` or `origin_path`
226
+ - `source_ref`
227
+ - keep `primary_metric` as the headline metric only; do not use it to erase the rest of the accepted paper-facing comparison surface
228
+
229
+ ### `artifact.record_main_experiment(...)`
230
+
231
+ For a main experiment recorded against a confirmed baseline:
232
+
233
+ - use the confirmed baseline metric-contract JSON as the canonical comparison contract
234
+ - report every required baseline metric id in the main experiment submission
235
+ - extra metrics are allowed, but missing required baseline metrics are not
236
+ - keep the original evaluation code and metric definitions for the canonical baseline metrics
237
+ - if an extra evaluator is genuinely necessary, record it as supplementary evidence instead of replacing the canonical comparator
238
+
239
+ ### Validation and temporary notes
240
+
241
+ - when the MCP tool runs strict validation, contract failures return structured error payloads such as:
242
+ - `missing_metric_ids`
243
+ - `baseline_metric_ids`
244
+ - `baseline_metric_details`
245
+ - `evaluation_protocol_mismatch`
246
+ - `Result/metric.md` may be used as temporary scratch memory while working, but it is optional and not authoritative
247
+ - if `Result/metric.md` exists, reconcile it against the final baseline or main-experiment submission before calling the artifact tool
248
+
249
+ ## 5. Bash exec usage
213
250
 
214
251
  Use `bash_exec` for monitored commands:
215
252
 
@@ -226,7 +263,7 @@ bash_exec.bash_exec(mode="read", id="<bash_id>")
226
263
 
227
264
  Use `kill` only when the quest truly needs to stop the session.
228
265
 
229
- ## 5. Prompt-level expectations
266
+ ## 6. Prompt-level expectations
230
267
 
231
268
  The agent should normally follow this discipline:
232
269
 
@@ -237,7 +274,7 @@ The agent should normally follow this discipline:
237
274
  5. `bash_exec` for durable shell work
238
275
  6. `memory.write(...)` only after a real durable finding appears
239
276
 
240
- ## 6. UI expectation
277
+ ## 7. UI expectation
241
278
 
242
279
  In `/projects/{id}` Studio trace:
243
280
 
@@ -11,6 +11,7 @@ We especially thank the following projects for their ideas, research direction,
11
11
  - AlphaEvolve
12
12
  - OpenEvolve
13
13
  - EvoScientist
14
+ - Orchestra-Research
14
15
  - Orchestra-Research/AI-Research-SKILLs
15
16
 
16
17
  These projects have been important references for thinking about automated research, open-ended exploration, evolutionary search, experiment organization, and long-horizon research agents.
@@ -39,13 +39,13 @@ DeepScientist 现在使用 `uv` 管理锁定的本地 Python 运行时。如果
39
39
 
40
40
  默认情况下,DeepScientist home 在 macOS / Linux 上是 `~/DeepScientist`,在 Windows 上是 `%USERPROFILE%\\DeepScientist`。如果你希望放到别的路径,可以直接使用 `ds --home <path>`。
41
41
 
42
- 如果你希望直接把“当前工作目录”作为 DeepScientist home,可以运行:
42
+ 如果你希望把 DeepScientist home 放到当前工作目录下的 `./DeepScientist` 中,可以运行:
43
43
 
44
44
  ```bash
45
45
  ds --here
46
46
  ```
47
47
 
48
- 它等价于 `ds --home "$PWD"`。
48
+ 它等价于 `ds --home "$PWD/DeepScientist"`。
49
49
 
50
50
  如果你是从源码仓库安装,并希望把默认的 CLI 安装基路径改到别的位置,可以使用:
51
51
 
@@ -192,7 +192,44 @@ updated_at: 2026-03-11T18:00:00+00:00
192
192
  不要用 memory 代替实验 artifact。
193
193
  不要用 artifact 代替可复用知识卡。
194
194
 
195
- ## 4. Bash exec 的基本用法
195
+ ## 4. Artifact 指标契约规则
196
+
197
+ baseline 与主实验的正式指标提交,应以 `artifact` 为唯一权威入口。
198
+
199
+ ### `artifact.confirm_baseline(...)`
200
+
201
+ 对于已确认的 baseline:
202
+
203
+ - canonical metric contract 应保存在 `<baseline_root>/json/metric_contract.json`
204
+ - canonical `metrics_summary` 应是顶层扁平字典,key 直接使用论文面对比时的 metric id
205
+ - 如果原始评测输出是嵌套结构,应在 `metric_contract.metrics` 中为每个必需 canonical metric 提供显式 `origin_path`,而不是直接提交嵌套 blob
206
+ - 每个 canonical baseline metric 都应说明数值来源,至少包含:
207
+ - `description`
208
+ - `derivation` 或 `origin_path`
209
+ - `source_ref`
210
+ - `primary_metric` 只是 headline metric,不能借此删掉其他论文面对比所需指标
211
+
212
+ ### `artifact.record_main_experiment(...)`
213
+
214
+ 对于基于已确认 baseline 的主实验:
215
+
216
+ - 默认以已确认 baseline 的 metric-contract JSON 作为 canonical comparison contract
217
+ - 主实验提交时必须覆盖 baseline 的全部必需 metric id
218
+ - 可以多报额外指标,但不能缺少 baseline 的必需指标
219
+ - canonical baseline metrics 应继续使用原有评测代码和指标定义
220
+ - 如果确实需要额外评测器,应把它作为 supplementary evidence 记录,而不是替换 canonical comparator
221
+
222
+ ### 校验失败与临时记录
223
+
224
+ - 当 MCP 工具开启严格校验时,失败会返回结构化错误字段,例如:
225
+ - `missing_metric_ids`
226
+ - `baseline_metric_ids`
227
+ - `baseline_metric_details`
228
+ - `evaluation_protocol_mismatch`
229
+ - `Result/metric.md` 只可作为工作过程中的临时草稿/记忆文件,不是必需文件,也不是权威来源
230
+ - 如果存在 `Result/metric.md`,请在调用 artifact 提交前用它核对最终 baseline 或主实验提交内容,避免遗漏或写错
231
+
232
+ ## 5. Bash exec 的基本用法
196
233
 
197
234
  用于可监控命令:
198
235
 
@@ -209,7 +246,7 @@ bash_exec.bash_exec(mode="read", id="<bash_id>")
209
246
 
210
247
  只有在确实需要停止时才使用 `kill`。
211
248
 
212
- ## 5. Prompt 级纪律(建议)
249
+ ## 6. Prompt 级纪律(建议)
213
250
 
214
251
  通常推荐遵循:
215
252
 
@@ -220,7 +257,7 @@ bash_exec.bash_exec(mode="read", id="<bash_id>")
220
257
  5. 长任务 shell 用 `bash_exec`
221
258
  6. 有真正的可复用发现才 `memory.write(...)`
222
259
 
223
- ## 6. UI 期望
260
+ ## 7. UI 期望
224
261
 
225
262
  在 `/projects/{id}` 的 Studio trace 中:
226
263
 
@@ -11,6 +11,7 @@ DeepScientist 的构思、架构设计与实现过程中,受到了许多优秀
11
11
  - AlphaEvolve
12
12
  - OpenEvolve
13
13
  - EvoScientist
14
+ - Orchestra-Research
14
15
  - Orchestra-Research/AI-Research-SKILLs
15
16
 
16
17
  这些项目在自动化科研、开放式探索、进化式搜索、实验组织与智能研究代理等方向上的探索,为 DeepScientist 的设计提供了重要参照。
package/install.sh CHANGED
@@ -421,6 +421,40 @@ write_global_wrapper() {
421
421
  cat >"$target_path" <<EOF
422
422
  #!/usr/bin/env bash
423
423
  set -euo pipefail
424
+ WRAPPER_PATH="\${BASH_SOURCE[0]}"
425
+ WRAPPER_DIR="\$(cd "\$(dirname "\$WRAPPER_PATH")" && pwd)"
426
+ PREFERRED_COMMAND="$command_name"
427
+ LOOKUP_PATH=""
428
+ OLD_IFS="\$IFS"
429
+ IFS=:
430
+ for ENTRY in \$PATH; do
431
+ if [ -z "\$ENTRY" ]; then
432
+ continue
433
+ fi
434
+ ENTRY_REAL="\$ENTRY"
435
+ if ENTRY_CANONICAL="\$(cd "\$ENTRY" 2>/dev/null && pwd)"; then
436
+ ENTRY_REAL="\$ENTRY_CANONICAL"
437
+ fi
438
+ if [ "\$ENTRY_REAL" = "\$WRAPPER_DIR" ]; then
439
+ continue
440
+ fi
441
+ if [ -z "\$LOOKUP_PATH" ]; then
442
+ LOOKUP_PATH="\$ENTRY"
443
+ else
444
+ LOOKUP_PATH="\$LOOKUP_PATH:\$ENTRY"
445
+ fi
446
+ done
447
+ IFS="\$OLD_IFS"
448
+ if [ -n "\$LOOKUP_PATH" ]; then
449
+ if RESOLVED_LAUNCHER="\$(PATH="\$LOOKUP_PATH" command -v "\$PREFERRED_COMMAND" 2>/dev/null)"; then
450
+ if [ -n "\$RESOLVED_LAUNCHER" ] && [ "\$RESOLVED_LAUNCHER" != "\$WRAPPER_PATH" ]; then
451
+ if [ -z "\${DEEPSCIENTIST_HOME:-}" ]; then
452
+ export DEEPSCIENTIST_HOME="$BASE_DIR"
453
+ fi
454
+ exec "\$RESOLVED_LAUNCHER" "\$@"
455
+ fi
456
+ fi
457
+ fi
424
458
  if [ -z "\${DEEPSCIENTIST_HOME:-}" ]; then
425
459
  export DEEPSCIENTIST_HOME="$BASE_DIR"
426
460
  fi
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@researai/deepscientist",
3
- "version": "1.5.7",
3
+ "version": "1.5.9",
4
4
  "description": "Local-first research operating system with a Python runtime and npm launcher",
5
- "license": "MIT",
5
+ "license": "Apache-2.0",
6
6
  "files": [
7
7
  "AGENTS.md",
8
8
  "README.md",
package/pyproject.toml CHANGED
@@ -4,11 +4,11 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "deepscientist"
7
- version = "1.5.7"
7
+ version = "1.5.9"
8
8
  description = "DeepScientist Core skeleton"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
11
- license = { text = "MIT" }
11
+ license = { text = "Apache-2.0" }
12
12
  authors = [
13
13
  { name = "OpenAI Codex" }
14
14
  ]
@@ -5,4 +5,4 @@ __all__ = ["__version__"]
5
5
  try:
6
6
  __version__ = _package_version("deepscientist")
7
7
  except PackageNotFoundError: # pragma: no cover - source checkout fallback
8
- __version__ = "1.5.7"
8
+ __version__ = "1.5.9"
@@ -85,6 +85,7 @@ def build_session_descriptor(
85
85
  "mcp_servers": [
86
86
  {"name": "memory", "transport": "stdio", "scope": "quest-local"},
87
87
  {"name": "artifact", "transport": "stdio", "scope": "quest-local"},
88
+ {"name": "bash_exec", "transport": "stdio", "scope": "quest-local"},
88
89
  ],
89
90
  "slash_commands": build_slash_commands(quest_id),
90
91
  "meta": {