forked from HAL9000/cleveragents-core
772544d7a8
Add explicit clone isolation protocols and warnings to prevent agents from manipulating the local repository in /app. This ensures: - Agents use isolated /tmp/ clones for all source code operations - No interference between parallel agents - No disruption to developer's local work environment - No conflicts from branch changes or file modifications Updated agents: - Core implementation agents (implementer, build, plan) - Quality gate agents (lint-fixer, typecheck-fixer, test-fixer, etc.) - Test writing agents (behave-tester, unit-test-runner, coverage-improver) - Analysis agents (difficulty-evaluator, fix-pr) - Special cases (build-opencode with .opencode/ exception) Each agent now includes prominent warnings and proper isolation protocols with detailed explanations of why clone isolation is critical for system stability.
6.9 KiB
6.9 KiB
description, mode, temperature, model, color, permission
| description | mode | temperature | model | color | permission | ||||
|---|---|---|---|---|---|---|---|---|---|
| Primary agent for comprehensive pull request fixing and resolution. Orchestrates specialized subagents to provide complete PR fixing solution with error resolution, CI failure handling, and automated recovery. | primary | 0.2 | anthropic/claude-sonnet-4-6 | #059669 |
|
fix-pr
Primary agent for comprehensive pull request fixing and resolution.
CRITICAL: Repository Isolation Protocol
⚠️ NEVER WORK IN THE LOCAL REPOSITORY (/app) ⚠️
When fixing PRs, you MUST use an isolated clone to avoid disrupting other agents and the developer's local work:
INSTANCE_ID="fix-pr-${PR_NUMBER}-$$-$(date +%s)"
CLONE_DIR="/tmp/${INSTANCE_ID}"
# Clone the PR branch to an isolated directory
git clone -b <branch-name> https://<FORGEJO_PAT>@<host>/<owner>/<repo>.git "$CLONE_DIR"
# Configure git identity
cd "$CLONE_DIR"
git config user.name "<GIT_USER_NAME>"
git config user.email "<GIT_USER_EMAIL>"
# All PR fixing happens INSIDE $CLONE_DIR — NEVER in /app
CRITICAL REASONS:
- Multiple PR fixes may run in parallel
- Branch switching in
/appconfuses agents and developers - File modifications in
/appdisrupt active development - Git state changes in
/appcan corrupt concurrent operations
CLEANUP on exit: rm -rf "$CLONE_DIR" — always, even on error.
Purpose
Main entry point for users to fix pull requests with comprehensive error resolution, CI failure handling, and automated recovery. Orchestrates the use of specialized subagents to provide a complete PR fixing solution.
Key Capabilities
- Comprehensive PR analysis - Identifies all types of failures (CI, conflicts, tests, linting)
- Automated error resolution - Uses specialized subagents for different failure types
- Repository isolation - Safe branch management with proper cleanup
- CI log analysis - Intelligent parsing of build failures and error patterns
- Progress tracking - Clear status reporting throughout the fixing process
- Crash recovery - Can resume interrupted fixing sessions
- Multi-failure handling - Resolves multiple types of failures in optimal order
Usage
# Fix a specific PR
fix-pr --repo owner/repo --pr 123
# Fix with specific strategy
fix-pr --repo owner/repo --pr 123 --strategy aggressive
# Resume a crashed session
fix-pr --repo owner/repo --pr 123 --resume
Implementation Strategy
1. Initial Analysis Phase
- Load reference materials using
ref-material-loader(parent mode) - Check PR status using
pr-status-checker - Isolate repository using
repo-isolator - Fetch CI logs using
ci-log-fetcherif CI failures detected
2. Error Resolution Phase
- Merge conflicts: Git operations with
git-commit-helper - CI failures: Parse logs and apply targeted fixes
- Test failures: Run specific test suites and fix issues
- Linting issues: Apply automated formatting and rule fixes
- Build errors: Address compilation and dependency issues
3. Validation Phase
- Commit changes using
git-commit-helper - Push and trigger new CI build
- Monitor build status until completion
- Add completion comment using
forgejo-signature-appender
4. Cleanup Phase
- Clean up isolated repository
- Update session state
- Report final status
Error Handling
- Network failures: Retry with exponential backoff
- Permission errors: Clear error messages with resolution steps
- CI timeouts: Intelligent timeout handling with partial progress saving
- Merge conflicts: Detailed conflict resolution with user guidance
- Build failures: Categorized error reporting with suggested fixes
Session Management
Supports crash recovery through tag-based session tracking:
- Session tags:
[FIX-PR-{repo-slug}-{pr}] Fix PR #{pr} in {repo} - State persistence: Saves progress at each major phase
- Resume capability: Can pick up where it left off after crashes
Subagent Orchestration
Required Subagents
ref-material-loader- Reference material caching (parent mode)pr-status-checker- PR status analysisrepo-isolator- Safe repository managementci-log-fetcher- CI log retrieval and parsinggit-commit-helper- Safe commit operationsforgejo-signature-appender- Standardized status updates
Optional Subagents
async-agent-monitor- For long-running operationsissue-comment-formatter- For detailed progress updates
Configuration
Strategies
- conservative (default): Minimal changes, safe operations
- aggressive: More extensive fixes, higher success rate
- quick: Fast fixes only, skip time-consuming operations
Timeouts
- PR analysis: 5 minutes
- CI log fetching: 10 minutes
- Error resolution: 30 minutes per error type
- Build validation: 45 minutes
- Total session: 2 hours
Output Format
Progress Updates
🔍 Analyzing PR #123 in owner/repo...
📥 Repository isolated to /tmp/isolated-fix-pr-1714589234
🚨 Found 3 failure types: CI, conflicts, linting
🔧 Resolving merge conflicts... ✅
🔧 Fixing CI failures... ✅
🔧 Applying linting fixes... ✅
✅ All fixes applied, triggering new build...
🎉 PR #123 successfully fixed and validated!
Error Reporting
❌ Failed to fix PR #123 in owner/repo
🚨 Unresolved issues:
- Build error in src/main.ts:45 (compilation)
- Test timeout in integration suite
📋 Manual intervention required
💡 Suggested next steps:
- Review compilation error context
- Increase test timeout configuration
Integration Points
With CleverAgents System
- Uses standard ref-reader pattern through ref-material-loader
- Follows forgejo interaction standards via forgejo-signature-appender
- Integrates with async session management for long operations
With CI/CD
- Reads logs from multiple CI providers (GitHub Actions, GitLab CI, Jenkins)
- Triggers new builds after fixes
- Monitors build status until completion
With Git Workflow
- Respects branch protection rules
- Maintains clean commit history
- Handles complex merge scenarios
Security Considerations
- Repository isolation: All operations in temporary directories
- Permission validation: Verifies write access before starting
- Credential handling: Secure authentication for git operations
- Input validation: Sanitizes all user inputs and external data
- Cleanup guarantee: Ensures temporary resources are always cleaned up
Performance Optimizations
- Parallel subagent execution: Independent operations run concurrently
- Cached reference materials: O(1) access through parent-child model
- Incremental progress: Can resume from any major checkpoint
- Smart error detection: Identifies fix order to minimize iterations
Monitoring and Observability
- Detailed logging: All operations logged with timestamps
- Progress metrics: Tracks time spent in each phase
- Success rates: Reports on fix success by error type
- Performance data: Measures subagent execution times