Skip to content

GiteaForge

Defined in: src/forge/gitea.ts:63

Gitea/Forgejo forge driven through the /api/v1 REST API (API-compatible).

new GiteaForge(slug, cfg, fetchFn?): GiteaForge

Defined in: src/forge/gitea.ts:69

string

ForgeConfig

typeof fetch = fetch

GiteaForge

readonly deployWorkflow: string | null

Defined in: src/forge/gitea.ts:66

Configured deploy workflow filename, or null if redeploy is unavailable.

GitForge.deployWorkflow


readonly kind: "gitea"

Defined in: src/forge/gitea.ts:64

GitForge.kind


readonly mergeMethod: MergeMethod

Defined in: src/forge/gitea.ts:65

Default merge method for this host (from config; “squash” if unset).

GitForge.mergeMethod


readonly slug: string

Defined in: src/forge/gitea.ts:70

GitForge.slug

get webUrl(): string | null

Defined in: src/forge/gitea.ts:79

Repo’s web home page (e.g. https://github.com/owner/repo); null when unbuildable; absent → null.

string | null

Repo’s web home page (e.g. https://github.com/owner/repo); null when unbuildable; absent → null.

GitForge.webUrl

addIssueLabel(issueNumber, label): Promise<void>

Defined in: src/forge/gitea.ts:476

Stamp a label on an issue, creating it on the host if absent (best-effort; the drain claims a backlog issue with ACTIVE_LABEL when it spawns, so a second shepherd instance skips it). Optional: hosts without a label API omit it and claims degrade to single-instance local dedup.

number

string

Promise<void>

GitForge.addIssueLabel


canPush(): Promise<boolean>

Defined in: src/forge/gitea.ts:347

Whether the authenticated user can push. Returns a DEFINITIVE boolean only; THROWS on a probe failure (request error / missing permissions field) so the caller can treat that as retryable rather than silently as “no access”.

Promise<boolean>

GitForge.canPush


closeIssue(issueNumber): Promise<void>

Defined in: src/forge/gitea.ts:435

Close an issue by number (best-effort; used by the drain to retire a backlog issue once its auto PR merges). Optional: hosts without an issues-close API omit it.

number

Promise<void>

GitForge.closeIssue


commentIssue(issueNumber, body): Promise<void>

Defined in: src/forge/gitea.ts:441

Post a plain comment on an issue (the issue-log’s workflow protocol: one note when the session’s PR enters the waiting-on-handoff state, one when it merges). Best-effort; optional (hosts without an issue-comment API omit it and the issue-log stays silent).

number

string

Promise<void>

GitForge.commentIssue


convertToDraft(prNumber): Promise<void>

Defined in: src/forge/gitea.ts:410

Convert an open ready PR back to draft (gh pr ready <n> --undo). Optional, same host gating as markReady.

number

Promise<void>

GitForge.convertToDraft


createIssue(o): Promise<{ number: number; url: string; }>

Defined in: src/forge/gitea.ts:420

Open a new issue (capture-extension delivery path). Returns the created issue’s number + URL. Optional: hosts without an issue-create API omit it and POST /api/issues 400s.

string

string

Promise<{ number: number; url: string; }>

GitForge.createIssue


currentUser(): Promise<string | null>

Defined in: src/forge/gitea.ts:168

The authenticated Gitea login (GET /api/v1/user), cached for the forge’s lifetime — it never changes mid-session. Drives the “mine & unassigned” issue filter (#824) so the chip is live on Gitea too, not just GitHub. Null when it can’t be resolved (no token / network error) → fail open (show all).

Promise<string | null>

GitForge.currentUser


defaultBranch(): Promise<string>

Defined in: src/forge/gitea.ts:334

The repo’s default branch (GET /api/v1/repos/{slug}), cached for the forge’s lifetime — it never changes mid-session, and listPullRequests polls this. Cached ONLY on success: a transient failure rethrows so the next call retries rather than sticking. Mirrors GithubForge.defaultBranch.

Promise<string>

GitForge.defaultBranch


ensureIssueLink(prNumber, issueNumber): Promise<void>

Defined in: src/forge/gitea.ts:445

Ensure the PR body links the issue so the forge auto-closes it on merge. Idempotent: appends a Closes #<issueNumber> line only when no closing keyword for that issue is already present. Best-effort; optional (hosts without a PR-body edit API omit it).

number

number

Promise<void>

GitForge.ensureIssueLink


getIssue(issueNumber): Promise<Issue | null>

Defined in: src/forge/gitea.ts:133

Fetch ONE issue fresh (UNCACHED) by number, for the drain’s pre-spawn claim re-check. The cached listIssues view a candidate is selected from can be up to issuesTtlMs stale, so a second instance may still see an issue another instance stamped ACTIVE_LABEL on seconds ago. A fresh single-issue read closes that stale-cache window: if it already carries the claim, the spawn is yielded. Returns null when the issue is gone/unreadable. Best-effort and optional — hosts without it (or a transient failure → null) fall back to the cached candidate set + local dedup.

number

Promise<Issue | null>

GitForge.getIssue


listIssues(): Promise<Issue[]>

Defined in: src/forge/gitea.ts:101

Promise<Issue[]>

GitForge.listIssues


listPullRequests(): Promise<PullRequest[]>

Defined in: src/forge/gitea.ts:222

Open PRs for the backlog PRs tab (newest first), capped server-side.

Promise<PullRequest[]>

GitForge.listPullRequests


listWorkflowRuns(): Promise<WorkflowRun[]>

Defined in: src/forge/gitea.ts:274

Latest run per workflow on the repo, for the backlog Actions tab. Reads the actions/tasks endpoint — the only Actions API portable across Forgejo + Gitea ≥1.23. Despite its name it lists runs, not jobs: there is no per-job breakdown (so every jobs is empty) and no conclusion field — status is a single native enum (mapped by mapGiteaActionStatus). We don’t trust the server’s ordering: sort newest-first, then keep the latest run per workflow (keyed on the displayed name, so the consumer’s keyed list stays unique).

Promise<WorkflowRun[]>

GitForge.listWorkflowRuns


markReady(prNumber): Promise<void>

Defined in: src/forge/gitea.ts:402

Flip an open draft PR to ready-for-review (gh pr ready <n>). Optional: only hosts with a draft API implement it; the draft-reconcile service treats absence as “cannot promote on this host”.

number

Promise<void>

GitForge.markReady


merge(prNumber, o): Promise<void>

Defined in: src/forge/gitea.ts:428

number

MergeInput

Promise<void>

GitForge.merge


openPr(o): Promise<PrStatus>

Defined in: src/forge/gitea.ts:376

OpenPrInput

Promise<PrStatus>

GitForge.openPr


postReview(prNumber, o): Promise<{ url?: string; }>

Defined in: src/forge/gitea.ts:513

Post a critic review (request-changes / comment) on a PR. Returns the review’s URL when the host provides one.

number

PostReviewInput

Promise<{ url?: string; }>

GitForge.postReview


prStatus(headBranch): Promise<PrStatus>

Defined in: src/forge/gitea.ts:318

string

Promise<PrStatus>

GitForge.prStatus


redeploy(o): Promise<void>

Defined in: src/forge/gitea.ts:505

RedeployInput

Promise<void>

GitForge.redeploy


removeIssueLabel(issueNumber, label): Promise<void>

Defined in: src/forge/gitea.ts:499

Remove a label from an issue (best-effort; releases the drain’s claim when an auto session is abandoned, returning the issue to the pool). Optional.

number

string

Promise<void>

GitForge.removeIssueLabel