Skip to content
← Public packages

@kentcdodds/sentry

Inspect Sentry organizations, projects, issues, and event summaries.

AGENTS.md

108 lines · 3.1 KB · Markdown

@kentcdodds/sentry — agents

Human overview: README.md. Secrets by name only — never paste token values. Do not disable live webhooks or jobs in dependent packages.

Secrets

NameScopeNotes
sentryAuthTokenuserBearer for all Sentry REST calls; host-approve sentry.io

Import paths

import describe from 'kody:@kentcdodds/sentry'
import listOrganizations from 'kody:@kentcdodds/sentry/list-organizations'
import listProjects from 'kody:@kentcdodds/sentry/list-projects'
import resolveProject from 'kody:@kentcdodds/sentry/resolve-project'
import searchIssues from 'kody:@kentcdodds/sentry/search-issues'
import listIssues from 'kody:@kentcdodds/sentry/list-issues'
import getIssue from 'kody:@kentcdodds/sentry/get-issue'
import getLatestIssueEvent from 'kody:@kentcdodds/sentry/get-latest-issue-event'
import getIssueEvents from 'kody:@kentcdodds/sentry/get-issue-events'
import summarizeIssueEvent from 'kody:@kentcdodds/sentry/summarize-issue-event'
import triageIssue from 'kody:@kentcdodds/sentry/triage-issue'
import sentryRequest from 'kody:@kentcdodds/sentry/request'

Prefer static kody:@kentcdodds/sentry/... imports from execute. Do not lead examples with packages.invoke.

Smoke tests (read-only)

List orgs (proves secret + host approval):

import listOrganizations from 'kody:@kentcdodds/sentry/list-organizations'

export default async function main() {
	return await listOrganizations()
	// => [{ slug: 'kent-c-dodds-tech-llc', name: '...' }]
}

Search unresolved (bounded):

import searchIssues from 'kody:@kentcdodds/sentry/search-issues'
import listIssues from 'kody:@kentcdodds/sentry/list-issues'

export default async function main() {
	return await searchIssues({
		orgSlug: 'kent-c-dodds-tech-llc',
		query: 'is:unresolved',
		statsPeriod: '24h',
		limit: 5,
	})
}

Triage one known issue:

import triageIssue from 'kody:@kentcdodds/sentry/triage-issue'

export default async function main() {
	return await triageIssue({ issueId: '7459536382', recentEventLimit: 3 })
}

Escape hatch:

import sentryRequest from 'kody:@kentcdodds/sentry/request'

export default async function main() {
	return await sentryRequest({
		path: '/organizations/kent-c-dodds-tech-llc/teams/',
	})
}

Edge cases

  • path on request must start with /.
  • search-issues: paginated: true returns { issues, nextCursor, previousCursor }; includeLatestSummaries: true attaches latestEventSummary per issue.
  • resolve-project accepts projectSlug or projectId with orgSlug.
  • summarize-issue-event accepts a raw event, or issueId (optionally with latest: true) to fetch then summarize.
  • Dependent triage packages (sentry-triage) consume this package; do not rotate sentryAuthToken or revoke host approval without an explicit ask.

list-issues is an alias of search-issues (same params/return):

import listIssues from 'kody:@kentcdodds/sentry/list-issues'

export default async function main() {
	return await listIssues({
		orgSlug: 'kent-c-dodds-tech-llc',
		query: 'is:unresolved lastSeen:-2h',
		limit: 10,
	})
}