list_ci_issues
Retrieve and filter CI/CD issues from App Store Connect builds to identify errors, warnings, and test failures during iOS/macOS development.
Instructions
List issues and errors from a build run or build action
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| buildRunId | No | The ID of the build run to list issues for (provide either buildRunId or buildActionId) | |
| buildActionId | No | The ID of the build action to list issues for (provide either buildRunId or buildActionId) | |
| limit | No | Maximum number of issues to return (default: 100, max: 200) | |
| sort | No | Sort order for the results | |
| filter | No | ||
| include | No | Related resources to include in the response | |
| fields | No |
Implementation Reference
- src/handlers/workflows.ts:143-180 (handler)The handler function `listIssues` in the `WorkflowHandlers` class that executes the tool logic by calling the App Store Connect API to list CI issues for a build run or action.async listIssues(args: { buildRunId?: string; buildActionId?: string; limit?: number; sort?: CiIssueSortOptions; filter?: CiIssueFilters; fields?: { ciIssues?: CiIssueFieldOptions[]; }; include?: CiIssueIncludeOptions[]; }): Promise<CiIssuesResponse> { const { buildRunId, buildActionId, limit = 100, sort, filter, fields, include } = args; if (!buildRunId && !buildActionId) { throw new Error('Either buildRunId or buildActionId must be provided'); } const params: Record<string, any> = { limit: sanitizeLimit(limit) }; if (sort) { params.sort = sort; } if (include?.length) { params.include = include.join(','); } Object.assign(params, buildFilterParams(filter)); Object.assign(params, buildFieldParams(fields)); const endpoint = buildRunId ? `/ciBuildRuns/${buildRunId}/issues` : `/ciBuildActions/${buildActionId}/issues`; return this.client.get<CiIssuesResponse>(endpoint, params); }
- src/index.ts:1085-1146 (registration)Tool registration object defining the 'list_ci_issues' tool, including name, description, and detailed input schema.name: "list_ci_issues", description: "List issues and errors from a build run or build action", inputSchema: { type: "object", properties: { buildRunId: { type: "string", description: "The ID of the build run to list issues for (provide either buildRunId or buildActionId)" }, buildActionId: { type: "string", description: "The ID of the build action to list issues for (provide either buildRunId or buildActionId)" }, limit: { type: "number", description: "Maximum number of issues to return (default: 100, max: 200)", minimum: 1, maximum: 200 }, sort: { type: "string", description: "Sort order for the results", enum: ["issueType", "-issueType", "category", "-category", "message", "-message"] }, filter: { type: "object", properties: { issueType: { type: "string", enum: ["ANALYZER_WARNING", "ERROR", "TEST_FAILURE", "WARNING"], description: "Filter by issue type" }, category: { type: "string", description: "Filter by issue category" } } }, include: { type: "array", items: { type: "string", enum: ["buildAction", "buildRun"] }, description: "Related resources to include in the response" }, fields: { type: "object", properties: { ciIssues: { type: "array", items: { type: "string", enum: ["issueType", "message", "fileSource", "category"] }, description: "Fields to include for each issue" } } } } } },
- src/index.ts:1441-1444 (registration)Dispatch handler in the main switch statement that binds 'list_ci_issues' calls to the workflowHandlers.listIssues method.case "list_ci_issues": const issuesData = await this.workflowHandlers.listIssues(args as any); return formatResponse(issuesData);
- src/types/workflows.ts:302-371 (schema)TypeScript type definitions for CI issues, including CiIssue interface, CiIssuesResponse, filters, sort options, fields, and includes used in the handler.// CI Issue Types export interface CiIssue { id: string; type: "ciIssues"; attributes: { issueType: "ANALYZER_WARNING" | "ERROR" | "TEST_FAILURE" | "WARNING"; message: string; fileSource?: { filePath?: string; line?: number; column?: number; }; category?: string; }; relationships?: { buildAction?: { data?: { id: string; type: "ciBuildActions"; }; }; buildRun?: { data?: { id: string; type: "ciBuildRuns"; }; }; }; } export interface CiIssuesResponse { data: CiIssue[]; included?: Array<{ id: string; type: "ciBuildActions" | "ciBuildRuns"; attributes: any; }>; links?: { self: string; first?: string; next?: string; }; meta?: { paging: { total: number; limit: number; }; }; } export interface CiIssueFilters { issueType?: "ANALYZER_WARNING" | "ERROR" | "TEST_FAILURE" | "WARNING"; category?: string; } export type CiIssueSortOptions = | "issueType" | "-issueType" | "category" | "-category" | "message" | "-message"; export type CiIssueFieldOptions = | "issueType" | "message" | "fileSource" | "category"; export type CiIssueIncludeOptions = | "buildAction" | "buildRun";
- src/handlers/workflows.ts:29-29 (helper)Imports helper functions sanitizeLimit, buildFilterParams, buildFieldParams used to construct API query parameters in the handler.import { sanitizeLimit, buildFilterParams, buildFieldParams } from '../utils/index.js';