feat(tools): Phase T.1-T.4 complete - manifest system, registry, implementations, runtime, collaboration, scheduler

This commit is contained in:
2026-04-05 11:54:57 +08:00
parent fca7a7cf3d
commit 10d9340c53
30 changed files with 2891 additions and 4 deletions

View File

@@ -0,0 +1,79 @@
"""
Runtime Manager
Manages multiple runtimes and routes tool execution to the appropriate runtime.
"""
from typing import Any, Dict, Optional
from tools.runtime.base import BaseRuntime
from tools.runtime.python_runtime import PythonRuntime
from tools.runtime.js_runtime import JavaScriptRuntime
from tools.runtime.native_runtime import NativeRuntime
class RuntimeManager:
"""Runtime manager for multi-runtime tool execution"""
def __init__(self):
self._runtimes: Dict[str, BaseRuntime] = {
"python": PythonRuntime(),
"javascript": JavaScriptRuntime(),
"native": NativeRuntime(),
}
def get_runtime(self, name: str) -> Optional[BaseRuntime]:
"""Get runtime by name"""
return self._runtimes.get(name)
def register_runtime(self, name: str, runtime: BaseRuntime) -> None:
"""Register a custom runtime"""
self._runtimes[name] = runtime
async def execute(
self,
runtime_name: str,
entry: str,
command: str,
parameters: Dict[str, Any],
timeout: int = 30000,
) -> Dict[str, Any]:
"""Execute tool through the specified runtime"""
runtime = self.get_runtime(runtime_name)
if not runtime:
return {
"status": "error",
"error": f"Unknown runtime: {runtime_name}",
}
# Validate first
is_valid = await runtime.validate(entry)
if not is_valid:
return {
"status": "error",
"error": f"Validation failed for runtime {runtime_name}, entry: {entry}",
}
return await runtime.execute(entry, command, parameters, timeout)
def list_runtimes(self) -> list:
"""List all registered runtimes"""
return [
{
"name": name,
"available": runtime.get_name() == name,
}
for name, runtime in self._runtimes.items()
]
# Global runtime manager instance
_runtime_manager: Optional[RuntimeManager] = None
def get_runtime_manager() -> RuntimeManager:
"""Get the global runtime manager instance"""
global _runtime_manager
if _runtime_manager is None:
_runtime_manager = RuntimeManager()
return _runtime_manager