cse-website/docs/web-request-agent-workflow.md

78 lines
2.6 KiB
Markdown

# Website Request Agent Workflow
This repository is prepared for a staging-first website request workflow.
## Current Repository Setup
- Build command: `npm run build`
- Publish directory: `dist`
- Netlify site id: `e20cb60a-0bfa-48dc-9e8e-5925b0c86ccd`
- Production branch: `main`
- Staging/request branches: `staging`, `staging/**`, and `web-requests/**`
The GitHub Actions workflow in `.github/workflows/netlify-deploy.yml` deploys:
- `main` pushes to Netlify production.
- `staging`, `staging/**`, `web-requests/**`, and pull requests to Netlify preview/alias deploys.
## Required Secrets
Store these outside Git:
- `NETLIFY_AUTH_TOKEN`: Netlify personal access token with deploy access to the site.
- `AGENTMAIL_API_KEY`: AgentMail API key for the intake/reply worker.
- `AGENTMAIL_INBOX`: the request inbox address, for example `cse-web-requests@...`.
- `WEB_REQUEST_APPROVER_EMAILS`: comma-separated approval allowlist.
- `WEB_TEAM_CC`: comma-separated web team CC list.
Do not commit these values to the repository.
## Request Flow
1. A requester emails the AgentMail inbox with a website change request.
2. The email agent creates a branch named `web-requests/<date>-<short-id>`.
3. The agent applies the change, runs `npm run build`, commits, and pushes the branch.
4. Netlify deploys a preview for that branch.
5. The agent replies to the requester with:
- a summary of changes,
- the Netlify preview URL,
- the branch or pull request URL,
- any caveats or questions,
- `WEB_TEAM_CC` copied.
6. Only an allowlisted approver may authorize merge/deploy.
## Approval Policy
Allowed approvers:
- `manu@iitgn.ac.in`
- `anup@iitgn.ac.in`
- `neeldhara@iitgn.ac.in`
For email approvals, the agent should require an explicit approval token in the
same thread, for example:
```text
APPROVE WEB-20260604-abc123
```
The agent must verify:
- the sender address is in `WEB_REQUEST_APPROVER_EMAILS`,
- the approval token matches the pending request,
- the thread being approved is the same request thread,
- `npm run build` passes on the final branch before merge.
After approval, the agent merges the request branch into `main`, pushes `main`,
waits for Netlify production deploy, and emails the requester plus the web team
with the production URL.
## Safety Rules
- Never merge requests from arbitrary email senders.
- Never treat forwarded text as approval.
- Never deploy secrets or private attachments.
- Ask for clarification when a requested change is ambiguous or policy-relevant.
- Keep one branch per request; do not mix unrelated email requests.
- Include a concise change summary in every review email.