/** * Sentry skill — list projects, list issues, get issue details. * * Architecture: mirrors `browserSkill`. Resolves to a self-contained * MCP stdio server binary at `@zibby/skills/bin/mcp-sentry.mjs`. Any * agent strategy that supports MCP servers (Claude Code, Cursor, * Codex, Gemini) can spawn it and immediately get the 3 Sentry tools. * * Auth flows through PROJECT_API_TOKEN + PROGRESS_API_URL (inherited * env vars on Fargate). The MCP binary calls resolveIntegrationToken * against the backend to fetch the user's Sentry OAuth token. * * Backward compat: keeps `handleToolCall` for the `assistant` agent * (OpenAI Assistant API) which doesn't use MCP. Both runtimes call * the same Sentry endpoints with the same shape — assistant via * in-process JS, MCP-style agents via the spawned binary. */ export declare function sentryFetch(path: any, opts?: any): Promise; /** * List Sentry projects in the connected organization. Returns raw * Sentry-shape objects ({ slug, name, platform, id, … }). * * Single source of truth for the `sentry_list_projects` tool (MCP + * assistant), and for deterministic workflow nodes. */ export declare function sentryListProjects(): Promise; /** * List Sentry issues. Returns the raw Sentry array. Wrappers above * (MCP / assistant tool handlers) format the shape for LLM consumers; * deterministic callers get the raw issue objects so their own * outputSchema can validate / reshape. * * @param {{ query?: string, sort?: string, project?: string, limit?: number }} opts */ export declare function sentryListIssues({ query, sort, project, limit }?: any): Promise; /** * Resolve an issue REFERENCE (numeric id OR shortId) to its NUMERIC issue * (group) id. The global `/issues//` endpoints used by get/update/comment * accept ONLY the numeric id — a shortId (e.g. `PROJECT-ABC`) 404s there. So a * caller that hands us the shortId (which is what Sentry surfaces everywhere, * and what our workflow input schemas advertise as "numeric or shortId") would * silently fail. Sentry's shortId→group resolver is ORG-scoped: * `GET /organizations//shortids//` → { groupId }. * * A purely-numeric ref returns immediately with NO API call, so the common path * (callers already holding the numeric id from a fetched issue) is free. */ export declare function resolveSentryIssueId(issueRef: any): Promise; /** * Fetch one Sentry issue's details. Uses the global `/issues//` * endpoint (NOT under /organizations//) — Sentry routes issue * details by ID without an org scope. Auth still uses the connected * integration's token. Accepts a numeric id OR a shortId (resolved first). */ export declare function sentryGetIssue(issueId: any): Promise; /** * WRITE-back to a Sentry issue. Mutates issue STATE (resolve / ignore / mute / * reopen), assignment, bookmark, or seen-flag via the global * `PUT /issues//` endpoint (NOT org-scoped — issues route by id, same as * sentryGetIssue). Only the fields you pass are sent. * * Common uses: * sentryUpdateIssue(id, { status: 'resolvedInNextRelease' }) // leaves the * is:unresolved queue, regresses only if it recurs in a LATER release * sentryUpdateIssue(id, { status: 'resolved', statusDetails: { inRelease: 'latest' } }) * sentryUpdateIssue(id, { status: 'ignored' }) * sentryUpdateIssue(id, { assignedTo: 'user:123' }) * * @param {string} issueId * @param {{ status?: 'resolved'|'resolvedInNextRelease'|'unresolved'|'ignored'|'muted', * statusDetails?: object, assignedTo?: string, isBookmarked?: boolean, * hasSeen?: boolean }} update * * Requires the connected Sentry integration's token to carry the `event:write` * scope. A 403 → a CLEAR error telling the operator the Sentry connection likely * lacks write scope and must be reconnected with it. */ export declare function sentryUpdateIssue(issueId: any, update?: any): Promise; /** * Post a comment ("note") on a Sentry issue via * `POST /issues//comments/`. Same global-issue endpoint + token as * sentryGetIssue / sentryUpdateIssue, and the same `event:write`-scope 403 → * clear-error contract. * * @param {string} issueId * @param {string} text the comment body (Sentry markdown) */ export declare function sentryAddComment(issueId: any, text: any): Promise; export declare const sentrySkill: any;