qwen-sci 0.2.0__tar.gz → 0.2.2__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 (636) hide show
  1. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/PKG-INFO +1 -1
  2. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/pyproject.toml +13 -10
  3. qwen_sci-0.2.2/src/1.txt +1 -0
  4. qwen_sci-0.2.0/src/agents/blog_agent/README.md +0 -299
  5. qwen_sci-0.2.0/src/agents/blog_agent/agent/llm_config.py +0 -109
  6. qwen_sci-0.2.0/src/agents/blog_agent/agent/new_base_agent.py +0 -388
  7. qwen_sci-0.2.0/src/agents/blog_agent/scripts/run.py +0 -497
  8. qwen_sci-0.2.0/src/agents/blog_agent/skills/blog-analyze/SKILL.md +0 -376
  9. qwen_sci-0.2.0/src/agents/blog_agent/skills/blog-refine/SKILL.md +0 -246
  10. qwen_sci-0.2.0/src/agents/blog_agent/skills/blog-writer/SKILL.md +0 -218
  11. qwen_sci-0.2.0/src/agents/blog_agent/skills/workspace-navigator/SKILL.md +0 -147
  12. qwen_sci-0.2.0/src/agents/blog_agent/tools/count_words_tool.py +0 -161
  13. qwen_sci-0.2.0/src/agents/blog_agent/tools/download_paper_pdf_tool.py +0 -158
  14. qwen_sci-0.2.0/src/agents/blog_agent/tools/gengraph.py +0 -389
  15. qwen_sci-0.2.0/src/agents/blog_agent/tools/illustrate.py +0 -116
  16. qwen_sci-0.2.0/src/agents/blog_agent/tools/ocr.py +0 -217
  17. qwen_sci-0.2.0/src/agents/blog_agent/tools/search_core_tool.py +0 -159
  18. qwen_sci-0.2.0/src/agents/blog_agent/tools/search_paper_abstract_tool.py +0 -164
  19. qwen_sci-0.2.0/src/agents/blog_agent/utils/deeperaser.pth +0 -0
  20. qwen_sci-0.2.0/src/agents/blog_agent/utils/deeperaser.py +0 -381
  21. qwen_sci-0.2.0/src/agents/blog_agent/utils/graph.db +0 -0
  22. qwen_sci-0.2.0/src/agents/blog_agent/utils/retrieval.py +0 -278
  23. qwen_sci-0.2.0/src/agents/blog_agent/utils/search_core.py +0 -159
  24. qwen_sci-0.2.0/src/agents/blog_agent/utils/semantic_scholar.py +0 -669
  25. qwen_sci-0.2.0/src/agents/experiment_agent/README.md +0 -93
  26. qwen_sci-0.2.0/src/agents/experiment_agent/agents/__init__.py +0 -4
  27. qwen_sci-0.2.0/src/agents/experiment_agent/agents/base/__init__.py +0 -11
  28. qwen_sci-0.2.0/src/agents/experiment_agent/agents/base/agent.py +0 -204
  29. qwen_sci-0.2.0/src/agents/experiment_agent/agents/code/__init__.py +0 -21
  30. qwen_sci-0.2.0/src/agents/experiment_agent/agents/code/entry.py +0 -11
  31. qwen_sci-0.2.0/src/agents/experiment_agent/agents/code/planner.py +0 -599
  32. qwen_sci-0.2.0/src/agents/experiment_agent/agents/code/reviewer.py +0 -128
  33. qwen_sci-0.2.0/src/agents/experiment_agent/agents/code/worker.py +0 -78
  34. qwen_sci-0.2.0/src/agents/experiment_agent/agents/finalization/__init__.py +0 -6
  35. qwen_sci-0.2.0/src/agents/experiment_agent/agents/finalization/entry.py +0 -350
  36. qwen_sci-0.2.0/src/agents/experiment_agent/agents/master/__init__.py +0 -3
  37. qwen_sci-0.2.0/src/agents/experiment_agent/agents/master/entry.py +0 -424
  38. qwen_sci-0.2.0/src/agents/experiment_agent/agents/prepare/__init__.py +0 -39
  39. qwen_sci-0.2.0/src/agents/experiment_agent/agents/prepare/entry.py +0 -7
  40. qwen_sci-0.2.0/src/agents/experiment_agent/agents/prepare/planner.py +0 -497
  41. qwen_sci-0.2.0/src/agents/experiment_agent/agents/prepare/reviewer.py +0 -99
  42. qwen_sci-0.2.0/src/agents/experiment_agent/agents/prepare/worker.py +0 -101
  43. qwen_sci-0.2.0/src/agents/experiment_agent/agents/science/__init__.py +0 -21
  44. qwen_sci-0.2.0/src/agents/experiment_agent/agents/science/entry.py +0 -11
  45. qwen_sci-0.2.0/src/agents/experiment_agent/agents/science/planner.py +0 -639
  46. qwen_sci-0.2.0/src/agents/experiment_agent/agents/science/reviewer.py +0 -124
  47. qwen_sci-0.2.0/src/agents/experiment_agent/agents/science/worker.py +0 -34
  48. qwen_sci-0.2.0/src/agents/experiment_agent/config.py +0 -937
  49. qwen_sci-0.2.0/src/agents/experiment_agent/main.py +0 -378
  50. qwen_sci-0.2.0/src/agents/experiment_agent/runtime/__init__.py +0 -88
  51. qwen_sci-0.2.0/src/agents/experiment_agent/runtime/ablation_results.py +0 -444
  52. qwen_sci-0.2.0/src/agents/experiment_agent/runtime/artifacts.py +0 -2481
  53. qwen_sci-0.2.0/src/agents/experiment_agent/runtime/code_review_context.py +0 -473
  54. qwen_sci-0.2.0/src/agents/experiment_agent/runtime/contracts.py +0 -1346
  55. qwen_sci-0.2.0/src/agents/experiment_agent/runtime/finalization_hooks.py +0 -607
  56. qwen_sci-0.2.0/src/agents/experiment_agent/runtime/idea_components.py +0 -102
  57. qwen_sci-0.2.0/src/agents/experiment_agent/runtime/manifests.py +0 -192
  58. qwen_sci-0.2.0/src/agents/experiment_agent/runtime/openharness_runner.py +0 -1091
  59. qwen_sci-0.2.0/src/agents/experiment_agent/runtime/openharness_vendor.py +0 -58
  60. qwen_sci-0.2.0/src/agents/experiment_agent/runtime/phase_contracts.py +0 -201
  61. qwen_sci-0.2.0/src/agents/experiment_agent/runtime/phase_runner.py +0 -2574
  62. qwen_sci-0.2.0/src/agents/experiment_agent/runtime/prepare_contracts.py +0 -614
  63. qwen_sci-0.2.0/src/agents/experiment_agent/runtime/project_integrity.py +0 -409
  64. qwen_sci-0.2.0/src/agents/experiment_agent/runtime/report_layout.py +0 -194
  65. qwen_sci-0.2.0/src/agents/experiment_agent/runtime/self_contained.py +0 -179
  66. qwen_sci-0.2.0/src/agents/experiment_agent/skills/__init__.py +0 -45
  67. qwen_sci-0.2.0/src/agents/experiment_agent/skills/benchmark-discovery/SKILL.md +0 -33
  68. qwen_sci-0.2.0/src/agents/experiment_agent/skills/bounded-tool-use/SKILL.md +0 -31
  69. qwen_sci-0.2.0/src/agents/experiment_agent/skills/code-enablement/SKILL.md +0 -59
  70. qwen_sci-0.2.0/src/agents/experiment_agent/skills/code-planning/SKILL.md +0 -55
  71. qwen_sci-0.2.0/src/agents/experiment_agent/skills/component-coverage/SKILL.md +0 -26
  72. qwen_sci-0.2.0/src/agents/experiment_agent/skills/environment-setup/SKILL.md +0 -23
  73. qwen_sci-0.2.0/src/agents/experiment_agent/skills/prepare-planning/SKILL.md +0 -85
  74. qwen_sci-0.2.0/src/agents/experiment_agent/skills/resource-acquisition/SKILL.md +0 -69
  75. qwen_sci-0.2.0/src/agents/experiment_agent/skills/science-execution/SKILL.md +0 -46
  76. qwen_sci-0.2.0/src/agents/experiment_agent/skills/science-planning/SKILL.md +0 -35
  77. qwen_sci-0.2.0/src/agents/experiment_agent/telemetry/__init__.py +0 -161
  78. qwen_sci-0.2.0/src/agents/experiment_agent/tools/__init__.py +0 -6
  79. qwen_sci-0.2.0/src/harness/src/openharness/plugins/bundled/__init__.py +0 -0
  80. qwen_sci-0.2.0/src/harness/src/openharness/services/oauth/__init__.py +0 -0
  81. qwen_sci-0.2.0/src/harness/src/openharness/utils/__init__.py +0 -0
  82. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/LICENSE +0 -0
  83. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/README.md +0 -0
  84. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/run_blog.sh +0 -0
  85. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/run_experiment.sh +0 -0
  86. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/run_idea.sh +0 -0
  87. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/run_pipeline.sh +0 -0
  88. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/run_survey.sh +0 -0
  89. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/scripts/.gitkeep +0 -0
  90. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/scripts/install_base.sh +0 -0
  91. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/scripts/install_heavy.sh +0 -0
  92. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/scripts/install_mcp_wrappers.sh +0 -0
  93. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/scripts/sync_claude_anthropic_env.py +0 -0
  94. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/__init__.py +0 -0
  95. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/__main__.py +0 -0
  96. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/__init__.py +0 -0
  97. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/__init__.py +0 -0
  98. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/artifacts.py +0 -0
  99. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/cache.py +0 -0
  100. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/completeness.py +0 -0
  101. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/contracts.py +0 -0
  102. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/counterexample_analyzer.py +0 -0
  103. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/design_evidence_paper_screener.py +0 -0
  104. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/discipline_catalog.py +0 -0
  105. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/evidence_cards.py +0 -0
  106. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/evidence_planner.py +0 -0
  107. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/formal_reasoning_planner.py +0 -0
  108. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/fulltext_acquisition.py +0 -0
  109. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/idea_adapter.py +0 -0
  110. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/idea_intake.py +0 -0
  111. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/llm_json.py +0 -0
  112. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/orchestrator.py +0 -0
  113. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/reasoning_context.py +0 -0
  114. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/reasoning_validation.py +0 -0
  115. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/run.py +0 -0
  116. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/run_logging.py +0 -0
  117. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/scope_gate.py +0 -0
  118. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/study_type_composer.py +0 -0
  119. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/survey_evidence.py +0 -0
  120. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/template_router.py +0 -0
  121. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/variable_claim_extractor.py +0 -0
  122. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/__init__.py +0 -0
  123. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/__init__.py +0 -0
  124. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/artifacts.py +0 -0
  125. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/base.py +0 -0
  126. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/ligagent.py +0 -0
  127. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/mcts.py +0 -0
  128. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/__init__.py +0 -0
  129. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/advanced_analysis.py +0 -0
  130. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/algorithm_alignment.py +0 -0
  131. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/algorithm_structuring.py +0 -0
  132. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/component_extraction.py +0 -0
  133. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/component_novelty_evaluation.py +0 -0
  134. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/experiment_findings_extraction.py +0 -0
  135. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/idea_fusion.py +0 -0
  136. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/idea_introduction.py +0 -0
  137. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/idea_result_alignment.py +0 -0
  138. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/input_interpreter.py +0 -0
  139. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/keynote_ops.py +0 -0
  140. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/mcts_evaluation.py +0 -0
  141. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/mcts_generation.py +0 -0
  142. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/mechanism_commit_query.py +0 -0
  143. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/memory_selection.py +0 -0
  144. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/prompt_modes.py +0 -0
  145. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/rag_query.py +0 -0
  146. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/re_analysis_replan.py +0 -0
  147. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/reference_grounding.py +0 -0
  148. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/root_domain_classification.py +0 -0
  149. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/scientific_debate.py +0 -0
  150. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/scientific_materialization.py +0 -0
  151. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/skill_instantiation.py +0 -0
  152. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/theory_transfer_query.py +0 -0
  153. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/topic_background.py +0 -0
  154. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/DEFAULT_SKILL_TEMPLATES.json +0 -0
  155. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/edit_operator_skills/alternative-path-contrast/SKILL.md +0 -0
  156. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/edit_operator_skills/alternative-path-contrast/references/contrast_patterns.md +0 -0
  157. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/edit_operator_skills/feedback-closed-loop/SKILL.md +0 -0
  158. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/edit_operator_skills/feedback-closed-loop/references/mechanism_cards.md +0 -0
  159. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/edit_operator_skills/hierarchical-decomposition/SKILL.md +0 -0
  160. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/edit_operator_skills/hierarchical-decomposition/references/hierarchy_patterns.md +0 -0
  161. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/edit_operator_skills/mechanism-commit-innovation/SKILL.md +0 -0
  162. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/edit_operator_skills/mechanism-commit-innovation/references/mechanism_commit_patterns.md +0 -0
  163. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/edit_operator_skills/multi-scale-coordinator/SKILL.md +0 -0
  164. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/edit_operator_skills/multi-scale-coordinator/references/coordination_patterns.md +0 -0
  165. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/edit_operator_skills/speculative-execution-with-repair/SKILL.md +0 -0
  166. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/edit_operator_skills/speculative-execution-with-repair/references/speculation_patterns.md +0 -0
  167. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/edit_operator_skills/surgical-modularity/SKILL.md +0 -0
  168. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/edit_operator_skills/surgical-modularity/references/modularity_patterns.md +0 -0
  169. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/edit_operator_skills/theory-transfer-injection/SKILL.md +0 -0
  170. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/edit_operator_skills/theory-transfer-injection/references/transfer_patterns.md +0 -0
  171. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/example/idea_result.json +0 -0
  172. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/run.py +0 -0
  173. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_advanced_analysis_contract.py +0 -0
  174. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_gap_hypothesis_bridge.py +0 -0
  175. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_idea_debate.py +0 -0
  176. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_idea_result_v5.py +0 -0
  177. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_idea_synthesis.py +0 -0
  178. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_mature_idea_sources.py +0 -0
  179. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_multimodal_idea_integration.py +0 -0
  180. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_profile_materialization_and_scoring.py +0 -0
  181. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_profile_native_skill_rendering.py +0 -0
  182. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_result_persistence.py +0 -0
  183. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_scientific_intervention_profiles.py +0 -0
  184. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_scientific_rubric_and_prompts.py +0 -0
  185. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_strict_json_object_responses.py +0 -0
  186. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/__init__.py +0 -0
  187. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/ablation_inputs.py +0 -0
  188. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/chat_errors.py +0 -0
  189. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/chat_router.py +0 -0
  190. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/chat_transport.py +0 -0
  191. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/config_loader.py +0 -0
  192. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/json_utils.py +0 -0
  193. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/logger.py +0 -0
  194. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/progress.py +0 -0
  195. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/response_parsing.py +0 -0
  196. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/run_inputs.py +0 -0
  197. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/__init__.py +0 -0
  198. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/component_novelty.py +0 -0
  199. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/defect_registry.py +0 -0
  200. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/idea_routes.py +0 -0
  201. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/idea_taste_presets.py +0 -0
  202. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/mcts_helpers.py +0 -0
  203. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/mcts_runtime.py +0 -0
  204. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/scientific_intervention_ontology.py +0 -0
  205. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/scientific_rubric.py +0 -0
  206. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/skill_parsing.py +0 -0
  207. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/papers/__init__.py +0 -0
  208. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/papers/paper_graph_vector_store.py +0 -0
  209. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/papers/paper_repository.py +0 -0
  210. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/prompting/__init__.py +0 -0
  211. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/prompting/prompt_views.py +0 -0
  212. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/__init__.py +0 -0
  213. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/advanced_analysis_contract.py +0 -0
  214. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/gap_hypothesis_bridge.py +0 -0
  215. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/idea_contract.py +0 -0
  216. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/idea_debate.py +0 -0
  217. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/idea_diversity.py +0 -0
  218. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/idea_fusion.py +0 -0
  219. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/idea_helpers.py +0 -0
  220. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/idea_portfolio.py +0 -0
  221. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/idea_synthesis.py +0 -0
  222. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/ligagent_flow.py +0 -0
  223. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/ligagent_handlers.py +0 -0
  224. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/ligagent_helpers.py +0 -0
  225. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/ligagent_utils.py +0 -0
  226. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/mature_idea_sources.py +0 -0
  227. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/multimodal_data_anchoring.py +0 -0
  228. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/result_persistence.py +0 -0
  229. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/stage_contract.py +0 -0
  230. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/workflow_runtime.py +0 -0
  231. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/__init__.py +0 -0
  232. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/artifacts.py +0 -0
  233. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/authoring_blueprint.py +0 -0
  234. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/bibtex_renderer.py +0 -0
  235. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/contract_repair.py +0 -0
  236. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/contracts.py +0 -0
  237. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/cross_section_editor.py +0 -0
  238. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/document_quality.py +0 -0
  239. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/idea_evolution.py +0 -0
  240. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/input_loader.py +0 -0
  241. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/latex_compiler.py +0 -0
  242. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/latex_safety.py +0 -0
  243. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/llm_json.py +0 -0
  244. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/markdown_renderer.py +0 -0
  245. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/pdf_validator.py +0 -0
  246. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/render.py +0 -0
  247. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/render_artifacts.py +0 -0
  248. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/run.py +0 -0
  249. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/run_logging.py +0 -0
  250. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/section_cache.py +0 -0
  251. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/section_composer.py +0 -0
  252. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/section_router.py +0 -0
  253. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/semantic_validator.py +0 -0
  254. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/source_bundle.py +0 -0
  255. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/source_registry.py +0 -0
  256. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/survey_source_loader.py +0 -0
  257. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/template_adapter.py +0 -0
  258. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/template_profile.py +0 -0
  259. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/tex_renderer.py +0 -0
  260. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/theory_presentation.py +0 -0
  261. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/theory_spine.py +0 -0
  262. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/Dockerfile +0 -0
  263. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/README.md +0 -0
  264. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/config/deep_survey.yaml +0 -0
  265. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/config/deep_survey_batch.yaml +0 -0
  266. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/config/deep_survey_fast.yaml +0 -0
  267. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/config/evaluate_baseline.yaml +0 -0
  268. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/config/outcomeRAG.yaml +0 -0
  269. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/env_report.md +0 -0
  270. {qwen_sci-0.2.0/src/agents/blog_agent → qwen_sci-0.2.2/src/agents/survey_agent/modules}/__init__.py +0 -0
  271. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/code_collector.py +0 -0
  272. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/code_report_generator.py +0 -0
  273. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/data_manager.py +0 -0
  274. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/database.py +0 -0
  275. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/fulltext_download_cache.py +0 -0
  276. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/fulltext_http.py +0 -0
  277. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/fulltext_resolution.py +0 -0
  278. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/judge.py +0 -0
  279. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/outcome_RAG.py +0 -0
  280. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/paper_graph_retriever.py +0 -0
  281. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/pe.py +0 -0
  282. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/pseudo_creator.py +0 -0
  283. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/pseudo_reviser.py +0 -0
  284. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/refine_agent.py +0 -0
  285. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/survey_generator.py +0 -0
  286. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/survey_visualizer.py +0 -0
  287. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/visual_prompts.py +0 -0
  288. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/work_analyzer.py +0 -0
  289. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/work_collector.py +0 -0
  290. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/baseline_evaluation.py +0 -0
  291. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/run_deep_survey.py +0 -0
  292. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/run_deep_survey_adapter.py +0 -0
  293. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/run_deep_survey_adapter_with_input.py +0 -0
  294. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/run_deep_survey_batch.py +0 -0
  295. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/run_deep_survey_batch_arg.py +0 -0
  296. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/run_deep_survey_batch_settings.py +0 -0
  297. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/run_keynotes_gen.py +0 -0
  298. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/run_work_clusters.py +0 -0
  299. {qwen_sci-0.2.0/src/agents/blog_agent/agent → qwen_sci-0.2.2/src/agents/survey_agent/utils}/__init__.py +0 -0
  300. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/ablation_utils.py +0 -0
  301. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/api_call.py +0 -0
  302. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/chat_utils.py +0 -0
  303. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/config_utils.py +0 -0
  304. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/convert_to_md.py +0 -0
  305. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/err_info.py +0 -0
  306. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/file_utils.py +0 -0
  307. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/gpu_utils.py +0 -0
  308. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/graph_visualizer.py +0 -0
  309. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/html_utils.py +0 -0
  310. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/latex_generator_intra_cluster.py +0 -0
  311. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/latex_generator_relation_table.py +0 -0
  312. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/mineru_section_packer.py +0 -0
  313. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/mineru_utils.py +0 -0
  314. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/paper.py +0 -0
  315. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/read_yaml.py +0 -0
  316. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/repo_utils.py +0 -0
  317. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/rich_logger.py +0 -0
  318. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/step2v2.py +0 -0
  319. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/step2v2_extractor.py +0 -0
  320. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/topic_survey_storage.py +0 -0
  321. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/utils.py +0 -0
  322. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/work.py +0 -0
  323. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/cli.py +0 -0
  324. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/config/__init__.py +0 -0
  325. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/config/default.yaml +0 -0
  326. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/LICENSE +0 -0
  327. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/VENDORED.md +0 -0
  328. {qwen_sci-0.2.0/src/agents/experiment_agent → qwen_sci-0.2.2/src/harness/src}/__init__.py +0 -0
  329. {qwen_sci-0.2.0/src/agents/survey_agent/modules → qwen_sci-0.2.2/src/harness/src/openharness}/__init__.py +0 -0
  330. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/__main__.py +0 -0
  331. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/__init__.py +0 -0
  332. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/client.py +0 -0
  333. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/codex_client.py +0 -0
  334. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/copilot_auth.py +0 -0
  335. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/copilot_client.py +0 -0
  336. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/errors.py +0 -0
  337. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/openai_client.py +0 -0
  338. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/provider.py +0 -0
  339. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/registry.py +0 -0
  340. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/usage.py +0 -0
  341. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/auth/__init__.py +0 -0
  342. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/auth/external.py +0 -0
  343. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/auth/flows.py +0 -0
  344. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/auth/manager.py +0 -0
  345. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/auth/storage.py +0 -0
  346. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/autopilot/__init__.py +0 -0
  347. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/autopilot/service.py +0 -0
  348. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/autopilot/types.py +0 -0
  349. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/bridge/__init__.py +0 -0
  350. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/bridge/manager.py +0 -0
  351. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/bridge/session_runner.py +0 -0
  352. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/bridge/types.py +0 -0
  353. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/bridge/work_secret.py +0 -0
  354. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/UPSTREAM +0 -0
  355. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/__init__.py +0 -0
  356. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/adapter.py +0 -0
  357. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/bus/__init__.py +0 -0
  358. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/bus/events.py +0 -0
  359. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/bus/queue.py +0 -0
  360. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/__init__.py +0 -0
  361. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/base.py +0 -0
  362. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/dingtalk.py +0 -0
  363. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/discord.py +0 -0
  364. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/email.py +0 -0
  365. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/feishu.py +0 -0
  366. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/manager.py +0 -0
  367. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/matrix.py +0 -0
  368. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/mochat.py +0 -0
  369. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/qq.py +0 -0
  370. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/slack.py +0 -0
  371. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/telegram.py +0 -0
  372. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/whatsapp.py +0 -0
  373. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/cli.py +0 -0
  374. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/commands/__init__.py +0 -0
  375. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/commands/registry.py +0 -0
  376. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/config/__init__.py +0 -0
  377. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/config/paths.py +0 -0
  378. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/config/schema.py +0 -0
  379. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/config/settings.py +0 -0
  380. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/coordinator/__init__.py +0 -0
  381. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/coordinator/agent_definitions.py +0 -0
  382. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/coordinator/coordinator_mode.py +0 -0
  383. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/engine/__init__.py +0 -0
  384. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/engine/cost_tracker.py +0 -0
  385. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/engine/messages.py +0 -0
  386. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/engine/query.py +0 -0
  387. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/engine/query_engine.py +0 -0
  388. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/engine/stream_events.py +0 -0
  389. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/hooks/__init__.py +0 -0
  390. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/hooks/events.py +0 -0
  391. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/hooks/executor.py +0 -0
  392. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/hooks/hot_reload.py +0 -0
  393. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/hooks/loader.py +0 -0
  394. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/hooks/schemas.py +0 -0
  395. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/hooks/types.py +0 -0
  396. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/keybindings/__init__.py +0 -0
  397. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/keybindings/default_bindings.py +0 -0
  398. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/keybindings/loader.py +0 -0
  399. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/keybindings/parser.py +0 -0
  400. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/keybindings/resolver.py +0 -0
  401. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/mcp/__init__.py +0 -0
  402. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/mcp/client.py +0 -0
  403. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/mcp/config.py +0 -0
  404. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/mcp/types.py +0 -0
  405. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/__init__.py +0 -0
  406. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/agent.py +0 -0
  407. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/manager.py +0 -0
  408. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/memdir.py +0 -0
  409. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/migrate.py +0 -0
  410. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/paths.py +0 -0
  411. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/relevance.py +0 -0
  412. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/scan.py +0 -0
  413. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/schema.py +0 -0
  414. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/search.py +0 -0
  415. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/team.py +0 -0
  416. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/types.py +0 -0
  417. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/usage.py +0 -0
  418. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/output_styles/__init__.py +0 -0
  419. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/output_styles/loader.py +0 -0
  420. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/permissions/__init__.py +0 -0
  421. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/permissions/checker.py +0 -0
  422. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/permissions/modes.py +0 -0
  423. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/personalization/__init__.py +0 -0
  424. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/personalization/extractor.py +0 -0
  425. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/personalization/rules.py +0 -0
  426. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/personalization/session_hook.py +0 -0
  427. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/platforms.py +0 -0
  428. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/plugins/__init__.py +0 -0
  429. {qwen_sci-0.2.0/src/agents/survey_agent/utils → qwen_sci-0.2.2/src/harness/src/openharness/plugins/bundled}/__init__.py +0 -0
  430. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/plugins/installer.py +0 -0
  431. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/plugins/loader.py +0 -0
  432. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/plugins/schemas.py +0 -0
  433. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/plugins/types.py +0 -0
  434. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/prompts/__init__.py +0 -0
  435. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/prompts/claudemd.py +0 -0
  436. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/prompts/context.py +0 -0
  437. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/prompts/environment.py +0 -0
  438. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/prompts/system_prompt.py +0 -0
  439. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/sandbox/Dockerfile +0 -0
  440. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/sandbox/__init__.py +0 -0
  441. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/sandbox/adapter.py +0 -0
  442. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/sandbox/docker_backend.py +0 -0
  443. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/sandbox/docker_image.py +0 -0
  444. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/sandbox/path_validator.py +0 -0
  445. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/sandbox/session.py +0 -0
  446. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/__init__.py +0 -0
  447. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/autodream/__init__.py +0 -0
  448. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/autodream/backup.py +0 -0
  449. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/autodream/lock.py +0 -0
  450. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/autodream/prompt.py +0 -0
  451. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/autodream/service.py +0 -0
  452. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/compact/__init__.py +0 -0
  453. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/cron.py +0 -0
  454. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/cron_scheduler.py +0 -0
  455. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/lsp/__init__.py +0 -0
  456. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/memory_extract/__init__.py +0 -0
  457. {qwen_sci-0.2.0/src/harness/src → qwen_sci-0.2.2/src/harness/src/openharness/services/oauth}/__init__.py +0 -0
  458. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/session_backend.py +0 -0
  459. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/session_memory/__init__.py +0 -0
  460. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/session_storage.py +0 -0
  461. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/token_estimation.py +0 -0
  462. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/tool_outputs.py +0 -0
  463. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/__init__.py +0 -0
  464. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/_frontmatter.py +0 -0
  465. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/__init__.py +0 -0
  466. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/content/commit.md +0 -0
  467. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/content/debug.md +0 -0
  468. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/content/diagnose.md +0 -0
  469. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/content/plan.md +0 -0
  470. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/content/review.md +0 -0
  471. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/content/simplify.md +0 -0
  472. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/content/skill-creator.md +0 -0
  473. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/content/test.md +0 -0
  474. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/loader.py +0 -0
  475. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/registry.py +0 -0
  476. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/types.py +0 -0
  477. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/state/__init__.py +0 -0
  478. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/state/app_state.py +0 -0
  479. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/state/store.py +0 -0
  480. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/__init__.py +0 -0
  481. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/in_process.py +0 -0
  482. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/lockfile.py +0 -0
  483. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/mailbox.py +0 -0
  484. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/permission_sync.py +0 -0
  485. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/registry.py +0 -0
  486. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/spawn_utils.py +0 -0
  487. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/subprocess_backend.py +0 -0
  488. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/team_lifecycle.py +0 -0
  489. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/types.py +0 -0
  490. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/worktree.py +0 -0
  491. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tasks/__init__.py +0 -0
  492. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tasks/local_agent_task.py +0 -0
  493. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tasks/local_shell_task.py +0 -0
  494. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tasks/manager.py +0 -0
  495. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tasks/stop_task.py +0 -0
  496. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tasks/types.py +0 -0
  497. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/themes/__init__.py +0 -0
  498. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/themes/builtin.py +0 -0
  499. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/themes/loader.py +0 -0
  500. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/themes/schema.py +0 -0
  501. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/__init__.py +0 -0
  502. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/agent_tool.py +0 -0
  503. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/ask_user_question_tool.py +0 -0
  504. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/base.py +0 -0
  505. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/bash_tool.py +0 -0
  506. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/brief_tool.py +0 -0
  507. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/config_tool.py +0 -0
  508. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/cron_create_tool.py +0 -0
  509. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/cron_delete_tool.py +0 -0
  510. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/cron_list_tool.py +0 -0
  511. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/cron_toggle_tool.py +0 -0
  512. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/enter_plan_mode_tool.py +0 -0
  513. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/enter_worktree_tool.py +0 -0
  514. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/exit_plan_mode_tool.py +0 -0
  515. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/exit_worktree_tool.py +0 -0
  516. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/file_edit_tool.py +0 -0
  517. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/file_read_tool.py +0 -0
  518. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/file_write_tool.py +0 -0
  519. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/glob_tool.py +0 -0
  520. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/grep_tool.py +0 -0
  521. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/image_generation_tool.py +0 -0
  522. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/image_to_text_tool.py +0 -0
  523. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/list_mcp_resources_tool.py +0 -0
  524. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/lsp_tool.py +0 -0
  525. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/mcp_auth_tool.py +0 -0
  526. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/mcp_tool.py +0 -0
  527. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/notebook_edit_tool.py +0 -0
  528. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/read_mcp_resource_tool.py +0 -0
  529. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/remote_trigger_tool.py +0 -0
  530. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/send_message_tool.py +0 -0
  531. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/skill_tool.py +0 -0
  532. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/sleep_tool.py +0 -0
  533. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/task_create_tool.py +0 -0
  534. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/task_get_tool.py +0 -0
  535. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/task_list_tool.py +0 -0
  536. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/task_output_tool.py +0 -0
  537. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/task_stop_tool.py +0 -0
  538. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/task_update_tool.py +0 -0
  539. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/team_create_tool.py +0 -0
  540. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/team_delete_tool.py +0 -0
  541. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/todo_write_tool.py +0 -0
  542. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/tool_search_tool.py +0 -0
  543. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/web_fetch_tool.py +0 -0
  544. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/web_search_tool.py +0 -0
  545. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/__init__.py +0 -0
  546. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/app.py +0 -0
  547. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/backend_host.py +0 -0
  548. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/coordinator_drain.py +0 -0
  549. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/input.py +0 -0
  550. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/output.py +0 -0
  551. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/permission_dialog.py +0 -0
  552. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/protocol.py +0 -0
  553. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/react_launcher.py +0 -0
  554. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/runtime.py +0 -0
  555. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/textual_app.py +0 -0
  556. {qwen_sci-0.2.0/src/harness/src/openharness → qwen_sci-0.2.2/src/harness/src/openharness/utils}/__init__.py +0 -0
  557. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/utils/file_lock.py +0 -0
  558. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/utils/fs.py +0 -0
  559. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/utils/helpers.py +0 -0
  560. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/utils/network_guard.py +0 -0
  561. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/utils/shell.py +0 -0
  562. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/vim/__init__.py +0 -0
  563. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/vim/transitions.py +0 -0
  564. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/voice/__init__.py +0 -0
  565. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/voice/keyterms.py +0 -0
  566. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/voice/stream_stt.py +0 -0
  567. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/voice/voice_mode.py +0 -0
  568. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/llm/__init__.py +0 -0
  569. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/llm/image_generation.py +0 -0
  570. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/llm/provider_registry.py +0 -0
  571. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/llm/runtime_env.py +0 -0
  572. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/llm/structured_output.py +0 -0
  573. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/llm/vision.py +0 -0
  574. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/__init__.py +0 -0
  575. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/api/__init__.py +0 -0
  576. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/api/base_memory_system_api.py +0 -0
  577. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/api/base_symbolic_memory_system_api.py +0 -0
  578. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/api/base_vector_memory_system_api.py +0 -0
  579. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/api/faiss_memory_system_api.py +0 -0
  580. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/api/slot_process_api.py +0 -0
  581. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/api/symbolic_memory_system_api.py +0 -0
  582. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/memory_system/__init__.py +0 -0
  583. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/memory_system/component_taxonomy.py +0 -0
  584. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/memory_system/llm.py +0 -0
  585. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/memory_system/models.py +0 -0
  586. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/memory_system/user_prompt.py +0 -0
  587. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/memory_system/utils.py +0 -0
  588. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/memory_system/vectorstore.py +0 -0
  589. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/memory_system/working_slot.py +0 -0
  590. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/__init__.py +0 -0
  591. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/contracts.py +0 -0
  592. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/discipline_taxonomy.py +0 -0
  593. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/evidence_coverage_ledger.py +0 -0
  594. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/evidence_refinement.py +0 -0
  595. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/experiment_to_symbolic.py +0 -0
  596. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/__init__.py +0 -0
  597. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/capabilities.py +0 -0
  598. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/claims.py +0 -0
  599. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/contract.py +0 -0
  600. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/data_sh_compiler.py +0 -0
  601. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/handoff_binding.py +0 -0
  602. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/manifest.py +0 -0
  603. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/native_analysis.py +0 -0
  604. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/perception.py +0 -0
  605. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/query_binding.py +0 -0
  606. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/rendering.py +0 -0
  607. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/safety.py +0 -0
  608. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/sampling.py +0 -0
  609. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/service.py +0 -0
  610. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/survey_integration.py +0 -0
  611. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/paper_identity.py +0 -0
  612. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/research_design_inventory.py +0 -0
  613. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/research_domain_resolution.py +0 -0
  614. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/research_identity.py +0 -0
  615. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/research_question_contract.py +0 -0
  616. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/retrieval_lanes.py +0 -0
  617. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/run_loop.py +0 -0
  618. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/science_events.py +0 -0
  619. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/science_manifests.py +0 -0
  620. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/science_run.py +0 -0
  621. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/science_stages.py +0 -0
  622. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/science_workflow.py +0 -0
  623. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/sh_cluster_projection.py +0 -0
  624. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/sh_graph_provenance.py +0 -0
  625. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/subhypothesis_decomposition.py +0 -0
  626. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/subhypothesis_evidence.py +0 -0
  627. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_evidence_plan.py +0 -0
  628. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_gap_adjudication.py +0 -0
  629. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_gap_candidates.py +0 -0
  630. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_gap_ledger.py +0 -0
  631. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_gap_triage.py +0 -0
  632. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_handoff_persistence.py +0 -0
  633. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_handoff_projection.py +0 -0
  634. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_idea_handoff.py +0 -0
  635. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_idea_loader.py +0 -0
  636. {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/research_run_ids.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: qwen-sci
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: Qwen-Sci multi-agent research workflow
5
5
  License-File: LICENSE
6
6
  Requires-Python: <3.13,>=3.12
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "qwen-sci"
7
- version = "0.2.0"
7
+ version = "0.2.2"
8
8
  description = "Qwen-Sci multi-agent research workflow"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12,<3.13"
@@ -222,12 +222,15 @@ cache-dir = ".uv-cache"
222
222
  [tool.hatch.build.targets.wheel]
223
223
  packages = ["src"]
224
224
 
225
- [tool.hatch.build.targets.sdist]
226
- include = [
227
- "/README.md",
228
- "/README_CN.md",
229
- "/scripts",
230
- "/src",
231
- "/run_*.sh",
232
- "/environment.yml",
233
- ]
225
+ [tool.hatch.build.targets.sdist]
226
+ include = [
227
+ "/README.md",
228
+ "/README_CN.md",
229
+ "/scripts",
230
+ "/src",
231
+ "/run_*.sh",
232
+ "/environment.yml",
233
+ ]
234
+
235
+ [tool.pytest.ini_options]
236
+ testpaths = ["tests"]
@@ -0,0 +1 @@
1
+ qwensci
@@ -1,299 +0,0 @@
1
- # Blog Agent
2
-
3
- AI-powered blog generation agent using OpenHands SDK. Generates high-quality technical blog articles from research projects (experiment_agent) with automated image generation and quality scoring.
4
-
5
- ## Architecture
6
-
7
- ```
8
- run.py (Entry)
9
- │
10
- ├─ Step 1: IdeaAgent → Explore project, find papers, create outline
11
- ├─ Step 2: WriteAgent → Write blog + generate graph method files
12
- ├─ Step 3: AnalyzeAgent → Analyze & score (quality, SEO, E-E-A-T)
13
- ├─ Step 4: RefineAgent → Loop improvement (until score > 90 or 3 iterations)
14
- └─ Step 5: ImageGen → Generate images + replace <graphN> placeholders
15
- ```
16
-
17
- ## Project Structure
18
-
19
- ```
20
- blog_agent/
21
- ├── agent/
22
- │ └── new_base_agent.py # BaseAgent using OpenHands SDK
23
- ├── config/
24
- │ ├── config.yaml # Configuration (API keys, settings)
25
- │ └── loader.py # Config loader
26
- ├── scripts/
27
- │ └── run.py # Main entry point
28
- ├── skills/ # 4 skill modules
29
- │ ├── workspace-navigator/ # Project exploration & paper search
30
- │ ├── blog-writer/ # Article writing
31
- │ ├── blog-analyze/ # Quality analysis & scoring
32
- │ └── blog-refine/ # Iterative improvement
33
- ├── tools/ # OpenHands format tools
34
- │ ├── search_core_tool.py # Search knowledge graph for papers
35
- │ ├── search_paper_abstract_tool.py # Get paper abstract from Semantic Scholar
36
- │ ├── download_paper_pdf_tool.py # Download paper PDF
37
- │ ├── count_words_tool.py # Count words in markdown
38
- │ ├── gengraph.py # Image generation via AI
39
- │ ├── illustrate.py # High-level illustrate function
40
- │ └── ocr.py # OCR text removal
41
- └── utils/
42
- ├── search_core.py # Knowledge graph search utilities
43
- ├── semantic_scholar.py # Semantic Scholar API utilities
44
- └── deeperaser.py # Deep learning text removal
45
- ```
46
-
47
- ## Quick Start
48
-
49
- ### Setup
50
- ```bash
51
- 1. cd <research-agent-root>/src/agents
52
- 2. mkdir blog_agent
53
- ```
54
- 3. Put these files into that folder
55
- 4. Move `run_blog.sh` to ResearchAgent root directory
56
- 5. Fill in the `blog:` block in `src/config/default.yaml`
57
- 6. (Optional) Place a complete `graph.db` knowledge graph at `<repo_root>/data/processed/graph.db`, or set `BLOG_GRAPH_DB_PATH` to its location
58
- 7. (Optional) Edit `scripts/run.py` to change the `MODEL` parameter - this controls which model is actually used
59
-
60
- > **Important**: Blog Agent reads experiment outputs from `blog.source_workspace_root` in `src/config/default.yaml`, using `<source_workspace_root>/<project_name>` by default.
61
-
62
- ### Run
63
-
64
- ```bash
65
- cd <research-agent-root>
66
-
67
- # Run full pipeline
68
- qwensci blog --experiment <project_name>
69
-
70
- # Explicitly use an experiment workspace path
71
- qwensci blog --experiment <project_name> --source-workspace "${QWENSCI_WORKSPACE_ROOT}/<project_name>"
72
-
73
- # Resume from last checkpoint
74
- qwensci blog --experiment <project_name> --resume
75
-
76
- # Use an experiment workspace outside the default source path
77
- qwensci blog --experiment <project_name> --source-workspace /abs/path/to/experiment_workspace
78
- ```
79
-
80
- ## Resume / Checkpoint
81
-
82
- The agent saves its progress after each step to `workflow_status.json`. If the process is interrupted (e.g., network error, manual stop), you can resume from where it left off.
83
-
84
- ### How It Works
85
-
86
- 1. **Status File**: After completing each step, the agent saves progress to:
87
- ```
88
- workspaces/<project_name>/workflow_status.json
89
- ```
90
-
91
- Example content:
92
- ```json
93
- {
94
- "experiment": "dcr_v1",
95
- "current_step": 3,
96
- "current_loop": 2,
97
- "steps_completed": ["IDEAAgent", "WRITEAgent", "ANALYZEAgent", "REFINEAgent"],
98
- "last_updated": "2026-03-09T10:30:00"
99
- }
100
- ```
101
-
102
- 2. **Step Numbers**:
103
- - Step 0: Initialized (not started)
104
- - Step 1: IDEAAgent completed
105
- - Step 2: WRITEAgent completed
106
- - Step 3: ANALYZEAgent completed
107
- - Step 4: REFINEAgent loop completed
108
- - Step 5: Image generation completed
109
-
110
- 3. **Resume Logic**: When `--resume` is passed, the agent reads `current_step` and skips all steps less than or equal to that value:
111
- ```python
112
- if resume:
113
- start_step = status.get("current_step", 0)
114
- ```
115
-
116
- ### Example
117
-
118
- If the agent stops during Step 3 (ANALYZEAgent), the status file shows `current_step: 3`. Running with `--resume` will:
119
- - Skip Step 1 and Step 2 (re-executes but skips internally)
120
- - Continue from Step 3 onwards
121
- - Restart the REFINE loop if needed
122
-
123
- ## Configuration
124
-
125
- All configuration is in the `blog:` block of `src/config/default.yaml`.
126
-
127
- ### API Keys
128
-
129
- ```yaml
130
- blog:
131
- minimax:
132
- api_key: "your-minimax-api-key"
133
- base_url: "https://api.minimaxi.com/v1"
134
-
135
- openai:
136
- api_key: "your-open-ai-api-key"
137
- base_url: "https://api-2.xi-ai.cn/v1"
138
-
139
- gemini:
140
- api_key: "your-gemini-api-key"
141
- base_url: "https://api.xi-ai.cn/v1"
142
- ```
143
-
144
- - **minimax**: Default LLM provider for agents
145
- - **openai**: Alternative LLM provider
146
- - **gemini**: Alternative LLM provider
147
-
148
- ### Model Settings
149
-
150
- ```yaml
151
- blog:
152
- model: "MiniMax-M2.5" # Default model for all agents
153
- ```
154
-
155
- ### Image Generation (gengraph)
156
-
157
- ```yaml
158
- blog:
159
- gengraph:
160
- provider: "xiai" # Image generation provider
161
- api_key: "your-image-api-key"
162
-
163
- providers:
164
- xiai:
165
- base_url: "https://api.xi-ai.cn/v1"
166
- model: "gemini-3-pro-image-preview"
167
- openrouter:
168
- base_url: "https://openrouter.ai/api/v1"
169
- model: "google/gemini-3-pro-image-preview"
170
- bianxie:
171
- base_url: "https://api.bianxie.ai/v1"
172
- model: "gemini-3-pro-image-preview"
173
- gemini:
174
- base_url: "https://generativelanguage.googleapis.com/v1beta"
175
- model: "gemini-3-pro-image-preview"
176
- ```
177
-
178
- - **provider**: Which AI provider to use for generating academic figures
179
- - **providers**: Configuration for each available provider
180
-
181
- ### OCR / Text Removal
182
-
183
- ```yaml
184
- blog:
185
- deeperaser:
186
- use_cuda: false # Whether to use GPU for DeepEraser (text removal from images)
187
- ```
188
-
189
- - **use_cuda**: Set to `true` if you have NVIDIA GPU and want faster OCR processing
190
-
191
- ### Semantic Scholar API
192
-
193
- ```yaml
194
- blog:
195
- semantic_scholar:
196
- api_key: "" # Required for Semantic Scholar fallback, abstract retrieval, and PDF download
197
- ```
198
-
199
- - **api_key**: Required whenever the Blog Agent needs Semantic Scholar. Without a usable local graph and this key, the workflow enters workspace-only mode and cites only verifiable local evidence.
200
-
201
- ### Literature Retrieval Fallback
202
-
203
- Blog Agent selects one retrieval mode at startup and writes the selection to
204
- `retrieval_status.json` in the blog workspace:
205
-
206
- 1. **graph**: use a validated SQLite graph at `data/processed/graph.db` (or `BLOG_GRAPH_DB_PATH`), with Semantic Scholar available as an optional supplement.
207
- 2. **semantic**: if the graph is missing, empty, corrupt, or lacks the required schema, skip graph search and use Semantic Scholar instead.
208
- 3. **workspace**: if neither source is available, skip external paper tools and use only verifiable references from the source workspace.
209
-
210
- Use `BLOG_RETRIEVAL_MODE=auto` (default), `graph`, `semantic`, or `workspace` to express a preference. An unavailable dependency always falls back to the next safe mode rather than failing the Blog Agent conversation.
211
-
212
- ### Blog Illustration
213
-
214
- ```yaml
215
- blog:
216
- illustrate:
217
- only_gen_img: true # true: only generate images, false: generate + OCR cleanup
218
- ```
219
-
220
- - **only_gen_img**:
221
- - `true`: Faster, skip OCR cleanup step
222
- - `false`: Slower, but removes generated text from images using OCR
223
-
224
- ### Adding New Model Providers
225
-
226
- To add support for new LLM providers, modify the `get_openhands_config` function in `agent/new_base_agent.py`:
227
-
228
- ```python
229
- def get_openhands_config(model: str) -> dict:
230
- if is_minimax_model(model):
231
- return {
232
- "api_key": MINIMAX_API_KEY,
233
- "model": 'minimax/'+model,
234
- "base_url": MINIMAX_API_BASE,
235
- }
236
- elif is_gemini_model(model):
237
- return {
238
- "api_key": GEMINI_API_KEY,
239
- "model": 'gemini/'+model,
240
- "base_url": GEMINI_API_BASE,
241
- }
242
- # Add new provider here
243
- elif is_new_provider(model):
244
- return {
245
- "api_key": NEW_PROVIDER_API_KEY,
246
- "model": 'new_provider/'+model,
247
- "base_url": NEW_PROVIDER_API_BASE,
248
- }
249
- else:
250
- # Default to OpenAI
251
- return {
252
- "api_key": OPENAI_API_KEY,
253
- "model": model,
254
- "base_url": OPENAI_API_BASE,
255
- }
256
- ```
257
-
258
- You also need to:
259
- 1. Add the new provider to the `blog:` block in `src/config/default.yaml`
260
- 2. Add model detection function (e.g., `is_new_provider`)
261
-
262
- ## Workflow
263
-
264
- 1. **IdeaAgent** - Explores source project, identifies key files and structure, searches academic papers for citation, creates outline
265
- 2. **WriteAgent** - Writes blog article based on outline, creates `<graphN>` placeholders + graph method files (graph1.md, graph2.md, etc.)
266
- 3. **AnalyzeAgent** - Scores article (0-100), provides improvement suggestions across 5 dimensions:
267
- - Content quality
268
- - SEO optimization
269
- - E-E-A-T signals (Experience, Expertise, Authoritativeness, Trustworthiness)
270
- - Technical elements
271
- - AI citation readiness
272
- 4. **RefineAgent** - Iteratively improves based on analysis (max 3 loops)
273
- 5. **Image Generation** - Generates images from graph method files, replaces `<graphN>` placeholders with actual markdown images
274
-
275
- ## Output
276
-
277
- After running, the following files are generated in `workspaces/<project_name>/`:
278
-
279
- ```
280
- <project_name>/
281
- ├── blog_idea.md # Initial blog idea and outline
282
- ├── blog_article.md # Final blog article with images embedded
283
- ├── blog_analysis.md # Quality analysis report with score
284
- └── test_output/
285
- ├── graph1.md # Image method file 1 (description for AI)
286
- ├── figure1.png # Generated image 1
287
- ├── graph2.md
288
- ├── figure2.png
289
- └── ...
290
- ```
291
-
292
- ## How It Works
293
-
294
- 1. IdeaAgent explores project, searches papers via knowledge graph + Semantic Scholar, downloads PDFs
295
- 2. WriteAgent creates article with `<graphN>` placeholders where images should go
296
- 3. Each `<graphN>` corresponds to a `graph{N}.md` file describing what image to generate
297
- 4. AnalyzeAgent scores the article and suggests improvements
298
- 5. RefineAgent loops to improve until score > 90 or max iterations reached
299
- 6. Images are generated from graph method files and placeholders are replaced
@@ -1,109 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from typing import Any, Mapping, Optional
4
-
5
- from src.llm.provider_registry import (
6
- get_default_provider_name,
7
- require_model_capabilities,
8
- resolve_model,
9
- resolve_provider,
10
- resolve_role_model,
11
- )
12
-
13
-
14
- def _as_mapping(value: Any) -> Mapping[str, Any]:
15
- return value if isinstance(value, Mapping) else {}
16
-
17
-
18
- def resolve_blog_model(
19
- project_config: Any,
20
- model: Optional[str] = None,
21
- provider: Optional[str] = None,
22
- ) -> str:
23
- blog_config = _as_mapping(_as_mapping(project_config).get("blog"))
24
- configured_model = str(model or blog_config.get("model") or "").strip()
25
- if configured_model:
26
- return configured_model
27
-
28
- configured_provider = str(provider or blog_config.get("provider") or "").strip()
29
- if configured_provider or _as_mapping(project_config).get("llm"):
30
- return resolve_role_model(
31
- project_config,
32
- "blog",
33
- configured_provider or get_default_provider_name(project_config),
34
- ).name
35
- return "MiniMax-M2.5"
36
-
37
-
38
- def build_openhands_config(
39
- project_config: Any,
40
- model: Optional[str] = None,
41
- provider: Optional[str] = None,
42
- ) -> dict[str, str]:
43
- blog_config = _as_mapping(project_config).get("blog")
44
- blog_config = _as_mapping(blog_config)
45
- configured_model = resolve_blog_model(project_config, model, provider)
46
- resolved_provider_name = str(provider or blog_config.get("provider") or "").strip()
47
-
48
- minimax_config = _as_mapping(blog_config.get("minimax"))
49
- if not resolved_provider_name and "minimax" in configured_model.lower():
50
- return {
51
- "api_key": str(minimax_config.get("api_key") or ""),
52
- "model": f"minimax/{configured_model}",
53
- "base_url": str(
54
- minimax_config.get("base_url") or "https://api.minimaxi.com/v1"
55
- ),
56
- }
57
-
58
- gemini_config = _as_mapping(blog_config.get("gemini"))
59
- if not resolved_provider_name and "gemini" in configured_model.lower():
60
- return {
61
- "api_key": str(gemini_config.get("api_key") or ""),
62
- "model": f"gemini/{configured_model}",
63
- "base_url": str(gemini_config.get("base_url") or ""),
64
- }
65
-
66
- openai_config = _as_mapping(blog_config.get("openai"))
67
- if (
68
- not resolved_provider_name
69
- and configured_model.lower().startswith(("gpt", "o1", "o3", "o4"))
70
- and (openai_config.get("api_key") or openai_config.get("base_url"))
71
- ):
72
- openai_provider = resolve_provider(project_config, "openai")
73
- model_spec = require_model_capabilities(
74
- resolve_model(project_config, configured_model, "openai"),
75
- ["chat_completions"],
76
- "Blog OpenHands text agent",
77
- )
78
- return {
79
- "api_key": str(openai_config.get("api_key") or ""),
80
- "model": f"openai/{model_spec.name}",
81
- "base_url": str(openai_config.get("base_url") or openai_provider.base_url),
82
- }
83
-
84
- if resolved_provider_name or _as_mapping(project_config).get("llm"):
85
- provider_spec = resolve_provider(
86
- project_config,
87
- resolved_provider_name or get_default_provider_name(project_config),
88
- )
89
- model_spec = (
90
- resolve_model(project_config, configured_model, provider_spec.name)
91
- if configured_model
92
- else resolve_role_model(project_config, "blog", provider_spec.name)
93
- )
94
- require_model_capabilities(
95
- model_spec,
96
- ["chat_completions"],
97
- "Blog OpenHands text agent",
98
- )
99
- return {
100
- "api_key": provider_spec.api_key,
101
- "model": f"{provider_spec.openhands_model_prefix}/{model_spec.name}",
102
- "base_url": provider_spec.base_url,
103
- }
104
-
105
- return {
106
- "api_key": str(openai_config.get("api_key") or ""),
107
- "model": f"openai/{configured_model or 'gpt-5.5'}",
108
- "base_url": str(openai_config.get("base_url") or ""),
109
- }