import { type SearchIssuesInput, type SearchIssuesWithLatestSummariesInput, type SummarizeIssueEventOptions, requireRecord, requireStringOrNumber, searchIssues, searchIssuesPage, searchIssuesWithLatestSummaries, } from './client.ts' type SearchIssuesEntrypointInput = SearchIssuesInput & { paginated?: boolean includeLatestSummaries?: boolean summaryOptions?: SummarizeIssueEventOptions } /** * Search Sentry issues with optional pagination cursors or latest-event summaries. * * @param params.orgSlug - Organization slug (required). * @param params.query - Sentry search query; default unresolved issues. * @param params.paginated - When true, return `{ issues, nextCursor, previousCursor }`. * @param params.includeLatestSummaries - When true, attach `latestEventSummary` per issue. * @param params.host - Optional API host. Default `sentry.io`. * @returns Issue array, paginated page, or issues with summaries depending on flags. * @example * import searchIssues from 'kody:@kody/sentry/search-issues' * const issues = await searchIssues({ orgSlug: 'acme', query: 'is:unresolved', statsPeriod: '24h', limit: 5 }) * // => [{ id: '...', title: '...', count: 12 }] */ export default async function searchIssuesEntrypoint(params: unknown) { const input = requireRecord(params, 'search-issues') as SearchIssuesEntrypointInput requireStringOrNumber(input, 'orgSlug', 'search-issues') if (input.includeLatestSummaries) { return searchIssuesWithLatestSummaries(input as SearchIssuesWithLatestSummariesInput) } if (input.paginated) { return searchIssuesPage(input) } return searchIssues(input) }