@amonstack/gitea-mcp 0.3.5 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -175,6 +175,136 @@ export interface ReplaceTopicsParams {
175
175
  repo: string;
176
176
  topics: string[];
177
177
  }
178
+ export interface PullRequestBranch {
179
+ label: string;
180
+ ref: string;
181
+ sha: string;
182
+ repo: Repository;
183
+ }
184
+ export interface PullRequest {
185
+ id: number;
186
+ number: number;
187
+ title: string;
188
+ body?: string;
189
+ state: string;
190
+ html_url: string;
191
+ url: string;
192
+ labels: Label[];
193
+ assignee?: User;
194
+ assignees?: User[];
195
+ milestone?: Milestone;
196
+ user: User;
197
+ merged?: boolean;
198
+ merged_at?: string;
199
+ mergeable?: boolean;
200
+ draft?: boolean;
201
+ base: PullRequestBranch;
202
+ head: PullRequestBranch;
203
+ created_at: string;
204
+ updated_at: string;
205
+ closed_at?: string;
206
+ }
207
+ export interface PullCommit {
208
+ sha: string;
209
+ html_url: string;
210
+ commit: {
211
+ message: string;
212
+ author: {
213
+ name: string;
214
+ email: string;
215
+ date?: string;
216
+ };
217
+ };
218
+ author?: User;
219
+ }
220
+ export interface PullFile {
221
+ sha: string;
222
+ filename: string;
223
+ status: string;
224
+ additions: number;
225
+ deletions: number;
226
+ changes: number;
227
+ html_url: string;
228
+ }
229
+ export interface ListPullRequestsParams {
230
+ owner: string;
231
+ repo: string;
232
+ state?: "open" | "closed" | "all";
233
+ labels?: string;
234
+ sort?: "oldest" | "recentupdate" | "leastupdate" | "mostcomment" | "leastcomment" | "priority";
235
+ milestone?: number;
236
+ page?: number;
237
+ limit?: number;
238
+ }
239
+ export interface CreatePullRequestParams {
240
+ owner: string;
241
+ repo: string;
242
+ title: string;
243
+ body?: string;
244
+ head: string;
245
+ base: string;
246
+ assignee?: string;
247
+ assignees?: string[];
248
+ labels?: number[];
249
+ milestone?: number;
250
+ }
251
+ export interface UpdatePullRequestParams {
252
+ owner: string;
253
+ repo: string;
254
+ index: number;
255
+ title?: string;
256
+ body?: string;
257
+ base?: string;
258
+ assignee?: string;
259
+ assignees?: string[];
260
+ labels?: number[];
261
+ milestone?: number;
262
+ state?: "open" | "closed";
263
+ }
264
+ export interface MergePullRequestParams {
265
+ owner: string;
266
+ repo: string;
267
+ index: number;
268
+ Do: "merge" | "squash" | "rebase" | "rebase-merge";
269
+ MergeTitleField?: string;
270
+ MergeMessageField?: string;
271
+ SHA?: string;
272
+ }
273
+ export interface ActionWorkflowRun {
274
+ id: number;
275
+ display_title?: string;
276
+ event?: string;
277
+ head_branch?: string;
278
+ head_sha?: string;
279
+ path?: string;
280
+ run_attempt?: number;
281
+ run_number?: number;
282
+ status: string;
283
+ conclusion?: string;
284
+ url?: string;
285
+ html_url?: string;
286
+ started_at?: string;
287
+ completed_at?: string;
288
+ actor?: User;
289
+ trigger_actor?: User;
290
+ repository?: Repository;
291
+ head_repository?: Repository;
292
+ }
293
+ export interface ActionWorkflowRunsResponse {
294
+ workflow_runs: ActionWorkflowRun[];
295
+ count: number;
296
+ }
297
+ export interface ListActionRunsParams {
298
+ owner: string;
299
+ repo: string;
300
+ branch?: string;
301
+ event?: string;
302
+ status?: string;
303
+ actor?: string;
304
+ head_sha?: string;
305
+ page?: number;
306
+ limit?: number;
307
+ }
178
308
  export declare class GiteaClient {
179
309
  private baseUrl;
180
310
  private candidates;
@@ -238,4 +368,17 @@ export declare class GiteaClient {
238
368
  replaceTopics(params: ReplaceTopicsParams): Promise<TopicList>;
239
369
  addTopic(owner: string, repo: string, topic: string): Promise<void>;
240
370
  removeTopic(owner: string, repo: string, topic: string): Promise<void>;
371
+ listPullRequests(params: ListPullRequestsParams): Promise<PullRequest[]>;
372
+ getPullRequest(owner: string, repo: string, index: number): Promise<PullRequest>;
373
+ createPullRequest(params: CreatePullRequestParams): Promise<PullRequest>;
374
+ updatePullRequest(params: UpdatePullRequestParams): Promise<PullRequest>;
375
+ isPullMerged(owner: string, repo: string, index: number): Promise<boolean>;
376
+ mergePullRequest(params: MergePullRequestParams): Promise<void>;
377
+ listPullCommits(owner: string, repo: string, index: number, page?: number, limit?: number): Promise<PullCommit[]>;
378
+ listPullFiles(owner: string, repo: string, index: number, page?: number, limit?: number): Promise<PullFile[]>;
379
+ listActionRuns(params: ListActionRunsParams): Promise<ActionWorkflowRunsResponse>;
380
+ getActionRun(owner: string, repo: string, runId: number): Promise<ActionWorkflowRun>;
381
+ cancelActionRun(owner: string, repo: string, runId: number): Promise<void>;
382
+ rerunActionRun(owner: string, repo: string, runId: number): Promise<ActionWorkflowRun | undefined>;
383
+ rerunActionRunFailedJobs(owner: string, repo: string, runId: number): Promise<void>;
241
384
  }
@@ -91,7 +91,11 @@ export class GiteaClient {
91
91
  if (response.status === 204) {
92
92
  return undefined;
93
93
  }
94
- return response.json();
94
+ const text = await response.text();
95
+ if (!text) {
96
+ return undefined;
97
+ }
98
+ return JSON.parse(text);
95
99
  }
96
100
  /**
97
101
  * Auth-aware request entry point. Three modes:
@@ -338,5 +342,133 @@ export class GiteaClient {
338
342
  const path = `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/topics/${encodeURIComponent(topic)}`;
339
343
  return this.request("DELETE", path);
340
344
  }
345
+ async listPullRequests(params) {
346
+ const searchParams = new URLSearchParams();
347
+ if (params.state)
348
+ searchParams.set("state", params.state);
349
+ if (params.labels)
350
+ searchParams.set("labels", params.labels);
351
+ if (params.sort)
352
+ searchParams.set("sort", params.sort);
353
+ if (params.milestone)
354
+ searchParams.set("milestone", String(params.milestone));
355
+ if (params.page)
356
+ searchParams.set("page", String(params.page));
357
+ if (params.limit)
358
+ searchParams.set("limit", String(params.limit));
359
+ const query = searchParams.toString();
360
+ const path = `/repos/${encodeURIComponent(params.owner)}/${encodeURIComponent(params.repo)}/pulls${query ? `?${query}` : ""}`;
361
+ return this.request("GET", path);
362
+ }
363
+ async getPullRequest(owner, repo, index) {
364
+ const path = `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/pulls/${index}`;
365
+ return this.request("GET", path);
366
+ }
367
+ async createPullRequest(params) {
368
+ const path = `/repos/${encodeURIComponent(params.owner)}/${encodeURIComponent(params.repo)}/pulls`;
369
+ return this.request("POST", path, {
370
+ title: params.title,
371
+ body: params.body,
372
+ head: params.head,
373
+ base: params.base,
374
+ assignee: params.assignee,
375
+ assignees: params.assignees,
376
+ labels: params.labels,
377
+ milestone: params.milestone,
378
+ });
379
+ }
380
+ async updatePullRequest(params) {
381
+ const path = `/repos/${encodeURIComponent(params.owner)}/${encodeURIComponent(params.repo)}/pulls/${params.index}`;
382
+ return this.request("PATCH", path, {
383
+ title: params.title,
384
+ body: params.body,
385
+ base: params.base,
386
+ assignee: params.assignee,
387
+ assignees: params.assignees,
388
+ labels: params.labels,
389
+ milestone: params.milestone,
390
+ state: params.state,
391
+ });
392
+ }
393
+ async isPullMerged(owner, repo, index) {
394
+ const path = `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/pulls/${index}/merge`;
395
+ try {
396
+ await this.request("GET", path);
397
+ return true;
398
+ }
399
+ catch (err) {
400
+ // Gitea returns 404 when the pull request has not been merged; any other
401
+ // status propagates. Status-based branching (not message substring) per §2.3.
402
+ if (err instanceof GiteaApiError && err.status === 404)
403
+ return false;
404
+ throw err;
405
+ }
406
+ }
407
+ async mergePullRequest(params) {
408
+ const path = `/repos/${encodeURIComponent(params.owner)}/${encodeURIComponent(params.repo)}/pulls/${params.index}/merge`;
409
+ return this.request("POST", path, {
410
+ Do: params.Do,
411
+ MergeTitleField: params.MergeTitleField,
412
+ MergeMessageField: params.MergeMessageField,
413
+ SHA: params.SHA,
414
+ });
415
+ }
416
+ async listPullCommits(owner, repo, index, page, limit) {
417
+ const searchParams = new URLSearchParams();
418
+ if (page)
419
+ searchParams.set("page", String(page));
420
+ if (limit)
421
+ searchParams.set("limit", String(limit));
422
+ const query = searchParams.toString();
423
+ const path = `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/pulls/${index}/commits${query ? `?${query}` : ""}`;
424
+ return this.request("GET", path);
425
+ }
426
+ async listPullFiles(owner, repo, index, page, limit) {
427
+ const searchParams = new URLSearchParams();
428
+ if (page)
429
+ searchParams.set("page", String(page));
430
+ if (limit)
431
+ searchParams.set("limit", String(limit));
432
+ const query = searchParams.toString();
433
+ const path = `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/pulls/${index}/files${query ? `?${query}` : ""}`;
434
+ return this.request("GET", path);
435
+ }
436
+ // ── Actions ──
437
+ async listActionRuns(params) {
438
+ const searchParams = new URLSearchParams();
439
+ if (params.branch)
440
+ searchParams.set("branch", params.branch);
441
+ if (params.event)
442
+ searchParams.set("event", params.event);
443
+ if (params.status)
444
+ searchParams.set("status", params.status);
445
+ if (params.actor)
446
+ searchParams.set("created_by", params.actor);
447
+ if (params.head_sha)
448
+ searchParams.set("head_sha", params.head_sha);
449
+ if (params.page)
450
+ searchParams.set("page", String(params.page));
451
+ if (params.limit)
452
+ searchParams.set("limit", String(params.limit));
453
+ const query = searchParams.toString();
454
+ const path = `/repos/${encodeURIComponent(params.owner)}/${encodeURIComponent(params.repo)}/actions/runs${query ? `?${query}` : ""}`;
455
+ return this.request("GET", path);
456
+ }
457
+ async getActionRun(owner, repo, runId) {
458
+ const path = `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/actions/runs/${runId}`;
459
+ return this.request("GET", path);
460
+ }
461
+ async cancelActionRun(owner, repo, runId) {
462
+ const path = `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/actions/runs/${runId}/cancel`;
463
+ return this.request("POST", path);
464
+ }
465
+ async rerunActionRun(owner, repo, runId) {
466
+ const path = `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/actions/runs/${runId}/rerun`;
467
+ return this.request("POST", path);
468
+ }
469
+ async rerunActionRunFailedJobs(owner, repo, runId) {
470
+ const path = `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/actions/runs/${runId}/rerun-failed-jobs`;
471
+ return this.request("POST", path);
472
+ }
341
473
  }
342
474
  //# sourceMappingURL=gitea-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gitea-client.js","sourceRoot":"","sources":["../src/gitea-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gitea-client.js","sourceRoot":"","sources":["../src/gitea-client.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -2,7 +2,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
3
  import { z } from "zod";
4
4
  import { GiteaClient } from "./gitea-client.js";
5
- import { ListIssuesSchema, GetIssueSchema, CreateIssueSchema, UpdateIssueSchema, DeleteIssueSchema, SearchIssuesSchema, ListCommentsSchema, CreateCommentSchema, UpdateCommentSchema, DeleteCommentSchema, ListLabelsSchema, CreateLabelSchema, UpdateLabelSchema, DeleteLabelSchema, AddIssueLabelsSchema, RemoveIssueLabelSchema, ReplaceIssueLabelsSchema, ClearIssueLabelsSchema, ListMilestonesSchema, GetMilestoneSchema, CreateMilestoneSchema, UpdateMilestoneSchema, DeleteMilestoneSchema, ResolveRepoSchema, ListMyReposSchema, ListTopicsSchema, ReplaceTopicsSchema, AddTopicSchema, RemoveTopicSchema, GiteaStatusSchema, } from "./tools.js";
5
+ import { ListIssuesSchema, GetIssueSchema, CreateIssueSchema, UpdateIssueSchema, DeleteIssueSchema, SearchIssuesSchema, ListCommentsSchema, CreateCommentSchema, UpdateCommentSchema, DeleteCommentSchema, ListLabelsSchema, CreateLabelSchema, UpdateLabelSchema, DeleteLabelSchema, AddIssueLabelsSchema, RemoveIssueLabelSchema, ReplaceIssueLabelsSchema, ClearIssueLabelsSchema, ListMilestonesSchema, GetMilestoneSchema, CreateMilestoneSchema, UpdateMilestoneSchema, DeleteMilestoneSchema, ResolveRepoSchema, ListMyReposSchema, ListTopicsSchema, ReplaceTopicsSchema, AddTopicSchema, RemoveTopicSchema, GiteaStatusSchema, ListPullRequestsSchema, GetPullRequestSchema, CreatePullRequestSchema, UpdatePullRequestSchema, MergePullRequestSchema, IsPullMergedSchema, ListPullCommitsSchema, ListPullFilesSchema, ListActionRunsSchema, GetActionRunSchema, CancelActionRunSchema, RerunActionRunSchema, RerunActionRunFailedJobsSchema, } from "./tools.js";
6
6
  import { parseRemotes, selectRemote, resolveGitConfigPath } from "./git-config.js";
7
7
  import { readFile } from "node:fs/promises";
8
8
  import { dirname, join } from "node:path";
@@ -316,6 +316,138 @@ export async function createServer(baseUrl, candidates, defaultOwner, defaultRep
316
316
  content: [{ type: "text", text: `Topic '${input.topic}' removed from ${owner}/${repo}.` }],
317
317
  };
318
318
  });
319
+ // ── Pull Requests ──
320
+ server.registerTool("list_pull_requests", {
321
+ description: "List pull requests in one Gitea repository. Paginated: page is 1-based, limit <= 100; keep paging until a page returns fewer than `limit`. Filters: state (default open), labels (comma-separated NAMES), sort, milestone. Example: list_pull_requests({ state: 'open', page: 1, limit: 50 }). Cross-repo PR search uses search_issues({ type: 'pulls' }).",
322
+ inputSchema: ListPullRequestsSchema.shape,
323
+ }, async (input) => {
324
+ const { owner, repo } = resolve(input);
325
+ const pulls = await client.listPullRequests({ ...input, owner, repo });
326
+ return {
327
+ content: [{ type: "text", text: JSON.stringify(pulls, null, 2) }],
328
+ };
329
+ });
330
+ server.registerTool("get_pull_request", {
331
+ description: "Fetch one pull request by its `index` — the number shown in the PR URL (e.g. #42), NOT the internal `id`. Returns the full PR including base/head branches, mergeable status, merged flag, labels, and milestone.",
332
+ inputSchema: GetPullRequestSchema.shape,
333
+ }, async (input) => {
334
+ const { owner, repo } = resolve(input);
335
+ const pull = await client.getPullRequest(owner, repo, input.index);
336
+ return {
337
+ content: [{ type: "text", text: JSON.stringify(pull, null, 2) }],
338
+ };
339
+ });
340
+ server.registerTool("create_pull_request", {
341
+ description: "Create a pull request. `title`, `head` (source branch), and `base` (target branch) are required. For cross-fork PRs use 'owner:branch' in `head`. `labels` takes label IDs (numbers) — call list_labels first. Prefix the title with `WIP:` or `[WIP]` to prevent accidental merge while work is in progress. Returns the created PR including its `number`.",
342
+ inputSchema: CreatePullRequestSchema.shape,
343
+ }, async (input) => {
344
+ const { owner, repo } = resolve(input);
345
+ const pull = await client.createPullRequest({ ...input, owner, repo });
346
+ return {
347
+ content: [{ type: "text", text: JSON.stringify(pull, null, 2) }],
348
+ };
349
+ });
350
+ server.registerTool("update_pull_request", {
351
+ description: "Update one pull request by `index` (PATCH: only provided fields change). Set `state` to 'closed' to close a PR WITHOUT merging (reopens with 'open'). RISK: passing `labels` REPLACES the entire label set (give the full desired ID list); `base` retargets the PR and is rarely reversible. To change a single label use add_issue_labels/remove_issue_label (PR #N == Issue #N — label endpoints are shared).",
352
+ inputSchema: UpdatePullRequestSchema.shape,
353
+ }, async (input) => {
354
+ const { owner, repo } = resolve(input);
355
+ const pull = await client.updatePullRequest({ ...input, owner, repo });
356
+ return {
357
+ content: [{ type: "text", text: JSON.stringify(pull, null, 2) }],
358
+ };
359
+ });
360
+ server.registerTool("merge_pull_request", {
361
+ description: "Merge a pull request by `index`. `Do` selects the strategy: 'merge' (merge commit), 'squash' (single commit), 'rebase' (rebase + fast-forward), 'rebase-merge' (rebase + merge commit). Optional `MergeTitleField`/`MergeMessageField` customize the merge commit; `SHA` guards against branch drift. IRREVERSIBLE — confirm the index, strategy, and that the PR is mergeable (get_pull_request `mergeable: true`) with the user BEFORE merging. Check is_pull_merged first if unsure.",
362
+ inputSchema: MergePullRequestSchema.shape,
363
+ }, async (input) => {
364
+ const { owner, repo } = resolve(input);
365
+ await client.mergePullRequest({ ...input, owner, repo });
366
+ return {
367
+ content: [{ type: "text", text: `Pull request #${input.index} merged (${input.Do}).` }],
368
+ };
369
+ });
370
+ server.registerTool("is_pull_merged", {
371
+ description: "Check whether a pull request has been merged. Returns a boolean (`true` = merged, `false` = not merged). Call before merge_pull_request to avoid a redundant attempt, or to confirm a PR's final state.",
372
+ inputSchema: IsPullMergedSchema.shape,
373
+ }, async (input) => {
374
+ const { owner, repo } = resolve(input);
375
+ const merged = await client.isPullMerged(owner, repo, input.index);
376
+ return {
377
+ content: [{ type: "text", text: JSON.stringify({ merged }, null, 2) }],
378
+ };
379
+ });
380
+ server.registerTool("list_pull_commits", {
381
+ description: "List the commits in one pull request by its `index`. Paginated (page 1-based, limit <= 100). Each entry has `sha`, `html_url`, the commit `message`, and an optional `author`. Useful for reviewing what a PR changes before merging.",
382
+ inputSchema: ListPullCommitsSchema.shape,
383
+ }, async (input) => {
384
+ const { owner, repo } = resolve(input);
385
+ const commits = await client.listPullCommits(owner, repo, input.index, input.page, input.limit);
386
+ return {
387
+ content: [{ type: "text", text: JSON.stringify(commits, null, 2) }],
388
+ };
389
+ });
390
+ server.registerTool("list_pull_files", {
391
+ description: "List the files changed in one pull request by its `index`. Paginated (page 1-based, limit <= 100). Each entry has `filename`, `status` (added/modified/deleted/renamed), `additions`, `deletions`, `changes`, and `html_url`. Use to understand a PR's diff scope before reviewing or merging.",
392
+ inputSchema: ListPullFilesSchema.shape,
393
+ }, async (input) => {
394
+ const { owner, repo } = resolve(input);
395
+ const files = await client.listPullFiles(owner, repo, input.index, input.page, input.limit);
396
+ return {
397
+ content: [{ type: "text", text: JSON.stringify(files, null, 2) }],
398
+ };
399
+ });
400
+ // ── Actions ──
401
+ server.registerTool("list_action_runs", {
402
+ description: "List Gitea Actions workflow runs in one repository. Paginated: page is 1-based, limit <= 100; keep paging until a page returns fewer than `limit`. Filters: branch, event (push, pull_request, schedule, etc.), status (pending, queued, waiting, in_progress, running, success, failure, skipped, cancelled), actor (username that triggered the run), head_sha. The response is a wrapper object { workflow_runs: [...], count: number } — the runs live under the `workflow_runs` key, NOT at the top level. Use this to find a run's `id` before calling get_action_run, cancel_action_run, or rerun_action_run.",
403
+ inputSchema: ListActionRunsSchema.shape,
404
+ }, async (input) => {
405
+ const { owner, repo } = resolve(input);
406
+ const runs = await client.listActionRuns({ ...input, owner, repo });
407
+ return {
408
+ content: [{ type: "text", text: JSON.stringify(runs, null, 2) }],
409
+ };
410
+ });
411
+ server.registerTool("get_action_run", {
412
+ description: "Fetch one Actions workflow run by its `runId` (the numeric run ID from list_action_runs or the Gitea web UI — NOT the workflow name or index). Returns the full run including status, conclusion, head_branch, head_sha, event, started_at, completed_at, and actor. Call this BEFORE cancel_action_run (to verify the run is still active) or rerun_action_run (to verify it has completed and is rerunnable).",
413
+ inputSchema: GetActionRunSchema.shape,
414
+ }, async (input) => {
415
+ const { owner, repo } = resolve(input);
416
+ const run = await client.getActionRun(owner, repo, input.runId);
417
+ return {
418
+ content: [{ type: "text", text: JSON.stringify(run, null, 2) }],
419
+ };
420
+ });
421
+ server.registerTool("cancel_action_run", {
422
+ description: "Cancel one Actions workflow run by `runId`. Only valid on runs that are still ACTIVE (status: queued, waiting, in_progress, running, pending) — cancelling an already-completed run returns an error. PARTIALLY DESTRUCTIVE: active jobs are killed and their partial results are discarded. ALWAYS call get_action_run first to confirm the run is still active, and confirm the runId with the user before cancelling. The run's conclusion becomes 'cancelled' after a successful cancel.",
423
+ inputSchema: CancelActionRunSchema.shape,
424
+ }, async (input) => {
425
+ const { owner, repo } = resolve(input);
426
+ await client.cancelActionRun(owner, repo, input.runId);
427
+ return {
428
+ content: [{ type: "text", text: `Action run #${input.runId} cancelled.` }],
429
+ };
430
+ });
431
+ server.registerTool("rerun_action_run", {
432
+ description: "Rerun an entire Actions workflow run by `runId`. Only valid on runs that have COMPLETED (status: success, failure, cancelled, skipped) — rerunning an active run returns an error. Requires Gitea 1.26.0+. Creates a NEW run (incrementing run_attempt); the original run is not modified. ALWAYS call get_action_run first to confirm the run has completed, and confirm the runId with the user before rerunning. To rerun ONLY the failed jobs instead of the whole run, use rerun_action_run_failed_jobs.",
433
+ inputSchema: RerunActionRunSchema.shape,
434
+ }, async (input) => {
435
+ const { owner, repo } = resolve(input);
436
+ const run = await client.rerunActionRun(owner, repo, input.runId);
437
+ return {
438
+ content: [{ type: "text", text: run ? JSON.stringify(run, null, 2) : `Action run #${input.runId} rerun started.` }],
439
+ };
440
+ });
441
+ server.registerTool("rerun_action_run_failed_jobs", {
442
+ description: "Rerun ONLY the failed jobs of an Actions workflow run by `runId`. More efficient than rerun_action_run when most jobs succeeded and only a subset failed. Only valid on completed runs. Requires Gitea 1.26.0+. ALWAYS call get_action_run first to confirm the run has completed and has failed jobs (conclusion: failure), and confirm the runId with the user before rerunning.",
443
+ inputSchema: RerunActionRunFailedJobsSchema.shape,
444
+ }, async (input) => {
445
+ const { owner, repo } = resolve(input);
446
+ await client.rerunActionRunFailedJobs(owner, repo, input.runId);
447
+ return {
448
+ content: [{ type: "text", text: `Failed jobs rerun started for action run #${input.runId}.` }],
449
+ };
450
+ });
319
451
  // ── Helpers ──
320
452
  server.registerTool("resolve_repo", {
321
453
  description: "Detect baseUrl/owner/repo from a git repository's remotes (SSH or HTTPS). Reads `upstream` first, then `origin`, then any other remote; all discovered remotes are returned. `path` defaults to the current directory. Call ONCE at the start of a session to establish owner/repo for later calls instead of guessing. Errors if no parseable remote is found.",
@@ -499,6 +631,98 @@ export async function createServer(baseUrl, candidates, defaultOwner, defaultRep
499
631
  messages: [{ role: "user", content: { type: "text", text } }],
500
632
  };
501
633
  });
634
+ server.registerPrompt("triage_pull_requests", {
635
+ title: "Triage pull requests",
636
+ description: "List open pull requests in a repo, inspect high-priority ones (commits, files, mergeability), and propose review/merge/close actions. Returns an instruction the model executes via the tools.",
637
+ argsSchema: {
638
+ owner: z.string().optional().describe("Repository owner (defaults to GITEA_DEFAULT_OWNER)"),
639
+ repo: z.string().optional().describe("Repository name (defaults to GITEA_DEFAULT_REPO)"),
640
+ state: z
641
+ .enum(["open", "closed", "all"])
642
+ .optional()
643
+ .describe("Which pull requests to triage (default open)"),
644
+ },
645
+ }, async ({ owner, repo, state }) => {
646
+ const target = `${owner ?? "<GITEA_DEFAULT_OWNER>"}/${repo ?? "<GITEA_DEFAULT_REPO>"}`;
647
+ const st = state ?? "open";
648
+ const text = [
649
+ `Triage ${st} pull requests in the Gitea repository ${target}.`,
650
+ "",
651
+ "Steps:",
652
+ `1. Call list_pull_requests({ state: "${st}", page: 1, limit: 50 }). Page forward while a page returns exactly 50.`,
653
+ "2. For each PR, note: title, author, head/base branches, draft/WIP status, and whether it is mergeable.",
654
+ "3. For PRs needing deeper review, call get_pull_request + list_pull_commits + list_pull_files to assess scope.",
655
+ "4. Propose for each PR one of: READY TO MERGE (after confirmation), NEEDS REVIEW (leave a comment), NEEDS CHANGES, or STALE (close with update_pull_request state='closed' — do NOT delete).",
656
+ "5. Summarize: total triaged, how many are mergeable, how many need changes, how many are stale.",
657
+ "",
658
+ "Do NOT merge or close without explicit user confirmation. Use is_pull_merged to verify a PR's state when uncertain.",
659
+ ].join("\n");
660
+ return {
661
+ description: `Triage ${st} pull requests in ${target}`,
662
+ messages: [{ role: "user", content: { type: "text", text } }],
663
+ };
664
+ });
665
+ server.registerPrompt("summarize_pull_request", {
666
+ title: "Summarize a pull request",
667
+ description: "Read one pull request (body, commits, changed files, comment thread) and produce a concise review summary: what it changes, mergeability, open questions, and a recommended action (merge / request changes / close).",
668
+ argsSchema: {
669
+ owner: z.string().optional().describe("Repository owner (defaults to GITEA_DEFAULT_OWNER)"),
670
+ repo: z.string().optional().describe("Repository name (defaults to GITEA_DEFAULT_REPO)"),
671
+ index: z.number().int().min(1).describe("Pull request number (the # shown in the URL)"),
672
+ },
673
+ }, async ({ owner, repo, index }) => {
674
+ const target = `${owner ?? "<GITEA_DEFAULT_OWNER>"}/${repo ?? "<GITEA_DEFAULT_REPO>"}#${index}`;
675
+ const text = [
676
+ `Summarize Gitea pull request ${target}.`,
677
+ "",
678
+ "Steps:",
679
+ "1. get_pull_request to read the title, body, base/head branches, mergeable status, merged state, labels, and milestone.",
680
+ "2. list_pull_commits to see the commit history (page if needed).",
681
+ "3. list_pull_files to understand the diff scope (files changed, additions/deletions).",
682
+ "4. list_comments to read the review discussion (PR #N == Issue #N — comments are shared).",
683
+ " CAVEAT: list_comments returns only the server's default page — note if it looks truncated.",
684
+ "5. Produce a summary: a 2-3 sentence overview of WHAT the PR changes, the mergeability/conflict status, key FEEDBACK in the discussion, unresolved QUESTIONS, and one recommended NEXT ACTION (merge / request changes / close).",
685
+ "6. Attribute statements to their author (user.login); never invent quotes.",
686
+ "",
687
+ "Do not merge, edit, or close anything. This is read-only analysis.",
688
+ ].join("\n");
689
+ return {
690
+ description: `Summarize pull request ${target}`,
691
+ messages: [{ role: "user", content: { type: "text", text } }],
692
+ };
693
+ });
694
+ server.registerPrompt("triage_action_runs", {
695
+ title: "Triage Actions runs",
696
+ description: "List recent Gitea Actions workflow runs in a repo, identify stuck/failed/running ones, and propose cancel or rerun actions. Returns an instruction the model executes via the tools.",
697
+ argsSchema: {
698
+ owner: z.string().optional().describe("Repository owner (defaults to GITEA_DEFAULT_OWNER)"),
699
+ repo: z.string().optional().describe("Repository name (defaults to GITEA_DEFAULT_REPO)"),
700
+ status: z
701
+ .string()
702
+ .optional()
703
+ .describe("Filter by run status (default: no filter, lists all recent runs)"),
704
+ },
705
+ }, async ({ owner, repo, status }) => {
706
+ const target = `${owner ?? "<GITEA_DEFAULT_OWNER>"}/${repo ?? "<GITEA_DEFAULT_REPO>"}`;
707
+ const st = status ?? "all";
708
+ const text = [
709
+ `Triage Gitea Actions workflow runs in repository ${target}.`,
710
+ "",
711
+ "Steps:",
712
+ `1. Call list_action_runs({ ${status ? `status: "${st}"` : ""} page: 1, limit: 50 }). Page forward while a page returns exactly 50.`,
713
+ "2. For each run, note: id, display_title, event, head_branch, status, conclusion, started_at, actor.login.",
714
+ "3. Categorize runs: RUNNING (in_progress/queued/waiting — active), FAILED (conclusion: failure), SUCCEEDED (conclusion: success), CANCELLED (conclusion: cancelled).",
715
+ "4. For RUNNING runs that look stuck (started long ago, no progress), propose cancel_action_run — confirm the runId with the user first.",
716
+ "5. For FAILED runs, propose either rerun_action_run (entire run) or rerun_action_run_failed_jobs (only failed jobs) — confirm the runId and the rerun strategy with the user first.",
717
+ "6. Summarize: total runs, how many running, how many failed, how many succeeded, and a recommended action for each problematic run.",
718
+ "",
719
+ "Do NOT cancel or rerun without explicit user confirmation. Always call get_action_run to verify the current status before any cancel/rerun.",
720
+ ].join("\n");
721
+ return {
722
+ description: `Triage Actions runs in ${target}`,
723
+ messages: [{ role: "user", content: { type: "text", text } }],
724
+ };
725
+ });
502
726
  return server;
503
727
  }
504
728
  export async function runServer(baseUrl, candidates, defaultOwner, defaultRepo) {