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.
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/PKG-INFO +1 -1
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/pyproject.toml +13 -10
- qwen_sci-0.2.2/src/1.txt +1 -0
- qwen_sci-0.2.0/src/agents/blog_agent/README.md +0 -299
- qwen_sci-0.2.0/src/agents/blog_agent/agent/llm_config.py +0 -109
- qwen_sci-0.2.0/src/agents/blog_agent/agent/new_base_agent.py +0 -388
- qwen_sci-0.2.0/src/agents/blog_agent/scripts/run.py +0 -497
- qwen_sci-0.2.0/src/agents/blog_agent/skills/blog-analyze/SKILL.md +0 -376
- qwen_sci-0.2.0/src/agents/blog_agent/skills/blog-refine/SKILL.md +0 -246
- qwen_sci-0.2.0/src/agents/blog_agent/skills/blog-writer/SKILL.md +0 -218
- qwen_sci-0.2.0/src/agents/blog_agent/skills/workspace-navigator/SKILL.md +0 -147
- qwen_sci-0.2.0/src/agents/blog_agent/tools/count_words_tool.py +0 -161
- qwen_sci-0.2.0/src/agents/blog_agent/tools/download_paper_pdf_tool.py +0 -158
- qwen_sci-0.2.0/src/agents/blog_agent/tools/gengraph.py +0 -389
- qwen_sci-0.2.0/src/agents/blog_agent/tools/illustrate.py +0 -116
- qwen_sci-0.2.0/src/agents/blog_agent/tools/ocr.py +0 -217
- qwen_sci-0.2.0/src/agents/blog_agent/tools/search_core_tool.py +0 -159
- qwen_sci-0.2.0/src/agents/blog_agent/tools/search_paper_abstract_tool.py +0 -164
- qwen_sci-0.2.0/src/agents/blog_agent/utils/deeperaser.pth +0 -0
- qwen_sci-0.2.0/src/agents/blog_agent/utils/deeperaser.py +0 -381
- qwen_sci-0.2.0/src/agents/blog_agent/utils/graph.db +0 -0
- qwen_sci-0.2.0/src/agents/blog_agent/utils/retrieval.py +0 -278
- qwen_sci-0.2.0/src/agents/blog_agent/utils/search_core.py +0 -159
- qwen_sci-0.2.0/src/agents/blog_agent/utils/semantic_scholar.py +0 -669
- qwen_sci-0.2.0/src/agents/experiment_agent/README.md +0 -93
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/__init__.py +0 -4
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/base/__init__.py +0 -11
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/base/agent.py +0 -204
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/code/__init__.py +0 -21
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/code/entry.py +0 -11
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/code/planner.py +0 -599
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/code/reviewer.py +0 -128
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/code/worker.py +0 -78
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/finalization/__init__.py +0 -6
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/finalization/entry.py +0 -350
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/master/__init__.py +0 -3
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/master/entry.py +0 -424
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/prepare/__init__.py +0 -39
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/prepare/entry.py +0 -7
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/prepare/planner.py +0 -497
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/prepare/reviewer.py +0 -99
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/prepare/worker.py +0 -101
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/science/__init__.py +0 -21
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/science/entry.py +0 -11
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/science/planner.py +0 -639
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/science/reviewer.py +0 -124
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/science/worker.py +0 -34
- qwen_sci-0.2.0/src/agents/experiment_agent/config.py +0 -937
- qwen_sci-0.2.0/src/agents/experiment_agent/main.py +0 -378
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/__init__.py +0 -88
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/ablation_results.py +0 -444
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/artifacts.py +0 -2481
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/code_review_context.py +0 -473
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/contracts.py +0 -1346
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/finalization_hooks.py +0 -607
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/idea_components.py +0 -102
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/manifests.py +0 -192
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/openharness_runner.py +0 -1091
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/openharness_vendor.py +0 -58
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/phase_contracts.py +0 -201
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/phase_runner.py +0 -2574
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/prepare_contracts.py +0 -614
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/project_integrity.py +0 -409
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/report_layout.py +0 -194
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/self_contained.py +0 -179
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/__init__.py +0 -45
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/benchmark-discovery/SKILL.md +0 -33
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/bounded-tool-use/SKILL.md +0 -31
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/code-enablement/SKILL.md +0 -59
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/code-planning/SKILL.md +0 -55
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/component-coverage/SKILL.md +0 -26
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/environment-setup/SKILL.md +0 -23
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/prepare-planning/SKILL.md +0 -85
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/resource-acquisition/SKILL.md +0 -69
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/science-execution/SKILL.md +0 -46
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/science-planning/SKILL.md +0 -35
- qwen_sci-0.2.0/src/agents/experiment_agent/telemetry/__init__.py +0 -161
- qwen_sci-0.2.0/src/agents/experiment_agent/tools/__init__.py +0 -6
- qwen_sci-0.2.0/src/harness/src/openharness/plugins/bundled/__init__.py +0 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/oauth/__init__.py +0 -0
- qwen_sci-0.2.0/src/harness/src/openharness/utils/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/LICENSE +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/README.md +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/run_blog.sh +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/run_experiment.sh +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/run_idea.sh +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/run_pipeline.sh +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/run_survey.sh +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/scripts/.gitkeep +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/scripts/install_base.sh +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/scripts/install_heavy.sh +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/scripts/install_mcp_wrappers.sh +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/scripts/sync_claude_anthropic_env.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/__main__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/artifacts.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/cache.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/completeness.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/contracts.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/counterexample_analyzer.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/design_evidence_paper_screener.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/discipline_catalog.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/evidence_cards.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/evidence_planner.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/formal_reasoning_planner.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/fulltext_acquisition.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/idea_adapter.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/idea_intake.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/llm_json.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/orchestrator.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/reasoning_context.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/reasoning_validation.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/run.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/run_logging.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/scope_gate.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/study_type_composer.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/survey_evidence.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/template_router.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/experiment_design_agent/variable_claim_extractor.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/artifacts.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/base.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/ligagent.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/mcts.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/advanced_analysis.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/algorithm_alignment.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/algorithm_structuring.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/component_extraction.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/component_novelty_evaluation.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/experiment_findings_extraction.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/idea_fusion.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/idea_introduction.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/idea_result_alignment.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/input_interpreter.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/keynote_ops.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/mcts_evaluation.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/mcts_generation.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/mechanism_commit_query.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/memory_selection.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/prompt_modes.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/rag_query.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/re_analysis_replan.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/reference_grounding.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/root_domain_classification.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/scientific_debate.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/scientific_materialization.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/skill_instantiation.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/theory_transfer_query.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/prompts/topic_background.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/agent/skills/DEFAULT_SKILL_TEMPLATES.json +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/example/idea_result.json +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/run.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_advanced_analysis_contract.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_gap_hypothesis_bridge.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_idea_debate.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_idea_result_v5.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_idea_synthesis.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_mature_idea_sources.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_multimodal_idea_integration.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_profile_materialization_and_scoring.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_profile_native_skill_rendering.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_result_persistence.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_scientific_intervention_profiles.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_scientific_rubric_and_prompts.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/tests/test_strict_json_object_responses.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/ablation_inputs.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/chat_errors.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/chat_router.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/chat_transport.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/config_loader.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/json_utils.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/logger.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/progress.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/response_parsing.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/core/run_inputs.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/component_novelty.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/defect_registry.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/idea_routes.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/idea_taste_presets.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/mcts_helpers.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/mcts_runtime.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/scientific_intervention_ontology.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/scientific_rubric.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/mcts/skill_parsing.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/papers/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/papers/paper_graph_vector_store.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/papers/paper_repository.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/prompting/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/prompting/prompt_views.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/advanced_analysis_contract.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/gap_hypothesis_bridge.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/idea_contract.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/idea_debate.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/idea_diversity.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/idea_fusion.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/idea_helpers.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/idea_portfolio.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/idea_synthesis.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/ligagent_flow.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/ligagent_handlers.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/ligagent_helpers.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/ligagent_utils.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/mature_idea_sources.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/multimodal_data_anchoring.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/result_persistence.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/stage_contract.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/idea_agent/utils/workflow/workflow_runtime.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/artifacts.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/authoring_blueprint.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/bibtex_renderer.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/contract_repair.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/contracts.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/cross_section_editor.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/document_quality.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/idea_evolution.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/input_loader.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/latex_compiler.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/latex_safety.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/llm_json.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/markdown_renderer.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/pdf_validator.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/render.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/render_artifacts.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/run.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/run_logging.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/section_cache.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/section_composer.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/section_router.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/semantic_validator.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/source_bundle.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/source_registry.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/survey_source_loader.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/template_adapter.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/template_profile.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/tex_renderer.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/theory_presentation.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/research_plan_author/theory_spine.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/Dockerfile +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/README.md +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/config/deep_survey.yaml +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/config/deep_survey_batch.yaml +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/config/deep_survey_fast.yaml +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/config/evaluate_baseline.yaml +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/config/outcomeRAG.yaml +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/env_report.md +0 -0
- {qwen_sci-0.2.0/src/agents/blog_agent → qwen_sci-0.2.2/src/agents/survey_agent/modules}/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/code_collector.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/code_report_generator.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/data_manager.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/database.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/fulltext_download_cache.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/fulltext_http.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/fulltext_resolution.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/judge.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/outcome_RAG.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/paper_graph_retriever.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/pe.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/pseudo_creator.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/pseudo_reviser.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/refine_agent.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/survey_generator.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/survey_visualizer.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/visual_prompts.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/work_analyzer.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/modules/work_collector.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/baseline_evaluation.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/run_deep_survey.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/run_deep_survey_adapter.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/run_deep_survey_adapter_with_input.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/run_deep_survey_batch.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/run_deep_survey_batch_arg.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/run_deep_survey_batch_settings.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/run_keynotes_gen.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/scripts/run_work_clusters.py +0 -0
- {qwen_sci-0.2.0/src/agents/blog_agent/agent → qwen_sci-0.2.2/src/agents/survey_agent/utils}/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/ablation_utils.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/api_call.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/chat_utils.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/config_utils.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/convert_to_md.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/err_info.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/file_utils.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/gpu_utils.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/graph_visualizer.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/html_utils.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/latex_generator_intra_cluster.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/latex_generator_relation_table.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/mineru_section_packer.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/mineru_utils.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/paper.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/read_yaml.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/repo_utils.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/rich_logger.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/step2v2.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/step2v2_extractor.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/topic_survey_storage.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/utils.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/agents/survey_agent/utils/work.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/cli.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/config/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/config/default.yaml +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/LICENSE +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/VENDORED.md +0 -0
- {qwen_sci-0.2.0/src/agents/experiment_agent → qwen_sci-0.2.2/src/harness/src}/__init__.py +0 -0
- {qwen_sci-0.2.0/src/agents/survey_agent/modules → qwen_sci-0.2.2/src/harness/src/openharness}/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/__main__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/client.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/codex_client.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/copilot_auth.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/copilot_client.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/errors.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/openai_client.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/provider.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/registry.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/api/usage.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/auth/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/auth/external.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/auth/flows.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/auth/manager.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/auth/storage.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/autopilot/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/autopilot/service.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/autopilot/types.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/bridge/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/bridge/manager.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/bridge/session_runner.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/bridge/types.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/bridge/work_secret.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/UPSTREAM +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/adapter.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/bus/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/bus/events.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/bus/queue.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/base.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/dingtalk.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/discord.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/email.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/feishu.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/manager.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/matrix.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/mochat.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/qq.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/slack.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/telegram.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/channels/impl/whatsapp.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/cli.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/commands/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/commands/registry.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/config/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/config/paths.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/config/schema.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/config/settings.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/coordinator/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/coordinator/agent_definitions.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/coordinator/coordinator_mode.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/engine/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/engine/cost_tracker.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/engine/messages.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/engine/query.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/engine/query_engine.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/engine/stream_events.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/hooks/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/hooks/events.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/hooks/executor.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/hooks/hot_reload.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/hooks/loader.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/hooks/schemas.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/hooks/types.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/keybindings/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/keybindings/default_bindings.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/keybindings/loader.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/keybindings/parser.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/keybindings/resolver.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/mcp/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/mcp/client.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/mcp/config.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/mcp/types.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/agent.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/manager.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/memdir.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/migrate.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/paths.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/relevance.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/scan.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/schema.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/search.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/team.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/types.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/memory/usage.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/output_styles/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/output_styles/loader.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/permissions/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/permissions/checker.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/permissions/modes.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/personalization/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/personalization/extractor.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/personalization/rules.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/personalization/session_hook.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/platforms.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/plugins/__init__.py +0 -0
- {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
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/plugins/installer.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/plugins/loader.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/plugins/schemas.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/plugins/types.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/prompts/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/prompts/claudemd.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/prompts/context.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/prompts/environment.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/prompts/system_prompt.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/sandbox/Dockerfile +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/sandbox/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/sandbox/adapter.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/sandbox/docker_backend.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/sandbox/docker_image.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/sandbox/path_validator.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/sandbox/session.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/autodream/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/autodream/backup.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/autodream/lock.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/autodream/prompt.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/autodream/service.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/compact/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/cron.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/cron_scheduler.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/lsp/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/memory_extract/__init__.py +0 -0
- {qwen_sci-0.2.0/src/harness/src → qwen_sci-0.2.2/src/harness/src/openharness/services/oauth}/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/session_backend.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/session_memory/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/session_storage.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/token_estimation.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/services/tool_outputs.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/_frontmatter.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/content/commit.md +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/content/debug.md +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/content/diagnose.md +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/content/plan.md +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/content/review.md +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/content/simplify.md +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/content/skill-creator.md +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/bundled/content/test.md +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/loader.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/registry.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/skills/types.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/state/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/state/app_state.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/state/store.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/in_process.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/lockfile.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/mailbox.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/permission_sync.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/registry.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/spawn_utils.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/subprocess_backend.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/team_lifecycle.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/types.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/swarm/worktree.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tasks/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tasks/local_agent_task.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tasks/local_shell_task.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tasks/manager.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tasks/stop_task.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tasks/types.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/themes/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/themes/builtin.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/themes/loader.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/themes/schema.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/agent_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/ask_user_question_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/base.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/bash_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/brief_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/config_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/cron_create_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/cron_delete_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/cron_list_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/cron_toggle_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/enter_plan_mode_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/enter_worktree_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/exit_plan_mode_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/exit_worktree_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/file_edit_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/file_read_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/file_write_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/glob_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/grep_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/image_generation_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/image_to_text_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/list_mcp_resources_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/lsp_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/mcp_auth_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/mcp_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/notebook_edit_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/read_mcp_resource_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/remote_trigger_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/send_message_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/skill_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/sleep_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/task_create_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/task_get_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/task_list_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/task_output_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/task_stop_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/task_update_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/team_create_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/team_delete_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/todo_write_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/tool_search_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/web_fetch_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/tools/web_search_tool.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/app.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/backend_host.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/coordinator_drain.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/input.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/output.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/permission_dialog.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/protocol.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/react_launcher.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/runtime.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/ui/textual_app.py +0 -0
- {qwen_sci-0.2.0/src/harness/src/openharness → qwen_sci-0.2.2/src/harness/src/openharness/utils}/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/utils/file_lock.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/utils/fs.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/utils/helpers.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/utils/network_guard.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/utils/shell.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/vim/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/vim/transitions.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/voice/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/voice/keyterms.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/voice/stream_stt.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/harness/src/openharness/voice/voice_mode.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/llm/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/llm/image_generation.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/llm/provider_registry.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/llm/runtime_env.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/llm/structured_output.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/llm/vision.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/api/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/api/base_memory_system_api.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/api/base_symbolic_memory_system_api.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/api/base_vector_memory_system_api.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/api/faiss_memory_system_api.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/api/slot_process_api.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/api/symbolic_memory_system_api.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/memory_system/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/memory_system/component_taxonomy.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/memory_system/llm.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/memory_system/models.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/memory_system/user_prompt.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/memory_system/utils.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/memory_system/vectorstore.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/memory/memory_system/working_slot.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/contracts.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/discipline_taxonomy.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/evidence_coverage_ledger.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/evidence_refinement.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/experiment_to_symbolic.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/__init__.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/capabilities.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/claims.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/contract.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/data_sh_compiler.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/handoff_binding.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/manifest.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/native_analysis.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/perception.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/query_binding.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/rendering.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/safety.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/sampling.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/service.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/multimodal_evidence/survey_integration.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/paper_identity.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/research_design_inventory.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/research_domain_resolution.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/research_identity.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/research_question_contract.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/retrieval_lanes.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/run_loop.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/science_events.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/science_manifests.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/science_run.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/science_stages.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/science_workflow.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/sh_cluster_projection.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/sh_graph_provenance.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/subhypothesis_decomposition.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/subhypothesis_evidence.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_evidence_plan.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_gap_adjudication.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_gap_candidates.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_gap_ledger.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_gap_triage.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_handoff_persistence.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_handoff_projection.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_idea_handoff.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/pipeline/survey_idea_loader.py +0 -0
- {qwen_sci-0.2.0 → qwen_sci-0.2.2}/src/research_run_ids.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "qwen-sci"
|
|
7
|
-
version = "0.2.
|
|
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"]
|
qwen_sci-0.2.2/src/1.txt
ADDED
|
@@ -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
|
-
}
|