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.
Files changed (99) hide show
  1. agent_supervisor-0.2.0/.github/workflows/ci.yml +100 -0
  2. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/.gitignore +1 -0
  3. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/Cargo.lock +180 -1
  4. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/Cargo.toml +14 -2
  5. agent_supervisor-0.2.0/PKG-INFO +74 -0
  6. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/README.md +62 -15
  7. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/agent_supervisor/__init__.py +63 -2
  8. agent_supervisor-0.2.0/agent_supervisor/_lifecycle.py +161 -0
  9. agent_supervisor-0.2.0/agent_supervisor/_run_scope.py +11 -0
  10. agent_supervisor-0.2.0/agent_supervisor/agent_run.py +130 -0
  11. agent_supervisor-0.2.0/agent_supervisor/fastmcp.py +138 -0
  12. agent_supervisor-0.2.0/agent_supervisor/google_adk.py +26 -0
  13. agent_supervisor-0.2.0/agent_supervisor/langgraph.py +15 -0
  14. agent_supervisor-0.2.0/agent_supervisor/mcp.py +186 -0
  15. agent_supervisor-0.2.0/agent_supervisor/microsoft.py +120 -0
  16. agent_supervisor-0.2.0/agent_supervisor/openai.py +103 -0
  17. agent_supervisor-0.2.0/agent_supervisor/pydantic_ai.py +13 -0
  18. agent_supervisor-0.2.0/dist/agent_supervisor-0.2.0-cp39-abi3-manylinux_2_39_x86_64.whl +0 -0
  19. agent_supervisor-0.2.0/docs/api-boundaries.md +431 -0
  20. agent_supervisor-0.2.0/docs/api-reference.md +156 -0
  21. agent_supervisor-0.2.0/docs/index.md +71 -0
  22. agent_supervisor-0.2.0/docs/javascripts/mermaid-init.js +13 -0
  23. agent_supervisor-0.2.0/docs/mcp.md +190 -0
  24. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/openshell.md +1 -1
  25. agent_supervisor-0.2.0/docs/python-api.md +508 -0
  26. agent_supervisor-0.2.0/docs/quickstart.md +122 -0
  27. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/releases/0.1.2.md +3 -3
  28. agent_supervisor-0.2.0/docs/releases/0.1.3.md +34 -0
  29. agent_supervisor-0.2.0/docs/releases/0.2.0.md +45 -0
  30. agent_supervisor-0.2.0/docs/rust-api.md +349 -0
  31. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/stylesheets/extra.css +23 -13
  32. agent_supervisor-0.2.0/docs/testing.md +78 -0
  33. agent_supervisor-0.2.0/docs/wasm-backend.md +66 -0
  34. agent_supervisor-0.2.0/examples/README.md +16 -0
  35. agent_supervisor-0.2.0/examples/python/official_mcp_server.py +47 -0
  36. agent_supervisor-0.2.0/examples/python/prefect_fastmcp_server.py +47 -0
  37. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/mkdocs.yml +27 -10
  38. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/pyproject.toml +10 -1
  39. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/python/Cargo.lock +28 -2
  40. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/python/Cargo.toml +2 -2
  41. agent_supervisor-0.2.0/python/README.md +44 -0
  42. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/python/src/lib.rs +334 -9
  43. agent_supervisor-0.2.0/python/src/mcp_stdio.rs +190 -0
  44. agent_supervisor-0.2.0/python/tests/fixtures/official_mcp_server.py +47 -0
  45. agent_supervisor-0.2.0/python/tests/fixtures/prefect_mcp_server.py +47 -0
  46. agent_supervisor-0.2.0/python/tests/test_api.py +378 -0
  47. agent_supervisor-0.2.0/python/tests/test_framework_adapters.py +234 -0
  48. agent_supervisor-0.2.0/python/tests/test_mcp_adapters.py +255 -0
  49. agent_supervisor-0.2.0/python/tests/test_microsoft.py +138 -0
  50. agent_supervisor-0.2.0/python/tests/test_openai.py +109 -0
  51. agent_supervisor-0.2.0/python/tests/test_supervision_settings.py +59 -0
  52. agent_supervisor-0.2.0/src/agent_run.rs +330 -0
  53. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/events.rs +117 -11
  54. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/lib.rs +38 -4
  55. agent_supervisor-0.2.0/src/mcp/policy.rs +269 -0
  56. agent_supervisor-0.2.0/src/mcp/relay.rs +207 -0
  57. agent_supervisor-0.2.0/src/mcp.rs +264 -0
  58. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/runner.rs +2 -2
  59. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/supervisor.rs +42 -0
  60. agent_supervisor-0.2.0/src/wasm.rs +640 -0
  61. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/windows_filesystem.rs +14 -10
  62. agent_supervisor-0.2.0/tests/fixtures/mcp_stdio_fixture.rs +68 -0
  63. agent_supervisor-0.2.0/tests/mcp_stdio.rs +166 -0
  64. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/tests/windows_filesystem.rs +75 -1
  65. agent_supervisor-0.1.2/.github/workflows/ci.yml +0 -54
  66. agent_supervisor-0.1.2/PKG-INFO +0 -36
  67. agent_supervisor-0.1.2/dist/agent_supervisor-0.1.2-cp39-abi3-manylinux_2_39_x86_64.whl +0 -0
  68. agent_supervisor-0.1.2/docs/api-boundaries.md +0 -31
  69. agent_supervisor-0.1.2/docs/index.md +0 -72
  70. agent_supervisor-0.1.2/docs/python-api.md +0 -216
  71. agent_supervisor-0.1.2/docs/quickstart.md +0 -54
  72. agent_supervisor-0.1.2/python/README.md +0 -20
  73. agent_supervisor-0.1.2/python/tests/test_api.py +0 -162
  74. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/.github/workflows/docs.yml +0 -0
  75. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/.github/workflows/publish-python.yml +0 -0
  76. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/LICENSE +0 -0
  77. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/network-host-mode.md +0 -0
  78. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/process-groups.md +0 -0
  79. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/releases/0.1.0.md +0 -0
  80. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/releases/0.1.1.md +0 -0
  81. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/security-model.md +0 -0
  82. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/docs/supervisor-lifecycle.md +0 -0
  83. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/environment.rs +0 -0
  84. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/error.rs +0 -0
  85. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/filesystem.rs +0 -0
  86. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/group.rs +0 -0
  87. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/network.rs +0 -0
  88. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/pipeline.rs +0 -0
  89. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/policy.rs +0 -0
  90. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/probes.rs +0 -0
  91. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/process_control.rs +0 -0
  92. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/src/pty.rs +0 -0
  93. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/tests/filesystem_unsupported.rs +0 -0
  94. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/tests/linux_filesystem.rs +0 -0
  95. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/tests/loom_supervisor.rs +0 -0
  96. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/tests/macos_filesystem.rs +0 -0
  97. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/tests/macos_smoke.rs +0 -0
  98. {agent_supervisor-0.1.2 → agent_supervisor-0.2.0}/tests/resource_limits_properties.rs +0 -0
  99. {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
@@ -22,4 +22,5 @@ target
22
22
 
23
23
  /target/
24
24
  /site/
25
+ .env
25
26
  .lint-ai/
@@ -4,7 +4,7 @@ version = 4
4
4
 
5
5
  [[package]]
6
6
  name = "agent-supervisor"
7
- version = "0.1.2"
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.1.2"
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
- CONTROL EVERY TOOL PROCESS YOUR APPLICATION STARTS
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 release is **0.1.2**.
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 process
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.1.2"
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 [API boundaries](docs/api-boundaries.md) for the integration contract.
216
+ and [using agent SDKs](docs/api-boundaries.md) for the integration example.
173
217
 
174
218
  ## Python bindings
175
219
 
176
- Version 0.1.2 adds an async Python binding for bounded one-shot execution and
177
- output streaming. The source package is in `python/`; it has not been published
178
- to PyPI yet. Build it from this checkout with maturin:
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 maturin
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.1.2 release notes](docs/releases/0.1.2.md) for Python bindings and
241
- the earlier [0.1.1 notes](docs/releases/0.1.1.md) for the separate OpenShell
242
- developer adapter and its behavior limits.
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