Repository Analysis

GreyDGL/PentestGPT

Automated Penetration Testing Agentic Framework Powered by Large Language Models

21.4 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of GreyDGL/PentestGPT, a Python project with 14,239 GitHub stars. SynthScan v2.0 examined 20,592 lines of code across 146 source files, recording 373 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 21.4 places this repository in the Moderate AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

21.4
Adjusted Score
21.4
Raw Score
100%
Time Factor
2026-07-14
Last Push
14.2K
Stars
Python
Language
20.6K
Lines of Code
146
Files
373
Pattern Hits
2026-07-14
Scan Date
0.03
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 4MEDIUM 15LOW 354

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 373 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hyper-Verbose Identifiers217 hits · 242 pts
SeverityFileLineSnippetContext
LOWpentestgpt_agent/tests/test_episode.py135async def test_successful_episode_is_recoverable_from_its_trace(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_episode.py172async def test_provider_crash_leaves_a_complete_failure_trace(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_episode.py195async def test_reasoning_and_raw_provider_payloads_are_never_persisted(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_episode.py227async def test_operational_events_and_terminal_result_share_one_ordered_trace(CODE
LOWpentestgpt_agent/tests/test_episode.py264async def test_episode_trace_and_wrapper_monitor_accept_live_operational_events(CODE
LOWpentestgpt_agent/tests/test_episode.py326async def test_missing_terminal_event_is_an_explicit_episode_failure(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_episode.py349async def test_trace_load_preserves_events_before_a_torn_jsonl_tail(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_episode.py372async def test_trace_records_the_provider_configuration_that_shaped_the_episode(CODE
LOWpentestgpt_agent/tests/test_episode.py414def test_claude_safety_rejection_has_a_typed_informative_failure() -> None:CODE
LOWpentestgpt_agent/tests/test_episode.py448def test_existing_provider_stop_reasons_remain_typed() -> None:CODE
LOWpentestgpt_agent/tests/test_plan.py66def test_valid_supervisor_decision_atomically_adds_and_leases_one_task(CODE
LOWpentestgpt_agent/tests/test_plan.py104def test_discovered_url_path_is_inside_its_authorized_origin(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_plan.py141def test_url_scope_rejects_targets_outside_the_authorized_origin(CODE
LOWpentestgpt_agent/tests/test_plan.py183def test_url_subtree_scope_rejects_prefix_and_ambiguous_path_escapes(CODE
LOWpentestgpt_agent/tests/test_plan.py214def test_supervisor_cannot_create_a_speculative_task_backlog(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_plan.py241def test_new_task_must_be_selected_immediately_instead_of_deferred(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_plan.py307def test_unknown_basis_observation_is_rejected(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_plan.py336def test_basis_producer_must_be_a_dependency(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_plan.py402def test_exploit_requires_the_latest_test_evidence_on_the_same_surface(CODE
LOWpentestgpt_agent/tests/test_plan.py478def test_exploit_provenance_requires_the_exact_test_target_including_query(CODE
LOWpentestgpt_agent/tests/test_plan.py522def test_supervisor_cannot_finish_while_work_is_open(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_plan.py566def test_finish_requires_an_explicit_existing_canonical_basis(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_plan.py625def test_finish_basis_must_come_from_a_completed_task(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_plan.py694def test_test_task_cannot_embed_exploitation_as_its_objective(CODE
LOWpentestgpt_agent/tests/test_plan.py727def test_plan_text_and_reference_collections_are_bounded(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_local_benchmark.py185async def test_local_template_injection_benchmark_reaches_a_grounded_flag(CODE
LOWpentestgpt_agent/tests/test_dependency.py8def test_unified_agent_is_loaded_from_the_external_dependency() -> None:CODE
LOWpentestgpt_agent/tests/test_loop.py37def _latest_observation_basis(prompt: str) -> list[str]:CODE
LOWpentestgpt_agent/tests/test_loop.py539async def test_one_grounded_task_can_drive_a_run_to_completion(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_loop.py602async def test_max_turn_failure_after_an_action_is_atomically_terminal(CODE
LOWpentestgpt_agent/tests/test_loop.py667async def test_provider_failure_before_actions_retries_once_in_the_same_run(CODE
LOWpentestgpt_agent/tests/test_loop.py722async def test_malformed_result_after_an_action_is_a_terminal_validation_failure(CODE
LOWpentestgpt_agent/tests/test_loop.py773async def test_uncaptured_done_evidence_degrades_to_grounded_progress_and_retries(CODE
LOWpentestgpt_agent/tests/test_loop.py833async def test_reopening_a_completed_run_does_not_invoke_a_provider(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_loop.py900async def test_restart_commits_a_completed_executor_trace_without_replaying_it(CODE
LOWpentestgpt_agent/tests/test_loop.py982async def test_restart_retries_a_failed_executor_trace_only_when_it_has_no_actions(CODE
LOWpentestgpt_agent/tests/test_loop.py1068async def test_restart_recovers_a_terminal_executor_event_when_output_write_was_interrupted(CODE
LOWpentestgpt_agent/tests/test_loop.py1153async def test_restart_retries_when_crash_created_only_the_executor_episode_directory(CODE
LOWpentestgpt_agent/tests/test_loop.py1221async def test_restart_commits_a_completed_supervisor_trace_without_replaying_it(CODE
LOWpentestgpt_agent/tests/test_loop.py1281async def test_invalid_supervisor_plan_retries_in_a_new_logged_episode(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_loop.py1325async def test_exhausted_supervisor_contract_failures_settle_the_run(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_loop.py1376async def test_decision_limit_atomically_settles_the_run(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_loop.py1424async def test_known_structured_transport_failure_is_recovered_without_replaying_actions(CODE
LOWpentestgpt_agent/tests/test_loop.py1470async def test_exact_result_at_max_turns_is_recovered_without_replaying_actions(CODE
LOWpentestgpt_agent/tests/test_loop.py1516async def test_earlier_grounded_result_is_recovered_after_ungrounded_retry(CODE
LOWpentestgpt_agent/tests/test_loop.py1560async def test_decision_budget_is_persistent_across_process_restart(tmp_path: Path) -> None:CODE
LOWpentestgpt_agent/tests/test_loop.py1640async def test_restart_settles_a_malformed_trace_without_leaving_an_active_lease(CODE
LOWpentestgpt_agent/tests/test_execution.py18def test_transport_recovery_skips_a_later_incomplete_done_candidate() -> None:CODE
LOWpentestgpt_agent/tests/test_execution.py56def test_transport_recovery_accepts_only_an_exact_executor_contract() -> None:CODE
LOWpentestgpt_agent/tests/test_execution.py110def test_executor_cannot_complete_from_an_uncaptured_evidence_claim() -> None:CODE
LOWpentestgpt_agent/tests/test_execution.py153def test_executor_can_complete_by_exactly_reusing_same_task_evidence() -> None:CODE
LOWpentestgpt_agent/tests/test_execution.py202def test_executor_cannot_reuse_evidence_from_another_task() -> None:CODE
LOWpentestgpt_agent/tests/test_execution.py247def test_paraphrased_prior_evidence_degrades_without_creating_an_observation() -> None:CODE
LOWpentestgpt_agent/tests/test_execution.py291def test_actionful_attempt_cannot_degrade_an_unresolved_prior_evidence_quote() -> None:CODE
LOWpentestgpt_agent/tests/test_execution.py338def test_whitespace_equivalent_text_is_not_an_exact_evidence_quote() -> None:CODE
LOWpentestgpt_agent/tests/test_execution.py379def test_crlf_transport_normalization_resolves_to_the_exact_receipt_slice() -> None:CODE
LOWpentestgpt_agent/tests/test_execution.py419def test_exact_ordered_lines_widen_to_one_contiguous_receipt_span() -> None:CODE
LOWpentestgpt_agent/tests/test_execution.py467def test_line_span_widening_rejects_reordered_receipt_lines() -> None:CODE
LOWpentestgpt_agent/tests/test_execution.py506def test_exact_unique_line_envelope_recovers_a_rich_reordered_quote() -> None:CODE
LOWpentestgpt_agent/tests/test_execution.py568def test_canonical_execution_fields_have_conservative_size_limits() -> None:CODE
157 more matches not shown…
Unused Imports85 hits · 76 pts
SeverityFileLineSnippetContext
LOWpentestgpt_legacy/smoke_test.py13CODE
LOWpentestgpt_legacy/config.py9CODE
LOWpentestgpt_legacy/config.py11CODE
LOWpentestgpt_legacy/config.py11CODE
LOWpentestgpt_legacy/test_connection.py8CODE
LOWpentestgpt_legacy/__init__.py9CODE
LOWpentestgpt_legacy/main.py10CODE
LOWpentestgpt_legacy/llm/config.py9CODE
LOWpentestgpt_legacy/llm/registry.py14CODE
LOWpentestgpt_legacy/llm/client.py10CODE
LOWpentestgpt_legacy/llm/__init__.py11CODE
LOWpentestgpt_legacy/llm/__init__.py12CODE
LOWpentestgpt_legacy/llm/__init__.py12CODE
LOWpentestgpt_legacy/llm/__init__.py13CODE
LOWpentestgpt_legacy/llm/__init__.py13CODE
LOWpentestgpt_legacy/llm/__init__.py13CODE
LOWpentestgpt_legacy/llm/__init__.py13CODE
LOWpentestgpt_legacy/llm/factory.py3CODE
LOWpentestgpt_legacy/llm/base.py9CODE
LOWpentestgpt_legacy/llm/providers/openai_compatible.py12CODE
LOWpentestgpt_legacy/llm/providers/__init__.py3CODE
LOWpentestgpt_legacy/llm/providers/__init__.py4CODE
LOWpentestgpt_legacy/llm/providers/__init__.py5CODE
LOWpentestgpt_legacy/llm/providers/anthropic_provider.py8CODE
LOWpentestgpt_legacy/llm/providers/gemini_provider.py9CODE
LOWpentestgpt_legacy/utils/pentest_gpt.py15CODE
LOWpentestgpt_agent/tests/test_local_benchmark.py1CODE
LOWpentestgpt_agent/tests/support/local_target.py1CODE
LOWpentestgpt_agent/tests/live/test_local_model.py1CODE
LOWpentestgpt_agent/src/pentestgpt_agent/plan.py3CODE
LOWpentestgpt_agent/src/pentestgpt_agent/trace.py3CODE
LOWpentestgpt_agent/src/pentestgpt_agent/trial.py3CODE
LOWpentestgpt_agent/src/pentestgpt_agent/execution.py3CODE
LOWpentestgpt_agent/src/pentestgpt_agent/audit.py3CODE
LOWpentestgpt_agent/src/pentestgpt_agent/memory.py3CODE
LOWpentestgpt_agent/src/pentestgpt_agent/identifiers.py3CODE
LOWpentestgpt_agent/src/pentestgpt_agent/agents.py3CODE
LOWpentestgpt_agent/src/pentestgpt_agent/loop.py3CODE
LOWunified_agent/task.py3CODE
LOWunified_agent/skills.py10CODE
LOWunified_agent/events.py3CODE
LOWunified_agent/tools.py15CODE
LOWunified_agent/__init__.py7CODE
LOWunified_agent/__init__.py7CODE
LOWunified_agent/__init__.py7CODE
LOWunified_agent/__init__.py8CODE
LOWunified_agent/__init__.py8CODE
LOWunified_agent/__init__.py8CODE
LOWunified_agent/__init__.py8CODE
LOWunified_agent/__init__.py8CODE
LOWunified_agent/__init__.py8CODE
LOWunified_agent/__init__.py8CODE
LOWunified_agent/__init__.py8CODE
LOWunified_agent/__init__.py8CODE
LOWunified_agent/__init__.py8CODE
LOWunified_agent/__init__.py8CODE
LOWunified_agent/__init__.py21CODE
LOWunified_agent/__init__.py21CODE
LOWunified_agent/__init__.py21CODE
LOWunified_agent/__init__.py21CODE
25 more matches not shown…
Decorative Section Separators10 hits · 30 pts
SeverityFileLineSnippetContext
MEDIUMpyproject.toml63# ============================================================================COMMENT
MEDIUMpyproject.toml65# ============================================================================COMMENT
MEDIUMpyproject.toml77# ============================================================================COMMENT
MEDIUMpyproject.toml79# ============================================================================COMMENT
MEDIUMpyproject.toml115# ============================================================================COMMENT
MEDIUMpyproject.toml117# ============================================================================COMMENT
MEDIUMpyproject.toml131# ============================================================================COMMENT
MEDIUMpyproject.toml133# ============================================================================COMMENT
MEDIUMtests/conftest.py5# =============================================================================COMMENT
MEDIUMtests/conftest.py7# =============================================================================COMMENT
Modern Structural Boilerplate15 hits · 15 pts
SeverityFileLineSnippetContext
LOWpentestgpt_legacy/config.py22__all__ = [CODE
LOWpentestgpt_legacy/__init__.py11__all__ = ["__version__"]CODE
LOWpentestgpt_legacy/llm/__init__.py15__all__ = [CODE
LOWpentestgpt_legacy/llm/providers/__init__.py7__all__ = ["AnthropicProvider", "GeminiProvider", "OpenAICompatibleProvider"]CODE
LOWpentestgpt_agent/tests/support/local_target.py94__all__ = ["LocalTarget", "local_template_target"]CODE
LOWpentestgpt_agent/src/pentestgpt_agent/plan.py335__all__ = [CODE
LOWpentestgpt_agent/src/pentestgpt_agent/trace.py427__all__ = [CODE
LOWpentestgpt_agent/src/pentestgpt_agent/trial.py366__all__ = ["TrialConfig", "main", "run_trial"]CODE
LOWpentestgpt_agent/src/pentestgpt_agent/execution.py385__all__ = [CODE
LOWpentestgpt_agent/src/pentestgpt_agent/audit.py447__all__ = ["audit_run", "main"]CODE
LOWpentestgpt_agent/src/pentestgpt_agent/memory.py986__all__ = [CODE
LOWpentestgpt_agent/src/pentestgpt_agent/identifiers.py18__all__ = ["validate_opaque_id"]CODE
LOWpentestgpt_agent/src/pentestgpt_agent/agents.py628__all__ = [CODE
LOWpentestgpt_agent/src/pentestgpt_agent/loop.py314__all__ = ["PentestLoop"]CODE
LOWunified_agent/__init__.py41__all__ = [CODE
Cross-Language Confusion3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHtests/docker/test_container_health.py89 result = self._exec_in_container(running_container, "test -d /workspace && echo ok")CODE
HIGHtests/docker/test_container_health.py125 running_container, "which nc || which netcat || which ncat"CODE
HIGHtests/docker/test_container_health.py168 result = self._exec_in_container(running_container, "which claude || echo 'not found'")CODE
Redundant / Tautological Comments7 hits · 13 pts
SeverityFileLineSnippetContext
LOWsetup.sh29# Check if Docker is installedCOMMENT
LOWsetup.sh36# Check if Docker is runningCOMMENT
LOWsetup.sh45# Check if Claude Code is installed (not strictly required since it's in Docker)COMMENT
LOWfix-workspace-permissions.sh14# Check if workspace existsCOMMENT
LOWtests/docker/test_container_health.py46 # Check if container is runningCOMMENT
LOWscripts/entrypoint.sh30 # Check if template existsCOMMENT
LOWscripts/entrypoint.sh61 # Check if CCR is running by testing the portCOMMENT
Excessive Try-Catch Wrapping10 hits · 10 pts
SeverityFileLineSnippetContext
LOWpentestgpt_legacy/smoke_test.py54 except Exception as e:CODE
LOWpentestgpt_legacy/main.py135 except Exception as e:CODE
LOWpentestgpt_legacy/utils/pentest_gpt.py161 except Exception as e:CODE
LOWpentestgpt_legacy/utils/pentest_gpt.py425 except Exception as e:CODE
LOWpentestgpt_agent/src/pentestgpt_agent/trace.py257 except Exception as exc: # provider failures become a durable failed resultCODE
LOWpentestgpt_agent/src/pentestgpt_agent/trial.py170 except Exception as exc:CODE
LOWpentestgpt_agent/src/pentestgpt_agent/trial.py188 except Exception:CODE
LOWpentestgpt_agent/src/pentestgpt_agent/trial.py355 except Exception:CODE
LOWunified_agent/agent.py198 except Exception as e:CODE
LOWunified_agent/backends/codex.py288 except Exception as e: # JSON-RPC / transport errors from the SDKCODE
Fake / Example Data7 hits · 10 pts
SeverityFileLineSnippetContext
LOWtests/test_agent.py20 def __init__(self, events=None, delay=0.0, fail_with=None, fake_name="fake"):CODE
LOWtests/test_agent.py21 self.name = fake_nameCODE
LOWtests/test_agent.py82 backend = FakeBackend(events=GOOD_EVENTS, fake_name="codex")CODE
LOWtests/test_agent.py162 backend=FakeBackend(events=GOOD_EVENTS, delay=0.2, fake_name="a"), workspace=tmp_path / "wa"CODE
LOWtests/test_agent.py165 backend=FakeBackend(events=GOOD_EVENTS, delay=0.2, fake_name="b"), workspace=tmp_path / "wb"CODE
LOWtests/test_agent.py178 backend=FakeBackend(events=GOOD_EVENTS, fake_name="a"), workspace=tmp_path / "wa"CODE
LOWtests/test_agent.py181 backend=FakeBackend(events=GOOD_EVENTS, fake_name="b"), workspace=tmp_path / "wb"CODE
Deep Nesting9 hits · 9 pts
SeverityFileLineSnippetContext
LOWpentestgpt_legacy/utils/pentest_gpt.py207CODE
LOWpentestgpt_legacy/utils/pentest_gpt.py262CODE
LOWpentestgpt_agent/src/pentestgpt_agent/audit.py64CODE
LOWpentestgpt_agent/src/pentestgpt_agent/memory.py431CODE
LOWpentestgpt_agent/src/pentestgpt_agent/loop.py83CODE
LOWpentestgpt_agent/src/pentestgpt_agent/loop.py184CODE
LOWunified_agent/backends/codex.py133CODE
LOWunified_agent/backends/codex.py191CODE
LOWunified_agent/backends/claude_code.py129CODE
Dead Code4 hits · 8 pts
SeverityFileLineSnippetContext
MEDIUMpentestgpt_agent/tests/test_episode.py64CODE
MEDIUMpentestgpt_agent/tests/test_loop.py282CODE
MEDIUMpentestgpt_agent/tests/test_loop.py307CODE
MEDIUMpentestgpt_agent/tests/test_trial.py139CODE
Synthetic Comment Markers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGH.agents/skills/triage/SKILL.md16> *This was generated by AI during triage.*CODE
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMpentestgpt_legacy/utils/pentest_gpt.py81 # Chunk size for parsing, scaled to the reasoning model's context window.COMMENT
Over-Commented Block2 hits · 2 pts
SeverityFileLineSnippetContext
LOW…s/skills/diagnosing-bugs/scripts/hitl-loop.template.sh1#!/usr/bin/env bashCOMMENT
LOWscripts/docker-login.sh1#!/usr/bin/env bashCOMMENT
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOW…s/skills/diagnosing-bugs/scripts/hitl-loop.template.sh6# Usage:COMMENT
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOWunified_agent/agent.py105CODE