# robson
Rust async agent orchestrator that automates the full lifecycle from Jira task to code review:
```
Jira task → SQLite → branch → Claude Code → PR → Jira comment → Slack notification
```
## System Dependencies
The `git2` crate requires libgit2 and libssh2 C libraries at build time.
### Debian / Ubuntu
```bash
sudo apt-get install -y pkg-config libssl-dev cmake libssh2-1-dev libgit2-dev
```
### Alpine
```bash
apk add --no-cache pkgconf openssl-dev cmake libssh2-dev libgit2-dev musl-dev gcc
```
### Fedora / RHEL
```bash
sudo dnf install -y pkgconfig openssl-devel cmake libssh2-devel libgit2-devel
```
## Build
```bash
cargo build --release
```
## Usage
```bash
# Create a task
cargo robson task create --key PROJ-123 --summary "Fix bug" --description "Details" --repo-url "git://github.com/org/repo"
# Process pending tasks
cargo robson run
# Run a single task
cargo robson run-task PROJ-123
# Start webhook server
cargo robson server
```
## Configuration
```bash
cp robson.example.toml robson.toml
```
See `docs/spec.md` for the full specification.
## Tests
```bash
cargo test
```
## Publishing to crates.io
All workspace crates share a single version in `[workspace.package]` at the root `Cargo.toml`. Internal `robson-*` dependency versions are kept in sync via `make sync-workspace-versions` (also run automatically by `make bump-version` and before publish).
Set your API token (create one at https://crates.io/settings/tokens):
```bash
export CARGO_REGISTRY_TOKEN=...
```
Validate packaging without uploading (`cargo publish --dry-run` per crate; crates that depend on unpublished workspace members are skipped with a warning):
```bash
make publish-dry-run
```
### Manual release (bump + publish)
```bash
make publish VERSION=0.2.0
```
### Tag-driven release
```bash
make bump-version VERSION=0.2.0
git commit -am "chore: release v0.2.0"
git tag v0.2.0
make publish-tag
```
`publish-tag` requires HEAD to be tagged and the tag version (without `v` prefix) to match the workspace version in `Cargo.toml`.
To publish the current workspace version without bumping (e.g. retry after a failed publish):
```bash
make publish
```