// schemas/github.ts — Zod schemas for GitHub integration tools (SPEC-086).
import { z } from 'zod';
import { SpecIdSchema } from './spec-id.js';
export const CreatePRFromSpecSchema = z.object({
    specId: SpecIdSchema.describe('ID of the spec (e.g., SPEC-086)'),
    baseBranch: z
        .string()
        .max(500)
        .default('develop')
        .describe('Base branch for the PR (default: develop)'),
    draft: z.boolean().default(false).describe('Create as draft PR (default: false)'),
});
export const PRStatusSchema = z.object({
    prNumber: z.number().optional().describe('Specific PR number to query'),
    specId: SpecIdSchema.optional().describe('Spec ID to find related PRs (e.g., SPEC-086)'),
    view: z.enum(['prs', 'milestones']).default('prs').describe('View mode: prs | milestones'),
});
export const ReviewPRSchema = z.object({
    prNumber: z.number().int().positive().describe('PR number to review'),
    reviewType: z
        .enum(['summary', 'detailed', 'security', 'performance', 'expert', 'quality'])
        .default('summary')
        .describe('Review type: summary | detailed | security | performance | expert | quality. ' +
        'Use quality for semantic code quality analysis (duplication, complexity, dead-code).'),
});
export const CreateReleaseSchema = z.object({
    version: z.string().max(500).describe('Semver version (e.g., 1.2.0)'),
    generateNotes: z
        .boolean()
        .default(true)
        .describe('Generate release notes from merged PRs (default: true)'),
    draft: z.boolean().default(true).describe('Create as draft release (default: true)'),
    prerelease: z.boolean().default(false).describe('Mark as prerelease (default: false)'),
    // SPEC-774: Stuck-spec gate bypass options
    forceRelease: z
        .boolean()
        .optional()
        .describe('Bypass stuck-spec gate. Use when you intentionally want to release despite drift. ' +
        'Stuck specs will be listed in release notes under ## Status Drift.'),
    autoFixDrift: z
        .boolean()
        .optional()
        .describe('Auto-close stuck specs (status=approved/implementing with merged branch) before releasing. ' +
        'Each stuck spec will be transitioned to done automatically.'),
});
export const GenerateChangelogSchema = z.object({
    since: z.string().max(500).describe('Start point: tag, SHA, or ISO date'),
    until: z.string().max(500).default('HEAD').describe('End point (default: HEAD)'),
    format: z
        .enum(['markdown', 'json'])
        .default('markdown')
        .describe('Output format: markdown | json'),
    writeToFile: z
        .boolean()
        .default(false)
        .describe('Write the generated changelog to CHANGELOG.md (prepends to existing file). Default: false.'),
});
export const CreateIssueFromSpecSchema = z.object({
    specId: SpecIdSchema.describe('ID of the spec (e.g., SPEC-086)'),
    criteriaIds: z
        .array(z.string().max(500))
        .max(1000)
        .optional()
        .describe('Specific criteria IDs (e.g., ["AC-01", "AC-03"]). Empty = consolidated issue'),
    labels: z
        .array(z.string().max(500))
        .max(100)
        .optional()
        .describe('Additional labels for the issue'),
});
export const TriageIssuesSchema = z.object({
    state: z
        .enum(['open', 'closed', 'all'])
        .default('open')
        .describe('Issue state to triage: open | closed | all'),
    limit: z.number().default(20).describe('Maximum issues to process'),
});
//# sourceMappingURL=github.js.map