patch.moi/docs/pages/reference/feed-sources.md

56 lines
1.5 KiB
Markdown

---
title: Feed sources
description: JSON schema by convention for upstream update intake.
---
# Feed sources
`FEED_SOURCES_PATH` points at a JSON object with a `sources` array.
This file configures update intake, not the patch stack. A flow target can add
payload hints, but the receiving workspace should use Git remotes, branches, and
tags as the maintained project source of truth.
```ts
type FeedSourceConfig = {
id: string;
provider: "github";
url: string;
event: "push" | "release";
repo: {
owner: string;
name: string;
fullName: string;
webUrl: string;
defaultBranch?: string;
};
target?: FeedWorkspaceFlowTarget;
pollIntervalSeconds?: number;
primeOnly?: boolean;
};
```
## Workspace flow target
```ts
type FeedWorkspaceFlowTarget = {
mode: "workspace_flow" | "flow_dispatch";
eventType: string;
workspaceUrl?: string;
workspaceUrlEnv?: string;
workspaceSecretEnv?: string;
dispatchUrl?: string;
dispatchUrlEnv?: string;
dispatchSecretEnv?: string;
payload?: Record<string, unknown>;
};
```
The target creates a generic `FlowEvent` and hands it to the workspace backend
adapter. The flow payload includes provider, event, source id, entry id, title,
URL, author, published time, repository fields, ref, SHA, tag, and raw feed
metadata. Values from `target.payload` are merged last.
For release maintenance, use a stable event type such as `upstream.release` and
include only routing hints in `payload`. Avoid copying branch topology into the
feed source when it can be read from the repository.