Add Sentry Triage canvas extension - #2802
Merged
Merged
Conversation
Contributor
🔒 PR Risk Scan ResultsScanned 19 changed file(s).
✅ No matching risk patterns were detected in changed files. Skipped non-text or missing files
|
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a reusable Sentry error-triage canvas and registers it as an installable plugin.
Changes:
- Implements live Sentry scanning, prioritization, hand-offs, preferences, and UI.
- Adds plugin metadata, documentation, and preview assets.
- Regenerates plugin marketplace documentation.
Show a summary per file
| File | Description |
|---|---|
extensions/sentry-triage/extension.mjs |
Orchestrates scans and Copilot hand-offs. |
extensions/sentry-triage/server.mjs |
Provides the secured loopback API and SSE updates. |
extensions/sentry-triage/state.mjs |
Manages per-canvas state. |
extensions/sentry-triage/sentryClient.mjs |
Wraps the Sentry CLI SDK. |
extensions/sentry-triage/sentry.mjs |
Maps, searches, and categorizes Sentry issues. |
extensions/sentry-triage/preflight.mjs |
Checks Sentry authentication and connectivity. |
extensions/sentry-triage/prefs.mjs |
Persists the default organization. |
extensions/sentry-triage/escape.mjs |
Escapes HTML and prompt data. |
extensions/sentry-triage/styles.mjs |
Defines canvas styling. |
extensions/sentry-triage/components/page.mjs |
Renders and controls the interactive canvas. |
extensions/sentry-triage/components/category.mjs |
Renders urgency categories. |
extensions/sentry-triage/components/card.mjs |
Renders issue cards and statuses. |
extensions/sentry-triage/package.json |
Declares runtime dependencies. |
extensions/sentry-triage/copilot-extension.json |
Defines extension metadata. |
extensions/sentry-triage/README.md |
Documents setup and usage. |
extensions/sentry-triage/LICENSE |
Adds the extension license. |
extensions/sentry-triage/assets/preview.png |
Provides the marketplace preview. |
extensions/sentry-triage/assets/icon.png |
Provides extension iconography. |
plugins/sentry-triage/plugin.json |
Registers the installable extension plugin. |
plugins/sentry-triage/README.md |
Documents plugin installation. |
docs/README.plugins.md |
Lists the new plugin. |
.github/plugin/marketplace.json |
Adds marketplace metadata. |
Review details
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
- Files reviewed: 19/22 changed files
- Comments generated: 7
- Review effort level: Balanced
liztom
marked this pull request as draft
August 25, 2026 19:57
liztom
force-pushed
the
liztom-add-sentry-triage-canvas
branch
8 times, most recently
from
August 25, 2026 23:00
18d21cb to
3f26c16
Compare
An on-call error-triage canvas for GitHub Copilot: scans live Sentry issues, groups them by urgency, and hands issues off for tracking or a fix PR. Registers a reusable canvas extension under extensions/ with a matching plugins/sentry-triage manifest. The extension runs a loopback HTTP/SSE server per canvas instance (host-allow-listed, per-instance capability token never broadcast over SSE), renders the triage board server- and client-side, and drives model turns over a single shared Copilot session serialized so scan and work turns can't interleave. Work state is prototype-pollution-guarded against agent-controlled tracking keys, and sendAndWait timeouts are handled without duplicating external side effects. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
liztom
force-pushed
the
liztom-add-sentry-triage-canvas
branch
from
August 25, 2026 23:41
3f26c16 to
9cefcc7
Compare
Comment on lines
+1642
to
+1649
| document.addEventListener("click", (e) => { | ||
| const btn = e.target.closest("#refresh, #rescan"); | ||
| if (!btn) return; | ||
| fetch("/api/refresh", { method: "POST" }); | ||
| const subtitle = document.querySelector(".page-subtitle"); | ||
| if (subtitle) subtitle.textContent = "Scanning Sentry..."; | ||
| showScanOverlay(currentProject ? "Scanning " + currentProject + "…" : "Scanning all projects…"); | ||
| }); |
Comment on lines
+1745
to
+1747
| if (localProjectId) { | ||
| const match = (Array.isArray(currentProjectOptions) ? currentProjectOptions : []).find((p) => p.id === localProjectId); | ||
| localProjectName = match ? match.name : ""; |
liztom
marked this pull request as ready for review
August 25, 2026 23:50
aaronpowell
approved these changes
Aug 26, 2026
| // sent and no artifact created, so just release the token and stop the batch | ||
| // — the remaining items belong to the same stale scope. | ||
| if (err && err.stale) { workRegistry.delete(workToken); return } | ||
| if (!scopeCurrent()) return |
Comment on lines
+1727
to
+1729
| const match = (Array.isArray(currentProjectOptions) ? currentProjectOptions : []).find((p) => p.id === id); | ||
| const localPath = document.getElementById("local-path"); | ||
| if (localPath) localPath.value = match && match.path ? match.path : ""; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds the Sentry Triage canvas as a reusable canvas extension plus a matching installable plugin.
The canvas is for on-call error triage: it scans live Sentry issues (via the Sentry CLI in library mode — no MCP server), groups them by urgency, offers plain-English titles, and hands selected issues off to Copilot to either file a tracking issue or spin up a session that drafts a fix PR.
What's included
extensions/sentry-triage/—extension.mjs+ supporting.mjsmodules,components/,package.json,copilot-extension.json,README.md,LICENSE, andassets/preview.png.plugins/sentry-triage/—plugin.json(Agent Plugins v1.0.0, registers./extensions/sentry-triage) +README.md..github/plugin/marketplace.json,docs/README.plugins.md, and website data.Checklist
npm run plugin:validatepasses (sentry-triage valid)npm run buildregenerates marketplace + docsnpm run website:dataregeneratedassets/preview.png)