transfer from monorepo
This commit is contained in:
47
worker/orca-agent/src/server/services/audit_service.py
Normal file
47
worker/orca-agent/src/server/services/audit_service.py
Normal 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")
|
44
worker/orca-agent/src/server/services/github_service.py
Normal file
44
worker/orca-agent/src/server/services/github_service.py
Normal 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
|
@ -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)
|
50
worker/orca-agent/src/server/services/star_service.py
Normal file
50
worker/orca-agent/src/server/services/star_service.py
Normal 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)
|
Reference in New Issue
Block a user