researchharness 0.0.36__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.
- researchharness-0.0.36/.env.example +31 -0
- researchharness-0.0.36/LICENSE +21 -0
- researchharness-0.0.36/MANIFEST.in +11 -0
- researchharness-0.0.36/PKG-INFO +1086 -0
- researchharness-0.0.36/README.md +1054 -0
- researchharness-0.0.36/VERSION +1 -0
- researchharness-0.0.36/agent_base/__init__.py +5 -0
- researchharness-0.0.36/agent_base/base.py +131 -0
- researchharness-0.0.36/agent_base/console_utils.py +223 -0
- researchharness-0.0.36/agent_base/context_compact.py +326 -0
- researchharness-0.0.36/agent_base/model_profiles.py +92 -0
- researchharness-0.0.36/agent_base/prompt.py +94 -0
- researchharness-0.0.36/agent_base/provider_compat.py +39 -0
- researchharness-0.0.36/agent_base/react_agent.py +1562 -0
- researchharness-0.0.36/agent_base/session_state.py +87 -0
- researchharness-0.0.36/agent_base/tools/__init__.py +51 -0
- researchharness-0.0.36/agent_base/tools/tool_extra.py +343 -0
- researchharness-0.0.36/agent_base/tools/tool_file.py +933 -0
- researchharness-0.0.36/agent_base/tools/tool_runtime.py +732 -0
- researchharness-0.0.36/agent_base/tools/tool_user.py +89 -0
- researchharness-0.0.36/agent_base/tools/tool_web.py +480 -0
- researchharness-0.0.36/agent_base/tools/tooling.py +302 -0
- researchharness-0.0.36/agent_base/trace_utils.py +112 -0
- researchharness-0.0.36/agent_base/utils.py +256 -0
- researchharness-0.0.36/api/__init__.py +1 -0
- researchharness-0.0.36/api/openai_server.py +676 -0
- researchharness-0.0.36/benchmarks/QA/README.md +182 -0
- researchharness-0.0.36/benchmarks/QA/role_prompt.md +31 -0
- researchharness-0.0.36/benchmarks/README.md +23 -0
- researchharness-0.0.36/benchmarks/ResearchClawBench/README.md +112 -0
- researchharness-0.0.36/benchmarks/ResearchClawBench/adapter.py +93 -0
- researchharness-0.0.36/benchmarks/ResearchClawBench/role_prompt.md +195 -0
- researchharness-0.0.36/benchmarks/SGI-DeepResearch/README.md +71 -0
- researchharness-0.0.36/benchmarks/SGI-DeepResearch/role_prompt.md +64 -0
- researchharness-0.0.36/benchmarks/SGI-DryExperiment/README.md +514 -0
- researchharness-0.0.36/benchmarks/SGI-DryExperiment/role_prompt.md +75 -0
- researchharness-0.0.36/benchmarks/SGI-IdeaGeneration/README.md +134 -0
- researchharness-0.0.36/benchmarks/SGI-IdeaGeneration/role_prompt.md +83 -0
- researchharness-0.0.36/benchmarks/SGI-Reasoning/README.md +88 -0
- researchharness-0.0.36/benchmarks/SGI-Reasoning/example_imgs/SGI_Reasoning_0000_0.png +0 -0
- researchharness-0.0.36/benchmarks/SGI-Reasoning/role_prompt.md +53 -0
- researchharness-0.0.36/benchmarks/SGI-WetExperiment/README.md +241 -0
- researchharness-0.0.36/benchmarks/SGI-WetExperiment/role_prompt.md +112 -0
- researchharness-0.0.36/docs/tutorial_en.md +663 -0
- researchharness-0.0.36/docs/tutorial_zh.md +630 -0
- researchharness-0.0.36/frontend/__init__.py +1 -0
- researchharness-0.0.36/frontend/static/app.css +1112 -0
- researchharness-0.0.36/frontend/static/app.js +854 -0
- researchharness-0.0.36/frontend/static/favicon.svg +10 -0
- researchharness-0.0.36/frontend/static/index.html +99 -0
- researchharness-0.0.36/pyproject.toml +67 -0
- researchharness-0.0.36/requirements.txt +8 -0
- researchharness-0.0.36/researchharness/__init__.py +17 -0
- researchharness-0.0.36/researchharness/runtime.py +59 -0
- researchharness-0.0.36/researchharness.egg-info/PKG-INFO +1086 -0
- researchharness-0.0.36/researchharness.egg-info/SOURCES.txt +77 -0
- researchharness-0.0.36/researchharness.egg-info/dependency_links.txt +1 -0
- researchharness-0.0.36/researchharness.egg-info/entry_points.txt +4 -0
- researchharness-0.0.36/researchharness.egg-info/requires.txt +8 -0
- researchharness-0.0.36/researchharness.egg-info/top_level.txt +9 -0
- researchharness-0.0.36/run_agent.py +7 -0
- researchharness-0.0.36/run_frontend.py +56 -0
- researchharness-0.0.36/run_server.py +84 -0
- researchharness-0.0.36/setup.cfg +4 -0
- researchharness-0.0.36/tests/test_agent_extension_checks.py +375 -0
- researchharness-0.0.36/tests/test_console_utils.py +133 -0
- researchharness-0.0.36/tests/test_edge_case_checks.py +2002 -0
- researchharness-0.0.36/tests/test_end_to_end_glob_grep.py +182 -0
- researchharness-0.0.36/tests/test_end_to_end_multitool.py +243 -0
- researchharness-0.0.36/tests/test_end_to_end_pdf_image.py +256 -0
- researchharness-0.0.36/tests/test_end_to_end_terminal.py +235 -0
- researchharness-0.0.36/tests/test_end_to_end_write_edit.py +241 -0
- researchharness-0.0.36/tests/test_extra_tools.py +119 -0
- researchharness-0.0.36/tests/test_frontend_checks.py +258 -0
- researchharness-0.0.36/tests/test_local_tools_validation.py +295 -0
- researchharness-0.0.36/tests/test_openai_api_checks.py +478 -0
- researchharness-0.0.36/tests/test_support.py +216 -0
- researchharness-0.0.36/tests/test_tool_availability.py +524 -0
- researchharness-0.0.36/tests/test_toolchain_validation.py +166 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Required
|
|
2
|
+
API_KEY="your_openai_compatible_key" # API key for your OpenAI-compatible LLM provider.
|
|
3
|
+
API_BASE="https://your-openai-compatible-endpoint/v1" # Base URL for the OpenAI-compatible chat-completions endpoint.
|
|
4
|
+
MODEL_NAME="gpt-5.5" # Main model used by the agent.
|
|
5
|
+
SERPER_KEY="your_serper_key" # https://serper.dev/
|
|
6
|
+
JINA_KEY="your_jina_key" # https://jina.ai/
|
|
7
|
+
MINERU_TOKEN="your_mineru_token" # https://mineru.net/
|
|
8
|
+
|
|
9
|
+
# Optional
|
|
10
|
+
WORKSPACE_ROOT="./workspace" # Default local workspace root when --workspace-root is not provided.
|
|
11
|
+
MAX_LLM_CALL_PER_RUN=100 # Maximum chat-completions calls allowed in one agent run.
|
|
12
|
+
MAX_AGENT_ROUNDS=100 # Maximum ReAct loop rounds before forced termination.
|
|
13
|
+
MAX_AGENT_RUNTIME_SECONDS=9000 # Maximum wall-clock runtime per agent run.
|
|
14
|
+
LLM_TIMEOUT_SECONDS=600 # Timeout for each chat-completions request.
|
|
15
|
+
WEBFETCH_TIMEOUT_SECONDS=180 # Overall timeout for one WebFetch tool call.
|
|
16
|
+
WEBFETCH_MAX_CHARS=30000 # Hard maximum characters returned by one WebFetch call.
|
|
17
|
+
LLM_MAX_OUTPUT_TOKENS=10000 # Maximum output tokens requested from the main model.
|
|
18
|
+
MAX_INPUT_TOKENS=320000 # Maximum input-token budget used for runtime token accounting.
|
|
19
|
+
LLM_MAX_RETRIES=10 # Maximum retries for transient LLM API failures.
|
|
20
|
+
TEMPERATURE=0.6 # Main model sampling temperature.
|
|
21
|
+
TOP_P=0.95 # Main model nucleus-sampling top_p.
|
|
22
|
+
PRESENCE_PENALTY=1.1 # Main model presence penalty when supported by the provider.
|
|
23
|
+
AUTO_COMPACT_TRIGGER_TOKENS="128k" # Context size threshold that triggers automatic memory compaction.
|
|
24
|
+
IMAGE_PART_TOKEN_ESTIMATE=1536 # Token estimate used for each runtime image_url content part.
|
|
25
|
+
LLM_IMAGE_MAX_EDGE=1568 # Maximum image edge length sent to multimodal LLMs.
|
|
26
|
+
LLM_IMAGE_MAX_BYTES=524288 # Maximum compressed image payload size sent to multimodal LLMs.
|
|
27
|
+
LLM_IMAGE_JPEG_QUALITY=85 # Initial JPEG quality for runtime image compression.
|
|
28
|
+
DEBUG_AGENT=false # Print verbose agent-loop debug logs.
|
|
29
|
+
DEBUG_SEARCH=false # Print verbose WebSearch debug logs.
|
|
30
|
+
DEBUG_SCHOLAR=false # Print verbose ScholarSearch debug logs.
|
|
31
|
+
DEBUG_VISIT=false # Print verbose WebFetch debug logs.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Wanghan Xu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
include LICENSE
|
|
2
|
+
include README.md
|
|
3
|
+
include VERSION
|
|
4
|
+
include requirements.txt
|
|
5
|
+
include .env.example
|
|
6
|
+
recursive-include docs *.md
|
|
7
|
+
recursive-include frontend/static *
|
|
8
|
+
recursive-include benchmarks *.md *.png
|
|
9
|
+
global-exclude local_*
|
|
10
|
+
global-exclude __pycache__
|
|
11
|
+
global-exclude *.py[cod]
|