tools.ts•1.65 kB
import { z } from 'zod';
// GitLab schemas
export const GitLabProject = z
.object({ id: z.number(), name: z.string(), path_with_namespace: z.string().optional() })
.passthrough();
export const GitLabMergeRequest = z
.object({ id: z.number(), iid: z.number().optional(), state: z.string().optional(), title: z.string().optional() })
.passthrough();
export const GitLabIssue = z
.object({ id: z.number(), iid: z.number().optional(), state: z.string().optional(), title: z.string().optional() })
.passthrough();
export const GL_ListProjects_Out = z.array(GitLabProject);
export const GL_ListMRs_In = z.object({ projectId: z.union([z.number(), z.string().min(1)]), state: z.enum(['opened', 'closed', 'merged']).optional() });
export const GL_ListMRs_Out = z.array(GitLabMergeRequest);
export const GL_ListIssues_In = z.object({ projectId: z.union([z.number(), z.string().min(1)]) });
export const GL_ListIssues_Out = z.array(GitLabIssue);
// Jira schemas
export const JiraIssue = z
.object({ id: z.string().optional(), key: z.string().optional(), fields: z.record(z.any()).optional() })
.passthrough();
export const JiraSearchResult = z.object({ issues: z.array(JiraIssue) }).passthrough();
export const Jira_Search_In = z.object({ jql: z.string().min(1), maxResults: z.number().int().positive().max(100).optional() });
export const Jira_GetIssue_In = z.object({ key: z.string().min(1) });
export type T_GitLabProject = z.infer<typeof GitLabProject>;
export type T_GitLabMergeRequest = z.infer<typeof GitLabMergeRequest>;
export type T_GitLabIssue = z.infer<typeof GitLabIssue>;
export type T_JiraIssue = z.infer<typeof JiraIssue>;