| export interface GitSyncStatus { | |
| enabled: boolean; | |
| repo_url: string; | |
| branch: string; | |
| path: string; | |
| encryption_enabled: boolean; | |
| /** Seconds between automatic syncs; 0 means manual-only. */ | |
| interval_seconds: number; | |
| last_synced_commit: string | null; | |
| last_synced_at: string | null; | |
| last_error: string | null; | |
| last_error_at: string | null; | |
| dirty_count: number; | |
| /** | |
| * Whether a sync cycle is running right now, including one the backend's own | |
| * interval started. A cycle reports its outcome only once it ends, so | |
| * without this the page cannot tell a sync in flight from one that never | |
| * started. Absent on automation backends that predate the field. | |
| */ | |
| sync_in_progress?: boolean; | |
| sync_started_at?: string | null; | |
| } | |
| export interface GitSyncConfigUpdateRequest { | |
| enabled?: boolean | null; | |
| interval_seconds?: number | null; | |
| repo_url?: string | null; | |
| branch?: string | null; | |
| path?: string | null; | |
| token?: string | null; | |
| encryption_key?: string | null; | |
| author_name?: string | null; | |
| author_email?: string | null; | |
| } | |
| export interface GitSyncTriggerResponse { | |
| triggered: boolean; | |
| } | |
| /** | |
| * Whether a configuration can reach its repo, from `POST /v1/git-sync/check`. | |
| * | |
| * `ok` is about reachability only -- the backend runs a single `git ls-remote` | |
| * rather than a sync, so a token without write scope passes here and still | |
| * fails at push time, and the encryption key is never exercised. | |
| * `branch_exists: false` alongside `ok: true` is normal for a repo that has | |
| * never been synced: the first cycle creates the branch. | |
| */ | |
| export interface GitSyncCheckResponse { | |
| ok: boolean; | |
| branch_exists: boolean; | |
| /** git's own failure output, with credentials in the URL redacted. */ | |
| detail: string | null; | |
| } | |