qwen-sci 0.2.2__py3-none-any.whl
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.2.dist-info/METADATA +492 -0
- qwen_sci-0.2.2.dist-info/RECORD +549 -0
- qwen_sci-0.2.2.dist-info/WHEEL +4 -0
- qwen_sci-0.2.2.dist-info/entry_points.txt +6 -0
- qwen_sci-0.2.2.dist-info/licenses/LICENSE +21 -0
- src/1.txt +1 -0
- src/__init__.py +1 -0
- src/__main__.py +5 -0
- src/agents/__init__.py +1 -0
- src/agents/experiment_design_agent/__init__.py +268 -0
- src/agents/experiment_design_agent/artifacts.py +747 -0
- src/agents/experiment_design_agent/cache.py +319 -0
- src/agents/experiment_design_agent/completeness.py +130 -0
- src/agents/experiment_design_agent/contracts.py +771 -0
- src/agents/experiment_design_agent/counterexample_analyzer.py +187 -0
- src/agents/experiment_design_agent/design_evidence_paper_screener.py +470 -0
- src/agents/experiment_design_agent/discipline_catalog.py +178 -0
- src/agents/experiment_design_agent/evidence_cards.py +338 -0
- src/agents/experiment_design_agent/evidence_planner.py +452 -0
- src/agents/experiment_design_agent/formal_reasoning_planner.py +884 -0
- src/agents/experiment_design_agent/fulltext_acquisition.py +863 -0
- src/agents/experiment_design_agent/idea_adapter.py +100 -0
- src/agents/experiment_design_agent/idea_intake.py +87 -0
- src/agents/experiment_design_agent/llm_json.py +328 -0
- src/agents/experiment_design_agent/orchestrator.py +1220 -0
- src/agents/experiment_design_agent/reasoning_context.py +183 -0
- src/agents/experiment_design_agent/reasoning_validation.py +546 -0
- src/agents/experiment_design_agent/run.py +481 -0
- src/agents/experiment_design_agent/run_logging.py +292 -0
- src/agents/experiment_design_agent/scope_gate.py +198 -0
- src/agents/experiment_design_agent/study_type_composer.py +1360 -0
- src/agents/experiment_design_agent/survey_evidence.py +1381 -0
- src/agents/experiment_design_agent/template_router.py +195 -0
- src/agents/experiment_design_agent/variable_claim_extractor.py +93 -0
- src/agents/idea_agent/__init__.py +1 -0
- src/agents/idea_agent/agent/__init__.py +6 -0
- src/agents/idea_agent/agent/artifacts.py +308 -0
- src/agents/idea_agent/agent/base.py +122 -0
- src/agents/idea_agent/agent/ligagent.py +488 -0
- src/agents/idea_agent/agent/mcts.py +2060 -0
- src/agents/idea_agent/agent/prompts/__init__.py +48 -0
- src/agents/idea_agent/agent/prompts/advanced_analysis.py +235 -0
- src/agents/idea_agent/agent/prompts/algorithm_alignment.py +55 -0
- src/agents/idea_agent/agent/prompts/algorithm_structuring.py +48 -0
- src/agents/idea_agent/agent/prompts/component_extraction.py +62 -0
- src/agents/idea_agent/agent/prompts/component_novelty_evaluation.py +54 -0
- src/agents/idea_agent/agent/prompts/experiment_findings_extraction.py +39 -0
- src/agents/idea_agent/agent/prompts/idea_fusion.py +295 -0
- src/agents/idea_agent/agent/prompts/idea_introduction.py +30 -0
- src/agents/idea_agent/agent/prompts/idea_result_alignment.py +39 -0
- src/agents/idea_agent/agent/prompts/input_interpreter.py +52 -0
- src/agents/idea_agent/agent/prompts/keynote_ops.py +78 -0
- src/agents/idea_agent/agent/prompts/mcts_evaluation.py +235 -0
- src/agents/idea_agent/agent/prompts/mcts_generation.py +140 -0
- src/agents/idea_agent/agent/prompts/mechanism_commit_query.py +99 -0
- src/agents/idea_agent/agent/prompts/memory_selection.py +0 -0
- src/agents/idea_agent/agent/prompts/prompt_modes.py +16 -0
- src/agents/idea_agent/agent/prompts/rag_query.py +34 -0
- src/agents/idea_agent/agent/prompts/re_analysis_replan.py +48 -0
- src/agents/idea_agent/agent/prompts/reference_grounding.py +34 -0
- src/agents/idea_agent/agent/prompts/root_domain_classification.py +32 -0
- src/agents/idea_agent/agent/prompts/scientific_debate.py +88 -0
- src/agents/idea_agent/agent/prompts/scientific_materialization.py +45 -0
- src/agents/idea_agent/agent/prompts/skill_instantiation.py +193 -0
- src/agents/idea_agent/agent/prompts/theory_transfer_query.py +93 -0
- src/agents/idea_agent/agent/prompts/topic_background.py +15 -0
- src/agents/idea_agent/agent/skills/DEFAULT_SKILL_TEMPLATES.json +263 -0
- src/agents/idea_agent/agent/skills/edit_operator_skills/alternative-path-contrast/SKILL.md +40 -0
- src/agents/idea_agent/agent/skills/edit_operator_skills/alternative-path-contrast/references/contrast_patterns.md +22 -0
- src/agents/idea_agent/agent/skills/edit_operator_skills/feedback-closed-loop/SKILL.md +40 -0
- src/agents/idea_agent/agent/skills/edit_operator_skills/feedback-closed-loop/references/mechanism_cards.md +24 -0
- src/agents/idea_agent/agent/skills/edit_operator_skills/hierarchical-decomposition/SKILL.md +39 -0
- src/agents/idea_agent/agent/skills/edit_operator_skills/hierarchical-decomposition/references/hierarchy_patterns.md +22 -0
- src/agents/idea_agent/agent/skills/edit_operator_skills/mechanism-commit-innovation/SKILL.md +39 -0
- src/agents/idea_agent/agent/skills/edit_operator_skills/mechanism-commit-innovation/references/mechanism_commit_patterns.md +24 -0
- src/agents/idea_agent/agent/skills/edit_operator_skills/multi-scale-coordinator/SKILL.md +39 -0
- src/agents/idea_agent/agent/skills/edit_operator_skills/multi-scale-coordinator/references/coordination_patterns.md +22 -0
- src/agents/idea_agent/agent/skills/edit_operator_skills/speculative-execution-with-repair/SKILL.md +41 -0
- src/agents/idea_agent/agent/skills/edit_operator_skills/speculative-execution-with-repair/references/speculation_patterns.md +22 -0
- src/agents/idea_agent/agent/skills/edit_operator_skills/surgical-modularity/SKILL.md +39 -0
- src/agents/idea_agent/agent/skills/edit_operator_skills/surgical-modularity/references/modularity_patterns.md +22 -0
- src/agents/idea_agent/agent/skills/edit_operator_skills/theory-transfer-injection/SKILL.md +40 -0
- src/agents/idea_agent/agent/skills/edit_operator_skills/theory-transfer-injection/references/transfer_patterns.md +24 -0
- src/agents/idea_agent/example/idea_result.json +900 -0
- src/agents/idea_agent/run.py +276 -0
- src/agents/idea_agent/tests/test_advanced_analysis_contract.py +90 -0
- src/agents/idea_agent/tests/test_gap_hypothesis_bridge.py +166 -0
- src/agents/idea_agent/tests/test_idea_debate.py +480 -0
- src/agents/idea_agent/tests/test_idea_result_v5.py +99 -0
- src/agents/idea_agent/tests/test_idea_synthesis.py +92 -0
- src/agents/idea_agent/tests/test_mature_idea_sources.py +27 -0
- src/agents/idea_agent/tests/test_multimodal_idea_integration.py +386 -0
- src/agents/idea_agent/tests/test_profile_materialization_and_scoring.py +219 -0
- src/agents/idea_agent/tests/test_profile_native_skill_rendering.py +122 -0
- src/agents/idea_agent/tests/test_result_persistence.py +183 -0
- src/agents/idea_agent/tests/test_scientific_intervention_profiles.py +241 -0
- src/agents/idea_agent/tests/test_scientific_rubric_and_prompts.py +559 -0
- src/agents/idea_agent/tests/test_strict_json_object_responses.py +48 -0
- src/agents/idea_agent/utils/core/__init__.py +1 -0
- src/agents/idea_agent/utils/core/ablation_inputs.py +60 -0
- src/agents/idea_agent/utils/core/chat_errors.py +95 -0
- src/agents/idea_agent/utils/core/chat_router.py +130 -0
- src/agents/idea_agent/utils/core/chat_transport.py +188 -0
- src/agents/idea_agent/utils/core/config_loader.py +166 -0
- src/agents/idea_agent/utils/core/json_utils.py +28 -0
- src/agents/idea_agent/utils/core/logger.py +287 -0
- src/agents/idea_agent/utils/core/progress.py +58 -0
- src/agents/idea_agent/utils/core/response_parsing.py +57 -0
- src/agents/idea_agent/utils/core/run_inputs.py +198 -0
- src/agents/idea_agent/utils/mcts/__init__.py +1 -0
- src/agents/idea_agent/utils/mcts/component_novelty.py +342 -0
- src/agents/idea_agent/utils/mcts/defect_registry.py +302 -0
- src/agents/idea_agent/utils/mcts/idea_routes.py +61 -0
- src/agents/idea_agent/utils/mcts/idea_taste_presets.py +312 -0
- src/agents/idea_agent/utils/mcts/mcts_helpers.py +738 -0
- src/agents/idea_agent/utils/mcts/mcts_runtime.py +3000 -0
- src/agents/idea_agent/utils/mcts/scientific_intervention_ontology.py +1561 -0
- src/agents/idea_agent/utils/mcts/scientific_rubric.py +211 -0
- src/agents/idea_agent/utils/mcts/skill_parsing.py +92 -0
- src/agents/idea_agent/utils/papers/__init__.py +1 -0
- src/agents/idea_agent/utils/papers/paper_graph_vector_store.py +499 -0
- src/agents/idea_agent/utils/papers/paper_repository.py +372 -0
- src/agents/idea_agent/utils/prompting/__init__.py +1 -0
- src/agents/idea_agent/utils/prompting/prompt_views.py +637 -0
- src/agents/idea_agent/utils/workflow/__init__.py +1 -0
- src/agents/idea_agent/utils/workflow/advanced_analysis_contract.py +244 -0
- src/agents/idea_agent/utils/workflow/gap_hypothesis_bridge.py +461 -0
- src/agents/idea_agent/utils/workflow/idea_contract.py +426 -0
- src/agents/idea_agent/utils/workflow/idea_debate.py +1238 -0
- src/agents/idea_agent/utils/workflow/idea_diversity.py +163 -0
- src/agents/idea_agent/utils/workflow/idea_fusion.py +889 -0
- src/agents/idea_agent/utils/workflow/idea_helpers.py +478 -0
- src/agents/idea_agent/utils/workflow/idea_portfolio.py +422 -0
- src/agents/idea_agent/utils/workflow/idea_synthesis.py +482 -0
- src/agents/idea_agent/utils/workflow/ligagent_flow.py +581 -0
- src/agents/idea_agent/utils/workflow/ligagent_handlers.py +1836 -0
- src/agents/idea_agent/utils/workflow/ligagent_helpers.py +1331 -0
- src/agents/idea_agent/utils/workflow/ligagent_utils.py +322 -0
- src/agents/idea_agent/utils/workflow/mature_idea_sources.py +648 -0
- src/agents/idea_agent/utils/workflow/multimodal_data_anchoring.py +578 -0
- src/agents/idea_agent/utils/workflow/result_persistence.py +774 -0
- src/agents/idea_agent/utils/workflow/stage_contract.py +76 -0
- src/agents/idea_agent/utils/workflow/workflow_runtime.py +288 -0
- src/agents/research_plan_author/__init__.py +50 -0
- src/agents/research_plan_author/artifacts.py +270 -0
- src/agents/research_plan_author/authoring_blueprint.py +1246 -0
- src/agents/research_plan_author/bibtex_renderer.py +252 -0
- src/agents/research_plan_author/contract_repair.py +131 -0
- src/agents/research_plan_author/contracts.py +745 -0
- src/agents/research_plan_author/cross_section_editor.py +232 -0
- src/agents/research_plan_author/document_quality.py +987 -0
- src/agents/research_plan_author/idea_evolution.py +223 -0
- src/agents/research_plan_author/input_loader.py +76 -0
- src/agents/research_plan_author/latex_compiler.py +260 -0
- src/agents/research_plan_author/latex_safety.py +159 -0
- src/agents/research_plan_author/llm_json.py +74 -0
- src/agents/research_plan_author/markdown_renderer.py +275 -0
- src/agents/research_plan_author/pdf_validator.py +149 -0
- src/agents/research_plan_author/render.py +166 -0
- src/agents/research_plan_author/render_artifacts.py +187 -0
- src/agents/research_plan_author/run.py +765 -0
- src/agents/research_plan_author/run_logging.py +209 -0
- src/agents/research_plan_author/section_cache.py +184 -0
- src/agents/research_plan_author/section_composer.py +1764 -0
- src/agents/research_plan_author/section_router.py +209 -0
- src/agents/research_plan_author/semantic_validator.py +254 -0
- src/agents/research_plan_author/source_bundle.py +46 -0
- src/agents/research_plan_author/source_registry.py +208 -0
- src/agents/research_plan_author/survey_source_loader.py +137 -0
- src/agents/research_plan_author/template_adapter.py +173 -0
- src/agents/research_plan_author/template_profile.py +204 -0
- src/agents/research_plan_author/tex_renderer.py +496 -0
- src/agents/research_plan_author/theory_presentation.py +134 -0
- src/agents/research_plan_author/theory_spine.py +703 -0
- src/agents/survey_agent/Dockerfile +54 -0
- src/agents/survey_agent/README.md +350 -0
- src/agents/survey_agent/config/deep_survey.yaml +217 -0
- src/agents/survey_agent/config/deep_survey_batch.yaml +176 -0
- src/agents/survey_agent/config/deep_survey_fast.yaml +183 -0
- src/agents/survey_agent/config/evaluate_baseline.yaml +197 -0
- src/agents/survey_agent/config/outcomeRAG.yaml +159 -0
- src/agents/survey_agent/env_report.md +348 -0
- src/agents/survey_agent/modules/__init__.py +0 -0
- src/agents/survey_agent/modules/code_collector.py +2194 -0
- src/agents/survey_agent/modules/code_report_generator.py +1282 -0
- src/agents/survey_agent/modules/data_manager.py +1713 -0
- src/agents/survey_agent/modules/database.py +167 -0
- src/agents/survey_agent/modules/fulltext_download_cache.py +462 -0
- src/agents/survey_agent/modules/fulltext_http.py +134 -0
- src/agents/survey_agent/modules/fulltext_resolution.py +749 -0
- src/agents/survey_agent/modules/judge.py +434 -0
- src/agents/survey_agent/modules/outcome_RAG.py +236 -0
- src/agents/survey_agent/modules/paper_graph_retriever.py +1075 -0
- src/agents/survey_agent/modules/pe.py +1729 -0
- src/agents/survey_agent/modules/pseudo_creator.py +782 -0
- src/agents/survey_agent/modules/pseudo_reviser.py +537 -0
- src/agents/survey_agent/modules/refine_agent.py +1952 -0
- src/agents/survey_agent/modules/survey_generator.py +5691 -0
- src/agents/survey_agent/modules/survey_visualizer.py +1817 -0
- src/agents/survey_agent/modules/visual_prompts.py +327 -0
- src/agents/survey_agent/modules/work_analyzer.py +2750 -0
- src/agents/survey_agent/modules/work_collector.py +5649 -0
- src/agents/survey_agent/scripts/baseline_evaluation.py +411 -0
- src/agents/survey_agent/scripts/run_deep_survey.py +224 -0
- src/agents/survey_agent/scripts/run_deep_survey_adapter.py +407 -0
- src/agents/survey_agent/scripts/run_deep_survey_adapter_with_input.py +409 -0
- src/agents/survey_agent/scripts/run_deep_survey_batch.py +228 -0
- src/agents/survey_agent/scripts/run_deep_survey_batch_arg.py +243 -0
- src/agents/survey_agent/scripts/run_deep_survey_batch_settings.py +218 -0
- src/agents/survey_agent/scripts/run_keynotes_gen.py +128 -0
- src/agents/survey_agent/scripts/run_work_clusters.py +140 -0
- src/agents/survey_agent/utils/__init__.py +0 -0
- src/agents/survey_agent/utils/ablation_utils.py +317 -0
- src/agents/survey_agent/utils/api_call.py +2518 -0
- src/agents/survey_agent/utils/chat_utils.py +82 -0
- src/agents/survey_agent/utils/config_utils.py +70 -0
- src/agents/survey_agent/utils/convert_to_md.py +29 -0
- src/agents/survey_agent/utils/err_info.py +24 -0
- src/agents/survey_agent/utils/file_utils.py +176 -0
- src/agents/survey_agent/utils/gpu_utils.py +145 -0
- src/agents/survey_agent/utils/graph_visualizer.py +279 -0
- src/agents/survey_agent/utils/html_utils.py +181 -0
- src/agents/survey_agent/utils/latex_generator_intra_cluster.py +529 -0
- src/agents/survey_agent/utils/latex_generator_relation_table.py +193 -0
- src/agents/survey_agent/utils/mineru_section_packer.py +334 -0
- src/agents/survey_agent/utils/mineru_utils.py +396 -0
- src/agents/survey_agent/utils/paper.py +144 -0
- src/agents/survey_agent/utils/read_yaml.py +15 -0
- src/agents/survey_agent/utils/repo_utils.py +167 -0
- src/agents/survey_agent/utils/rich_logger.py +77 -0
- src/agents/survey_agent/utils/step2v2.py +874 -0
- src/agents/survey_agent/utils/step2v2_extractor.py +856 -0
- src/agents/survey_agent/utils/topic_survey_storage.py +309 -0
- src/agents/survey_agent/utils/utils.py +118 -0
- src/agents/survey_agent/utils/work.py +2 -0
- src/cli.py +1611 -0
- src/config/__init__.py +213 -0
- src/config/default.yaml +1122 -0
- src/harness/LICENSE +21 -0
- src/harness/VENDORED.md +14 -0
- src/harness/src/__init__.py +0 -0
- src/harness/src/openharness/__init__.py +0 -0
- src/harness/src/openharness/__main__.py +6 -0
- src/harness/src/openharness/api/__init__.py +21 -0
- src/harness/src/openharness/api/client.py +281 -0
- src/harness/src/openharness/api/codex_client.py +407 -0
- src/harness/src/openharness/api/copilot_auth.py +240 -0
- src/harness/src/openharness/api/copilot_client.py +134 -0
- src/harness/src/openharness/api/errors.py +19 -0
- src/harness/src/openharness/api/openai_client.py +577 -0
- src/harness/src/openharness/api/provider.py +186 -0
- src/harness/src/openharness/api/registry.py +437 -0
- src/harness/src/openharness/api/usage.py +17 -0
- src/harness/src/openharness/auth/__init__.py +29 -0
- src/harness/src/openharness/auth/external.py +610 -0
- src/harness/src/openharness/auth/flows.py +189 -0
- src/harness/src/openharness/auth/manager.py +482 -0
- src/harness/src/openharness/auth/storage.py +269 -0
- src/harness/src/openharness/autopilot/__init__.py +23 -0
- src/harness/src/openharness/autopilot/service.py +2239 -0
- src/harness/src/openharness/autopilot/types.py +91 -0
- src/harness/src/openharness/bridge/__init__.py +20 -0
- src/harness/src/openharness/bridge/manager.py +106 -0
- src/harness/src/openharness/bridge/session_runner.py +46 -0
- src/harness/src/openharness/bridge/types.py +37 -0
- src/harness/src/openharness/bridge/work_secret.py +41 -0
- src/harness/src/openharness/channels/UPSTREAM +6 -0
- src/harness/src/openharness/channels/__init__.py +22 -0
- src/harness/src/openharness/channels/adapter.py +131 -0
- src/harness/src/openharness/channels/bus/__init__.py +6 -0
- src/harness/src/openharness/channels/bus/events.py +38 -0
- src/harness/src/openharness/channels/bus/queue.py +44 -0
- src/harness/src/openharness/channels/impl/__init__.py +6 -0
- src/harness/src/openharness/channels/impl/base.py +141 -0
- src/harness/src/openharness/channels/impl/dingtalk.py +445 -0
- src/harness/src/openharness/channels/impl/discord.py +311 -0
- src/harness/src/openharness/channels/impl/email.py +410 -0
- src/harness/src/openharness/channels/impl/feishu.py +1342 -0
- src/harness/src/openharness/channels/impl/manager.py +257 -0
- src/harness/src/openharness/channels/impl/matrix.py +700 -0
- src/harness/src/openharness/channels/impl/mochat.py +897 -0
- src/harness/src/openharness/channels/impl/qq.py +141 -0
- src/harness/src/openharness/channels/impl/slack.py +284 -0
- src/harness/src/openharness/channels/impl/telegram.py +525 -0
- src/harness/src/openharness/channels/impl/whatsapp.py +159 -0
- src/harness/src/openharness/cli.py +2551 -0
- src/harness/src/openharness/commands/__init__.py +21 -0
- src/harness/src/openharness/commands/registry.py +2783 -0
- src/harness/src/openharness/config/__init__.py +34 -0
- src/harness/src/openharness/config/paths.py +160 -0
- src/harness/src/openharness/config/schema.py +119 -0
- src/harness/src/openharness/config/settings.py +1104 -0
- src/harness/src/openharness/coordinator/__init__.py +12 -0
- src/harness/src/openharness/coordinator/agent_definitions.py +975 -0
- src/harness/src/openharness/coordinator/coordinator_mode.py +520 -0
- src/harness/src/openharness/engine/__init__.py +80 -0
- src/harness/src/openharness/engine/cost_tracker.py +24 -0
- src/harness/src/openharness/engine/messages.py +222 -0
- src/harness/src/openharness/engine/query.py +1188 -0
- src/harness/src/openharness/engine/query_engine.py +313 -0
- src/harness/src/openharness/engine/stream_events.py +90 -0
- src/harness/src/openharness/hooks/__init__.py +50 -0
- src/harness/src/openharness/hooks/events.py +20 -0
- src/harness/src/openharness/hooks/executor.py +242 -0
- src/harness/src/openharness/hooks/hot_reload.py +31 -0
- src/harness/src/openharness/hooks/loader.py +68 -0
- src/harness/src/openharness/hooks/schemas.py +66 -0
- src/harness/src/openharness/hooks/types.py +38 -0
- src/harness/src/openharness/keybindings/__init__.py +14 -0
- src/harness/src/openharness/keybindings/default_bindings.py +11 -0
- src/harness/src/openharness/keybindings/loader.py +22 -0
- src/harness/src/openharness/keybindings/parser.py +18 -0
- src/harness/src/openharness/keybindings/resolver.py +13 -0
- src/harness/src/openharness/mcp/__init__.py +79 -0
- src/harness/src/openharness/mcp/client.py +298 -0
- src/harness/src/openharness/mcp/config.py +16 -0
- src/harness/src/openharness/mcp/types.py +76 -0
- src/harness/src/openharness/memory/__init__.py +25 -0
- src/harness/src/openharness/memory/agent.py +91 -0
- src/harness/src/openharness/memory/manager.py +183 -0
- src/harness/src/openharness/memory/memdir.py +52 -0
- src/harness/src/openharness/memory/migrate.py +137 -0
- src/harness/src/openharness/memory/paths.py +22 -0
- src/harness/src/openharness/memory/relevance.py +145 -0
- src/harness/src/openharness/memory/scan.py +116 -0
- src/harness/src/openharness/memory/schema.py +443 -0
- src/harness/src/openharness/memory/search.py +71 -0
- src/harness/src/openharness/memory/team.py +90 -0
- src/harness/src/openharness/memory/types.py +33 -0
- src/harness/src/openharness/memory/usage.py +153 -0
- src/harness/src/openharness/output_styles/__init__.py +5 -0
- src/harness/src/openharness/output_styles/loader.py +42 -0
- src/harness/src/openharness/permissions/__init__.py +26 -0
- src/harness/src/openharness/permissions/checker.py +200 -0
- src/harness/src/openharness/permissions/modes.py +13 -0
- src/harness/src/openharness/personalization/__init__.py +6 -0
- src/harness/src/openharness/personalization/extractor.py +138 -0
- src/harness/src/openharness/personalization/rules.py +64 -0
- src/harness/src/openharness/personalization/session_hook.py +65 -0
- src/harness/src/openharness/platforms.py +86 -0
- src/harness/src/openharness/plugins/__init__.py +53 -0
- src/harness/src/openharness/plugins/bundled/__init__.py +0 -0
- src/harness/src/openharness/plugins/installer.py +39 -0
- src/harness/src/openharness/plugins/loader.py +730 -0
- src/harness/src/openharness/plugins/schemas.py +24 -0
- src/harness/src/openharness/plugins/types.py +59 -0
- src/harness/src/openharness/prompts/__init__.py +14 -0
- src/harness/src/openharness/prompts/claudemd.py +48 -0
- src/harness/src/openharness/prompts/context.py +187 -0
- src/harness/src/openharness/prompts/environment.py +135 -0
- src/harness/src/openharness/prompts/system_prompt.py +109 -0
- src/harness/src/openharness/sandbox/Dockerfile +6 -0
- src/harness/src/openharness/sandbox/__init__.py +33 -0
- src/harness/src/openharness/sandbox/adapter.py +148 -0
- src/harness/src/openharness/sandbox/docker_backend.py +232 -0
- src/harness/src/openharness/sandbox/docker_image.py +103 -0
- src/harness/src/openharness/sandbox/path_validator.py +37 -0
- src/harness/src/openharness/sandbox/session.py +63 -0
- src/harness/src/openharness/services/__init__.py +30 -0
- src/harness/src/openharness/services/autodream/__init__.py +34 -0
- src/harness/src/openharness/services/autodream/backup.py +104 -0
- src/harness/src/openharness/services/autodream/lock.py +138 -0
- src/harness/src/openharness/services/autodream/prompt.py +128 -0
- src/harness/src/openharness/services/autodream/service.py +313 -0
- src/harness/src/openharness/services/compact/__init__.py +1725 -0
- src/harness/src/openharness/services/cron.py +137 -0
- src/harness/src/openharness/services/cron_scheduler.py +595 -0
- src/harness/src/openharness/services/lsp/__init__.py +216 -0
- src/harness/src/openharness/services/memory_extract/__init__.py +261 -0
- src/harness/src/openharness/services/oauth/__init__.py +0 -0
- src/harness/src/openharness/services/session_backend.py +97 -0
- src/harness/src/openharness/services/session_memory/__init__.py +139 -0
- src/harness/src/openharness/services/session_storage.py +230 -0
- src/harness/src/openharness/services/token_estimation.py +15 -0
- src/harness/src/openharness/services/tool_outputs.py +55 -0
- src/harness/src/openharness/skills/__init__.py +44 -0
- src/harness/src/openharness/skills/_frontmatter.py +97 -0
- src/harness/src/openharness/skills/bundled/__init__.py +75 -0
- src/harness/src/openharness/skills/bundled/content/commit.md +25 -0
- src/harness/src/openharness/skills/bundled/content/debug.md +25 -0
- src/harness/src/openharness/skills/bundled/content/diagnose.md +35 -0
- src/harness/src/openharness/skills/bundled/content/plan.md +39 -0
- src/harness/src/openharness/skills/bundled/content/review.md +33 -0
- src/harness/src/openharness/skills/bundled/content/simplify.md +26 -0
- src/harness/src/openharness/skills/bundled/content/skill-creator.md +175 -0
- src/harness/src/openharness/skills/bundled/content/test.md +38 -0
- src/harness/src/openharness/skills/loader.py +229 -0
- src/harness/src/openharness/skills/registry.py +29 -0
- src/harness/src/openharness/skills/types.py +24 -0
- src/harness/src/openharness/state/__init__.py +6 -0
- src/harness/src/openharness/state/app_state.py +30 -0
- src/harness/src/openharness/state/store.py +40 -0
- src/harness/src/openharness/swarm/__init__.py +70 -0
- src/harness/src/openharness/swarm/in_process.py +693 -0
- src/harness/src/openharness/swarm/lockfile.py +24 -0
- src/harness/src/openharness/swarm/mailbox.py +522 -0
- src/harness/src/openharness/swarm/permission_sync.py +1168 -0
- src/harness/src/openharness/swarm/registry.py +410 -0
- src/harness/src/openharness/swarm/spawn_utils.py +229 -0
- src/harness/src/openharness/swarm/subprocess_backend.py +171 -0
- src/harness/src/openharness/swarm/team_lifecycle.py +910 -0
- src/harness/src/openharness/swarm/types.py +398 -0
- src/harness/src/openharness/swarm/worktree.py +315 -0
- src/harness/src/openharness/tasks/__init__.py +18 -0
- src/harness/src/openharness/tasks/local_agent_task.py +28 -0
- src/harness/src/openharness/tasks/local_shell_task.py +17 -0
- src/harness/src/openharness/tasks/manager.py +475 -0
- src/harness/src/openharness/tasks/stop_task.py +11 -0
- src/harness/src/openharness/tasks/types.py +32 -0
- src/harness/src/openharness/themes/__init__.py +21 -0
- src/harness/src/openharness/themes/builtin.py +89 -0
- src/harness/src/openharness/themes/loader.py +55 -0
- src/harness/src/openharness/themes/schema.py +54 -0
- src/harness/src/openharness/tools/__init__.py +107 -0
- src/harness/src/openharness/tools/agent_tool.py +141 -0
- src/harness/src/openharness/tools/ask_user_question_tool.py +46 -0
- src/harness/src/openharness/tools/base.py +80 -0
- src/harness/src/openharness/tools/bash_tool.py +259 -0
- src/harness/src/openharness/tools/brief_tool.py +33 -0
- src/harness/src/openharness/tools/config_tool.py +54 -0
- src/harness/src/openharness/tools/cron_create_tool.py +105 -0
- src/harness/src/openharness/tools/cron_delete_tool.py +32 -0
- src/harness/src/openharness/tools/cron_list_tool.py +69 -0
- src/harness/src/openharness/tools/cron_toggle_tool.py +37 -0
- src/harness/src/openharness/tools/enter_plan_mode_tool.py +28 -0
- src/harness/src/openharness/tools/enter_worktree_tool.py +80 -0
- src/harness/src/openharness/tools/exit_plan_mode_tool.py +28 -0
- src/harness/src/openharness/tools/exit_worktree_tool.py +42 -0
- src/harness/src/openharness/tools/file_edit_tool.py +95 -0
- src/harness/src/openharness/tools/file_read_tool.py +72 -0
- src/harness/src/openharness/tools/file_write_tool.py +87 -0
- src/harness/src/openharness/tools/glob_tool.py +175 -0
- src/harness/src/openharness/tools/grep_tool.py +374 -0
- src/harness/src/openharness/tools/image_generation_tool.py +447 -0
- src/harness/src/openharness/tools/image_to_text_tool.py +237 -0
- src/harness/src/openharness/tools/list_mcp_resources_tool.py +36 -0
- src/harness/src/openharness/tools/lsp_tool.py +154 -0
- src/harness/src/openharness/tools/mcp_auth_tool.py +71 -0
- src/harness/src/openharness/tools/mcp_tool.py +72 -0
- src/harness/src/openharness/tools/notebook_edit_tool.py +97 -0
- src/harness/src/openharness/tools/read_mcp_resource_tool.py +38 -0
- src/harness/src/openharness/tools/remote_trigger_tool.py +74 -0
- src/harness/src/openharness/tools/send_message_tool.py +58 -0
- src/harness/src/openharness/tools/skill_tool.py +43 -0
- src/harness/src/openharness/tools/sleep_tool.py +32 -0
- src/harness/src/openharness/tools/task_create_tool.py +56 -0
- src/harness/src/openharness/tools/task_get_tool.py +33 -0
- src/harness/src/openharness/tools/task_list_tool.py +35 -0
- src/harness/src/openharness/tools/task_output_tool.py +35 -0
- src/harness/src/openharness/tools/task_stop_tool.py +30 -0
- src/harness/src/openharness/tools/task_update_tool.py +50 -0
- src/harness/src/openharness/tools/team_create_tool.py +31 -0
- src/harness/src/openharness/tools/team_delete_tool.py +30 -0
- src/harness/src/openharness/tools/todo_write_tool.py +46 -0
- src/harness/src/openharness/tools/tool_search_tool.py +38 -0
- src/harness/src/openharness/tools/web_fetch_tool.py +117 -0
- src/harness/src/openharness/tools/web_search_tool.py +119 -0
- src/harness/src/openharness/ui/__init__.py +5 -0
- src/harness/src/openharness/ui/app.py +320 -0
- src/harness/src/openharness/ui/backend_host.py +941 -0
- src/harness/src/openharness/ui/coordinator_drain.py +198 -0
- src/harness/src/openharness/ui/input.py +32 -0
- src/harness/src/openharness/ui/output.py +265 -0
- src/harness/src/openharness/ui/permission_dialog.py +14 -0
- src/harness/src/openharness/ui/protocol.py +247 -0
- src/harness/src/openharness/ui/react_launcher.py +179 -0
- src/harness/src/openharness/ui/runtime.py +799 -0
- src/harness/src/openharness/ui/textual_app.py +495 -0
- src/harness/src/openharness/utils/__init__.py +0 -0
- src/harness/src/openharness/utils/file_lock.py +86 -0
- src/harness/src/openharness/utils/fs.py +98 -0
- src/harness/src/openharness/utils/helpers.py +77 -0
- src/harness/src/openharness/utils/network_guard.py +340 -0
- src/harness/src/openharness/utils/shell.py +147 -0
- src/harness/src/openharness/vim/__init__.py +5 -0
- src/harness/src/openharness/vim/transitions.py +8 -0
- src/harness/src/openharness/voice/__init__.py +7 -0
- src/harness/src/openharness/voice/keyterms.py +10 -0
- src/harness/src/openharness/voice/stream_stt.py +8 -0
- src/harness/src/openharness/voice/voice_mode.py +44 -0
- src/llm/__init__.py +29 -0
- src/llm/image_generation.py +402 -0
- src/llm/provider_registry.py +419 -0
- src/llm/runtime_env.py +64 -0
- src/llm/structured_output.py +131 -0
- src/llm/vision.py +198 -0
- src/memory/__init__.py +2 -0
- src/memory/api/__init__.py +1 -0
- src/memory/api/base_memory_system_api.py +98 -0
- src/memory/api/base_symbolic_memory_system_api.py +190 -0
- src/memory/api/base_vector_memory_system_api.py +116 -0
- src/memory/api/faiss_memory_system_api.py +228 -0
- src/memory/api/slot_process_api.py +827 -0
- src/memory/api/symbolic_memory_system_api.py +572 -0
- src/memory/memory_system/__init__.py +48 -0
- src/memory/memory_system/component_taxonomy.py +430 -0
- src/memory/memory_system/llm.py +437 -0
- src/memory/memory_system/models.py +168 -0
- src/memory/memory_system/user_prompt.py +418 -0
- src/memory/memory_system/utils.py +282 -0
- src/memory/memory_system/vectorstore.py +311 -0
- src/memory/memory_system/working_slot.py +99 -0
- src/pipeline/__init__.py +129 -0
- src/pipeline/contracts.py +531 -0
- src/pipeline/discipline_taxonomy.py +916 -0
- src/pipeline/evidence_coverage_ledger.py +1150 -0
- src/pipeline/evidence_refinement.py +620 -0
- src/pipeline/experiment_to_symbolic.py +137 -0
- src/pipeline/multimodal_evidence/__init__.py +28 -0
- src/pipeline/multimodal_evidence/capabilities.py +107 -0
- src/pipeline/multimodal_evidence/claims.py +135 -0
- src/pipeline/multimodal_evidence/contract.py +291 -0
- src/pipeline/multimodal_evidence/data_sh_compiler.py +505 -0
- src/pipeline/multimodal_evidence/handoff_binding.py +135 -0
- src/pipeline/multimodal_evidence/manifest.py +254 -0
- src/pipeline/multimodal_evidence/native_analysis.py +479 -0
- src/pipeline/multimodal_evidence/perception.py +277 -0
- src/pipeline/multimodal_evidence/query_binding.py +65 -0
- src/pipeline/multimodal_evidence/rendering.py +120 -0
- src/pipeline/multimodal_evidence/safety.py +42 -0
- src/pipeline/multimodal_evidence/sampling.py +69 -0
- src/pipeline/multimodal_evidence/service.py +148 -0
- src/pipeline/multimodal_evidence/survey_integration.py +460 -0
- src/pipeline/paper_identity.py +52 -0
- src/pipeline/research_design_inventory.py +338 -0
- src/pipeline/research_domain_resolution.py +669 -0
- src/pipeline/research_identity.py +548 -0
- src/pipeline/research_question_contract.py +646 -0
- src/pipeline/retrieval_lanes.py +889 -0
- src/pipeline/run_loop.py +862 -0
- src/pipeline/science_events.py +30 -0
- src/pipeline/science_manifests.py +602 -0
- src/pipeline/science_run.py +918 -0
- src/pipeline/science_stages.py +709 -0
- src/pipeline/science_workflow.py +807 -0
- src/pipeline/sh_cluster_projection.py +306 -0
- src/pipeline/sh_graph_provenance.py +648 -0
- src/pipeline/subhypothesis_decomposition.py +392 -0
- src/pipeline/subhypothesis_evidence.py +856 -0
- src/pipeline/survey_evidence_plan.py +858 -0
- src/pipeline/survey_gap_adjudication.py +647 -0
- src/pipeline/survey_gap_candidates.py +840 -0
- src/pipeline/survey_gap_ledger.py +683 -0
- src/pipeline/survey_gap_triage.py +401 -0
- src/pipeline/survey_handoff_persistence.py +481 -0
- src/pipeline/survey_handoff_projection.py +457 -0
- src/pipeline/survey_idea_handoff.py +1112 -0
- src/pipeline/survey_idea_loader.py +289 -0
- src/research_run_ids.py +11 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
IDEA_FUSION_PROMPT = """
|
|
2
|
+
You are a scientific idea fusion agent for LigAgent-Pro.
|
|
3
|
+
|
|
4
|
+
== Topic ==
|
|
5
|
+
{topic}
|
|
6
|
+
|
|
7
|
+
== Current mature idea ==
|
|
8
|
+
{mature_idea}
|
|
9
|
+
|
|
10
|
+
== Refinement scope (optional) ==
|
|
11
|
+
{refinement_scope}
|
|
12
|
+
|
|
13
|
+
== Shared root domains ==
|
|
14
|
+
{root_domains}
|
|
15
|
+
|
|
16
|
+
== Fixed scientific intervention profile ==
|
|
17
|
+
{scientific_intervention_profile}
|
|
18
|
+
|
|
19
|
+
== Native scientific object schema ==
|
|
20
|
+
{scientific_object_schema}
|
|
21
|
+
|
|
22
|
+
== Analysis summary ==
|
|
23
|
+
{analysis}
|
|
24
|
+
|
|
25
|
+
You are given {mode_count} candidate ideas produced from different idea taste modes, all starting from the same prepared root context.
|
|
26
|
+
|
|
27
|
+
== Candidate ideas (compact JSON) ==
|
|
28
|
+
{candidate_ideas_json}
|
|
29
|
+
|
|
30
|
+
Return STRICT JSON only:
|
|
31
|
+
{{
|
|
32
|
+
"fused_idea": {{
|
|
33
|
+
"title": "string",
|
|
34
|
+
"abstract": "string",
|
|
35
|
+
"core_contribution": "string",
|
|
36
|
+
"method": "string",
|
|
37
|
+
"risks": "string",
|
|
38
|
+
"tags": ["string"],
|
|
39
|
+
"operator": "fusion_agent",
|
|
40
|
+
"target_defects": ["string"],
|
|
41
|
+
"rationale": "string",
|
|
42
|
+
"components": ["profile-native scientific object or relation"],
|
|
43
|
+
"component_explanations": {{
|
|
44
|
+
"component_name": "string"
|
|
45
|
+
}},
|
|
46
|
+
"root_domains": ["string"],
|
|
47
|
+
"paper_graph_context": "string",
|
|
48
|
+
"edit_plan": null,
|
|
49
|
+
"skill_metrics": {{}}
|
|
50
|
+
}},
|
|
51
|
+
"fusion_metadata": {{
|
|
52
|
+
"host_idea_mode": "string",
|
|
53
|
+
"selected_components": [
|
|
54
|
+
{{
|
|
55
|
+
"source_mode": "string",
|
|
56
|
+
"component": "string",
|
|
57
|
+
"role": "core_mechanism|supporting_object|evidence|boundary",
|
|
58
|
+
"why_selected": "string"
|
|
59
|
+
}}
|
|
60
|
+
],
|
|
61
|
+
"rejected_components": [
|
|
62
|
+
{{
|
|
63
|
+
"source_mode": "string",
|
|
64
|
+
"component": "string",
|
|
65
|
+
"why_rejected": "string"
|
|
66
|
+
}}
|
|
67
|
+
],
|
|
68
|
+
"conflicts_and_resolutions": [
|
|
69
|
+
{{
|
|
70
|
+
"conflict": "string",
|
|
71
|
+
"resolution": "string"
|
|
72
|
+
}}
|
|
73
|
+
],
|
|
74
|
+
"fused_core_thesis": "string",
|
|
75
|
+
"why_stronger_than_each_input": "string",
|
|
76
|
+
"minimal_validation_plan": "string"
|
|
77
|
+
}}
|
|
78
|
+
}}
|
|
79
|
+
|
|
80
|
+
== Fusion rules ==
|
|
81
|
+
- The top-level JSON value MUST be an object with exactly two keys: `fused_idea` and `fusion_metadata`.
|
|
82
|
+
- `fused_idea` MUST appear first.
|
|
83
|
+
- Build `fused_idea` first, then fill `fusion_metadata`.
|
|
84
|
+
- Do NOT return a raw array.
|
|
85
|
+
- Do NOT return a single selected component object as the top-level JSON.
|
|
86
|
+
- Do NOT union all ideas together.
|
|
87
|
+
- Select exactly one dominant core mechanism or scientific relation.
|
|
88
|
+
- Other kept components must be supporting objects, not a second competing core mechanism.
|
|
89
|
+
- When you reuse a component, copy its name exactly from `components`.
|
|
90
|
+
- Protocol, guardrail, evaluator, or audit components cannot be the main novelty.
|
|
91
|
+
- Generic wrapper or decision-layer components should almost never be the dominant core mechanism. Prefer the underlying scientific mechanism, object relation, process rule, or transferred principle instead.
|
|
92
|
+
- If the current mature idea is not centered on a decision boundary, preserve that character in fusion. Do not elevate a wrapper into the fused thesis just because it is easy to combine.
|
|
93
|
+
- If a generic decision layer mainly patches complexity created by another weak choice, reject it instead of carrying that patch into the fused idea.
|
|
94
|
+
- If refinement_scope is provided, keep the fused novelty inside that scope. Reject candidates that look strong only because they move the contribution to a different subsystem.
|
|
95
|
+
- Remove components that are redundant, conflicting, or only exist to patch complexity created by another weak choice.
|
|
96
|
+
- Prefer components that strengthen novelty and impact while keeping the causal story coherent.
|
|
97
|
+
- The final fused idea must read like one scientific claim with one clear explanatory chain.
|
|
98
|
+
"""
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def render_idea_fusion_prompt(prompt: str, profile_id: str | None = None) -> str:
|
|
102
|
+
"""Remove software-architecture priors from fusion prompts for non-CS profiles."""
|
|
103
|
+
|
|
104
|
+
if str(profile_id or "").strip().lower() == "computational_algorithmic":
|
|
105
|
+
return prompt
|
|
106
|
+
replacements = {
|
|
107
|
+
"component-level": "object-level",
|
|
108
|
+
"component edits": "object or relation edits",
|
|
109
|
+
"component names": "scientific object names",
|
|
110
|
+
"support modules": "supporting objects",
|
|
111
|
+
"support module": "supporting object",
|
|
112
|
+
"task-solving mechanism, representation, or update rule": "scientific mechanism, object relation, or process rule",
|
|
113
|
+
"task-solving mechanism, representation, update rule, or transferred principle": "scientific mechanism, object relation, process rule, or transferred principle",
|
|
114
|
+
"task-solving mechanism": "scientific mechanism",
|
|
115
|
+
"representation": "object description",
|
|
116
|
+
"update rule": "process rule",
|
|
117
|
+
"gate/router/controller/threshold-style": "generic wrapper or decision-layer",
|
|
118
|
+
"gate/router/controller/threshold": "generic wrapper or decision-layer",
|
|
119
|
+
"gate/router/controller": "generic decision layer",
|
|
120
|
+
"architecture": "scientific structure",
|
|
121
|
+
"one method with one clear causal chain": "one scientific claim with one clear explanatory chain",
|
|
122
|
+
"Specific computational role": "Specific profile-native role",
|
|
123
|
+
}
|
|
124
|
+
for source, target in replacements.items():
|
|
125
|
+
prompt = prompt.replace(source, target)
|
|
126
|
+
return prompt
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
FUSION_REPAIR_INSTANTIATION_PROMPT = """
|
|
130
|
+
You are materializing a local repair plan into a revised fused research idea.
|
|
131
|
+
|
|
132
|
+
== Context ==
|
|
133
|
+
Topic: {topic}
|
|
134
|
+
Fixed root domains: {root_domains}
|
|
135
|
+
Fixed scientific intervention profile:
|
|
136
|
+
{scientific_intervention_profile}
|
|
137
|
+
Refinement scope: {refinement_scope}
|
|
138
|
+
Current fused idea: {parent_summary}
|
|
139
|
+
Current fused components: {parent_components}
|
|
140
|
+
Literature context: {paper_context}
|
|
141
|
+
Memory bundle: {memory_bundle}
|
|
142
|
+
{additional_retrieval_context}
|
|
143
|
+
|
|
144
|
+
== Local Repair Plan ==
|
|
145
|
+
Objective: {plan_objective}
|
|
146
|
+
Target defects: {target_defects}
|
|
147
|
+
Component edits:
|
|
148
|
+
{component_edits}
|
|
149
|
+
Validation protocols:
|
|
150
|
+
{validation_protocols}
|
|
151
|
+
Guardrails: {guardrails}
|
|
152
|
+
|
|
153
|
+
== Your Task ==
|
|
154
|
+
1. Keep the same overall thesis as the current fused idea.
|
|
155
|
+
2. Realize only the local repair encoded by the component edits above.
|
|
156
|
+
3. Treat component names in the repair plan as exact symbols. Do not rename or paraphrase them.
|
|
157
|
+
4. Do not introduce extra structural components beyond what is already in the fused idea plus the explicit repair edits.
|
|
158
|
+
5. Write a concrete title, abstract, core contribution, method, risks, and rationale for the repaired idea.
|
|
159
|
+
6. Use the profile-native scientific object schema above; do not recast a non-computational intervention as software architecture.
|
|
160
|
+
7. Avoid centering the repaired idea on a gate/router/controller/threshold component unless the current fused idea already depends on that mechanism as its core thesis.
|
|
161
|
+
8. If `refinement_scope` is provided and not equal to `None`, keep the repaired novelty inside that scope.
|
|
162
|
+
9. Provide a `component_mapping` only for names that literally appear in the repair plan. Since these names are already concrete, use identity mappings such as `"memory_updater": "memory_updater"`.
|
|
163
|
+
10. Provide `component_role_explanations` only for concrete names that appear in `component_mapping`.
|
|
164
|
+
|
|
165
|
+
Return STRICT JSON (no Markdown wrapping):
|
|
166
|
+
{{
|
|
167
|
+
"title": "concise repaired idea title",
|
|
168
|
+
"abstract": "≤150 words abstract describing the repaired fused idea",
|
|
169
|
+
"core_contribution": "one focused statement of the repaired mechanism",
|
|
170
|
+
"method": "concrete methodology for the repaired fused idea using the exact component names from the repair plan",
|
|
171
|
+
"risks": "concrete failure modes and mitigation strategies",
|
|
172
|
+
"rationale": "2-3 sentences on how the local repair improves the fused idea",
|
|
173
|
+
"component_mapping": {{
|
|
174
|
+
"exact_component_name_1": "exact_component_name_1",
|
|
175
|
+
"exact_component_name_2": "exact_component_name_2"
|
|
176
|
+
}},
|
|
177
|
+
"component_role_explanations": {{
|
|
178
|
+
"exact_component_name_1": "Specific computational role in the repaired idea...",
|
|
179
|
+
"exact_component_name_2": "Specific computational role in the repaired idea..."
|
|
180
|
+
}},
|
|
181
|
+
"edit_reasons": [
|
|
182
|
+
"Reason 1: Why this local edit improves the fused idea...",
|
|
183
|
+
"Reason 2: Why this local edit resolves the target defect..."
|
|
184
|
+
]
|
|
185
|
+
}}
|
|
186
|
+
"""
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
FUSION_REPAIR_PROMPT = """
|
|
190
|
+
You are repairing a fused research idea after referee evaluation.
|
|
191
|
+
|
|
192
|
+
== Topic ==
|
|
193
|
+
{topic}
|
|
194
|
+
|
|
195
|
+
== Fixed root domains ==
|
|
196
|
+
{root_domains}
|
|
197
|
+
|
|
198
|
+
== Fixed scientific intervention profile ==
|
|
199
|
+
{scientific_intervention_profile}
|
|
200
|
+
|
|
201
|
+
== Current fused idea (JSON) ==
|
|
202
|
+
{current_idea_json}
|
|
203
|
+
|
|
204
|
+
== Current evaluation (JSON) ==
|
|
205
|
+
{current_evaluation_json}
|
|
206
|
+
|
|
207
|
+
== Source mode candidates (JSON) ==
|
|
208
|
+
{candidate_ideas_json}
|
|
209
|
+
|
|
210
|
+
== Available atomic edit operations ==
|
|
211
|
+
{atomic_op_reference}
|
|
212
|
+
|
|
213
|
+
Return STRICT JSON only:
|
|
214
|
+
{{
|
|
215
|
+
"stop": false,
|
|
216
|
+
"stop_reason": "",
|
|
217
|
+
"target_defects": ["string"],
|
|
218
|
+
"guardrails": ["string"],
|
|
219
|
+
"component_edits": [
|
|
220
|
+
{{
|
|
221
|
+
"op": "REMOVE_COMPONENT|REPLACE_COMPONENT|REWIRE",
|
|
222
|
+
"component": "string",
|
|
223
|
+
"target": "string",
|
|
224
|
+
"condition": "string",
|
|
225
|
+
"details": "string",
|
|
226
|
+
"reason": "string"
|
|
227
|
+
}}
|
|
228
|
+
]
|
|
229
|
+
}}
|
|
230
|
+
|
|
231
|
+
== Repair rules ==
|
|
232
|
+
- Use ONLY these operations: REMOVE_COMPONENT, REPLACE_COMPONENT, REWIRE.
|
|
233
|
+
- Do NOT use ADD_COMPONENT or ADD_PROTOCOL.
|
|
234
|
+
- Do NOT increase the number of structural components.
|
|
235
|
+
- Prefer one small local repair, not a rewrite of the whole idea.
|
|
236
|
+
- At least one structural edit must be present unless you choose to stop.
|
|
237
|
+
- Replacements should come from source-mode components or be tighter versions of the current role.
|
|
238
|
+
- Prefer removing or replacing gate/router/controller/threshold-style components when they are auxiliary scaffolding rather than the true core mechanism.
|
|
239
|
+
- If a gate/router/controller/threshold component is only patching complexity created elsewhere, treat that as evidence to simplify the architecture rather than preserve the patch.
|
|
240
|
+
- If no likely-improving local repair exists, set stop=true.
|
|
241
|
+
- Treat component names as STRICT symbols, not paraphrases.
|
|
242
|
+
- When you mention an existing component from the current fused idea, copy its name exactly, character-for-character.
|
|
243
|
+
- When you mention a component from a source-mode candidate, copy its name exactly, character-for-character.
|
|
244
|
+
- Do NOT rename, summarize, translate, normalize, or slightly rewrite component names.
|
|
245
|
+
- If you are not confident that an edit can be expressed with exact component names, set stop=true.
|
|
246
|
+
|
|
247
|
+
== Field semantics ==
|
|
248
|
+
- REMOVE_COMPONENT:
|
|
249
|
+
- "component" = the existing component to delete from the current fused idea.
|
|
250
|
+
- "target" should be "".
|
|
251
|
+
- REPLACE_COMPONENT:
|
|
252
|
+
- "target" = the existing component in the current fused idea that will be replaced.
|
|
253
|
+
- "component" = the replacement component name.
|
|
254
|
+
- The replacement component may be copied from a source-mode candidate or be a tighter variant, but must still be written as one concrete component name.
|
|
255
|
+
- REWIRE:
|
|
256
|
+
- "component" = the source or upstream component whose connection is being changed.
|
|
257
|
+
- "target" = the destination or downstream component / interface it should connect to.
|
|
258
|
+
- REWIRE changes topology only; it does not add a new component.
|
|
259
|
+
|
|
260
|
+
== Valid examples ==
|
|
261
|
+
- Valid REPLACE_COMPONENT:
|
|
262
|
+
{{
|
|
263
|
+
"op": "REPLACE_COMPONENT",
|
|
264
|
+
"component": "retrieval-grounded verifier",
|
|
265
|
+
"target": "static verifier",
|
|
266
|
+
"condition": "",
|
|
267
|
+
"details": "Replace static verifier with retrieval-grounded verifier",
|
|
268
|
+
"reason": "Improves mechanism grounding without expanding the architecture"
|
|
269
|
+
}}
|
|
270
|
+
- Valid REMOVE_COMPONENT:
|
|
271
|
+
{{
|
|
272
|
+
"op": "REMOVE_COMPONENT",
|
|
273
|
+
"component": "redundant audit head",
|
|
274
|
+
"target": "",
|
|
275
|
+
"condition": "",
|
|
276
|
+
"details": "Remove redundant audit head",
|
|
277
|
+
"reason": "Reduces complexity caused by overlapping functionality"
|
|
278
|
+
}}
|
|
279
|
+
- Valid REWIRE:
|
|
280
|
+
{{
|
|
281
|
+
"op": "REWIRE",
|
|
282
|
+
"component": "uncertainty estimator",
|
|
283
|
+
"target": "memory_updater",
|
|
284
|
+
"condition": "",
|
|
285
|
+
"details": "Rewire uncertainty estimator -> memory_updater",
|
|
286
|
+
"reason": "Lets the update rule react directly to uncertainty"
|
|
287
|
+
}}
|
|
288
|
+
|
|
289
|
+
== Invalid patterns ==
|
|
290
|
+
- Invalid: using ADD_COMPONENT or ADD_PROTOCOL.
|
|
291
|
+
- Invalid: setting REPLACE_COMPONENT with "component" as the old name and "target" as the new name.
|
|
292
|
+
- Invalid: inventing a near-match such as "dynamic uncertainty-aware updater" when the listed component is "uncertainty-aware updater".
|
|
293
|
+
- Invalid: producing a plan that effectively adds a new structural component instead of locally repairing the existing fused idea.
|
|
294
|
+
- Invalid: preserving a gate/router/controller/threshold component as the repaired core mechanism when it only acts as auxiliary scaffolding.
|
|
295
|
+
"""
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
IDEA_INTRODUCTION_PROMPT = """
|
|
2
|
+
You are an expert academic writer drafting the introduction section of a research paper for the following idea.
|
|
3
|
+
|
|
4
|
+
== Topic ==
|
|
5
|
+
{topic}
|
|
6
|
+
|
|
7
|
+
== Mature idea anchor (optional; if empty, ignore) ==
|
|
8
|
+
{mature_idea}
|
|
9
|
+
|
|
10
|
+
== Idea payload (JSON) ==
|
|
11
|
+
{idea}
|
|
12
|
+
|
|
13
|
+
== Grounding papers (summaries extracted from our knowledge acquisition stage) ==
|
|
14
|
+
{papers}
|
|
15
|
+
|
|
16
|
+
Requirements & Constraints:
|
|
17
|
+
- NARRATIVE FLOW: Follow a logical progression (e.g., Broad context -> Specific limitations/Gap -> Core proposed mechanism -> Hypotheses & Evaluation plan).
|
|
18
|
+
- ANCHORING: If a mature idea anchor is provided, explicitly explain that the proposal is a refinement of that idea and identify the specific limitation being repaired.
|
|
19
|
+
- GROUNDING: Explicitly reference at least two provided papers when motivating the gap. Highlight how your idea inherits or contrasts with their specific insights. (Use standard academic phrasing, e.g., "Building on the insights of [Paper Title]...").
|
|
20
|
+
- COMPARISON BOUNDARY: If you compare against prior methods, only use the provided papers or the mature idea anchor. Never compare against internal MCTS intermediate artifacts, parent nodes, or temporary aliases.
|
|
21
|
+
- STANCE: Treat the idea as a PROPOSAL. Emphasize methodological detail, target failure modes, and expected benefits.
|
|
22
|
+
- ANTI-HALLUCINATION (CRITICAL): Do NOT invent or summarize experimental results unless explicitly present in the idea payload. Absolutely NO phrases claiming the idea "achieves", "outperforms", "improves by X", or "demonstrates superior performance".
|
|
23
|
+
- LENGTH: Return one focused paragraph of approximately 180-300 words and never exceed 500 words.
|
|
24
|
+
- FORMATTING: Return the introduction as a single JSON string. Escape embedded quotes and newlines so the object remains valid JSON.
|
|
25
|
+
|
|
26
|
+
Return STRICT JSON ONLY matching this schema:
|
|
27
|
+
{{
|
|
28
|
+
"introduction": ""
|
|
29
|
+
}}
|
|
30
|
+
"""
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
IDEA_RESULT_ALIGNMENT_PROMPT = """
|
|
2
|
+
You are the final public-facing alignment editor for a research idea before it is written to idea_result.json.
|
|
3
|
+
|
|
4
|
+
== Topic ==
|
|
5
|
+
{topic}
|
|
6
|
+
|
|
7
|
+
== Mature idea anchor (optional; if empty, ignore) ==
|
|
8
|
+
{mature_idea}
|
|
9
|
+
|
|
10
|
+
== Refinement scope (optional; if empty, ignore) ==
|
|
11
|
+
{refinement_scope}
|
|
12
|
+
|
|
13
|
+
== Candidate idea payload (JSON) ==
|
|
14
|
+
{idea}
|
|
15
|
+
|
|
16
|
+
== Grounding papers ==
|
|
17
|
+
{papers}
|
|
18
|
+
|
|
19
|
+
Your job is to rewrite the candidate into a final public-facing idea description.
|
|
20
|
+
|
|
21
|
+
Rules:
|
|
22
|
+
- If a mature idea anchor is provided, present the candidate as a direct refinement of that anchor. The public narrative should make the relationship to the mature idea explicit.
|
|
23
|
+
- Do NOT present internal MCTS intermediate artifacts, temporary aliases, or parent-node names as if they were user-facing baselines or prior methods.
|
|
24
|
+
- If the candidate currently describes itself mainly as a repair of an intermediate node, rewrite it so it reads as a refinement of the mature idea instead.
|
|
25
|
+
- Keep temporary internal names only if they remain essential to the final public method. Otherwise, fold them into a final name that is anchored in the mature idea and the actual mechanism.
|
|
26
|
+
- In `abstract` and `method`, explicitly state what limitation of the mature idea is being repaired and how.
|
|
27
|
+
- If contrasting with other methods, only contrast against the provided papers. Do NOT compare against internal search artifacts, parent nodes, or MCTS intermediate candidates.
|
|
28
|
+
- Stay faithful to the actual mechanism in the candidate. Do not invent a different method.
|
|
29
|
+
- Keep the method concrete and implementation-ready, but remove internal-search framing.
|
|
30
|
+
|
|
31
|
+
Return STRICT JSON only:
|
|
32
|
+
{{
|
|
33
|
+
"title": "public-facing paper title",
|
|
34
|
+
"abstract": "public-facing abstract aligned to the mature idea when present",
|
|
35
|
+
"core_contribution": "public-facing main mechanism claim",
|
|
36
|
+
"method": "public-facing method description aligned to the mature idea when present",
|
|
37
|
+
"risks": "public-facing risks"
|
|
38
|
+
}}
|
|
39
|
+
"""
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
INPUT_INTERPRETER_PROMPT = """
|
|
2
|
+
You are the front-door interpreter for LigAgent.
|
|
3
|
+
|
|
4
|
+
The user gives a single raw input string. Your job is to extract the research topic,
|
|
5
|
+
zero or more mature idea records, and an optional refinement boundary:
|
|
6
|
+
1. `topic` (required)
|
|
7
|
+
2. `mature_ideas` (optional collection)
|
|
8
|
+
3. `refinement_scope` (optional)
|
|
9
|
+
|
|
10
|
+
Interpretation rules:
|
|
11
|
+
- `topic` is the research problem or direction being studied. It must always be present in the output.
|
|
12
|
+
- `mature_ideas` contains one record per independently stated, reasonably specific method anchor or mature seed idea. Do not split a single idea into cosmetic variants.
|
|
13
|
+
- Keep the legacy `mature_idea` field as the first idea's short text when at least one record is present.
|
|
14
|
+
- `refinement_scope` is a boundary on what part of the system may be changed. Only return it if the input clearly constrains the edit surface.
|
|
15
|
+
- Prefer leaving `mature_idea` or `refinement_scope` empty over hallucinating them.
|
|
16
|
+
- Distinguish user-explicit content from your own inference:
|
|
17
|
+
- `explicit` = the user clearly stated it.
|
|
18
|
+
- `inferred` = you can only reconstruct it approximately from hints.
|
|
19
|
+
- `empty` = not present.
|
|
20
|
+
- Set `needs_grounding=true` whenever `mature_idea` or `refinement_scope` is missing or inferred and should later be grounded by survey/paper evidence.
|
|
21
|
+
|
|
22
|
+
Raw input:
|
|
23
|
+
{input_text}
|
|
24
|
+
|
|
25
|
+
Return STRICT JSON only:
|
|
26
|
+
{{
|
|
27
|
+
"topic": "required non-empty string",
|
|
28
|
+
"topic_source": "explicit|inferred",
|
|
29
|
+
"mature_ideas": [
|
|
30
|
+
{{
|
|
31
|
+
"idea_id": "stable short identifier",
|
|
32
|
+
"title": "short title",
|
|
33
|
+
"hypothesis": "central hypothesis",
|
|
34
|
+
"scientific_object": "object or process being studied",
|
|
35
|
+
"mechanism": "causal or formal mechanism",
|
|
36
|
+
"assumptions": ["..."],
|
|
37
|
+
"evidence_basis": ["..."],
|
|
38
|
+
"target_gap_ids": ["..."],
|
|
39
|
+
"refinement_scope": "allowed edit boundary",
|
|
40
|
+
"falsifier": "observation or result that would refute it",
|
|
41
|
+
"maturity_status": "mature|provisional",
|
|
42
|
+
"idea_source": "explicit|inferred",
|
|
43
|
+
"lineage": "survey|user_input|history|generated"
|
|
44
|
+
}}
|
|
45
|
+
],
|
|
46
|
+
"mature_idea": "legacy first-idea text, may be empty",
|
|
47
|
+
"mature_idea_source": "explicit|inferred|empty",
|
|
48
|
+
"refinement_scope": "string, may be empty",
|
|
49
|
+
"refinement_scope_source": "explicit|inferred|empty",
|
|
50
|
+
"needs_grounding": true
|
|
51
|
+
}}
|
|
52
|
+
"""
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
KEYNOTE_SCORING_PROMPT = """
|
|
2
|
+
You are scoring one survey-cited paper keynote for LigAgent.
|
|
3
|
+
|
|
4
|
+
== Topic ==
|
|
5
|
+
{topic}
|
|
6
|
+
|
|
7
|
+
== Retrieval Query ==
|
|
8
|
+
{rag_query}
|
|
9
|
+
|
|
10
|
+
== Paper Title ==
|
|
11
|
+
{title}
|
|
12
|
+
|
|
13
|
+
== Keynote ==
|
|
14
|
+
{keynote}
|
|
15
|
+
|
|
16
|
+
Return STRICT JSON ONLY:
|
|
17
|
+
{{
|
|
18
|
+
"score": 0
|
|
19
|
+
}}
|
|
20
|
+
|
|
21
|
+
Scoring rule:
|
|
22
|
+
- integer only, 0 to 100
|
|
23
|
+
- higher means more relevant and more important for grounding idea generation under the given topic/query
|
|
24
|
+
- score based only on this keynote
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
KEYNOTE_SINGLE_COMPRESSION_PROMPT = """
|
|
29
|
+
You are compressing one survey-cited paper keynote for LigAgent.
|
|
30
|
+
|
|
31
|
+
== Topic ==
|
|
32
|
+
{topic}
|
|
33
|
+
|
|
34
|
+
== Retrieval Query ==
|
|
35
|
+
{rag_query}
|
|
36
|
+
|
|
37
|
+
== Paper Title ==
|
|
38
|
+
{title}
|
|
39
|
+
|
|
40
|
+
== Keynote ==
|
|
41
|
+
{keynote}
|
|
42
|
+
|
|
43
|
+
Return STRICT JSON ONLY:
|
|
44
|
+
{{
|
|
45
|
+
"summary": "",
|
|
46
|
+
"insight": ""
|
|
47
|
+
}}
|
|
48
|
+
|
|
49
|
+
Requirements:
|
|
50
|
+
- `summary`: 1-2 factual sentences
|
|
51
|
+
- `insight`: 1-3 concise sentence capturing the most decision-useful mechanism, limitation, or evaluation takeaway
|
|
52
|
+
- use only the keynote
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
KEYNOTE_GROUP_SUMMARY_PROMPT = """
|
|
57
|
+
You are summarizing the lower-priority survey-cited paper keynotes for LigAgent.
|
|
58
|
+
|
|
59
|
+
== Topic ==
|
|
60
|
+
{topic}
|
|
61
|
+
|
|
62
|
+
== Retrieval Query ==
|
|
63
|
+
{rag_query}
|
|
64
|
+
|
|
65
|
+
== Papers ==
|
|
66
|
+
{papers}
|
|
67
|
+
|
|
68
|
+
Return STRICT JSON ONLY:
|
|
69
|
+
{{
|
|
70
|
+
"summary": ""
|
|
71
|
+
}}
|
|
72
|
+
|
|
73
|
+
Requirements:
|
|
74
|
+
- produce one concise synthesis summary for the whole set
|
|
75
|
+
- emphasize recurring mechanisms, limitations, and evaluation signals
|
|
76
|
+
- do not enumerate every paper
|
|
77
|
+
- use only the provided keynotes
|
|
78
|
+
"""
|