stat-agent 2.0.0__tar.gz → 2.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. {stat_agent-2.0.0/src/stat_agent.egg-info → stat_agent-2.0.1}/PKG-INFO +6 -4
  2. {stat_agent-2.0.0 → stat_agent-2.0.1}/README.md +2 -1
  3. {stat_agent-2.0.0 → stat_agent-2.0.1}/pyproject.toml +4 -3
  4. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/__init__.py +1 -1
  5. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/agent/nodes/selection.py +29 -0
  6. {stat_agent-2.0.0 → stat_agent-2.0.1/src/stat_agent.egg-info}/PKG-INFO +6 -4
  7. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent.egg-info/requires.txt +3 -1
  8. {stat_agent-2.0.0 → stat_agent-2.0.1}/LICENSE +0 -0
  9. {stat_agent-2.0.0 → stat_agent-2.0.1}/setup.cfg +0 -0
  10. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/_compat.py +0 -0
  11. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/agent/__init__.py +0 -0
  12. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/agent/ablation.py +0 -0
  13. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/agent/agent.py +0 -0
  14. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/agent/graph.py +0 -0
  15. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/agent/llm_backend.py +0 -0
  16. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/agent/loop.py +0 -0
  17. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/agent/nodes/__init__.py +0 -0
  18. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/agent/nodes/common.py +0 -0
  19. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/agent/nodes/execution.py +0 -0
  20. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/agent/nodes/finishing.py +0 -0
  21. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/agent/nodes/planning.py +0 -0
  22. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/agent/policy.py +0 -0
  23. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/agent/state.py +0 -0
  24. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/cli/__init__.py +0 -0
  25. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/cli/chat.py +0 -0
  26. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/cli/main.py +0 -0
  27. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/cli/session_cmd.py +0 -0
  28. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/config.py +0 -0
  29. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/core/__init__.py +0 -0
  30. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/core/colors.py +0 -0
  31. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/core/data_slice.py +0 -0
  32. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/core/lock.py +0 -0
  33. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/core/roi_manager.py +0 -0
  34. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/core/session.py +0 -0
  35. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/core/view.py +0 -0
  36. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/events/__init__.py +0 -0
  37. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/events/catalogue.py +0 -0
  38. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/events/emit.py +0 -0
  39. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/events/encoding.py +0 -0
  40. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/extras/__init__.py +0 -0
  41. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/extras/deepagents_driver.py +0 -0
  42. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/extras/research.py +0 -0
  43. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/io/__init__.py +0 -0
  44. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/io/dataset.py +0 -0
  45. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/io/session_store.py +0 -0
  46. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/ledger/__init__.py +0 -0
  47. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/ledger/mutator.py +0 -0
  48. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/ledger/provenance.py +0 -0
  49. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/llm/__init__.py +0 -0
  50. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/llm/calllog.py +0 -0
  51. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/llm/client.py +0 -0
  52. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/llm/fake.py +0 -0
  53. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/llm/models.py +0 -0
  54. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/llm/structured.py +0 -0
  55. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/llm/usage.py +0 -0
  56. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/logging/__init__.py +0 -0
  57. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/logging/notebook.py +0 -0
  58. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/logging/report.py +0 -0
  59. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/memory/__init__.py +0 -0
  60. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/memory/context.py +0 -0
  61. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/memory/state.py +0 -0
  62. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/prompts/__init__.py +0 -0
  63. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/prompts/analyzer.v1.md +0 -0
  64. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/prompts/analyzer.v2.md +0 -0
  65. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/prompts/generator_system.v1.md +0 -0
  66. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/prompts/generator_system.v2.md +0 -0
  67. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/prompts/generator_user.v1.md +0 -0
  68. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/prompts/generator_user.v2.md +0 -0
  69. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/prompts/matcher.v1.md +0 -0
  70. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/prompts/matcher.v2.md +0 -0
  71. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/prompts/method_card.v1.md +0 -0
  72. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/prompts/planner.v1.md +0 -0
  73. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/prompts/planner.v2.md +0 -0
  74. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/prompts/reflector.v1.md +0 -0
  75. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/prompts/skill_author.v1.md +0 -0
  76. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/prompts/summarizer.v1.md +0 -0
  77. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/prompts/verifier.v1.md +0 -0
  78. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/roles/__init__.py +0 -0
  79. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/roles/analyzer.py +0 -0
  80. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/roles/base.py +0 -0
  81. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/roles/generator.py +0 -0
  82. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/roles/matcher.py +0 -0
  83. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/roles/method_card.py +0 -0
  84. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/roles/planner.py +0 -0
  85. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/roles/reflector.py +0 -0
  86. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/roles/summarizer.py +0 -0
  87. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/roles/verifier.py +0 -0
  88. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/runtime/__init__.py +0 -0
  89. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/runtime/artifacts.py +0 -0
  90. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/runtime/executor.py +0 -0
  91. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/runtime/plots.py +0 -0
  92. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/runtime/safety.py +0 -0
  93. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/runtime/snapshot.py +0 -0
  94. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/__init__.py +0 -0
  95. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/alignment-STalign/SKILL.md +0 -0
  96. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/alignment-STalign/STalign/STalign.py +0 -0
  97. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/alignment-STalign/STalign/__init__.py +0 -0
  98. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/alignment-STalign/STalign/curve_annotator.py +0 -0
  99. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/alignment-STalign/STalign/point_annotator.py +0 -0
  100. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/annotation-tangram/SKILL.md +0 -0
  101. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/author.py +0 -0
  102. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/cell-communication-CellPhoneDB/SKILL.md +0 -0
  103. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/cell-communication-LIANA/SKILL.md +0 -0
  104. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/celltype-annotation-GPT/SKILL.md +0 -0
  105. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/celltype-annotation-GPT/celltype_fast/__init__.py +0 -0
  106. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/celltype-annotation-GPT/celltype_fast/annotation_clustering.py +0 -0
  107. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/celltype-annotation-scANVI/SKILL.md +0 -0
  108. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/celltype-annotation-scANVI/celltype_scvi/__init__.py +0 -0
  109. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/celltype-annotation-scANVI/celltype_scvi/annotation_scvi.py +0 -0
  110. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/celltype-deconvolution-RCTD/SKILL.md +0 -0
  111. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/celltype-deconvolution-RCTD/deconv_rctd/RCTD.py +0 -0
  112. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/celltype-deconvolution-RCTD/deconv_rctd/__init__.py +0 -0
  113. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/celltype-deconvolution-RCTD/deconv_rctd/data_utils.py +0 -0
  114. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/cli.py +0 -0
  115. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/deconvolution-cell2location/SKILL.md +0 -0
  116. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/deconvolution-flashdeconv/SKILL.md +0 -0
  117. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/differential-expression/SKILL.md +0 -0
  118. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/enrichment-ora-ssgsea/SKILL.md +0 -0
  119. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/filter.py +0 -0
  120. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/integration-Harmony/SKILL.md +0 -0
  121. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/integration-bbknn/SKILL.md +0 -0
  122. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/integration-scanorama/SKILL.md +0 -0
  123. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/lint.py +0 -0
  124. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/loader.py +0 -0
  125. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/niche-detection-Harmonics/SKILL.md +0 -0
  126. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/niche-detection-Harmonics/niche_analysis_lib/__init__.py +0 -0
  127. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/niche-detection-Harmonics/niche_analysis_lib/hypo_test.py +0 -0
  128. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/niche-detection-Harmonics/niche_analysis_lib/model.py +0 -0
  129. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/niche-detection-Harmonics/niche_analysis_lib/utils.py +0 -0
  130. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/pathway-GO-enrichment/SKILL.md +0 -0
  131. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/pathway-enrichment-compare/SKILL.md +0 -0
  132. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/pathway-ssgsea/SKILL.md +0 -0
  133. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/registration-paste/SKILL.md +0 -0
  134. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/registry.py +0 -0
  135. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/schema.py +0 -0
  136. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/spatial-domain-GraphST/SKILL.md +0 -0
  137. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/spatial-domain-STAGATE/SKILL.md +0 -0
  138. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/spatial-domain-SpaGCN/SKILL.md +0 -0
  139. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/spatial-statistics-squidpy/SKILL.md +0 -0
  140. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/spatial-stats-neighborhood-enrichment/SKILL.md +0 -0
  141. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/svg-SpatialDE/SKILL.md +0 -0
  142. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/skills/trajectory-palantir-dpt/SKILL.md +0 -0
  143. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/__init__.py +0 -0
  144. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/__main__.py +0 -0
  145. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/errors.py +0 -0
  146. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/events.py +0 -0
  147. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/render.py +0 -0
  148. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/routes/__init__.py +0 -0
  149. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/routes/common.py +0 -0
  150. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/routes/data.py +0 -0
  151. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/routes/misc.py +0 -0
  152. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/routes/rois.py +0 -0
  153. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/routes/session.py +0 -0
  154. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/routes/turns.py +0 -0
  155. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/schemas.py +0 -0
  156. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/server.py +0 -0
  157. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/state.py +0 -0
  158. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/static/css/style.css +0 -0
  159. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/static/js/app.js +0 -0
  160. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/templates/index.html +0 -0
  161. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent/web/turns.py +0 -0
  162. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent.egg-info/SOURCES.txt +0 -0
  163. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent.egg-info/dependency_links.txt +0 -0
  164. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent.egg-info/entry_points.txt +0 -0
  165. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_agent.egg-info/top_level.txt +0 -0
  166. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/__init__.py +0 -0
  167. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/cli.py +0 -0
  168. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/corrupt.py +0 -0
  169. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/judge.py +0 -0
  170. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/replay.py +0 -0
  171. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/result.py +0 -0
  172. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/runner.py +0 -0
  173. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/score/__init__.py +0 -0
  174. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/score/sse.py +0 -0
  175. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/session_bench/__init__.py +0 -0
  176. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/session_bench/runner.py +0 -0
  177. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/session_bench/verifiers.py +0 -0
  178. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/suite.py +0 -0
  179. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/suites/sessionbench/CO-1_correction.yaml +0 -0
  180. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/suites/sessionbench/CR-1_cross_turn_reference.yaml +0 -0
  181. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/suites/sessionbench/OR-1_out_of_registry.yaml +0 -0
  182. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/suites/sessionbench/RE-1_recovery.yaml +0 -0
  183. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/summarize.py +0 -0
  184. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/systems/__init__.py +0 -0
  185. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/systems/base.py +0 -0
  186. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/systems/stat.py +0 -0
  187. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/trace/__init__.py +0 -0
  188. {stat_agent-2.0.0 → stat_agent-2.0.1}/src/stat_bench/trace/parse.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stat-agent
3
- Version: 2.0.0
3
+ Version: 2.0.1
4
4
  Summary: STAT: Spatial Transcriptomics Analytical agenT - AI-powered, provenance-aware spatial omics analysis
5
5
  Author-email: Yihang Chen <ychenlp@connect.ust.hk>
6
6
  License-Expression: BSD-3-Clause
@@ -11,7 +11,6 @@ Classifier: Development Status :: 3 - Alpha
11
11
  Classifier: Intended Audience :: Science/Research
12
12
  Classifier: Programming Language :: Python :: 3
13
13
  Classifier: Programming Language :: Python :: 3.11
14
- Classifier: Programming Language :: Python :: 3.12
15
14
  Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
16
15
  Requires-Python: >=3.11
17
16
  Description-Content-Type: text/markdown
@@ -21,6 +20,8 @@ Requires-Dist: pandas>=2.0
21
20
  Requires-Dist: anndata>=0.10
22
21
  Requires-Dist: scipy>=1.10
23
22
  Requires-Dist: scanpy>=1.10
23
+ Requires-Dist: igraph<1.0,>=0.10
24
+ Requires-Dist: leidenalg<0.12,>=0.10
24
25
  Requires-Dist: geopandas>=0.14
25
26
  Requires-Dist: shapely>=2.0
26
27
  Requires-Dist: pillow>=9.0
@@ -66,6 +67,7 @@ Requires-Dist: harmonypy>=0.0.9; extra == "skills"
66
67
  Requires-Dist: bbknn>=1.5.0; extra == "skills"
67
68
  Requires-Dist: scanorama>=1.7.0; extra == "skills"
68
69
  Requires-Dist: scvi-tools<2.0,>=1.0; extra == "skills"
70
+ Requires-Dist: pyro-ppl<1.9.2,>=1.8; extra == "skills"
69
71
  Requires-Dist: tangram-sc>=1.0.0; extra == "skills"
70
72
  Requires-Dist: qpsolvers[osqp]>=4.0; extra == "skills"
71
73
  Requires-Dist: ray>=2.0; extra == "skills"
@@ -75,7 +77,6 @@ Requires-Dist: palantir>=1.0.0; extra == "skills"
75
77
  Requires-Dist: NaiveDE>=0.1; extra == "skills"
76
78
  Requires-Dist: SpatialDE>=1.1; extra == "skills"
77
79
  Requires-Dist: scikit-misc>=0.5; extra == "skills"
78
- Requires-Dist: igraph<1.0,>=0.9; extra == "skills"
79
80
  Requires-Dist: torch>=2.0; extra == "skills"
80
81
  Requires-Dist: SpaGCN>=1.2.5; extra == "skills"
81
82
  Requires-Dist: GraphST>=1.1.0; extra == "skills"
@@ -115,9 +116,10 @@ interactive tissue viewer.
115
116
 
116
117
  ## Installation
117
118
 
118
- Python 3.11 or newer.
119
+ Python 3.11, for example in a conda environment:
119
120
 
120
121
  ```bash
122
+ conda create -n stat python=3.11 && conda activate stat
121
123
  pip install stat-agent
122
124
  pip install "git+https://github.com/chenyhvvvv/STAT-agent.git" # or the latest main from GitHub
123
125
  ```
@@ -28,9 +28,10 @@ interactive tissue viewer.
28
28
 
29
29
  ## Installation
30
30
 
31
- Python 3.11 or newer.
31
+ Python 3.11, for example in a conda environment:
32
32
 
33
33
  ```bash
34
+ conda create -n stat python=3.11 && conda activate stat
34
35
  pip install stat-agent
35
36
  pip install "git+https://github.com/chenyhvvvv/STAT-agent.git" # or the latest main from GitHub
36
37
  ```
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "stat-agent"
7
- version = "2.0.0"
7
+ version = "2.0.1"
8
8
  description = "STAT: Spatial Transcriptomics Analytical agenT - AI-powered, provenance-aware spatial omics analysis"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -16,7 +16,6 @@ classifiers = [
16
16
  "Intended Audience :: Science/Research",
17
17
  "Programming Language :: Python :: 3",
18
18
  "Programming Language :: Python :: 3.11",
19
- "Programming Language :: Python :: 3.12",
20
19
  "Topic :: Scientific/Engineering :: Bio-Informatics",
21
20
  ]
22
21
 
@@ -27,6 +26,8 @@ dependencies = [
27
26
  "anndata>=0.10",
28
27
  "scipy>=1.10",
29
28
  "scanpy>=1.10",
29
+ "igraph>=0.10,<1.0", # scanpy's Leiden clustering (leidenalg 0.12 needs igraph 1.x)
30
+ "leidenalg>=0.10,<0.12",
30
31
  "geopandas>=0.14",
31
32
  "shapely>=2.0",
32
33
  "pillow>=9.0",
@@ -75,6 +76,7 @@ skills = [
75
76
  "bbknn>=1.5.0",
76
77
  "scanorama>=1.7.0",
77
78
  "scvi-tools>=1.0,<2.0",
79
+ "pyro-ppl>=1.8,<1.9.2", # 1.9.2 removed deep_getattr, which cell2location imports
78
80
  "tangram-sc>=1.0.0",
79
81
  "qpsolvers[osqp]>=4.0",
80
82
  "ray>=2.0",
@@ -84,7 +86,6 @@ skills = [
84
86
  "NaiveDE>=0.1",
85
87
  "SpatialDE>=1.1",
86
88
  "scikit-misc>=0.5",
87
- "igraph>=0.9,<1.0",
88
89
  "torch>=2.0",
89
90
  "SpaGCN>=1.2.5",
90
91
  "GraphST>=1.1.0",
@@ -2,5 +2,5 @@
2
2
 
3
3
  from stat_agent import _compat # noqa: F401 (third-party compatibility patches)
4
4
 
5
- __version__ = "2.0.0"
5
+ __version__ = "2.0.1"
6
6
  __all__ = ["__version__"]
@@ -2,6 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import importlib.metadata
6
+ import importlib.util
5
7
  import re
6
8
  from typing import Any
7
9
 
@@ -193,6 +195,23 @@ async def synthesize_card_node(state: TurnState, runtime: LGRuntime[Context]):
193
195
  return Command(update={"current": current}, goto="verify")
194
196
 
195
197
 
198
+ def _missing_packages(contract: SkillFrontmatter) -> list[str]:
199
+ """The skill's declared python packages that are installed neither as a module nor as a distribution."""
200
+ importlib.invalidate_caches() # a package installed while STAT runs counts on the next request
201
+ missing = []
202
+ for name in contract.dependencies.python:
203
+ try:
204
+ if importlib.util.find_spec(name) is not None:
205
+ continue
206
+ except (ImportError, ValueError):
207
+ pass
208
+ try:
209
+ importlib.metadata.distribution(name)
210
+ except importlib.metadata.PackageNotFoundError:
211
+ missing.append(name)
212
+ return missing
213
+
214
+
196
215
  def _file_free_alternative(ctx: Context, current: dict, contract: SkillFrontmatter) -> str | None:
197
216
  """A compatible, enabled skill that produces everything the declined skill would, without needing a file."""
198
217
  wanted = {a.id for a in contract.produces}
@@ -218,6 +237,16 @@ async def verify_node(state: TurnState, runtime: LGRuntime[Context]):
218
237
  step = step.model_copy(update={"refined_query": step.refined_query + current["switch_note"]})
219
238
  contract = _contract(ctx, current)
220
239
  slug = current.get("skill") or (contract.slug if contract else None)
240
+ missing = _missing_packages(contract) if current.get("skill") else []
241
+ if missing:
242
+ # the code would only fail on the import: say what to install instead of running it
243
+ advice = (
244
+ f"{ctx.registry.get(slug).name} needs {', '.join(missing)}, which {'is' if len(missing) == 1 else 'are'} not installed in STAT's Python environment. "
245
+ 'Install the analysis packages with `pip install "stat-agent[skills]"` (the skill\'s SKILL.md lists any it does not cover), then ask again.'
246
+ )
247
+ ctx.emit(AdviceEvent(message=advice, skill=slug, step_id=current["step_id"], unmet=missing))
248
+ current.update(status="blocked", mode="advice", advice=advice, unmet=missing)
249
+ return Command(update={"current": current}, goto="block_step")
221
250
  if contract is None or not ctx.ablation.verifier:
222
251
  current["complete_query"] = step.refined_query
223
252
  ctx.emit(VerifyComplete(step_id=current["step_id"], skill=slug, verdicts=[], decided_by="bypass", complete_query=step.refined_query))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stat-agent
3
- Version: 2.0.0
3
+ Version: 2.0.1
4
4
  Summary: STAT: Spatial Transcriptomics Analytical agenT - AI-powered, provenance-aware spatial omics analysis
5
5
  Author-email: Yihang Chen <ychenlp@connect.ust.hk>
6
6
  License-Expression: BSD-3-Clause
@@ -11,7 +11,6 @@ Classifier: Development Status :: 3 - Alpha
11
11
  Classifier: Intended Audience :: Science/Research
12
12
  Classifier: Programming Language :: Python :: 3
13
13
  Classifier: Programming Language :: Python :: 3.11
14
- Classifier: Programming Language :: Python :: 3.12
15
14
  Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
16
15
  Requires-Python: >=3.11
17
16
  Description-Content-Type: text/markdown
@@ -21,6 +20,8 @@ Requires-Dist: pandas>=2.0
21
20
  Requires-Dist: anndata>=0.10
22
21
  Requires-Dist: scipy>=1.10
23
22
  Requires-Dist: scanpy>=1.10
23
+ Requires-Dist: igraph<1.0,>=0.10
24
+ Requires-Dist: leidenalg<0.12,>=0.10
24
25
  Requires-Dist: geopandas>=0.14
25
26
  Requires-Dist: shapely>=2.0
26
27
  Requires-Dist: pillow>=9.0
@@ -66,6 +67,7 @@ Requires-Dist: harmonypy>=0.0.9; extra == "skills"
66
67
  Requires-Dist: bbknn>=1.5.0; extra == "skills"
67
68
  Requires-Dist: scanorama>=1.7.0; extra == "skills"
68
69
  Requires-Dist: scvi-tools<2.0,>=1.0; extra == "skills"
70
+ Requires-Dist: pyro-ppl<1.9.2,>=1.8; extra == "skills"
69
71
  Requires-Dist: tangram-sc>=1.0.0; extra == "skills"
70
72
  Requires-Dist: qpsolvers[osqp]>=4.0; extra == "skills"
71
73
  Requires-Dist: ray>=2.0; extra == "skills"
@@ -75,7 +77,6 @@ Requires-Dist: palantir>=1.0.0; extra == "skills"
75
77
  Requires-Dist: NaiveDE>=0.1; extra == "skills"
76
78
  Requires-Dist: SpatialDE>=1.1; extra == "skills"
77
79
  Requires-Dist: scikit-misc>=0.5; extra == "skills"
78
- Requires-Dist: igraph<1.0,>=0.9; extra == "skills"
79
80
  Requires-Dist: torch>=2.0; extra == "skills"
80
81
  Requires-Dist: SpaGCN>=1.2.5; extra == "skills"
81
82
  Requires-Dist: GraphST>=1.1.0; extra == "skills"
@@ -115,9 +116,10 @@ interactive tissue viewer.
115
116
 
116
117
  ## Installation
117
118
 
118
- Python 3.11 or newer.
119
+ Python 3.11, for example in a conda environment:
119
120
 
120
121
  ```bash
122
+ conda create -n stat python=3.11 && conda activate stat
121
123
  pip install stat-agent
122
124
  pip install "git+https://github.com/chenyhvvvv/STAT-agent.git" # or the latest main from GitHub
123
125
  ```
@@ -3,6 +3,8 @@ pandas>=2.0
3
3
  anndata>=0.10
4
4
  scipy>=1.10
5
5
  scanpy>=1.10
6
+ igraph<1.0,>=0.10
7
+ leidenalg<0.12,>=0.10
6
8
  geopandas>=0.14
7
9
  shapely>=2.0
8
10
  pillow>=9.0
@@ -53,6 +55,7 @@ harmonypy>=0.0.9
53
55
  bbknn>=1.5.0
54
56
  scanorama>=1.7.0
55
57
  scvi-tools<2.0,>=1.0
58
+ pyro-ppl<1.9.2,>=1.8
56
59
  tangram-sc>=1.0.0
57
60
  qpsolvers[osqp]>=4.0
58
61
  ray>=2.0
@@ -62,7 +65,6 @@ palantir>=1.0.0
62
65
  NaiveDE>=0.1
63
66
  SpatialDE>=1.1
64
67
  scikit-misc>=0.5
65
- igraph<1.0,>=0.9
66
68
  torch>=2.0
67
69
  SpaGCN>=1.2.5
68
70
  GraphST>=1.1.0
File without changes
File without changes