One systemd daemon watches GitHub and Gitea and routes each PR to an aoe session: `land` for PRs you authored, `review-pr` for everyone else's. It reads metadata only and sends a single inert hint line, so untrusted PR text never passes through the thing that types into agent prompts. Routing is derived from `aoe list --json --all` by worktree branch, so no claim files and no daemon database. Dedupe stays in the session via `pr-<N>-seen`, which makes hints idempotent and a swallowed send self-healing. `land` loses its watcher machinery to the daemon and keeps the policy and per-event handlers; `pr-common` holds what both skills share. Review sessions run non-yolo without trusted hooks and never run the branch's code. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
23 lines
817 B
Desktop File
23 lines
817 B
Desktop File
[Unit]
|
|
Description=PR daemon — watches GitHub/Gitea PRs and routes them to aoe sessions
|
|
Documentation=https://git.naps.pt/yolo/agent-skills
|
|
After=network.target
|
|
ConditionPathExists=%h/.config/reviewer/config.json
|
|
ConditionPathExists=%h/.config/reviewer/env
|
|
# MUST stay 0: at RestartSec=5 a fast-crashing daemon burns the default
|
|
# 5-starts-per-10s budget and systemd parks the unit in `failed` until a
|
|
# manual `systemctl --user reset-failed`.
|
|
StartLimitIntervalSec=0
|
|
|
|
[Service]
|
|
Type=simple
|
|
WorkingDirectory=%h
|
|
Environment=PATH=%h/.local/bin:%h/.nix-profile/bin:/etc/profiles/per-user/naps62/bin:/run/current-system/sw/bin:/usr/local/bin:/usr/bin:/bin
|
|
EnvironmentFile=%h/.config/reviewer/env
|
|
ExecStart=bun %h/tea/yolo/agent-skills/bin/reviewer-poll.ts
|
|
Restart=always
|
|
RestartSec=5
|
|
|
|
[Install]
|
|
WantedBy=default.target
|