mirror of
https://github.com/Sea-Haven-Industries/open-swe.git
synced 2026-10-07 16:19:09 +00:00
Apply the durable-interrupt-dispatch refactor: split the monolithic
webapp.py into a thin routing layer plus per-source handlers in
webhooks/{github,slack,linear}.py, and add completion.py, dispatch.py,
and reconcile.py. Reconcile fork divergence by keeping the Bedrock/
Fireworks cross-provider fallback, the no-agent-attribution prompt
policy, the dashboard-handoff re-export, and the Slack channel-info
cache. ci_autofix is restored on the new dispatch model in a later
commit.
Refs: #80
28 lines
1,002 B
Python
28 lines
1,002 B
Python
from typing import Any
|
|
|
|
from langgraph.config import get_config
|
|
|
|
from agent.utils.slack import parse_github_pr_url
|
|
from agent.webapp import trigger_pr_review_from_ref
|
|
|
|
|
|
async def request_pr_review(pr_url: str) -> dict[str, Any]:
|
|
"""Start the reviewer agent for a GitHub pull request URL."""
|
|
pr_ref = parse_github_pr_url(pr_url)
|
|
if not pr_ref:
|
|
return {
|
|
"success": False,
|
|
"error": "Expected a GitHub PR URL like https://github.com/OWNER/REPO/pull/NUMBER",
|
|
}
|
|
|
|
configurable = get_config().get("configurable", {})
|
|
source = configurable.get("source") or "agent"
|
|
slack_thread = configurable.get("slack_thread") or {}
|
|
return await trigger_pr_review_from_ref(
|
|
pr_ref,
|
|
source=source,
|
|
github_login=configurable.get("github_login", ""),
|
|
github_user_id=configurable.get("github_user_id"),
|
|
slack_channel_id=slack_thread.get("channel_id", ""),
|
|
slack_thread_ts=slack_thread.get("thread_ts", ""),
|
|
)
|