4237a18d09
Phase 1 of the gadfly-games build. Adds a second review engine alongside the majordomo agent loop: for each lens, shell out to the Claude Code CLI (`claude -p`) inside the checked-out repo so it verifies findings with its OWN read tools, then reuse gadfly's verdict-parse + recheck + consolidate + emit pipeline unchanged. - cmd/gadfly/engine.go: new reviewEngine interface with two impls — majordomoEngine (wraps the existing runAgent path) and claudeCodeEngine (exec `claude -p ... --output-format json`, parse `.result`). main.go's runSpecialists/reviewWithSpecialist are now engine-agnostic. - Select via a model id: `claude-code` (CLI default) or `claude-code/<model>` (suffix → --model). Auth inherits from the env: Pro/Max via CLAUDE_CODE_OAUTH_TOKEN (no --bare), else ANTHROPIC_API_KEY. Read-only by default (--permission-mode plan); tunable via GADFLY_CLAUDE_*. - auto-select + delegate worker are majordomo-only and are skipped with this engine (Claude Code does its own legwork). - Dockerfile bundles Node + @anthropic-ai/claude-code (larger image). - Docs: README "Claude Code engine" section + config rows, examples/ claude-code.yml stub, examples/README + CLAUDE.md updated. Honest note that subscription-auth-in-CI is untested here / a ToS gray area. - Bumps the dogfood image pin to :sha-c3d09d3 so gadfly's own PRs now review with the live status board from Phase 3. New engine_test.go covers spec detection, model derivation, and argv building (no live CLI call). gofmt clean, go vet quiet, go test -race green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1.9 KiB
1.9 KiB
Example consumer workflows
Each file here is a complete, copy-paste stub workflow. Pick the one that matches your
setup, copy it to .gitea/workflows/adversarial-review.yml in the repo you want reviewed, and
set the secrets/vars it references. Gadfly is advisory only — it never blocks a merge.
| File | Backend | Needs |
|---|---|---|
adversarial-review.yml |
Ollama Cloud (default) + inline notes for every provider | secret OLLAMA_CLOUD_API_KEY |
local-ollama.yml |
a local/LAN Ollama daemon | nothing (or GADFLY_BASE_URL for a remote host) |
openai-compatible.yml |
any OpenAI-compatible endpoint (local Ollama /v1, gateway, vLLM, OpenRouter…) |
GADFLY_BASE_URL (+ a key for most gateways) |
endpoint-aliases.yml |
several named backends at once (one comment each) | repo vars GADFLY_ENDPOINT_<NAME> |
claude-code.yml |
the bundled Claude Code CLI engine (claude-code/<model>) |
secret CLAUDE_CODE_OAUTH_TOKEN (or ANTHROPIC_API_KEY) |
.gadfly.yml |
per-repo specialist config (not a workflow — goes at your repo root) | — |
Common to all:
- Triggers: new/reopened/ready non-draft PR (auto),
@gadfly reviewcomment (allowed users), or manualworkflow_dispatchwith apr_number. GITEA_TOKENis provided automatically; comments post asgitea-actions.- Tested backends are the Ollama ones; OpenAI/Anthropic/Google are wired via majordomo but untested. See the repo README for the full config reference and the honest tested/untested status.
Gitea note: repo
vars/secretsare not auto-exposed as env — anything you reference via${{ vars.X }}/${{ secrets.X }}must appear in the step'senv:block (already wired in these examples).