universal-agent-middleware 0.5.1rc1__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 (63) hide show
  1. universal_agent_middleware-0.5.1rc1/LICENSE +21 -0
  2. universal_agent_middleware-0.5.1rc1/MANIFEST.in +6 -0
  3. universal_agent_middleware-0.5.1rc1/PKG-INFO +179 -0
  4. universal_agent_middleware-0.5.1rc1/README.md +162 -0
  5. universal_agent_middleware-0.5.1rc1/pyproject.toml +27 -0
  6. universal_agent_middleware-0.5.1rc1/setup.cfg +4 -0
  7. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/__init__.py +3 -0
  8. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/adapters/__init__.py +5 -0
  9. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/adapters/mcp_sdk.py +577 -0
  10. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/adapters/openai_actions.py +24 -0
  11. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/audit.py +224 -0
  12. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/cli.py +175 -0
  13. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/contracts.py +215 -0
  14. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/discovery.py +675 -0
  15. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/doctor.py +153 -0
  16. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/errors.py +22 -0
  17. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/executors/__init__.py +224 -0
  18. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/exploration.py +514 -0
  19. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/gateway.py +478 -0
  20. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/git_readonly.py +144 -0
  21. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/installer.py +315 -0
  22. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/mcp.py +290 -0
  23. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/models.py +64 -0
  24. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/openapi.py +279 -0
  25. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/policy.py +85 -0
  26. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/project.py +381 -0
  27. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/results.py +134 -0
  28. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/root_scope.py +144 -0
  29. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/runtime.py +187 -0
  30. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/server.py +292 -0
  31. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/service.py +161 -0
  32. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/supervisor.py +225 -0
  33. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/tool_contract.json +21 -0
  34. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware/workspace.py +256 -0
  35. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware.egg-info/PKG-INFO +179 -0
  36. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware.egg-info/SOURCES.txt +61 -0
  37. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware.egg-info/dependency_links.txt +1 -0
  38. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware.egg-info/entry_points.txt +2 -0
  39. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware.egg-info/requires.txt +7 -0
  40. universal_agent_middleware-0.5.1rc1/src/universal_agent_middleware.egg-info/top_level.txt +1 -0
  41. universal_agent_middleware-0.5.1rc1/tests/fixtures/freshness/README.md +42 -0
  42. universal_agent_middleware-0.5.1rc1/tests/fixtures/freshness/test.txt +1 -0
  43. universal_agent_middleware-0.5.1rc1/tests/fixtures/prompt_injection.txt +6 -0
  44. universal_agent_middleware-0.5.1rc1/tests/synthetic_fixtures.py +192 -0
  45. universal_agent_middleware-0.5.1rc1/tests/test_agent_plugin_package.py +32 -0
  46. universal_agent_middleware-0.5.1rc1/tests/test_api_e2e.py +158 -0
  47. universal_agent_middleware-0.5.1rc1/tests/test_audit.py +26 -0
  48. universal_agent_middleware-0.5.1rc1/tests/test_broad_reality.py +814 -0
  49. universal_agent_middleware-0.5.1rc1/tests/test_contracts.py +53 -0
  50. universal_agent_middleware-0.5.1rc1/tests/test_gateway_boundaries.py +107 -0
  51. universal_agent_middleware-0.5.1rc1/tests/test_git_readonly.py +49 -0
  52. universal_agent_middleware-0.5.1rc1/tests/test_hardening.py +501 -0
  53. universal_agent_middleware-0.5.1rc1/tests/test_local_executor.py +129 -0
  54. universal_agent_middleware-0.5.1rc1/tests/test_mcp.py +76 -0
  55. universal_agent_middleware-0.5.1rc1/tests/test_mcp_http.py +154 -0
  56. universal_agent_middleware-0.5.1rc1/tests/test_mcp_sdk_adapter.py +153 -0
  57. universal_agent_middleware-0.5.1rc1/tests/test_openapi_contract.py +43 -0
  58. universal_agent_middleware-0.5.1rc1/tests/test_policy.py +38 -0
  59. universal_agent_middleware-0.5.1rc1/tests/test_real_workspace_e2e.py +169 -0
  60. universal_agent_middleware-0.5.1rc1/tests/test_results.py +76 -0
  61. universal_agent_middleware-0.5.1rc1/tests/test_v032_acceptance.py +209 -0
  62. universal_agent_middleware-0.5.1rc1/tests/test_vendor_neutrality.py +41 -0
  63. universal_agent_middleware-0.5.1rc1/tests/test_workspace.py +71 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 OpenJay
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,6 @@
1
+ include LICENSE
2
+ include README.md
3
+ include pyproject.toml
4
+ recursive-include tests *.py
5
+ recursive-include tests/fixtures *
6
+ include tests/synthetic_fixtures.py
@@ -0,0 +1,179 @@
1
+ Metadata-Version: 2.4
2
+ Name: universal-agent-middleware
3
+ Version: 0.5.1rc1
4
+ Summary: Vendor-neutral local-first middleware for AI agent workspace observation, bounded execution handoff, and evidence review.
5
+ Author: OpenJay
6
+ License: MIT
7
+ Keywords: ai,agents,middleware,interop,mcp,agent-skills,agent-plugins,openapi
8
+ Requires-Python: >=3.11
9
+ Description-Content-Type: text/markdown
10
+ License-File: LICENSE
11
+ Provides-Extra: mcp
12
+ Requires-Dist: mcp<3,>=2.0.0; extra == "mcp"
13
+ Provides-Extra: service
14
+ Requires-Dist: mcp<3,>=2.0.0; extra == "service"
15
+ Requires-Dist: PyYAML<7,>=6.0; extra == "service"
16
+ Dynamic: license-file
17
+
18
+ # Universal Agent Middleware (UAM) v0.5.1rc1
19
+
20
+ **Public Preview RC1** — read-only MCP observation for local codebases
21
+
22
+ UAM is a vendor-neutral, local-first middleware that lets any reasoning client (ChatGPT, Claude, Cursor, future agents) observe your local project workspaces in real time through a secure read-only interface — with project-level reality coverage, lifecycle tracking, and observation-based diagnostics.
23
+
24
+ ## What it does
25
+
26
+ ```text
27
+ Reasoning client (new session, no history needed)
28
+
29
+
30
+ UAM MCP App (19 read-only tools)
31
+
32
+
33
+ Optional secure MCP tunnel (outbound-only)
34
+
35
+
36
+ Your local machine
37
+
38
+
39
+ Registered workspaces + project reality
40
+ (my-app, api-service, etc.)
41
+ ```
42
+
43
+ A new conversation can read live repository state — HEAD, branch, files, diffs, search, project reality coverage — without copy-paste and without granting write access.
44
+
45
+ ## Quick start
46
+
47
+ ```bash
48
+ # Install
49
+ python -m venv .venv && source .venv/bin/activate
50
+ pip install -e ".[mcp]"
51
+
52
+ # Register workspaces
53
+ cp config/workspaces.example.json config/workspaces.json
54
+ # Edit workspace roots to match your machine
55
+
56
+ # Optional: root scope registry for autonomous discovery
57
+ cp examples/root_scopes.example.json config/root_scopes.json
58
+
59
+ # Local MCP smoke test
60
+ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2026-07-28","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | \
61
+ uam mcp-sdk-stdio --profile session-read \
62
+ --registry config/workspaces.json \
63
+ --state-dir ~/.local/share/uam
64
+ ```
65
+
66
+ For remote clients, configure an outbound MCP tunnel using your platform credentials. See `docs/adapters/MCP.md`.
67
+
68
+ ## Available MCP tools
69
+
70
+ | Tool | Description |
71
+ |------|-------------|
72
+ | `uam_list_workspaces` | List registered workspaces, capabilities, and project grouping |
73
+ | `uam_workspace_snapshot` | HEAD, branch, head_state, dirty count |
74
+ | `uam_session_bootstrap` | Full reasoning context in one call (project-aware, v2 schema) |
75
+ | `uam_tree` | Directory listing |
76
+ | `uam_read_file` | Read text files (relative paths only) |
77
+ | `uam_search_text` | Search across workspace files |
78
+ | `uam_git_status` | Git HEAD, branch, working tree changes |
79
+ | `uam_git_diff` | Git diff (optionally scoped) |
80
+ | `uam_git_log` | Recent commit history |
81
+ | `uam_verify_audit` | Hash-chain audit log integrity |
82
+ | `uam_project_reality` | Multi-instance project reality snapshot with coverage diagnostics |
83
+ | `uam_list_project_instances` | List workspace instances and discovered worktrees for a project |
84
+ | `uam_list_scopes` | List authorized RootScopes (standing trust zones) |
85
+ | `uam_discover_projects` | Autonomously discover all projects within a scope |
86
+ | `uam_scope_inventory` | Cached project inventory for a scope |
87
+ | `uam_search_scope` | Cross-project text search across entire scope |
88
+ | `uam_explain_coverage` | Per-project coverage gap analysis |
89
+ | `uam_what_am_i_missing` | Aggregate missing reality across active projects |
90
+ | `uam_explore` | Intent-driven exploration with ranking, graph, and retrieval plan |
91
+
92
+ All session-read tools expose `readOnlyHint=true, destructiveHint=false`. No write, exec, merge, deploy, or credential tools are part of the Public Preview contract.
93
+
94
+ ## Security model
95
+
96
+ - **Read-only remote surface** — no mutation tools exposed in session-read profile
97
+ - **Path containment** — `.env`, `.git/**`, `../` traversal all denied
98
+ - **Prompt injection defense** — security is middleware-enforced, not model-dependent
99
+ - **No credentials in repo** — tunnel credentials via environment only
100
+ - **Outbound-only tunnel** — no public inbound listener required (optional adapter)
101
+ - **Secret firewall** — credential-like files denied even under broad scope authority
102
+
103
+ ## Architecture
104
+
105
+ ```text
106
+ Reasoning clients / humans
107
+ ChatGPT · Claude · Gemini · Cursor · Copilot · future agents
108
+
109
+ northbound adapters
110
+ HTTP/OpenAPI · MCP (official SDK) · Agent Plugins
111
+
112
+
113
+ ┌────────────────────────────────────────────────┐
114
+ │ Universal Agent Middleware Core │
115
+ │ workspace registry → policy → observation │
116
+ │ project registry → coverage diagnostics │
117
+ │ audit → execution contract → result review │
118
+ └──────────────────┬─────────────────────────────┘
119
+ │ │
120
+ READ ONLY .state/
121
+ │ contracts/results/audit
122
+
123
+ registered project workspaces
124
+ my-app · api-service · others
125
+ ```
126
+
127
+ ## Core invariants
128
+
129
+ - **Vendor-neutral core:** no OpenAI/Anthropic/Cursor/GitHub dependency
130
+ - **Project sovereignty:** target project SSOT remains authoritative
131
+ - **Read-only boundary:** session-read profile grants no write, shell, commit, push, merge, or deploy
132
+ - **Observation ≠ Authority:** UAM reports reality; project governance decides actions
133
+ - **Separate state:** UAM state is physically disjoint from target workspaces
134
+ - **Evidence-bound execution:** (v0.2+ contracts; legacy LocalExecutor is experimental)
135
+
136
+ ## Project reality model (v0.3.1+)
137
+
138
+ UAM tracks multi-instance projects with orthogonal dimensions:
139
+
140
+ - **role** — structural function: `canonical-main`, `candidate`, `review-carrier`
141
+ - **lifecycle** — temporal state: `active`, `landed`, `stale`, `superseded`
142
+ - **coverage** — observation completeness per truth surface
143
+
144
+ Coverage states: `observed`, `externally_verified`, `not_applicable`, `not_observed`, `not_registered`
145
+
146
+ Project-specific observation profiles in `config/project-observation-profiles/` (local-only, gitignored) define per-project requirements without embedding project semantics into UAM core.
147
+
148
+ ## Documentation
149
+
150
+ - `docs/REALITY_PREAMBLE.md` — Reality Preamble protocol
151
+ - `docs/BACKLOG.md` — Roadmap and hardening priorities
152
+ - `docs/adapters/MCP.md` — MCP adapter setup
153
+ - `docs/oss/public-profile-contract.md` — Public Preview supported surface
154
+ - `CHANGELOG.md` — Version history
155
+ - `SECURITY.md` — Vulnerability reporting
156
+ - `CONTRIBUTING.md` — Contribution guidelines
157
+
158
+ ## Status
159
+
160
+ **v0.5.1rc1 — Public Preview RC1**
161
+
162
+ | Gate | Status |
163
+ |------|--------|
164
+ | Source implementation | PASS (19 read-only MCP tools) |
165
+ | RootScope foundation | PASS |
166
+ | Git repository discovery | PASS |
167
+ | Project grouping | PASS |
168
+ | CoverageGap MVP | PASS |
169
+ | Audit v2 integrity | PASS |
170
+ | Scope search enforcement | PASS (OSS-SEC-001 pre-read boundary) |
171
+ | Portable test suite | PASS (199 tests, 1 skipped; synthetic fixtures) |
172
+ | Python/OS matrix (3.11–3.14) | **PASS** — 8/8 public CI (run `33954828455`) |
173
+ | Public release gates (O0–O9) | **PASS** — live public repo; see `docs/oss/launch-packet.md` |
174
+ | GitHub Release `v0.5.1rc1` | **PASS** — wheel + sdist attached |
175
+ | PyPI distribution | **Configured** — OIDC trusted publishing via `release.yml` (manual Pending Publisher step on pypi.org) |
176
+
177
+ Public Preview supports SDK stdio session-read profile only. Legacy HTTP adapter and LocalExecutor are experimental and not part of the Preview contract. See `docs/oss/public-profile-contract.md`.
178
+
179
+ Deferred: forge/runtime observation, write-capable remote tools, autonomous execution, production OAuth.
@@ -0,0 +1,162 @@
1
+ # Universal Agent Middleware (UAM) v0.5.1rc1
2
+
3
+ **Public Preview RC1** — read-only MCP observation for local codebases
4
+
5
+ UAM is a vendor-neutral, local-first middleware that lets any reasoning client (ChatGPT, Claude, Cursor, future agents) observe your local project workspaces in real time through a secure read-only interface — with project-level reality coverage, lifecycle tracking, and observation-based diagnostics.
6
+
7
+ ## What it does
8
+
9
+ ```text
10
+ Reasoning client (new session, no history needed)
11
+
12
+
13
+ UAM MCP App (19 read-only tools)
14
+
15
+
16
+ Optional secure MCP tunnel (outbound-only)
17
+
18
+
19
+ Your local machine
20
+
21
+
22
+ Registered workspaces + project reality
23
+ (my-app, api-service, etc.)
24
+ ```
25
+
26
+ A new conversation can read live repository state — HEAD, branch, files, diffs, search, project reality coverage — without copy-paste and without granting write access.
27
+
28
+ ## Quick start
29
+
30
+ ```bash
31
+ # Install
32
+ python -m venv .venv && source .venv/bin/activate
33
+ pip install -e ".[mcp]"
34
+
35
+ # Register workspaces
36
+ cp config/workspaces.example.json config/workspaces.json
37
+ # Edit workspace roots to match your machine
38
+
39
+ # Optional: root scope registry for autonomous discovery
40
+ cp examples/root_scopes.example.json config/root_scopes.json
41
+
42
+ # Local MCP smoke test
43
+ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2026-07-28","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | \
44
+ uam mcp-sdk-stdio --profile session-read \
45
+ --registry config/workspaces.json \
46
+ --state-dir ~/.local/share/uam
47
+ ```
48
+
49
+ For remote clients, configure an outbound MCP tunnel using your platform credentials. See `docs/adapters/MCP.md`.
50
+
51
+ ## Available MCP tools
52
+
53
+ | Tool | Description |
54
+ |------|-------------|
55
+ | `uam_list_workspaces` | List registered workspaces, capabilities, and project grouping |
56
+ | `uam_workspace_snapshot` | HEAD, branch, head_state, dirty count |
57
+ | `uam_session_bootstrap` | Full reasoning context in one call (project-aware, v2 schema) |
58
+ | `uam_tree` | Directory listing |
59
+ | `uam_read_file` | Read text files (relative paths only) |
60
+ | `uam_search_text` | Search across workspace files |
61
+ | `uam_git_status` | Git HEAD, branch, working tree changes |
62
+ | `uam_git_diff` | Git diff (optionally scoped) |
63
+ | `uam_git_log` | Recent commit history |
64
+ | `uam_verify_audit` | Hash-chain audit log integrity |
65
+ | `uam_project_reality` | Multi-instance project reality snapshot with coverage diagnostics |
66
+ | `uam_list_project_instances` | List workspace instances and discovered worktrees for a project |
67
+ | `uam_list_scopes` | List authorized RootScopes (standing trust zones) |
68
+ | `uam_discover_projects` | Autonomously discover all projects within a scope |
69
+ | `uam_scope_inventory` | Cached project inventory for a scope |
70
+ | `uam_search_scope` | Cross-project text search across entire scope |
71
+ | `uam_explain_coverage` | Per-project coverage gap analysis |
72
+ | `uam_what_am_i_missing` | Aggregate missing reality across active projects |
73
+ | `uam_explore` | Intent-driven exploration with ranking, graph, and retrieval plan |
74
+
75
+ All session-read tools expose `readOnlyHint=true, destructiveHint=false`. No write, exec, merge, deploy, or credential tools are part of the Public Preview contract.
76
+
77
+ ## Security model
78
+
79
+ - **Read-only remote surface** — no mutation tools exposed in session-read profile
80
+ - **Path containment** — `.env`, `.git/**`, `../` traversal all denied
81
+ - **Prompt injection defense** — security is middleware-enforced, not model-dependent
82
+ - **No credentials in repo** — tunnel credentials via environment only
83
+ - **Outbound-only tunnel** — no public inbound listener required (optional adapter)
84
+ - **Secret firewall** — credential-like files denied even under broad scope authority
85
+
86
+ ## Architecture
87
+
88
+ ```text
89
+ Reasoning clients / humans
90
+ ChatGPT · Claude · Gemini · Cursor · Copilot · future agents
91
+
92
+ northbound adapters
93
+ HTTP/OpenAPI · MCP (official SDK) · Agent Plugins
94
+
95
+
96
+ ┌────────────────────────────────────────────────┐
97
+ │ Universal Agent Middleware Core │
98
+ │ workspace registry → policy → observation │
99
+ │ project registry → coverage diagnostics │
100
+ │ audit → execution contract → result review │
101
+ └──────────────────┬─────────────────────────────┘
102
+ │ │
103
+ READ ONLY .state/
104
+ │ contracts/results/audit
105
+
106
+ registered project workspaces
107
+ my-app · api-service · others
108
+ ```
109
+
110
+ ## Core invariants
111
+
112
+ - **Vendor-neutral core:** no OpenAI/Anthropic/Cursor/GitHub dependency
113
+ - **Project sovereignty:** target project SSOT remains authoritative
114
+ - **Read-only boundary:** session-read profile grants no write, shell, commit, push, merge, or deploy
115
+ - **Observation ≠ Authority:** UAM reports reality; project governance decides actions
116
+ - **Separate state:** UAM state is physically disjoint from target workspaces
117
+ - **Evidence-bound execution:** (v0.2+ contracts; legacy LocalExecutor is experimental)
118
+
119
+ ## Project reality model (v0.3.1+)
120
+
121
+ UAM tracks multi-instance projects with orthogonal dimensions:
122
+
123
+ - **role** — structural function: `canonical-main`, `candidate`, `review-carrier`
124
+ - **lifecycle** — temporal state: `active`, `landed`, `stale`, `superseded`
125
+ - **coverage** — observation completeness per truth surface
126
+
127
+ Coverage states: `observed`, `externally_verified`, `not_applicable`, `not_observed`, `not_registered`
128
+
129
+ Project-specific observation profiles in `config/project-observation-profiles/` (local-only, gitignored) define per-project requirements without embedding project semantics into UAM core.
130
+
131
+ ## Documentation
132
+
133
+ - `docs/REALITY_PREAMBLE.md` — Reality Preamble protocol
134
+ - `docs/BACKLOG.md` — Roadmap and hardening priorities
135
+ - `docs/adapters/MCP.md` — MCP adapter setup
136
+ - `docs/oss/public-profile-contract.md` — Public Preview supported surface
137
+ - `CHANGELOG.md` — Version history
138
+ - `SECURITY.md` — Vulnerability reporting
139
+ - `CONTRIBUTING.md` — Contribution guidelines
140
+
141
+ ## Status
142
+
143
+ **v0.5.1rc1 — Public Preview RC1**
144
+
145
+ | Gate | Status |
146
+ |------|--------|
147
+ | Source implementation | PASS (19 read-only MCP tools) |
148
+ | RootScope foundation | PASS |
149
+ | Git repository discovery | PASS |
150
+ | Project grouping | PASS |
151
+ | CoverageGap MVP | PASS |
152
+ | Audit v2 integrity | PASS |
153
+ | Scope search enforcement | PASS (OSS-SEC-001 pre-read boundary) |
154
+ | Portable test suite | PASS (199 tests, 1 skipped; synthetic fixtures) |
155
+ | Python/OS matrix (3.11–3.14) | **PASS** — 8/8 public CI (run `33954828455`) |
156
+ | Public release gates (O0–O9) | **PASS** — live public repo; see `docs/oss/launch-packet.md` |
157
+ | GitHub Release `v0.5.1rc1` | **PASS** — wheel + sdist attached |
158
+ | PyPI distribution | **Configured** — OIDC trusted publishing via `release.yml` (manual Pending Publisher step on pypi.org) |
159
+
160
+ Public Preview supports SDK stdio session-read profile only. Legacy HTTP adapter and LocalExecutor are experimental and not part of the Preview contract. See `docs/oss/public-profile-contract.md`.
161
+
162
+ Deferred: forge/runtime observation, write-capable remote tools, autonomous execution, production OAuth.
@@ -0,0 +1,27 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "universal-agent-middleware"
7
+ version = "0.5.1rc1"
8
+ description = "Vendor-neutral local-first middleware for AI agent workspace observation, bounded execution handoff, and evidence review."
9
+ readme = "README.md"
10
+ requires-python = ">=3.11"
11
+ license = {text = "MIT"}
12
+ authors = [{name = "OpenJay"}]
13
+ keywords = ["ai", "agents", "middleware", "interop", "mcp", "agent-skills", "agent-plugins", "openapi"]
14
+ dependencies = []
15
+
16
+ [project.optional-dependencies]
17
+ mcp = ["mcp>=2.0.0,<3"]
18
+ service = ["mcp>=2.0.0,<3", "PyYAML>=6.0,<7"]
19
+
20
+ [project.scripts]
21
+ uam = "universal_agent_middleware.cli:main"
22
+
23
+ [tool.setuptools.packages.find]
24
+ where = ["src"]
25
+
26
+ [tool.setuptools.package-data]
27
+ universal_agent_middleware = ["tool_contract.json"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,3 @@
1
+ """Universal Agent Middleware."""
2
+
3
+ __version__ = "0.5.1rc1"
@@ -0,0 +1,5 @@
1
+ """Optional client/executor adapters.
2
+
3
+ Adapters may add vendor- or client-specific metadata, but they must not change
4
+ UAM core capabilities, authority, workspace policy, or contract semantics.
5
+ """