Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@ jobs:

- name: Verify version matches
run: |
FILE_VERSION=$(grep -oP '__version__ = "\K[^"]+' packages/common/src/handler_common/_version.py)
PROJECT_VERSION=$(uv version --short)
TAG_VERSION=${{ steps.version.outputs.VERSION }}
if [ "$FILE_VERSION" != "$TAG_VERSION" ]; then
echo "Error: Version mismatch! File: $FILE_VERSION, Tag: $TAG_VERSION"
if [ "$PROJECT_VERSION" != "$TAG_VERSION" ]; then
echo "Error: Version mismatch! Project: $PROJECT_VERSION, Tag: $TAG_VERSION"
exit 1
fi

Expand Down
3 changes: 3 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ Use `just` for all development tasks:
| `just get-card` | Fetch agent card (CLI) |
| `just send` | Send message to agent (CLI) |
| `just version` | Show current version |
| `just bump` | Bump version (patch, minor, major) |
| `just tag` | Create git tag for current version |
| `just release` | Tag and push release to origin |

## Project Structure

Expand Down
3 changes: 3 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ just install # or: uv sync
| `just get-card [url]` | Fetch agent card from URL |
| `just send [url] [msg]` | Send message to agent |
| `just version` | Show current version |
| `just bump [level]` | Bump version (patch, minor, major) |
| `just tag` | Create git tag for current version |
| `just release` | Tag and push release to origin |

## Code Style

Expand Down
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,25 @@
[![CI](https://github.com/alDuncanson/handler/actions/workflows/ci.yml/badge.svg)](https://github.com/alDuncanson/handler/actions/workflows/ci.yml)
[![A2A Protocol](https://img.shields.io/badge/A2A_Protocol-v0.3.0-blue)](https://a2a-protocol.org/latest/)
[![GitHub release](https://img.shields.io/github/v/release/alDuncanson/handler)](https://github.com/alDuncanson/handler/releases)
[![PyPI version](https://img.shields.io/pypi/v/a2a-handler)](https://pypi.org/project/a2a-handler/)
[![GitHub stars](https://img.shields.io/github/stars/alDuncanson/handler)](https://github.com/alDuncanson/handler/stargazers)

An [A2A](https://a2a-protocol.org/latest/) Protocol client TUI and CLI.

![Handler TUI](./assets/handler-tui.png)

## Run
## Install

This project is managed with [uv](https://docs.astral.sh/uv/), so you can run Handler in a temporary, isolated environment:
Install with [uv](https://docs.astral.sh/uv/):

```bash
uvx --from git+https://github.com/alDuncanson/Handler.git@v0.1.3 handler
uv tool install a2a-handler
```

or, install it globally:
Or run directly without installing:

```bash
uv tool install git+https://github.com/alDuncanson/Handler.git@v0.1.3
uvx --from a2a-handler handler
```

## Use
Expand Down
10 changes: 7 additions & 3 deletions justfile
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,16 @@ fix:

# Show the current version
version:
uvx hatch version
uv version

# Bump version (major, minor, or patch)
bump level="patch":
uv version --bump {{level}}

# Create a git tag for the current version
tag:
git tag "v$(uvx hatch version)"
git tag "v$(uv version --short)"

# Tag and push the release to origin
release: tag
git push origin "v$(uvx hatch version)"
git push origin "v$(uv version --short)"
3 changes: 0 additions & 3 deletions packages/common/src/handler_common/_version.py

This file was deleted.

48 changes: 40 additions & 8 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,36 @@
[project]
name = "a2a-handler"
dynamic = ["version"]
version = "0.1.4"
description = "An A2A Protocol client TUI and CLI."
readme = "README.md"
requires-python = ">=3.11"
license = "GPL-3.0-or-later"
license-files = ["LICENSE"]
authors = [
{ name = "Al Duncanson", email = "al@alduncanson.com" }
]
keywords = [
"a2a",
"a2a-protocol",
"agent",
"agent-to-agent",
"ai",
"cli",
"tui",
]
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Console",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Software Development :: Libraries :: Python Modules",
"Typing :: Typed",
]
dependencies = [
"a2a-sdk>=0.2.5",
"click>=8.0.0",
Expand All @@ -24,15 +52,19 @@ dev = [
"ty>=0.0.1a27",
]

[project.urls]
Homepage = "https://github.com/alDuncanson/handler"
Repository = "https://github.com/alDuncanson/handler"
Documentation = "https://github.com/alDuncanson/handler#readme"
Issues = "https://github.com/alDuncanson/handler/issues"
Changelog = "https://github.com/alDuncanson/handler/releases"

[project.scripts]
handler = "a2a_handler.cli:main"

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.version]
path = "src/a2a_handler/_version.py"
requires = ["uv_build>=0.9.15,<0.10.0"]
build-backend = "uv_build"

[tool.hatch.build.targets.wheel]
packages = ["src/a2a_handler"]
[tool.uv.build-backend]
module-root = "src"
5 changes: 4 additions & 1 deletion src/a2a_handler/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
"""Handler - A2A protocol client and TUI for agent interaction"""

from a2a_handler._version import __version__
from importlib.metadata import version

from a2a_handler.tui import HandlerTUI, main

__version__ = version("a2a-handler")

__all__ = ["__version__", "HandlerTUI", "main"]
3 changes: 0 additions & 3 deletions src/a2a_handler/_version.py

This file was deleted.

4 changes: 3 additions & 1 deletion src/a2a_handler/tui.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@

import httpx
from a2a.types import AgentCard
from a2a_handler._version import __version__
from importlib.metadata import version

__version__ = version("a2a-handler")
from a2a_handler.client import (
build_http_client,
fetch_agent_card,
Expand Down
1 change: 1 addition & 0 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.