code_work_spawner/README.md

105 lines
3.0 KiB
Markdown

# code_work_spawner
Repository issue thread assistant with an Agent Orchestrator style YAML config.
It consumes issue tracker events for configured GitHub, GitLab, Gitea, or OpenProject
projects, reads issue threads, and uses CLI responders such as `codex`, `opencode`, or
`copilot-cli` to decide when to reply. It supports
multi-repo config, responder fallback chains, and optional Discord webhook and
desktop notifications. Repository access is configured separately through each
project's `scm` block so tracker and checkout handling can evolve
independently.
## Highlights
- Consume GitHub, GitLab, Gitea, and OpenProject issue events across multiple projects
- Trigger replies from mentions or meaningful thread updates
- Run planning and bug-verification flows in isolated worktrees
- Send optional Discord or desktop notifications for assistant events
## Requirements
- Dart SDK
- `gh`, `glab`, `tea`, and/or OpenProject API credentials authenticated for the target projects
- Local checkouts for configured repositories
- Optional local responder CLIs such as `codex`, `opencode`, or `copilot-cli`
## Config
Create a local `agent-orchestrator.yaml` and use
[`examples/README.md`](examples/README.md) plus
[`examples/simple-github.yaml`](examples/simple-github.yaml),
[`examples/simple-gitlab.yaml`](examples/simple-gitlab.yaml), or
[`examples/simple-gitea.yaml`](examples/simple-gitea.yaml) as the reference.
Environment placeholders such as `${CWS_DISCORD_WEBHOOK}` are resolved from the
process environment and from a `.env` file placed next to the selected config
file. Logging also supports `CWS_LOG_LEVEL` (or `LOG_LEVEL`) with values such
as `trace`, `debug`, `info`, `warning`, `error`, or `fatal`. See
[.env.example](.env.example) for a minimal starter file.
Generate a starter config:
```bash
dart run bin/code_work_spawner.dart init-config
# Write it to a file:
dart run bin/code_work_spawner.dart init-config --output agent-orchestrator.yaml
# Overwrite an existing file:
dart run bin/code_work_spawner.dart init-config --output agent-orchestrator.yaml --force
```
## Run
```bash
dart run build_runner build --delete-conflicting-outputs
```
Single event-source reconciliation cycle:
```bash
dart run bin/code_work_spawner.dart --once
```
Long-running tracker runtime:
```bash
dart run bin/code_work_spawner.dart
```
Override tracker CLI paths when needed:
```bash
dart run bin/code_work_spawner.dart \
--config /path/to/agent-orchestrator.yaml \
--db /path/to/state.sqlite3 \
--gh-command /usr/bin/gh \
--glab-command /usr/bin/glab \
--tea-command /usr/bin/tea
```
## Install Binary
Install the latest matching release binary from GitHub Releases:
```bash
uv run https://github.com/existedinnettw/code_work_spawner/scripts/install.py
```
Install a specific version:
```bash
uv run https://github.com/existedinnettw/code_work_spawner/scripts/install.py --version v1.0.0
```
## Testing
```bash
dart run tool/validate_gherkin_test_format.dart
dart analyze
dart test
```
## ref
[agent-orchestrator](https://github.com/ComposioHQ/agent-orchestrator)