Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

Package listing

@kody/sentry

src/index.ts

66 lines · 2.6 KB · TypeScript
/**
 * 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.',
		},
	}
}