* Adds Kubernetes sandbox provisioner support * Improves Docker dev setup by standardizing host paths Replaces hardcoded host paths with a configurable root directory, making the development environment more portable and easier to use across different machines. Automatically sets the root path if not already defined, reducing manual setup steps.
42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
"""Sandbox metadata for cross-process discovery and state persistence."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import time
|
|
from dataclasses import dataclass, field
|
|
|
|
|
|
@dataclass
|
|
class SandboxInfo:
|
|
"""Persisted sandbox metadata that enables cross-process discovery.
|
|
|
|
This dataclass holds all the information needed to reconnect to an
|
|
existing sandbox from a different process (e.g., gateway vs langgraph,
|
|
multiple workers, or across K8s pods with shared storage).
|
|
"""
|
|
|
|
sandbox_id: str
|
|
sandbox_url: str # e.g. http://localhost:8080 or http://k3s:30001
|
|
container_name: str | None = None # Only for local container backend
|
|
container_id: str | None = None # Only for local container backend
|
|
created_at: float = field(default_factory=time.time)
|
|
|
|
def to_dict(self) -> dict:
|
|
return {
|
|
"sandbox_id": self.sandbox_id,
|
|
"sandbox_url": self.sandbox_url,
|
|
"container_name": self.container_name,
|
|
"container_id": self.container_id,
|
|
"created_at": self.created_at,
|
|
}
|
|
|
|
@classmethod
|
|
def from_dict(cls, data: dict) -> SandboxInfo:
|
|
return cls(
|
|
sandbox_id=data["sandbox_id"],
|
|
sandbox_url=data.get("sandbox_url", data.get("base_url", "")),
|
|
container_name=data.get("container_name"),
|
|
container_id=data.get("container_id"),
|
|
created_at=data.get("created_at", time.time()),
|
|
)
|