Add Gitea integration for agent to push branches and open pull requests

- Implemented `register-gitea-bot.sh` to provision Gitea access token.
- Updated `maintainer.py` to support Gitea API for push and PR operations.
- Modified `install.sh` to warn if Gitea token is not provisioned.
- Enhanced documentation in `README.md`, `CLAUDE.md`, and `architecture.md` to reflect new Gitea functionality.
- Added Gitea configuration to `config.example.json`.
This commit is contained in:
2026-06-29 20:46:33 +12:00
parent 9df86ead20
commit 00195ee6d5
7 changed files with 255 additions and 4 deletions
+12
View File
@@ -38,6 +38,18 @@ feeds the agent state and relays its results.
`fix-only` or `notify`.
- **Matrix transport**: dedicated bot `@maintainer:semprini.me` (created via the
Synapse registration shared secret) in a private room with `@paul:semprini.me`.
- **Code changes go through pull requests.** When the agent edits tracked files
it branches, pushes, and opens a PR on Gitea (`git.semprini.me`) as the
`claude-code` user rather than committing to `main`, giving the operator a
review gate. Live remediation (restart/redeploy) is *not* gated — only the git
change is. claude-code is an OIDC-linked, push-capable collaborator; since
git.semprini.me disables password login + HTTP basic auth, `register-gitea-bot.sh`
mints a personal access token via the gitea admin CLI inside the `user-gitea`
container (mirroring the Matrix bot's shared-secret pattern). A PAT still works
for git-over-HTTPS and the API, so no SSH exposure or core-stack change is
required. The daemon injects the bot's git identity + credential (`GIT_CONFIG_*`,
scoped to the Gitea host so it overrides the repo's own `user.*`) and the API
coordinates into the headless agent; the agent opens the PR itself.
## Cadence