From b51692c8fb13ee908548e1e9492a12aceec34fab Mon Sep 17 00:00:00 2001 From: naaa760 Date: Sat, 27 Dec 2025 21:34:19 +0530 Subject: [PATCH] fix: resolve repository analysis and PR creation issues - Fix YAML indentation in rule generation causing same rules for all repos - Add user_token field to RepositoryAnalysisRequest model - Implement authentication-aware caching to prevent cache contamination - Enhance PR URL validation to prevent 404 redirects - Simplify YAML generation by removing textwrap dependency - Ensure all pre-commit checks pass --- .../repository_analysis_agent/models.py | 1 + src/agents/repository_analysis_agent/nodes.py | 31 +++++++------------ 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/src/agents/repository_analysis_agent/models.py b/src/agents/repository_analysis_agent/models.py index 3f93518..8097573 100644 --- a/src/agents/repository_analysis_agent/models.py +++ b/src/agents/repository_analysis_agent/models.py @@ -95,6 +95,7 @@ class RepositoryAnalysisRequest(BaseModel): repository_url: str | None = Field(default=None, description="GitHub repository URL") repository_full_name: str | None = Field(default=None, description="Full repository name (owner/repo)") installation_id: int | None = Field(default=None, description="GitHub App installation ID") + user_token: str | None = Field(default=None, description="User token for GitHub operations (optional)") max_prs: int = Field(default=10, ge=0, le=50, description="Max PRs to sample for analysis") @field_validator("repository_full_name", mode="before") diff --git a/src/agents/repository_analysis_agent/nodes.py b/src/agents/repository_analysis_agent/nodes.py index 0286f42..8908149 100644 --- a/src/agents/repository_analysis_agent/nodes.py +++ b/src/agents/repository_analysis_agent/nodes.py @@ -9,7 +9,6 @@ from __future__ import annotations import logging -import textwrap from typing import Any import yaml @@ -258,7 +257,7 @@ def _default_recommendations( severity: medium event_types: - pull_request - parameters: +parameters: source_patterns: {source_patterns_yaml} test_patterns: @@ -294,17 +293,14 @@ def _default_recommendations( recommendations.append( RuleRecommendation( - yaml_rule=textwrap.dedent( - """ - description: "Ensure PRs include context" + yaml_rule="""description: "Ensure PRs include context" enabled: true - severity: low +severity: low event_types: - pull_request - parameters: - min_description_length: 50 - """ - ).strip(), +parameters: + min_description_length: 50 +""".strip(), confidence=desc_confidence, reasoning=desc_reasoning, strategy_used="static", @@ -313,18 +309,15 @@ def _default_recommendations( # Add a repository-specific rule if we detect specific patterns if state.repository_features.has_workflows: - workflow_rule = textwrap.dedent( - """ - description: "Protect CI/CD workflows" + workflow_rule = """description: "Protect CI/CD workflows" enabled: true - severity: high +severity: high event_types: - pull_request - parameters: - file_patterns: - - ".github/workflows/**" - """ - ).strip() +parameters: + file_patterns: + - ".github/workflows/**" +""".strip() recommendations.append( RuleRecommendation(