Refactor public API around environments
This commit is contained in:
parent
57dae52cc2
commit
5d5243df23
41 changed files with 1301 additions and 459 deletions
|
|
@ -11,6 +11,7 @@ from pyro_mcp.api import Pyro
|
|||
from pyro_mcp.demo import run_demo
|
||||
from pyro_mcp.ollama_demo import DEFAULT_OLLAMA_BASE_URL, DEFAULT_OLLAMA_MODEL, run_ollama_tool_demo
|
||||
from pyro_mcp.runtime import DEFAULT_PLATFORM, doctor_report
|
||||
from pyro_mcp.vm_environments import DEFAULT_CATALOG_VERSION
|
||||
|
||||
|
||||
def _print_json(payload: dict[str, Any]) -> None:
|
||||
|
|
@ -18,22 +19,36 @@ def _print_json(payload: dict[str, Any]) -> None:
|
|||
|
||||
|
||||
def _build_parser() -> argparse.ArgumentParser:
|
||||
parser = argparse.ArgumentParser(description="pyro CLI for ephemeral Firecracker VMs.")
|
||||
parser = argparse.ArgumentParser(
|
||||
description="pyro CLI for curated ephemeral Linux environments."
|
||||
)
|
||||
parser.add_argument("--version", action="version", version=f"%(prog)s {__version__}")
|
||||
subparsers = parser.add_subparsers(dest="command", required=True)
|
||||
|
||||
env_parser = subparsers.add_parser("env", help="Inspect and manage curated environments.")
|
||||
env_subparsers = env_parser.add_subparsers(dest="env_command", required=True)
|
||||
env_subparsers.add_parser("list", help="List official environments.")
|
||||
pull_parser = env_subparsers.add_parser(
|
||||
"pull",
|
||||
help="Install an environment into the local cache.",
|
||||
)
|
||||
pull_parser.add_argument("environment")
|
||||
inspect_parser = env_subparsers.add_parser("inspect", help="Inspect one environment.")
|
||||
inspect_parser.add_argument("environment")
|
||||
env_subparsers.add_parser("prune", help="Delete stale cached environments.")
|
||||
|
||||
mcp_parser = subparsers.add_parser("mcp", help="Run the MCP server.")
|
||||
mcp_subparsers = mcp_parser.add_subparsers(dest="mcp_command", required=True)
|
||||
mcp_subparsers.add_parser("serve", help="Run the MCP server over stdio.")
|
||||
|
||||
run_parser = subparsers.add_parser("run", help="Run one command inside an ephemeral VM.")
|
||||
run_parser.add_argument("--profile", required=True)
|
||||
run_parser.add_argument("environment")
|
||||
run_parser.add_argument("--vcpu-count", type=int, required=True)
|
||||
run_parser.add_argument("--mem-mib", type=int, required=True)
|
||||
run_parser.add_argument("--timeout-seconds", type=int, default=30)
|
||||
run_parser.add_argument("--ttl-seconds", type=int, default=600)
|
||||
run_parser.add_argument("--network", action="store_true")
|
||||
run_parser.add_argument("command_args", nargs=argparse.REMAINDER)
|
||||
run_parser.add_argument("command_args", nargs="*")
|
||||
|
||||
doctor_parser = subparsers.add_parser("doctor", help="Inspect runtime and host diagnostics.")
|
||||
doctor_parser.add_argument("--platform", default=DEFAULT_PLATFORM)
|
||||
|
|
@ -59,13 +74,32 @@ def _require_command(command_args: list[str]) -> str:
|
|||
|
||||
def main() -> None:
|
||||
args = _build_parser().parse_args()
|
||||
pyro = Pyro()
|
||||
if args.command == "env":
|
||||
if args.env_command == "list":
|
||||
_print_json(
|
||||
{
|
||||
"catalog_version": DEFAULT_CATALOG_VERSION,
|
||||
"environments": pyro.list_environments(),
|
||||
}
|
||||
)
|
||||
return
|
||||
if args.env_command == "pull":
|
||||
_print_json(dict(pyro.pull_environment(args.environment)))
|
||||
return
|
||||
if args.env_command == "inspect":
|
||||
_print_json(dict(pyro.inspect_environment(args.environment)))
|
||||
return
|
||||
if args.env_command == "prune":
|
||||
_print_json(dict(pyro.prune_environments()))
|
||||
return
|
||||
if args.command == "mcp":
|
||||
Pyro().create_server().run(transport="stdio")
|
||||
pyro.create_server().run(transport="stdio")
|
||||
return
|
||||
if args.command == "run":
|
||||
command = _require_command(args.command_args)
|
||||
result = Pyro().run_in_vm(
|
||||
profile=args.profile,
|
||||
result = pyro.run_in_vm(
|
||||
environment=args.environment,
|
||||
command=command,
|
||||
vcpu_count=args.vcpu_count,
|
||||
mem_mib=args.mem_mib,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue