github Python re-analysis due unconfirmed MCP

weihuaguo270-ops/handwritten-react-agent

github

Production-grade ReAct Agent framework: dual implementation — handcrafted runtime for deep understanding, LangGraph for production deployment. 14 modules incl. RAG, MCP, HITL, multi-agent orchestration.

maintainer
weihuaguo270-ops
license
NOASSERTION
first seen
2026-07-07
last seen
2026-07-12
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 0 tools
transport stdio counts 0 tools · 0 res · 0 prompts permission surface via code analysis

No tools enumerated yet for this server.

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit eaf859d · analyzer v30 · 2w ago

danger signals3

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 185

filesystem 70

  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/demo_record_check.py :4 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/demos/demo_context.py :9 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/demos/demo_docs_troubleshoot.py :7 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/demos/demo_expense_workflow.py :14 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/demos/demo_mcp_mock.py :15 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/demos/demo_rag.py :12 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/demos/demo_workflow.py :7 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/agent_to_eval.py :51 with open(trajectory_path, "r", encoding="utf-8") as f:
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/harness_closed_loop.py :40 with open(path, encoding="utf-8") as f:
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/publish_eval_snapshot.py :19 import shutil
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_daily_smoke.py :19 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_deploy_smoke.py :12 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_docs_troubleshoot_eval.py :8 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_execution_http_smoke.py :11 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_execution_suite.py :16 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_failure_flywheel.py :18 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_fault_eval.py :7 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_flywheel_closed_loop.py :16 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_git_docs_eval.py :6 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_production_eval.py :6 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_public_benchmark.py :22 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_public_rag_benchmark.py :21 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_reliability_harness.py :19 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_reliability_live.py :21 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_step_watcher_evidence.py :9 from pathlib import Path
  • fs weihuaguo270-ops-react-agent-eaf859d/experiments/langgraph/graph/dashboard.py :65 with open(f, "r", encoding="utf-8") as fh:
  • fs weihuaguo270-ops-react-agent-eaf859d/experiments/langgraph/graph/eval.py :126 with open(path, "w", encoding="utf-8") as f:
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/experiments/langgraph/graph/harness/recorder.py :168 with open(filepath, "w", encoding="utf-8") as f:
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/experiments/langgraph/graph/harness/replay.py :55 with open(f, encoding="utf-8") as fh:
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/experiments/langgraph/graph/harness/sandbox.py :206 with open(_RUNNER_PATH, "w", encoding="utf-8") as f:
  • fs weihuaguo270-ops-react-agent-eaf859d/experiments/langgraph/graph/llm.py :27 with open(CONFIG_FILE, encoding="utf-8") as f:
  • fs weihuaguo270-ops-react-agent-eaf859d/experiments/langgraph/graph/memory.py :52 with open(self.save_path, "r", encoding="utf-8") as f:
  • fs weihuaguo270-ops-react-agent-eaf859d/experiments/langgraph/graph/rag.py :39 with open(_RAG_INDEX_PATH, encoding="utf-8") as f:
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/fixtures/docs_troubleshoot/mcp_trace_server.py :7 from pathlib import Path
  • fs weihuaguo270-ops-react-agent-eaf859d/react_cli.py :146 with open(path) as f:
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/apps/docs_troubleshoot/eval_fault.py :6 from pathlib import Path
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/apps/docs_troubleshoot/eval_git_docs.py :6 from pathlib import Path
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/apps/docs_troubleshoot/eval_golden.py :14 from pathlib import Path
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/apps/docs_troubleshoot/eval_production.py :6 from pathlib import Path
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/apps/docs_troubleshoot/index.py :7 from pathlib import Path
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/apps/docs_troubleshoot/ingest.py :9 from pathlib import Path
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/apps/docs_troubleshoot/trace_backend.py :8 from pathlib import Path
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/apps/expense/offline_answer.py :7 from pathlib import Path
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/dashboard/server.py :38 with open(f, encoding='utf-8') as fh:
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/eval/dataset.py :159 with open(filepath, encoding="utf-8") as f:
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/eval/execution_scorer.py :47 with open(filepath, encoding="utf-8") as f:
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/eval/public_benchmark.py :35 with open(filepath, encoding="utf-8") as f:
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/eval/public_rag_benchmark.py :35 with open(filepath, encoding="utf-8") as f:
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/eval/report.py :204 with open(filepath, "w", encoding="utf-8") as f:
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/eval/runner.py :85 with open(latest_file, encoding="utf-8") as fh:
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/src/react_agent/harness/recorder.py :208 with open(filepath, "w", encoding="utf-8") as f:
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/src/react_agent/harness/replay.py :32 with open(f, encoding="utf-8") as fh:
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/src/react_agent/harness/sandbox.py :155 with open(_RUNNER_PATH, "w", encoding="utf-8") as f:
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/src/react_agent/harness/schema.py :38 with open(path, encoding="utf-8") as f:
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/llm.py :65 with open(path, encoding="utf-8-sig") as f:
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/mcp_config.py :56 with open(path, encoding="utf-8") as f:
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/memory.py :60 with open(self.save_path, "r", encoding="utf-8") as f:
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/rag.py :109 with open(file_path, "r", encoding="utf-8", errors="ignore") as f:
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/react_loop.py :628 with open(config_path, encoding="utf-8") as f:
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/safety/permissions.py :157 ("execute_python", _code_contains("shutil.rmtree"), PermissionLevel.DENY),
  • fs weihuaguo270-ops-react-agent-eaf859d/src/react_agent/tools/execute_python.py :75 os.unlink(tmp_path)
  • fs weihuaguo270-ops-react-agent-eaf859d/test_all.py :211 with open(path, encoding="utf-8") as f:
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/tests/_load_eval_script.py :5 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/tests/test_docs_troubleshoot_p2.py :6 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/tests/test_eval_engine_contract.py :71 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/tests/test_harness_schema.py :24 with open(FIXTURE, encoding="utf-8") as f:
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/tests/test_rag_keyword.py :5 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/tests/test_step_watcher_bridge.py :52 with open(path, encoding="utf-8") as f:
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/tests/test_step_watcher_golden_e2e.py :7 from pathlib import Path
  • fs (weak) weihuaguo270-ops-react-agent-eaf859d/tests/test_tdebug_eval_contract.py :6 from pathlib import Path

shell / exec 23

  • shell (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/publish_eval_snapshot.py :20 import subprocess
  • shell (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_daily_smoke.py :16 import subprocess
  • shell (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_execution_suite.py :13 import subprocess
  • shell (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_failure_flywheel.py :15 import subprocess
  • shell (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_flywheel_closed_loop.py :13 import subprocess
  • shell (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_public_benchmark.py :19 import subprocess
  • shell (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_public_rag_benchmark.py :18 import subprocess
  • shell (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_reliability_harness.py :15 import subprocess
  • shell (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_reliability_live.py :18 import subprocess
  • shell (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_step_watcher_evidence.py :6 import subprocess
  • shell (weak) weihuaguo270-ops-react-agent-eaf859d/experiments/langgraph/graph/harness/sandbox.py :16 import subprocess
  • shell weihuaguo270-ops-react-agent-eaf859d/experiments/langgraph/graph/mcp.py :15 import subprocess
  • shell weihuaguo270-ops-react-agent-eaf859d/react_cli.py :127 if x == "/clear": os.system("cls" if os.name == "nt" else "clear")
  • shell weihuaguo270-ops-react-agent-eaf859d/src/react_agent/apps/docs_troubleshoot/ingest.py :7 import subprocess
  • shell weihuaguo270-ops-react-agent-eaf859d/src/react_agent/dashboard/kill_old.py :2 import subprocess
  • shell weihuaguo270-ops-react-agent-eaf859d/src/react_agent/dashboard/server.py :3 import subprocess
  • shell weihuaguo270-ops-react-agent-eaf859d/src/react_agent/eval.py :12 import subprocess, sys, re, json, os
  • shell weihuaguo270-ops-react-agent-eaf859d/src/react_agent/eval/runner.py :7 import subprocess
  • shell (weak) weihuaguo270-ops-react-agent-eaf859d/src/react_agent/harness/sandbox.py :22 import subprocess
  • shell weihuaguo270-ops-react-agent-eaf859d/src/react_agent/mcp_client.py :17 import subprocess
  • shell weihuaguo270-ops-react-agent-eaf859d/src/react_agent/tools/dashboard.py :3 import subprocess
  • shell weihuaguo270-ops-react-agent-eaf859d/src/react_agent/tools/execute_python.py :15 import subprocess
  • shell (weak) weihuaguo270-ops-react-agent-eaf859d/tests/test_eval_engine_contract.py :70 import subprocess

network 14

  • net (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_deploy_smoke.py :10 import urllib.error
  • net weihuaguo270-ops-react-agent-eaf859d/experiments/langgraph/graph/rag.py :80 import urllib.request
  • net weihuaguo270-ops-react-agent-eaf859d/experiments/langgraph/graph/tools.py :68 import urllib.request
  • net weihuaguo270-ops-react-agent-eaf859d/src/react_agent/apps/docs_troubleshoot/evidence.py :7 import urllib.error
  • net weihuaguo270-ops-react-agent-eaf859d/src/react_agent/eval/http_execution.py :5 import urllib.error
  • net weihuaguo270-ops-react-agent-eaf859d/src/react_agent/llm.py :31 from urllib import request as req
  • net weihuaguo270-ops-react-agent-eaf859d/src/react_agent/orchestrator.py :6 import json, urllib.request, sys, os
  • net weihuaguo270-ops-react-agent-eaf859d/src/react_agent/react_loop.py :25 from urllib import request as req
  • net weihuaguo270-ops-react-agent-eaf859d/src/react_agent/server/app.py :10 from urllib.parse import urlparse
  • net weihuaguo270-ops-react-agent-eaf859d/src/react_agent/tools/fetch_page.py :4 from urllib import request as req
  • net weihuaguo270-ops-react-agent-eaf859d/src/react_agent/tools/web_search.py :3 from urllib import request as req
  • net (weak) weihuaguo270-ops-react-agent-eaf859d/tests/test_execution_http_smoke.py :8 import urllib.error
  • net (weak) weihuaguo270-ops-react-agent-eaf859d/tests/test_expense_app.py :33 import urllib.request
  • net (weak) weihuaguo270-ops-react-agent-eaf859d/tests/test_server_http.py :8 import urllib.error

secrets 8

  • secrets (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/publish_eval_snapshot.py :135 os.environ.get("DEEPSEEK_API_KEY")
  • secrets (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_daily_smoke.py :208 os.environ.get("DEEPSEEK_API_KEY") or os.environ.get("OPENAI_API_KEY")
  • secrets (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_execution_suite.py :76 if not (os.environ.get("DEEPSEEK_API_KEY") or os.environ.get("OPENAI_API_KEY")):
  • secrets (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_public_benchmark.py :83 if not (os.environ.get("DEEPSEEK_API_KEY") or os.environ.get("OPENAI_API_KEY")):
  • secrets (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_public_rag_benchmark.py :101 if not (os.environ.get("DEEPSEEK_API_KEY") or os.environ.get("OPENAI_API_KEY")):
  • secrets (weak) weihuaguo270-ops-react-agent-eaf859d/examples/eval/run_reliability_live.py :407 if not (os.environ.get("DEEPSEEK_API_KEY") or os.environ.get("OPENAI_API_KEY")):
  • secrets (weak) weihuaguo270-ops-react-agent-eaf859d/tests/ci_verify_integration.py :26 if os.environ.get("DEEPSEEK_API_KEY") or os.environ.get("JUDGE_API_KEY"):
  • secrets (weak) weihuaguo270-ops-react-agent-eaf859d/tests/test_real_llm.py :20 return bool(os.environ.get("DEEPSEEK_API_KEY"))

declared dependencies 12

  • numpy@>=1.24,<3
  • scikit-learn@>=1.3,<2
  • sentence-transformers@>=2.2,<4
  • langgraph@>=0.2.28,<0.5
  • langchain-core@>=0.3,<0.4
  • langchain-openai@>=0.2,<0.4
  • pytest@>=9.0.3,<10
  • pytest-cov@>=4.0,<7
  • flake8@>=6.0,<8
  • react-agent@*
  • mypy@>=1.8
  • pip-audit@>=2.6