This commit is contained in:
2025-08-22 13:18:50 +02:00
parent bc0d90d41a
commit e8d09164ff
4 changed files with 114 additions and 197 deletions

View File

@@ -1,31 +1,19 @@
import os
import threading
import time
import re
import sys
import toml
import libtmux
from libtmux.pane import Pane
from libtmux.window import Window
from libtmux.session import Session
import psutil
from typing import Dict, List, Optional, Any, Set, Tuple
from dataclasses import dataclass, field, asdict
from typing import Dict, List, Optional
from dataclasses import asdict
from datetime import datetime
import uuid
from pathlib import Path
import asyncio
import uvicorn
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
import threading
from .task_runner import TaskRunner
class TaskRunnerAPI:
"""FastAPI interface for the task runner."""
def __init__(self, runner: EnhancedTaskRunner):
def __init__(self, runner: TaskRunner):
self.runner = runner
self.app = FastAPI(title="Task Runner API", version="1.0.0")
@@ -132,13 +120,15 @@ class TaskRunnerAPI:
"""Start the FastAPI server."""
uvicorn.run(self.app, host=host, port=port)
class TaskOrchestrator:
"""Main orchestrator that runs tasks and API server."""
def __init__(self, tasks_dir: str, api_port: int = 8000):
self.runner = EnhancedTaskRunner(tasks_dir)
self.runner = TaskRunner(tasks_dir)
self.api = TaskRunnerAPI(self.runner)
self.api_thread = None
self.api_port = api_port
def start_api_server(self, port: int = 8000):
"""Start API server in a separate thread."""
@@ -153,7 +143,7 @@ class TaskOrchestrator:
def run(self):
"""Run the task orchestration."""
# Start API server
self.start_api_server()
self.start_api_server(self.api_port)
# Reset and run tasks
self.runner.reset()
@@ -166,6 +156,7 @@ class TaskOrchestrator:
self.runner._save_dag()
print("\nExecution completed. API server still running.")
print(f"Access API at: http://localhost:{self.api_port}")
print("Press Ctrl+C to stop the API server.")
try:
@@ -173,4 +164,4 @@ class TaskOrchestrator:
while True:
time.sleep(1)
except KeyboardInterrupt:
print("\nShutting down...")
print("\nShutting down...")