feat: implement Phase 14 - Repo Orchestrator
This commit is contained in:
53
agent/evolution/repo_orchestrator.py
Normal file
53
agent/evolution/repo_orchestrator.py
Normal file
@@ -0,0 +1,53 @@
|
||||
"""Phase 14: Cross-Repository Orchestration (CRO).
|
||||
|
||||
Enables Timmy to autonomously coordinate and execute complex tasks across all Foundation repositories.
|
||||
"""
|
||||
|
||||
import logging
|
||||
import json
|
||||
from typing import List, Dict, Any
|
||||
from agent.gemini_adapter import GeminiAdapter
|
||||
from tools.gitea_client import GiteaClient
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class RepoOrchestrator:
|
||||
def __init__(self):
|
||||
self.adapter = GeminiAdapter()
|
||||
self.gitea = GiteaClient()
|
||||
|
||||
def plan_global_task(self, task_description: str, repo_list: List[str]) -> Dict[str, Any]:
|
||||
"""Plans a task that spans multiple repositories."""
|
||||
logger.info(f"Planning global task across {len(repo_list)} repositories.")
|
||||
|
||||
prompt = f"""
|
||||
Global Task: {task_description}
|
||||
Repositories: {', '.join(repo_list)}
|
||||
|
||||
Please design a multi-repo workflow to execute this task.
|
||||
Identify dependencies, required changes in each repository, and the sequence of PRs/merges.
|
||||
Generate a 'Global Execution Plan'.
|
||||
|
||||
Format the output as JSON:
|
||||
{{
|
||||
"task": "{task_description}",
|
||||
"execution_plan": [
|
||||
{{
|
||||
"repo": "...",
|
||||
"action": "...",
|
||||
"dependencies": [...],
|
||||
"pr_description": "..."
|
||||
}}
|
||||
]
|
||||
}}
|
||||
"""
|
||||
result = self.adapter.generate(
|
||||
model="gemini-3.1-pro-preview",
|
||||
prompt=prompt,
|
||||
system_instruction="You are Timmy's Global Orchestrator. Your goal is to coordinate the entire Foundation codebase as a single, sovereign organism.",
|
||||
thinking=True,
|
||||
response_mime_type="application/json"
|
||||
)
|
||||
|
||||
plan_data = json.loads(result["text"])
|
||||
return plan_data
|
||||
Reference in New Issue
Block a user