Commit Graph
16 Commits
Author SHA1 Message Date
asepharyana bd3d739250 ci: add Nix GC cleanup job on VPS after deploy 2026-08-04 13:57:47 +07:00
asepharyana 875ddfcca9 fix: health-check BWS token read as non-root cron user
Cron runs as user code (not root). /etc/bws-token is root:bws 640, so direct
read fails with Permission denied → watchdog exited 1 every run. Fix:
- wrapper uses sudo -n cat (code is in sudo group, NOPASSWD)
- health-check.py get_key() falls back to sudo -n cat too
Verified as code user: silent exit 0 when healthy.
2026-08-04 12:12:42 +07:00
asepharyana 407819b647 fix: parse PR-Agent analytics record-wrapped JSON format
Real PR-Agent analytics logs wrap fields under 'record': {...}. The parser
now unwraps that before extracting command/pr_url/message/level, so
/api/analytics and /api/metrics show real data (verified with actual format
from production logs).
2026-08-04 11:43:13 +07:00
asepharyana efb99b73b7 chore: gitignore nix result symlink 2026-08-04 11:39:34 +07:00
asepharyana 690f96aacb feat: add health watchdog, key auto-sync, analytics, Discord notifications, trivial-PR merge
- health-check.py: model health watchdog (silent when healthy, alert on 2+
  consecutive failures) — catches stale-key/model-breakage like 2026-08-04
- sync-key.py: systemd ExecStartPre syncs 9router key from BWS to disk,
  prevents silent 401s after key rotation
- run_server.py: CONFIG__ANALYTICS_FOLDER + /api/metrics (Prometheus) +
  /api/analytics (JSON) + /api/v1/notify_review (Discord webhook)
- trivial_merge.py: trivial-PR fast-path (docs/deps/tiny diffs) approve+merge
- auto_merge_bot.py: Discord notifications on merge, trivial integration
- flake.nix: ship pr-agent-sync-key + pr-agent-health-check binaries
2026-08-04 11:39:29 +07:00
asepharyana 06f3314819 fix: replace broken openai/auto fallback models with working 9router aliases
openai/auto/best-coding and openai/auto/claude-sonnet return
'No active credentials for provider: auto' on 9router (broken upstream
key). Primary openai/claude-opus-4-8 + fallbacks now all verified
working via litellm against 9router.asepharyana.my.id.
2026-08-04 10:17:29 +07:00
aseph ca67f0328b ci: use free GHA Nix cache (disable FlakeHub cache, not subscribed) 2026-08-03 16:44:18 +07:00
asepharyana fa0e031ba9 ci: enable FlakeHub Cache (id-token: write + use-flakehub) 2026-08-03 16:22:48 +07:00
asepharyana e0e591a63c fix: unterminated triple-quote in setup_all.py secrets template 2026-08-03 13:39:36 +07:00
asepharyana eb97e020dd ci: add python syntax-check gate before Nix deploy 2026-08-03 13:37:29 +07:00
asepharyana 86ff584b15 chore: webhook URLs to domain, manifest.json sync 2026-08-02 16:22:32 +07:00
asepharyana b9ba5ad9fa chore: use domain for webhook URLs 2026-08-02 16:21:47 +07:00
asepharyana 637b44a9e0 chore: port 3000 to 4002, use domain instead of IP 2026-08-02 16:15:43 +07:00
asepharyana 081b2ad4b5 fix(nix): restrict flake to x86_64-linux (nixpkgs 26.11 dropped darwin) 2026-08-01 18:03:43 +07:00
asepharyana eadc674565 ci: publish flake to FlakeHub (rolling) 2026-08-01 17:58:21 +07:00
asepharyana 18cf0d26aa ci: migrate CI to GitHub Actions (deploy nix + mirror ke Gitea backup)
Build & Deploy (Nix) / build-and-deploy (push) Failing after 32m50s
Mirror to Gitea / mirror (push) Successful in 9s
2026-08-01 16:41:46 +07:00