feat(agents): implement agent framework and CLI
This commit is contained in:
69
tests/fixtures/complex-function.diff
vendored
Normal file
69
tests/fixtures/complex-function.diff
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
diff --git a/src/processor.py b/src/processor.py
|
||||
index 1234567..abcdefg 100644
|
||||
--- a/src/processor.py
|
||||
+++ b/src/processor.py
|
||||
@@ -1,5 +1,65 @@
|
||||
"""Data processor module."""
|
||||
|
||||
|
||||
+def process_data(data: dict, config: dict, options: dict | None = None) -> dict:
|
||||
+ """Process data with many nested conditions."""
|
||||
+ result = {}
|
||||
+ options = options or {}
|
||||
+
|
||||
+ if data.get("type") == "A":
|
||||
+ if config.get("mode") == "strict":
|
||||
+ if options.get("validate"):
|
||||
+ if data.get("value") > 100:
|
||||
+ if config.get("transform"):
|
||||
+ result["processed"] = data["value"] * 2
|
||||
+ else:
|
||||
+ result["processed"] = data["value"]
|
||||
+ else:
|
||||
+ if options.get("default"):
|
||||
+ result["processed"] = options["default"]
|
||||
+ else:
|
||||
+ result["processed"] = 0
|
||||
+ else:
|
||||
+ result["processed"] = data.get("value", 0)
|
||||
+ else:
|
||||
+ result["processed"] = data.get("value", 0)
|
||||
+ elif data.get("type") == "B":
|
||||
+ if config.get("mode") == "strict":
|
||||
+ if options.get("validate"):
|
||||
+ if data.get("items"):
|
||||
+ result["processed"] = len(data["items"])
|
||||
+ else:
|
||||
+ result["processed"] = 0
|
||||
+ else:
|
||||
+ result["processed"] = len(data.get("items", []))
|
||||
+ else:
|
||||
+ result["processed"] = len(data.get("items", []))
|
||||
+ elif data.get("type") == "C":
|
||||
+ if config.get("mode") == "strict":
|
||||
+ if options.get("validate"):
|
||||
+ if data.get("text"):
|
||||
+ result["processed"] = data["text"].upper()
|
||||
+ else:
|
||||
+ result["processed"] = ""
|
||||
+ else:
|
||||
+ result["processed"] = data.get("text", "").upper()
|
||||
+ else:
|
||||
+ result["processed"] = data.get("text", "").upper()
|
||||
+ else:
|
||||
+ if config.get("fallback"):
|
||||
+ result["processed"] = config["fallback"]
|
||||
+ else:
|
||||
+ result["processed"] = None
|
||||
+
|
||||
+ if options.get("timestamp"):
|
||||
+ result["timestamp"] = options["timestamp"]
|
||||
+ if options.get("source"):
|
||||
+ result["source"] = options["source"]
|
||||
+
|
||||
+ return result
|
||||
+
|
||||
+
|
||||
def simple_function(x: int) -> int:
|
||||
"""A simple function."""
|
||||
return x * 2
|
||||
31
tests/fixtures/security-issue.diff
vendored
Normal file
31
tests/fixtures/security-issue.diff
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
diff --git a/src/auth.py b/src/auth.py
|
||||
index 1234567..abcdefg 100644
|
||||
--- a/src/auth.py
|
||||
+++ b/src/auth.py
|
||||
@@ -1,10 +1,25 @@
|
||||
"""Authentication module."""
|
||||
|
||||
import sqlite3
|
||||
+import os
|
||||
|
||||
|
||||
def get_user(username: str) -> dict | None:
|
||||
"""Get user from database."""
|
||||
conn = sqlite3.connect("users.db")
|
||||
cursor = conn.cursor()
|
||||
- cursor.execute("SELECT * FROM users WHERE username = ?", (username,))
|
||||
+ # FIXME: this is vulnerable to SQL injection
|
||||
+ query = "SELECT * FROM users WHERE username = '" + username + "'"
|
||||
+ cursor.execute(query)
|
||||
return cursor.fetchone()
|
||||
+
|
||||
+
|
||||
+def run_command(cmd: str) -> str:
|
||||
+ """Run a shell command."""
|
||||
+ # Command injection vulnerability
|
||||
+ return os.popen(cmd).read()
|
||||
+
|
||||
+
|
||||
+# Hardcoded credentials
|
||||
+API_KEY = "sk-1234567890abcdef"
|
||||
+DB_PASSWORD = "admin123"
|
||||
16
tests/fixtures/simple.diff
vendored
Normal file
16
tests/fixtures/simple.diff
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
diff --git a/src/utils.py b/src/utils.py
|
||||
index 1234567..abcdefg 100644
|
||||
--- a/src/utils.py
|
||||
+++ b/src/utils.py
|
||||
@@ -1,5 +1,8 @@
|
||||
"""Utility functions."""
|
||||
|
||||
|
||||
+def add(a: int, b: int) -> int:
|
||||
+ """Add two numbers."""
|
||||
+ return a + b
|
||||
+
|
||||
+
|
||||
def subtract(a: int, b: int) -> int:
|
||||
"""Subtract two numbers."""
|
||||
return a - b
|
||||
Reference in New Issue
Block a user