feat(admin): /admin/integrations becomes the full infra-secrets panel — reveal, rotate, clear, alerting keys, live #5557
ccantynzAI Reviewcommented 5d ago
AI Triage
(no summary)
Priority: medium Risk area: mixed
Suggested labels: (no label suggestions) Suggested reviewers: (no reviewer suggestions)
Suggestions only — nothing has been applied. The PR author stays in control.
gluecron[bot]🤖 botAI Reviewcommented 5d ago
AI review unavailable
The platform's AI balance is exhausted, so AI generation is temporarily unavailable. Nothing was lost. You can queue this as a repair for the internal agent from the repository's Health page, or try again once the balance is restored. The PR is otherwise unchanged.
Cross-repo impact
See what breaks downstream if this PR merges.
⮌ Merged
This pull request was merged into main.
c comment · e edit title · m merge · a approve · r request changes · ? shortcuts
Owner ask: "do we have an infra secrets panel which we can reveal, edit, delete and rotate and also push through to the box." Partial yes became full yes:
MONITOR_ALERT_WEBHOOK_URL,EMAIL_PROVIDER,EMAIL_HTTP_URL/TOKEN,HEARTBEAT_REPORT_TOKEN,ESTATE_WATCH_URLS,REPORTING_EPOCH. These being env-file-only was exactly why alert-wiring sessions required SSH; every reader is a lazyprocess.envlookup, so values saved here apply immediately, no deploy — the pending wiring session is now a browser task.config.revealed. Reveal-with-audit beats reveal-never: the operator owns these values and pasting them at the other end is the job.mintable(the heartbeat token) get a server-side 256-bit generate: stored, shown once, auditconfig.rotated. That's what rotation means for self-issued shared secrets; third-party keys deliberately can't be "rotated" here.deleteConfigValue, new), auditconfig.cleared; button states that an env-file value returns on restart.INTEGRATION_FIELDS— no arbitrary env read/write surface.Honest boundaries: DB values feed the app process; host-side scripts reading
/opt/gluecron/.envare untouched. And for the risk register:system_configvalues are plaintext in Postgres — encryption-at-rest with a box-held master key is a named follow-up, not a silent gap.Typecheck clean; design gate green; admin-integrations suite 10 pass (group list extended).