Files

Lesson 16 - GitHub Issue-to-PR Agent (TypeScript webhook receiver)

TypeScript half of the capstone. Python side ships the agent loop and dispatcher; YAML side ships the Actions workflow. This project is the GitHub App webhook receiver: HMAC verify the raw body, route on event type, dispatch a stub agent for issues.opened.

Layout

src/
  index.ts    entry: demo (default) or HTTP server (--serve)
  server.ts   Hono webhook receiver (POST /webhook)
  verify.ts   X-Hub-Signature-256 HMAC, timing-safe
  router.ts   event-type routing (ping, issues, pull_request)
  agent.ts    stub agent + audit log
  types.ts    payload + audit shapes
tests/
  verify.test.ts  signature pass, tampered, router pathing

Run

npm install
npm run typecheck
npm test
npm start            # self-terminating demo (in-process replays)
npm run serve        # HTTP server on :8081

The HMAC secret is read from GH_WEBHOOK_SECRET (default demo-shared-secret for the demo).