@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
|
@@ -26,6 +26,46 @@ _MODEL_UNAVAILABLE_MARKERS = (
|
|
|
26
26
|
"unrecognized model",
|
|
27
27
|
)
|
|
28
28
|
|
|
29
|
+
_CODEX_PROVIDER_ACCOUNT_ERROR_MARKERS = (
|
|
30
|
+
"account balance is negative",
|
|
31
|
+
"please recharge",
|
|
32
|
+
"insufficient quota",
|
|
33
|
+
"quota exceeded",
|
|
34
|
+
"billing hard limit",
|
|
35
|
+
"billing limit",
|
|
36
|
+
"payment required",
|
|
37
|
+
"invalid api key",
|
|
38
|
+
"invalid_api_key",
|
|
39
|
+
"incorrect api key",
|
|
40
|
+
"api key is invalid",
|
|
41
|
+
"unauthorized",
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
_CODEX_PROVIDER_ACCOUNT_STATUS_MARKERS = (
|
|
45
|
+
"401 unauthorized",
|
|
46
|
+
"402 payment required",
|
|
47
|
+
"403 forbidden",
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
_CODEX_UPSTREAM_ERROR_MARKERS = (
|
|
51
|
+
"rate limit",
|
|
52
|
+
"too many requests",
|
|
53
|
+
"service unavailable",
|
|
54
|
+
"bad gateway",
|
|
55
|
+
"gateway timeout",
|
|
56
|
+
"internal server error",
|
|
57
|
+
"temporarily unavailable",
|
|
58
|
+
"server overloaded",
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
_CODEX_UPSTREAM_STATUS_MARKERS = (
|
|
62
|
+
"429 too many requests",
|
|
63
|
+
"500 internal server error",
|
|
64
|
+
"502 bad gateway",
|
|
65
|
+
"503 service unavailable",
|
|
66
|
+
"504 gateway timeout",
|
|
67
|
+
)
|
|
68
|
+
|
|
29
69
|
|
|
30
70
|
def _build_haystack(*values: object) -> str:
|
|
31
71
|
return "\n".join(str(value or "") for value in values if str(value or "").strip())
|
|
@@ -46,6 +86,52 @@ def diagnose_runner_failure(
|
|
|
46
86
|
lower = haystack.lower()
|
|
47
87
|
normalized_runner = str(runner_name or "").strip().lower()
|
|
48
88
|
|
|
89
|
+
if normalized_runner == "codex" and (
|
|
90
|
+
any(marker in lower for marker in _CODEX_PROVIDER_ACCOUNT_ERROR_MARKERS)
|
|
91
|
+
or (
|
|
92
|
+
("unexpected status" in lower or "http_code" in lower or "status" in lower)
|
|
93
|
+
and any(marker in lower for marker in _CODEX_PROVIDER_ACCOUNT_STATUS_MARKERS)
|
|
94
|
+
)
|
|
95
|
+
):
|
|
96
|
+
return FailureDiagnosis(
|
|
97
|
+
code="codex_provider_account_error",
|
|
98
|
+
problem="The configured Codex provider account cannot serve the request.",
|
|
99
|
+
why=(
|
|
100
|
+
"The provider reported an account, billing, quota, or credential blocker. "
|
|
101
|
+
"Repeating the same quest turn will keep failing until the provider account state is corrected."
|
|
102
|
+
),
|
|
103
|
+
guidance=(
|
|
104
|
+
"Check the configured provider account, quota, billing status, credentials, and API-key scope.",
|
|
105
|
+
"Verify the same Codex profile works outside DeepScientist before resuming the quest.",
|
|
106
|
+
"Do not relaunch the same quest repeatedly until the provider account state is healthy.",
|
|
107
|
+
),
|
|
108
|
+
retriable=False,
|
|
109
|
+
matched_text="codex provider account error",
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
if normalized_runner == "codex" and (
|
|
113
|
+
any(marker in lower for marker in _CODEX_UPSTREAM_ERROR_MARKERS)
|
|
114
|
+
or (
|
|
115
|
+
("unexpected status" in lower or "http_code" in lower or "status" in lower)
|
|
116
|
+
and any(marker in lower for marker in _CODEX_UPSTREAM_STATUS_MARKERS)
|
|
117
|
+
)
|
|
118
|
+
):
|
|
119
|
+
return FailureDiagnosis(
|
|
120
|
+
code="codex_upstream_provider_error",
|
|
121
|
+
problem="The configured Codex upstream provider rejected or could not serve the request.",
|
|
122
|
+
why=(
|
|
123
|
+
"This is an external provider/API service condition. DeepScientist can retry with backoff, "
|
|
124
|
+
"but it cannot repair upstream provider availability from inside the quest runtime."
|
|
125
|
+
),
|
|
126
|
+
guidance=(
|
|
127
|
+
"Check the configured provider service health, rate limits, and API status.",
|
|
128
|
+
"Verify the same Codex profile works outside DeepScientist before resuming the quest.",
|
|
129
|
+
"Do not repeatedly relaunch the same quest if the provider continues returning the same upstream error.",
|
|
130
|
+
),
|
|
131
|
+
retriable=True,
|
|
132
|
+
matched_text="codex upstream provider error",
|
|
133
|
+
)
|
|
134
|
+
|
|
49
135
|
if (
|
|
50
136
|
"tool call result does not follow tool call (2013)" in lower
|
|
51
137
|
or "tool result's tool id" in lower
|
|
@@ -88,6 +174,41 @@ def diagnose_runner_failure(
|
|
|
88
174
|
matched_text="tool-call arguments",
|
|
89
175
|
)
|
|
90
176
|
|
|
177
|
+
if "argument list too long" in lower or "[errno 7]" in lower:
|
|
178
|
+
return FailureDiagnosis(
|
|
179
|
+
code="runner_argument_list_too_long",
|
|
180
|
+
problem="The runner command exceeded the OS argument-length limit.",
|
|
181
|
+
why=(
|
|
182
|
+
"This usually happens when a runner needs to receive a very large prompt through argv "
|
|
183
|
+
"instead of stdin or a file-backed prompt path."
|
|
184
|
+
),
|
|
185
|
+
guidance=(
|
|
186
|
+
"Retry with a shorter fallback prompt that references the quest brief and saved prompt files.",
|
|
187
|
+
"Prefer stdin-capable runners such as Codex or Claude for very large turn prompts.",
|
|
188
|
+
"If the problem persists, inspect `.ds/runs/<run_id>/prompt.md` and reduce duplicated context.",
|
|
189
|
+
),
|
|
190
|
+
retriable=False,
|
|
191
|
+
matched_text="argument list too long",
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
if "codec can't encode character" in lower and ("gbk" in lower or "cp936" in lower):
|
|
195
|
+
return FailureDiagnosis(
|
|
196
|
+
code="windows_gbk_prompt_encoding_error",
|
|
197
|
+
problem="A Windows GBK code-page path rejected a Unicode character in the runner payload.",
|
|
198
|
+
why=(
|
|
199
|
+
"A non-UTF-8 Windows encoding path tried to encode the runner prompt or related text with "
|
|
200
|
+
"GBK/CP936 and hit a character that code page cannot represent, such as bullets, emoji, "
|
|
201
|
+
"or kaomoji symbols."
|
|
202
|
+
),
|
|
203
|
+
guidance=(
|
|
204
|
+
"Update to a DeepScientist build that sanitizes non-GBK prompt characters before Codex on Windows.",
|
|
205
|
+
"If you are already on the latest build, remove emoji or decorative symbols such as `•` from custom prompts, notes, or connector-facing text.",
|
|
206
|
+
"Prefer a UTF-8 terminal (`chcp 65001`) or the WSL2 deployment path when possible.",
|
|
207
|
+
),
|
|
208
|
+
retriable=False,
|
|
209
|
+
matched_text="gbk codec can't encode character",
|
|
210
|
+
)
|
|
211
|
+
|
|
91
212
|
if "missing environment variable" in lower:
|
|
92
213
|
return FailureDiagnosis(
|
|
93
214
|
code="provider_env_missing",
|
|
@@ -127,4 +248,30 @@ def diagnose_runner_failure(
|
|
|
127
248
|
matched_text="invalid params",
|
|
128
249
|
)
|
|
129
250
|
|
|
251
|
+
if normalized_runner == "codex" and (
|
|
252
|
+
"unknown file extension" in lower
|
|
253
|
+
or ("file extension" in lower and ".png" in lower)
|
|
254
|
+
or ("file extension" in lower and ".jpg" in lower)
|
|
255
|
+
or ("file extension" in lower and ".jpeg" in lower)
|
|
256
|
+
or ("file extension" in lower and ".gif" in lower)
|
|
257
|
+
or ("file extension" in lower and ".webp" in lower)
|
|
258
|
+
or ("file extension" in lower and ".bmp" in lower)
|
|
259
|
+
or ("file extension" in lower and ".mp4" in lower)
|
|
260
|
+
):
|
|
261
|
+
return FailureDiagnosis(
|
|
262
|
+
code="runner_binary_attachment_path_unsupported",
|
|
263
|
+
problem="Codex rejected a binary attachment path from the prompt.",
|
|
264
|
+
why=(
|
|
265
|
+
"The request exposed an image, video, or other binary file path that the Codex CLI tried to treat "
|
|
266
|
+
"as an inline readable input, but that extension is not supported on stdin-driven prompt parsing."
|
|
267
|
+
),
|
|
268
|
+
guidance=(
|
|
269
|
+
"Prefer OCR text, extracted text, or archive manifests over raw binary attachment paths in the runner prompt.",
|
|
270
|
+
"If a milestone needs binary delivery, keep the binary path inside the tool call payload instead of embedding it directly in prompt guidance.",
|
|
271
|
+
"Do not keep retrying the same turn until the prompt or attachment summary no longer exposes the unsupported binary path.",
|
|
272
|
+
),
|
|
273
|
+
retriable=False,
|
|
274
|
+
matched_text="unknown file extension",
|
|
275
|
+
)
|
|
276
|
+
|
|
130
277
|
return None
|
|
@@ -2,13 +2,14 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from datetime import UTC, datetime, timedelta
|
|
4
4
|
import os
|
|
5
|
+
import shlex
|
|
5
6
|
import socket
|
|
6
7
|
import subprocess
|
|
7
8
|
import sys
|
|
8
9
|
import tempfile
|
|
9
10
|
from shutil import which
|
|
10
11
|
from pathlib import Path
|
|
11
|
-
from typing import Any
|
|
12
|
+
from typing import Any, Callable
|
|
12
13
|
from urllib.error import URLError
|
|
13
14
|
from urllib.request import Request, urlopen
|
|
14
15
|
|
|
@@ -16,8 +17,9 @@ from .bash_exec.shells import build_exec_shell_launch, build_terminal_shell_laun
|
|
|
16
17
|
from .config import ConfigManager
|
|
17
18
|
from .diagnostics import diagnose_runner_failure
|
|
18
19
|
from .home import ensure_home_layout
|
|
20
|
+
from .runners.metadata import list_builtin_runner_names
|
|
19
21
|
from .runtime_tools import RuntimeToolService
|
|
20
|
-
from .shared import read_json, read_jsonl_tail, resolve_runner_binary, utc_now
|
|
22
|
+
from .shared import read_json, read_jsonl_tail, resolve_runner_binary, utc_now, utf8_text_subprocess_kwargs
|
|
21
23
|
|
|
22
24
|
|
|
23
25
|
_RUNTIME_FAILURE_LOOKBACK = timedelta(hours=24)
|
|
@@ -71,6 +73,40 @@ def _make_check(
|
|
|
71
73
|
}
|
|
72
74
|
|
|
73
75
|
|
|
76
|
+
def _probe_detail_subset(details: dict[str, Any], *, resolved_binary: str) -> dict[str, Any]:
|
|
77
|
+
keys = (
|
|
78
|
+
"profile",
|
|
79
|
+
"model",
|
|
80
|
+
"requested_model",
|
|
81
|
+
"effective_model",
|
|
82
|
+
"approval_policy",
|
|
83
|
+
"sandbox_mode",
|
|
84
|
+
"reasoning_effort",
|
|
85
|
+
"requested_reasoning_effort",
|
|
86
|
+
"codex_cli_version",
|
|
87
|
+
"provider_env_key",
|
|
88
|
+
"provider_env_missing",
|
|
89
|
+
"provider_wire_api",
|
|
90
|
+
"model_fallback_attempted",
|
|
91
|
+
"model_fallback_used",
|
|
92
|
+
"exit_code",
|
|
93
|
+
"stdout_excerpt",
|
|
94
|
+
"stderr_excerpt",
|
|
95
|
+
"probe_command",
|
|
96
|
+
"initial_exit_code",
|
|
97
|
+
"initial_stdout_excerpt",
|
|
98
|
+
"initial_stderr_excerpt",
|
|
99
|
+
"fallback_exit_code",
|
|
100
|
+
"fallback_stdout_excerpt",
|
|
101
|
+
"fallback_stderr_excerpt",
|
|
102
|
+
)
|
|
103
|
+
rendered: dict[str, Any] = {"resolved_binary": resolved_binary}
|
|
104
|
+
for key in keys:
|
|
105
|
+
if key in details:
|
|
106
|
+
rendered[key] = details.get(key)
|
|
107
|
+
return rendered
|
|
108
|
+
|
|
109
|
+
|
|
74
110
|
def _check_python_runtime() -> dict[str, Any]:
|
|
75
111
|
try:
|
|
76
112
|
import _cffi_backend # noqa: F401
|
|
@@ -172,7 +208,7 @@ def _check_uv(home: Path) -> dict[str, Any]:
|
|
|
172
208
|
[resolved, "--version"],
|
|
173
209
|
check=False,
|
|
174
210
|
capture_output=True,
|
|
175
|
-
|
|
211
|
+
**utf8_text_subprocess_kwargs(),
|
|
176
212
|
)
|
|
177
213
|
if result.returncode == 0:
|
|
178
214
|
version = (result.stdout or result.stderr or "").strip()
|
|
@@ -230,100 +266,113 @@ def _check_config_validation(config_manager: ConfigManager) -> dict[str, Any]:
|
|
|
230
266
|
|
|
231
267
|
def _check_runner_support(config_manager: ConfigManager) -> dict[str, Any]:
|
|
232
268
|
config_payload = config_manager.load_named_normalized("config")
|
|
233
|
-
runners_payload = config_manager.
|
|
269
|
+
runners_payload = config_manager.load_runners_config()
|
|
234
270
|
|
|
235
271
|
default_runner = str(config_payload.get("default_runner") or "codex").strip().lower() or "codex"
|
|
236
|
-
|
|
237
|
-
|
|
272
|
+
enabled_runners = sorted(
|
|
273
|
+
name for name, value in runners_payload.items() if isinstance(value, dict) and bool(value.get("enabled", False))
|
|
274
|
+
)
|
|
238
275
|
|
|
239
276
|
errors: list[str] = []
|
|
240
277
|
warnings: list[str] = []
|
|
241
278
|
guidance: list[str] = []
|
|
242
279
|
|
|
243
|
-
if
|
|
244
|
-
errors.append("
|
|
245
|
-
guidance.append("
|
|
246
|
-
if not
|
|
247
|
-
errors.append("
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
280
|
+
if not enabled_runners:
|
|
281
|
+
errors.append("At least one runner must be enabled.")
|
|
282
|
+
guidance.append("Enable one of `codex`, `claude`, `kimi`, or `opencode` in `~/DeepScientist/config/runners.yaml`.")
|
|
283
|
+
if default_runner not in runners_payload:
|
|
284
|
+
errors.append(f"Configured default runner `{default_runner}` does not exist in `runners.yaml`.")
|
|
285
|
+
elif default_runner not in enabled_runners:
|
|
286
|
+
errors.append(f"Configured default runner `{default_runner}` is currently disabled.")
|
|
287
|
+
guidance.append(
|
|
288
|
+
f"Set `runners.{default_runner}.enabled: true`, or switch `default_runner` to one of: {', '.join(enabled_runners) or 'none'}."
|
|
289
|
+
)
|
|
290
|
+
if len(enabled_runners) > 1:
|
|
291
|
+
warnings.append(f"Multiple runners are enabled: {', '.join(enabled_runners)}.")
|
|
254
292
|
|
|
255
293
|
return _make_check(
|
|
256
294
|
check_id="runner_support",
|
|
257
295
|
label="Supported runners",
|
|
258
296
|
ok=len(errors) == 0,
|
|
259
|
-
summary="Runner policy
|
|
297
|
+
summary="Runner policy is internally consistent." if len(errors) == 0 else "Runner policy needs adjustment.",
|
|
260
298
|
warnings=warnings,
|
|
261
299
|
errors=errors,
|
|
262
300
|
guidance=guidance,
|
|
263
|
-
details={"default_runner": default_runner},
|
|
301
|
+
details={"default_runner": default_runner, "enabled_runners": enabled_runners},
|
|
264
302
|
)
|
|
265
303
|
|
|
266
304
|
|
|
267
|
-
def
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
305
|
+
def _check_runner(config_manager: ConfigManager, runner_name: str) -> dict[str, Any]:
|
|
306
|
+
normalized_runner = str(runner_name or "codex").strip().lower() or "codex"
|
|
307
|
+
runners_payload = config_manager.load_runners_config()
|
|
308
|
+
runner_cfg = runners_payload.get(normalized_runner) if isinstance(runners_payload.get(normalized_runner), dict) else {}
|
|
309
|
+
binary = str(runner_cfg.get("binary") or normalized_runner).strip() or normalized_runner
|
|
310
|
+
resolved_binary = resolve_runner_binary(binary, runner_name=normalized_runner)
|
|
311
|
+
label = {
|
|
312
|
+
"codex": "Codex CLI",
|
|
313
|
+
"claude": "Claude Code CLI",
|
|
314
|
+
"kimi": "Kimi Code CLI",
|
|
315
|
+
"opencode": "OpenCode CLI",
|
|
316
|
+
}.get(normalized_runner, normalized_runner)
|
|
272
317
|
|
|
273
318
|
if not resolved_binary:
|
|
319
|
+
guidance = config_manager._runner_missing_binary_guidance(normalized_runner, runner_cfg)
|
|
274
320
|
return _make_check(
|
|
275
|
-
check_id=
|
|
276
|
-
label=
|
|
321
|
+
check_id=normalized_runner,
|
|
322
|
+
label=label,
|
|
277
323
|
ok=False,
|
|
278
|
-
summary="
|
|
324
|
+
summary=f"{label} is not available to DeepScientist.",
|
|
279
325
|
errors=[f"Runner binary `{binary}` could not be resolved."],
|
|
280
|
-
guidance=
|
|
326
|
+
guidance=guidance,
|
|
281
327
|
details={"binary": binary},
|
|
282
328
|
)
|
|
283
329
|
|
|
284
|
-
probe =
|
|
330
|
+
probe = (
|
|
331
|
+
config_manager.probe_codex_bootstrap(persist=False, payload=runners_payload)
|
|
332
|
+
if normalized_runner == "codex"
|
|
333
|
+
else config_manager.probe_runner_bootstrap(normalized_runner, persist=False, payload=runners_payload)
|
|
334
|
+
)
|
|
285
335
|
probe_errors = [str(value) for value in probe.get("errors") or []]
|
|
286
336
|
probe_warnings = [str(value) for value in probe.get("warnings") or []]
|
|
287
337
|
probe_guidance = [str(value) for value in probe.get("guidance") or []]
|
|
288
|
-
summary = str(probe.get("summary") or "
|
|
338
|
+
summary = str(probe.get("summary") or f"{label} startup probe completed.")
|
|
289
339
|
probe_details = probe.get("details") if isinstance(probe.get("details"), dict) else {}
|
|
290
|
-
diagnosis =
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
340
|
+
diagnosis = None
|
|
341
|
+
if normalized_runner == "codex":
|
|
342
|
+
diagnosis = diagnose_runner_failure(
|
|
343
|
+
runner_name="codex",
|
|
344
|
+
summary="\n".join([summary, *probe_errors]),
|
|
345
|
+
stderr_text=str(probe_details.get("stderr_excerpt") or ""),
|
|
346
|
+
output_text=str(probe_details.get("stdout_excerpt") or ""),
|
|
347
|
+
)
|
|
296
348
|
if probe.get("ok"):
|
|
297
349
|
return _make_check(
|
|
298
|
-
check_id=
|
|
299
|
-
label=
|
|
350
|
+
check_id=normalized_runner,
|
|
351
|
+
label=label,
|
|
300
352
|
ok=True,
|
|
301
353
|
summary=summary,
|
|
302
354
|
warnings=probe_warnings,
|
|
303
355
|
details={"resolved_binary": resolved_binary},
|
|
304
356
|
)
|
|
305
|
-
if not probe_guidance:
|
|
306
|
-
probe_guidance = [
|
|
307
|
-
"Run `codex login` (or just `codex`) manually once and complete login, then retry `ds doctor`.",
|
|
308
|
-
]
|
|
309
357
|
return _make_check(
|
|
310
|
-
check_id=
|
|
311
|
-
label=
|
|
358
|
+
check_id=normalized_runner,
|
|
359
|
+
label=label,
|
|
312
360
|
ok=False,
|
|
313
361
|
summary=diagnosis.problem if diagnosis is not None else summary,
|
|
314
362
|
warnings=probe_warnings,
|
|
315
|
-
errors=probe_errors or ["
|
|
363
|
+
errors=probe_errors or [f"{label} startup probe did not succeed."],
|
|
316
364
|
guidance=probe_guidance,
|
|
317
|
-
details=
|
|
365
|
+
details=_probe_detail_subset(probe_details, resolved_binary=resolved_binary),
|
|
318
366
|
problem=diagnosis.problem if diagnosis is not None else None,
|
|
319
367
|
why=diagnosis.why if diagnosis is not None else None,
|
|
320
368
|
fix=list(diagnosis.guidance) if diagnosis is not None else None,
|
|
321
|
-
evidence=(
|
|
322
|
-
[f"matched: {diagnosis.matched_text}"] if diagnosis is not None and diagnosis.matched_text else None
|
|
323
|
-
),
|
|
369
|
+
evidence=([f"matched: {diagnosis.matched_text}"] if diagnosis is not None and diagnosis.matched_text else None),
|
|
324
370
|
)
|
|
325
371
|
|
|
326
372
|
|
|
373
|
+
def _check_codex(config_manager: ConfigManager) -> dict[str, Any]:
|
|
374
|
+
return _check_runner(config_manager, "codex")
|
|
375
|
+
|
|
327
376
|
def _parse_timestamp(value: object) -> datetime | None:
|
|
328
377
|
normalized = str(value or "").strip()
|
|
329
378
|
if not normalized:
|
|
@@ -635,9 +684,11 @@ def _check_ui_port(home: Path, config_manager: ConfigManager) -> dict[str, Any]:
|
|
|
635
684
|
summary="The configured port is already used by another DeepScientist home.",
|
|
636
685
|
errors=[f"{browser_url} is already serving a daemon for `{daemon_home}`."],
|
|
637
686
|
guidance=[
|
|
638
|
-
"
|
|
687
|
+
f"If you intended to use that running instance, run `ds --home {daemon_home} doctor` and open {browser_url}.",
|
|
688
|
+
f"If it is stale, stop it with `ds --home {daemon_home} --stop`.",
|
|
689
|
+
"Otherwise change `ui.port` in this home config or start this home with a different port, for example `ds --port 21000`.",
|
|
639
690
|
],
|
|
640
|
-
details={"browser_url": browser_url, "host": host, "port": port},
|
|
691
|
+
details={"browser_url": browser_url, "host": host, "port": port, "daemon_home": daemon_home},
|
|
641
692
|
)
|
|
642
693
|
|
|
643
694
|
bindable, bind_error = _port_is_bindable(host, port)
|
|
@@ -663,7 +714,16 @@ def _check_ui_port(home: Path, config_manager: ConfigManager) -> dict[str, Any]:
|
|
|
663
714
|
)
|
|
664
715
|
|
|
665
716
|
|
|
666
|
-
|
|
717
|
+
DoctorProgressCallback = Callable[[dict[str, Any]], None]
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
def run_doctor(
|
|
721
|
+
home: Path,
|
|
722
|
+
*,
|
|
723
|
+
repo_root: Path,
|
|
724
|
+
runner_names: list[str] | None = None,
|
|
725
|
+
on_check: DoctorProgressCallback | None = None,
|
|
726
|
+
) -> dict[str, Any]:
|
|
667
727
|
ensure_home_layout(home)
|
|
668
728
|
config_manager = ConfigManager(home)
|
|
669
729
|
config_manager.ensure_files()
|
|
@@ -673,20 +733,51 @@ def run_doctor(home: Path, *, repo_root: Path) -> dict[str, Any]:
|
|
|
673
733
|
port = int(ui_payload.get("port") or 20999)
|
|
674
734
|
browser_url = _browser_ui_url(host, port)
|
|
675
735
|
|
|
676
|
-
|
|
677
|
-
_check_python_runtime
|
|
678
|
-
_check_home_writable(home),
|
|
679
|
-
_check_uv(home),
|
|
680
|
-
_check_shell_backend
|
|
681
|
-
_check_git(config_manager),
|
|
682
|
-
_check_config_validation(config_manager),
|
|
683
|
-
_check_runner_support(config_manager),
|
|
684
|
-
_check_codex(config_manager),
|
|
685
|
-
_check_recent_runtime_failures(home),
|
|
686
|
-
_check_latex_runtime(home),
|
|
687
|
-
_check_bundles(repo_root),
|
|
688
|
-
_check_ui_port(home, config_manager),
|
|
736
|
+
check_factories: list[tuple[str, Callable[[], dict[str, Any]]]] = [
|
|
737
|
+
("python_runtime", _check_python_runtime),
|
|
738
|
+
("home_writable", lambda: _check_home_writable(home)),
|
|
739
|
+
("uv", lambda: _check_uv(home)),
|
|
740
|
+
("shell_backend", _check_shell_backend),
|
|
741
|
+
("git", lambda: _check_git(config_manager)),
|
|
742
|
+
("config_validation", lambda: _check_config_validation(config_manager)),
|
|
743
|
+
("runner_support", lambda: _check_runner_support(config_manager)),
|
|
689
744
|
]
|
|
745
|
+
runners_payload = config_manager.load_runners_config()
|
|
746
|
+
default_runner = str(config_payload.get("default_runner") or "codex").strip().lower() or "codex"
|
|
747
|
+
runner_targets: list[str] = []
|
|
748
|
+
explicit_runner_names = _normalize_doctor_runner_targets(runner_names)
|
|
749
|
+
if explicit_runner_names:
|
|
750
|
+
candidate_runner_names = explicit_runner_names
|
|
751
|
+
else:
|
|
752
|
+
candidate_runner_names = [
|
|
753
|
+
default_runner,
|
|
754
|
+
*sorted(name for name, value in runners_payload.items() if isinstance(value, dict) and bool(value.get("enabled", False))),
|
|
755
|
+
]
|
|
756
|
+
for candidate in candidate_runner_names:
|
|
757
|
+
normalized_candidate = str(candidate or "").strip().lower()
|
|
758
|
+
if normalized_candidate and normalized_candidate not in runner_targets:
|
|
759
|
+
runner_targets.append(normalized_candidate)
|
|
760
|
+
check_factories.extend((runner_name, (lambda runner_name=runner_name: _check_runner(config_manager, runner_name))) for runner_name in runner_targets)
|
|
761
|
+
check_factories.extend([
|
|
762
|
+
("recent_runtime_failures", lambda: _check_recent_runtime_failures(home)),
|
|
763
|
+
("latex_runtime", lambda: _check_latex_runtime(home)),
|
|
764
|
+
("bundles", lambda: _check_bundles(repo_root)),
|
|
765
|
+
("ui_port", lambda: _check_ui_port(home, config_manager)),
|
|
766
|
+
])
|
|
767
|
+
checks: list[dict[str, Any]] = []
|
|
768
|
+
total_checks = len(check_factories)
|
|
769
|
+
for index, (check_id, factory) in enumerate(check_factories, start=1):
|
|
770
|
+
check = factory()
|
|
771
|
+
checks.append(check)
|
|
772
|
+
if on_check is not None:
|
|
773
|
+
on_check(
|
|
774
|
+
{
|
|
775
|
+
"check_id": check_id,
|
|
776
|
+
"index": index,
|
|
777
|
+
"total": total_checks,
|
|
778
|
+
"check": check,
|
|
779
|
+
}
|
|
780
|
+
)
|
|
690
781
|
|
|
691
782
|
return {
|
|
692
783
|
"ok": all(item["ok"] for item in checks),
|
|
@@ -697,6 +788,31 @@ def run_doctor(home: Path, *, repo_root: Path) -> dict[str, Any]:
|
|
|
697
788
|
}
|
|
698
789
|
|
|
699
790
|
|
|
791
|
+
def _normalize_doctor_runner_targets(runner_names: list[str] | None) -> list[str]:
|
|
792
|
+
targets: list[str] = []
|
|
793
|
+
seen: set[str] = set()
|
|
794
|
+
for raw_value in runner_names or []:
|
|
795
|
+
for item in str(raw_value or "").replace(";", ",").split(","):
|
|
796
|
+
normalized = item.strip().lower().replace("_", "-")
|
|
797
|
+
if normalized in {"all", "*"}:
|
|
798
|
+
candidates = list(list_builtin_runner_names())
|
|
799
|
+
else:
|
|
800
|
+
if normalized in {"claude-code", "claudecode"}:
|
|
801
|
+
normalized = "claude"
|
|
802
|
+
elif normalized in {"kimi-code", "kimicode"}:
|
|
803
|
+
normalized = "kimi"
|
|
804
|
+
elif normalized in {"open-code", "open code", "opencode-ai", "opencodeai"}:
|
|
805
|
+
normalized = "opencode"
|
|
806
|
+
else:
|
|
807
|
+
normalized = normalized.replace("-", "")
|
|
808
|
+
candidates = [normalized] if normalized else []
|
|
809
|
+
for candidate in candidates:
|
|
810
|
+
if candidate and candidate not in seen:
|
|
811
|
+
seen.add(candidate)
|
|
812
|
+
targets.append(candidate)
|
|
813
|
+
return targets
|
|
814
|
+
|
|
815
|
+
|
|
700
816
|
def render_doctor_report(report: dict[str, Any]) -> str:
|
|
701
817
|
lines = [
|
|
702
818
|
"DeepScientist doctor",
|
|
@@ -732,6 +848,34 @@ def render_doctor_report(report: dict[str, Any]) -> str:
|
|
|
732
848
|
resolved_binary = str(details.get("resolved_binary") or "").strip()
|
|
733
849
|
if resolved_binary:
|
|
734
850
|
lines.append(f" resolved binary: {resolved_binary}")
|
|
851
|
+
exit_code = details.get("exit_code")
|
|
852
|
+
if exit_code is not None:
|
|
853
|
+
lines.append(f" exit code: {exit_code}")
|
|
854
|
+
codex_cli_version = str(details.get("codex_cli_version") or "").strip()
|
|
855
|
+
if codex_cli_version:
|
|
856
|
+
lines.append(f" codex cli version: {codex_cli_version}")
|
|
857
|
+
profile = str(details.get("profile") or "").strip()
|
|
858
|
+
if profile:
|
|
859
|
+
lines.append(f" profile: {profile}")
|
|
860
|
+
effective_model = str(details.get("effective_model") or details.get("model") or "").strip()
|
|
861
|
+
if effective_model:
|
|
862
|
+
lines.append(f" effective model: {effective_model}")
|
|
863
|
+
provider_wire_api = str(details.get("provider_wire_api") or "").strip()
|
|
864
|
+
if provider_wire_api:
|
|
865
|
+
lines.append(f" provider wire api: {provider_wire_api}")
|
|
866
|
+
if details.get("provider_env_missing"):
|
|
867
|
+
provider_env_key = str(details.get("provider_env_key") or "").strip()
|
|
868
|
+
if provider_env_key:
|
|
869
|
+
lines.append(f" missing provider env: {provider_env_key}")
|
|
870
|
+
probe_command = details.get("probe_command")
|
|
871
|
+
if isinstance(probe_command, list) and probe_command:
|
|
872
|
+
lines.append(f" probe command: {shlex.join(str(part) for part in probe_command)}")
|
|
873
|
+
stdout_excerpt = str(details.get("stdout_excerpt") or "").strip()
|
|
874
|
+
if stdout_excerpt:
|
|
875
|
+
lines.append(f" stdout excerpt: {stdout_excerpt}")
|
|
876
|
+
stderr_excerpt = str(details.get("stderr_excerpt") or "").strip()
|
|
877
|
+
if stderr_excerpt:
|
|
878
|
+
lines.append(f" stderr excerpt: {stderr_excerpt}")
|
|
735
879
|
latex_pdflatex_path = str(details.get("latex_pdflatex_path") or "").strip()
|
|
736
880
|
if latex_pdflatex_path:
|
|
737
881
|
lines.append(f" pdflatex: {latex_pdflatex_path}")
|
|
@@ -741,6 +885,9 @@ def render_doctor_report(report: dict[str, Any]) -> str:
|
|
|
741
885
|
browser_url = str(details.get("browser_url") or "").strip()
|
|
742
886
|
if browser_url:
|
|
743
887
|
lines.append(f" url: {browser_url}")
|
|
888
|
+
daemon_home = str(details.get("daemon_home") or "").strip()
|
|
889
|
+
if daemon_home:
|
|
890
|
+
lines.append(f" daemon home: {daemon_home}")
|
|
744
891
|
lines.append("")
|
|
745
892
|
|
|
746
893
|
guidance: list[str] = []
|