Replace the workspace-level boolean network toggle with explicit network policies and attach localhost TCP publication to workspace services. Persist network_policy in workspace records, validate --publish requests, and run host-side proxy helpers that follow the service lifecycle so published ports are cleaned up on failure, stop, reset, and delete. Update the CLI, SDK, MCP contract, docs, roadmap, and examples for the new policy model, add coverage for the proxy and manager edge cases, and validate with uv lock, UV_CACHE_DIR=.uv-cache make check, UV_CACHE_DIR=.uv-cache make dist-check, and a real guest-backed published-port probe smoke.
88 lines
2.7 KiB
TOML
88 lines
2.7 KiB
TOML
[project]
|
|
name = "pyro-mcp"
|
|
version = "2.10.0"
|
|
description = "Ephemeral Firecracker sandboxes with curated environments, persistent workspaces, and MCP tools."
|
|
readme = "README.md"
|
|
license = { file = "LICENSE" }
|
|
authors = [
|
|
{ name = "Thales Maciel", email = "thales@thalesmaciel.com" }
|
|
]
|
|
requires-python = ">=3.12"
|
|
classifiers = [
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Environment :: Console",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Operating System :: POSIX :: Linux",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Topic :: Software Development :: Testing",
|
|
"Topic :: System :: Systems Administration",
|
|
]
|
|
dependencies = [
|
|
"mcp>=1.26.0",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://git.thaloco.com/thaloco/pyro-mcp"
|
|
Repository = "https://git.thaloco.com/thaloco/pyro-mcp"
|
|
Issues = "https://git.thaloco.com/thaloco/pyro-mcp/issues"
|
|
PyPI = "https://pypi.org/project/pyro-mcp/"
|
|
|
|
[project.scripts]
|
|
pyro = "pyro_mcp.cli:main"
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/pyro_mcp"]
|
|
|
|
[tool.hatch.build.targets.wheel.force-include]
|
|
"src/pyro_mcp/runtime_bundle/NOTICE" = "pyro_mcp/runtime_bundle/NOTICE"
|
|
"src/pyro_mcp/runtime_bundle/linux-x86_64/bin/firecracker" = "pyro_mcp/runtime_bundle/linux-x86_64/bin/firecracker"
|
|
"src/pyro_mcp/runtime_bundle/linux-x86_64/bin/jailer" = "pyro_mcp/runtime_bundle/linux-x86_64/bin/jailer"
|
|
"src/pyro_mcp/runtime_bundle/linux-x86_64/guest/pyro_guest_agent.py" = "pyro_mcp/runtime_bundle/linux-x86_64/guest/pyro_guest_agent.py"
|
|
"src/pyro_mcp/runtime_bundle/linux-x86_64/manifest.json" = "pyro_mcp/runtime_bundle/linux-x86_64/manifest.json"
|
|
|
|
[tool.hatch.build.targets.sdist]
|
|
include = [
|
|
"docs/**",
|
|
"src/pyro_mcp/**/*.py",
|
|
"src/pyro_mcp/runtime_bundle/NOTICE",
|
|
"src/pyro_mcp/runtime_bundle/linux-x86_64/bin/firecracker",
|
|
"src/pyro_mcp/runtime_bundle/linux-x86_64/bin/jailer",
|
|
"src/pyro_mcp/runtime_bundle/linux-x86_64/guest/pyro_guest_agent.py",
|
|
"src/pyro_mcp/runtime_bundle/linux-x86_64/manifest.json",
|
|
"README.md",
|
|
"LICENSE",
|
|
"AGENTS.md",
|
|
"pyproject.toml",
|
|
]
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"mypy>=1.19.1",
|
|
"pre-commit>=4.5.1",
|
|
"pytest>=9.0.2",
|
|
"pytest-cov>=7.0.0",
|
|
"ruff>=0.15.4",
|
|
]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
addopts = "--cov=pyro_mcp --cov-report=term-missing --cov-fail-under=90"
|
|
|
|
[tool.ruff]
|
|
target-version = "py312"
|
|
line-length = 100
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "B"]
|
|
|
|
[tool.mypy]
|
|
python_version = "3.12"
|
|
strict = true
|
|
warn_unused_configs = true
|
|
files = ["src", "tests", "examples"]
|