From 7ab890be5db555e3bd46dbe9b28cb479dede8cca Mon Sep 17 00:00:00 2001 From: Bryant Date: Wed, 15 Jul 2026 20:25:03 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E2=9C=A8=20(cli):=20Add=20--version=20flag?= =?UTF-8?q?=20to=20aasm=20sourcing=20=5F=5Fversion=5F=5F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01HMnPRm9T3fdrS4uNYXkzg6 --- agent_assembly/cli/main.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/agent_assembly/cli/main.py b/agent_assembly/cli/main.py index 2e2ac080..ef59809f 100644 --- a/agent_assembly/cli/main.py +++ b/agent_assembly/cli/main.py @@ -5,6 +5,8 @@ import argparse import sys +from agent_assembly import __version__ + def _build_parser() -> argparse.ArgumentParser: """Build the top-level argument parser with the adapter subcommand.""" @@ -12,6 +14,11 @@ def _build_parser() -> argparse.ArgumentParser: prog="aasm", description="Agent Assembly SDK command-line tools.", ) + parser.add_argument( + "--version", + action="version", + version=f"%(prog)s {__version__}", + ) subparsers = parser.add_subparsers(dest="command", help="Available commands") adapter_parser = subparsers.add_parser("adapter", help="Adapter management commands") From 704869690d8746a5a859409c2fdc07053e73874e Mon Sep 17 00:00:00 2001 From: Bryant Date: Wed, 15 Jul 2026 20:25:48 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E2=9C=85=20(cli):=20Add=20aasm=20--version?= =?UTF-8?q?=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01HMnPRm9T3fdrS4uNYXkzg6 --- test/unit/cli/test_cli_main.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/unit/cli/test_cli_main.py b/test/unit/cli/test_cli_main.py index bcd5df95..6624739b 100644 --- a/test/unit/cli/test_cli_main.py +++ b/test/unit/cli/test_cli_main.py @@ -6,9 +6,21 @@ import pytest +from agent_assembly import __version__ from agent_assembly.cli.main import main +class TestCliMainVersion: + """Tests for the ``aasm --version`` flag.""" + + def test_version_prints_version_and_exits_zero(self, capsys: pytest.CaptureFixture[str]) -> None: + with mock.patch("sys.argv", ["aasm", "--version"]): + with pytest.raises(SystemExit) as exc_info: + main() + assert exc_info.value.code == 0 + assert capsys.readouterr().out.strip() == f"aasm {__version__}" + + class TestCliMainExitCodeZero: """Tests for CLI main returning exit code 0.""" From 4b36a61bfba9e1cc9af815fb9964d3038872b80e Mon Sep 17 00:00:00 2001 From: Bryant Date: Wed, 15 Jul 2026 20:26:18 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=93=9D=20(readme):=20Correct=20Error?= =?UTF-8?q?=20Handling=20example=20to=20match=20actual=20exception?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The example implied an empty gateway_url raises ConfigurationError; in reality an empty/unset gateway_url triggers local auto-discovery. Show a genuinely-invalid config (bad mode) that validation rejects up front, and note the empty/unset behavior. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01HMnPRm9T3fdrS4uNYXkzg6 --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0936b37b..f15a222d 100644 --- a/README.md +++ b/README.md @@ -213,7 +213,10 @@ from agent_assembly import init_assembly from agent_assembly.exceptions import ConfigurationError try: - context = init_assembly(gateway_url="", api_key="my-api-key", agent_id="my-agent-001") + # An invalid mode fails validation up front and raises ConfigurationError. + # (An empty/unset gateway_url is not an error — it triggers local + # auto-discovery; a gateway that can't be reached raises GatewayError.) + context = init_assembly(gateway_url="http://localhost:7391", mode="invalid-mode") except ConfigurationError as exc: print(f"Invalid configuration: {exc}") ```