forked from bkinnightskytw/code_work_spawner
91 lines
2.7 KiB
Markdown
91 lines
2.7 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
|
|
```
|
|
|
|
## Testing
|
|
|
|
```bash
|
|
dart run tool/validate_gherkin_test_format.dart
|
|
dart analyze
|
|
dart test
|
|
```
|
|
|
|
## ref
|
|
|
|
[agent-orchestrator](https://github.com/ComposioHQ/agent-orchestrator)
|