-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
163 lines (154 loc) · 6.42 KB
/
Copy pathpyproject.toml
File metadata and controls
163 lines (154 loc) · 6.42 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
162
163
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "agent-assembly"
version = "0.0.1rc3"
description = "Python SDK for AI Agent Assembly - A governance-native runtime for AI agents"
authors = [{ name = "Agent Assembly Team", email = "team@agent-assembly.dev" }]
requires-python = ">=3.12,<4.0"
readme = "README.md"
license = { file = "LICENSE" }
keywords = ["ai-agent", "governance", "mcp", "assembly", "runtime", "policy"]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
]
dependencies = [
"pydantic>=2.0.0,<3.0.0",
"httpx>=0.27.0,<1.0.0",
"typing-extensions>=4.0.0",
# AAASM-1654 (PR-E): OpControlSubscriber consumes PolicyService.OpControlStream
# via gRPC. Held to grpcio's modern stable line.
"grpcio>=1.66,<2",
"protobuf>=5,<8",
]
[project.optional-dependencies]
# Triggers the platform wheel that bundles the aasm sidecar binary at
# agent_assembly/bin/aasm. Empty list — selection is purely by the
# platform-tagged wheel that maturin produces, not by extra deps.
runtime = []
# Catch-all alias for users who want the full SDK + runtime install.
all = ["agent-assembly[runtime]"]
[project.scripts]
aasm = "agent_assembly.cli.main:main"
[project.urls]
Homepage = "https://github.com/AI-agent-assembly/python-sdk"
Repository = "https://github.com/AI-agent-assembly/python-sdk"
[dependency-groups]
dev = [
"coverage~=7.10",
"python-dotenv>=1.0.1,<2",
# AAASM-1654 (PR-E): grpcio-tools provides protoc + Python plugin used by
# scripts/gen_proto.py to regenerate agent_assembly/proto/*_pb2*.py from
# the sibling agent-assembly/proto/ checkout.
"grpcio-tools>=1.66,<2",
{ include-group = "lint" },
{ include-group = "test" },
]
lint = [
"ruff>=0.1.0",
"mypy>=1.11,<3",
]
test = [
"pytest>=8.1.1,<10",
"pytest-cov>=5.0.0,<8",
"pytest-rerunfailures>=14.0,<17",
"pytest-asyncio>=0.23.0,<2",
"pytest-benchmark>=4.0.0,<6",
# AAASM-2943: dev/test-only (NOT a runtime dependency). Installing the
# framework lets the `importorskip`-guarded Pydantic AI integration tests
# run in CI (the `dev` group includes `test`, and the integration-test job
# installs `dev`), so the function-tool governance regression is actually
# exercised instead of skipped.
"pydantic-ai>=0.3.0",
# AAASM-3528: dev/test-only (NOT a runtime dependency). The shipped OpenAI
# Agents framework is the top-level `agents` package (NOT `openai.agents`),
# and a tool runs via its per-instance `on_invoke_tool` coroutine (NOT a
# `FunctionTool.__call__`). Installing it lets the `importorskip`-guarded
# integration test drive a real tool call, so a regression to the old
# fail-open no-op patch is actually caught instead of silently skipped.
"openai-agents>=0.1.0",
# AAASM-3539: dev/test-only (NOT a runtime dependency). smolagents routes
# every tool execution through `smolagents.tools.Tool.__call__` (which calls
# `self.forward`); installing it lets the `importorskip`-guarded adapter
# tests drive a real `Tool` subclass, so a regression to a fail-open no-op
# patch is caught (deny must block `forward`) instead of silently skipped.
"smolagents>=1.0.0,<2.0.0",
# AAASM-3537: dev/test-only (NOT a runtime dependency). Agno (formerly
# Phidata) runs every function-tool body through
# `agno.tools.function.FunctionCall.execute` / `aexecute`. Installing it lets
# the `importorskip`-guarded integration test drive a real `FunctionCall`, so
# the negative-control deny test fails if the patch ever regresses to a no-op
# instead of being silently skipped.
"agno>=2.0.0",
# AAASM-3536: dev/test-only (NOT a runtime dependency). LlamaIndex routes
# tool execution through the concrete `FunctionTool.call` / `acall` methods;
# installing it lets the `importorskip`-guarded governance tests drive a
# real `FunctionTool` so a regression to a fail-open no-op patch is caught
# rather than silently skipped.
"llama-index-core>=0.10.0",
]
pre-commit-ci = [
"pre-commit>=3.5.0,<5",
"pylint>=3.1.0,<5",
{ include-group = "lint" },
]
# AAASM-4034: dev/test-only (NOT a runtime dependency) and DELIBERATELY excluded
# from `default-groups`. The default suite must stay langchain-free so the
# existing callback-delegation tests keep exercising the empty
# `_FallbackBaseCallbackHandler` fallback. Installing `langchain-core` swaps the
# real `langchain_core.callbacks.BaseCallbackHandler` in as the base of
# `AssemblyCallbackHandler`, which lets the `importorskip`-guarded contract test
# prove the AAASM-4014 `__getattr__` never shadows or synthesizes a real
# LangChain callback-contract member. Run it with:
# uv sync --group langchain-test
# .venv/bin/python -m pytest test/unit/adapters/langchain/test_getattr_contract_with_langchain.py
langchain-test = [
{ include-group = "test" },
"langchain-core>=0.3.0,<1.5.0",
]
docs = [
"mkdocs>=1.6.0,<2",
"mkdocs-material>=9.5.0,<10",
"mkdocstrings>=0.24.0,<2",
"mkdocstrings-python>=1.10.0,<3",
"mike>=2.1.0,<3",
"mkdocs-autorefs>=1.0.0,<2",
"mkdocs-git-revision-date-localized-plugin>=1.2.0,<2",
"mkdocs-git-authors-plugin>=0.9.0,<1",
]
[tool.uv]
default-groups = [
"dev",
"pre-commit-ci",
]
[tool.maturin]
manifest-path = "native/aa-ffi-python/Cargo.toml"
module-name = "agent_assembly._core"
python-source = "."
bindings = "pyo3"
features = ["pyo3/extension-module"]
# aasm sidecar binary is placed at agent_assembly/bin/aasm by the release
# workflow before `maturin build`; runtime.py's find_aasm_binary() resolves
# WHEEL_BUNDLED_BIN to that same path at import time.
include = [
{ path = "agent_assembly/bin/aasm", format = "wheel" },
{ path = "agent_assembly/bin/aasm.exe", format = "wheel" },
]
[tool.hatch.build.targets.sdist]
include = ["agent_assembly/"]
packages = ["agent_assembly"]
#artifacts = ["agent_assembly/py.typed"]
[tool.hatch.build.targets.wheel]
include = ["agent_assembly/"]
packages = ["agent_assembly"]
#artifacts = ["agent_assembly/py.typed"]