transfer from monorepo

This commit is contained in:
Laura Abro
2025-04-24 10:24:42 -03:00
parent a2175785d5
commit 1c6fc5540b
95 changed files with 7110 additions and 0 deletions

View File

@ -0,0 +1,47 @@
"""Audit service module."""
import logging
from prometheus_swarm.clients import setup_client
from src.workflows.repoSummarizerAudit.workflow import repoSummarizerAuditWorkflow
from src.workflows.repoSummarizerAudit.prompts import (
PROMPTS as REPO_SUMMARIZER_AUDIT_PROMPTS,
)
logger = logging.getLogger(__name__)
def audit_repo(pr_url):
# def review_pr(repo_urls, pr_url, github_username, star_only=True):
"""Review PR and decide if it should be accepted, revised, or rejected."""
try:
# Set up client and workflow
client = setup_client("anthropic")
# Below commented out because we won't need to distribute starring repo nodes
# star_repo_workflow = StarRepoAuditWorkflow(
# client=client,
# prompts=STAR_REPO_AUDIT_PROMPTS,
# repo_url=repo_urls[0],
# github_username=github_username,
# )
# star_repo_workflow.run()
repo_summerizer_audit_workflow = repoSummarizerAuditWorkflow(
client=client,
prompts=REPO_SUMMARIZER_AUDIT_PROMPTS,
pr_url=pr_url,
)
# Run workflow and get result
result = repo_summerizer_audit_workflow.run()
recommendation = result["data"]["recommendation"]
return recommendation
except Exception as e:
logger.error(f"PR review failed: {str(e)}")
raise Exception("PR review failed")
if __name__ == "__main__":
# review_pr(["https://github.com/alexander-morris/koii-dumper-reveal"], "https://github.com/koii-network/namespace-wrapper/pull/1", "HermanL02")
audit_repo("https://github.com/koii-network/namespace-wrapper/pull/1")

View File

@ -0,0 +1,44 @@
import re
import requests
from github import Github
import os
import logging
logger = logging.getLogger(__name__)
def verify_pr_ownership(
pr_url,
expected_username,
expected_owner,
expected_repo,
):
try:
gh = Github(os.environ.get("GITHUB_TOKEN"))
match = re.match(r"https://github.com/([^/]+)/([^/]+)/pull/(\d+)", pr_url)
if not match:
logger.error(f"Invalid PR URL: {pr_url}")
return False
owner, repo_name, pr_number = match.groups()
if owner != expected_owner or repo_name != expected_repo:
logger.error(
f"PR URL mismatch: {pr_url} != {expected_owner}/{expected_repo}"
)
return False
repo = gh.get_repo(f"{owner}/{repo_name}")
pr = repo.get_pull(int(pr_number))
if pr.user.login != expected_username:
logger.error(
f"PR username mismatch: {pr.user.login} != {expected_username}"
)
return False
return True
except Exception as e:
logger.error(f"Error verifying PR ownership: {str(e)}")
return True

View File

@ -0,0 +1,60 @@
"""Task service module."""
import requests
import os
from flask import jsonify
from prometheus_swarm.database import get_db
from prometheus_swarm.clients import setup_client
from src.workflows.repoSummarizer.workflow import RepoSummarizerWorkflow
from prometheus_swarm.utils.logging import logger, log_error
from dotenv import load_dotenv
from src.workflows.repoSummarizer.prompts import PROMPTS
from src.dababase.models import Submission
load_dotenv()
def handle_task_creation(task_id, round_number, repo_url):
"""Handle task creation request."""
try:
db = get_db()
client = setup_client("anthropic")
workflow = RepoSummarizerWorkflow(
client=client,
prompts=PROMPTS,
repo_url=repo_url,
)
result = workflow.run()
if result.get("success"):
submission = Submission(
task_id=task_id,
round_number=round_number,
status="summarized",
repo_url=repo_url,
pr_url=result["data"]["pr_url"],
)
db.add(submission)
db.commit()
return jsonify({"success": True, "result": result})
else:
return jsonify(
{"success": False, "result": result.get("error", "No result")}
)
except Exception as e:
logger.error(f"Repo summarizer failed: {str(e)}")
raise
if __name__ == "__main__":
from flask import Flask
app = Flask(__name__)
with app.app_context():
result = handle_task_creation(
task_id="1",
round_number=6,
repo_url="https://github.com/koii-network/builder-test",
)
print(result)

View File

@ -0,0 +1,50 @@
"""Task service module."""
import requests
import os
from flask import jsonify
from prometheus_swarm.database import get_db
from prometheus_swarm.clients import setup_client
from src.workflows.repoSummarizer.workflow import RepoSummarizerWorkflow
from prometheus_swarm.utils.logging import logger, log_error
from src.workflows.starRepo.workflow import StarRepoWorkflow
from dotenv import load_dotenv
from src.workflows.repoSummarizer.prompts import PROMPTS
load_dotenv()
def handle_star_task(task_id, round_number, github_urls):
"""Handle task creation request."""
try:
db = get_db()
client = setup_client("anthropic")
for url in github_urls:
star_workflow = StarRepoWorkflow(
client=client,
prompts=PROMPTS,
repo_url=url,
)
star_result = star_workflow.run()
if not star_result or not star_result.get("success"):
log_error(
Exception(star_result.get("error", "No result")),
"Repository star failed",
)
return jsonify({"success": True, "result": "Repository starred"})
except Exception as e:
logger.error(f"Repo summarizer failed: {str(e)}")
raise
if __name__ == "__main__":
from flask import Flask
app = Flask(__name__)
with app.app_context():
result = handle_star_task(
task_id="1",
round_number=6,
github_urls=["https://github.com/koii-network/builder-test"],
)
print(result)