patch.moi/README.md
2026-05-16 00:33:10 +00:00

71 lines
1.7 KiB
Markdown

# patch.moi
Feed watching and flow dispatch service for upstream project events.
Canonical public host: `https://patch.moi`.
## Repository
This is a Bun monorepo:
- `apps/patch`: the Patch service, feed poller, JSONL store, Discord output,
and flow dispatch adapter.
- `docs`: Tome documentation site published under `/docs`.
## Endpoints
```text
GET /healthz
GET /flow-events
GET /flow-events/:id
POST /flow-events/:id/retry
POST /flow-events/:id/replay
GET /flow-dispatches
```
## Environment
```text
HOST=0.0.0.0
PORT=3000
DATA_DIR=./data
DISCORD_OUTPUT_ENABLED=false
DISCORD_WEBHOOK_URL=
DISCORD_NOTIFY_EVENTS=push,release
FEED_SOURCES_PATH=./feed-sources.json
PATCH_FLOW_DISPATCH_URL=
PATCH_FLOW_DISPATCH_SECRET=
PATCH_ADMIN_TOKEN=
```
Discord notifications are off by default. Set `DISCORD_OUTPUT_ENABLED=true`
and `DISCORD_WEBHOOK_URL` to send Discord output. `DISCORD_NOTIFY_EVENTS` is a
comma-separated allow list and defaults to `push,release`.
## Development
```bash
bun install
bun run check
bun run dev
```
Feed watcher events are configured in `apps/patch/feed-sources.json`. The first
poll primes `DATA_DIR/feed-state.json`; later polls append upstream activity to
`DATA_DIR/feed-events.jsonl`. Targets using `mode: "fork_sync"` append legacy
work to `DATA_DIR/feed-jobs.jsonl`. Targets using `mode: "flow_dispatch"`
append generic flow events to `DATA_DIR/flow-events.jsonl`, POST them to the
configured dispatch URL, and record dispatch outcomes in
`DATA_DIR/flow-dispatches.jsonl`.
## Documentation
The publishable docs site is a Tome project in `docs/`:
```bash
bun run docs:dev
bun run docs:build
```
Docs source follows the Diataxis framework under `docs/pages/tutorials`,
`docs/pages/guides`, `docs/pages/reference`, and `docs/pages/concepts`.