/**
* Re-exports the public helpers for `kody:@kody/sentry`.
*
* Use this package root entrypoint instead of reaching into internal source files.
*/
export {
getIssue,
getIssueEvents,
getLatestIssueEvent,
listOrganizations,
listProjects,
resolveProject,
searchIssues,
searchIssuesPage,
searchIssuesWithLatestSummaries,
sentryRequest,
summarizeIssueEvent,
triageIssue,
} from './client.ts'
/** Describe the sentry package exports and import pattern. */
export default async function sentryUtilities() {
return {
package: '@kody/sentry',
description: 'Headless Kody utilities for Sentry organizations, projects, issues, and events.',
utilities: [
'list-organizations',
'list-projects',
'resolve-project',
'search-issues',
'get-issue',
'get-latest-issue-event',
'get-issue-events',
'summarize-issue-event',
'triage-issue',
'request',
'smoke-test',
],
importPattern: "import utility from 'kody:@kody/sentry/<utility-name>'",
paramsNote: 'Kody package entrypoints receive the outer execute params object.',
auth: {
type: 'auth-token',
secret: 'sentryAuthToken',
hosts: ['sentry.io', 'us.sentry.io', 'de.sentry.io'],
setupUrl:
'https://kody.codes/account/secrets/new?name=sentryAuthToken&description=Sentry%20auth%20token%20for%20organizations%2C%20projects%2C%20issues%2C%20and%20events&allowedHosts=sentry.io,us.sentry.io,de.sentry.io&scope=user',
oauthConnectUrl:
'https://kody.codes/connect/oauth?provider=sentry&authorizeUrl=https://sentry.io/oauth/authorize/&tokenUrl=https://sentry.io/oauth/token/&flow=confidential&pkce=true&scopes=org:read%20project:read%20event:read&allowedHosts=sentry.io,us.sentry.io,de.sentry.io&apiBaseUrl=https://sentry.io/api/0/&dashboardUrl=https://sentry.io/settings/account/api/applications/',
multiAccount: {
secretName: 'Optional extra token secret. Default sentryAuthToken.',
integration: 'Optional saved BYO OAuth integration name.',
},
},
safety: {
mutationsDefaultToDryRun: true,
},
consolidatedNotes: {
'search-issues': 'Use paginated: true for cursor pages; includeLatestSummaries: true for event summaries.',
'summarize-issue-event': 'Pass issueId (optionally latest: true) to fetch and summarize the latest event.',
request: 'Escape hatch for paths not covered by the OpenAPI scaffold. Mutating methods default to dryRun.',
host: 'Optional host overrides the default sentry.io (us.sentry.io, de.sentry.io, or self-hosted).',
secretName: 'Optional token secret name for additional accounts. Default sentryAuthToken.',
integration: 'Optional OAuth integration name. When set, uses that connection instead of the token secret.',
},
}
}