agent-supervisor 0.1.2__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agent_supervisor-0.2.0/.github/workflows/ci.yml +100 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/.gitignore +1 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/Cargo.lock +180 -1
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/Cargo.toml +14 -2
- agent_supervisor-0.2.0/PKG-INFO +74 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/README.md +62 -15
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/agent_supervisor/__init__.py +63 -2
- agent_supervisor-0.2.0/agent_supervisor/_lifecycle.py +161 -0
- agent_supervisor-0.2.0/agent_supervisor/_run_scope.py +11 -0
- agent_supervisor-0.2.0/agent_supervisor/agent_run.py +130 -0
- agent_supervisor-0.2.0/agent_supervisor/fastmcp.py +138 -0
- agent_supervisor-0.2.0/agent_supervisor/google_adk.py +26 -0
- agent_supervisor-0.2.0/agent_supervisor/langgraph.py +15 -0
- agent_supervisor-0.2.0/agent_supervisor/mcp.py +186 -0
- agent_supervisor-0.2.0/agent_supervisor/microsoft.py +120 -0
- agent_supervisor-0.2.0/agent_supervisor/openai.py +103 -0
- agent_supervisor-0.2.0/agent_supervisor/pydantic_ai.py +13 -0
- agent_supervisor-0.2.0/dist/agent_supervisor-0.2.0-cp39-abi3-manylinux_2_39_x86_64.whl +0 -0
- agent_supervisor-0.2.0/docs/api-boundaries.md +431 -0
- agent_supervisor-0.2.0/docs/api-reference.md +156 -0
- agent_supervisor-0.2.0/docs/index.md +71 -0
- agent_supervisor-0.2.0/docs/javascripts/mermaid-init.js +13 -0
- agent_supervisor-0.2.0/docs/mcp.md +190 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/openshell.md +1 -1
- agent_supervisor-0.2.0/docs/python-api.md +508 -0
- agent_supervisor-0.2.0/docs/quickstart.md +122 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/releases/0.1.2.md +3 -3
- agent_supervisor-0.2.0/docs/releases/0.1.3.md +34 -0
- agent_supervisor-0.2.0/docs/releases/0.2.0.md +45 -0
- agent_supervisor-0.2.0/docs/rust-api.md +349 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/stylesheets/extra.css +23 -13
- agent_supervisor-0.2.0/docs/testing.md +78 -0
- agent_supervisor-0.2.0/docs/wasm-backend.md +66 -0
- agent_supervisor-0.2.0/examples/README.md +16 -0
- agent_supervisor-0.2.0/examples/python/official_mcp_server.py +47 -0
- agent_supervisor-0.2.0/examples/python/prefect_fastmcp_server.py +47 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/mkdocs.yml +27 -10
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/pyproject.toml +10 -1
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/python/Cargo.lock +28 -2
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/python/Cargo.toml +2 -2
- agent_supervisor-0.2.0/python/README.md +44 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/python/src/lib.rs +334 -9
- agent_supervisor-0.2.0/python/src/mcp_stdio.rs +190 -0
- agent_supervisor-0.2.0/python/tests/fixtures/official_mcp_server.py +47 -0
- agent_supervisor-0.2.0/python/tests/fixtures/prefect_mcp_server.py +47 -0
- agent_supervisor-0.2.0/python/tests/test_api.py +378 -0
- agent_supervisor-0.2.0/python/tests/test_framework_adapters.py +234 -0
- agent_supervisor-0.2.0/python/tests/test_mcp_adapters.py +255 -0
- agent_supervisor-0.2.0/python/tests/test_microsoft.py +138 -0
- agent_supervisor-0.2.0/python/tests/test_openai.py +109 -0
- agent_supervisor-0.2.0/python/tests/test_supervision_settings.py +59 -0
- agent_supervisor-0.2.0/src/agent_run.rs +330 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/events.rs +117 -11
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/lib.rs +38 -4
- agent_supervisor-0.2.0/src/mcp/policy.rs +269 -0
- agent_supervisor-0.2.0/src/mcp/relay.rs +207 -0
- agent_supervisor-0.2.0/src/mcp.rs +264 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/runner.rs +2 -2
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/supervisor.rs +42 -0
- agent_supervisor-0.2.0/src/wasm.rs +640 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/windows_filesystem.rs +14 -10
- agent_supervisor-0.2.0/tests/fixtures/mcp_stdio_fixture.rs +68 -0
- agent_supervisor-0.2.0/tests/mcp_stdio.rs +166 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/tests/windows_filesystem.rs +75 -1
- agent_supervisor-0.1.2/.github/workflows/ci.yml +0 -54
- agent_supervisor-0.1.2/PKG-INFO +0 -36
- agent_supervisor-0.1.2/dist/agent_supervisor-0.1.2-cp39-abi3-manylinux_2_39_x86_64.whl +0 -0
- agent_supervisor-0.1.2/docs/api-boundaries.md +0 -31
- agent_supervisor-0.1.2/docs/index.md +0 -72
- agent_supervisor-0.1.2/docs/python-api.md +0 -216
- agent_supervisor-0.1.2/docs/quickstart.md +0 -54
- agent_supervisor-0.1.2/python/README.md +0 -20
- agent_supervisor-0.1.2/python/tests/test_api.py +0 -162
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/.github/workflows/docs.yml +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/.github/workflows/publish-python.yml +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/LICENSE +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/network-host-mode.md +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/process-groups.md +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/releases/0.1.0.md +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/releases/0.1.1.md +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/security-model.md +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/supervisor-lifecycle.md +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/environment.rs +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/error.rs +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/filesystem.rs +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/group.rs +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/network.rs +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/pipeline.rs +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/policy.rs +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/probes.rs +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/process_control.rs +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/pty.rs +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/tests/filesystem_unsupported.rs +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/tests/linux_filesystem.rs +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/tests/loom_supervisor.rs +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/tests/macos_filesystem.rs +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/tests/macos_smoke.rs +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/tests/resource_limits_properties.rs +0 -0
- {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/tests/windows_smoke.rs +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
name: ci
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
python:
|
|
9
|
+
strategy:
|
|
10
|
+
fail-fast: false
|
|
11
|
+
matrix:
|
|
12
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
13
|
+
runs-on: ${{ matrix.os }}
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
17
|
+
- uses: actions/setup-python@v5
|
|
18
|
+
with:
|
|
19
|
+
python-version: '3.9'
|
|
20
|
+
- name: Check Python binding formatting
|
|
21
|
+
run: cargo fmt --manifest-path python/Cargo.toml -- --check
|
|
22
|
+
- name: Install maturin
|
|
23
|
+
run: python -m pip install maturin
|
|
24
|
+
- name: Build Python wheel
|
|
25
|
+
run: python -m maturin build --manifest-path python/Cargo.toml --interpreter python
|
|
26
|
+
- name: Install wheel and run Python API tests
|
|
27
|
+
shell: bash
|
|
28
|
+
run: |
|
|
29
|
+
python -m pip install --no-deps python/target/wheels/*.whl
|
|
30
|
+
python -m unittest discover -s python/tests -v
|
|
31
|
+
|
|
32
|
+
mcp-integration:
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
steps:
|
|
35
|
+
- uses: actions/checkout@v4
|
|
36
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
37
|
+
- uses: actions/setup-python@v5
|
|
38
|
+
with:
|
|
39
|
+
python-version: '3.12'
|
|
40
|
+
- name: Install Python MCP extras and package
|
|
41
|
+
working-directory: python
|
|
42
|
+
run: python -m pip install -e '.[mcp,fastmcp]'
|
|
43
|
+
- name: Run official MCP and FastMCP adapter tests
|
|
44
|
+
run: python -m unittest discover -s python/tests -v
|
|
45
|
+
- name: Build Rust rmcp server example
|
|
46
|
+
run: cargo build --manifest-path examples/rust/rmcp-server/Cargo.toml --locked
|
|
47
|
+
- name: Exercise Rust rmcp server with official Python MCP client
|
|
48
|
+
run: python examples/rust/rmcp-server/check.py examples/rust/rmcp-server/target/debug/agent-supervisor-rmcp-example
|
|
49
|
+
|
|
50
|
+
openai-adapter:
|
|
51
|
+
runs-on: ubuntu-latest
|
|
52
|
+
steps:
|
|
53
|
+
- uses: actions/checkout@v4
|
|
54
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
55
|
+
- uses: actions/setup-python@v5
|
|
56
|
+
with:
|
|
57
|
+
python-version: '3.12'
|
|
58
|
+
- name: Install OpenAI Agents SDK and build tools
|
|
59
|
+
run: python -m pip install maturin openai-agents
|
|
60
|
+
- name: Build Python wheel
|
|
61
|
+
run: python -m maturin build --manifest-path python/Cargo.toml --interpreter python
|
|
62
|
+
- name: Install wheel and test OpenAI Runner adapter
|
|
63
|
+
shell: bash
|
|
64
|
+
run: |
|
|
65
|
+
python -m pip install --no-deps python/target/wheels/*.whl
|
|
66
|
+
python -m unittest discover -s python/tests -p 'test_openai.py' -v
|
|
67
|
+
|
|
68
|
+
openshell-adapter:
|
|
69
|
+
runs-on: ubuntu-latest
|
|
70
|
+
steps:
|
|
71
|
+
- uses: actions/checkout@v4
|
|
72
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
73
|
+
- name: Run OpenShell adapter unit tests without a live gateway
|
|
74
|
+
run: cargo test --manifest-path dev/openshell-adapter/Cargo.toml --locked
|
|
75
|
+
|
|
76
|
+
rust:
|
|
77
|
+
strategy:
|
|
78
|
+
fail-fast: false
|
|
79
|
+
matrix:
|
|
80
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
81
|
+
runs-on: ${{ matrix.os }}
|
|
82
|
+
steps:
|
|
83
|
+
- uses: actions/checkout@v4
|
|
84
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
85
|
+
- run: cargo fmt --check
|
|
86
|
+
- run: cargo test --all-targets -- --test-threads=1
|
|
87
|
+
timeout-minutes: 5
|
|
88
|
+
- run: cargo test --features wasm --all-targets -- --test-threads=1
|
|
89
|
+
timeout-minutes: 10
|
|
90
|
+
- name: Run platform network integration test
|
|
91
|
+
if: runner.os == 'Windows'
|
|
92
|
+
run: cargo test --test windows_filesystem -- --test-threads=1
|
|
93
|
+
- name: Run platform network integration test
|
|
94
|
+
if: runner.os == 'macOS'
|
|
95
|
+
run: cargo test --test macos_filesystem -- --test-threads=1
|
|
96
|
+
- name: Run platform network integration test
|
|
97
|
+
if: runner.os == 'Linux'
|
|
98
|
+
run: cargo test --test linux_filesystem -- --test-threads=1
|
|
99
|
+
- run: cargo check --all-targets
|
|
100
|
+
- run: cargo clippy --all-targets -- -D warnings
|
|
@@ -4,7 +4,7 @@ version = 4
|
|
|
4
4
|
|
|
5
5
|
[[package]]
|
|
6
6
|
name = "agent-supervisor"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.2.0"
|
|
8
8
|
dependencies = [
|
|
9
9
|
"futures",
|
|
10
10
|
"landlock",
|
|
@@ -19,6 +19,8 @@ dependencies = [
|
|
|
19
19
|
"thiserror 1.0.69",
|
|
20
20
|
"tokio",
|
|
21
21
|
"tokio-util",
|
|
22
|
+
"wasmi",
|
|
23
|
+
"wat",
|
|
22
24
|
"windows-sys",
|
|
23
25
|
]
|
|
24
26
|
|
|
@@ -70,6 +72,12 @@ version = "2.13.1"
|
|
|
70
72
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
71
73
|
checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
|
|
72
74
|
|
|
75
|
+
[[package]]
|
|
76
|
+
name = "bumpalo"
|
|
77
|
+
version = "3.20.3"
|
|
78
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
79
|
+
checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
|
|
80
|
+
|
|
73
81
|
[[package]]
|
|
74
82
|
name = "bytes"
|
|
75
83
|
version = "1.12.1"
|
|
@@ -124,6 +132,12 @@ dependencies = [
|
|
|
124
132
|
"syn 2.0.119",
|
|
125
133
|
]
|
|
126
134
|
|
|
135
|
+
[[package]]
|
|
136
|
+
name = "equivalent"
|
|
137
|
+
version = "1.0.3"
|
|
138
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
139
|
+
checksum = "00d174d5400e5e8fd687ad1049e2f578285fa914201b1af7e8b112a4546bd826"
|
|
140
|
+
|
|
127
141
|
[[package]]
|
|
128
142
|
name = "errno"
|
|
129
143
|
version = "0.3.14"
|
|
@@ -163,6 +177,12 @@ version = "1.0.7"
|
|
|
163
177
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
164
178
|
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
|
165
179
|
|
|
180
|
+
[[package]]
|
|
181
|
+
name = "foldhash"
|
|
182
|
+
version = "0.1.5"
|
|
183
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
184
|
+
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
|
|
185
|
+
|
|
166
186
|
[[package]]
|
|
167
187
|
name = "futures"
|
|
168
188
|
version = "0.3.34"
|
|
@@ -289,6 +309,31 @@ dependencies = [
|
|
|
289
309
|
"r-efi 6.0.0",
|
|
290
310
|
]
|
|
291
311
|
|
|
312
|
+
[[package]]
|
|
313
|
+
name = "hashbrown"
|
|
314
|
+
version = "0.15.5"
|
|
315
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
316
|
+
checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
|
|
317
|
+
dependencies = [
|
|
318
|
+
"foldhash",
|
|
319
|
+
]
|
|
320
|
+
|
|
321
|
+
[[package]]
|
|
322
|
+
name = "hashbrown"
|
|
323
|
+
version = "0.17.1"
|
|
324
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
325
|
+
checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
|
|
326
|
+
|
|
327
|
+
[[package]]
|
|
328
|
+
name = "indexmap"
|
|
329
|
+
version = "2.14.2"
|
|
330
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
331
|
+
checksum = "cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855"
|
|
332
|
+
dependencies = [
|
|
333
|
+
"equivalent",
|
|
334
|
+
"hashbrown 0.17.1",
|
|
335
|
+
]
|
|
336
|
+
|
|
292
337
|
[[package]]
|
|
293
338
|
name = "itoa"
|
|
294
339
|
version = "1.0.18"
|
|
@@ -312,12 +357,24 @@ version = "1.5.0"
|
|
|
312
357
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
313
358
|
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
|
314
359
|
|
|
360
|
+
[[package]]
|
|
361
|
+
name = "leb128fmt"
|
|
362
|
+
version = "0.1.0"
|
|
363
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
364
|
+
checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
|
|
365
|
+
|
|
315
366
|
[[package]]
|
|
316
367
|
name = "libc"
|
|
317
368
|
version = "0.2.189"
|
|
318
369
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
319
370
|
checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
|
|
320
371
|
|
|
372
|
+
[[package]]
|
|
373
|
+
name = "libm"
|
|
374
|
+
version = "0.2.16"
|
|
375
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
376
|
+
checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
|
|
377
|
+
|
|
321
378
|
[[package]]
|
|
322
379
|
name = "linux-raw-sys"
|
|
323
380
|
version = "0.12.1"
|
|
@@ -597,6 +654,12 @@ dependencies = [
|
|
|
597
654
|
"libc",
|
|
598
655
|
]
|
|
599
656
|
|
|
657
|
+
[[package]]
|
|
658
|
+
name = "semver"
|
|
659
|
+
version = "1.0.28"
|
|
660
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
661
|
+
checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
|
|
662
|
+
|
|
600
663
|
[[package]]
|
|
601
664
|
name = "serde"
|
|
602
665
|
version = "1.0.229"
|
|
@@ -714,6 +777,22 @@ dependencies = [
|
|
|
714
777
|
"windows-sys",
|
|
715
778
|
]
|
|
716
779
|
|
|
780
|
+
[[package]]
|
|
781
|
+
name = "spin"
|
|
782
|
+
version = "0.9.9"
|
|
783
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
784
|
+
checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e"
|
|
785
|
+
|
|
786
|
+
[[package]]
|
|
787
|
+
name = "string-interner"
|
|
788
|
+
version = "0.19.0"
|
|
789
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
790
|
+
checksum = "23de088478b31c349c9ba67816fa55d9355232d63c3afea8bf513e31f0f1d2c0"
|
|
791
|
+
dependencies = [
|
|
792
|
+
"hashbrown 0.15.5",
|
|
793
|
+
"serde",
|
|
794
|
+
]
|
|
795
|
+
|
|
717
796
|
[[package]]
|
|
718
797
|
name = "syn"
|
|
719
798
|
version = "2.0.119"
|
|
@@ -899,6 +978,12 @@ version = "1.0.24"
|
|
|
899
978
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
900
979
|
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
901
980
|
|
|
981
|
+
[[package]]
|
|
982
|
+
name = "unicode-width"
|
|
983
|
+
version = "0.2.3"
|
|
984
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
985
|
+
checksum = "ca718471876992059f251e33aafc334346ada08042b7661dd1fe313a9bced557"
|
|
986
|
+
|
|
902
987
|
[[package]]
|
|
903
988
|
name = "valuable"
|
|
904
989
|
version = "0.1.1"
|
|
@@ -929,6 +1014,100 @@ dependencies = [
|
|
|
929
1014
|
"wit-bindgen",
|
|
930
1015
|
]
|
|
931
1016
|
|
|
1017
|
+
[[package]]
|
|
1018
|
+
name = "wasm-encoder"
|
|
1019
|
+
version = "0.262.0"
|
|
1020
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1021
|
+
checksum = "4495a6f85dd94c411c749303efcbc5defade0b0cbdbc0541495241ab917a9b5a"
|
|
1022
|
+
dependencies = [
|
|
1023
|
+
"leb128fmt",
|
|
1024
|
+
"wasmparser 0.262.0",
|
|
1025
|
+
]
|
|
1026
|
+
|
|
1027
|
+
[[package]]
|
|
1028
|
+
name = "wasmi"
|
|
1029
|
+
version = "2.0.0"
|
|
1030
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1031
|
+
checksum = "78693fcdd618e0fc34af59c6b8efa9ac5d58c68df940beff4bedddb6acfe7c27"
|
|
1032
|
+
dependencies = [
|
|
1033
|
+
"spin",
|
|
1034
|
+
"wasmi_collections",
|
|
1035
|
+
"wasmi_core",
|
|
1036
|
+
"wasmi_ir",
|
|
1037
|
+
"wasmparser 0.228.0",
|
|
1038
|
+
"wat",
|
|
1039
|
+
]
|
|
1040
|
+
|
|
1041
|
+
[[package]]
|
|
1042
|
+
name = "wasmi_collections"
|
|
1043
|
+
version = "2.0.0"
|
|
1044
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1045
|
+
checksum = "8a8be2aa467cf2d29e96ff759472c36eeb44a3c81c67fc9cb76c9a24c519c557"
|
|
1046
|
+
dependencies = [
|
|
1047
|
+
"string-interner",
|
|
1048
|
+
]
|
|
1049
|
+
|
|
1050
|
+
[[package]]
|
|
1051
|
+
name = "wasmi_core"
|
|
1052
|
+
version = "2.0.0"
|
|
1053
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1054
|
+
checksum = "69372d5fda3ea3d1e0aa6603c7888110e0187e88ea17cd8fc2e2df0a0e1f37fa"
|
|
1055
|
+
dependencies = [
|
|
1056
|
+
"libm",
|
|
1057
|
+
]
|
|
1058
|
+
|
|
1059
|
+
[[package]]
|
|
1060
|
+
name = "wasmi_ir"
|
|
1061
|
+
version = "2.0.0"
|
|
1062
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1063
|
+
checksum = "8f17b774caa13c618c7244f1ee51fe23c5e7b8538a471fa46d9949779758aed6"
|
|
1064
|
+
dependencies = [
|
|
1065
|
+
"wasmi_core",
|
|
1066
|
+
]
|
|
1067
|
+
|
|
1068
|
+
[[package]]
|
|
1069
|
+
name = "wasmparser"
|
|
1070
|
+
version = "0.228.0"
|
|
1071
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1072
|
+
checksum = "4abf1132c1fdf747d56bbc1bb52152400c70f336870f968b85e89ea422198ae3"
|
|
1073
|
+
dependencies = [
|
|
1074
|
+
"bitflags 2.13.1",
|
|
1075
|
+
"indexmap",
|
|
1076
|
+
]
|
|
1077
|
+
|
|
1078
|
+
[[package]]
|
|
1079
|
+
name = "wasmparser"
|
|
1080
|
+
version = "0.262.0"
|
|
1081
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1082
|
+
checksum = "974d643b125b272607e2fff8012ea14a8328acd7621e4bafa7afb32500052b1b"
|
|
1083
|
+
dependencies = [
|
|
1084
|
+
"bitflags 2.13.1",
|
|
1085
|
+
"indexmap",
|
|
1086
|
+
"semver",
|
|
1087
|
+
]
|
|
1088
|
+
|
|
1089
|
+
[[package]]
|
|
1090
|
+
name = "wast"
|
|
1091
|
+
version = "262.0.0"
|
|
1092
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1093
|
+
checksum = "30612a0c29249b5f185888a107e8a519d920226b7d07f9d351fd094e9f75eb23"
|
|
1094
|
+
dependencies = [
|
|
1095
|
+
"bumpalo",
|
|
1096
|
+
"leb128fmt",
|
|
1097
|
+
"memchr",
|
|
1098
|
+
"unicode-width",
|
|
1099
|
+
"wasm-encoder",
|
|
1100
|
+
]
|
|
1101
|
+
|
|
1102
|
+
[[package]]
|
|
1103
|
+
name = "wat"
|
|
1104
|
+
version = "1.262.0"
|
|
1105
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1106
|
+
checksum = "e228027f2b07bbaf946980ebbe2437fca73be6f54c40c2a8d4f42f277075f8d1"
|
|
1107
|
+
dependencies = [
|
|
1108
|
+
"wast",
|
|
1109
|
+
]
|
|
1110
|
+
|
|
932
1111
|
[[package]]
|
|
933
1112
|
name = "winapi"
|
|
934
1113
|
version = "0.3.9"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "agent-supervisor"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.2.0"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
license = "Apache-2.0"
|
|
6
6
|
description = "Policy-driven process isolation and supervision for RooAGI runtimes"
|
|
@@ -14,9 +14,15 @@ readme = "README.md"
|
|
|
14
14
|
futures = "0.3"
|
|
15
15
|
serde = { version = "1", features = ["derive"] }
|
|
16
16
|
thiserror = "1"
|
|
17
|
-
tokio = { version = "1", features = ["fs", "io-util", "macros", "net", "process", "rt", "rt-multi-thread", "time"] }
|
|
17
|
+
tokio = { version = "1", features = ["fs", "io-std", "io-util", "macros", "net", "process", "rt", "rt-multi-thread", "time"] }
|
|
18
18
|
tokio-util = "0.7"
|
|
19
19
|
portable-pty = "0.9"
|
|
20
|
+
wasmi = { version = "2", optional = true }
|
|
21
|
+
serde_json = "1"
|
|
22
|
+
|
|
23
|
+
[features]
|
|
24
|
+
default = []
|
|
25
|
+
wasm = ["dep:wasmi"]
|
|
20
26
|
|
|
21
27
|
[target.'cfg(unix)'.dependencies]
|
|
22
28
|
libc = "0.2"
|
|
@@ -44,3 +50,9 @@ loom = "0.7"
|
|
|
44
50
|
proptest = "1"
|
|
45
51
|
serde_json = "1"
|
|
46
52
|
tempfile = "3"
|
|
53
|
+
wat = "1"
|
|
54
|
+
|
|
55
|
+
[[bin]]
|
|
56
|
+
name = "mcp-stdio-fixture"
|
|
57
|
+
path = "tests/fixtures/mcp_stdio_fixture.rs"
|
|
58
|
+
test = false
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agent-supervisor
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Classifier: Development Status :: 3 - Alpha
|
|
5
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
6
|
+
Classifier: Operating System :: MacOS
|
|
7
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
8
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Programming Language :: Rust
|
|
11
|
+
Requires-Dist: fastmcp>=2,<5 ; extra == 'fastmcp'
|
|
12
|
+
Requires-Dist: google-adk>=1.0,<3 ; extra == 'google-adk'
|
|
13
|
+
Requires-Dist: langgraph>=1.0,<2 ; extra == 'langgraph'
|
|
14
|
+
Requires-Dist: mcp>=1.22,<3 ; extra == 'mcp'
|
|
15
|
+
Requires-Dist: agent-framework-openai>=1.0,<2 ; extra == 'microsoft'
|
|
16
|
+
Requires-Dist: openai-agents>=0.0.4 ; extra == 'openai'
|
|
17
|
+
Requires-Dist: pydantic-ai>=1.0,<3 ; extra == 'pydantic-ai'
|
|
18
|
+
Provides-Extra: fastmcp
|
|
19
|
+
Provides-Extra: google-adk
|
|
20
|
+
Provides-Extra: langgraph
|
|
21
|
+
Provides-Extra: mcp
|
|
22
|
+
Provides-Extra: microsoft
|
|
23
|
+
Provides-Extra: openai
|
|
24
|
+
Provides-Extra: pydantic-ai
|
|
25
|
+
Summary: Policy-driven process isolation and supervision for agent runtimes
|
|
26
|
+
License: Apache-2.0
|
|
27
|
+
Requires-Python: >=3.9
|
|
28
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
29
|
+
|
|
30
|
+
# agent-supervisor for Python
|
|
31
|
+
|
|
32
|
+
Python bindings for the `agent-supervisor` native process supervisor.
|
|
33
|
+
|
|
34
|
+
Version 0.2.0 source provides bounded one-shot execution and output-event
|
|
35
|
+
streaming through the native Linux, macOS, and Windows backends. The latest
|
|
36
|
+
published PyPI version is 0.1.2. Its wheels target Apple Silicon macOS,
|
|
37
|
+
x86-64 Windows, and x86-64 Linux with glibc 2.39 or newer. The Rust crate's
|
|
38
|
+
optional WASM runner is not exposed by the Python binding.
|
|
39
|
+
|
|
40
|
+
Install the published package with `python -m pip install agent-supervisor`.
|
|
41
|
+
To use the current repository source, build it from this checkout:
|
|
42
|
+
|
|
43
|
+
## Build from this checkout
|
|
44
|
+
|
|
45
|
+
Create and activate a virtual environment, then run:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
python -m pip install maturin
|
|
49
|
+
cd python
|
|
50
|
+
python -m maturin develop
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
The API and supported platform behavior are documented in
|
|
54
|
+
[`../docs/python-api.md`](../docs/python-api.md). The repository source also includes
|
|
55
|
+
optional stdio adapters for the official MCP Python SDK and Prefect FastMCP; see
|
|
56
|
+
[`../docs/mcp.md`](../docs/mcp.md) for complete server examples and installation steps.
|
|
57
|
+
|
|
58
|
+
The 0.2.0 repository source includes optional run adapters for OpenAI Agents
|
|
59
|
+
SDK, Microsoft Agent Framework, LangGraph, PydanticAI, and Google ADK. The
|
|
60
|
+
published PyPI package is 0.1.2 and does not include these adapters yet. From a
|
|
61
|
+
checkout, install an adapter with its matching extra, for example:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
cd python
|
|
65
|
+
python -m pip install -e '.[langgraph]'
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Use `openai`, `microsoft`, `pydantic-ai`, or `google-adk` for the other
|
|
69
|
+
adapters. They share the Rust run scope,
|
|
70
|
+
apply the same default deadline and cleanup behavior, and clean up local tool
|
|
71
|
+
processes started through Agent Supervisor. Agent code remains in your app
|
|
72
|
+
process. See the
|
|
73
|
+
[agent SDK integration guide](../docs/api-boundaries.md).
|
|
74
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# RooAGI Agent Supervisor
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
SUPERVISE AND CONTAIN AGENT TOOL EXECUTION
|
|
4
4
|
|
|
5
5
|
RooAGI Agent Supervisor gives your application control over every tool process
|
|
6
6
|
it starts: bound its output, cancel it, clean up its children, and record how
|
|
@@ -20,7 +20,7 @@ application remains responsible for identity, authentication, authorization,
|
|
|
20
20
|
and orchestration. Enforcement depends on the operating system and selected
|
|
21
21
|
policy; inspect the execution result and platform capabilities.
|
|
22
22
|
|
|
23
|
-
The current
|
|
23
|
+
The current version in this checkout is **0.2.0**.
|
|
24
24
|
|
|
25
25
|
## Who it is for
|
|
26
26
|
|
|
@@ -59,6 +59,44 @@ For each execution, the library provides a consistent control surface:
|
|
|
59
59
|
- finish with a structured termination result, including after cancellation
|
|
60
60
|
or failure.
|
|
61
61
|
|
|
62
|
+
## A sandbox layer for agent tools
|
|
63
|
+
|
|
64
|
+
Agent Supervisor gives agent runtimes a boundary for tools, MCP servers, and
|
|
65
|
+
other code they start. Choose native process execution for programs that need
|
|
66
|
+
the operating system, or opt into the WebAssembly backend for self-contained
|
|
67
|
+
computations. The library applies the policies you request and reports the
|
|
68
|
+
capabilities the selected platform can enforce.
|
|
69
|
+
|
|
70
|
+
### Run self-contained code with WebAssembly
|
|
71
|
+
|
|
72
|
+
The optional `wasm` feature runs one-shot WebAssembly modules through Wasmi.
|
|
73
|
+
Modules receive no host imports, and the runner applies configured memory and
|
|
74
|
+
fuel limits. This suits generated or third-party code that can work through the
|
|
75
|
+
documented input/output ABI without filesystem, network, or other host access.
|
|
76
|
+
Native process execution remains the default for ordinary commands and tools.
|
|
77
|
+
|
|
78
|
+
### Set boundaries for native tools
|
|
79
|
+
|
|
80
|
+
Native tools can use explicit environment, filesystem, network, and resource
|
|
81
|
+
policies, along with output limits, deadlines, cancellation, and process-tree
|
|
82
|
+
cleanup. Enforcement varies by operating system and policy. Inspect reported
|
|
83
|
+
platform capabilities and use required enforcement when a request must fail
|
|
84
|
+
if a control is unavailable.
|
|
85
|
+
|
|
86
|
+
### Where it fits
|
|
87
|
+
|
|
88
|
+
- Run short-lived tools and agent-generated WebAssembly computations.
|
|
89
|
+
- Keep long-running MCP servers and their child processes under supervision.
|
|
90
|
+
- Integrate execution controls into a Rust agent runtime without moving
|
|
91
|
+
identity, credentials, authorization, or orchestration into the sandbox.
|
|
92
|
+
|
|
93
|
+
Agent Supervisor is an embeddable Rust library, not a hosted agent platform.
|
|
94
|
+
Native networking uses host access in compatibility mode; select
|
|
95
|
+
`NetworkMode::Disabled` when the platform must deny IP networking. WebAssembly
|
|
96
|
+
modules have no host imports. See the [security model](docs/security-model.md)
|
|
97
|
+
for platform guarantees and [using agent SDKs](docs/api-boundaries.md) for an
|
|
98
|
+
integration example.
|
|
99
|
+
|
|
62
100
|
## Process control in one library
|
|
63
101
|
|
|
64
102
|
- Run tools and MCP servers with bounded input, output, deadlines, and
|
|
@@ -70,12 +108,14 @@ For each execution, the library provides a consistent control surface:
|
|
|
70
108
|
events.
|
|
71
109
|
- Connect pipelines and report failures with stage-level context.
|
|
72
110
|
- Start PTY sessions with the same supervisor-owned lifecycle.
|
|
111
|
+
- Wrap an existing local stdio `rmcp` server with
|
|
112
|
+
[`run_stdio_server`](docs/mcp.md#adopt-with-the-official-mcp-sdk).
|
|
73
113
|
- Use one provider-neutral Rust API from any agent runtime.
|
|
74
114
|
|
|
75
115
|
## Architecture
|
|
76
116
|
|
|
77
117
|
```text
|
|
78
|
-
agent runtime → authorized ExecutionRequest → agent-supervisor → child
|
|
118
|
+
agent runtime → authorized ExecutionRequest → agent-supervisor → native child or opt-in WASM module
|
|
79
119
|
```
|
|
80
120
|
|
|
81
121
|
The runtime owns:
|
|
@@ -90,7 +130,7 @@ The runtime owns:
|
|
|
90
130
|
The sandbox owns:
|
|
91
131
|
|
|
92
132
|
- execution-request validation;
|
|
93
|
-
- native process creation and containment;
|
|
133
|
+
- native process creation and containment, or explicitly selected one-shot WASM execution;
|
|
94
134
|
- environment and filesystem policy enforcement;
|
|
95
135
|
- deadlines, output limits, cancellation, and cleanup;
|
|
96
136
|
- process-group ownership, introspection, and identity records; and
|
|
@@ -119,6 +159,10 @@ The supervisor supports:
|
|
|
119
159
|
Inspect `platform_capabilities()` before requiring optional behavior. Select
|
|
120
160
|
`EnforcementRequirement::Required` when degraded enforcement is unacceptable.
|
|
121
161
|
|
|
162
|
+
The optional `wasm` Cargo feature adds a pure-computation backend for modules
|
|
163
|
+
that use the [documented guest ABI](docs/wasm-backend.md). Native processes
|
|
164
|
+
remain the default; WASM modules receive no host imports.
|
|
165
|
+
|
|
122
166
|
## OpenShell developer adapter
|
|
123
167
|
|
|
124
168
|
The OpenShell adapter is a developer preview under `dev/openshell-adapter/`,
|
|
@@ -134,7 +178,7 @@ Add the crate:
|
|
|
134
178
|
|
|
135
179
|
```toml
|
|
136
180
|
[dependencies]
|
|
137
|
-
agent-supervisor = "0.
|
|
181
|
+
agent-supervisor = "0.2.0"
|
|
138
182
|
```
|
|
139
183
|
|
|
140
184
|
|
|
@@ -169,20 +213,21 @@ For default-deny filesystem access, set `filesystem` to
|
|
|
169
213
|
`FilesystemGrant` entries.
|
|
170
214
|
|
|
171
215
|
See the [quickstart](docs/quickstart.md), [security model](docs/security-model.md),
|
|
172
|
-
and [
|
|
216
|
+
and [using agent SDKs](docs/api-boundaries.md) for the integration example.
|
|
173
217
|
|
|
174
218
|
## Python bindings
|
|
175
219
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
220
|
+
The Python package is published on PyPI as `agent-supervisor` 0.1.2. Prebuilt
|
|
221
|
+
wheels are available for Apple Silicon macOS, x86-64 Windows, and x86-64 Linux
|
|
222
|
+
with glibc 2.39 or newer:
|
|
179
223
|
|
|
180
224
|
```bash
|
|
181
|
-
python -m pip install
|
|
182
|
-
cd python
|
|
183
|
-
python -m maturin develop
|
|
225
|
+
python -m pip install agent-supervisor==0.1.2
|
|
184
226
|
```
|
|
185
227
|
|
|
228
|
+
The current repository source is 0.2.0 and can be built with maturin; it has
|
|
229
|
+
not yet been published to PyPI.
|
|
230
|
+
|
|
186
231
|
See the [Python API guide](docs/python-api.md) for capture, streaming,
|
|
187
232
|
cancellation, and platform behavior.
|
|
188
233
|
|
|
@@ -237,9 +282,11 @@ behavior, and release notes:
|
|
|
237
282
|
|
|
238
283
|
## Release
|
|
239
284
|
|
|
240
|
-
See the [0.
|
|
241
|
-
the
|
|
242
|
-
|
|
285
|
+
See the [0.2.0 release notes](docs/releases/0.2.0.md) for agent-run scopes and
|
|
286
|
+
MCP integrations, the [0.1.3 notes](docs/releases/0.1.3.md) for the optional WASM
|
|
287
|
+
runner, the [0.1.2 notes](docs/releases/0.1.2.md) for Python bindings, and the
|
|
288
|
+
[0.1.1 notes](docs/releases/0.1.1.md) for the separate OpenShell developer
|
|
289
|
+
adapter and its behavior limits.
|
|
243
290
|
|
|
244
291
|
## License
|
|
245
292
|
|