github Python analyzed 28b6719

Hugin-Z/trip-decider

github

Evidence-constrained travel planning agent that verifies real-world facts before they enter an itinerary.

maintainer
Hugin-Z
licence
MIT
first seen
2026-08-07
last seen
2026-08-07
releases · 30d
0
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged dynamic code execution in Hugin-Z/trip-decider
  2. HIGH code analysis flagged dynamic code execution in Hugin-Z/trip-decider
capabilities 0 tools
transport 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 28b6719 · analyzer v33 · 2w ago

danger signals1

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

code files: 104

filesystem 61

  • fs (weak) Hugin-Z-trip-decider-28b6719/scripts/smoke_action_loop.py :25 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/scripts/smoke_live.py :18 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/scripts/soak_full_loop.py :41 from pathlib import Path
  • fs Hugin-Z-trip-decider-28b6719/src/trip_decider/adapters/contracts.py :13 from pathlib import Path
  • fs Hugin-Z-trip-decider-28b6719/src/trip_decider/agent_actions.py :17 from pathlib import Path
  • fs Hugin-Z-trip-decider-28b6719/src/trip_decider/amap_parsers.py :18 from pathlib import Path
  • fs Hugin-Z-trip-decider-28b6719/src/trip_decider/destination_pool.py :21 from pathlib import Path
  • fs Hugin-Z-trip-decider-28b6719/src/trip_decider/evidence_broker.py :18 from pathlib import Path
  • fs Hugin-Z-trip-decider-28b6719/src/trip_decider/intercity_rail.py :162 with self._opener.open(
  • fs Hugin-Z-trip-decider-28b6719/src/trip_decider/mcp_server.py :11 from pathlib import Path
  • fs Hugin-Z-trip-decider-28b6719/src/trip_decider/product_web.py :14 from pathlib import Path
  • fs Hugin-Z-trip-decider-28b6719/src/trip_decider/runtime_owner.py :10 from pathlib import Path
show 28 more
  • fs Hugin-Z-trip-decider-28b6719/src/trip_decider/simple_live.py :16 import shutil
  • fs Hugin-Z-trip-decider-28b6719/src/trip_decider/travel_agent.py :18 from pathlib import Path
  • fs Hugin-Z-trip-decider-28b6719/src/trip_decider/trip_application.py :17 from pathlib import Path
  • fs Hugin-Z-trip-decider-28b6719/src/trip_decider/trip_services.py :11 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/__init__.py :6 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/characterization_support.py :24 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/invariant_support.py :20 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_action_loop_crash_recovery.py :18 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_action_watchdog_threshold.py :33 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_capability_a_v0.py :14 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_degradation_chain_is_at_the_entry.py :25 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_every_error_carries_a_next_call.py :28 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_evidence_broker.py :8 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_evidence_core.py :11 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_guided_discovery_recovery.py :27 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_host_call_protocol_relief.py :22 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i11_import_has_no_disk_side_effect.py :17 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i12_all_domains.py :29 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i12_validated_evidence_never_crashes_planner.py :26 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i13_mcp_calls_are_bounded.py :21 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i14_no_sync_collection_in_tools.py :27 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i15_shared_state_declares_concurrency.py :36 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i1_no_persisted_display_status.py :9 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i2_token_matches_support.py :12 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i3a_next_action_required.py :9 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i5_freshness_is_read_time.py :15 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i6_single_token_implementation.py :10 from pathlib import Path
  • fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_ledger.py :20 from pathlib import Path

21 more not shown — this panel samples each group; the count above is the real total.

shell / exec 3

  • shell (weak) Hugin-Z-trip-decider-28b6719/tests/test_guided_discovery_recovery.py :28 import subprocess
  • shell (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i11_import_has_no_disk_side_effect.py :13 import subprocess
  • shell (weak) Hugin-Z-trip-decider-28b6719/tests/test_mcp_app_views.py :8 import subprocess

network 5

  • net Hugin-Z-trip-decider-28b6719/src/trip_decider/intercity_rail.py :8 import socket
  • net Hugin-Z-trip-decider-28b6719/src/trip_decider/product_web.py :16 from urllib.parse import parse_qs, unquote, urlparse
  • net Hugin-Z-trip-decider-28b6719/src/trip_decider/simple_live.py :21 import urllib.error
  • net (weak) Hugin-Z-trip-decider-28b6719/tests/test_mcp_adapter.py :10 from urllib.request import Request, urlopen
  • net (weak) Hugin-Z-trip-decider-28b6719/tests/test_product_web.py :410 self.assertNotIn("urllib.request", source)

secrets 5

  • secrets (weak) Hugin-Z-trip-decider-28b6719/scripts/smoke_action_loop.py :107 if not os.environ.get("AMAP_WEB_SERVICE_KEY"):
  • secrets (weak) Hugin-Z-trip-decider-28b6719/scripts/smoke_live.py :90 if not os.environ.get("AMAP_WEB_SERVICE_KEY"):
  • secrets (weak) Hugin-Z-trip-decider-28b6719/scripts/soak_full_loop.py :430 if not os.environ.get("AMAP_WEB_SERVICE_KEY"):
  • secrets Hugin-Z-trip-decider-28b6719/src/trip_decider/product_web.py :130 js_key = os.environ.get("AMAP_JS_API_KEY", "").strip()
  • secrets Hugin-Z-trip-decider-28b6719/src/trip_decider/simple_live.py :334 credential = os.environ.get("AMAP_WEB_SERVICE_KEY")

declared dependencies 6

  • mcp@==2.0.0
  • PyYAML@==6.0.3
  • jsonschema@==4.26.0
  • pyright@==1.1.411
  • pytest@==9.0.2
  • ruff@==0.16.1