@researai/deepscientist 1.5.17 → 1.6.0
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.
- package/AGENTS.md +309 -130
- package/AISB/catalog/aisb.b1.agentic_coding.yaml +244 -0
- package/AISB/catalog/aisb.b10.climate_earth.yaml +235 -0
- package/AISB/catalog/aisb.b11.model_efficiency.yaml +231 -0
- package/AISB/catalog/aisb.b12.embodied_ai.yaml +238 -0
- package/AISB/catalog/aisb.b2.agent_systems.yaml +229 -0
- package/AISB/catalog/aisb.b3.self_evolving_rl.yaml +237 -0
- package/AISB/catalog/aisb.b4.lm_reasoning.yaml +240 -0
- package/AISB/catalog/aisb.b5.math_proof.yaml +235 -0
- package/AISB/catalog/aisb.b6.research_process.yaml +243 -0
- package/AISB/catalog/aisb.b7.multimodal_fusion.yaml +232 -0
- package/AISB/catalog/aisb.b8.lifesci_drug.yaml +275 -0
- package/AISB/catalog/aisb.b9.material_science.yaml +237 -0
- package/AISB/catalog/aisb.t3.001_savvy.yaml +159 -0
- package/AISB/catalog/aisb.t3.001_savvy.zh.yaml +121 -0
- package/AISB/catalog/aisb.t3.002_pinet.yaml +189 -0
- package/AISB/catalog/aisb.t3.002_pinet.zh.yaml +130 -0
- package/AISB/catalog/aisb.t3.004_decentralattn.yaml +184 -0
- package/AISB/catalog/aisb.t3.004_decentralattn.zh.yaml +153 -0
- package/AISB/catalog/aisb.t3.005_tsae.yaml +193 -0
- package/AISB/catalog/aisb.t3.005_tsae.zh.yaml +139 -0
- package/AISB/catalog/aisb.t3.006_physense.yaml +194 -0
- package/AISB/catalog/aisb.t3.006_physense.zh.yaml +118 -0
- package/AISB/catalog/aisb.t3.007_reasoningiqa.yaml +169 -0
- package/AISB/catalog/aisb.t3.007_reasoningiqa.zh.yaml +133 -0
- package/AISB/catalog/aisb.t3.008_meanflows.yaml +188 -0
- package/AISB/catalog/aisb.t3.008_meanflows.zh.yaml +140 -0
- package/AISB/catalog/aisb.t3.009_scoremissing.yaml +179 -0
- package/AISB/catalog/aisb.t3.009_scoremissing.zh.yaml +119 -0
- package/AISB/catalog/aisb.t3.010_suitabilityfilter.yaml +221 -0
- package/AISB/catalog/aisb.t3.010_suitabilityfilter.zh.yaml +141 -0
- package/AISB/catalog/aisb.t3.011_osd.yaml +206 -0
- package/AISB/catalog/aisb.t3.011_osd.zh.yaml +163 -0
- package/AISB/catalog/aisb.t3.012_efficientqat.yaml +206 -0
- package/AISB/catalog/aisb.t3.012_efficientqat.zh.yaml +159 -0
- package/AISB/catalog/aisb.t3.013_appl.yaml +152 -0
- package/AISB/catalog/aisb.t3.013_appl.zh.yaml +126 -0
- package/AISB/catalog/aisb.t3.014_piguard.yaml +207 -0
- package/AISB/catalog/aisb.t3.014_piguard.zh.yaml +164 -0
- package/AISB/catalog/aisb.t3.015_frspec.yaml +209 -0
- package/AISB/catalog/aisb.t3.015_frspec.zh.yaml +163 -0
- package/AISB/catalog/aisb.t3.016_mathfusion.yaml +166 -0
- package/AISB/catalog/aisb.t3.016_mathfusion.zh.yaml +145 -0
- package/AISB/catalog/aisb.t3.017_multimodalglp.yaml +171 -0
- package/AISB/catalog/aisb.t3.017_multimodalglp.zh.yaml +122 -0
- package/AISB/catalog/aisb.t3.018_cotsynth.yaml +206 -0
- package/AISB/catalog/aisb.t3.018_cotsynth.zh.yaml +162 -0
- package/AISB/catalog/aisb.t3.019_dyscaleut.yaml +211 -0
- package/AISB/catalog/aisb.t3.019_dyscaleut.zh.yaml +148 -0
- package/AISB/catalog/aisb.t3.020_aristotle.yaml +173 -0
- package/AISB/catalog/aisb.t3.020_aristotle.zh.yaml +119 -0
- package/AISB/catalog/aisb.t3.021_tokenrecycling.yaml +160 -0
- package/AISB/catalog/aisb.t3.021_tokenrecycling.zh.yaml +129 -0
- package/AISB/catalog/aisb.t3.022_chainofreasoning.yaml +204 -0
- package/AISB/catalog/aisb.t3.022_chainofreasoning.zh.yaml +161 -0
- package/AISB/catalog/aisb.t3.023_guidedembed.yaml +211 -0
- package/AISB/catalog/aisb.t3.023_guidedembed.zh.yaml +189 -0
- package/AISB/catalog/aisb.t3.024_outputcentric.yaml +148 -0
- package/AISB/catalog/aisb.t3.024_outputcentric.zh.yaml +131 -0
- package/AISB/catalog/aisb.t3.025_deeper.yaml +143 -0
- package/AISB/catalog/aisb.t3.025_deeper.zh.yaml +116 -0
- package/AISB/catalog/aisb.t3.026_gartkg.yaml +195 -0
- package/AISB/catalog/aisb.t3.026_gartkg.zh.yaml +127 -0
- package/AISB/catalog/aisb.t3.027_citeeval.yaml +182 -0
- package/AISB/catalog/aisb.t3.027_citeeval.zh.yaml +135 -0
- package/AISB/catalog/aisb.t3.028_sbam.yaml +206 -0
- package/AISB/catalog/aisb.t3.028_sbam.zh.yaml +166 -0
- package/AISB/catalog/aisb.t3.029_cdqgeoembed.yaml +224 -0
- package/AISB/catalog/aisb.t3.029_cdqgeoembed.zh.yaml +142 -0
- package/AISB/catalog/aisb.t3.030_processrm.yaml +211 -0
- package/AISB/catalog/aisb.t3.030_processrm.zh.yaml +166 -0
- package/AISB/catalog/aisb.t3.031_circuitstability.yaml +172 -0
- package/AISB/catalog/aisb.t3.031_circuitstability.zh.yaml +134 -0
- package/AISB/catalog/aisb.t3.032_ptsolver.yaml +169 -0
- package/AISB/catalog/aisb.t3.032_ptsolver.zh.yaml +135 -0
- package/AISB/catalog/aisb.t3.033_gcse.yaml +144 -0
- package/AISB/catalog/aisb.t3.033_gcse.zh.yaml +126 -0
- package/AISB/catalog/aisb.t3.034_ensemblewm.yaml +183 -0
- package/AISB/catalog/aisb.t3.034_ensemblewm.zh.yaml +146 -0
- package/AISB/catalog/aisb.t3.035_moralvalueswa.yaml +207 -0
- package/AISB/catalog/aisb.t3.035_moralvalueswa.zh.yaml +165 -0
- package/AISB/catalog/aisb.t3.036_weakstrongpref.yaml +210 -0
- package/AISB/catalog/aisb.t3.036_weakstrongpref.zh.yaml +194 -0
- package/AISB/catalog/aisb.t3.037_dementiamask.yaml +172 -0
- package/AISB/catalog/aisb.t3.037_dementiamask.zh.yaml +132 -0
- package/AISB/catalog/aisb.t3.038_tinysam.yaml +284 -0
- package/AISB/catalog/aisb.t3.038_tinysam.zh.yaml +240 -0
- package/AISB/catalog/aisb.t3.039_calf.yaml +224 -0
- package/AISB/catalog/aisb.t3.039_calf.zh.yaml +194 -0
- package/AISB/catalog/aisb.t3.040_graniteguardian.yaml +199 -0
- package/AISB/catalog/aisb.t3.040_graniteguardian.zh.yaml +174 -0
- package/AISB/catalog/aisb.t3.041_amdm.yaml +149 -0
- package/AISB/catalog/aisb.t3.041_amdm.zh.yaml +137 -0
- package/AISB/catalog/aisb.t3.042_xpatch.yaml +216 -0
- package/AISB/catalog/aisb.t3.042_xpatch.zh.yaml +182 -0
- package/AISB/catalog/aisb.t3.043_vhm.yaml +268 -0
- package/AISB/catalog/aisb.t3.043_vhm.zh.yaml +193 -0
- package/AISB/catalog/aisb.t3.044_rgvi.yaml +224 -0
- package/AISB/catalog/aisb.t3.044_rgvi.zh.yaml +176 -0
- package/AISB/catalog/aisb.t3.045_pslstm.yaml +203 -0
- package/AISB/catalog/aisb.t3.045_pslstm.zh.yaml +179 -0
- package/AISB/catalog/aisb.t3.046_nonstatts.yaml +208 -0
- package/AISB/catalog/aisb.t3.046_nonstatts.zh.yaml +194 -0
- package/AISB/catalog/aisb.t3.047_timepfn.yaml +156 -0
- package/AISB/catalog/aisb.t3.047_timepfn.zh.yaml +124 -0
- package/AISB/catalog/aisb.t3.048_proxyspex.yaml +148 -0
- package/AISB/catalog/aisb.t3.048_proxyspex.zh.yaml +125 -0
- package/AISB/catalog/aisb.t3.049_hogwildinference.yaml +183 -0
- package/AISB/catalog/aisb.t3.049_hogwildinference.zh.yaml +138 -0
- package/AISB/catalog/aisb.t3.050_causalpfn.yaml +214 -0
- package/AISB/catalog/aisb.t3.050_causalpfn.zh.yaml +190 -0
- package/AISB/catalog/aisb.t3.051_flashtp.yaml +169 -0
- package/AISB/catalog/aisb.t3.051_flashtp.zh.yaml +124 -0
- package/AISB/catalog/aisb.t3.052_nsdiff.yaml +155 -0
- package/AISB/catalog/aisb.t3.052_nsdiff.zh.yaml +138 -0
- package/AISB/catalog/aisb.t3.053_k2vae.yaml +158 -0
- package/AISB/catalog/aisb.t3.053_k2vae.zh.yaml +132 -0
- package/AISB/catalog/aisb.t3.054_timebase.yaml +178 -0
- package/AISB/catalog/aisb.t3.054_timebase.zh.yaml +158 -0
- package/AISB/catalog/aisb.t3.055_csbrain.yaml +238 -0
- package/AISB/catalog/aisb.t3.055_csbrain.zh.yaml +184 -0
- package/AISB/catalog/aisb.t3.056_infosam.yaml +224 -0
- package/AISB/catalog/aisb.t3.056_infosam.zh.yaml +189 -0
- package/AISB/catalog/aisb.t3.057_mdreid.yaml +129 -0
- package/AISB/catalog/aisb.t3.057_mdreid.zh.yaml +117 -0
- package/AISB/catalog/aisb.t3.058_mindglitch.yaml +171 -0
- package/AISB/catalog/aisb.t3.058_mindglitch.zh.yaml +145 -0
- package/AISB/catalog/aisb.t3.059_selfsupervised.yaml +154 -0
- package/AISB/catalog/aisb.t3.059_selfsupervised.zh.yaml +125 -0
- package/AISB/catalog/aisb.t3.060_iaggad.yaml +121 -0
- package/AISB/catalog/aisb.t3.060_iaggad.zh.yaml +100 -0
- package/AISB/catalog/aisb.t3.061_hsgkn.yaml +136 -0
- package/AISB/catalog/aisb.t3.061_hsgkn.zh.yaml +113 -0
- package/AISB/catalog/aisb.t3.062_visionts.yaml +237 -0
- package/AISB/catalog/aisb.t3.062_visionts.zh.yaml +216 -0
- package/AISB/catalog/aisb.t3.063_tsrag.yaml +162 -0
- package/AISB/catalog/aisb.t3.063_tsrag.zh.yaml +138 -0
- package/AISB/catalog/aisb.t3.064_pir.yaml +221 -0
- package/AISB/catalog/aisb.t3.064_pir.zh.yaml +197 -0
- package/AISB/catalog/aisb.t3.065_proteinbinding.yaml +234 -0
- package/AISB/catalog/aisb.t3.065_proteinbinding.zh.yaml +167 -0
- package/AISB/catalog/aisb.t3.066_tropicalattention.yaml +267 -0
- package/AISB/catalog/aisb.t3.066_tropicalattention.zh.yaml +229 -0
- package/AISB/catalog/aisb.t3.067_kanad.yaml +193 -0
- package/AISB/catalog/aisb.t3.067_kanad.zh.yaml +167 -0
- package/AISB/catalog/aisb.t3.068_sempo.yaml +187 -0
- package/AISB/catalog/aisb.t3.068_sempo.zh.yaml +148 -0
- package/AISB/catalog/aisb.t3.069_treehfd.yaml +129 -0
- package/AISB/catalog/aisb.t3.069_treehfd.zh.yaml +111 -0
- package/AISB/catalog/aisb.t3.070_certifiedunlearning.yaml +224 -0
- package/AISB/catalog/aisb.t3.070_certifiedunlearning.zh.yaml +171 -0
- package/AISB/catalog/aisb.t3.071_neuralmjd.yaml +142 -0
- package/AISB/catalog/aisb.t3.071_neuralmjd.zh.yaml +120 -0
- package/AISB/catalog/aisb.t3.072_fedgmt.yaml +181 -0
- package/AISB/catalog/aisb.t3.072_fedgmt.zh.yaml +158 -0
- package/AISB/catalog/aisb.t3.073_rld.yaml +161 -0
- package/AISB/catalog/aisb.t3.073_rld.zh.yaml +129 -0
- package/AISB/catalog/aisb.t3.074_lsvi.yaml +163 -0
- package/AISB/catalog/aisb.t3.074_lsvi.zh.yaml +129 -0
- package/AISB/catalog/aisb.t3.075_treeslicedentropy.yaml +201 -0
- package/AISB/catalog/aisb.t3.075_treeslicedentropy.zh.yaml +148 -0
- package/AISB/catalog/aisb.t3.076_aanet.yaml +169 -0
- package/AISB/catalog/aisb.t3.076_aanet.zh.yaml +129 -0
- package/AISB/catalog/aisb.t3.077_cmnn.yaml +199 -0
- package/AISB/catalog/aisb.t3.077_cmnn.zh.yaml +165 -0
- package/AISB/catalog/aisb.t3.078_conformalanomaly.yaml +146 -0
- package/AISB/catalog/aisb.t3.078_conformalanomaly.zh.yaml +117 -0
- package/AISB/catalog/aisb.t3.079_dpfkmeans.yaml +131 -0
- package/AISB/catalog/aisb.t3.079_dpfkmeans.zh.yaml +104 -0
- package/AISB/catalog/aisb.t3.080_latentscorereweight.yaml +169 -0
- package/AISB/catalog/aisb.t3.080_latentscorereweight.zh.yaml +123 -0
- package/AISB/catalog/aisb.t3.081_qmamba.yaml +150 -0
- package/AISB/catalog/aisb.t3.081_qmamba.zh.yaml +117 -0
- package/AISB/catalog/aisb.t3.082_onlinellmrouting.yaml +160 -0
- package/AISB/catalog/aisb.t3.082_onlinellmrouting.zh.yaml +133 -0
- package/AISB/catalog/aisb.t3.083_starformer.yaml +178 -0
- package/AISB/catalog/aisb.t3.083_starformer.zh.yaml +140 -0
- package/AISB/catalog/aisb.t3.084_ift.yaml +139 -0
- package/AISB/catalog/aisb.t3.084_ift.zh.yaml +111 -0
- package/AISB/catalog/aisb.t3.085_neuralsurv.yaml +183 -0
- package/AISB/catalog/aisb.t3.085_neuralsurv.zh.yaml +143 -0
- package/AISB/catalog/aisb.t3.086_stella.yaml +197 -0
- package/AISB/catalog/aisb.t3.086_stella.zh.yaml +142 -0
- package/AISB/catalog/aisb.t3.087_moses.yaml +167 -0
- package/AISB/catalog/aisb.t3.087_moses.zh.yaml +132 -0
- package/AISB/catalog/aisb.t3.088_channelnorm.yaml +140 -0
- package/AISB/catalog/aisb.t3.088_channelnorm.zh.yaml +109 -0
- package/AISB/catalog/aisb.t3.089_causalvelocity.yaml +730 -0
- package/AISB/catalog/aisb.t3.089_causalvelocity.zh.yaml +668 -0
- package/AISB/catalog/aisb.t3.090_rstib.yaml +144 -0
- package/AISB/catalog/aisb.t3.090_rstib.zh.yaml +109 -0
- package/AISB/catalog/aisb.t3.091_timeawarecausal.yaml +132 -0
- package/AISB/catalog/aisb.t3.091_timeawarecausal.zh.yaml +107 -0
- package/AISB/catalog/aisb.t3.092_kmeanslocalopt.yaml +138 -0
- package/AISB/catalog/aisb.t3.092_kmeanslocalopt.zh.yaml +110 -0
- package/AISB/catalog/aisb.t3.093_fedwmsam.yaml +134 -0
- package/AISB/catalog/aisb.t3.093_fedwmsam.zh.yaml +106 -0
- package/AISB/catalog/aisb.t3.094_boundre.yaml +147 -0
- package/AISB/catalog/aisb.t3.094_boundre.zh.yaml +114 -0
- package/AISB/catalog/aisb.t3.095_fastfeaturecp.yaml +153 -0
- package/AISB/catalog/aisb.t3.095_fastfeaturecp.zh.yaml +118 -0
- package/AISB/catalog/aisb.t3.096_m3svm.yaml +189 -0
- package/AISB/catalog/aisb.t3.096_m3svm.zh.yaml +149 -0
- package/AISB/catalog/aisb.t3.097_wassersteintl.yaml +212 -0
- package/AISB/catalog/aisb.t3.097_wassersteintl.zh.yaml +169 -0
- package/AISB/catalog/aisb.t3.098_xmahalanobis.yaml +171 -0
- package/AISB/catalog/aisb.t3.098_xmahalanobis.zh.yaml +127 -0
- package/AISB/catalog/aisb.t3.099_ollalanding.yaml +248 -0
- package/AISB/catalog/aisb.t3.099_ollalanding.zh.yaml +182 -0
- package/AISB/catalog/aisb.t3.100_invmissingdata.yaml +179 -0
- package/AISB/catalog/aisb.t3.100_invmissingdata.zh.yaml +150 -0
- package/AISB/catalog/aisb.t3.101_acia.yaml +164 -0
- package/AISB/catalog/aisb.t3.101_acia.zh.yaml +109 -0
- package/AISB/catalog/aisb.t3.102_stochasticff.yaml +178 -0
- package/AISB/catalog/aisb.t3.102_stochasticff.zh.yaml +130 -0
- package/AISB/catalog/aisb.t3.103_qdcp.yaml +150 -0
- package/AISB/catalog/aisb.t3.103_qdcp.zh.yaml +116 -0
- package/AISB/catalog/aisb.t3.104_balancedactiveinf.yaml +137 -0
- package/AISB/catalog/aisb.t3.104_balancedactiveinf.zh.yaml +104 -0
- package/AISB/catalog/aisb.t3.105_binaryclasseval.yaml +161 -0
- package/AISB/catalog/aisb.t3.105_binaryclasseval.zh.yaml +130 -0
- package/AISB/image/001_aisb.t3.001_savvy.jpg +0 -0
- package/AISB/image/002_aisb.t3.002_pinet.jpg +0 -0
- package/AISB/image/003_aisb.t3.003_dmsqd.jpg +0 -0
- package/AISB/image/004_aisb.t3.004_decentralattn.jpg +0 -0
- package/AISB/image/005_aisb.t3.005_tsae.jpg +0 -0
- package/AISB/image/006_aisb.t3.006_physense.jpg +0 -0
- package/AISB/image/007_aisb.t3.007_reasoningiqa.jpg +0 -0
- package/AISB/image/008_aisb.t3.008_meanflows.jpg +0 -0
- package/AISB/image/009_aisb.t3.009_scoremissing.jpg +0 -0
- package/AISB/image/010_aisb.t3.010_suitabilityfilter.jpg +0 -0
- package/AISB/image/011_aisb.t3.011_osd.jpg +0 -0
- package/AISB/image/012_aisb.t3.012_efficientqat.jpg +0 -0
- package/AISB/image/013_aisb.t3.013_appl.jpg +0 -0
- package/AISB/image/014_aisb.t3.014_piguard.jpg +0 -0
- package/AISB/image/015_aisb.t3.015_frspec.jpg +0 -0
- package/AISB/image/016_aisb.t3.016_mathfusion.jpg +0 -0
- package/AISB/image/017_aisb.t3.017_multimodalglp.jpg +0 -0
- package/AISB/image/018_aisb.t3.018_cotsynth.jpg +0 -0
- package/AISB/image/019_aisb.t3.019_dyscaleut.jpg +0 -0
- package/AISB/image/020_aisb.t3.020_aristotle.jpg +0 -0
- package/AISB/image/021_aisb.t3.021_tokenrecycling.jpg +0 -0
- package/AISB/image/022_aisb.t3.022_chainofreasoning.jpg +0 -0
- package/AISB/image/023_aisb.t3.023_guidedembed.jpg +0 -0
- package/AISB/image/024_aisb.t3.024_outputcentric.jpg +0 -0
- package/AISB/image/025_aisb.t3.025_deeper.jpg +0 -0
- package/AISB/image/026_aisb.t3.026_gartkg.jpg +0 -0
- package/AISB/image/027_aisb.t3.027_citeeval.jpg +0 -0
- package/AISB/image/028_aisb.t3.028_sbam.jpg +0 -0
- package/AISB/image/029_aisb.t3.029_cdqgeoembed.jpg +0 -0
- package/AISB/image/030_aisb.t3.030_processrm.jpg +0 -0
- package/AISB/image/031_aisb.t3.031_circuitstability.jpg +0 -0
- package/AISB/image/032_aisb.t3.032_ptsolver.jpg +0 -0
- package/AISB/image/033_aisb.t3.033_gcse.jpg +0 -0
- package/AISB/image/034_aisb.t3.034_ensemblewm.jpg +0 -0
- package/AISB/image/035_aisb.t3.035_moralvalueswa.jpg +0 -0
- package/AISB/image/036_aisb.t3.036_weakstrongpref.jpg +0 -0
- package/AISB/image/037_aisb.t3.037_dementiamask.jpg +0 -0
- package/AISB/image/038_aisb.t3.038_tinysam.jpg +0 -0
- package/AISB/image/039_aisb.t3.039_calf.jpg +0 -0
- package/AISB/image/040_aisb.t3.040_graniteguardian.jpg +0 -0
- package/AISB/image/041_aisb.t3.041_amdm.jpg +0 -0
- package/AISB/image/042_aisb.t3.042_xpatch.jpg +0 -0
- package/AISB/image/043_aisb.t3.043_vhm.jpg +0 -0
- package/AISB/image/044_aisb.t3.044_rgvi.jpg +0 -0
- package/AISB/image/045_aisb.t3.045_pslstm.jpg +0 -0
- package/AISB/image/046_aisb.t3.046_nonstatts.jpg +0 -0
- package/AISB/image/047_aisb.t3.047_timepfn.jpg +0 -0
- package/AISB/image/048_aisb.t3.048_proxyspex.jpg +0 -0
- package/AISB/image/049_aisb.t3.049_hogwildinference.jpg +0 -0
- package/AISB/image/050_aisb.t3.050_causalpfn.jpg +0 -0
- package/AISB/image/051_aisb.t3.051_flashtp.jpg +0 -0
- package/AISB/image/052_aisb.t3.052_nsdiff.jpg +0 -0
- package/AISB/image/053_aisb.t3.053_k2vae.jpg +0 -0
- package/AISB/image/054_aisb.t3.054_timebase.jpg +0 -0
- package/AISB/image/055_aisb.t3.055_csbrain.jpg +0 -0
- package/AISB/image/056_aisb.t3.056_infosam.jpg +0 -0
- package/AISB/image/057_aisb.t3.057_mdreid.jpg +0 -0
- package/AISB/image/058_aisb.t3.058_mindglitch.jpg +0 -0
- package/AISB/image/059_aisb.t3.059_selfsupervised.jpg +0 -0
- package/AISB/image/060_aisb.t3.060_iaggad.jpg +0 -0
- package/AISB/image/061_aisb.t3.061_hsgkn.jpg +0 -0
- package/AISB/image/062_aisb.t3.062_visionts.jpg +0 -0
- package/AISB/image/063_aisb.t3.063_tsrag.jpg +0 -0
- package/AISB/image/064_aisb.t3.064_pir.jpg +0 -0
- package/AISB/image/065_aisb.t3.065_proteinbinding.jpg +0 -0
- package/AISB/image/066_aisb.t3.066_tropicalattention.jpg +0 -0
- package/AISB/image/067_aisb.t3.067_kanad.jpg +0 -0
- package/AISB/image/068_aisb.t3.068_sempo.jpg +0 -0
- package/AISB/image/069_aisb.t3.069_treehfd.jpg +0 -0
- package/AISB/image/070_aisb.t3.070_certifiedunlearning.jpg +0 -0
- package/AISB/image/071_aisb.t3.071_neuralmjd.jpg +0 -0
- package/AISB/image/072_aisb.t3.072_fedgmt.jpg +0 -0
- package/AISB/image/073_aisb.t3.073_rld.jpg +0 -0
- package/AISB/image/074_aisb.t3.074_lsvi.jpg +0 -0
- package/AISB/image/075_aisb.t3.075_treeslicedentropy.jpg +0 -0
- package/AISB/image/076_aisb.t3.076_aanet.jpg +0 -0
- package/AISB/image/077_aisb.t3.077_cmnn.jpg +0 -0
- package/AISB/image/078_aisb.t3.078_conformalanomaly.jpg +0 -0
- package/AISB/image/079_aisb.t3.079_dpfkmeans.jpg +0 -0
- package/AISB/image/080_aisb.t3.080_latentscorereweight.jpg +0 -0
- package/AISB/image/081_aisb.t3.081_qmamba.jpg +0 -0
- package/AISB/image/082_aisb.t3.082_onlinellmrouting.jpg +0 -0
- package/AISB/image/083_aisb.t3.083_starformer.jpg +0 -0
- package/AISB/image/084_aisb.t3.084_ift.jpg +0 -0
- package/AISB/image/085_aisb.t3.085_neuralsurv.jpg +0 -0
- package/AISB/image/086_aisb.t3.086_stella.jpg +0 -0
- package/AISB/image/087_aisb.t3.087_moses.jpg +0 -0
- package/AISB/image/088_aisb.t3.088_channelnorm.jpg +0 -0
- package/AISB/image/089_aisb.t3.089_causalvelocity.jpg +0 -0
- package/AISB/image/090_aisb.t3.090_rstib.jpg +0 -0
- package/AISB/image/091_aisb.t3.091_timeawarecausal.jpg +0 -0
- package/AISB/image/092_aisb.t3.092_kmeanslocalopt.jpg +0 -0
- package/AISB/image/093_aisb.t3.093_fedwmsam.jpg +0 -0
- package/AISB/image/094_aisb.t3.094_boundre.jpg +0 -0
- package/AISB/image/095_aisb.t3.095_fastfeaturecp.jpg +0 -0
- package/AISB/image/096_aisb.t3.096_m3svm.jpg +0 -0
- package/AISB/image/097_aisb.t3.097_wassersteintl.jpg +0 -0
- package/AISB/image/098_aisb.t3.098_xmahalanobis.jpg +0 -0
- package/AISB/image/099_aisb.t3.099_ollalanding.jpg +0 -0
- package/AISB/image/100_aisb.t3.100_invmissingdata.jpg +0 -0
- package/AISB/image/101_aisb.t3.101_acia.jpg +0 -0
- package/AISB/image/102_aisb.t3.102_stochasticff.jpg +0 -0
- package/AISB/image/103_aisb.t3.103_qdcp.jpg +0 -0
- package/AISB/image/104_aisb.t3.104_balancedactiveinf.jpg +0 -0
- package/AISB/image/105_aisb.t3.105_binaryclasseval.jpg +0 -0
- package/AISB/image/106_aisb.t1.reasoning_lite.jpg +0 -0
- package/AISB/image/107_aisb.t2.paper_audit.jpg +0 -0
- package/AISB/image/108_aisb.t3.multi_gpu_search.jpg +0 -0
- package/AISB/image/109_aisb.t3.tdc_admet.jpg +0 -0
- package/AISB/image/aisb.b1.agentic_coding.svg +16 -0
- package/AISB/image/aisb.b10.climate_earth.svg +16 -0
- package/AISB/image/aisb.b11.model_efficiency.svg +16 -0
- package/AISB/image/aisb.b12.embodied_ai.svg +16 -0
- package/AISB/image/aisb.b2.agent_systems.svg +16 -0
- package/AISB/image/aisb.b3.self_evolving_rl.svg +16 -0
- package/AISB/image/aisb.b4.lm_reasoning.svg +16 -0
- package/AISB/image/aisb.b5.math_proof.svg +16 -0
- package/AISB/image/aisb.b6.research_process.svg +16 -0
- package/AISB/image/aisb.b7.multimodal_fusion.svg +16 -0
- package/AISB/image/aisb.b8.lifesci_drug.svg +16 -0
- package/AISB/image/aisb.b9.material_science.svg +16 -0
- package/README.md +132 -11
- package/bin/ds.js +376 -49
- package/docs/en/00_QUICK_START.md +135 -18
- package/docs/en/01_SETTINGS_REFERENCE.md +468 -96
- package/docs/en/02_START_RESEARCH_GUIDE.md +26 -5
- package/docs/en/03_QQ_CONNECTOR_GUIDE.md +14 -3
- package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +2 -0
- package/docs/en/05_TUI_GUIDE.md +171 -2
- package/docs/en/07_MEMORY_AND_MCP.md +38 -2
- package/docs/en/09_DOCTOR.md +64 -4
- package/docs/en/10_WEIXIN_CONNECTOR_GUIDE.md +38 -1
- package/docs/en/11_LICENSE_AND_RISK.md +4 -0
- package/docs/en/12_GUIDED_WORKFLOW_TOUR.md +15 -0
- package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +9 -0
- package/docs/en/15_CODEX_PROVIDER_SETUP.md +622 -187
- package/docs/en/16_TELEGRAM_CONNECTOR_GUIDE.md +14 -0
- package/docs/en/17_WHATSAPP_CONNECTOR_GUIDE.md +14 -0
- package/docs/en/18_FEISHU_CONNECTOR_GUIDE.md +14 -0
- package/docs/en/21_LOCAL_MODEL_BACKENDS_GUIDE.md +105 -2
- package/docs/en/22_BENCHSTORE_YAML_REFERENCE.md +469 -0
- package/docs/en/23_BENCHSTORE_GITHUB_RELEASES_SPEC.md +316 -0
- package/docs/en/24_CLAUDE_CODE_PROVIDER_SETUP.md +469 -0
- package/docs/en/25_OPENCODE_PROVIDER_SETUP.md +653 -0
- package/docs/en/26_CITATION_AND_ATTRIBUTION.md +119 -0
- package/docs/en/27_KIMI_CODE_PROVIDER_SETUP.md +180 -0
- package/docs/en/28_DISCORD_CONNECTOR_GUIDE.md +61 -0
- package/docs/en/29_SLACK_CONNECTOR_GUIDE.md +60 -0
- package/docs/en/30_SETTINGS_CONTROL_CENTER_GUIDE.md +371 -0
- package/docs/en/{19_LOCAL_BROWSER_AUTH.md → 31_LOCAL_BROWSER_AUTH.md} +1 -1
- package/docs/en/32_WINDOWS_WSL2_DEPLOYMENT_GUIDE.md +273 -0
- package/docs/en/33_WORKSPACE_EXPLORER_QA.md +121 -0
- package/docs/en/91_DEVELOPMENT.md +29 -0
- package/docs/en/99_ACKNOWLEDGEMENTS.md +24 -19
- package/docs/en/README.md +44 -7
- package/docs/images/admin/admin-connectors-health-en.png +0 -0
- package/docs/images/admin/admin-controllers-en.png +0 -0
- package/docs/images/admin/admin-diagnostics-en.png +0 -0
- package/docs/images/admin/admin-errors-en.png +0 -0
- package/docs/images/admin/admin-issues-en.png +0 -0
- package/docs/images/admin/admin-logs-en.png +0 -0
- package/docs/images/admin/admin-quest-detail-en.png +0 -0
- package/docs/images/admin/admin-quests-en.png +0 -0
- package/docs/images/admin/admin-repairs-en.png +0 -0
- package/docs/images/admin/admin-runtime-en.png +0 -0
- package/docs/images/admin/admin-search-en.png +0 -0
- package/docs/images/admin/admin-stats-en.png +0 -0
- package/docs/images/admin/admin-summary-en.png +0 -0
- package/docs/images/connectors/connector-discord-en.png +0 -0
- package/docs/images/connectors/connector-feishu-en.png +0 -0
- package/docs/images/connectors/connector-lingzhu-en.png +0 -0
- package/docs/images/connectors/connector-qq-en.png +0 -0
- package/docs/images/connectors/connector-slack-en.png +0 -0
- package/docs/images/connectors/connector-telegram-en.png +0 -0
- package/docs/images/connectors/connector-weixin-en.png +0 -0
- package/docs/images/connectors/connector-whatsapp-en.png +0 -0
- package/docs/images/settings/settings-baselines-en.png +0 -0
- package/docs/images/settings/settings-config-en.png +0 -0
- package/docs/images/settings/settings-connectors-overview-en.png +0 -0
- package/docs/images/settings/settings-deepxiv-en.png +0 -0
- package/docs/images/settings/settings-mcp-servers-en.png +0 -0
- package/docs/images/settings/settings-plugins-en.png +0 -0
- package/docs/images/settings/settings-runners-en.png +0 -0
- package/docs/zh/00_QUICK_START.md +92 -17
- package/docs/zh/01_SETTINGS_REFERENCE.md +219 -98
- package/docs/zh/02_START_RESEARCH_GUIDE.md +26 -5
- package/docs/zh/05_TUI_GUIDE.md +171 -2
- package/docs/zh/07_MEMORY_AND_MCP.md +29 -2
- package/docs/zh/09_DOCTOR.md +39 -4
- package/docs/zh/10_WEIXIN_CONNECTOR_GUIDE.md +24 -1
- package/docs/zh/11_LICENSE_AND_RISK.md +4 -0
- package/docs/zh/12_GUIDED_WORKFLOW_TOUR.md +15 -0
- package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +9 -0
- package/docs/zh/15_CODEX_PROVIDER_SETUP.md +550 -188
- package/docs/zh/21_LOCAL_MODEL_BACKENDS_GUIDE.md +105 -2
- package/docs/zh/22_BENCHSTORE_YAML_REFERENCE.md +459 -0
- package/docs/zh/23_BENCHSTORE_GITHUB_RELEASES_SPEC.md +287 -0
- package/docs/zh/23_CLAUDE_RUNNER_GUIDE.md +103 -0
- package/docs/zh/24_CLAUDE_CODE_PROVIDER_SETUP.md +460 -0
- package/docs/zh/25_OPENCODE_PROVIDER_SETUP.md +660 -0
- package/docs/zh/26_CITATION_AND_ATTRIBUTION.md +102 -0
- package/docs/zh/27_KIMI_CODE_PROVIDER_SETUP.md +51 -0
- package/docs/zh/{19_LOCAL_BROWSER_AUTH.md → 31_LOCAL_BROWSER_AUTH.md} +1 -1
- package/docs/zh/32_WINDOWS_WSL2_DEPLOYMENT_GUIDE.md +264 -0
- package/docs/zh/33_WORKSPACE_EXPLORER_QA.md +127 -0
- package/docs/zh/99_ACKNOWLEDGEMENTS.md +23 -19
- package/docs/zh/README.md +29 -7
- package/install.sh +122 -16
- package/package.json +4 -1
- package/pyproject.toml +2 -1
- package/src/deepscientist/__init__.py +1 -1
- package/src/deepscientist/acp/envelope.py +13 -0
- package/src/deepscientist/admin/__init__.py +3 -0
- package/src/deepscientist/admin/charts.py +681 -0
- package/src/deepscientist/admin/logs.py +119 -0
- package/src/deepscientist/admin/repairs.py +217 -0
- package/src/deepscientist/admin/service.py +1310 -0
- package/src/deepscientist/admin/system_info.py +700 -0
- package/src/deepscientist/admin/tasks.py +465 -0
- package/src/deepscientist/admin/tool_metrics.py +600 -0
- package/src/deepscientist/artifact/guidance.py +8 -4
- package/src/deepscientist/artifact/schemas.py +115 -0
- package/src/deepscientist/artifact/service.py +4268 -260
- package/src/deepscientist/bash_exec/monitor.py +30 -3
- package/src/deepscientist/bash_exec/service.py +134 -1
- package/src/deepscientist/benchstore/__init__.py +4 -0
- package/src/deepscientist/benchstore/prompt_builder.py +224 -0
- package/src/deepscientist/benchstore/service.py +1716 -0
- package/src/deepscientist/channels/weixin_ilink.py +8 -1
- package/src/deepscientist/cli.py +92 -17
- package/src/deepscientist/codex_cli_compat.py +2 -2
- package/src/deepscientist/config/models.py +82 -11
- package/src/deepscientist/config/service.py +927 -91
- package/src/deepscientist/connector/weixin_support.py +48 -17
- package/src/deepscientist/daemon/api/handlers.py +697 -210
- package/src/deepscientist/daemon/api/router.py +76 -1
- package/src/deepscientist/daemon/app.py +1054 -51
- package/src/deepscientist/diagnostics/runner_failures.py +147 -0
- package/src/deepscientist/doctor.py +212 -65
- package/src/deepscientist/evidence_packets.py +590 -0
- package/src/deepscientist/home.py +52 -4
- package/src/deepscientist/kimi_cli_compat.py +50 -0
- package/src/deepscientist/latex_runtime.py +2 -2
- package/src/deepscientist/mcp/context.py +2 -0
- package/src/deepscientist/mcp/schemas.py +114 -0
- package/src/deepscientist/mcp/server.py +1566 -126
- package/src/deepscientist/memory/service.py +203 -16
- package/src/deepscientist/process_control.py +8 -1
- package/src/deepscientist/prompts/builder.py +836 -92
- package/src/deepscientist/quest/__init__.py +2 -2
- package/src/deepscientist/quest/layout.py +12 -1
- package/src/deepscientist/quest/node_traces.py +10 -0
- package/src/deepscientist/quest/service.py +1430 -139
- package/src/deepscientist/quest/stage_views.py +1 -1
- package/src/deepscientist/runners/__init__.py +18 -0
- package/src/deepscientist/runners/base.py +89 -1
- package/src/deepscientist/runners/builtins.py +13 -1
- package/src/deepscientist/runners/claude.py +391 -0
- package/src/deepscientist/runners/codex.py +421 -21
- package/src/deepscientist/runners/codex_telemetry.py +127 -0
- package/src/deepscientist/runners/kimi.py +334 -0
- package/src/deepscientist/runners/metadata.py +68 -0
- package/src/deepscientist/runners/opencode.py +414 -0
- package/src/deepscientist/runners/runtime_overrides.py +100 -0
- package/src/deepscientist/runners/simple_cli.py +538 -0
- package/src/deepscientist/runtime_storage.py +303 -0
- package/src/deepscientist/shared.py +61 -16
- package/src/deepscientist/skills/installer.py +37 -0
- package/src/deepscientist/skills/registry.py +2 -0
- package/src/deepscientist/tinytex.py +2 -2
- package/src/deepscientist/tui.py +10 -3
- package/src/prompts/benchstore/system.md +77 -0
- package/src/prompts/connectors/qq.md +33 -2
- package/src/prompts/connectors/weixin.md +208 -23
- package/src/prompts/contracts/admin_ops.md +74 -0
- package/src/prompts/contracts/admin_ops_knowledge.md +138 -0
- package/src/prompts/contracts/shared_interaction.md +5 -11
- package/src/prompts/start_setup/system.md +422 -0
- package/src/prompts/system.md +409 -315
- package/src/prompts/system_copilot.md +88 -12
- package/src/skills/analysis-campaign/SKILL.md +239 -578
- package/src/skills/analysis-campaign/references/artifact-flow-examples.md +102 -0
- package/src/skills/analysis-campaign/references/boundary-cases.md +98 -0
- package/src/skills/analysis-campaign/references/campaign-checklist-template.md +39 -24
- package/src/skills/analysis-campaign/references/campaign-design.md +26 -10
- package/src/skills/analysis-campaign/references/campaign-plan-template.md +53 -54
- package/src/skills/analysis-campaign/references/operational-guidance.md +97 -0
- package/src/skills/analysis-campaign/references/writing-facing-slice-examples.md +10 -20
- package/src/skills/baseline/SKILL.md +183 -461
- package/src/skills/baseline/references/artifact-flow-examples.md +106 -0
- package/src/skills/baseline/references/artifact-payload-examples.md +1 -1
- package/src/skills/baseline/references/baseline-checklist-template.md +27 -35
- package/src/skills/baseline/references/baseline-plan-template.md +37 -76
- package/src/skills/baseline/references/boundary-cases.md +86 -0
- package/src/skills/baseline/references/codebase-audit-checklist.md +2 -6
- package/src/skills/baseline/references/comparability-contract.md +7 -12
- package/src/skills/baseline/references/operational-guidance.md +56 -0
- package/src/skills/baseline/references/route-selection.md +5 -25
- package/src/skills/decision/SKILL.md +113 -306
- package/src/skills/decision/references/checkpoint-memory-template.md +47 -0
- package/src/skills/decision/references/operational-guidance.md +94 -0
- package/src/skills/decision/references/research-route-criteria.md +7 -8
- package/src/skills/decision/references/strategic-decision-template.md +13 -26
- package/src/skills/experiment/SKILL.md +132 -670
- package/src/skills/experiment/references/execution-playbook.md +374 -0
- package/src/skills/experiment/references/main-experiment-checklist-template.md +26 -2
- package/src/skills/experiment/references/main-experiment-plan-template.md +28 -17
- package/src/skills/experiment/references/operational-guidance.md +108 -0
- package/src/skills/finalize/SKILL.md +62 -0
- package/src/skills/finalize/references/checkpoint-memory-template.md +49 -0
- package/src/skills/finalize/references/resume-packet-template.md +7 -0
- package/src/skills/idea/SKILL.md +228 -15
- package/src/skills/idea/references/controlled-brainstorming-playbook.md +78 -0
- package/src/skills/idea/references/current-board-packet-template.md +61 -0
- package/src/skills/idea/references/high-value-idea-sourcing.md +119 -0
- package/src/skills/idea/references/idea-generation-playbook.md +21 -0
- package/src/skills/idea/references/idea-thinking-flow.md +6 -0
- package/src/skills/idea/references/literature-survey-template.md +3 -0
- package/src/skills/idea/references/objective-contract-template.md +54 -0
- package/src/skills/idea/references/outline-seeding-example.md +56 -0
- package/src/skills/idea/references/pre-idea-draft-template.md +105 -0
- package/src/skills/idea/references/related-work-playbook.md +75 -2
- package/src/skills/idea/references/research-history-playbook.md +114 -0
- package/src/skills/idea/references/selection-gate.md +58 -6
- package/src/skills/intake-audit/SKILL.md +43 -2
- package/src/skills/intake-audit/references/state-audit-template.md +10 -0
- package/src/skills/nature-data/SKILL.md +128 -0
- package/src/skills/nature-data/UPSTREAM_LICENSE.txt +21 -0
- package/src/skills/nature-data/agents/openai.yaml +4 -0
- package/src/skills/nature-data/references/chinese-author-alignment.md +84 -0
- package/src/skills/nature-data/references/fair-metadata-checklist.md +105 -0
- package/src/skills/nature-data/references/policy-principles.md +103 -0
- package/src/skills/nature-data/references/repository-and-identifiers.md +96 -0
- package/src/skills/nature-data/references/source-basis.md +54 -0
- package/src/skills/nature-data/references/statement-patterns.md +153 -0
- package/src/skills/nature-figure/SKILL.md +197 -0
- package/src/skills/nature-figure/UPSTREAM_LICENSE.txt +21 -0
- package/src/skills/nature-figure/agents/openai.yaml +4 -0
- package/src/skills/nature-figure/evals/evals.json +37 -0
- package/src/skills/nature-figure/references/api.md +428 -0
- package/src/skills/nature-figure/references/backend-selection.md +100 -0
- package/src/skills/nature-figure/references/chart-types.md +281 -0
- package/src/skills/nature-figure/references/common-patterns.md +349 -0
- package/src/skills/nature-figure/references/design-theory.md +436 -0
- package/src/skills/nature-figure/references/figure-contract.md +93 -0
- package/src/skills/nature-figure/references/nature-2026-observations.md +112 -0
- package/src/skills/nature-figure/references/qa-contract.md +119 -0
- package/src/skills/nature-figure/references/r-template-index.md +66 -0
- package/src/skills/nature-figure/references/r-workflow.md +161 -0
- package/src/skills/nature-figure/references/tutorials.md +250 -0
- package/src/skills/nature-paper2ppt/SKILL.md +507 -0
- package/src/skills/nature-paper2ppt/UPSTREAM_LICENSE.txt +21 -0
- package/src/skills/nature-paper2ppt/agents/openai.yaml +4 -0
- package/src/skills/nature-polishing/SKILL.md +385 -0
- package/src/skills/nature-polishing/UPSTREAM_LICENSE.txt +21 -0
- package/src/skills/nature-polishing/agents/openai.yaml +4 -0
- package/src/skills/nature-polishing/references/phrasebank-playbook.md +162 -0
- package/src/skills/nature-polishing/references/section-moves.md +240 -0
- package/src/skills/nature-polishing/references/style-guardrails.md +94 -0
- package/src/skills/nature-polishing/references/writing-strategy.md +148 -0
- package/src/skills/optimize/SKILL.md +177 -1568
- package/src/skills/optimize/references/brief-shaping-playbook.md +95 -0
- package/src/skills/optimize/references/candidate-board-template.md +13 -0
- package/src/skills/optimize/references/candidate-ranking-template.md +51 -0
- package/src/skills/optimize/references/codegen-route-playbook.md +50 -0
- package/src/skills/optimize/references/debug-response-template.md +29 -0
- package/src/skills/optimize/references/frontier-review-template.md +32 -0
- package/src/skills/optimize/references/fusion-playbook.md +36 -0
- package/src/skills/optimize/references/method-brief-template.md +73 -0
- package/src/skills/optimize/references/operational-guidance.md +621 -0
- package/src/skills/optimize/references/optimization-memory-template.md +30 -0
- package/src/skills/optimize/references/optimize-checklist-template.md +18 -0
- package/src/skills/optimize/references/plateau-response-playbook.md +28 -0
- package/src/skills/optimize/references/prompt-patterns.md +49 -0
- package/src/skills/paper-outline/SKILL.md +227 -0
- package/src/skills/paper-outline/references/outline-patterns.md +87 -0
- package/src/skills/paper-plot/SKILL.md +79 -0
- package/src/skills/paper-plot/agents/openai.yaml +4 -0
- package/src/skills/paper-plot/references/bar_grouped_hatch.md +96 -0
- package/src/skills/paper-plot/references/bar_paired_delta.md +72 -0
- package/src/skills/paper-plot/references/line_confidence_band.md +75 -0
- package/src/skills/paper-plot/references/line_loss_with_inset.md +65 -0
- package/src/skills/paper-plot/references/line_training_curve.md +44 -0
- package/src/skills/paper-plot/references/radar_dual_series.md +59 -0
- package/src/skills/paper-plot/references/scatter_broken_axis.md +59 -0
- package/src/skills/paper-plot/references/scatter_tsne_cluster.md +72 -0
- package/src/skills/paper-plot/scripts/bar_memevolve.py +109 -0
- package/src/skills/paper-plot/scripts/bar_spice.py +166 -0
- package/src/skills/paper-plot/scripts/line_aime.py +94 -0
- package/src/skills/paper-plot/scripts/line_loss_inset.py +157 -0
- package/src/skills/paper-plot/scripts/line_selfdistill.py +168 -0
- package/src/skills/paper-plot/scripts/radar_dora.py +151 -0
- package/src/skills/paper-plot/scripts/scatter_break.py +169 -0
- package/src/skills/paper-plot/scripts/scatter_tsne.py +133 -0
- package/src/skills/rebuttal/SKILL.md +9 -0
- package/src/skills/references/tool-usage-by-stage.md +438 -0
- package/src/skills/review/SKILL.md +105 -7
- package/src/skills/science/PROVENANCE.md +44 -0
- package/src/skills/science/SKILL.md +137 -0
- package/src/skills/science/references/artifact-science-tool.md +110 -0
- package/src/skills/science/references/claim-type-discipline.md +56 -0
- package/src/skills/science/references/domain-index.md +422 -0
- package/src/skills/science/references/hpc-via-bash-exec.md +42 -0
- package/src/skills/science/references/package-check-playbook.md +64 -0
- package/src/skills/science/references/package-index.min.json +3616 -0
- package/src/skills/science/references/packages/abinit.md +80 -0
- package/src/skills/science/references/packages/acts.md +73 -0
- package/src/skills/science/references/packages/aiida-core.md +80 -0
- package/src/skills/science/references/packages/alamode.md +80 -0
- package/src/skills/science/references/packages/amuse.md +88 -0
- package/src/skills/science/references/packages/anndata.md +88 -0
- package/src/skills/science/references/packages/arbor.md +80 -0
- package/src/skills/science/references/packages/arc.md +73 -0
- package/src/skills/science/references/packages/astropy.md +88 -0
- package/src/skills/science/references/packages/astroquery.md +88 -0
- package/src/skills/science/references/packages/atomate2.md +80 -0
- package/src/skills/science/references/packages/atomsmltr.md +73 -0
- package/src/skills/science/references/packages/awkward.md +73 -0
- package/src/skills/science/references/packages/batman.md +88 -0
- package/src/skills/science/references/packages/biopython.md +88 -0
- package/src/skills/science/references/packages/bloqade.md +73 -0
- package/src/skills/science/references/packages/brian2.md +73 -0
- package/src/skills/science/references/packages/bullet3.md +73 -0
- package/src/skills/science/references/packages/calculix.md +80 -0
- package/src/skills/science/references/packages/cantera.md +73 -0
- package/src/skills/science/references/packages/cavity-md-ipi.md +80 -0
- package/src/skills/science/references/packages/ccdproc.md +88 -0
- package/src/skills/science/references/packages/celerite2.md +88 -0
- package/src/skills/science/references/packages/cellrank.md +73 -0
- package/src/skills/science/references/packages/cesm.md +80 -0
- package/src/skills/science/references/packages/chemicals.md +73 -0
- package/src/skills/science/references/packages/chempy.md +73 -0
- package/src/skills/science/references/packages/cirq.md +73 -0
- package/src/skills/science/references/packages/coffea.md +73 -0
- package/src/skills/science/references/packages/cp2k.md +88 -0
- package/src/skills/science/references/packages/custodian.md +80 -0
- package/src/skills/science/references/packages/dart.md +73 -0
- package/src/skills/science/references/packages/datamol.md +88 -0
- package/src/skills/science/references/packages/dd4hep.md +73 -0
- package/src/skills/science/references/packages/dealii.md +80 -0
- package/src/skills/science/references/packages/deepchem.md +88 -0
- package/src/skills/science/references/packages/delphes.md +73 -0
- package/src/skills/science/references/packages/devito.md +80 -0
- package/src/skills/science/references/packages/dftb.md +88 -0
- package/src/skills/science/references/packages/dftd4.md +88 -0
- package/src/skills/science/references/packages/dftk-jl.md +80 -0
- package/src/skills/science/references/packages/dolfinx.md +80 -0
- package/src/skills/science/references/packages/drake.md +73 -0
- package/src/skills/science/references/packages/dumux.md +73 -0
- package/src/skills/science/references/packages/elk.md +80 -0
- package/src/skills/science/references/packages/elmerfem.md +80 -0
- package/src/skills/science/references/packages/enzo-e.md +88 -0
- package/src/skills/science/references/packages/espresso.md +80 -0
- package/src/skills/science/references/packages/exoplanet.md +88 -0
- package/src/skills/science/references/packages/fairroot.md +73 -0
- package/src/skills/science/references/packages/fbpic.md +80 -0
- package/src/skills/science/references/packages/fdtdbath-meep.md +80 -0
- package/src/skills/science/references/packages/geant4.md +73 -0
- package/src/skills/science/references/packages/geosx.md +80 -0
- package/src/skills/science/references/packages/gprmax.md +80 -0
- package/src/skills/science/references/packages/gromacs.md +80 -0
- package/src/skills/science/references/packages/gwaslab.md +73 -0
- package/src/skills/science/references/packages/gz-sim.md +73 -0
- package/src/skills/science/references/packages/hail.md +88 -0
- package/src/skills/science/references/packages/hiphive.md +80 -0
- package/src/skills/science/references/packages/hoomd-blue.md +80 -0
- package/src/skills/science/references/packages/itensor.md +73 -0
- package/src/skills/science/references/packages/itensors-jl.md +73 -0
- package/src/skills/science/references/packages/jdftx.md +73 -0
- package/src/skills/science/references/packages/jobflow.md +80 -0
- package/src/skills/science/references/packages/kadanoffbaym-jl.md +73 -0
- package/src/skills/science/references/packages/kite.md +80 -0
- package/src/skills/science/references/packages/kratos.md +80 -0
- package/src/skills/science/references/packages/kwant.md +73 -0
- package/src/skills/science/references/packages/lammps.md +80 -0
- package/src/skills/science/references/packages/lightkurve.md +88 -0
- package/src/skills/science/references/packages/limix.md +73 -0
- package/src/skills/science/references/packages/maxwelllink.md +80 -0
- package/src/skills/science/references/packages/mcdc.md +73 -0
- package/src/skills/science/references/packages/meep.md +80 -0
- package/src/skills/science/references/packages/mfem.md +80 -0
- package/src/skills/science/references/packages/mitgcm.md +73 -0
- package/src/skills/science/references/packages/modflow6.md +73 -0
- package/src/skills/science/references/packages/molecool.md +73 -0
- package/src/skills/science/references/packages/mom6.md +73 -0
- package/src/skills/science/references/packages/moose.md +80 -0
- package/src/skills/science/references/packages/mpas-model.md +73 -0
- package/src/skills/science/references/packages/mujoco.md +73 -0
- package/src/skills/science/references/packages/mumax3.md +73 -0
- package/src/skills/science/references/packages/nekrs.md +80 -0
- package/src/skills/science/references/packages/nessi.md +73 -0
- package/src/skills/science/references/packages/nest-simulator.md +73 -0
- package/src/skills/science/references/packages/netket.md +73 -0
- package/src/skills/science/references/packages/neuron.md +73 -0
- package/src/skills/science/references/packages/nextflow.md +88 -0
- package/src/skills/science/references/packages/nwchem.md +88 -0
- package/src/skills/science/references/packages/openbabel.md +88 -0
- package/src/skills/science/references/packages/openems.md +80 -0
- package/src/skills/science/references/packages/openff-toolkit.md +88 -0
- package/src/skills/science/references/packages/openfoam-dev.md +80 -0
- package/src/skills/science/references/packages/openmc.md +73 -0
- package/src/skills/science/references/packages/openmm.md +80 -0
- package/src/skills/science/references/packages/openmoc.md +73 -0
- package/src/skills/science/references/packages/openmx.md +80 -0
- package/src/skills/science/references/packages/opensees.md +80 -0
- package/src/skills/science/references/packages/opensn.md +80 -0
- package/src/skills/science/references/packages/opm-simulators.md +73 -0
- package/src/skills/science/references/packages/oqupy.md +73 -0
- package/src/skills/science/references/packages/packmol.md +80 -0
- package/src/skills/science/references/packages/palabos.md +80 -0
- package/src/skills/science/references/packages/parflow.md +80 -0
- package/src/skills/science/references/packages/pennylane.md +88 -0
- package/src/skills/science/references/packages/perceval.md +73 -0
- package/src/skills/science/references/packages/phono3py.md +73 -0
- package/src/skills/science/references/packages/phonopy.md +73 -0
- package/src/skills/science/references/packages/photutils.md +88 -0
- package/src/skills/science/references/packages/picongpu.md +80 -0
- package/src/skills/science/references/packages/plink-ng.md +88 -0
- package/src/skills/science/references/packages/precice.md +73 -0
- package/src/skills/science/references/packages/psc.md +80 -0
- package/src/skills/science/references/packages/psi4.md +88 -0
- package/src/skills/science/references/packages/pybinding.md +73 -0
- package/src/skills/science/references/packages/pyfr.md +80 -0
- package/src/skills/science/references/packages/pyhf.md +73 -0
- package/src/skills/science/references/packages/pyiron_base.md +80 -0
- package/src/skills/science/references/packages/pylcp.md +73 -0
- package/src/skills/science/references/packages/pylith.md +80 -0
- package/src/skills/science/references/packages/pynbody.md +88 -0
- package/src/skills/science/references/packages/pysam.md +88 -0
- package/src/skills/science/references/packages/pyscf.md +88 -0
- package/src/skills/science/references/packages/q-e.md +73 -0
- package/src/skills/science/references/packages/qibo.md +73 -0
- package/src/skills/science/references/packages/qiskit.md +73 -0
- package/src/skills/science/references/packages/quantica-jl.md +73 -0
- package/src/skills/science/references/packages/quantumoptics-jl.md +73 -0
- package/src/skills/science/references/packages/quimb.md +73 -0
- package/src/skills/science/references/packages/qulacs.md +73 -0
- package/src/skills/science/references/packages/qutip.md +73 -0
- package/src/skills/science/references/packages/rdkit.md +88 -0
- package/src/skills/science/references/packages/rmg-py.md +73 -0
- package/src/skills/science/references/packages/root.md +73 -0
- package/src/skills/science/references/packages/scanpy.md +88 -0
- package/src/skills/science/references/packages/scikit-allel.md +88 -0
- package/src/skills/science/references/packages/scikit-bio.md +88 -0
- package/src/skills/science/references/packages/scqubits.md +73 -0
- package/src/skills/science/references/packages/scuff-em.md +80 -0
- package/src/skills/science/references/packages/scvi-tools.md +73 -0
- package/src/skills/science/references/packages/seissol.md +73 -0
- package/src/skills/science/references/packages/sfepy.md +80 -0
- package/src/skills/science/references/packages/sisl.md +73 -0
- package/src/skills/science/references/packages/smilei.md +80 -0
- package/src/skills/science/references/packages/snakemake.md +88 -0
- package/src/skills/science/references/packages/specfem3d-globe.md +80 -0
- package/src/skills/science/references/packages/specutils.md +88 -0
- package/src/skills/science/references/packages/spglib.md +80 -0
- package/src/skills/science/references/packages/squidpy.md +88 -0
- package/src/skills/science/references/packages/starry.md +88 -0
- package/src/skills/science/references/packages/strawberryfields.md +73 -0
- package/src/skills/science/references/packages/su2.md +80 -0
- package/src/skills/science/references/packages/sunny-jl.md +73 -0
- package/src/skills/science/references/packages/sw4.md +73 -0
- package/src/skills/science/references/packages/swift.md +88 -0
- package/src/skills/science/references/packages/tdnegf.md +73 -0
- package/src/skills/science/references/packages/tenpy.md +73 -0
- package/src/skills/science/references/packages/thermo.md +73 -0
- package/src/skills/science/references/packages/tkwant.md +73 -0
- package/src/skills/science/references/packages/tvb-root.md +73 -0
- package/src/skills/science/references/packages/uproot5.md +73 -0
- package/src/skills/science/references/packages/vampire.md +80 -0
- package/src/skills/science/references/packages/wannier_tools.md +73 -0
- package/src/skills/science/references/packages/warpx.md +80 -0
- package/src/skills/science/references/packages/wrf.md +73 -0
- package/src/skills/science/references/packages/xtb.md +88 -0
- package/src/skills/science/references/packages/yt.md +73 -0
- package/src/skills/science/references/science-task-brief-template.md +71 -0
- package/src/skills/scout/SKILL.md +83 -425
- package/src/skills/scout/references/literature-scout-template.md +5 -24
- package/src/skills/scout/references/operational-guidance.md +191 -0
- package/src/skills/scout/references/paper-triage-playbook.md +11 -35
- package/src/skills/write/SKILL.md +744 -1246
- package/src/skills/write/references/experiments_analysis_patterns.md +129 -0
- package/src/skills/write/references/oral_package_patterns.md +252 -0
- package/src/skills/write/references/oral_writing_principles.md +291 -0
- package/src/skills/write/references/section_rewrite_checklist.md +234 -0
- package/src/tui/dist/app/AppContainer.js +1314 -27
- package/src/tui/dist/components/Composer.js +26 -1
- package/src/tui/dist/components/ConfigScreen.js +2 -1
- package/src/tui/dist/components/InputPrompt.js +25 -9
- package/src/tui/dist/components/MainContent.js +18 -3
- package/src/tui/dist/components/QuestScreen.js +3 -2
- package/src/tui/dist/components/UtilityScreen.js +37 -0
- package/src/tui/dist/hooks/useSafeInput.js +10 -0
- package/src/tui/dist/index.js +13 -1
- package/src/tui/dist/layouts/DefaultAppLayout.js +11 -8
- package/src/tui/dist/lib/api.js +89 -1
- package/src/tui/package.json +1 -1
- package/src/ui/dist/assets/{AnalysisPlugin-BCKAfjba.js → AnalysisPlugin-CA94NGmI.js} +1 -1
- package/src/ui/dist/assets/CliPlugin-DHBzphZU.js +79 -0
- package/src/ui/dist/assets/CodeEditorPlugin-BOFwD2rn.js +2 -0
- package/src/ui/dist/assets/{CodeViewerPlugin-CbaFRrUU.js → CodeViewerPlugin-CqDpgjik.js} +4 -4
- package/src/ui/dist/assets/{DocViewerPlugin-DAjLVeQD.js → DocViewerPlugin-UDBgt8-4.js} +3 -3
- package/src/ui/dist/assets/GitCommitViewerPlugin-BmHtZ0bZ.js +6 -0
- package/src/ui/dist/assets/{GitDiffViewerPlugin-CQACjoAA.js → GitDiffViewerPlugin-CAxjNorQ.js} +2 -2
- package/src/ui/dist/assets/{GitSnapshotViewer-0r4nLPke.js → GitSnapshotViewer-CweA6VON.js} +2 -2
- package/src/ui/dist/assets/{ImageViewerPlugin-nBOmI2v_.js → ImageViewerPlugin-C8wHGvGN.js} +5 -5
- package/src/ui/dist/assets/LabPlugin-COyyLUol.js +32 -0
- package/src/ui/dist/assets/{LatexPlugin-ZwtV8pIp.js → LatexPlugin-BQjAaA5J.js} +4 -4
- package/src/ui/dist/assets/{MarkdownViewerPlugin-DKqVfKyW.js → MarkdownViewerPlugin-Dy1NE2dI.js} +3 -3
- package/src/ui/dist/assets/{MarketplacePlugin-BwxStZ9D.js → MarketplacePlugin-DMIZtEJ2.js} +2 -2
- package/src/ui/dist/assets/NotebookEditor-CFHMq_Qt.js +91 -0
- package/src/ui/dist/assets/{NotebookEditor-DB9N_T9q.js → NotebookEditor-WFyd8Ybt.js} +3 -3
- package/src/ui/dist/assets/{PdfLoader-eWBONbQP.js → PdfLoader-CLE5u5TS.js} +3 -3
- package/src/ui/dist/assets/{PdfMarkdownPlugin-D22YOZL3.js → PdfMarkdownPlugin-_iNK_H83.js} +1 -1
- package/src/ui/dist/assets/PdfViewerPlugin-DgWsbInT.js +22 -0
- package/src/ui/dist/assets/SearchPlugin-DrZmn5iw.js +11 -0
- package/src/ui/dist/assets/{TextViewerPlugin-C5xqeeUH.js → TextViewerPlugin-D1-T3aC7.js} +4 -4
- package/src/ui/dist/assets/branding/runner-claude.svg +107 -0
- package/src/ui/dist/assets/branding/runner-codex.svg +10 -0
- package/src/ui/dist/assets/branding/runner-kimi.svg +14 -0
- package/src/ui/dist/assets/branding/runner-opencode.svg +7 -0
- package/src/ui/dist/assets/cli-store-CoZ-x5Ip.js +1 -0
- package/src/ui/dist/assets/{code-WlFHE7z_.js → code-DbsmSd3Y.js} +1 -1
- package/src/ui/dist/assets/file-diff-panel-DsvyRz47.js +1 -0
- package/src/ui/dist/assets/{wrap-text-BC-Hltpd.js → file-jump-queue-DeQBikaw.js} +3 -3
- package/src/ui/dist/assets/{file-socket-CfQPKQKj.js → file-socket-DA5XIx88.js} +1 -1
- package/src/ui/dist/assets/fonts/ds-fonts.css +50 -4
- package/src/ui/dist/assets/images/deepxiv/register-guide.png +0 -0
- package/src/ui/dist/assets/index-39vY9LmZ.js +1 -0
- package/src/ui/dist/assets/{index-CwNu1aH4.js → index-BsO46tJA.js} +1 -1
- package/src/ui/dist/assets/index-CHzJ2xtB.js +3530 -0
- package/src/ui/dist/assets/index-DH-zxoZ3.css +33 -0
- package/src/ui/dist/assets/{plugin-notebook-HbW2K-1c.js → plugin-notebook-JRhysCqj.js} +2 -2
- package/src/ui/dist/assets/{project-sync-C9IdzdZW.js → project-sync-DPmWKmKD.js} +1 -1
- package/src/ui/dist/assets/{zoom-out-E_gaeAxL.js → zoom-out-DAukFWen.js} +3 -3
- package/src/ui/dist/index.html +3 -3
- package/src/skills/analysis-campaign/references/artifact-orchestration.md +0 -58
- package/src/skills/baseline/references/memory-playbook.md +0 -40
- package/src/skills/baseline/references/publishable-baseline-package.md +0 -30
- package/src/skills/write/references/outline-evidence-contract-example.md +0 -107
- package/src/skills/write/references/paper-experiment-matrix-template.md +0 -131
- package/src/skills/write/references/paper-section-playbook.md +0 -64
- package/src/skills/write/references/reviewer-first-writing.md +0 -64
- package/src/skills/write/references/revision-checklist.md +0 -70
- package/src/skills/write/references/section-contracts.md +0 -82
- package/src/skills/write/references/sentence-level-proofing.md +0 -49
- package/src/ui/dist/assets/AiManusChatView-Bv-Z8YpU.js +0 -204
- package/src/ui/dist/assets/CliPlugin-BCKcpc35.js +0 -109
- package/src/ui/dist/assets/CodeEditorPlugin-DbOfSJ8K.js +0 -2
- package/src/ui/dist/assets/GitCommitViewerPlugin-CIUqbUDO.js +0 -1
- package/src/ui/dist/assets/LabCopilotPanel-BHxOxF4z.js +0 -14
- package/src/ui/dist/assets/LabPlugin-BKoZGs95.js +0 -22
- package/src/ui/dist/assets/NotebookEditor-BEQhaQbt.js +0 -81
- package/src/ui/dist/assets/PdfViewerPlugin-c-RK9DLM.js +0 -17
- package/src/ui/dist/assets/SearchPlugin-CxF9ytAx.js +0 -16
- package/src/ui/dist/assets/VNCViewer-BoLGLnHz.js +0 -11
- package/src/ui/dist/assets/bot-DREQOxzP.js +0 -6
- package/src/ui/dist/assets/chevron-up-C9Qpx4DE.js +0 -6
- package/src/ui/dist/assets/file-content-BZMz3RYp.js +0 -1
- package/src/ui/dist/assets/file-diff-panel-CQhw0jS2.js +0 -1
- package/src/ui/dist/assets/file-jump-queue-DA-SdG__.js +0 -1
- package/src/ui/dist/assets/git-commit-horizontal-DxZ8DCZh.js +0 -6
- package/src/ui/dist/assets/image-Bgl4VIyx.js +0 -6
- package/src/ui/dist/assets/index-BpV6lusQ.css +0 -33
- package/src/ui/dist/assets/index-CBNVuWcP.js +0 -2496
- package/src/ui/dist/assets/index-DrUnlf6K.js +0 -1
- package/src/ui/dist/assets/index-NW-h8VzN.js +0 -1
- package/src/ui/dist/assets/pdf-effect-queue-J8OnM0jE.js +0 -6
- package/src/ui/dist/assets/popover-CLc0pPP8.js +0 -1
- package/src/ui/dist/assets/select-Cs2PmzwL.js +0 -11
- package/src/ui/dist/assets/sigma-ClKcHAXm.js +0 -6
- package/src/ui/dist/assets/trash-DwpbFr3w.js +0 -11
- package/src/ui/dist/assets/useCliAccess-NQ8m0Let.js +0 -1
- package/src/ui/dist/assets/useFileDiffOverlay-FuhcnKiw.js +0 -1
package/bin/ds.js
CHANGED
|
@@ -36,12 +36,39 @@ const pythonCommands = new Set([
|
|
|
36
36
|
const UPDATE_PACKAGE_NAME = String(packageJson.name || '@researai/deepscientist').trim() || '@researai/deepscientist';
|
|
37
37
|
const UPDATE_CHECK_TTL_MS = 12 * 60 * 60 * 1000;
|
|
38
38
|
|
|
39
|
-
const optionsWithValues = new Set(['--home', '--host', '--port', '--quest-id', '--mode', '--proxy', '--codex-profile', '--codex', '--auth']);
|
|
39
|
+
const optionsWithValues = new Set(['--home', '--host', '--port', '--quest-id', '--mode', '--proxy', '--codex-profile', '--codex', '--auth', '--runner', '--debug-log']);
|
|
40
40
|
|
|
41
|
-
function
|
|
41
|
+
function normalizeRunnerName(value, fallback = '') {
|
|
42
|
+
const normalized = String(value || '')
|
|
43
|
+
.trim()
|
|
44
|
+
.toLowerCase()
|
|
45
|
+
.replace(/_/g, '-');
|
|
46
|
+
if (!normalized) return fallback;
|
|
47
|
+
if (normalized === 'claude-code' || normalized === 'claudecode') return 'claude';
|
|
48
|
+
if (normalized === 'kimi-code' || normalized === 'kimicode') return 'kimi';
|
|
49
|
+
if (normalized === 'open-code' || normalized === 'open code' || normalized === 'opencode-ai' || normalized === 'opencodeai') return 'opencode';
|
|
50
|
+
return normalized.replace(/-/g, '');
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function runnerDisplayName(value) {
|
|
54
|
+
const normalized = normalizeRunnerName(value, 'codex');
|
|
55
|
+
return {
|
|
56
|
+
codex: 'Codex',
|
|
57
|
+
claude: 'Claude Code',
|
|
58
|
+
kimi: 'Kimi Code',
|
|
59
|
+
opencode: 'OpenCode',
|
|
60
|
+
}[normalized] || normalized || 'runner';
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function buildCodexOverrideEnv({ yolo = true, profile = null, binary = null, runner = null } = {}) {
|
|
42
64
|
const normalizedProfile = typeof profile === 'string' ? profile.trim() : '';
|
|
43
65
|
const normalizedBinary = typeof binary === 'string' ? binary.trim() : '';
|
|
66
|
+
const normalizedRunner = normalizeRunnerName(runner);
|
|
44
67
|
const overrides = {};
|
|
68
|
+
if (normalizedRunner) {
|
|
69
|
+
overrides.DEEPSCIENTIST_DEFAULT_RUNNER = normalizedRunner;
|
|
70
|
+
overrides.DEEPSCIENTIST_ENABLE_RUNNER = normalizedRunner;
|
|
71
|
+
}
|
|
45
72
|
if (normalizedBinary) {
|
|
46
73
|
overrides.DEEPSCIENTIST_CODEX_BINARY = normalizedBinary;
|
|
47
74
|
}
|
|
@@ -152,6 +179,7 @@ Usage:
|
|
|
152
179
|
ds --restart
|
|
153
180
|
ds --status
|
|
154
181
|
ds doctor
|
|
182
|
+
ds --runner claude
|
|
155
183
|
ds latex status
|
|
156
184
|
ds --home ~/DeepScientist --port 20999
|
|
157
185
|
|
|
@@ -161,6 +189,8 @@ Launcher flags:
|
|
|
161
189
|
--auth [true|false] Require a 16-character local browser password. Default is false
|
|
162
190
|
--tui Start the terminal workspace only
|
|
163
191
|
--both Start web + terminal workspace together
|
|
192
|
+
--debug Show the TUI debug strip and write redacted JSONL snapshots when TUI is open
|
|
193
|
+
--debug-log <path> Write TUI debug snapshots to this JSONL file. Default: /tmp/deepscientist_tui_debug.jsonl
|
|
164
194
|
--no-browser Do not auto-open the browser
|
|
165
195
|
--daemon-only Start the managed daemon and exit
|
|
166
196
|
--status Print managed daemon health as JSON
|
|
@@ -170,6 +200,7 @@ Launcher flags:
|
|
|
170
200
|
--here Create/use ./DeepScientist under the current working directory as home
|
|
171
201
|
--proxy <url> Use an outbound HTTP/WS proxy for npm and Python runtime traffic
|
|
172
202
|
--yolo [true|false] Control Codex YOLO mode. Default is true; pass false to restore on-request + workspace-write
|
|
203
|
+
--runner <name> Select builtin runner for this launch: codex, claude, kimi, or opencode
|
|
173
204
|
--codex-profile <id> Run DeepScientist with a specific Codex profile, for example \`m27\`
|
|
174
205
|
--codex <path> Run DeepScientist with a specific Codex executable path for this launch
|
|
175
206
|
--quest-id <id> Open the TUI on one quest directly
|
|
@@ -610,6 +641,54 @@ function resolveHome(args) {
|
|
|
610
641
|
return path.join(os.homedir(), 'DeepScientist');
|
|
611
642
|
}
|
|
612
643
|
|
|
644
|
+
function hasManagedDaemonState(home) {
|
|
645
|
+
const state = readDaemonState(home);
|
|
646
|
+
return Boolean(
|
|
647
|
+
state
|
|
648
|
+
&& typeof state === 'object'
|
|
649
|
+
&& (
|
|
650
|
+
state.daemon_id
|
|
651
|
+
|| state.pid
|
|
652
|
+
|| state.url
|
|
653
|
+
|| state.launch_url
|
|
654
|
+
|| state.home
|
|
655
|
+
)
|
|
656
|
+
);
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
function resolveManagementHome(rawArgs, options = {}) {
|
|
660
|
+
if (
|
|
661
|
+
options.home
|
|
662
|
+
|| rawArgs.includes('--here')
|
|
663
|
+
|| process.env.DEEPSCIENTIST_HOME
|
|
664
|
+
|| process.env.DS_HOME
|
|
665
|
+
) {
|
|
666
|
+
return options.home || resolveHome(rawArgs);
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
const cwdHome = normalizeHomePath(path.join(process.cwd(), 'DeepScientist'));
|
|
670
|
+
if (hasManagedDaemonState(cwdHome)) {
|
|
671
|
+
return cwdHome;
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
const defaultHome = normalizeHomePath(resolveHome(rawArgs));
|
|
675
|
+
if (hasManagedDaemonState(defaultHome)) {
|
|
676
|
+
return defaultHome;
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
const installs = readInstallIndex()
|
|
680
|
+
.installs
|
|
681
|
+
.map((item) => normalizeInstallRecord(item))
|
|
682
|
+
.filter(Boolean);
|
|
683
|
+
const indexedHomes = [...new Set(installs.map((item) => item.home).filter(Boolean))];
|
|
684
|
+
const managedHomes = indexedHomes.filter((home) => hasManagedDaemonState(home));
|
|
685
|
+
if (managedHomes.length === 1) {
|
|
686
|
+
return managedHomes[0];
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
return defaultHome;
|
|
690
|
+
}
|
|
691
|
+
|
|
613
692
|
function formatHttpHost(host) {
|
|
614
693
|
const normalized = String(host || '').trim();
|
|
615
694
|
if (!normalized) {
|
|
@@ -890,15 +969,19 @@ function pythonVersionText(probe) {
|
|
|
890
969
|
return version;
|
|
891
970
|
}
|
|
892
971
|
|
|
893
|
-
function renderLaunchHints({ home, url, bindUrl, pythonSelection, yolo, authEnabled, authToken }) {
|
|
972
|
+
function renderLaunchHints({ home, url, bindUrl, pythonSelection, yolo, authEnabled, authToken, runnerName }) {
|
|
973
|
+
const normalizedRunner = normalizeRunnerName(runnerName, 'codex');
|
|
894
974
|
const runtimeRows = [
|
|
895
975
|
['Version', packageJson.version],
|
|
896
976
|
['Home', truncateMiddle(home)],
|
|
897
977
|
['Browser URL', url],
|
|
898
978
|
['Bind URL', bindUrl],
|
|
899
979
|
['Python', truncateMiddle(pythonVersionText(pythonSelection))],
|
|
900
|
-
['
|
|
980
|
+
['Runner', runnerDisplayName(normalizedRunner)],
|
|
901
981
|
];
|
|
982
|
+
if (normalizedRunner === 'codex') {
|
|
983
|
+
runtimeRows.push(['Codex mode', yolo ? 'YOLO (never + danger-full-access)' : 'Default (on-request + workspace-write)']);
|
|
984
|
+
}
|
|
902
985
|
if (authEnabled && authToken) {
|
|
903
986
|
runtimeRows.splice(4, 0, ['Auth token', authToken]);
|
|
904
987
|
}
|
|
@@ -940,6 +1023,7 @@ function printLaunchCard({
|
|
|
940
1023
|
yolo,
|
|
941
1024
|
authEnabled,
|
|
942
1025
|
authToken,
|
|
1026
|
+
runnerName,
|
|
943
1027
|
}) {
|
|
944
1028
|
const width = Math.max(72, Math.min(process.stdout.columns || 100, 108));
|
|
945
1029
|
const divider = colorize('\u001B[38;5;245m', '─'.repeat(Math.max(36, width - 6)));
|
|
@@ -1009,7 +1093,7 @@ function printLaunchCard({
|
|
|
1009
1093
|
console.log(centerText('Need to move this installation later? Use ds migrate /new/path.', width));
|
|
1010
1094
|
console.log(centerText(officialRepositoryLine(), width));
|
|
1011
1095
|
console.log('');
|
|
1012
|
-
renderLaunchHints({ home, url, bindUrl, pythonSelection, yolo, authEnabled, authToken });
|
|
1096
|
+
renderLaunchHints({ home, url, bindUrl, pythonSelection, yolo, authEnabled, authToken, runnerName });
|
|
1013
1097
|
}
|
|
1014
1098
|
|
|
1015
1099
|
function escapeHtml(value) {
|
|
@@ -1021,21 +1105,28 @@ function escapeHtml(value) {
|
|
|
1021
1105
|
.replaceAll("'", ''');
|
|
1022
1106
|
}
|
|
1023
1107
|
|
|
1024
|
-
function
|
|
1108
|
+
function writeRunnerPreflightReport(home, runnerName, probe) {
|
|
1025
1109
|
const reportDir = path.join(home, 'runtime', 'preflight');
|
|
1026
1110
|
ensureDir(reportDir);
|
|
1027
|
-
const
|
|
1111
|
+
const normalizedRunner = normalizeRunnerName(runnerName, 'runner');
|
|
1112
|
+
const runnerLabel = {
|
|
1113
|
+
codex: 'Codex',
|
|
1114
|
+
claude: 'Claude Code',
|
|
1115
|
+
kimi: 'Kimi Code',
|
|
1116
|
+
opencode: 'OpenCode',
|
|
1117
|
+
}[normalizedRunner] || String(runnerName || 'runner').trim() || 'runner';
|
|
1118
|
+
const reportPath = path.join(reportDir, `${normalizedRunner}-preflight.html`);
|
|
1028
1119
|
const warnings = Array.isArray(probe?.warnings) ? probe.warnings : [];
|
|
1029
1120
|
const errors = Array.isArray(probe?.errors) ? probe.errors : [];
|
|
1030
1121
|
const guidance = Array.isArray(probe?.guidance) ? probe.guidance : [];
|
|
1031
1122
|
const details = probe && typeof probe.details === 'object' ? probe.details : {};
|
|
1032
1123
|
const profile = typeof details.profile === 'string' ? details.profile.trim() : '';
|
|
1033
|
-
const intro = profile
|
|
1034
|
-
? `DeepScientist blocked startup because the
|
|
1035
|
-
:
|
|
1036
|
-
const introZh = profile
|
|
1037
|
-
? `DeepScientist 启动前进行了
|
|
1038
|
-
:
|
|
1124
|
+
const intro = profile && normalizedRunner === 'codex'
|
|
1125
|
+
? `DeepScientist blocked startup because the ${runnerLabel} hello probe did not pass for profile \`${profile}\`. Verify that \`codex --profile ${profile}\` works on this machine and that the profile's provider-specific API key, Base URL, and model configuration are already set up.`
|
|
1126
|
+
: `DeepScientist blocked startup because the selected runner (${runnerLabel}) did not pass its startup probe. Start DeepScientist with a runner that already works, or enter the web workspace with the default runner and configure another runner later from Settings.`;
|
|
1127
|
+
const introZh = profile && normalizedRunner === 'codex'
|
|
1128
|
+
? `DeepScientist 启动前进行了 ${runnerLabel} 可用性检查,但 profile \`${profile}\` 的 hello 探测没有通过。请先确认 \`codex --profile ${profile}\` 在当前机器上可以正常启动,并确保该 profile 依赖的 provider API Key、Base URL 和模型配置都已经在 Codex 中配置好。`
|
|
1129
|
+
: `DeepScientist 启动前检查了所选 runner(${runnerLabel}),但它没有通过启动探测。你可以先用已经可用的默认 runner 进入 Web 工作区,再在 Settings 里配置或切换 Claude Code / Kimi Code / OpenCode。`;
|
|
1039
1130
|
const renderItems = (items, tone) =>
|
|
1040
1131
|
items
|
|
1041
1132
|
.map(
|
|
@@ -1048,7 +1139,7 @@ function writeCodexPreflightReport(home, probe) {
|
|
|
1048
1139
|
<head>
|
|
1049
1140
|
<meta charset="utf-8" />
|
|
1050
1141
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
1051
|
-
<title>DeepScientist
|
|
1142
|
+
<title>DeepScientist runner check failed</title>
|
|
1052
1143
|
<style>
|
|
1053
1144
|
:root { color-scheme: light dark; font-family: Inter, system-ui, sans-serif; }
|
|
1054
1145
|
body {
|
|
@@ -1095,12 +1186,12 @@ function writeCodexPreflightReport(home, probe) {
|
|
|
1095
1186
|
<body>
|
|
1096
1187
|
<main class="page">
|
|
1097
1188
|
<section class="panel">
|
|
1098
|
-
<h1>DeepScientist could not start
|
|
1189
|
+
<h1>DeepScientist could not start the selected runner</h1>
|
|
1099
1190
|
<p class="meta">${escapeHtml(intro)}</p>
|
|
1100
1191
|
<p class="meta">${escapeHtml(introZh)}</p>
|
|
1101
1192
|
|
|
1102
1193
|
<h2>Summary</h2>
|
|
1103
|
-
<p>${escapeHtml(probe?.summary ||
|
|
1194
|
+
<p>${escapeHtml(probe?.summary || `${runnerLabel} startup probe failed.`)}</p>
|
|
1104
1195
|
|
|
1105
1196
|
${errors.length ? `<h2>Errors</h2><ul>${renderItems(errors, 'error')}</ul>` : ''}
|
|
1106
1197
|
${warnings.length ? `<h2>Warnings</h2><ul>${renderItems(warnings, 'warn')}</ul>` : ''}
|
|
@@ -1143,6 +1234,171 @@ function writeCodexPreflightReport(home, probe) {
|
|
|
1143
1234
|
};
|
|
1144
1235
|
}
|
|
1145
1236
|
|
|
1237
|
+
|
|
1238
|
+
function readConfiguredDefaultRunner(home, fallback = 'codex') {
|
|
1239
|
+
const configPath = path.join(home, 'config', 'config.yaml');
|
|
1240
|
+
if (!fs.existsSync(configPath)) {
|
|
1241
|
+
return fallback;
|
|
1242
|
+
}
|
|
1243
|
+
try {
|
|
1244
|
+
const text = fs.readFileSync(configPath, 'utf8');
|
|
1245
|
+
const match = text.match(new RegExp("^\\s*default_runner:\\s*[\"']?([^\"'\\n]+)[\"']?\\s*$", "m"));
|
|
1246
|
+
const value = match ? String(match[1] || '').trim().toLowerCase() : '';
|
|
1247
|
+
return value || fallback;
|
|
1248
|
+
} catch {
|
|
1249
|
+
return fallback;
|
|
1250
|
+
}
|
|
1251
|
+
}
|
|
1252
|
+
|
|
1253
|
+
function readRunnerBootstrapState(home, runtimePython, runnerName, envOverrides = {}) {
|
|
1254
|
+
const snippet = [
|
|
1255
|
+
'import json, pathlib, sys',
|
|
1256
|
+
'from deepscientist.config import ConfigManager',
|
|
1257
|
+
'home = pathlib.Path(sys.argv[1])',
|
|
1258
|
+
'runner = str(sys.argv[2])',
|
|
1259
|
+
'manager = ConfigManager(home)',
|
|
1260
|
+
'print(json.dumps(manager.runner_bootstrap_state(runner), ensure_ascii=False))',
|
|
1261
|
+
].join('\n');
|
|
1262
|
+
const result = runSync(runtimePython, ['-c', snippet, home, runnerName], {
|
|
1263
|
+
capture: true,
|
|
1264
|
+
allowFailure: true,
|
|
1265
|
+
env: {
|
|
1266
|
+
...process.env,
|
|
1267
|
+
...envOverrides,
|
|
1268
|
+
},
|
|
1269
|
+
});
|
|
1270
|
+
if (result.status !== 0) {
|
|
1271
|
+
return { runner: runnerName, ready: false, last_checked_at: null, last_result: {} };
|
|
1272
|
+
}
|
|
1273
|
+
try {
|
|
1274
|
+
return JSON.parse(result.stdout || '{}');
|
|
1275
|
+
} catch {
|
|
1276
|
+
return { runner: runnerName, ready: false, last_checked_at: null, last_result: {} };
|
|
1277
|
+
}
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
function probeRunnerBootstrap(home, runtimePython, runnerName, envOverrides = {}) {
|
|
1281
|
+
const snippet = [
|
|
1282
|
+
'import json, pathlib, sys',
|
|
1283
|
+
'from deepscientist.config import ConfigManager',
|
|
1284
|
+
'home = pathlib.Path(sys.argv[1])',
|
|
1285
|
+
'runner = str(sys.argv[2])',
|
|
1286
|
+
'manager = ConfigManager(home)',
|
|
1287
|
+
'print(json.dumps(manager.probe_runner_bootstrap(runner, persist=True), ensure_ascii=False))',
|
|
1288
|
+
].join('\n');
|
|
1289
|
+
const result = runSync(runtimePython, ['-c', snippet, home, runnerName], {
|
|
1290
|
+
capture: true,
|
|
1291
|
+
allowFailure: true,
|
|
1292
|
+
env: {
|
|
1293
|
+
...process.env,
|
|
1294
|
+
...envOverrides,
|
|
1295
|
+
},
|
|
1296
|
+
});
|
|
1297
|
+
let payload = null;
|
|
1298
|
+
try {
|
|
1299
|
+
payload = JSON.parse(result.stdout || '{}');
|
|
1300
|
+
} catch {
|
|
1301
|
+
payload = null;
|
|
1302
|
+
}
|
|
1303
|
+
if (payload && typeof payload === 'object') {
|
|
1304
|
+
return payload;
|
|
1305
|
+
}
|
|
1306
|
+
return {
|
|
1307
|
+
ok: false,
|
|
1308
|
+
summary: `${runnerName} startup probe crashed before a structured result was returned.`,
|
|
1309
|
+
warnings: [],
|
|
1310
|
+
errors: [result.stderr || 'Unable to parse the startup probe result.'],
|
|
1311
|
+
details: {
|
|
1312
|
+
runner: runnerName,
|
|
1313
|
+
exit_code: result.status ?? null,
|
|
1314
|
+
stdout_excerpt: result.stdout || '',
|
|
1315
|
+
stderr_excerpt: result.stderr || '',
|
|
1316
|
+
},
|
|
1317
|
+
guidance: [
|
|
1318
|
+
`Run \`${runnerName}\` manually and complete any required setup.`,
|
|
1319
|
+
'Then start DeepScientist again.',
|
|
1320
|
+
],
|
|
1321
|
+
};
|
|
1322
|
+
}
|
|
1323
|
+
|
|
1324
|
+
function readEnabledRunnerNames(home, runtimePython, envOverrides = {}) {
|
|
1325
|
+
const snippet = [
|
|
1326
|
+
'import json, pathlib, sys',
|
|
1327
|
+
'from deepscientist.config import ConfigManager',
|
|
1328
|
+
'home = pathlib.Path(sys.argv[1])',
|
|
1329
|
+
'manager = ConfigManager(home)',
|
|
1330
|
+
'payload = manager.load_runners_config()',
|
|
1331
|
+
'print(json.dumps(sorted(name for name, cfg in payload.items() if isinstance(cfg, dict) and bool(cfg.get("enabled", False))), ensure_ascii=False))',
|
|
1332
|
+
].join('\n');
|
|
1333
|
+
const result = runSync(runtimePython, ['-c', snippet, home], {
|
|
1334
|
+
capture: true,
|
|
1335
|
+
allowFailure: true,
|
|
1336
|
+
env: {
|
|
1337
|
+
...process.env,
|
|
1338
|
+
...envOverrides,
|
|
1339
|
+
},
|
|
1340
|
+
});
|
|
1341
|
+
if (result.status !== 0) {
|
|
1342
|
+
return [];
|
|
1343
|
+
}
|
|
1344
|
+
try {
|
|
1345
|
+
const parsed = JSON.parse(result.stdout || '[]');
|
|
1346
|
+
return Array.isArray(parsed) ? parsed.map((item) => String(item || '').trim().toLowerCase()).filter(Boolean) : [];
|
|
1347
|
+
} catch {
|
|
1348
|
+
return [];
|
|
1349
|
+
}
|
|
1350
|
+
}
|
|
1351
|
+
|
|
1352
|
+
function readRunnerReadyState(home, runtimePython, runnerName, envOverrides = {}) {
|
|
1353
|
+
if (String(runnerName || '').trim().toLowerCase() === 'codex') {
|
|
1354
|
+
const state = readCodexBootstrapState(home, runtimePython, envOverrides);
|
|
1355
|
+
return { ready: Boolean(state.codex_ready), state };
|
|
1356
|
+
}
|
|
1357
|
+
const state = readRunnerBootstrapState(home, runtimePython, runnerName, envOverrides);
|
|
1358
|
+
return { ready: Boolean(state.ready), state };
|
|
1359
|
+
}
|
|
1360
|
+
|
|
1361
|
+
function probeRunnerReady(home, runtimePython, runnerName, envOverrides = {}) {
|
|
1362
|
+
if (String(runnerName || '').trim().toLowerCase() === 'codex') {
|
|
1363
|
+
return probeCodexBootstrap(home, runtimePython, envOverrides);
|
|
1364
|
+
}
|
|
1365
|
+
return probeRunnerBootstrap(home, runtimePython, runnerName, envOverrides);
|
|
1366
|
+
}
|
|
1367
|
+
|
|
1368
|
+
function resolveStartupRunner(home, runtimePython, preferredRunner, envOverrides = {}, options = {}) {
|
|
1369
|
+
const normalizedPreferred = normalizeRunnerName(preferredRunner, 'codex');
|
|
1370
|
+
const enabled = readEnabledRunnerNames(home, runtimePython, envOverrides);
|
|
1371
|
+
const allowFallback = options.allowFallback !== false;
|
|
1372
|
+
const ordered = allowFallback
|
|
1373
|
+
? [
|
|
1374
|
+
normalizedPreferred,
|
|
1375
|
+
...enabled.filter((name) => name !== normalizedPreferred),
|
|
1376
|
+
]
|
|
1377
|
+
: [normalizedPreferred];
|
|
1378
|
+
const seen = new Set();
|
|
1379
|
+
const candidates = ordered.filter((name) => {
|
|
1380
|
+
if (!name || seen.has(name)) return false;
|
|
1381
|
+
seen.add(name);
|
|
1382
|
+
return true;
|
|
1383
|
+
});
|
|
1384
|
+
|
|
1385
|
+
let preferredProbe = null;
|
|
1386
|
+
for (const runnerName of candidates) {
|
|
1387
|
+
const bootstrap = readRunnerReadyState(home, runtimePython, runnerName, envOverrides);
|
|
1388
|
+
if (bootstrap.ready) {
|
|
1389
|
+
return { ok: true, runnerName, preferredRunner: normalizedPreferred, fallback: runnerName !== normalizedPreferred, probe: null };
|
|
1390
|
+
}
|
|
1391
|
+
const probe = probeRunnerReady(home, runtimePython, runnerName, envOverrides);
|
|
1392
|
+
if (runnerName === normalizedPreferred) {
|
|
1393
|
+
preferredProbe = probe;
|
|
1394
|
+
}
|
|
1395
|
+
if (probe && probe.ok === true) {
|
|
1396
|
+
return { ok: true, runnerName, preferredRunner: normalizedPreferred, fallback: runnerName !== normalizedPreferred, probe };
|
|
1397
|
+
}
|
|
1398
|
+
}
|
|
1399
|
+
return { ok: false, runnerName: normalizedPreferred, preferredRunner: normalizedPreferred, fallback: false, probe: preferredProbe };
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1146
1402
|
function readCodexBootstrapState(home, runtimePython, envOverrides = {}) {
|
|
1147
1403
|
const snippet = [
|
|
1148
1404
|
'import json, pathlib, sys',
|
|
@@ -1211,10 +1467,12 @@ function probeCodexBootstrap(home, runtimePython, envOverrides = {}) {
|
|
|
1211
1467
|
};
|
|
1212
1468
|
}
|
|
1213
1469
|
|
|
1214
|
-
function
|
|
1215
|
-
const report =
|
|
1216
|
-
const
|
|
1217
|
-
error
|
|
1470
|
+
function createRunnerPreflightError(home, runnerName, probe) {
|
|
1471
|
+
const report = writeRunnerPreflightReport(home, runnerName, probe);
|
|
1472
|
+
const normalizedRunner = normalizeRunnerName(runnerName, 'codex');
|
|
1473
|
+
const error = new Error(probe?.summary || `${normalizedRunner} startup probe failed.`);
|
|
1474
|
+
error.code = 'DS_RUNNER_PREFLIGHT';
|
|
1475
|
+
error.runnerName = normalizedRunner;
|
|
1218
1476
|
error.reportPath = report.path;
|
|
1219
1477
|
error.reportUrl = report.url;
|
|
1220
1478
|
error.probe = probe;
|
|
@@ -1239,6 +1497,9 @@ function parseLauncherArgs(argv) {
|
|
|
1239
1497
|
let auth = null;
|
|
1240
1498
|
let codexProfile = null;
|
|
1241
1499
|
let codexBinary = null;
|
|
1500
|
+
let runner = null;
|
|
1501
|
+
let tuiDebug = false;
|
|
1502
|
+
let tuiDebugLogPath = null;
|
|
1242
1503
|
|
|
1243
1504
|
if (args[0] === 'ui') {
|
|
1244
1505
|
args.shift();
|
|
@@ -1257,6 +1518,7 @@ function parseLauncherArgs(argv) {
|
|
|
1257
1518
|
else if (arg === '--open-browser') openBrowser = true;
|
|
1258
1519
|
else if (arg === '--daemon-only') daemonOnly = true;
|
|
1259
1520
|
else if (arg === '--skip-update-check') skipUpdateCheck = true;
|
|
1521
|
+
else if (arg === '--debug') tuiDebug = true;
|
|
1260
1522
|
else if (arg === '--here') continue;
|
|
1261
1523
|
else {
|
|
1262
1524
|
const parsedYolo = parseYoloArg(args, index, yolo);
|
|
@@ -1284,6 +1546,11 @@ function parseLauncherArgs(argv) {
|
|
|
1284
1546
|
if (!next.ok) return { help: false, error: next.error };
|
|
1285
1547
|
codexBinary = next.value;
|
|
1286
1548
|
index += 1;
|
|
1549
|
+
} else if (arg === '--runner') {
|
|
1550
|
+
const next = readRequiredOptionValue(args, index, '--runner');
|
|
1551
|
+
if (!next.ok) return { help: false, error: next.error };
|
|
1552
|
+
runner = next.value;
|
|
1553
|
+
index += 1;
|
|
1287
1554
|
} else if (arg === '--host') {
|
|
1288
1555
|
const next = readRequiredOptionValue(args, index, '--host');
|
|
1289
1556
|
if (!next.ok) return { help: false, error: next.error };
|
|
@@ -1311,6 +1578,12 @@ function parseLauncherArgs(argv) {
|
|
|
1311
1578
|
if (!next.ok) return { help: false, error: next.error };
|
|
1312
1579
|
questId = next.value;
|
|
1313
1580
|
index += 1;
|
|
1581
|
+
} else if (arg === '--debug-log') {
|
|
1582
|
+
const next = readRequiredOptionValue(args, index, '--debug-log');
|
|
1583
|
+
if (!next.ok) return { help: false, error: next.error };
|
|
1584
|
+
tuiDebugLogPath = next.value;
|
|
1585
|
+
tuiDebug = true;
|
|
1586
|
+
index += 1;
|
|
1314
1587
|
} else if (arg === '--mode') {
|
|
1315
1588
|
const next = readRequiredOptionValue(args, index, '--mode');
|
|
1316
1589
|
if (!next.ok) return { help: false, error: next.error };
|
|
@@ -1341,10 +1614,13 @@ function parseLauncherArgs(argv) {
|
|
|
1341
1614
|
skipUpdateCheck,
|
|
1342
1615
|
yolo,
|
|
1343
1616
|
auth,
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1617
|
+
codexProfile,
|
|
1618
|
+
codexBinary,
|
|
1619
|
+
runner,
|
|
1620
|
+
tuiDebug,
|
|
1621
|
+
tuiDebugLogPath,
|
|
1622
|
+
error: null,
|
|
1623
|
+
};
|
|
1348
1624
|
}
|
|
1349
1625
|
|
|
1350
1626
|
function printUpdateHelp() {
|
|
@@ -2656,7 +2932,9 @@ function syncUvProjectEnvironment(home, uvBinary, pythonTarget, editable) {
|
|
|
2656
2932
|
args.splice(3, 0, '--compile-bytecode');
|
|
2657
2933
|
}
|
|
2658
2934
|
if (!editable) {
|
|
2659
|
-
|
|
2935
|
+
// Force-refresh the local project package so same-version source installs
|
|
2936
|
+
// don't reuse a stale cached wheel during runtime rebuilds.
|
|
2937
|
+
args.push('--no-editable', '--reinstall-package', 'deepscientist');
|
|
2660
2938
|
}
|
|
2661
2939
|
step(2, 4, 'Syncing locked Python environment');
|
|
2662
2940
|
const result = runSync(uvBinary, args, {
|
|
@@ -4279,6 +4557,7 @@ async function performSelfUpdate(home, options = {}) {
|
|
|
4279
4557
|
};
|
|
4280
4558
|
}
|
|
4281
4559
|
|
|
4560
|
+
const npmBinary = resolveNpmBinary();
|
|
4282
4561
|
const installResult = runNpmInstallLatest(home, npmBinary);
|
|
4283
4562
|
if (!installResult.ok) {
|
|
4284
4563
|
const message = summarizeUpdateFailure(installResult);
|
|
@@ -4674,7 +4953,7 @@ function readConfiguredUiAddressFromFile(home, fallbackHost, fallbackPort) {
|
|
|
4674
4953
|
}
|
|
4675
4954
|
}
|
|
4676
4955
|
|
|
4677
|
-
async function startDaemon(home, runtimePython, host, port, proxy = null, envOverrides = {}, authEnabled = false) {
|
|
4956
|
+
async function startDaemon(home, runtimePython, host, port, proxy = null, envOverrides = {}, authEnabled = false, runnerName = null, allowRunnerFallback = true) {
|
|
4678
4957
|
const browserUrl = browserUiUrl(host, port);
|
|
4679
4958
|
const daemonBindUrl = bindUiUrl(host, port);
|
|
4680
4959
|
const state = readDaemonState(home);
|
|
@@ -4711,6 +4990,7 @@ async function startDaemon(home, runtimePython, host, port, proxy = null, envOve
|
|
|
4711
4990
|
reused: true,
|
|
4712
4991
|
authEnabled: stateAuthEnabled,
|
|
4713
4992
|
authToken: resolvedAuthToken,
|
|
4993
|
+
runnerName: normalizeRunnerName(runnerName || readConfiguredDefaultRunner(home, "codex"), "codex"),
|
|
4714
4994
|
};
|
|
4715
4995
|
}
|
|
4716
4996
|
console.error(
|
|
@@ -4728,13 +5008,21 @@ async function startDaemon(home, runtimePython, host, port, proxy = null, envOve
|
|
|
4728
5008
|
removeDaemonState(home);
|
|
4729
5009
|
}
|
|
4730
5010
|
|
|
4731
|
-
const
|
|
4732
|
-
|
|
4733
|
-
|
|
4734
|
-
|
|
4735
|
-
|
|
4736
|
-
|
|
4737
|
-
|
|
5011
|
+
const requestedRunner = normalizeRunnerName(runnerName || readConfiguredDefaultRunner(home, "codex"), "codex");
|
|
5012
|
+
const startupRunner = resolveStartupRunner(home, runtimePython, requestedRunner, envOverrides, {
|
|
5013
|
+
allowFallback: allowRunnerFallback,
|
|
5014
|
+
});
|
|
5015
|
+
if (!startupRunner.ok) {
|
|
5016
|
+
throw createRunnerPreflightError(home, requestedRunner, startupRunner.probe);
|
|
5017
|
+
}
|
|
5018
|
+
const effectiveRunner = startupRunner.runnerName;
|
|
5019
|
+
const effectiveEnvOverrides = {
|
|
5020
|
+
...envOverrides,
|
|
5021
|
+
DEEPSCIENTIST_DEFAULT_RUNNER: effectiveRunner,
|
|
5022
|
+
DEEPSCIENTIST_ENABLE_RUNNER: effectiveRunner,
|
|
5023
|
+
};
|
|
5024
|
+
if (startupRunner.fallback) {
|
|
5025
|
+
console.log(`WARNING: ${requestedRunner} is not ready yet. Starting DeepScientist with fallback runner \`${effectiveRunner}\` for this session.`);
|
|
4738
5026
|
}
|
|
4739
5027
|
|
|
4740
5028
|
ensureNodeBundle('src/ui', 'dist/index.html');
|
|
@@ -4744,7 +5032,7 @@ async function startDaemon(home, runtimePython, host, port, proxy = null, envOve
|
|
|
4744
5032
|
host,
|
|
4745
5033
|
port,
|
|
4746
5034
|
proxy,
|
|
4747
|
-
envOverrides,
|
|
5035
|
+
envOverrides: effectiveEnvOverrides,
|
|
4748
5036
|
authEnabled,
|
|
4749
5037
|
authToken: desiredAuthToken,
|
|
4750
5038
|
});
|
|
@@ -4764,7 +5052,7 @@ async function startDaemon(home, runtimePython, host, port, proxy = null, envOve
|
|
|
4764
5052
|
host,
|
|
4765
5053
|
port,
|
|
4766
5054
|
proxy,
|
|
4767
|
-
envOverrides,
|
|
5055
|
+
envOverrides: effectiveEnvOverrides,
|
|
4768
5056
|
daemonId: String((liveState || {}).daemon_id || ''),
|
|
4769
5057
|
});
|
|
4770
5058
|
if (supervisorPid) {
|
|
@@ -4776,6 +5064,7 @@ async function startDaemon(home, runtimePython, host, port, proxy = null, envOve
|
|
|
4776
5064
|
reused: false,
|
|
4777
5065
|
authEnabled,
|
|
4778
5066
|
authToken: desiredAuthToken,
|
|
5067
|
+
runnerName: effectiveRunner,
|
|
4779
5068
|
};
|
|
4780
5069
|
}
|
|
4781
5070
|
await sleep(250);
|
|
@@ -4836,14 +5125,15 @@ function openBrowser(url) {
|
|
|
4836
5125
|
return false;
|
|
4837
5126
|
}
|
|
4838
5127
|
|
|
4839
|
-
function
|
|
4840
|
-
if (!error || error.code !== '
|
|
5128
|
+
function handleRunnerPreflightFailure(error) {
|
|
5129
|
+
if (!error || error.code !== 'DS_RUNNER_PREFLIGHT') {
|
|
4841
5130
|
return false;
|
|
4842
5131
|
}
|
|
4843
5132
|
const errorLabel = colorize('\u001B[1;38;5;196m', 'ERROR');
|
|
4844
5133
|
const warningLabel = colorize('\u001B[1;38;5;214m', 'WARNING');
|
|
4845
5134
|
console.error('');
|
|
4846
|
-
|
|
5135
|
+
const runnerLabel = String(error.runnerName || 'codex').trim() || 'runner';
|
|
5136
|
+
console.error(`${errorLabel} DeepScientist could not start because ${runnerLabel} is not ready yet.`);
|
|
4847
5137
|
console.error(`Report: ${error.reportPath}`);
|
|
4848
5138
|
if (Array.isArray(error.probe?.errors)) {
|
|
4849
5139
|
for (const item of error.probe.errors) {
|
|
@@ -4873,7 +5163,7 @@ function handleCodexPreflightFailure(error) {
|
|
|
4873
5163
|
return true;
|
|
4874
5164
|
}
|
|
4875
5165
|
|
|
4876
|
-
function launchTui(url, questId, home, runtimePython, authToken = null) {
|
|
5166
|
+
function launchTui(url, questId, home, runtimePython, authToken = null, debugOptions = {}) {
|
|
4877
5167
|
const entry = ensureNodeBundle('src/tui', 'dist/index.js');
|
|
4878
5168
|
const args = [entry, '--base-url', url];
|
|
4879
5169
|
if (questId) {
|
|
@@ -4882,6 +5172,12 @@ function launchTui(url, questId, home, runtimePython, authToken = null) {
|
|
|
4882
5172
|
if (typeof authToken === 'string' && authToken.trim()) {
|
|
4883
5173
|
args.push('--auth-token', authToken.trim());
|
|
4884
5174
|
}
|
|
5175
|
+
if (debugOptions && debugOptions.enabled) {
|
|
5176
|
+
args.push('--debug');
|
|
5177
|
+
}
|
|
5178
|
+
if (debugOptions && typeof debugOptions.logPath === 'string' && debugOptions.logPath.trim()) {
|
|
5179
|
+
args.push('--debug-log', debugOptions.logPath.trim());
|
|
5180
|
+
}
|
|
4885
5181
|
const child = spawn(process.execPath, args, {
|
|
4886
5182
|
cwd: repoRoot,
|
|
4887
5183
|
stdio: 'inherit',
|
|
@@ -5161,7 +5457,9 @@ async function launcherMain(rawArgs) {
|
|
|
5161
5457
|
process.exit(1);
|
|
5162
5458
|
}
|
|
5163
5459
|
|
|
5164
|
-
const home = options.
|
|
5460
|
+
const home = (options.stop || options.status || options.restart)
|
|
5461
|
+
? resolveManagementHome(rawArgs, options)
|
|
5462
|
+
: (options.home || resolveHome(rawArgs));
|
|
5165
5463
|
applyLauncherProxy(options.proxy);
|
|
5166
5464
|
ensureDir(home);
|
|
5167
5465
|
registerCurrentInstall(home);
|
|
@@ -5205,9 +5503,12 @@ async function launcherMain(rawArgs) {
|
|
|
5205
5503
|
yolo: options.yolo,
|
|
5206
5504
|
profile: options.codexProfile,
|
|
5207
5505
|
binary: options.codexBinary,
|
|
5506
|
+
runner: options.runner,
|
|
5208
5507
|
});
|
|
5209
5508
|
ensureInitialized(home, runtimePython);
|
|
5210
|
-
|
|
5509
|
+
if (!options.runner || String(options.runner).trim().toLowerCase() === "codex") {
|
|
5510
|
+
await maybeHandleMiniMaxCodexVersion(home, runtimePython, options);
|
|
5511
|
+
}
|
|
5211
5512
|
if (await maybeHandleStartupUpdate(home, rawArgs, options)) {
|
|
5212
5513
|
return true;
|
|
5213
5514
|
}
|
|
@@ -5236,9 +5537,20 @@ async function launcherMain(rawArgs) {
|
|
|
5236
5537
|
step(4, 4, 'Starting local daemon and UI surfaces');
|
|
5237
5538
|
let started;
|
|
5238
5539
|
try {
|
|
5239
|
-
|
|
5540
|
+
const selectedRunner = normalizeRunnerName(options.runner || readConfiguredDefaultRunner(home, "codex"), "codex");
|
|
5541
|
+
started = await startDaemon(
|
|
5542
|
+
home,
|
|
5543
|
+
runtimePython,
|
|
5544
|
+
host,
|
|
5545
|
+
port,
|
|
5546
|
+
options.proxy,
|
|
5547
|
+
codexOverrideEnv,
|
|
5548
|
+
authEnabled,
|
|
5549
|
+
selectedRunner,
|
|
5550
|
+
!options.runner
|
|
5551
|
+
);
|
|
5240
5552
|
} catch (error) {
|
|
5241
|
-
if (
|
|
5553
|
+
if (handleRunnerPreflightFailure(error)) return true;
|
|
5242
5554
|
throw error;
|
|
5243
5555
|
}
|
|
5244
5556
|
const browserOpened = shouldOpenBrowser ? openBrowser(started.url) : false;
|
|
@@ -5254,6 +5566,7 @@ async function launcherMain(rawArgs) {
|
|
|
5254
5566
|
yolo: options.yolo,
|
|
5255
5567
|
authEnabled: started.authEnabled,
|
|
5256
5568
|
authToken: started.authToken,
|
|
5569
|
+
runnerName: started.runnerName || selectedRunner,
|
|
5257
5570
|
});
|
|
5258
5571
|
|
|
5259
5572
|
if (options.daemonOnly) {
|
|
@@ -5262,7 +5575,10 @@ async function launcherMain(rawArgs) {
|
|
|
5262
5575
|
if (mode === 'web') {
|
|
5263
5576
|
process.exit(0);
|
|
5264
5577
|
}
|
|
5265
|
-
launchTui(browserUiUrl(host, port), options.questId, home, runtimePython, started.authToken
|
|
5578
|
+
launchTui(browserUiUrl(host, port), options.questId, home, runtimePython, started.authToken, {
|
|
5579
|
+
enabled: options.tuiDebug,
|
|
5580
|
+
logPath: options.tuiDebugLogPath,
|
|
5581
|
+
});
|
|
5266
5582
|
return true;
|
|
5267
5583
|
}
|
|
5268
5584
|
|
|
@@ -5305,24 +5621,34 @@ async function main() {
|
|
|
5305
5621
|
const home = resolveHome(args);
|
|
5306
5622
|
const pythonRuntime = ensurePythonRuntime(home);
|
|
5307
5623
|
const runtimePython = pythonRuntime.runtimePython;
|
|
5624
|
+
const runnerOptionForEnv = positional.value === 'doctor' || positional.value === 'docker'
|
|
5625
|
+
? null
|
|
5626
|
+
: readOptionValue(args, '--runner');
|
|
5308
5627
|
const codexOverrideEnv = buildCodexOverrideEnv({
|
|
5309
5628
|
yolo: resolveYoloFlag(args, true),
|
|
5310
5629
|
profile: readOptionValue(args, '--codex-profile'),
|
|
5311
5630
|
binary: readOptionValue(args, '--codex'),
|
|
5631
|
+
runner: runnerOptionForEnv,
|
|
5312
5632
|
});
|
|
5313
5633
|
if (positional.value === 'run' || positional.value === 'daemon') {
|
|
5314
5634
|
maybePrintOptionalLatexNotice(home);
|
|
5315
5635
|
}
|
|
5316
5636
|
if (positional.value === 'run' || positional.value === 'daemon') {
|
|
5317
|
-
const
|
|
5318
|
-
|
|
5637
|
+
const selectedRunner = normalizeRunnerName(readOptionValue(args, '--runner') || readConfiguredDefaultRunner(home, "codex"), "codex");
|
|
5638
|
+
const bootstrapState = selectedRunner === "codex"
|
|
5639
|
+
? readCodexBootstrapState(home, runtimePython, codexOverrideEnv)
|
|
5640
|
+
: readRunnerBootstrapState(home, runtimePython, selectedRunner, codexOverrideEnv);
|
|
5641
|
+
const runnerReady = selectedRunner === "codex" ? Boolean(bootstrapState.codex_ready) : Boolean(bootstrapState.ready);
|
|
5642
|
+
if (!runnerReady) {
|
|
5319
5643
|
try {
|
|
5320
|
-
const probe =
|
|
5644
|
+
const probe = selectedRunner === "codex"
|
|
5645
|
+
? probeCodexBootstrap(home, runtimePython, codexOverrideEnv)
|
|
5646
|
+
: probeRunnerBootstrap(home, runtimePython, selectedRunner, codexOverrideEnv);
|
|
5321
5647
|
if (!probe || probe.ok !== true) {
|
|
5322
|
-
throw
|
|
5648
|
+
throw createRunnerPreflightError(home, selectedRunner, probe);
|
|
5323
5649
|
}
|
|
5324
5650
|
} catch (error) {
|
|
5325
|
-
if (
|
|
5651
|
+
if (handleRunnerPreflightFailure(error)) return;
|
|
5326
5652
|
throw error;
|
|
5327
5653
|
}
|
|
5328
5654
|
}
|
|
@@ -5348,6 +5674,7 @@ module.exports = {
|
|
|
5348
5674
|
legacyVenvRootPath,
|
|
5349
5675
|
resolveUvBinary,
|
|
5350
5676
|
resolveHome,
|
|
5677
|
+
resolveManagementHome,
|
|
5351
5678
|
parseLauncherArgs,
|
|
5352
5679
|
generateBrowserAuthToken,
|
|
5353
5680
|
appendBrowserAuthToken,
|