Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
161 lines (150 loc) · 6.59 KB
/
Copy pathpyproject.toml
File metadata and controls
161 lines (150 loc) · 6.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "agentenv-framework"
version = "0.9.1336"
description = "SDK and CLI for building, deploying and running agent environments and the tasks that grade agents in them."
readme = "README.md"
license = "Apache-2.0"
license-files = ["LICENSE", "NOTICE", "THIRD_PARTY_NOTICES.md"]
authors = [{ name = "Scale AI" }]
requires-python = ">=3.11.4"
keywords = ["reinforcement-learning", "rl-environments", "ai-agents", "llm-agents", "agent-evaluation", "mcp", "model-context-protocol", "a2a", "sandbox"]
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Console",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Operating System :: MacOS",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Topic :: Software Development :: Libraries :: Application Frameworks",
"Typing :: Typed",
]
dependencies = [
"agentenv-framework-protocol>=0.1.0",
"certifi>=2024.2.2", # the public roots the local transfer CA's trust bundle carries
"click>=8.0.0",
"cryptography>=42", # the local transfer CA
"httpx>=0.27.0",
"litellm>=1.96.0,<1.97",
"mcp>=1.25,<2", # same floor as env/gateway/requirements.txt and agentenv-protocol; 2.0.0 removed mcp.server.fastmcp, imported at module scope by env/gateway
"packaging>=22", # evaluates a plugin's requirement markers with no extra
"a2a-sdk==0.3.26",
"pydantic>=2.12", # model_validate(extra=...) reads agent responses tolerantly
"pymongo>=4.7",
"python-multipart>=0.0.13", # the local grant server's upload forms
"pyyaml>=6.0",
"starlette>=0.40", # the local grant server
"uvicorn>=0.47", # 0.47 adds ssl_context_factory, how the local grant server gets its TLS context
"modal>=1.5.2.dev22", # dev22 adds _experimental_create(tags=); dev2 added VM-mode V2 (vm_runtime)
"e2b~=2.46.4", # AsyncSandbox/AsyncTemplate APIs validated against the 2.46 line
]
[project.optional-dependencies]
# The AWS store backends (S3, Secrets Manager, DynamoDB, ECR), selected by impl pointer in config.toml.
aws = [
"boto3>=1.35.0",
"botocore>=1.35.0",
]
# The local explorer / `agent-env up` (Part 5). Optional so a library or worker install
# stays lean; `agent-env up` fails fast with an install hint when it is absent.
explorer = [
"fastapi>=0.110",
"uvicorn>=0.29",
]
# The Google Cloud store backends, selected by impl pointer in config.toml.
gcp = [
"google-api-core>=2.24",
"google-auth>=2.40",
"google-cloud-secret-manager>=2.20",
"google-cloud-storage>=3.0",
"requests>=2.31",
]
# The sail_vm sandbox provider (Sail Research Sailboxes), selected with --sandbox sail_vm.
sail = [
"sail~=0.12.8", # Sailbox exec/fs/listener/egress APIs validated against the 0.12 line
]
vercel = [
"anyio>=4,<5",
"httpx2>=2.13.1,<3",
"vercel-sandbox>=0.7.0,<0.8", # provides the vercel.sandbox namespace without the full vercel bundle
]
# The Tensorlake sandbox provider, selected as the built-in `tensorlake` backend.
tensorlake = [
"tensorlake~=0.5.140", # AsyncSandbox APIs validated against 0.5.140 to 0.5.149
]
# The Tenki Sandbox VM provider, selected as the built-in `tenki` backend.
tenki = [
"tenki[async]~=1.4.1", # AsyncClient/AsyncSandbox exec, stdin, ports and egress APIs validated against the 1.4 line
]
# The boxd machine provider, selected as the built-in `boxd` backend.
boxd = [
"boxd~=0.2.17", # AsyncBoxd machines, exec, proxies, egress allowlist and delete-after validated against 0.2.17
]
dev = [
"agentenv-framework[aws,boxd,explorer,gcp,sail,tensorlake,tenki,vercel]", # exercise portable optional providers and stores in CI
"fastmcp>=3.4,<4", # the standalone-fastmcp mount path of the protocol; <4 keeps mcp 1.x
"griffelib==2.3.0", # the plugin API check; exact, since what it reports as a break changes between releases
"moto>=5.0.0",
"psycopg2-binary>=2.9.0", # the gateway server module's driver; outside its container only the tests import it
"pytest>=9.0",
"pytest-asyncio>=0.23.0",
"pytest-dependency>=0.6.0",
"pytest-socket>=0.7.0",
"pytest-timeout>=2.3.0",
"pytest-xdist>=3.0.0",
"ruff==0.16.10", # the lint gate; exact, since what it reports changes between releases
]
smol = [
"smolmachines>=1.27.0",
]
[project.scripts]
agent-env = "agent_env.cli:cli"
[project.entry-points."agent_env.bundles"]
agents = "agent_env"
hello = "agent_env.examples"
echo-mcp = "agent_env.examples"
[project.urls]
Homepage = "https://www.agentenvframework.com"
Documentation = "https://www.agentenvframework.com/docs"
Repository = "https://github.com/scaleapi/agentenv-framework"
Issues = "https://github.com/scaleapi/agentenv-framework/issues"
Changelog = "https://github.com/scaleapi/agentenv-framework/releases"
[tool.hatch.build.targets.wheel]
packages = ["src/agent_env"]
# The explorer UI *source* lives at src/agent_env/explorer/ui/ (a Next.js project).
# Keep it out of the wheel — only its built output ships, copied to explorer/static/
# by the UI build step. node_modules/out/.next are already .gitignore-excluded.
exclude = ["src/agent_env/explorer/ui"]
# The release workflow writes it and git ignores it; a build ships it when it's there.
artifacts = ["src/agent_env/env/published_images.json"]
[tool.hatch.build.targets.sdist]
only-include = ["src", "tst", "packages/agentenv-protocol", ".github/scripts"]
artifacts = ["src/agent_env/env/published_images.json"]
[tool.uv.workspace]
members = ["packages/agentenv-protocol"]
[tool.uv.sources]
agentenv-framework-protocol = { workspace = true }
[tool.pytest.ini_options]
asyncio_mode = "strict"
asyncio_default_test_loop_scope = "session"
asyncio_default_fixture_loop_scope = "session"
filterwarnings = [
"ignore:Pydantic serializer warnings:UserWarning",
]
markers = [
"integration: marks tests as integration tests (may require external services)",
"installer: runs the real pip, uv and pipx offline against locally built wheels (tst/installer; `make installer-test`)",
"int_test_slow: marks integration tests that take minutes per test (real Docker build / sandbox VM / Modal / gateway / agent). Excluded from the fast tier; opt in via `make int-test-slow`.",
]
log_cli = true
log_cli_level = "INFO"
log_cli_format = "%(asctime)s %(levelname)s %(name)s: %(message)s"
[tool.ruff.lint]
select = ["F"]