Skip to content
This repository was archived by the owner on Oct 17, 2026. It is now read-only.

Commit e7cbe3a

Browse files
authored
release: openadapt-agent v2.0.0 (#9)
* release: prepare openadapt-agent v2.0.0 * ci: enforce complete release artifact boundary * docs: remove unavailable legacy release claim
1 parent 3416196 commit e7cbe3a

8 files changed

Lines changed: 31 additions & 23 deletions

File tree

‎.github/workflows/release.yml‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ on:
2424
- "server.json"
2525
- "smithery.yaml"
2626
- "scripts/check_release_artifacts.py"
27+
- "scripts/check_dist.py"
2728
- ".github/workflows/release.yml"
2829

2930
concurrency:
@@ -52,7 +53,9 @@ jobs:
5253
- name: Build sdist + wheel
5354
run: python -m build
5455
- name: License / package-boundary check on built archives
55-
run: python scripts/check_release_artifacts.py dist
56+
run: |
57+
python scripts/check_release_artifacts.py dist
58+
python scripts/check_dist.py dist/*
5659
- name: twine check
5760
run: twine check dist/*
5861
- name: Validate server.json against the MCP registry schema

‎README.md‎

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,10 @@ as a fabricated success.
2626
## Install
2727

2828
```bash
29-
# v2 is not yet published; install the current source:
30-
pip install git+https://github.com/OpenAdaptAI/openadapt-agent
29+
pip install openadapt-agent
3130
```
3231

33-
Once published, run it without installing — the intended MCP-client entry
34-
point:
32+
Or run it without installing — the intended MCP-client entry point:
3533

3634
```bash
3735
uvx openadapt-agent serve --bundles /path/to/bundles # read-only
@@ -250,11 +248,11 @@ See [docs/DESIGN.md](docs/DESIGN.md) for the complete contract.
250248

251249
## Package history
252250

253-
The pre-v2 package was a wrapper for model-driven GUI agents. Its
254-
execution responsibilities now live in `openadapt-flow`; the final
255-
legacy release remains available as `openadapt-agent==0.1.0`. The
256-
current package name is retained because this repository bridges both
257-
MCP and Agent Skills; it is not an MCP-only package.
251+
The pre-v2 codebase was a wrapper for model-driven GUI agents. Its
252+
execution responsibilities now live in `openadapt-flow`; its source
253+
history remains in this repository. The current package name is retained
254+
because this repository bridges both MCP and Agent Skills; it is not an
255+
MCP-only package.
258256

259257
## Install as an MCP server (registries)
260258

‎docs/DISTRIBUTION.md‎

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ and [`../smithery.yaml`](../smithery.yaml).
5555
- **Name (reverse-DNS, official registry):** `io.github.OpenAdaptAI/openadapt-agent`
5656
- **Display name:** OpenAdapt Agent (openadapt-flow bridge)
5757
- **PyPI package:** `openadapt-agent`
58-
- **Version:** `2.0.0.dev0` (Beta development release; pick the final release version at publish — see step 3.1)
58+
- **Version:** `2.0.0` (Beta)
5959
- **Description:** Local Beta bridge for governed openadapt-flow workflows and attended actions.
6060
- **Homepage / docs:** https://docs.openadapt.ai
6161
- **Repository:** https://github.com/OpenAdaptAI/openadapt-agent
@@ -139,14 +139,12 @@ No secret is ever committed; these live only in repo Settings -> Secrets.
139139

140140
### 3.1 Decide the release version
141141

142-
`2.0.0.dev0` is a dev pre-release; `pip install openadapt-agent` will not
143-
select it without `--pre`. For a real launch choose one of:
144-
- `2.0.0rc1` (recommended first public: pre-release, opt-in via `--pre`), or
145-
- `2.0.0` (final; remove development-release caveats only when the evidence supports it).
142+
The first public release is `2.0.0`. Future releases must keep the package,
143+
module, and registry metadata versions synchronized.
146144

147-
Whatever you choose, set it in **three places that a CI test pins
148-
together**: `pyproject.toml` `version`, `src/openadapt_agent/__init__.py`
149-
`__version__`, and both `version` fields in `server.json`. The
145+
Set every future version in **three places that a CI test pins together**:
146+
`pyproject.toml` `version`, `src/openadapt_agent/__init__.py` `__version__`,
147+
and both `version` fields in `server.json`. The
150148
`tests/test_distribution.py` guard fails if they drift.
151149

152150
### 3.2 Publish to PyPI — AUTOMATED (`pypi-publish` job)

‎llms.txt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ All mutations require an exact capability digest, a stable idempotency key, acti
2626

2727
## Public capability vs private artifact
2828

29-
- The **package/MCP server is the public OpenAdapt capability**: inspect and, with explicit operator flags, run or attend a compiled workflow under governance. The v2 package is not yet published.
29+
- The **package/MCP server is the public OpenAdapt capability**: inspect and, with explicit operator flags, run or attend a compiled workflow under governance. Install it from PyPI as `openadapt-agent`.
3030
- A user's **compiled workflow bundle is their private artifact**. It is supplied at server start via `--bundles` and is never embedded in the package, the `server.json`, or any registry listing.
3131

3232
## Key documents

‎pyproject.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "openadapt-agent"
7-
version = "2.0.0.dev0"
7+
version = "2.0.0"
88
description = "Local agent bridge for governed OpenAdapt workflows, attended actions, MCP, and Agent Skills"
99
readme = "README.md"
1010
# openadapt-flow pins <3.13 (rapidocr-onnxruntime); this package inherits it.

‎server.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
"url": "https://github.com/OpenAdaptAI/openadapt-agent",
99
"source": "github"
1010
},
11-
"version": "2.0.0.dev0",
11+
"version": "2.0.0",
1212
"packages": [
1313
{
1414
"registryType": "pypi",
1515
"registryBaseUrl": "https://pypi.org",
1616
"identifier": "openadapt-agent",
17-
"version": "2.0.0.dev0",
17+
"version": "2.0.0",
1818
"runtimeHint": "uvx",
1919
"transport": {
2020
"type": "stdio"

‎src/openadapt_agent/__init__.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@
1919
client in the same data boundary.
2020
"""
2121

22-
__version__ = "2.0.0.dev0"
22+
__version__ = "2.0.0"
2323

2424
__all__ = ["__version__"]

‎tests/test_distribution.py‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
SMITHERY_YAML = REPO_ROOT / "smithery.yaml"
2424
LLMS_TXT = REPO_ROOT / "llms.txt"
2525
PYPROJECT = REPO_ROOT / "pyproject.toml"
26+
RELEASE_WORKFLOW = REPO_ROOT / ".github" / "workflows" / "release.yml"
2627

2728
REVERSE_DNS_NAME = "io.github.OpenAdaptAI/openadapt-agent"
2829
PYPI_NAME = "openadapt-agent"
@@ -62,6 +63,14 @@ def test_version_is_consistent_everywhere() -> None:
6263
assert _pyproject_version() == __version__
6364

6465

66+
def test_release_workflow_runs_the_complete_archive_boundary() -> None:
67+
"""The exact artifacts handed to publishers get both release guards."""
68+
workflow = RELEASE_WORKFLOW.read_text(encoding="utf-8")
69+
assert '- "scripts/check_dist.py"' in workflow
70+
assert "python scripts/check_release_artifacts.py dist" in workflow
71+
assert "python scripts/check_dist.py dist/*" in workflow
72+
73+
6574
def test_serve_is_the_subcommand_and_bundles_is_required() -> None:
6675
args = _server_json()["packages"][0]["packageArguments"]
6776
positional = [a for a in args if a["type"] == "positional"]

0 commit comments

Comments
 (0)